Pular para o conteúdo

Mensagens

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.

Janela do terminal
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"}}'
200 OK (exemplo)
{
"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.

Algumas ferramentas chamam o link com um GET antes de salvar. A resposta:

GET /hooks/{id}/{token}
{
"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"
}

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.

Janela do terminal
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).

Janela do terminal
curl -X DELETE "https://ggspeak.app/hooks/$ID/$TOKEN/messages/$MESSAGE_ID"

A resposta é 204 No Content.