Nesta página

API Reference · Atendimento

Todas as rotas usam o prefixo /v1, UUIDs nos identificadores e autenticação Bearer. O guard global autentica JWT do usuário ou token de sistema; o controller declara o perfil mínimo e o serviço aplica o alcance por registro.

Convenções

Registro

personId é obrigatório na criação. A modalidade exige exatamente um detalhe. O retorno inclui estado, versão, datas, ações disponíveis, assuntos, conclusões, participantes e detalhe da modalidade.

Comandos de estado

close aceita qualquer estado não terminal e exige conclusão em todos os assuntos. Conclusões pendentes podem ser enviadas no próprio comando; a gravação e o encerramento são atômicos. Todos retornam 200 ServiceRecordDetailDto.

Erros e perfis

O corpo comum é { statusCode, message, errorCode }. Códigos: 400 VALIDATION_FAILED, 401 UNAUTHORIZED, 403 FORBIDDEN, 404 NOT_FOUND, 409 CONFLICT e 422 RULE_VIOLATION. Criação exige perfil mínimo operacional-autonomo; leitura, atualização e comandos exigem perfil mínimo operacional-restrito; transferência e administração de modelos exigem perfil mínimo acesso-de-nucleo. Esses pisos não representam atores exclusivos: quem atende ao mínimo para criar também atende ao mínimo para ler e editar. O serviço continua aplicando o alcance e as restrições de cada operação.

CampoTipoPresençaDescrição
statusCodenumberObrigatórioStatus HTTP repetido no corpo.
messagestring ou string[]ObrigatórioMensagem legível; validação pode retornar uma mensagem por regra.
errorCodestringObrigatórioCódigo estável do catálogo de erros.
errorstringOpcionalNome do status HTTP; pode estar ausente em exceção lançada com corpo textual.
HTTPerrorCodeCondição
400VALIDATION_FAILEDNão detalhada por operação.
401UNAUTHORIZEDNão detalhada por operação.
403FORBIDDENNão detalhada por operação.
404NOT_FOUNDNão detalhada por operação.
409CONFLICTNão detalhada por operação.
422RULE_VIOLATIONNão detalhada por operação.

Projeção do registro

Campo ou conteúdoTipoDescrição
EstadoNão informadoIntegra o retorno do registro.
VersãoNão informadoIntegra o retorno do registro.
DatasNão informadoIntegram o retorno do registro.
Ações disponíveisNão informadoIntegram o retorno do registro.
AssuntosNão informadoIntegram o retorno do registro.
ConclusõesNão informadoIntegram o retorno do registro.
ParticipantesNão informadoIntegram o retorno do registro.
Detalhe da modalidadeNão informadoIntegra o retorno do registro.

Os nomes dos campos, tipos e contratos aninhados da projeção permanecem pendentes de detalhamento.


POST /v1/service-records

Cria um Registro de Atendimento.

Autenticação e autorização: Bearer; perfil mínimo operacional-autonomo e alcance por registro.

Entrada

LocalCampoTipoObrigatórioCondição
CorpopersonIdNão informadoSim—
CorpounitIdNão informadoNão informado—
CorporesponsibleNucleusSiglaNão informadoNão informado—
CorpomodeNão informadoNão informado—
CorpodirectionNão informadoNão informado—
CorposubjectsNão informadoNão informado—
Corporemote ou onsiteNão informadoNão informadoExatamente um detalhe, conforme a modalidade.
CorpooriginNão informadoNão—
CorpoisAppointmentNão informadoNão—
CorpoappointmentIdNão informadoNão—
CorpoparticipantsNão informadoNão—
CorpoidempotencyKeyNão informadoNão—

Saída

HTTPCampoTipoDescrição
201CorpoServiceRecordDetailDtoProjeção do registro; conteúdos descritos em Convenções. Campos e tipos pendentes de detalhamento.

Erros

HTTPerrorCodeCondição
Não informado por operaçãoNão informado por operaçãoA relação geral de erros está em Convenções. A aplicabilidade por endpoint permanece pendente de detalhamento.

GET /v1/service-records

Lista Registros de Atendimento por cursor e filtros.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito e alcance por registro.

Entrada

LocalCampoTipoObrigatórioCondição
QuerycursorNão informadoNão informado—
QuerylimitNão informadoNão informadoAté 200.
QuerypersonIdNão informadoNão informado—
QueryunitIdNão informadoNão informado—
QueryNúcleoNão informadoNão informado—
QueryEstadoNão informadoNão informado—
QueryModoNão informadoNão informado—
QueryDireçãoNão informadoNão informado—
QueryOrigemNão informadoNão informado—
QueryPeríodoNão informadoNão informado—
QueryParadaNão informadoNão informado—

Saída

HTTPCampoTipoDescrição
Não informadoCorpoPágina cursor de detalhesCampos e tipos da página pendentes de detalhamento.

Erros

HTTPerrorCodeCondição
Não informado por operaçãoNão informado por operaçãoA relação geral de erros está em Convenções. A aplicabilidade por endpoint permanece pendente de detalhamento.

GET /v1/service-records/{id}

Consulta um Registro de Atendimento.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito e alcance por registro.

Entrada

LocalCampoTipoObrigatórioCondição
CaminhoidUUIDSim—
——Não informadoNão informadoDetalhamento da entrada pendente.

Saída

HTTPCampoTipoDescrição
200CorpoServiceRecordDetailDtoProjeção do registro; conteúdos descritos em Convenções. Campos e tipos pendentes de detalhamento.

Erros

HTTPerrorCodeCondição
Não informado por operaçãoNão informado por operaçãoA relação geral de erros está em Convenções. A aplicabilidade por endpoint permanece pendente de detalhamento.

PATCH /v1/service-records/{id}

Atualiza um Registro de Atendimento.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito e alcance por registro.

Entrada

LocalCampoTipoObrigatórioCondição
CaminhoidUUIDSim—
CorpoexpectedVersionNão informadoNão informado—
CorpounitIdNão informadoNão—
CorpoNúcleoNão informadoNão—
CorpoDireçãoNão informadoNão—

Saída

HTTPCampoTipoDescrição
200CorpoServiceRecordDetailDtoProjeção do registro; conteúdos descritos em Convenções. Campos e tipos pendentes de detalhamento.

Erros

HTTPerrorCodeCondição
Não informado por operaçãoNão informado por operaçãoA relação geral de erros está em Convenções. A aplicabilidade por endpoint permanece pendente de detalhamento.

POST /v1/service-records/{id}/check-in

Executa o comando check-in do ciclo de estados.

Corpo: { expectedVersion }.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito e alcance por registro.

Entrada

LocalCampoTipoObrigatórioCondição
CaminhoidUUIDSim—
CorpoexpectedVersionNão informadoNão informado—

Saída

HTTPCampoTipoDescrição
200CorpoServiceRecordDetailDtoProjeção do registro; conteúdos descritos em Convenções. Campos e tipos pendentes de detalhamento.

Erros

HTTPerrorCodeCondição
Não informado por operaçãoNão informado por operaçãoA relação geral de erros está em Convenções. A aplicabilidade por endpoint permanece pendente de detalhamento.

POST /v1/service-records/{id}/start

Executa o comando start do ciclo de estados.

Corpo: { expectedVersion }.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito e alcance por registro.

Entrada

LocalCampoTipoObrigatórioCondição
CaminhoidUUIDSim—
CorpoexpectedVersionNão informadoNão informado—

Saída

HTTPCampoTipoDescrição
200CorpoServiceRecordDetailDtoProjeção do registro; conteúdos descritos em Convenções. Campos e tipos pendentes de detalhamento.

Erros

HTTPerrorCodeCondição
Não informado por operaçãoNão informado por operaçãoA relação geral de erros está em Convenções. A aplicabilidade por endpoint permanece pendente de detalhamento.

POST /v1/service-records/{id}/review

Executa o comando review do ciclo de estados.

Corpo: { expectedVersion }.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito e alcance por registro.

Entrada

LocalCampoTipoObrigatórioCondição
CaminhoidUUIDSim—
CorpoexpectedVersionNão informadoNão informado—

Saída

HTTPCampoTipoDescrição
200CorpoServiceRecordDetailDtoProjeção do registro; conteúdos descritos em Convenções. Campos e tipos pendentes de detalhamento.

Erros

HTTPerrorCodeCondição
Não informado por operaçãoNão informado por operaçãoA relação geral de erros está em Convenções. A aplicabilidade por endpoint permanece pendente de detalhamento.

POST /v1/service-records/{id}/close

Encerra um atendimento remoto ou presencial a partir de qualquer estado não terminal. Aceita as conclusões dos assuntos pendentes no mesmo comando, preservando as já existentes.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito, alcance completo do registro e autorização de escrita.

Entrada

LocalCampoTipoObrigatórioCondição
CaminhoidUUIDSimIdentificador do registro.
CorpoexpectedVersionInteiro ≥ 1SimDeve corresponder à versão atual.
CorpoconclusionsArray de objetosNãoSomente assuntos pendentes; identificadores sem repetição.
Corpoconclusions[].subjectIdUUIDSim, por itemAssunto visível pertencente ao registro.
Corpoconclusions[].typePROVIDENCIAS ou SEM_INTERCORRENCIASim, por itemResultado do assunto.
Corpoconclusions[].noteString não vazia, até 20.000 caracteresSim, por itemTexto da conclusão.

Saída

HTTPCampoTipoDescrição
200CorpoServiceRecordDetailDtoRegistro com status=ENCERRADO, closedAt preenchido, versão incrementada uma vez e conclusões persistidas.

Todos os assuntos devem possuir conclusão ao final da operação. A API grava as novas conclusões, seus eventos e o encerramento na mesma transação. Uma recusa não grava parte das conclusões. Pular etapas não cria eventos de início ou revisão nem preenche startedAt artificialmente.

Erros

HTTPerrorCodeCondição
400VALIDATION_FAILEDCorpo inválido, resultado inválido, nota vazia, UUID inválido ou assunto repetido no array.
401UNAUTHORIZEDCredencial ausente ou inválida.
404NOT_FOUNDRegistro ou assunto inexistente ou fora do alcance; assunto de outro registro.
409CONFLICTVersão desatualizada.
422RULE_VIOLATIONEstado terminal, tentativa de substituir conclusão existente ou conclusão ainda ausente. Na ausência, a resposta inclui missingSubjectIds.

POST /v1/service-records/{id}/cancel

Executa o comando cancel do ciclo de estados.

Corpo: { expectedVersion, reason }.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito e alcance por registro.

Entrada

LocalCampoTipoObrigatórioCondição
CaminhoidUUIDSim—
CorpoexpectedVersionNão informadoNão informado—
CorporeasonNão informadoNão informadoMotivo de 1–500 caracteres.

Saída

HTTPCampoTipoDescrição
200CorpoServiceRecordDetailDtoProjeção do registro; conteúdos descritos em Convenções. Campos e tipos pendentes de detalhamento.

Erros

HTTPerrorCodeCondição
Não informado por operaçãoNão informado por operaçãoA relação geral de erros está em Convenções. A aplicabilidade por endpoint permanece pendente de detalhamento.

