Mensagens
Devolver a mensagem com wait
Seção intitulada “Devolver a mensagem com wait”Por padrão, POST /hooks/{id}/{token} responde 204 No Content, sem corpo, como o Discord. Com ?wait=true (ou ?wait=1), a resposta é 200 com a mensagem criada, inclusive o id que você usa para editar ou apagar depois.
curl -X POST "$GGSPEAK_WEBHOOK?wait=true" \ -H "Content-Type: application/json" \ -d '{"key": "inc-1", "card": {"title": "API fora do ar", "state": "alert", "body": "Timeout em /healthz"}}'{ "id": "0b7c1c0e-6a35-4d6c-9f0a-3f6f2d1d9a10", "channel_id": "5d1d6c43-91a2-47b1-8d89-7a4b8c0f2e11", "author_id": null, "author_nickname": "Alertas", "body": "**API fora do ar** · Disparou\nTimeout em /healthz", "pinned": false, "created_at_ms": 1793714520000, "edited_at_ms": null, "reactions": [], "rich": null, "attachments": [], "app": { "hook_id": "c2d4e6f8-1a3b-4c5d-8e7f-9a0b1c2d3e4f", "name": "Alertas", "icon_url": null }, "card": { "title": "API fora do ar", "state": "alert", "body": "Timeout em /healthz", "url": null, "fields": [], "timeline": [{ "state": "alert", "at_ms": 1793714520000 }], "repeat": 1, "mentioned_role": null }}Os ids e as datas mudam; os campos são esses. author_id vem nulo porque o autor é o webhook (app), e body é o texto achatado em markdown que o app antigo e a busca leem.
Conferir o link com GET
Seção intitulada “Conferir o link com GET”Algumas ferramentas chamam o link com um GET antes de salvar. A resposta:
{ "id": "c2d4e6f8-1a3b-4c5d-8e7f-9a0b1c2d3e4f", "name": "Alertas", "icon_url": null, "community_id": "8a9b0c1d-2e3f-4a5b-8c6d-7e8f9a0b1c2d", "channel_id": "5d1d6c43-91a2-47b1-8d89-7a4b8c0f2e11"}Editar uma mensagem
Seção intitulada “Editar uma mensagem”PATCH /hooks/{id}/{token}/messages/{message_id} troca o conteúdo de uma mensagem que este webhook mandou. Mande o conteúdo inteiro de novo; o formato é detectado pelo corpo, como no POST, sem sufixo; o corpo do Better Stack não é lido aqui. A resposta é 200 com a mensagem atualizada.
curl -X PATCH "https://ggspeak.app/hooks/$ID/$TOKEN/messages/$MESSAGE_ID" \ -H "Content-Type: application/json" \ -d '{"card": {"title": "API fora do ar", "state": "ok", "body": "Voltou"}}'O cartão editado segue a mesma regra de atualização da key: estado igual soma o contador, estado novo entra na linha do tempo. Como toda edição, ela não acende como não lida.
Duas coisas para lembrar: um PATCH sem card remove o cartão da mensagem, e o campo key, se vier no corpo, é ignorado (a mensagem já tem a dela).
Apagar uma mensagem
Seção intitulada “Apagar uma mensagem”curl -X DELETE "https://ggspeak.app/hooks/$ID/$TOKEN/messages/$MESSAGE_ID"A resposta é 204 No Content.
O que vale para os dois
Seção intitulada “O que vale para os dois”- Só mensagens do próprio webhook. Um id de pessoa, de outro webhook, ou inválido responde
404commessage_not_found. - Webhook pausado responde
410(hook_paused). - Os dois contam nos limites de envio.