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/loginAuthorization: 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: