Saltar al contenido

Envia as respostas de um quiz

POST/api/courses/{courseId}/lesson/{lessonId}/quiz/attempts

Auth
Requiere token
X-CommunityId
X-CommunityId Envía el X-CommunityId de la comunidad en la que ocurre la operación.
Las descripciones de los endpoints vienen de la especificación de la API y, por ahora, están en portugués. La interfaz alrededor está traducida.

O aluno matriculado envia **todas** as respostas (`answers`: uma por pergunta, `questionId` e `optionId`); pergunta sem resposta, repetida, opção de outra pergunta ou id inventado, 400 com `errors[]` apontando `answers[i]`. O servidor corrige e grava a tentativa. Devolve `scorePercent`, `passed` e `correctCount`; **o gabarito só vem quando aprovado** (nota maior ou igual à de aprovação): reprovado, `questions` vem vazio (sem acerto por pergunta, para a chave não vazar por tentativa); aprovado, vem por pergunta `correct`, `explanation` e `correctOptionId`, e então a aula é concluída (os pontos de `COMPLETE_LESSON` uma só vez, também em requisições paralelas; `lessonCompleted`, `courseCompleted`, `courseProgress`). Reprovado com tentativas sobrando: nada conclui e dá para tentar de novo. **Com `maxAttempts` no quiz** (total de tentativas por aluno; vazio = ilimitado), a última tentativa reprovada encerra a aula como "não aprovado" (`closedWithoutPassing: true`, `lessonCompleted: true`): a melhor nota fica e conta na nota final do curso; tentar de novo depois disso, 409 (a tentativa da equipe nunca conta). A nota do quiz é a melhor tentativa (`bestScorePercent`). Aula travada pela sequência ou pela data: 409; sem matrícula: 403; no máximo 30 tentativas por hora por pessoa e aula (429 com `errors[]` e `Retry-After`; sem Redis o limite não se aplica). **A equipe** (owner, admin, moderador, financeiro) testa sem matrícula: corrige e mostra o gabarito, mas `recorded: false` e **nada** é gravado (nem tentativa, nem progresso, nem pontos).

Parámetros

NombreDóndeTipoDescripción
courseIdobligatoriopathstring (uuid)
lessonIdobligatoriopathstring (uuid)

Headers

NombreTipoDescripción
X-CommunityIdopcionalstring (uuid)ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade.

Cuerpo de la solicitud application/json

NombreTipoDescripción
answersobligatorioobject[]
answers[].questionIdobligatoriostring (uuid)
answers[].optionIdobligatoriostring (uuid)

Respuestas

CódigoDescripción
200Tentativa corrigida.
400Requisição inválida — falha de validação.
401Token ausente, inválido ou expirado.
403Autenticado, mas sem permissão para esta operação.
404Recurso não encontrado.
409Aula travada pela sequência ou pela data, ou tentativas do quiz esgotadas (`maxAttempts`).
429Mais de 30 tentativas na última hora nesta aula.
500Erro interno do servidor.

Ejemplo con curl

curl -X POST "https://api.memberfy.net/api/courses/<courseId>/lesson/<lessonId>/quiz/attempts" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-CommunityId: $COMMUNITY_ID" \
  -H "Content-Type: application/json" \
  -d '{"answers":[{}]}'