Skip to content

Referência da API do Notificação

URL Base: https://notificacao.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>

Notificações

Enviar Notificação

http
POST /api/notifications
Authorization: Bearer <token_de_acesso>
Content-Type: application/json

Envia uma notificação via template configurado. A entrega é assíncrona - a requisição retorna imediatamente após o enfileiramento.

Corpo da requisição:

CampoTipoObrigatórioDescrição
templatestringSimNome do template (conforme configurado no Admin)
emailstringCondicionalE-mail do destinatário (obrigatório para canal e-mail)
phonestringCondicionalTelefone com código do país (obrigatório para SMS/WhatsApp)
variablesobjetoNãoValores das variáveis do template

Pelo menos um entre email ou phone deve ser informado, dependendo do canal do template.

Exemplo - notificação WhatsApp:

bash
curl -X POST https://notificacao.mangati.com/api/notifications \
  -H "Authorization: Bearer TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "template": "lembrete_agendamento",
    "phone": "+5511999999999",
    "variables": {
      "nome": "João Silva",
      "data": "20/06/2024",
      "hora": "10:00"
    }
  }'

Exemplo - notificação por e-mail:

bash
curl -X POST https://notificacao.mangati.com/api/notifications \
  -H "Authorization: Bearer TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "template": "link_avaliacao",
    "email": "joao@mangati.com",
    "phone": "+5511999999999",
    "variables": {
      "nome": "João Silva",
      "link": "https://avaliacao.mangati.com/evaluate/ABC123"
    }
  }'

Resposta (201):

json
{
  "id": "018e4f60-7b3c-7000-8d2e-111111111111",
  "template": "lembrete_agendamento",
  "phone": "+5511999999999",
  "email": null,
  "variables": {
    "nome": "João Silva",
    "data": "20/06/2024",
    "hora": "10:00"
  }
}

Erro (422) - validação:

json
{
  "title": "Um erro ocorreu",
  "detail": "template: Template não encontrado.",
  "violations": [
    {
      "propertyPath": "template",
      "message": "Template não encontrado."
    }
  ]
}

Erro (422) - créditos insuficientes:

json
{
  "title": "Um erro ocorreu",
  "detail": "Créditos insuficientes para enviar esta notificação."
}

Referência de Variáveis de Template

As variáveis em templates usam chaves duplas: .

Exemplo de conteúdo do template:

Olá {{nome}}! Sua senha é {{numero}}. Sua vez está chegando!

Chamada de API:

json
{
  "template": "chamada_fila",
  "phone": "+5511999999999",
  "variables": {
    "nome": "João",
    "numero": "A015"
  }
}

Cenários Comuns de Integração

Lembrete de Agendamento

Envie um lembrete 24 horas antes do agendamento:

php
$notificacaoClient->post('/api/notifications', [
    'headers' => ['Authorization' => 'Bearer ' . $token],
    'json'    => [
        'template'  => 'lembrete_agendamento',
        'phone'     => $agendamento->telefone,
        'email'     => $agendamento->email,
        'variables' => [
            'nome'        => $agendamento->nomeCliente,
            'data'        => $agendamento->data->format('d/m/Y'),
            'hora'        => $agendamento->hora->format('H:i'),
            'local'       => $agendamento->nomeLocal,
            'codigo'      => $agendamento->codigo,
        ],
    ],
]);

Envie o link de avaliação ao cidadão após o encerramento da senha no NovoSGA:

php
$notificacaoClient->post('/api/notifications', [
    'headers' => ['Authorization' => 'Bearer ' . $token],
    'json'    => [
        'template'  => 'link_avaliacao',
        'phone'     => $cliente->telefone,
        'variables' => [
            'nome' => $cliente->nome,
            'link' => 'https://avaliacao.mangati.com/evaluate/' . $avaliacao->linkKey,
        ],
    ],
]);

Notificação de Chamada na Fila

Notifique o cidadão quando sua senha estiver prestes a ser chamada (se o telefone foi coletado na triagem):

php
$notificacaoClient->post('/api/notifications', [
    'headers' => ['Authorization' => 'Bearer ' . $token],
    'json'    => [
        'template'  => 'chamada_fila',
        'phone'     => $cliente->telefone,
        'variables' => [
            'nome'   => $cliente->nome,
            'numero' => $atendimento->senha,
            'local'  => $atendimento->localNome,
        ],
    ],
]);

Custo por Crédito

O custo em créditos varia por canal. Consulte as configurações da sua organização no admin do Notificação para os valores atuais por mensagem.

CanalCusto Típico
WhatsApp2 créditos/mensagem
SMS3 créditos/mensagem
E-mail1 crédito/mensagem

Os custos podem variar conforme o provedor de transporte e o país de destino.


Status de Entrega

A entrega de mensagens é assíncrona. Acompanhe o status na página Mensagens do admin do Notificação, ou configure webhooks para callbacks de entrega (dependente do provedor).

Documentação do Mangati Cloud Suite