POST /v1/service-records/{id}/subjects

Adiciona assunto.

Autenticação e autorização: Bearer; perfil mínimo e alcance conforme as convenções gerais.

Entrada

LocalCampoTipoObrigatórioCondição
CaminhoidUUIDSim—
CorpopurposeNão informadoNão informado—
CorpoReferênciasNão informadoNãoCampos pendentes de detalhamento.
CorpoexpectedVersionNão informadoNão informado—

Saída

HTTPCampoTipoDescrição
Não informadoCorpoNão informadoContrato de saída pendente de detalhamento.

Erros

HTTPerrorCodeCondição
Não informado por operaçãoNão informado por operaçãoA relação geral de erros está em Convenções. A aplicabilidade por endpoint permanece pendente de detalhamento.

GET /v1/service-records/{id}/subjects

Lista assuntos.

Autenticação e autorização: Bearer; perfil mínimo e alcance conforme as convenções gerais.

Entrada

LocalCampoTipoObrigatórioCondição
CaminhoidUUIDSim—
——Não informadoNão informadoDetalhamento da entrada pendente.

Saída

HTTPCampoTipoDescrição
Não informadoCorpoNão informadoLista assuntos; campos e tipos pendentes de detalhamento.

Erros

HTTPerrorCodeCondição
Não informado por operaçãoNão informado por operaçãoA relação geral de erros está em Convenções. A aplicabilidade por endpoint permanece pendente de detalhamento.

PUT /v1/service-records/{id}/subjects/{subjectId}/conclusion

Faz upsert da conclusão.

Corpo: { expectedVersion, type, note }.

Autenticação e autorização: Bearer; perfil mínimo e alcance conforme as convenções gerais.

Entrada

LocalCampoTipoObrigatórioCondição
CaminhoidUUIDSim—
CaminhosubjectIdUUIDSim—
CorpoexpectedVersionNão informadoNão informado—
CorpotypeNão informadoNão informado—
CorponoteNão informadoNão informadoDe 1–20.000 caracteres.

Saída

HTTPCampoTipoDescrição
Não informadoCorpoNão informadoContrato de saída pendente de detalhamento.

Erros

HTTPerrorCodeCondição
Não informado por operaçãoNão informado por operaçãoA relação geral de erros está em Convenções. A aplicabilidade por endpoint permanece pendente de detalhamento.

POST /v1/service-records/{id}/participants

Recebe { expectedVersion, userId } para participantes.

Autenticação e autorização: Bearer; perfil mínimo e alcance conforme as convenções gerais.

Entrada

LocalCampoTipoObrigatórioCondição
CaminhoidUUIDSim—
CorpoexpectedVersionNão informadoNão informado—
CorpouserIdUUIDNão informado—

Saída

HTTPCampoTipoDescrição
Não informadoCorpoNão informadoContrato de saída pendente de detalhamento.

Erros

HTTPerrorCodeCondição
Não informado por operaçãoNão informado por operaçãoA relação geral de erros está em Convenções. A aplicabilidade por endpoint permanece pendente de detalhamento.

GET /v1/service-records/{id}/participants

Lista usuários.

Autenticação e autorização: Bearer; perfil mínimo e alcance conforme as convenções gerais.

Entrada

LocalCampoTipoObrigatórioCondição
CaminhoidUUIDSim—
——Não informadoNão informadoDetalhamento da entrada pendente.

Saída

HTTPCampoTipoDescrição
Não informadoCorpoNão informadoLista usuários; campos e tipos pendentes de detalhamento.

Erros

HTTPerrorCodeCondição
Não informado por operaçãoNão informado por operaçãoA relação geral de erros está em Convenções. A aplicabilidade por endpoint permanece pendente de detalhamento.

POST /v1/service-records/{id}/participants/{userId}/end

Encerra a participação.

Autenticação e autorização: Bearer; perfil mínimo e alcance conforme as convenções gerais.

Entrada

LocalCampoTipoObrigatórioCondição
CaminhoidUUIDSim—
CaminhouserIdUUIDSim—
CorpoexpectedVersionNão informadoNão informado—

Saída

HTTPCampoTipoDescrição
Não informadoCorpoNão informadoContrato de saída pendente de detalhamento.

Erros

HTTPerrorCodeCondição
Não informado por operaçãoNão informado por operaçãoA relação geral de erros está em Convenções. A aplicabilidade por endpoint permanece pendente de detalhamento.

POST /v1/service-records/{id}/transfer

Transfere o atendimento; exige liderança do núcleo.

Autenticação e autorização: Bearer; perfil mínimo acesso-de-nucleo, liderança do núcleo e alcance por registro.

Entrada

LocalCampoTipoObrigatórioCondição
CaminhoidUUIDSim—
CorpoexpectedVersionNão informadoNão informado—
CorpotoUserIdUUIDNão informado—
CorpofromUserIdUUIDNão—

Saída

HTTPCampoTipoDescrição
Não informadoCorpoNão informadoContrato de saída pendente de detalhamento.

Erros

HTTPerrorCodeCondição
Não informado por operaçãoNão informado por operaçãoA relação geral de erros está em Convenções. A aplicabilidade por endpoint permanece pendente de detalhamento.

POST /v1/service-record-conclusion-templates

Cria Modelo de Conclusão.

Autenticação e autorização: Bearer; perfil mínimo acesso-de-nucleo.

Entrada

LocalCampoTipoObrigatórioCondição
CorpotitleNão informadoNão informadoAté 255 caracteres.
CorpocontentNão informadoNão informadoAté 20.000 caracteres.
CorpoactiveNão informadoNão—

Saída

HTTPCampoTipoDescrição
Não informadoCorpoNão informadoContrato de saída pendente de detalhamento.

Erros

HTTPerrorCodeCondição
Não informado por operaçãoNão informado por operaçãoA relação geral de erros está em Convenções. A aplicabilidade por endpoint permanece pendente de detalhamento.

GET /v1/service-record-conclusion-templates

Lista Modelos de Conclusão por cursor e filtro active.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito.

Entrada

LocalCampoTipoObrigatórioCondição
QueryCursorNão informadoNão informado—
QueryactiveNão informadoNão informado—

Saída

HTTPCampoTipoDescrição
Não informadoCorpoNão informadoContrato de saída pendente de detalhamento.

Erros

HTTPerrorCodeCondição
Não informado por operaçãoNão informado por operaçãoA relação geral de erros está em Convenções. A aplicabilidade por endpoint permanece pendente de detalhamento.

GET /v1/service-record-conclusion-templates/{id}

Consulta Modelo de Conclusão.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito.

Entrada

LocalCampoTipoObrigatórioCondição
CaminhoidUUIDSim—
——Não informadoNão informadoDetalhamento da entrada pendente.

Saída

HTTPCampoTipoDescrição
Não informadoCorpoNão informadoContrato de saída pendente de detalhamento.

Erros

HTTPerrorCodeCondição
Não informado por operaçãoNão informado por operaçãoA relação geral de erros está em Convenções. A aplicabilidade por endpoint permanece pendente de detalhamento.

PATCH /v1/service-record-conclusion-templates/{id}

Atualiza parcialmente o Modelo de Conclusão.

Autenticação e autorização: Bearer; perfil mínimo acesso-de-nucleo.

Entrada

LocalCampoTipoObrigatórioCondição
CaminhoidUUIDSim—
CorpoCampos da atualizaçãoNão informadoNão informadoContrato da atualização parcial pendente de detalhamento.

Saída

HTTPCampoTipoDescrição
Não informadoCorpoNão informadoContrato de saída pendente de detalhamento.

Erros

HTTPerrorCodeCondição
Não informado por operaçãoNão informado por operaçãoA relação geral de erros está em Convenções. A aplicabilidade por endpoint permanece pendente de detalhamento.

Solicitações, Rotas e interações

As operações abaixo complementam o Registro. Solicitações preservam itens e apresentações; Rotas organizam Ocorrências e Paradas; interações preservam comunicações no Registro.

Os códigos de sucesso desta referência seguem o contrato OpenAPI. A revisão de compatibilidade dos comandos de Solicitação e da definição de limit permanece pendente. Nas tabelas, resposta representa a raiz do JSON, não um campo adicional do corpo. A obrigatoriedade dos campos aninhados aplica-se quando o objeto ou item que os contém estiver presente.


GET /v1/service-records/{serviceRecordId}/interactions

Lista recursos no alcance permitido.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; leitura e escrita sujeitas ao alcance do Registro.

Entrada

LocalCampoTipoObrigatórioCondição
pathserviceRecordIdstringSim—
querycursorstringNão—
querylimitEm revisão: object no OpenAPI; integer na validaçãoEm revisão: exigido no OpenAPI; opcional na validaçãomínimo: 1; máximo: 200; padrão: 50

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.nextCursorstring; aceita nullPresente; Cursor opaco da próxima página; null quando não há mais itens.
200resposta.itemsarray de objectPresente; —
200resposta.items[]objectPresente; —
200resposta.items[].actorUserIdstring; aceita nullPresente; —
200resposta.items[].channelstring: WHATSAPP, PHONE, EMAIL, VIDEO, IN_PERSON, NOTEPresente; —
200resposta.items[].createdAtstring (date-time)Presente; —
200resposta.items[].deliverystring: RECORDED, SYNCED, SIMULATED, SENTPresente; —
200resposta.items[].directionstring: INCOMING, OUTGOING, INTERNALPresente; —
200resposta.items[].externalMessageIdstring; aceita nullPresente; —
200resposta.items[].idstringPresente; —
200resposta.items[].idempotencyKeystringPresente; —
200resposta.items[].occurredAtstring (date-time)Presente; —
200resposta.items[].outboxEntryIdstring; aceita nullPresente; —
200resposta.items[].serviceRecordIdstringPresente; —
200resposta.items[].summarystring; aceita nullPresente; —

Erros

HTTPerrorCodeCondição
400VALIDATION_FAILEDEntrada inválida
401UNAUTHORIZEDNão autenticado
403FORBIDDENAcesso negado
404NOT_FOUNDRecurso não encontrado
409CONFLICTConflito
422RULE_VIOLATIONRegra de negócio
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL
502Não especificadoFalha de integração
503Não especificadoIntegração indisponível
504Não especificadoTempo de resposta da integração excedido

POST /v1/service-records/{serviceRecordId}/interactions

Registra um contato já ocorrido, com entrega RECORDED.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; leitura e escrita sujeitas ao alcance do Registro.

Entrada

LocalCampoTipoObrigatórioCondição
pathserviceRecordIdstringSim—
bodychannelstring: WHATSAPP, PHONE, EMAIL, VIDEO, IN_PERSON, NOTESim—
bodydirectionstring: INCOMING, OUTGOING, INTERNALSim—
bodyidempotencyKeystringSimcomprimento mínimo: 8; comprimento máximo: 200
bodyoccurredAtstringSim—
bodysummarystringSimcomprimento mínimo: 1; comprimento máximo: 4096

O registro manual aceita PHONE, EMAIL, VIDEO, IN_PERSON e NOTE; WHATSAPP é reservado às operações de envio e sincronização.

Saída

HTTPCampoTipoDescrição
201respostaobjectPresente; —
201resposta.actorUserIdstring; aceita nullPresente; —
201resposta.channelstring: WHATSAPP, PHONE, EMAIL, VIDEO, IN_PERSON, NOTEPresente; —
201resposta.createdAtstring (date-time)Presente; —
201resposta.deliverystring: RECORDED, SYNCED, SIMULATED, SENTPresente; —
201resposta.directionstring: INCOMING, OUTGOING, INTERNALPresente; —
201resposta.externalMessageIdstring; aceita nullPresente; —
201resposta.idstringPresente; —
201resposta.idempotencyKeystringPresente; —
201resposta.occurredAtstring (date-time)Presente; —
201resposta.outboxEntryIdstring; aceita nullPresente; —
201resposta.serviceRecordIdstringPresente; —
201resposta.summarystring; aceita nullPresente; —

Erros

HTTPerrorCodeCondição
400VALIDATION_FAILEDEntrada inválida
401UNAUTHORIZEDNão autenticado
403FORBIDDENAcesso negado
404NOT_FOUNDRecurso não encontrado
409CONFLICTConflito
422RULE_VIOLATIONRegra de negócio
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL
502Não especificadoFalha de integração
503Não especificadoIntegração indisponível
504Não especificadoTempo de resposta da integração excedido

POST /v1/service-records/{serviceRecordId}/interactions/send

Envia comunicação pelo outbox.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; leitura e escrita sujeitas ao alcance do Registro.

Entrada

LocalCampoTipoObrigatórioCondição
pathserviceRecordIdstringSim—
bodycommentsstringNãocomprimento mínimo: 1; comprimento máximo: 4096
bodydepartmentIdstringNãocomprimento mínimo: 1; comprimento máximo: 255
bodyidempotencyKeystringSimcomprimento mínimo: 8; comprimento máximo: 200
bodykindstring: TEXT, TEMPLATE, TRANSFERSim—
bodyparamsarray de stringNãomáximo de itens: 32
bodyserviceIdstringNãocomprimento mínimo: 1; comprimento máximo: 255
bodytemplateIdstring (uuid)Não—
bodytextstringNãocomprimento mínimo: 1; comprimento máximo: 4096
bodyticketIdstringNãocomprimento mínimo: 1; comprimento máximo: 255
bodyuserIdstringNãocomprimento mínimo: 1; comprimento máximo: 255

TEXT exige serviceId e text; TEMPLATE exige serviceId e templateId; TRANSFER exige ticketId e departmentId.

Saída

HTTPCampoTipoDescrição
201respostaobjectPresente; —
201resposta.actorUserIdstring; aceita nullPresente; —
201resposta.channelstring: WHATSAPP, PHONE, EMAIL, VIDEO, IN_PERSON, NOTEPresente; —
201resposta.createdAtstring (date-time)Presente; —
201resposta.deliverystring: RECORDED, SYNCED, SIMULATED, SENTPresente; —
201resposta.directionstring: INCOMING, OUTGOING, INTERNALPresente; —
201resposta.externalMessageIdstring; aceita nullPresente; —
201resposta.idstringPresente; —
201resposta.idempotencyKeystringPresente; —
201resposta.occurredAtstring (date-time)Presente; —
201resposta.outboxEntryIdstring; aceita nullPresente; —
201resposta.serviceRecordIdstringPresente; —
201resposta.summarystring; aceita nullPresente; —

Erros

HTTPerrorCodeCondição
400VALIDATION_FAILEDEntrada inválida
401UNAUTHORIZEDNão autenticado
403FORBIDDENAcesso negado
404NOT_FOUNDRecurso não encontrado
409CONFLICTConflito
422RULE_VIOLATIONRegra de negócio
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL
502Não especificadoFalha de integração
503Não especificadoIntegração indisponível
504Não especificadoTempo de resposta da integração excedido

POST /v1/service-records/{serviceRecordId}/interactions/sync

Sincroniza mensagens externas no Registro.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; leitura e escrita sujeitas ao alcance do Registro. Token de sistema exige o escopo service-record-interactions:sync, com proprietário ativo e autorizado.

Entrada

LocalCampoTipoObrigatórioCondição
pathserviceRecordIdstringSim—
bodyidempotencyKeystringSimcomprimento mínimo: 8; comprimento máximo: 200
bodymessageIdsarray de stringSimmáximo de itens: 100

Saída

HTTPCampoTipoDescrição
201respostaobjectPresente; —
201resposta.itemsarray de objectPresente; —
201resposta.items[]objectPresente; —
201resposta.items[].actorUserIdstring; aceita nullPresente; —
201resposta.items[].channelstring: WHATSAPP, PHONE, EMAIL, VIDEO, IN_PERSON, NOTEPresente; —
201resposta.items[].createdAtstring (date-time)Presente; —
201resposta.items[].deliverystring: RECORDED, SYNCED, SIMULATED, SENTPresente; —
201resposta.items[].directionstring: INCOMING, OUTGOING, INTERNALPresente; —
201resposta.items[].externalMessageIdstring; aceita nullPresente; —
201resposta.items[].idstringPresente; —
201resposta.items[].idempotencyKeystringPresente; —
201resposta.items[].occurredAtstring (date-time)Presente; —
201resposta.items[].outboxEntryIdstring; aceita nullPresente; —
201resposta.items[].serviceRecordIdstringPresente; —
201resposta.items[].summarystring; aceita nullPresente; —
201resposta.statusstring: synced, synced-emptyPresente; —

Erros

HTTPerrorCodeCondição
400VALIDATION_FAILEDEntrada inválida
401UNAUTHORIZEDNão autenticado
403FORBIDDENAcesso negado
404NOT_FOUNDRecurso não encontrado
409CONFLICTConflito
422RULE_VIOLATIONRegra de negócio
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL
502Não especificadoFalha de integração
503Não especificadoIntegração indisponível
504Não especificadoTempo de resposta da integração excedido

GET /v1/service-requests

Lista recursos no alcance permitido.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; leitura e escrita sujeitas ao alcance do Registro.

Entrada

LocalCampoTipoObrigatórioCondição
queryserviceRecordIdstring (uuid)Não—
querycursorstringNão—
querylimitEm revisão: object no OpenAPI; integer na validaçãoEm revisão: exigido no OpenAPI; opcional na validaçãomínimo: 1; máximo: 200; padrão: 50

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.nextCursorstring; aceita nullPresente; Cursor opaco da próxima página; null quando não há mais itens.
200resposta.itemsarray de objectPresente; —
200resposta.items[]objectPresente; —
200resposta.items[].activitiesarray de objectPresente; —
200resposta.items[].activities[]objectPresente; —
200resposta.items[].activities[].activityIdstringPresente; —
200resposta.items[].activities[].createdAtstring (date-time)Presente; —
200resposta.items[].activities[].idstringPresente; —
200resposta.items[].aggregatedStatusstringPresente; —
200resposta.items[].canceledAtstring (date-time); aceita nullPresente; —
200resposta.items[].cancellationReasonstring; aceita nullPresente; —
200resposta.items[].createdAtstring (date-time)Presente; —
200resposta.items[].dueAtstring (date-time); aceita nullPresente; —
200resposta.items[].idstringPresente; —
200resposta.items[].itemsarray de objectPresente; —
200resposta.items[].items[]objectPresente; —
200resposta.items[].items[].createdAtstring (date-time)Presente; —
200resposta.items[].items[].idstringPresente; —
200resposta.items[].items[].kindstring: DOCUMENT, INFORMATION, ATTENDANCEPresente; —
200resposta.items[].items[].presentationsarray de objectPresente; —
200resposta.items[].items[].presentations[]objectPresente; —
200resposta.items[].items[].presentations[].documentIdstring; aceita nullPresente; —
200resposta.items[].items[].presentations[].fulfillmentServiceRecordIdstringPresente; —
200resposta.items[].items[].presentations[].idstringPresente; —
200resposta.items[].items[].presentations[].receivedAtstring (date-time)Presente; —
200resposta.items[].items[].presentations[].sequencenumberPresente; —
200resposta.items[].items[].resolvedAtstring (date-time); aceita nullPresente; —
200resposta.items[].items[].statusstring: PENDING, RECEIVED, VALIDATING, ACCEPTED, REJECTED, WAIVEDPresente; —
200resposta.items[].items[].titlestringPresente; —
200resposta.items[].items[].validationNotestring; aceita nullPresente; —
200resposta.items[].items[].versionnumberPresente; —
200resposta.items[].overduebooleanPresente; —
200resposta.items[].personIdstringPresente; —
200resposta.items[].responsibleGroupIdstring; aceita nullPresente; —
200resposta.items[].responsibleUserIdstring; aceita nullPresente; —
200resposta.items[].serviceRecordIdstringPresente; —
200resposta.items[].subjectIdstring; aceita nullPresente; —
200resposta.items[].updatedAtstring (date-time)Presente; —
200resposta.items[].versionnumberPresente; —

Erros

HTTPerrorCodeCondição
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

Aplicam-se também autenticação (401), perfil insuficiente (403), recurso ausente ou fora do alcance (404), entrada inválida (400) e violação de regra (422), conforme as convenções e regras do domínio.


POST /v1/service-requests

Cria uma Solicitação com seus itens a partir de um Registro gravável.

Autenticação e autorização: Bearer; perfil mínimo operacional-autonomo; Registro de origem gravável e responsável elegível.

Entrada

LocalCampoTipoObrigatórioCondição
bodydueAtstringNão—
bodyidempotencyKeystringSimcomprimento mínimo: 8; comprimento máximo: 100
bodyitemsarray de objectSimmínimo de itens: 1
bodyitems[]objectSim—
bodyitems[].kindstring: DOCUMENT, INFORMATION, ATTENDANCESim—
bodyitems[].titlestringSimcomprimento mínimo: 1; comprimento máximo: 255
bodyresponsibleGroupIdstring (uuid)Não—
bodyresponsibleUserIdstring (uuid)Não—
bodyserviceRecordIdstring (uuid)Sim—
bodysubjectIdstring (uuid)Não—

Saída

