HLG Notify EN

Documentação

Como mandar notificações push do seu servidor, script, cron ou banco de dados direto pro celular — sem conta, sem cadastro.

Conteúdo

Início rápido

Três passos, menos de dois minutos.

  1. Crie seu canal na página inicial. Você recebe na hora um código, um QR Code e os tokens.
  2. Instale o app e toque em Ler QR do canal para escanear o QR.
  3. Mande a primeira mensagem com o comando abaixo, trocando o código e o token pelos seus:
curl -d "primeira notificação" \
  -H "Authorization: Bearer SEU_PUBLISH_TOKEN" \
  https://notify.hlgcloud.com.br/v1/publish/hlg-xxxxxxxx

O celular deve tocar em poucos segundos, mesmo com o app fechado.

Criar meu canal

Como funciona

Tudo gira em torno de um canal. O canal é o endereço para onde as mensagens vão, e o aparelho que escaneou o QR é quem recebe.

Um aparelho pode estar em vários canais ao mesmo tempo. No app, troque de canal pela lista no topo da tela e use Adicionar canal para escanear outro QR. Cada canal tem as próprias notificações: dá para silenciar um sem afetar os outros.

Enviar uma notificação

Só existe um endereço para publicar, e ele aceita POST:

POST https://notify.hlgcloud.com.br/v1/publish/SEU_CODIGO
Authorization: Bearer SEU_PUBLISH_TOKEN

Texto puro (o jeito mais simples)

Mande o texto no corpo, sem JSON nenhum. É o formato pensado para colar direto num cron:

curl -d "backup concluído" \
  -H "Authorization: Bearer SEU_PUBLISH_TOKEN" \
  https://notify.hlgcloud.com.br/v1/publish/hlg-xxxxxxxx

JSON (com título e prioridade)

curl -X POST \
  -H "Authorization: Bearer SEU_PUBLISH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Backup do banco",
    "body": "Concluído em 4min12s, 2.3 GB",
    "priority": 3
  }' \
  https://notify.hlgcloud.com.br/v1/publish/hlg-xxxxxxxx

Campos aceitos

CampoTipoDescrição
bodytextoObrigatório. O conteúdo da notificação.
titletextoTítulo. Sem ele, a notificação usa o código do canal.
priority1 a 5Padrão 3. Define cor, som e vibração.
tagslistaEtiquetas livres, guardadas com a mensagem.
click_urltextoLink aberto ao tocar na notificação.
dataobjetoQualquer JSON extra que você queira anexar.

A resposta é 202 com o id da mensagem e para quantos aparelhos ela foi enfileirada:

{ "message_id": 42, "devices": 2 }

Título

O título é opcional. Quando você não manda um, a notificação mostra o código do canal no lugar — assim ela nunca chega sem identificação:

curl -d "Serviço concluído com sucesso." \
  -H "Authorization: Bearer SEU_PUBLISH_TOKEN" \
  https://notify.hlgcloud.com.br/v1/publish/hlg-7ad4p7x7

→  Título:   hlg-7ad4p7x7
   Mensagem: Serviço concluído com sucesso.

Formatação

O body aceita uma sintaxe própria de marcadores para destacar trechos do texto. São tags pareadas (abre/fecha), que podem ser combinadas livremente:

MarcadorEfeito
<bold>texto</bold>Negrito
<small>texto</small>Fonte menor
<big>texto</big>Fonte maior
<link>https://...</link> Link clicável — o conteúdo precisa ser só a URL completa (http:// ou https://), sem texto alternativo
<red>texto</red>Texto vermelho
<yellow>texto</yellow>Texto amarelo
<green>texto</green>Texto verde
<blue>texto</blue>Texto azul

As cores se ajustam automaticamente ao tema claro/escuro do celular — o tom exato varia um pouco entre os dois, a cor em si não.

Isso não é HTML. Apesar da aparência de tag, é uma sintaxe própria criada só para o HLG Notify: somente os marcadores acima são reconhecidos, e não existe nenhum parser de HTML por trás. Qualquer outra tag (ex. <div>), um marcador não fechado ou fechado fora de ordem aparece como texto puro na mensagem — nunca quebra o envio nem o app.

