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 RTsearch: Busca por títulopage,limit: PaginaçãosortBy,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 clientetecnicoId: Filtrar por técnicoformularioModeloId: Filtrar por modelostatus: 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