Skip to content

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/json

Use este endpoint para enviar dados de senha de um sistema de filas customizado (que não seja o NovoSGA).

Corpo da requisição:

CampoTipoObrigatórioDescrição
remoteIdstringSimID no sistema de origem
statusstringSimwaiting, called, in_service, finished, canceled
numberstringSimNúmero de exibição da senha (ex.: A001)
dayPeriodstringNãomorning, afternoon, evening
arrivalTimedatetimeSimTimestamp ISO 8601
firstReplyTimedatetimeNãoQuando a senha foi chamada
startTimedatetimeNãoQuando o atendimento iniciou
endTimedatetimeNãoQuando o atendimento encerrou
waitTimeinteiroNãoTempo de espera em segundos
travelTimeinteiroNãoTempo de deslocamento em segundos
serviceTimeinteiroNãoTempo de atendimento em segundos
totalTimeinteiroNãoTempo total em segundos
customerobjetoNãoDados do cliente (name, document)
attendantobjetoNãoDados do atendente (name, remoteId)
locationobjetoNãoDados da localização (name, remoteId)
serviceobjetoNãoDados do serviço (name, remoteId)
priorityobjetoNãoDados 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/json

Corpo da requisição:

CampoTipoObrigatórioDescrição
namestringSimNome do alerta
typestringSimwait_time, queue_length, sla
thresholdinteiroSimValor limite (segundos ou quantidade)
serviceUUIDNãoRestringir a serviço específico
locationUUIDNãoRestringir 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);
}

Documentação do Mangati Cloud Suite