HTTPCampoTipoDescrição
201respostaobjectPresente; —
201resposta.activitiesarray de objectPresente; —
201resposta.activities[]objectPresente; —
201resposta.activities[].activityIdstringPresente; —
201resposta.activities[].createdAtstring (date-time)Presente; —
201resposta.activities[].idstringPresente; —
201resposta.aggregatedStatusstringPresente; —
201resposta.canceledAtstring (date-time); aceita nullPresente; —
201resposta.cancellationReasonstring; aceita nullPresente; —
201resposta.createdAtstring (date-time)Presente; —
201resposta.dueAtstring (date-time); aceita nullPresente; —
201resposta.idstringPresente; —
201resposta.itemsarray de objectPresente; —
201resposta.items[]objectPresente; —
201resposta.items[].createdAtstring (date-time)Presente; —
201resposta.items[].idstringPresente; —
201resposta.items[].kindstring: DOCUMENT, INFORMATION, ATTENDANCEPresente; —
201resposta.items[].presentationsarray de objectPresente; —
201resposta.items[].presentations[]objectPresente; —
201resposta.items[].presentations[].documentIdstring; aceita nullPresente; —
201resposta.items[].presentations[].fulfillmentServiceRecordIdstringPresente; —
201resposta.items[].presentations[].idstringPresente; —
201resposta.items[].presentations[].receivedAtstring (date-time)Presente; —
201resposta.items[].presentations[].sequencenumberPresente; —
201resposta.items[].resolvedAtstring (date-time); aceita nullPresente; —
201resposta.items[].statusstring: PENDING, RECEIVED, VALIDATING, ACCEPTED, REJECTED, WAIVEDPresente; —
201resposta.items[].titlestringPresente; —
201resposta.items[].validationNotestring; aceita nullPresente; —
201resposta.items[].versionnumberPresente; —
201resposta.overduebooleanPresente; —
201resposta.personIdstringPresente; —
201resposta.responsibleGroupIdstring; aceita nullPresente; —
201resposta.responsibleUserIdstring; aceita nullPresente; —
201resposta.serviceRecordIdstringPresente; —
201resposta.subjectIdstring; aceita nullPresente; —
201resposta.updatedAtstring (date-time)Presente; —
201resposta.versionnumberPresente; —

Erros

HTTPerrorCodeCondição
409CONFLICTchave idempotente ou versão divergente
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

Aplicam-se também autenticação (401), perfil insuficiente (403), recurso ausente ou fora do alcance (404), entrada inválida (400) e violação de regra (422), conforme as convenções e regras do domínio.


GET /v1/service-requests/{id}

Consulta o recurso no alcance permitido.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; leitura e escrita sujeitas ao alcance do Registro.

Entrada

LocalCampoTipoObrigatórioCondição
pathidstringSim—

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.activitiesarray de objectPresente; —
200resposta.activities[]objectPresente; —
200resposta.activities[].activityIdstringPresente; —
200resposta.activities[].createdAtstring (date-time)Presente; —
200resposta.activities[].idstringPresente; —
200resposta.aggregatedStatusstringPresente; —
200resposta.canceledAtstring (date-time); aceita nullPresente; —
200resposta.cancellationReasonstring; aceita nullPresente; —
200resposta.createdAtstring (date-time)Presente; —
200resposta.dueAtstring (date-time); aceita nullPresente; —
200resposta.idstringPresente; —
200resposta.itemsarray de objectPresente; —
200resposta.items[]objectPresente; —
200resposta.items[].createdAtstring (date-time)Presente; —
200resposta.items[].idstringPresente; —
200resposta.items[].kindstring: DOCUMENT, INFORMATION, ATTENDANCEPresente; —
200resposta.items[].presentationsarray de objectPresente; —
200resposta.items[].presentations[]objectPresente; —
200resposta.items[].presentations[].documentIdstring; aceita nullPresente; —
200resposta.items[].presentations[].fulfillmentServiceRecordIdstringPresente; —
200resposta.items[].presentations[].idstringPresente; —
200resposta.items[].presentations[].receivedAtstring (date-time)Presente; —
200resposta.items[].presentations[].sequencenumberPresente; —
200resposta.items[].resolvedAtstring (date-time); aceita nullPresente; —
200resposta.items[].statusstring: PENDING, RECEIVED, VALIDATING, ACCEPTED, REJECTED, WAIVEDPresente; —
200resposta.items[].titlestringPresente; —
200resposta.items[].validationNotestring; aceita nullPresente; —
200resposta.items[].versionnumberPresente; —
200resposta.overduebooleanPresente; —
200resposta.personIdstringPresente; —
200resposta.responsibleGroupIdstring; aceita nullPresente; —
200resposta.responsibleUserIdstring; aceita nullPresente; —
200resposta.serviceRecordIdstringPresente; —
200resposta.subjectIdstring; aceita nullPresente; —
200resposta.updatedAtstring (date-time)Presente; —
200resposta.versionnumberPresente; —

Erros

HTTPerrorCodeCondição
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

Aplicam-se também autenticação (401), perfil insuficiente (403), recurso ausente ou fora do alcance (404), entrada inválida (400) e violação de regra (422), conforme as convenções e regras do domínio.


POST /v1/service-requests/{id}/activities

Vincula uma atividade à Solicitação.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; leitura e escrita sujeitas ao alcance do Registro. Comandos exigem Solicitação não cancelada; o Registro de origem pode estar encerrado. Recebimento exige Registro de cumprimento gravável da mesma Pessoa.

Entrada

LocalCampoTipoObrigatórioCondição
pathidstringSim—
bodyactivityIdstring (uuid)Sim—
bodyexpectedVersionnumberSimmínimo: 1
bodyidempotencyKeystringSimcomprimento mínimo: 1; comprimento máximo: 100

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.activitiesarray de objectPresente; —
200resposta.activities[]objectPresente; —
200resposta.activities[].activityIdstringPresente; —
200resposta.activities[].createdAtstring (date-time)Presente; —
200resposta.activities[].idstringPresente; —
200resposta.aggregatedStatusstringPresente; —
200resposta.canceledAtstring (date-time); aceita nullPresente; —
200resposta.cancellationReasonstring; aceita nullPresente; —
200resposta.createdAtstring (date-time)Presente; —
200resposta.dueAtstring (date-time); aceita nullPresente; —
200resposta.idstringPresente; —
200resposta.itemsarray de objectPresente; —
200resposta.items[]objectPresente; —
200resposta.items[].createdAtstring (date-time)Presente; —
200resposta.items[].idstringPresente; —
200resposta.items[].kindstring: DOCUMENT, INFORMATION, ATTENDANCEPresente; —
200resposta.items[].presentationsarray de objectPresente; —
200resposta.items[].presentations[]objectPresente; —
200resposta.items[].presentations[].documentIdstring; aceita nullPresente; —
200resposta.items[].presentations[].fulfillmentServiceRecordIdstringPresente; —
200resposta.items[].presentations[].idstringPresente; —
200resposta.items[].presentations[].receivedAtstring (date-time)Presente; —
200resposta.items[].presentations[].sequencenumberPresente; —
200resposta.items[].resolvedAtstring (date-time); aceita nullPresente; —
200resposta.items[].statusstring: PENDING, RECEIVED, VALIDATING, ACCEPTED, REJECTED, WAIVEDPresente; —
200resposta.items[].titlestringPresente; —
200resposta.items[].validationNotestring; aceita nullPresente; —
200resposta.items[].versionnumberPresente; —
200resposta.overduebooleanPresente; —
200resposta.personIdstringPresente; —
200resposta.responsibleGroupIdstring; aceita nullPresente; —
200resposta.responsibleUserIdstring; aceita nullPresente; —
200resposta.serviceRecordIdstringPresente; —
200resposta.subjectIdstring; aceita nullPresente; —
200resposta.updatedAtstring (date-time)Presente; —
200resposta.versionnumberPresente; —

Erros

HTTPerrorCodeCondição
409CONFLICTreplay divergente, versão ou solicitação terminal
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

Aplicam-se também autenticação (401), perfil insuficiente (403), recurso ausente ou fora do alcance (404), entrada inválida (400) e violação de regra (422), conforme as convenções e regras do domínio.


POST /v1/service-requests/{id}/cancel

Cancela a Solicitação.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; leitura e escrita sujeitas ao alcance do Registro. Comandos exigem Solicitação não cancelada; o Registro de origem pode estar encerrado. Recebimento exige Registro de cumprimento gravável da mesma Pessoa.

Entrada

LocalCampoTipoObrigatórioCondição
pathidstringSim—
bodyexpectedVersionnumberSimmínimo: 1
bodyidempotencyKeystringSimcomprimento mínimo: 1; comprimento máximo: 100
bodyreasonstringSimcomprimento mínimo: 1; comprimento máximo: 500

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.activitiesarray de objectPresente; —
200resposta.activities[]objectPresente; —
200resposta.activities[].activityIdstringPresente; —
200resposta.activities[].createdAtstring (date-time)Presente; —
200resposta.activities[].idstringPresente; —
200resposta.aggregatedStatusstringPresente; —
200resposta.canceledAtstring (date-time); aceita nullPresente; —
200resposta.cancellationReasonstring; aceita nullPresente; —
200resposta.createdAtstring (date-time)Presente; —
200resposta.dueAtstring (date-time); aceita nullPresente; —
200resposta.idstringPresente; —
200resposta.itemsarray de objectPresente; —
200resposta.items[]objectPresente; —
200resposta.items[].createdAtstring (date-time)Presente; —
200resposta.items[].idstringPresente; —
200resposta.items[].kindstring: DOCUMENT, INFORMATION, ATTENDANCEPresente; —
200resposta.items[].presentationsarray de objectPresente; —
200resposta.items[].presentations[]objectPresente; —
200resposta.items[].presentations[].documentIdstring; aceita nullPresente; —
200resposta.items[].presentations[].fulfillmentServiceRecordIdstringPresente; —
200resposta.items[].presentations[].idstringPresente; —
200resposta.items[].presentations[].receivedAtstring (date-time)Presente; —
200resposta.items[].presentations[].sequencenumberPresente; —
200resposta.items[].resolvedAtstring (date-time); aceita nullPresente; —
200resposta.items[].statusstring: PENDING, RECEIVED, VALIDATING, ACCEPTED, REJECTED, WAIVEDPresente; —
200resposta.items[].titlestringPresente; —
200resposta.items[].validationNotestring; aceita nullPresente; —
200resposta.items[].versionnumberPresente; —
200resposta.overduebooleanPresente; —
200resposta.personIdstringPresente; —
200resposta.responsibleGroupIdstring; aceita nullPresente; —
200resposta.responsibleUserIdstring; aceita nullPresente; —
200resposta.serviceRecordIdstringPresente; —
200resposta.subjectIdstring; aceita nullPresente; —
200resposta.updatedAtstring (date-time)Presente; —
200resposta.versionnumberPresente; —

Erros

HTTPerrorCodeCondição
409CONFLICTreplay divergente, versão ou solicitação terminal
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

Aplicam-se também autenticação (401), perfil insuficiente (403), recurso ausente ou fora do alcance (404), entrada inválida (400) e violação de regra (422), conforme as convenções e regras do domínio.


GET /v1/service-requests/{id}/items

Lista os itens da Solicitação.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; leitura e escrita sujeitas ao alcance do Registro.

Entrada

LocalCampoTipoObrigatórioCondição
pathidstringSim—
querycursorstringNãoCursor opaco devolvido em nextCursor da página anterior.
querylimitnumberSimTamanho da página.

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.nextCursorstring; aceita nullPresente; Cursor opaco da próxima página; null quando não há mais itens.
200resposta.itemsarray de objectPresente; —
200resposta.items[]objectPresente; —
200resposta.items[].createdAtstring (date-time)Presente; —
200resposta.items[].idstringPresente; —
200resposta.items[].kindstring: DOCUMENT, INFORMATION, ATTENDANCEPresente; —
200resposta.items[].presentationsarray de objectPresente; —
200resposta.items[].presentations[]objectPresente; —
200resposta.items[].presentations[].documentIdstring; aceita nullPresente; —
200resposta.items[].presentations[].fulfillmentServiceRecordIdstringPresente; —
200resposta.items[].presentations[].idstringPresente; —
200resposta.items[].presentations[].receivedAtstring (date-time)Presente; —
200resposta.items[].presentations[].sequencenumberPresente; —
200resposta.items[].resolvedAtstring (date-time); aceita nullPresente; —
200resposta.items[].statusstring: PENDING, RECEIVED, VALIDATING, ACCEPTED, REJECTED, WAIVEDPresente; —
200resposta.items[].titlestringPresente; —
200resposta.items[].validationNotestring; aceita nullPresente; —
200resposta.items[].versionnumberPresente; —

