Referência da API do Monitor
URL Base: https://monitor.mangati.com
Todos os endpoints estão sob /api. Requer um Token de Acesso gerado em Admin → Tokens de Acesso.
Authorization: Bearer <token_de_acesso>Senhas (Tickets)
As senhas são criadas pela integração de webhook do NovoSGA. Você também pode enviar senhas diretamente via API para integrações customizadas.
Obter Senha
http
GET /api/tickets/{id}
Authorization: Bearer <token_de_acesso>Exemplo:
bash
curl https://monitor.mangati.com/api/tickets/018e4f30-7b3c-7000-8d2e-111111111111 \
-H "Authorization: Bearer TOKEN" \
-H "Accept: application/json"Resposta:
json
{
"id": "018e4f30-7b3c-7000-8d2e-111111111111",
"remoteId": "456",
"status": "finished",
"number": "A001",
"dayPeriod": "morning",
"arrivalTime": "2024-06-15T09:00:00+00:00",
"firstReplyTime": "2024-06-15T09:12:00+00:00",
"startTime": "2024-06-15T09:14:00+00:00",
"endTime": "2024-06-15T09:28:00+00:00",
"waitTime": 720,
"travelTime": 120,
"serviceTime": 840,
"totalTime": 1680,
"customer": {
"name": "João Silva",
"document": "123.456.789-00"
},
"attendant": {
"name": "Maria Atendente",
"remoteId": "12"
},
"location": {
"name": "Guichê 3",
"remoteId": "2"
},
"service": {
"name": "Documentação",
"remoteId": "3"
},
"priority": {
"name": "Normal",
"remoteId": "1"
}
}Enviar Senha (Integração Push)
http
POST /api/tickets
Authorization: Bearer <token_de_acesso>
Content-Type: application/jsonUse este endpoint para enviar dados de senha de um sistema de filas customizado (que não seja o NovoSGA).
Corpo da requisição:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
remoteId | string | Sim | ID no sistema de origem |
status | string | Sim | waiting, called, in_service, finished, canceled |
number | string | Sim | Número de exibição da senha (ex.: A001) |
dayPeriod | string | Não | morning, afternoon, evening |
arrivalTime | datetime | Sim | Timestamp ISO 8601 |
firstReplyTime | datetime | Não | Quando a senha foi chamada |
startTime | datetime | Não | Quando o atendimento iniciou |
endTime | datetime | Não | Quando o atendimento encerrou |
waitTime | inteiro | Não | Tempo de espera em segundos |
travelTime | inteiro | Não | Tempo de deslocamento em segundos |
serviceTime | inteiro | Não | Tempo de atendimento em segundos |
totalTime | inteiro | Não | Tempo total em segundos |
customer | objeto | Não | Dados do cliente (name, document) |
attendant | objeto | Não | Dados do atendente (name, remoteId) |
location | objeto | Não | Dados da localização (name, remoteId) |
service | objeto | Não | Dados do serviço (name, remoteId) |
priority | objeto | Não | Dados da prioridade (name, remoteId) |
Exemplo:
bash
curl -X POST https://monitor.mangati.com/api/tickets \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{
"remoteId": "789",
"status": "finished",
"number": "B015",
"arrivalTime": "2024-06-15T14:30:00+00:00",
"firstReplyTime": "2024-06-15T14:45:00+00:00",
"startTime": "2024-06-15T14:47:00+00:00",
"endTime": "2024-06-15T15:05:00+00:00",
"waitTime": 900,
"travelTime": 120,
"serviceTime": 1080,
"totalTime": 2100,
"service": { "name": "Atendimento Geral", "remoteId": "5" },
"location": { "name": "Guichê 2", "remoteId": "3" },
"attendant": { "name": "Carlos Silva", "remoteId": "7" }
}'Resposta (201): Objeto da senha criada.
Alertas
Listar Alertas
http
GET /api/alerts
Authorization: Bearer <token_de_acesso>Resposta:
json
{
"member": [
{
"id": "018e4f40-...",
"name": "Tempo de espera alto",
"type": "wait_time",
"threshold": 900,
"active": true,
"lastTriggeredAt": "2024-06-15T10:30:00+00:00"
}
]
}Criar Alerta
http
POST /api/alerts
Authorization: Bearer <token_de_acesso>
Content-Type: application/jsonCorpo da requisição:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Nome do alerta |
type | string | Sim | wait_time, queue_length, sla |
threshold | inteiro | Sim | Valor limite (segundos ou quantidade) |
service | UUID | Não | Restringir a serviço específico |
location | UUID | Não | Restringir a localização específica |
Exemplo em PHP - Processador de Webhook do NovoSGA
php
// Em seu handler de webhook (recebe POST do NovoSGA)
public function handleNovosgaEvent(Request $request): Response
{
$event = json_decode($request->getContent(), true);
$ticket = $event['atendimento'];
$monitorClient->post('/api/tickets', [
'json' => [
'remoteId' => (string) $ticket['id'],
'status' => $this->mapStatus($ticket['status']),
'number' => $ticket['senha']['numero'],
'arrivalTime' => $ticket['dataChegada'],
'firstReplyTime' => $ticket['dataChamada'],
'startTime' => $ticket['dataInicio'],
'endTime' => $ticket['dataFim'],
'waitTime' => $ticket['tempoEspera'],
'serviceTime' => $ticket['tempoAtendimento'],
'totalTime' => $ticket['tempoTotal'],
'service' => [
'name' => $ticket['servico']['nome'],
'remoteId' => (string) $ticket['servico']['id'],
],
'location' => [
'name' => $ticket['local']['nome'],
'remoteId' => (string) $ticket['local']['id'],
],
'attendant' => [
'name' => $ticket['usuario']['login'],
'remoteId' => (string) $ticket['usuario']['id'],
],
],
]);
return new Response('', 204);
}