Os marcadores podem ser aninhados em qualquer ordem, desde que o fechamento siga a ordem inversa da abertura — igual HTML/XML:

<bold><big><red>Backup falhou</red></big></bold>
Confira o log em <bold><link>https://status.exemplo.com</link></bold>

Quebra de linha e linha em branco não usam marcador — já são \n e \n\n literais dentro do body, e funcionam sem nenhuma mudança:

curl -X POST \
  -H "Authorization: Bearer SEU_PUBLISH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Deploy",
    "body": "<bold>Versão 2.1</bold> no ar.\n\nAcompanhe em <link>https://status.exemplo.com</link>"
  }' \
  https://notify.hlgcloud.com.br/v1/publish/hlg-xxxxxxxx

A formatação vale só para o corpo da mensagem. O título e a notificação do sistema (barra de notificações do Android) sempre mostram texto puro, sem os marcadores — o texto com estilo só aparece dentro do app.

Prioridades

A prioridade vai de 1 a 5 e muda três coisas: a cor no app, o som e a vibração. No Android, cada canal do HLG Notify vira um grupo de notificações com os cinco níveis dentro, então dá para ajustar som e vibração por canal e por nível nas configurações do sistema — o atalho está em Configurações no app. Também dá para silenciar um canal inteiro ali: as mensagens continuam chegando no histórico, sem notificação.

NívelCorComportamentoQuando usar
1Verde-claroSilencioso, sem vibrarLog, rotina que deu certo
2VerdeSom padrão, sem vibrarAviso de baixa urgência
3AmareloSom e vibraçãoPadrão, quando não informado
4LaranjaAlta prioridade, aparece na telaPrecisa de atenção agora
5VermelhoAlta prioridade e ignora o Não PerturbeAcordar alguém de madrugada

A prioridade 5 toca mesmo com o celular no Não Perturbe. Use com parcimônia — se tudo é crítico, nada é.

Exemplos

Cron

# todo dia às 3h, avisa se o backup falhar
0 3 * * * /opt/backup.sh || curl -s -d "BACKUP FALHOU" \
  -H "Authorization: Bearer $HLG_TOKEN" \
  https://notify.hlgcloud.com.br/v1/publish/hlg-xxxxxxxx

Bash

#!/usr/bin/env bash
notify() {
  curl -s -X POST \
    -H "Authorization: Bearer $HLG_TOKEN" \
    -H "Content-Type: application/json" \
    -d "{\"title\":\"$1\",\"body\":\"$2\",\"priority\":${3:-3}}" \
    "https://notify.hlgcloud.com.br/v1/publish/$HLG_CANAL" > /dev/null
}

notify "Deploy" "Subiu a versão 2.1" 3
notify "Disco cheio" "/ com 96% de uso" 5

Python

import requests

requests.post(
    "https://notify.hlgcloud.com.br/v1/publish/hlg-xxxxxxxx",
    headers={"Authorization": "Bearer SEU_PUBLISH_TOKEN"},
    json={"title": "ETL", "body": "12.402 linhas processadas", "priority": 2},
    timeout=10,
)

Oracle (PL/SQL)

Depois de instalar a package uma vez (passo a passo no pacote de download abaixo), publicar é uma chamada:

BEGIN
  hlgnotify_core_pkg.publicar(
    p_canal    => 'hlg-xxxxxxxx',
    p_body     => 'Concluído',
    p_title    => 'Job noturno',
    p_priority => 2
  );
END;
/

A package busca token e wallet do canal numa tabela — nenhuma credencial hardcoded na chamada. Requer wallet configurado e ACL de rede liberada para o host (passo a passo no pacote de download).

Pacote completo (Oracle 19c ou superior) — DDL da tabela de canais, a package hlgnotify_core_pkg pronta para produção (autenticação, payload em UTF-8, timeout, escaping de JSON e tratamento de erro), os certificados para montar o wallet e o passo a passo de instalação (wallet + ACL + tabela + package + cadastro do canal).

Baixar pacote Oracle (.zip)

n8n

Use o nó HTTP Request:

API