Erros

HTTPerrorCodeCondição
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

Aplicam-se também autenticação (401), perfil insuficiente (403), recurso ausente ou fora do alcance (404), entrada inválida (400) e violação de regra (422), conforme as convenções e regras do domínio.


GET /v1/service-requests/{id}/items/{itemId}

Consulta um item da Solicitação.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; leitura e escrita sujeitas ao alcance do Registro.

Entrada

LocalCampoTipoObrigatórioCondição
pathidstringSim—
pathitemIdstringSim—

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.createdAtstring (date-time)Presente; —
200resposta.idstringPresente; —
200resposta.kindstring: DOCUMENT, INFORMATION, ATTENDANCEPresente; —
200resposta.presentationsarray de objectPresente; —
200resposta.presentations[]objectPresente; —
200resposta.presentations[].documentIdstring; aceita nullPresente; —
200resposta.presentations[].fulfillmentServiceRecordIdstringPresente; —
200resposta.presentations[].idstringPresente; —
200resposta.presentations[].receivedAtstring (date-time)Presente; —
200resposta.presentations[].sequencenumberPresente; —
200resposta.resolvedAtstring (date-time); aceita nullPresente; —
200resposta.statusstring: PENDING, RECEIVED, VALIDATING, ACCEPTED, REJECTED, WAIVEDPresente; —
200resposta.titlestringPresente; —
200resposta.validationNotestring; aceita nullPresente; —
200resposta.versionnumberPresente; —

Erros

HTTPerrorCodeCondição
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

Aplicam-se também autenticação (401), perfil insuficiente (403), recurso ausente ou fora do alcance (404), entrada inválida (400) e violação de regra (422), conforme as convenções e regras do domínio.


POST /v1/service-requests/{id}/items/{itemId}/accept

Aceita o cumprimento do item.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; leitura e escrita sujeitas ao alcance do Registro. Comandos exigem Solicitação não cancelada; o Registro de origem pode estar encerrado. Recebimento exige Registro de cumprimento gravável da mesma Pessoa.

Entrada

LocalCampoTipoObrigatórioCondição
pathidstringSim—
pathitemIdstringSim—
bodyexpectedVersionnumberSimmínimo: 1
bodyidempotencyKeystringSimcomprimento mínimo: 1; comprimento máximo: 100
bodynotestringNãocomprimento mínimo: 1; comprimento máximo: 1000

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.activitiesarray de objectPresente; —
200resposta.activities[]objectPresente; —
200resposta.activities[].activityIdstringPresente; —
200resposta.activities[].createdAtstring (date-time)Presente; —
200resposta.activities[].idstringPresente; —
200resposta.aggregatedStatusstringPresente; —
200resposta.canceledAtstring (date-time); aceita nullPresente; —
200resposta.cancellationReasonstring; aceita nullPresente; —
200resposta.createdAtstring (date-time)Presente; —
200resposta.dueAtstring (date-time); aceita nullPresente; —
200resposta.idstringPresente; —
200resposta.itemsarray de objectPresente; —
200resposta.items[]objectPresente; —
200resposta.items[].createdAtstring (date-time)Presente; —
200resposta.items[].idstringPresente; —
200resposta.items[].kindstring: DOCUMENT, INFORMATION, ATTENDANCEPresente; —
200resposta.items[].presentationsarray de objectPresente; —
200resposta.items[].presentations[]objectPresente; —
200resposta.items[].presentations[].documentIdstring; aceita nullPresente; —
200resposta.items[].presentations[].fulfillmentServiceRecordIdstringPresente; —
200resposta.items[].presentations[].idstringPresente; —
200resposta.items[].presentations[].receivedAtstring (date-time)Presente; —
200resposta.items[].presentations[].sequencenumberPresente; —
200resposta.items[].resolvedAtstring (date-time); aceita nullPresente; —
200resposta.items[].statusstring: PENDING, RECEIVED, VALIDATING, ACCEPTED, REJECTED, WAIVEDPresente; —
200resposta.items[].titlestringPresente; —
200resposta.items[].validationNotestring; aceita nullPresente; —
200resposta.items[].versionnumberPresente; —
200resposta.overduebooleanPresente; —
200resposta.personIdstringPresente; —
200resposta.responsibleGroupIdstring; aceita nullPresente; —
200resposta.responsibleUserIdstring; aceita nullPresente; —
200resposta.serviceRecordIdstringPresente; —
200resposta.subjectIdstring; aceita nullPresente; —
200resposta.updatedAtstring (date-time)Presente; —
200resposta.versionnumberPresente; —

Erros

HTTPerrorCodeCondição
409CONFLICTreplay divergente, versão ou transição incompatível
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

Aplicam-se também autenticação (401), perfil insuficiente (403), recurso ausente ou fora do alcance (404), entrada inválida (400) e violação de regra (422), conforme as convenções e regras do domínio.


POST /v1/service-requests/{id}/items/{itemId}/receive

Registra uma apresentação para cumprimento do item.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; leitura e escrita sujeitas ao alcance do Registro. Comandos exigem Solicitação não cancelada; o Registro de origem pode estar encerrado. Recebimento exige Registro de cumprimento gravável da mesma Pessoa.

Entrada

LocalCampoTipoObrigatórioCondição
pathidstringSim—
pathitemIdstringSim—
bodydocumentIdstring (uuid)Não—
bodyexpectedVersionnumberSimmínimo: 1
bodyfulfillmentServiceRecordIdstring (uuid)Sim—
bodyidempotencyKeystringSimcomprimento mínimo: 1; comprimento máximo: 100

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.activitiesarray de objectPresente; —
200resposta.activities[]objectPresente; —
200resposta.activities[].activityIdstringPresente; —
200resposta.activities[].createdAtstring (date-time)Presente; —
200resposta.activities[].idstringPresente; —
200resposta.aggregatedStatusstringPresente; —
200resposta.canceledAtstring (date-time); aceita nullPresente; —
200resposta.cancellationReasonstring; aceita nullPresente; —
200resposta.createdAtstring (date-time)Presente; —
200resposta.dueAtstring (date-time); aceita nullPresente; —
200resposta.idstringPresente; —
200resposta.itemsarray de objectPresente; —
200resposta.items[]objectPresente; —
200resposta.items[].createdAtstring (date-time)Presente; —
200resposta.items[].idstringPresente; —
200resposta.items[].kindstring: DOCUMENT, INFORMATION, ATTENDANCEPresente; —
200resposta.items[].presentationsarray de objectPresente; —
200resposta.items[].presentations[]objectPresente; —
200resposta.items[].presentations[].documentIdstring; aceita nullPresente; —
200resposta.items[].presentations[].fulfillmentServiceRecordIdstringPresente; —
200resposta.items[].presentations[].idstringPresente; —
200resposta.items[].presentations[].receivedAtstring (date-time)Presente; —
200resposta.items[].presentations[].sequencenumberPresente; —
200resposta.items[].resolvedAtstring (date-time); aceita nullPresente; —
200resposta.items[].statusstring: PENDING, RECEIVED, VALIDATING, ACCEPTED, REJECTED, WAIVEDPresente; —
200resposta.items[].titlestringPresente; —
200resposta.items[].validationNotestring; aceita nullPresente; —
200resposta.items[].versionnumberPresente; —
200resposta.overduebooleanPresente; —
200resposta.personIdstringPresente; —
200resposta.responsibleGroupIdstring; aceita nullPresente; —
200resposta.responsibleUserIdstring; aceita nullPresente; —
200resposta.serviceRecordIdstringPresente; —
200resposta.subjectIdstring; aceita nullPresente; —
200resposta.updatedAtstring (date-time)Presente; —
200resposta.versionnumberPresente; —

Erros

HTTPerrorCodeCondição
409CONFLICTreplay divergente, versão ou transição incompatível
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

Aplicam-se também autenticação (401), perfil insuficiente (403), recurso ausente ou fora do alcance (404), entrada inválida (400) e violação de regra (422), conforme as convenções e regras do domínio.


POST /v1/service-requests/{id}/items/{itemId}/reject

Recusa o cumprimento e permite nova apresentação.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; leitura e escrita sujeitas ao alcance do Registro. Comandos exigem Solicitação não cancelada; o Registro de origem pode estar encerrado. Recebimento exige Registro de cumprimento gravável da mesma Pessoa.

Entrada

LocalCampoTipoObrigatórioCondição
pathidstringSim—
pathitemIdstringSim—
bodyexpectedVersionnumberSimmínimo: 1
bodyidempotencyKeystringSimcomprimento mínimo: 1; comprimento máximo: 100
bodynotestringNãocomprimento mínimo: 1; comprimento máximo: 1000

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.activitiesarray de objectPresente; —
200resposta.activities[]objectPresente; —
200resposta.activities[].activityIdstringPresente; —
200resposta.activities[].createdAtstring (date-time)Presente; —
200resposta.activities[].idstringPresente; —
200resposta.aggregatedStatusstringPresente; —
200resposta.canceledAtstring (date-time); aceita nullPresente; —
200resposta.cancellationReasonstring; aceita nullPresente; —
200resposta.createdAtstring (date-time)Presente; —
200resposta.dueAtstring (date-time); aceita nullPresente; —
200resposta.idstringPresente; —
200resposta.itemsarray de objectPresente; —
200resposta.items[]objectPresente; —
200resposta.items[].createdAtstring (date-time)Presente; —
200resposta.items[].idstringPresente; —
200resposta.items[].kindstring: DOCUMENT, INFORMATION, ATTENDANCEPresente; —
200resposta.items[].presentationsarray de objectPresente; —
200resposta.items[].presentations[]objectPresente; —
200resposta.items[].presentations[].documentIdstring; aceita nullPresente; —
200resposta.items[].presentations[].fulfillmentServiceRecordIdstringPresente; —
200resposta.items[].presentations[].idstringPresente; —
200resposta.items[].presentations[].receivedAtstring (date-time)Presente; —
200resposta.items[].presentations[].sequencenumberPresente; —
200resposta.items[].resolvedAtstring (date-time); aceita nullPresente; —
200resposta.items[].statusstring: PENDING, RECEIVED, VALIDATING, ACCEPTED, REJECTED, WAIVEDPresente; —
200resposta.items[].titlestringPresente; —
200resposta.items[].validationNotestring; aceita nullPresente; —
200resposta.items[].versionnumberPresente; —
200resposta.overduebooleanPresente; —
200resposta.personIdstringPresente; —
200resposta.responsibleGroupIdstring; aceita nullPresente; —
200resposta.responsibleUserIdstring; aceita nullPresente; —
200resposta.serviceRecordIdstringPresente; —
200resposta.subjectIdstring; aceita nullPresente; —
200resposta.updatedAtstring (date-time)Presente; —
200resposta.versionnumberPresente; —

