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
POST /api/notifications
Authorization: Bearer <token_de_acesso>
Content-Type: application/jsonEnvia uma notificação via template configurado. A entrega é assíncrona - a requisição retorna imediatamente após o enfileiramento.
Corpo da requisição:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
template | string | Sim | Nome do template (conforme configurado no Admin) |
email | string | Condicional | E-mail do destinatário (obrigatório para canal e-mail) |
phone | string | Condicional | Telefone com código do país (obrigatório para SMS/WhatsApp) |
variables | objeto | Não | Valores das variáveis do template |
Pelo menos um entre email ou phone deve ser informado, dependendo do canal do template.
Exemplo - notificação WhatsApp:
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:
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):
{
"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:
{
"title": "Um erro ocorreu",
"detail": "template: Template não encontrado.",
"violations": [
{
"propertyPath": "template",
"message": "Template não encontrado."
}
]
}Erro (422) - créditos insuficientes:
{
"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:
{
"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:
$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,
],
],
]);Link de Avaliação (após atendimento)
Envie o link de avaliação ao cidadão após o encerramento da senha no NovoSGA:
$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):
$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.
| Canal | Custo Típico |
|---|---|
| 2 créditos/mensagem | |
| SMS | 3 créditos/mensagem |
| 1 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).
