Configurar por API

Um só token basta para configurar um projeto a partir de um script ou de um agente de IA: um canal para os seus eventos, monitores para as suas páginas e tarefas, um site para as suas visitas e opiniões.

O token

Crie-o em Definições, Tokens de API. Pertence a um espaço de trabalho, por isso tudo o que se segue fica nesse espaço. Adicionar ou alterar um site exige o token de um proprietário ou de um administrador.

Como funcionam os tokens

Criar um canal

Um canal recebe os eventos da sua app. name é obrigatório; description, icon, color e isPrivate são opcionais.

bash
curl -X POST "https://zenhook.dev/api/channels" \
  -H "Authorization: Bearer $ZENHOOK_TOKEN" -H "Content-Type: application/json" \
  -d '{"name":"my-app","description":"Sign-ups and errors"}'

A resposta contém webhookToken: a sua app envia para https://zenhook.dev/api/webhook/ seguido desse token. Quem tiver este endereço pode publicar no canal, por isso guarde-o com os seus segredos. POST /api/channels/:id/regenerate-token substitui-o. O Free permite 3 canais: mais um responde 403 com CHANNEL_LIMIT_REACHED.

Monitorizar um endereço

O Zenhook pede o endereço e alerta-o quando fica em baixo. url é obrigatório; name é, por omissão, o nome do anfitrião.

bash
curl -X POST "https://zenhook.dev/api/monitors" \
  -H "Authorization: Bearer $ZENHOOK_TOKEN" -H "Content-Type: application/json" \
  -d '{"name":"example.com","url":"https://example.com"}'

Um espaço de trabalho vigia cada URL uma só vez: um segundo monitor no mesmo responde 409. O Free permite 3 monitores e o Pro 20: mais um responde 403 com MONITOR_LIMIT_REACHED. Um endereço numa rede privada responde 400 com PRIVATE_TARGET_REQUIRES_PUSH: use um monitor PUSH, abaixo. Os alertas dos monitores chegam ao canal Monitores do espaço de trabalho, que não é escolhido por si.

Como funcionam as verificações

Monitorizar uma tarefa agendada

Um monitor PUSH funciona ao contrário: a sua tarefa comunica com o Zenhook, e o monitor fica em baixo quando as comunicações param. Também cobre um serviço numa rede privada.

bash
curl -X POST "https://zenhook.dev/api/monitors" \
  -H "Authorization: Bearer $ZENHOOK_TOKEN" -H "Content-Type: application/json" \
  -d '{"name":"Nightly backup","url":"https://backup.example.com/nightly",
       "type":"PUSH","heartbeatInterval":3600,"heartbeatGrace":86400}'

url continua obrigatório e único, porque identifica o que é vigiado: o Zenhook não o pede. heartbeatGrace é o silêncio permitido, em segundos: de 60 a 86400, e nunca menos do dobro de heartbeatInterval (de 30 a 3600). Uma tarefa que corre de 6 em 6 horas precisa de mais de 21600.

A resposta dá heartbeatToken, uma só vez, e heartbeatCommand, um comando pronto que pede o url a partir de onde corre e envia o resultado. Ou comunique no fim da sua tarefa:

bash
curl -X POST "https://zenhook.dev/api/monitors/heartbeat" \
  -H "Authorization: Bearer $ZENHOOK_HEARTBEAT_TOKEN" -H "Content-Type: application/json" \
  -d '{"status":"UP"}'

status é UP (por omissão) ou DOWN. responseTime em milissegundos, statusCode e errorMessage são opcionais. A resposta é 204.

Adicionar um site

Esta chamada adiciona o domínio ao Analytics e devolve-o em site, com o seu id e a sua chave key. feedback ativa as opiniões; analytics está ativo por omissão. Adicionar duas vezes um domínio devolve o site existente. Um espaço de trabalho tem no máximo 20 sites durante o alfa.

bash
curl -X POST "https://zenhook.dev/api/sites" \
  -H "Authorization: Bearer $ZENHOOK_TOKEN" -H "Content-Type: application/json" \
  -d '{"domain":"example.com","feedback":true}'

Depois leia o que deve colar, com o domínio ou o id:

bash
curl "https://zenhook.dev/api/sites/example.com/setup" \
  -H "Authorization: Bearer $ZENHOOK_TOKEN"

snippet é a linha para o <head> das suas páginas, buttonSnippet a mesma linha com o nosso botão de opinião, privacyParagraph o parágrafo para a sua página de privacidade. agentInstructions contém tudo isto, escrito para um agente de IA.

Para alterar um site mais tarde, envie PATCH /api/sites/:id com analytics ou feedback a true ou false. Este endereço recebe o id do site, não o domínio.

As opiniões de todos os sites do espaço de trabalho chegam ao seu único canal Feedback, com o site na origem de cada evento.

Os eventos, os objetivos e a leitura dos números