Erros

HTTPerrorCodeCondição
409CONFLICTreplay divergente, versão ou transição incompatível
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

Aplicam-se também autenticação (401), perfil insuficiente (403), recurso ausente ou fora do alcance (404), entrada inválida (400) e violação de regra (422), conforme as convenções e regras do domínio.


POST /v1/service-requests/{id}/items/{itemId}/validate

Move o item recebido para validação.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; leitura e escrita sujeitas ao alcance do Registro. Comandos exigem Solicitação não cancelada; o Registro de origem pode estar encerrado. Recebimento exige Registro de cumprimento gravável da mesma Pessoa.

Entrada

LocalCampoTipoObrigatórioCondição
pathidstringSim—
pathitemIdstringSim—
bodyexpectedVersionnumberSimmínimo: 1
bodyidempotencyKeystringSimcomprimento mínimo: 1; comprimento máximo: 100
bodynotestringNãocomprimento mínimo: 1; comprimento máximo: 1000

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.activitiesarray de objectPresente; —
200resposta.activities[]objectPresente; —
200resposta.activities[].activityIdstringPresente; —
200resposta.activities[].createdAtstring (date-time)Presente; —
200resposta.activities[].idstringPresente; —
200resposta.aggregatedStatusstringPresente; —
200resposta.canceledAtstring (date-time); aceita nullPresente; —
200resposta.cancellationReasonstring; aceita nullPresente; —
200resposta.createdAtstring (date-time)Presente; —
200resposta.dueAtstring (date-time); aceita nullPresente; —
200resposta.idstringPresente; —
200resposta.itemsarray de objectPresente; —
200resposta.items[]objectPresente; —
200resposta.items[].createdAtstring (date-time)Presente; —
200resposta.items[].idstringPresente; —
200resposta.items[].kindstring: DOCUMENT, INFORMATION, ATTENDANCEPresente; —
200resposta.items[].presentationsarray de objectPresente; —
200resposta.items[].presentations[]objectPresente; —
200resposta.items[].presentations[].documentIdstring; aceita nullPresente; —
200resposta.items[].presentations[].fulfillmentServiceRecordIdstringPresente; —
200resposta.items[].presentations[].idstringPresente; —
200resposta.items[].presentations[].receivedAtstring (date-time)Presente; —
200resposta.items[].presentations[].sequencenumberPresente; —
200resposta.items[].resolvedAtstring (date-time); aceita nullPresente; —
200resposta.items[].statusstring: PENDING, RECEIVED, VALIDATING, ACCEPTED, REJECTED, WAIVEDPresente; —
200resposta.items[].titlestringPresente; —
200resposta.items[].validationNotestring; aceita nullPresente; —
200resposta.items[].versionnumberPresente; —
200resposta.overduebooleanPresente; —
200resposta.personIdstringPresente; —
200resposta.responsibleGroupIdstring; aceita nullPresente; —
200resposta.responsibleUserIdstring; aceita nullPresente; —
200resposta.serviceRecordIdstringPresente; —
200resposta.subjectIdstring; aceita nullPresente; —
200resposta.updatedAtstring (date-time)Presente; —
200resposta.versionnumberPresente; —

Erros

HTTPerrorCodeCondição
409CONFLICTreplay divergente, versão ou transição incompatível
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

Aplicam-se também autenticação (401), perfil insuficiente (403), recurso ausente ou fora do alcance (404), entrada inválida (400) e violação de regra (422), conforme as convenções e regras do domínio.


POST /v1/service-requests/{id}/items/{itemId}/waive

Dispensa o cumprimento do item.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; leitura e escrita sujeitas ao alcance do Registro. Comandos exigem Solicitação não cancelada; o Registro de origem pode estar encerrado. Recebimento exige Registro de cumprimento gravável da mesma Pessoa.

Entrada

LocalCampoTipoObrigatórioCondição
pathidstringSim—
pathitemIdstringSim—
bodyexpectedVersionnumberSimmínimo: 1
bodyidempotencyKeystringSimcomprimento mínimo: 1; comprimento máximo: 100
bodynotestringNãocomprimento mínimo: 1; comprimento máximo: 1000

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.activitiesarray de objectPresente; —
200resposta.activities[]objectPresente; —
200resposta.activities[].activityIdstringPresente; —
200resposta.activities[].createdAtstring (date-time)Presente; —
200resposta.activities[].idstringPresente; —
200resposta.aggregatedStatusstringPresente; —
200resposta.canceledAtstring (date-time); aceita nullPresente; —
200resposta.cancellationReasonstring; aceita nullPresente; —
200resposta.createdAtstring (date-time)Presente; —
200resposta.dueAtstring (date-time); aceita nullPresente; —
200resposta.idstringPresente; —
200resposta.itemsarray de objectPresente; —
200resposta.items[]objectPresente; —
200resposta.items[].createdAtstring (date-time)Presente; —
200resposta.items[].idstringPresente; —
200resposta.items[].kindstring: DOCUMENT, INFORMATION, ATTENDANCEPresente; —
200resposta.items[].presentationsarray de objectPresente; —
200resposta.items[].presentations[]objectPresente; —
200resposta.items[].presentations[].documentIdstring; aceita nullPresente; —
200resposta.items[].presentations[].fulfillmentServiceRecordIdstringPresente; —
200resposta.items[].presentations[].idstringPresente; —
200resposta.items[].presentations[].receivedAtstring (date-time)Presente; —
200resposta.items[].presentations[].sequencenumberPresente; —
200resposta.items[].resolvedAtstring (date-time); aceita nullPresente; —
200resposta.items[].statusstring: PENDING, RECEIVED, VALIDATING, ACCEPTED, REJECTED, WAIVEDPresente; —
200resposta.items[].titlestringPresente; —
200resposta.items[].validationNotestring; aceita nullPresente; —
200resposta.items[].versionnumberPresente; —
200resposta.overduebooleanPresente; —
200resposta.personIdstringPresente; —
200resposta.responsibleGroupIdstring; aceita nullPresente; —
200resposta.responsibleUserIdstring; aceita nullPresente; —
200resposta.serviceRecordIdstringPresente; —
200resposta.subjectIdstring; aceita nullPresente; —
200resposta.updatedAtstring (date-time)Presente; —
200resposta.versionnumberPresente; —

Erros

HTTPerrorCodeCondição
409CONFLICTreplay divergente, versão ou transição incompatível
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

Aplicam-se também autenticação (401), perfil insuficiente (403), recurso ausente ou fora do alcance (404), entrada inválida (400) e violação de regra (422), conforme as convenções e regras do domínio.


GET /v1/service-routes

Lista Rotas no alcance permitido.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; alcance institucional ou do núcleo responsável.

Entrada

LocalCampoTipoObrigatórioCondição
querycursorstringNãoCursor opaco devolvido em nextCursor da página anterior.
querylimitnumberSimTamanho da página.

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.nextCursorstring; aceita nullPresente; Cursor opaco da próxima página; null quando não há mais itens.
200resposta.itemsarray de objectPresente; —
200resposta.items[]objectPresente; —
200resposta.items[].createdAtstring (date-time)Presente; —
200resposta.items[].frequencystring: daily, weekly, monthlyPresente; —
200resposta.items[].holidayPolicystring: next_business_day, previous_business_day, skipPresente; —
200resposta.items[].idstringPresente; —
200resposta.items[].intervalnumberPresente; —
200resposta.items[].namestringPresente; —
200resposta.items[].periodstringPresente; —
200resposta.items[].responsibleNucleusSiglastringPresente; —
200resposta.items[].responsibleUserIdsarray de stringPresente; —
200resposta.items[].transportstringPresente; —
200resposta.items[].updatedAtstring (date-time)Presente; —
200resposta.items[].weekOfMonthnumber; aceita nullPresente; —
200resposta.items[].weekdaysarray de numberPresente; —

Erros

HTTPerrorCodeCondição
400VALIDATION_FAILEDEntrada ou cursor inválido
401UNAUTHORIZEDSem credencial válida
403FORBIDDENOperação não permitida para o perfil ou responsável
404NOT_FOUNDRecurso inexistente ou fora do alcance
409CONFLICTConcorrência ou estado incompatível
422RULE_VIOLATIONReferência ou regra inválida
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

POST /v1/service-routes

Configura uma Rota recorrente e seus responsáveis.

Autenticação e autorização: Bearer; perfil mínimo acesso-de-nucleo e liderança do núcleo responsável.

Entrada

LocalCampoTipoObrigatórioCondição
bodyfrequencystring: daily, weekly, monthlySim—
bodyholidayPolicystring: next_business_day, previous_business_day, skipSim—
bodyintervalnumberSimIntervalo em dias, semanas ou meses; âncora na data UTC de criação da rota.; mínimo: 1; máximo: 365
bodynamestringSimcomprimento mínimo: 1; comprimento máximo: 160
bodyperiodstringSimcomprimento mínimo: 1; comprimento máximo: 80
bodyresponsibleNucleusSiglastringSimcomprimento mínimo: 1; comprimento máximo: 40
bodyresponsibleUserIdsarray de string (uuid)Simmínimo de itens: 1; itens únicos: True
bodytransportstringSimcomprimento mínimo: 1; comprimento máximo: 160
bodyweekOfMonthnumberNãomínimo: 1; máximo: 5
bodyweekdaysarray de numberNãoitens únicos: True

Saída

HTTPCampoTipoDescrição
201respostaobjectPresente; —
201resposta.createdAtstring (date-time)Presente; —
201resposta.frequencystring: daily, weekly, monthlyPresente; —
201resposta.holidayPolicystring: next_business_day, previous_business_day, skipPresente; —
201resposta.idstringPresente; —
201resposta.intervalnumberPresente; —
201resposta.namestringPresente; —
201resposta.periodstringPresente; —
201resposta.responsibleNucleusSiglastringPresente; —
201resposta.responsibleUserIdsarray de stringPresente; —
201resposta.transportstringPresente; —
201resposta.updatedAtstring (date-time)Presente; —
201resposta.weekOfMonthnumber; aceita nullPresente; —
201resposta.weekdaysarray de numberPresente; —

Erros

HTTPerrorCodeCondição
400VALIDATION_FAILEDEntrada ou cursor inválido
401UNAUTHORIZEDSem credencial válida
403FORBIDDENOperação não permitida para o perfil ou responsável
404NOT_FOUNDRecurso inexistente ou fora do alcance
409CONFLICTConcorrência ou estado incompatível
422RULE_VIOLATIONReferência ou regra inválida
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

GET /v1/service-routes/{id}

Consulta a configuração da Rota.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; alcance institucional ou do núcleo responsável.

Entrada

