Documentação completa para desenvolvedores
Versão: 1.0.0
Base URL Produção: https://ramon.tech/apis/atendimento
A API utiliza autenticação JWT (JSON Web Token). A maioria dos endpoints requer autenticação.
/auth/login
Authorization: Bearer SEU_TOKEN_JWT
⚠️ Importante: O token expira após 6 horas. Use o endpoint de refresh para renovar.
/auth/login
Realizar login no sistema
{ "email": "joao.silva@secretaria.gov.br", "senha": "12345678" }
{ "status": "success", "message": "Autenticado com sucesso", "data": { "token": "eyJ0eXAiOiJKV1QiLCJhbGc...", "funcionario": { "id": 1, "nome": "João Silva", "email": "joao.silva@secretaria.gov.br", "setor": { "id": 1, "sigla": "DA", "nome": "Dívida Ativa" } }, "expires_at": 1706745600 } }
/auth/logout
Realizar logout (invalida o token)
Authorization: Bearer SEU_TOKEN_JWT
{ "status": "success", "message": "Logout realizado com sucesso" }
/auth/me
Obter dados do funcionário autenticado
{ "status": "success", "data": { "funcionario": { "id": 1, "nome": "João Silva", "email": "joao.silva@secretaria.gov.br", "ativo": true, "ultimo_login": "2024-01-25T10:30:00.000Z", "criado_em": "2024-01-01T00:00:00.000Z" }, "setor": { "id": 1, "sigla": "DA", "nome": "Dívida Ativa", "descricao": "Gerencia as dívidas referente à IPTU...", "estatisticas": { "total_funcionarios": 5, "funcionarios_ativos": 4, "senhas_em_espera": 12, "senhas_em_atendimento": 3, "senhas_atendidas_hoje": 45 } }, "estatisticas_hoje": { "total_atendimentos": 8, "atendimentos_finalizados": 6, "atendimentos_em_andamento": 2, "tempo_medio_atendimento": 15.5 }, "atendimento_atual": null } }
/auth/refresh
Renovar token JWT
{ "status": "success", "message": "Token renovado com sucesso", "data": { "token": "eyJ0eXAiOiJKV1QiLCJhbGc...", "funcionario": { "id": 1, "nome": "João Silva", "email": "joao.silva@secretaria.gov.br", "setor": { "id": 1, "sigla": "DA", "nome": "Dívida Ativa" } }, "expires_at": "2024-01-25T22:00:00.000Z" } }
/setores
Listar todos os setores ativos
{ "status": "success", "data": [ { "id": 1, "sigla": "DA", "nome": "Dívida Ativa", "descricao": "Gerencia as dívidas referente à IPTU..." }, { "id": 2, "sigla": "JU", "nome": "Jurídico", "descricao": "Analisa solicitações dos contribuintes..." } ] }
/setores/{id}
Buscar setor específico por ID
{ "status": "success", "data": { "id": 1, "sigla": "DA", "nome": "Dívida Ativa", "descricao": "Gerencia as dívidas referente à IPTU...", "funcionarios_ativos": 4, "senhas_em_espera": 12 } }
/setores
Criar novo setor
{ "sigla": "TI", "nome": "Tecnologia da Informação", "descricao": "Suporte técnico e desenvolvimento", "ativo": true }
{ "status": "success", "message": "Setor criado com sucesso", "data": { "setor": { "id": 10, "sigla": "TI", "nome": "Tecnologia da Informação", "descricao": "Suporte técnico e desenvolvimento", "ativo": true, "criado_em": "2024-01-25T14:30:00.000Z" } } }
/setores/{id}
Atualizar dados do setor
{ "nome": "Tecnologia da Informação e Inovação", "descricao": "Suporte técnico, desenvolvimento e inovação", "ativo": true }
/setores/{id}
Remover setor (soft delete)
⚠️ Atenção: Setor não pode ter funcionários vinculados ou senhas em andamento.
/funcionarios
Listar funcionários com paginação e filtros
GET /funcionarios?pagina=1&limite=10&setor_id=1&ativo=true
{ "status": "success", "data": { "funcionarios": [ { "id": 1, "nome": "João Silva", "email": "joao.silva@secretaria.gov.br", "ativo": true, "setor": { "id": 1, "sigla": "DA", "nome": "Dívida Ativa" }, "criado_em": "2024-01-01T00:00:00.000Z", "atualizado_em": "2024-01-25T10:30:00.000Z" } ], "paginacao": { "pagina_atual": 1, "total_paginas": 3, "por_pagina": 10, "total_registros": 25, "de": 1, "ate": 10 } } }
/funcionarios
Criar novo funcionário
{ "nome": "Maria Oliveira", "email": "maria.oliveira@secretaria.gov.br", "senha": "senha123", "setor_id": 2, "ativo": true }
/funcionarios/alterar-senha
Funcionário altera sua própria senha
{ "senha_atual": "senha123", "senha_nova": "novaSenha456", "confirmar_senha": "novaSenha456" }
/funcionarios/verificar-email
Verificar se email está disponível
{ "email": "novo.email@secretaria.gov.br", "excluir_id": 5 // Opcional: ID do funcionário a excluir da verificação (útil em updates) }
{ "status": "success", "data": { "email": "novo.email@secretaria.gov.br", "disponivel": true, "mensagem": "Email disponível" } }
/senhas
Listar senhas com filtros e paginação
/senhas
Criar nova senha de atendimento
{ "setor_id": 1, "contribuinte_nome": "José da Silva", "prioridade": "normal", // normal, alta, urgente "observacoes": "Contribuinte com dificuldade de locomoção" }
{ "status": "success", "message": "Senha criada com sucesso", "data": { "senha": { "id": 123, "numero": "DA001", "contribuinte_nome": "José da Silva", "prioridade": "normal", "status": "em_espera", "setor": { "id": 1, "sigla": "DA", "nome": "Dívida Ativa" }, "posicao_fila": 5, "criado_em": "2024-01-25T14:30:00.000Z" } } }
/senhas/{id}/iniciar-atendimento
Iniciar atendimento de uma senha
ℹ️ Nota: Funcionário não pode ter mais de um atendimento em andamento.
{ "status": "success", "message": "Atendimento iniciado com sucesso", "data": { "atendimento": { "id": 456, "senha": { "id": 123, "numero": "DA001", "contribuinte_nome": "José da Silva", "prioridade": "normal" }, "inicio": "2024-01-25T14:35:00.000Z" } } }
/senhas/{id}/finalizar-atendimento
Finalizar atendimento em andamento
{ "observacoes": "Atendimento realizado com sucesso", "avaliacao": 5 // Opcional: 1 a 5 }
{ "status": "success", "message": "Atendimento finalizado com sucesso", "data": { "atendimento": { "id": 456, "duracao_minutos": 15, "avaliacao": 5 } } }
/senhas/{id}/cancelar
Cancelar atendimento (marcar como não atendido)
{ "motivo": "Contribuinte não compareceu" }
/senhas/{id}/encaminhar
Encaminhar senha para outro setor
{ "setor_destino_id": 2, "observacoes": "Necessita análise jurídica" }
{ "status": "success", "message": "Senha encaminhada com sucesso", "data": { "senha": { "id": 123, "numero": "DA001", "setor_atual": { "id": 2, "sigla": "JU", "nome": "Jurídico" }, "posicao_fila": 3 } } }
/senhas/proxima
Obter próxima senha da fila do setor do funcionário
{ "status": "success", "data": { "proxima_senha": { "id": 124, "numero": "DA002", "contribuinte_nome": "Maria Santos", "prioridade": "alta", "tempo_espera_minutos": 45, "observacoes": null } } }
/senhas/estatisticas
Obter estatísticas de senhas
/senhas/relatorio
Gerar relatório de senhas
⚠️ Limite: Intervalo máximo de 90 dias.
/senhas/publico/fila/{setor_id}
Visualizar fila de atendimento (para TVs/monitores)
{ "status": "success", "data": { "setor": { "id": 1, "sigla": "DA", "nome": "Dívida Ativa" }, "em_atendimento": [ { "numero": "DA015", "funcionario": "João Silva", "inicio": "14:25" } ], "fila": [ { "posicao": 1, "numero": "DA016", "prioridade": "urgente", "tempo_espera": "14:30" }, { "posicao": 2, "numero": "DA017", "prioridade": "normal", "tempo_espera": "14:35" } ], "total_espera": 8 } }
/senhas/publico/ultimas-chamadas
Últimas senhas chamadas (para painel)
{ "status": "success", "data": { "ultimas_chamadas": [ { "senha": "DA015", "setor": "DA", "guiche": "João Silva", "horario": "14:25:30" }, { "senha": "JU008", "setor": "JU", "guiche": "Maria Santos", "horario": "14:24:15" } ] } }
Código | Significado | Quando ocorre |
---|---|---|
200 | OK | Requisição bem-sucedida |
201 | Created | Recurso criado com sucesso |
401 | Unauthorized | Token inválido ou ausente |
403 | Forbidden | Sem permissão para acessar recurso |
404 | Not Found | Recurso não encontrado |
409 | Conflict | Conflito (ex: email duplicado) |
422 | Unprocessable Entity | Erro de validação |
500 | Internal Server Error | Erro interno do servidor |
Todos os erros seguem o mesmo formato:
{ "status": "error", "message": "Descrição do erro", "errors": [ "Detalhes específicos do erro" ] }
{ "status": "error", "errors": { "nome": "Nome deve ter pelo menos 3 caracteres", "email": "Email inválido", "senha": "Senha deve ter pelo menos 8 caracteres" } }
Login:
curl -X POST https://ramon.tech/apis/atendimento/auth/login \ -H "Content-Type: application/json" \ -d '{"email": "joao.silva@secretaria.gov.br", "senha": "12345678"}'
Requisição autenticada:
curl -X GET https://ramon.tech/apis/atendimento/funcionarios \ -H "Authorization: Bearer SEU_TOKEN_JWT"
// Login const login = async () => { const response = await fetch('https://ramon.tech/apis/atendimento/auth/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: 'joao.silva@secretaria.gov.br', senha: '12345678' }) }); const data = await response.json(); const token = data.data.token; // Salvar token para uso posterior localStorage.setItem('token', token); return token; }; // Fazer requisição autenticada const fetchFuncionarios = async () => { const token = localStorage.getItem('token'); const response = await fetch('https://ramon.tech/apis/atendimento/funcionarios', { headers: { 'Authorization': `Bearer ${token}` } }); const data = await response.json(); console.log(data); };
⚠️ Ambiente de Desenvolvimento: