Pular para o conteúdo principal

API - Formulários

Documentação da API de gerenciamento de formulários.

Autenticação

Todos os endpoints requerem autenticação JWT. Veja Autenticação.

Endpoints de Modelos

GET /formularios/modelos

Lista modelos de formulários.

Query Parameters:

  • responsavelTecnicoId: Filtrar por RT
  • search: Busca por título
  • page, limit: Paginação
  • sortBy, sortOrder: Ordenação

Response (200 OK):

{
"data": [
{
"id": "uuid",
"titulo": "Verificação de Conformidade",
"frequencia": "diario",
"horarios": ["08:00", "14:00"],
"status": "publicado",
"responsavelTecnico": {
"id": "uuid",
"nome": "Dr. João Silva"
}
}
],
"meta": { ... }
}

GET /formularios/modelos/:id

Busca um modelo específico com suas perguntas.

Response (200 OK):

{
"id": "uuid",
"titulo": "Verificação de Conformidade",
"perguntas": [
{
"id": "uuid",
"ordem": 1,
"titulo": "Pergunta exemplo",
"tipo": "multipla_escolha",
"obrigatorio": true,
"configuracaoTipo": {
"tipo": "multipla_escolha",
"opcoes": [
{
"id": 1,
"texto": "Sim",
"ehConformidade": true
}
]
}
}
]
}

POST /formularios/modelos

Cria um novo modelo de formulário.

Request Body:

{
"titulo": "Verificação de Conformidade",
"subtitulo": "Verificação diária",
"descricao": "Descrição do formulário",
"frequencia": "diario",
"horarios": ["08:00", "14:00", "20:00"],
"responsavelTecnicoId": "uuid"
}

Response (201 Created):

{
"id": "uuid",
"titulo": "Verificação de Conformidade",
...
}

PUT /formularios/modelos/:id

Atualiza um modelo.

PATCH /formularios/modelos/:id/publicar

Publica um modelo (muda status para PUBLICADO).

PATCH /formularios/modelos/:id/inativar

Inativa um modelo.

Endpoints de Perguntas

POST /formularios/perguntas

Cria uma nova pergunta.

Request Body:

{
"formularioModeloId": "uuid",
"ordem": 1,
"titulo": "Pergunta exemplo",
"tipo": "multipla_escolha",
"obrigatorio": true,
"justificarHabilitado": true,
"configuracaoTipo": {
"tipo": "multipla_escolha",
"opcoes": [
{
"id": 1,
"texto": "Sim",
"ehConformidade": true
},
{
"id": 2,
"texto": "Não",
"ehConformidade": false
}
]
}
}

PUT /formularios/perguntas/:id

Atualiza uma pergunta.

DELETE /formularios/perguntas/:id

Remove uma pergunta.

POST /formularios/perguntas/:id/copiar

Copia uma pergunta.

Endpoints de Instâncias

GET /formularios/instancias

Lista instâncias de formulários.

Query Parameters:

  • clienteId: Filtrar por cliente
  • tecnicoId: Filtrar por técnico
  • formularioModeloId: Filtrar por modelo
  • status: Filtrar por status (pendente, em_conformidade, etc)

GET /formularios/instancias/pendentes

Lista formulários pendentes do técnico logado.

Response (200 OK):

[
{
"id": "uuid",
"formularioModelo": {
"titulo": "Verificação de Conformidade"
},
"dataAgendada": "2024-01-15",
"horaAgendada": "08:00",
"status": "pendente"
}
]

GET /formularios/instancias/:id

Busca uma instância específica com respostas.

POST /formularios/instancias/:id/responder

Responde um formulário.

Request Body:

{
"respostas": [
{
"formularioPerguntaId": "uuid",
"resposta": "Sim",
"justificativasSelecionadas": [1],
"acoesCorretivasSelecionadas": [2]
}
]
}

Response (200 OK):

{
"id": "uuid",
"status": "em_conformidade",
"dataResposta": "2024-01-15T08:30:00Z"
}

Endpoints de Vinculação

POST /formularios/modelos/:id/clientes

Vincula um cliente a um modelo.

Request Body:

{
"clienteId": "uuid"
}

DELETE /formularios/modelos/:id/clientes/:clienteId

Desvincula um cliente de um modelo.

Monitoramento

GET /formularios/monitoramento/cliente/:clienteId

Retorna dados de monitoramento de um cliente.

Response (200 OK):

{
"cliente": {
"id": "uuid",
"nomeFantasia": "Empresa Exemplo"
},
"totalNaoConformidades": 2,
"justificativasPendentes": 1,
"status": "vermelho"
}

Permissões

  • ADMIN: Acesso total
  • RESPONSAVEL_TECNICO: Apenas seus formulários e clientes
  • CLIENT: Apenas seus formulários
  • TECNICO: Apenas formulários atribuídos

Próximos Endpoints