LocalCampoTipoObrigatórioCondição
pathidstringSim—

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.createdAtstring (date-time)Presente; —
200resposta.frequencystring: daily, weekly, monthlyPresente; —
200resposta.holidayPolicystring: next_business_day, previous_business_day, skipPresente; —
200resposta.idstringPresente; —
200resposta.intervalnumberPresente; —
200resposta.namestringPresente; —
200resposta.periodstringPresente; —
200resposta.responsibleNucleusSiglastringPresente; —
200resposta.responsibleUserIdsarray de stringPresente; —
200resposta.transportstringPresente; —
200resposta.updatedAtstring (date-time)Presente; —
200resposta.weekOfMonthnumber; aceita nullPresente; —
200resposta.weekdaysarray de numberPresente; —

Erros

HTTPerrorCodeCondição
400VALIDATION_FAILEDEntrada ou cursor inválido
401UNAUTHORIZEDSem credencial válida
403FORBIDDENOperação não permitida para o perfil ou responsável
404NOT_FOUNDRecurso inexistente ou fora do alcance
409CONFLICTConcorrência ou estado incompatível
422RULE_VIOLATIONReferência ou regra inválida
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

PATCH /v1/service-routes/{id}

Atualiza a configuração da Rota.

Autenticação e autorização: Bearer; perfil mínimo acesso-de-nucleo e liderança do núcleo responsável.

Entrada

LocalCampoTipoObrigatórioCondição
pathidstringSim—
bodyfrequencystring: daily, weekly, monthlyNão—
bodyholidayPolicystring: next_business_day, previous_business_day, skipNão—
bodyintervalnumberNãoIntervalo em dias, semanas ou meses; âncora na data UTC de criação da rota.; mínimo: 1; máximo: 365
bodynamestringNãocomprimento mínimo: 1; comprimento máximo: 160
bodyperiodstringNãocomprimento mínimo: 1; comprimento máximo: 80
bodyresponsibleNucleusSiglastringNãocomprimento mínimo: 1; comprimento máximo: 40
bodyresponsibleUserIdsarray de string (uuid)Nãomínimo de itens: 1; itens únicos: True
bodytransportstringNãocomprimento mínimo: 1; comprimento máximo: 160
bodyweekOfMonthnumberNãomínimo: 1; máximo: 5
bodyweekdaysarray de numberNãoitens únicos: True

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.createdAtstring (date-time)Presente; —
200resposta.frequencystring: daily, weekly, monthlyPresente; —
200resposta.holidayPolicystring: next_business_day, previous_business_day, skipPresente; —
200resposta.idstringPresente; —
200resposta.intervalnumberPresente; —
200resposta.namestringPresente; —
200resposta.periodstringPresente; —
200resposta.responsibleNucleusSiglastringPresente; —
200resposta.responsibleUserIdsarray de stringPresente; —
200resposta.transportstringPresente; —
200resposta.updatedAtstring (date-time)Presente; —
200resposta.weekOfMonthnumber; aceita nullPresente; —
200resposta.weekdaysarray de numberPresente; —

Erros

HTTPerrorCodeCondição
400VALIDATION_FAILEDEntrada ou cursor inválido
401UNAUTHORIZEDSem credencial válida
403FORBIDDENOperação não permitida para o perfil ou responsável
404NOT_FOUNDRecurso inexistente ou fora do alcance
409CONFLICTConcorrência ou estado incompatível
422RULE_VIOLATIONReferência ou regra inválida
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

GET /v1/service-routes/{id}/occurrences

Lista as Ocorrências da Rota.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; alcance institucional ou do núcleo responsável.

Entrada

LocalCampoTipoObrigatórioCondição
pathidstringSim—
querycursorstringNãoCursor opaco devolvido em nextCursor da página anterior.
querylimitnumberSimTamanho da página.

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.nextCursorstring; aceita nullPresente; Cursor opaco da próxima página; null quando não há mais itens.
200resposta.itemsarray de objectPresente; —
200resposta.items[]objectPresente; —
200resposta.items[].createdAtstring (date-time)Presente; —
200resposta.items[].effectiveDatestring; aceita nullPresente; —
200resposta.items[].endedAtstring (date-time); aceita nullPresente; —
200resposta.items[].idstringPresente; —
200resposta.items[].requestedDatestringPresente; —
200resposta.items[].routeIdstringPresente; —
200resposta.items[].startedAtstring (date-time); aceita nullPresente; —
200resposta.items[].statusstring: planned, in_progress, completed, cancelled, skippedPresente; —
200resposta.items[].updatedAtstring (date-time)Presente; —
200resposta.items[].versionnumberPresente; —

Erros

HTTPerrorCodeCondição
400VALIDATION_FAILEDEntrada ou cursor inválido
401UNAUTHORIZEDSem credencial válida
403FORBIDDENOperação não permitida para o perfil ou responsável
404NOT_FOUNDRecurso inexistente ou fora do alcance
409CONFLICTConcorrência ou estado incompatível
422RULE_VIOLATIONReferência ou regra inválida
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

POST /v1/service-routes/{id}/occurrences

Gera uma Ocorrência para a data solicitada conforme recorrência e calendário.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; alcance institucional ou do núcleo responsável. Executor restrito deve constar nos responsáveis da Rota.

Entrada

LocalCampoTipoObrigatórioCondição
pathidstringSim—
bodyrequestedDatestringSim—

Saída

HTTPCampoTipoDescrição
201respostaobjectPresente; —
201resposta.createdAtstring (date-time)Presente; —
201resposta.effectiveDatestring; aceita nullPresente; —
201resposta.endedAtstring (date-time); aceita nullPresente; —
201resposta.idstringPresente; —
201resposta.requestedDatestringPresente; —
201resposta.routeIdstringPresente; —
201resposta.startedAtstring (date-time); aceita nullPresente; —
201resposta.statusstring: planned, in_progress, completed, cancelled, skippedPresente; —
201resposta.updatedAtstring (date-time)Presente; —
201resposta.versionnumberPresente; —

Erros

HTTPerrorCodeCondição
400VALIDATION_FAILEDEntrada ou cursor inválido
401UNAUTHORIZEDSem credencial válida
403FORBIDDENOperação não permitida para o perfil ou responsável
404NOT_FOUNDRecurso inexistente ou fora do alcance
409CONFLICTConcorrência ou estado incompatível
422RULE_VIOLATIONReferência ou regra inválida
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

GET /v1/service-routes/{id}/occurrences/{occurrenceId}/stops

Lista as Paradas da Ocorrência.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; alcance institucional ou do núcleo responsável.

Entrada

LocalCampoTipoObrigatórioCondição
pathidstringSim—
pathoccurrenceIdstringSim—
querycursorstringNãoCursor opaco devolvido em nextCursor da página anterior.
querylimitnumberSimTamanho da página.

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.nextCursorstring; aceita nullPresente; Cursor opaco da próxima página; null quando não há mais itens.
200resposta.itemsarray de objectPresente; —
200resposta.items[]objectPresente; —
200resposta.items[].arrivedAtstring (date-time); aceita nullPresente; —
200resposta.items[].createdAtstring (date-time)Presente; —
200resposta.items[].idstringPresente; —
200resposta.items[].leftAtstring (date-time); aceita nullPresente; —
200resposta.items[].locationstringPresente; —
200resposta.items[].occurrenceIdstringPresente; —
200resposta.items[].plannedArrivalAtstring (date-time); aceita nullPresente; —
200resposta.items[].positionnumberPresente; —
200resposta.items[].updatedAtstring (date-time)Presente; —

Erros

HTTPerrorCodeCondição
400VALIDATION_FAILEDEntrada ou cursor inválido
401UNAUTHORIZEDSem credencial válida
403FORBIDDENOperação não permitida para o perfil ou responsável
404NOT_FOUNDRecurso inexistente ou fora do alcance
409CONFLICTConcorrência ou estado incompatível
422RULE_VIOLATIONReferência ou regra inválida
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

POST /v1/service-routes/{id}/occurrences/{occurrenceId}/stops

Cria uma Parada em uma posição da Ocorrência.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; alcance institucional ou do núcleo responsável. Executor restrito deve constar nos responsáveis da Rota.

Entrada

LocalCampoTipoObrigatórioCondição
pathidstringSim—
pathoccurrenceIdstringSim—
bodylocationstringSimcomprimento mínimo: 1; comprimento máximo: 2000
bodyplannedArrivalAtstringNão—
bodypositionnumberSimmínimo: 1

Saída

HTTPCampoTipoDescrição
201respostaobjectPresente; —
201resposta.arrivedAtstring (date-time); aceita nullPresente; —
201resposta.createdAtstring (date-time)Presente; —
201resposta.idstringPresente; —
201resposta.leftAtstring (date-time); aceita nullPresente; —
201resposta.locationstringPresente; —
201resposta.occurrenceIdstringPresente; —
201resposta.plannedArrivalAtstring (date-time); aceita nullPresente; —
201resposta.positionnumberPresente; —
201resposta.updatedAtstring (date-time)Presente; —

Erros

HTTPerrorCodeCondição
400VALIDATION_FAILEDEntrada ou cursor inválido
401UNAUTHORIZEDSem credencial válida
403FORBIDDENOperação não permitida para o perfil ou responsável
404NOT_FOUNDRecurso inexistente ou fora do alcance
409CONFLICTConcorrência ou estado incompatível
422RULE_VIOLATIONReferência ou regra inválida
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

POST /v1/service-routes/{id}/occurrences/{occurrenceId}/stops/{stopId}/arrive

Registra a chegada à Parada durante a execução da Ocorrência.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; alcance institucional ou do núcleo responsável. Executor restrito deve constar nos responsáveis da Rota.

Entrada

LocalCampoTipoObrigatórioCondição
pathidstringSim—
pathoccurrenceIdstringSim—
pathstopIdstringSim—

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.arrivedAtstring (date-time); aceita nullPresente; —
200resposta.createdAtstring (date-time)Presente; —
200resposta.idstringPresente; —
200resposta.leftAtstring (date-time); aceita nullPresente; —
200resposta.locationstringPresente; —
200resposta.occurrenceIdstringPresente; —
200resposta.plannedArrivalAtstring (date-time); aceita nullPresente; —
200resposta.positionnumberPresente; —
200resposta.updatedAtstring (date-time)Presente; —

Erros

HTTPerrorCodeCondição
400VALIDATION_FAILEDEntrada ou cursor inválido
401UNAUTHORIZEDSem credencial válida
403FORBIDDENOperação não permitida para o perfil ou responsável
404NOT_FOUNDRecurso inexistente ou fora do alcance
409CONFLICTConcorrência ou estado incompatível
422RULE_VIOLATIONReferência ou regra inválida
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

POST /v1/service-routes/{id}/occurrences/{occurrenceId}/stops/{stopId}/depart

Registra a saída da Parada após a chegada.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; alcance institucional ou do núcleo responsável. Executor restrito deve constar nos responsáveis da Rota.

Entrada

LocalCampoTipoObrigatórioCondição
pathidstringSim—
pathoccurrenceIdstringSim—
pathstopIdstringSim—

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.arrivedAtstring (date-time); aceita nullPresente; —
200resposta.createdAtstring (date-time)Presente; —
200resposta.idstringPresente; —
200resposta.leftAtstring (date-time); aceita nullPresente; —
200resposta.locationstringPresente; —
200resposta.occurrenceIdstringPresente; —
200resposta.plannedArrivalAtstring (date-time); aceita nullPresente; —
200resposta.positionnumberPresente; —
200resposta.updatedAtstring (date-time)Presente; —

