Registro de Check-in¶
O check-in registra a presença de um aluno na plataforma.
Nesta etapa, o fluxo suportado é o Check-in Interno (source: INTERNAL), utilizado diretamente pelo seu sistema de gestão.
Registrar check-in¶
Request¶
{
"source": "INTERNAL",
"partnerTransactionId": "TXN-2026-07-03-001",
"externalStudentId": "ALUNO-001",
"occurredAt": "2026-07-03T08:30:00Z"
}
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
source |
string | sim | Origem do check-in. Nesta etapa, sempre INTERNAL. |
partnerTransactionId |
string | sim | Identificador único da transação no seu sistema. Usado para idempotência. |
externalStudentId |
string | sim | ID do aluno conforme enviado no canonicalStudentId durante a sincronização. |
occurredAt |
string (ISO 8601 UTC) | sim | Data e hora exata em que o check-in ocorreu. Deve ser UTC. |
Sobre
partnerTransactionId: este campo é a chave de idempotência. Use um identificador único por evento de check-in no seu sistema (ex: UUID gerado no momento do check-in, ou ID da transação do seu PDV). Não reutilize este valor para check-ins distintos.
Respostas¶
201 Created — check-in registrado com sucesso¶
200 OK — check-in duplicado (idempotência)¶
| Campo | Tipo | Descrição |
|---|---|---|
id |
Guid | Identificador do check-in na plataforma. Use para consultar o status. |
isDuplicate |
boolean | true se este partnerTransactionId já foi processado anteriormente. |
Idempotência¶
A plataforma detecta automaticamente check-ins duplicados com base na combinação de:
- Tenant (seu tenant, identificado pelo token)
sourcepartnerTransactionId
Se você enviar o mesmo partnerTransactionId mais de uma vez:
- A plataforma retorna 200 OK (não 201) com
isDuplicate: true - O check-in não é processado novamente
- O
idretornado é o mesmo do processamento original
Isso garante que re-tentativas de rede não gerem check-ins duplicados.
Fluxo de processamento¶
Após receber o check-in, a plataforma executa automaticamente:
1. Receber → check-in registrado
2. Identificar → aluno localizado pelo externalStudentId
3. Autorizar → validar se o aluno está autorizado
4. Registrar → persistir o resultado
5. Publicar → disponibilizar para sistemas consumidores
Se o aluno não for encontrado ou não estiver autorizado, o check-in é encerrado com o status correspondente. O id retornado permite consultar o status final via GET /api/v1/checkins/{id}.
Resultados possíveis¶
Após o processamento, o check-in pode ter os seguintes status finais:
| Status | Significado |
|---|---|
PUBLISHED |
Check-in aprovado e registrado com sucesso |
REJECTED |
Aluno identificado, mas sem autorização válida |
A plataforma também rastreia internamente o caso em que o aluno não é encontrado. Neste caso, o check-in fica com status
REJECTEDe o motivo indicaSTUDENT_NOT_FOUND. Consulte viaGET /api/v1/checkins/{id}para verificar orejectionReason.
Check-ins simultâneos de origens diferentes¶
Se o mesmo aluno realizar check-in por múltiplas origens (ex: INTERNAL e Wellhub) no mesmo instante, todos são válidos. A plataforma não trata como duplicata check-ins de origens distintas.
Erros da requisição¶
| HTTP | Situação |
|---|---|
401 |
Token ausente ou inválido |
404 |
Tenant não encontrado |
422 |
Campos obrigatórios ausentes ou inválidos |
500 |
Erro interno — acionar suporte |
Exemplos prontos¶
A coleção Postman inclui a requisição Registrar Check-in com payload pronto e script de automação que salva o id do check-in para uso imediato na consulta. Importe o arquivo postman/Partner Integration.postman_collection.json.
Check-in válido
{
"source": "INTERNAL",
"partnerTransactionId": "TXN-2026-07-03-001",
"externalStudentId": "ALUNO-001",
"occurredAt": "2026-07-03T08:30:00Z"
}
Aluno não sincronizado (resultará em REJECTED + STUDENT_NOT_FOUND)