EndpointAutenticaçãoPara quê
POST /v1/publish/:codigopublish tokenEnviar notificação
GET /v1/messages/:codigotoken do aparelhoHistórico do canal
DELETE /v1/messages/:codigopublish tokenLimpar o histórico
GET /v1/channels/:codigo/infopublish ou aparelhoNome e nº de aparelhos
GET /v1/channels/:codigo/devicespublish tokenListar aparelhos
POST /v1/public/channelsnenhumaCriar um canal

Token errado responde 401 e nada é gravado. Canal inexistente responde 404.

Tokens

Ao criar o canal você recebe dois tokens, com finalidades bem diferentes — e essa diferença é o que permite convidar gente pro canal sem dar a ela o poder de publicar mensagens:

TokenPermiteOnde fica
Publish Enviar mensagens, ver os aparelhos inscritos e limpar o histórico do canal — ou seja, administra o canal Nos seus scripts e servidores, ou salvo com você. Nunca compartilhe, nunca coloque no app.
Enroll Só inscrever um aparelho no canal, pra ele passar a receber notificações Dentro do QR Code. É o que o app lê ao escanear — pode circular à vontade.

⚠️ CUIDADO com o publish token. Quem tiver esse token consegue mandar notificações pro canal inteiro (e ver/apagar o histórico) — trate como senha. Ele aparece uma única vez, na tela de criação do canal, e não fica salvo em lugar nenhum do servidor — só o hash. Se perder, não tem como recuperar: crie outro canal.

Por isso a página inicial gera dois arquivos diferentes depois de criar o canal:

Resumindo: dar o QR/convite a alguém não dá a essa pessoa o poder de publicar no seu canal — só o arquivo de credenciais admin faz isso, e esse você não compartilha.

Gerenciar o canal

Na página Meu canal, com o código e o publish token, você pode:

Limpar o histórico é irreversível e afeta todos os aparelhos do canal. Por isso a página pede que você digite APAGAR para confirmar.

Para um aparelho sair do canal, use Sair deste canal nas configurações do app. Isso desinscreve só aquele aparelho, só daquele canal — os outros canais dele continuam — e não apaga o histórico de ninguém.

Limites

LimiteValor
Mensagens guardadas por canalas 100 mais recentes
Tamanho da mensagem (título + corpo + link)3500 bytes
Envios por canal60 por minuto
Criação de canais5 por minuto, por IP

O que passa de 100 mensagens é descartado no servidor, mas continua no celular — o app guarda o próprio histórico. Precisa de mais que isso? Fale com o suporte.

Perguntas frequentes

A notificação não chega. O que verifico?

  1. Abra Sobre no app e confira se Notificações está como "Permitidas".
  2. Confira se o comando respondeu 202 e com quantos devices. Se vier 0, nenhum aparelho está inscrito nesse canal.
  3. Veja se o código do canal no comando é o mesmo que aparece em Sobre.
  4. Confira em Configurações se o canal não está silenciado — silenciado, a mensagem entra no histórico sem notificar.
  5. Se estiver com economia de bateria agressiva, libere o app para rodar em segundo plano.

Troquei de celular. E agora?

Basta escanear o mesmo QR no aparelho novo. Se você não tiver mais o QR, o enroll token sozinho resolve: dá para digitá-lo na tela inicial do app junto com o código do canal. Se você recebia de vários canais, repita para cada um, usando Adicionar canal.

Perdi o publish token.

Não há como recuperá-lo — o servidor só guarda o hash. Crie um canal novo e escaneie o QR dele no app.

Posso usar o mesmo canal em vários celulares?

Pode. Todos os aparelhos que escanearem o QR recebem as mesmas mensagens.

Quero convidar um grupo de pessoas, mas sem deixar ninguém publicar. Dá?

Dá, e já é assim por padrão — ver Tokens. Distribua só o arquivo de convite (QR .png ou .html) gerado na página inicial: ele carrega apenas o enroll token, que serve só pra inscrever o aparelho. O publish token fica no arquivo separado de credenciais admin, que você guarda só pra você — é ele quem manda mensagens.

Preciso criar conta?

Não. Não há cadastro, e-mail nem senha. O canal é a sua identidade.

Apagar uma mensagem no app apaga para todo mundo?

Não. Deslizar para o lado ou usar a lixeira remove só a cópia daquele aparelho. Para apagar de todos, use Limpar histórico do canal na página Meu canal.