Erros

HTTPerrorCodeCondição
400VALIDATION_FAILEDEntrada ou cursor inválido
401UNAUTHORIZEDSem credencial válida
403FORBIDDENOperação não permitida para o perfil ou responsável
404NOT_FOUNDRecurso inexistente ou fora do alcance
409CONFLICTConcorrência ou estado incompatível
422RULE_VIOLATIONReferência ou regra inválida
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

GET /v1/service-routes/{id}/occurrences/{occurrenceId}/stops/{stopId}/service-records

Lista os Registros de Atendimento vinculados à Parada.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; alcance institucional ou do núcleo responsável.

Entrada

LocalCampoTipoObrigatórioCondição
pathidstringSim—
pathoccurrenceIdstringSim—
pathstopIdstringSim—
querycursorstringNãoCursor opaco devolvido em nextCursor da página anterior.
querylimitnumberSimTamanho da página.

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.nextCursorstring; aceita nullPresente; Cursor opaco da próxima página; null quando não há mais itens.
200resposta.itemsarray de objectPresente; —
200resposta.items[]objectPresente; —
200resposta.items[].appointmentIdobject; aceita nullOpcional; —
200resposta.items[].availableActionsarray de stringPresente; Operações elegíveis da sessão; cada comando revalida autorização e versão.
200resposta.items[].closedAtobject; aceita nullOpcional; —
200resposta.items[].createdAtstring (date-time)Presente; —
200resposta.items[].directionstring: INBOUND, OUTBOUNDPresente; —
200resposta.items[].idstringPresente; —
200resposta.items[].isAppointmentbooleanPresente; Verdadeiro quando o registro nasceu agendado; a origem é AGENDAMENTO.
200resposta.items[].modestring: REMOTO, PRESENCIALPresente; —
200resposta.items[].onsiteobjectOpcional; —
200resposta.items[].onsite.arrivedAtobject; aceita nullOpcional; —
200resposta.items[].onsite.locationstringPresente; —
200resposta.items[].onsite.locationUnitIdobject; aceita nullOpcional; —
200resposta.items[].onsite.routeStopIdobject; aceita nullOpcional; —
200resposta.items[].originstring: ESPONTANEO, AGENDAMENTO, ROTA, AUTOMACAOPresente; —
200resposta.items[].participantsarray de objectPresente; —
200resposta.items[].participants[]objectPresente; —
200resposta.items[].participants[].userIdstringPresente; —
200resposta.items[].personIdobject; aceita nullOpcional; —
200resposta.items[].remoteobjectOpcional; —
200resposta.items[].remote.channelstring: WHATSAPP, TELEFONE, VIDEOCONFERENCIA, EMAIL, REDE_SOCIALPresente; —
200resposta.items[].remote.channelAccountIdobject; aceita nullOpcional; —
200resposta.items[].remote.externalConversationIdobject; aceita nullOpcional; —
200resposta.items[].responsibleNucleusSiglastringPresente; —
200resposta.items[].startedAtobject; aceita nullOpcional; —
200resposta.items[].statusstring: AGENDADO, EM_ESPERA, EM_ATENDIMENTO, EM_REVISAO, ENCERRADO, CANCELADOPresente; —
200resposta.items[].subjectsarray de objectPresente; —
200resposta.items[].subjects[]objectPresente; —
200resposta.items[].subjects[].caseIdobject; aceita nullOpcional; —
200resposta.items[].subjects[].conclusionobject; aceita nullOpcional; Conclusão do Assunto; null enquanto não registrada.
200resposta.items[].subjects[].conclusion.authorUserIdobject; aceita nullOpcional; —
200resposta.items[].subjects[].conclusion.createdAtstring (date-time)Presente; —
200resposta.items[].subjects[].conclusion.idstringPresente; —
200resposta.items[].subjects[].conclusion.notestringPresente; —
200resposta.items[].subjects[].conclusion.typestring: PROVIDENCIAS, SEM_INTERCORRENCIAPresente; —
200resposta.items[].subjects[].conclusion.updatedAtstring (date-time)Presente; —
200resposta.items[].subjects[].consultationIdobject; aceita nullOpcional; —
200resposta.items[].subjects[].feeContractIdobject; aceita nullOpcional; —
200resposta.items[].subjects[].idstringPresente; —
200resposta.items[].subjects[].originConsultationIdobject; aceita nullOpcional; —
200resposta.items[].subjects[].purposestring: AVULSO, ENTREVISTA_INAUGURAL, ACOMPANHAMENTO, SOLICITACAO, ORIENTACAO, FINANCEIROPresente; —
200resposta.items[].unitIdstringPresente; —
200resposta.items[].updatedAtstring (date-time)Presente; —
200resposta.items[].versionnumberPresente; —

Erros

HTTPerrorCodeCondição
400VALIDATION_FAILEDEntrada ou cursor inválido
401UNAUTHORIZEDSem credencial válida
403FORBIDDENOperação não permitida para o perfil ou responsável
404NOT_FOUNDRecurso inexistente ou fora do alcance
409CONFLICTConcorrência ou estado incompatível
422RULE_VIOLATIONReferência ou regra inválida
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

POST /v1/service-routes/{id}/occurrences/{occurrenceId}/stops/{stopId}/service-records

Vincula um Registro presencial gravável à Parada.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; alcance institucional ou do núcleo responsável. Executor restrito deve constar nos responsáveis da Rota.

Entrada

LocalCampoTipoObrigatórioCondição
pathidstringSim—
pathoccurrenceIdstringSim—
pathstopIdstringSim—
bodyserviceRecordIdstring (uuid)Sim—

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.appointmentIdobject; aceita nullOpcional; —
200resposta.availableActionsarray de stringPresente; Operações elegíveis da sessão; cada comando revalida autorização e versão.
200resposta.closedAtobject; aceita nullOpcional; —
200resposta.createdAtstring (date-time)Presente; —
200resposta.directionstring: INBOUND, OUTBOUNDPresente; —
200resposta.idstringPresente; —
200resposta.isAppointmentbooleanPresente; Verdadeiro quando o registro nasceu agendado; a origem é AGENDAMENTO.
200resposta.modestring: REMOTO, PRESENCIALPresente; —
200resposta.onsiteobjectOpcional; —
200resposta.onsite.arrivedAtobject; aceita nullOpcional; —
200resposta.onsite.locationstringPresente; —
200resposta.onsite.locationUnitIdobject; aceita nullOpcional; —
200resposta.onsite.routeStopIdobject; aceita nullOpcional; —
200resposta.originstring: ESPONTANEO, AGENDAMENTO, ROTA, AUTOMACAOPresente; —
200resposta.participantsarray de objectPresente; —
200resposta.participants[]objectPresente; —
200resposta.participants[].userIdstringPresente; —
200resposta.personIdobject; aceita nullOpcional; —
200resposta.remoteobjectOpcional; —
200resposta.remote.channelstring: WHATSAPP, TELEFONE, VIDEOCONFERENCIA, EMAIL, REDE_SOCIALPresente; —
200resposta.remote.channelAccountIdobject; aceita nullOpcional; —
200resposta.remote.externalConversationIdobject; aceita nullOpcional; —
200resposta.responsibleNucleusSiglastringPresente; —
200resposta.startedAtobject; aceita nullOpcional; —
200resposta.statusstring: AGENDADO, EM_ESPERA, EM_ATENDIMENTO, EM_REVISAO, ENCERRADO, CANCELADOPresente; —
200resposta.subjectsarray de objectPresente; —
200resposta.subjects[]objectPresente; —
200resposta.subjects[].caseIdobject; aceita nullOpcional; —
200resposta.subjects[].conclusionobject; aceita nullOpcional; Conclusão do Assunto; null enquanto não registrada.
200resposta.subjects[].conclusion.authorUserIdobject; aceita nullOpcional; —
200resposta.subjects[].conclusion.createdAtstring (date-time)Presente; —
200resposta.subjects[].conclusion.idstringPresente; —
200resposta.subjects[].conclusion.notestringPresente; —
200resposta.subjects[].conclusion.typestring: PROVIDENCIAS, SEM_INTERCORRENCIAPresente; —
200resposta.subjects[].conclusion.updatedAtstring (date-time)Presente; —
200resposta.subjects[].consultationIdobject; aceita nullOpcional; —
200resposta.subjects[].feeContractIdobject; aceita nullOpcional; —
200resposta.subjects[].idstringPresente; —
200resposta.subjects[].originConsultationIdobject; aceita nullOpcional; —
200resposta.subjects[].purposestring: AVULSO, ENTREVISTA_INAUGURAL, ACOMPANHAMENTO, SOLICITACAO, ORIENTACAO, FINANCEIROPresente; —
200resposta.unitIdstringPresente; —
200resposta.updatedAtstring (date-time)Presente; —
200resposta.versionnumberPresente; —

Erros

HTTPerrorCodeCondição
400VALIDATION_FAILEDEntrada ou cursor inválido
401UNAUTHORIZEDSem credencial válida
403FORBIDDENOperação não permitida para o perfil ou responsável
404NOT_FOUNDRecurso inexistente ou fora do alcance
409CONFLICTConcorrência ou estado incompatível
422RULE_VIOLATIONReferência ou regra inválida
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

POST /v1/service-routes/{id}/occurrences/{occurrenceId}/transition

Inicia, conclui ou cancela a Ocorrência com controle de versão.

Autenticação e autorização: Bearer; perfil mínimo operacional-restrito; alcance institucional ou do núcleo responsável. Executor restrito deve constar nos responsáveis da Rota.

Entrada

LocalCampoTipoObrigatórioCondição
pathidstringSim—
pathoccurrenceIdstringSim—
bodyexpectedVersionnumberSimmínimo: 1
bodystatusstring: planned, in_progress, completed, cancelled, skippedSim—

Saída

HTTPCampoTipoDescrição
200respostaobjectPresente; —
200resposta.createdAtstring (date-time)Presente; —
200resposta.effectiveDatestring; aceita nullPresente; —
200resposta.endedAtstring (date-time); aceita nullPresente; —
200resposta.idstringPresente; —
200resposta.requestedDatestringPresente; —
200resposta.routeIdstringPresente; —
200resposta.startedAtstring (date-time); aceita nullPresente; —
200resposta.statusstring: planned, in_progress, completed, cancelled, skippedPresente; —
200resposta.updatedAtstring (date-time)Presente; —
200resposta.versionnumberPresente; —

Erros

HTTPerrorCodeCondição
400VALIDATION_FAILEDEntrada ou cursor inválido
401UNAUTHORIZEDSem credencial válida
403FORBIDDENOperação não permitida para o perfil ou responsável
404NOT_FOUNDRecurso inexistente ou fora do alcance
409CONFLICTConcorrência ou estado incompatível
422RULE_VIOLATIONReferência ou regra inválida
500INTERNALfalha não tratada (banco, adaptador ou bug): errorCode INTERNAL

Camadas do domínio