> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aciona.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Payload do webhook genérico

> Contrato completo do JSON aceito por fontes do tipo Genérico.

## Requisição

```bash theme={null}
POST https://ingress.aciona.me/webhooks/<idDaFonte>
Content-Type: application/json
X-Aciona-Token: <tokenDaFonte>
```

O corpo é um **objeto JSON** representando um único alerta.

## Campos

<ParamField body="title" type="string">
  Título do acionamento. Quando ausente, o aciona.me usa `Untitled alert`.
</ParamField>

<ParamField body="description" type="string">
  Detalhe do problema. Aparece no corpo do acionamento e nas notificações.
</ParamField>

<ParamField body="severity" type="string" default="warning">
  Severidade do alerta. Aceita os valores canônicos `critical`, `high`, `warning` e `info`, além de sinônimos comuns (`p1`, `sev2`, `error`, `warn`, `low`…). Valores não reconhecidos caem em `warning`.
</ParamField>

<ParamField body="service" type="string">
  Nome do serviço afetado, como cadastrado no aciona.me. Também aceito em `labels.service`. Determina o time responsável e, por consequência, quem é acionado.
</ParamField>

<ParamField body="externalId" type="string">
  Identificador estável do problema na origem. É a chave de correlação usada para agregar disparos repetidos no mesmo acionamento.
</ParamField>

<ParamField body="status" type="string" default="firing">
  Aceita `firing` ou `alerting`. Qualquer outro valor faz o alerta ser aceito e **descartado**, sem criar acionamento. Quando ausente, é tratado como `firing`.
</ParamField>

<ParamField body="labels" type="object">
  Rótulos livres, preservados no acionamento. Útil para contexto (`env`, `region`, `cluster`, `job`).
</ParamField>

<ParamField body="url" type="string">
  Link de volta para a origem do alerta. Também aceito como `externalUrl`.
</ParamField>

## Exemplo completo

```json theme={null}
{
  "externalId": "checkout-error-rate",
  "title": "Taxa de erro no checkout acima de 5%",
  "description": "Erros 5xx em 7,2% das requisições nos últimos 5 minutos",
  "severity": "critical",
  "service": "checkout",
  "status": "firing",
  "labels": {
    "env": "prod",
    "region": "sa-east-1",
    "cluster": "prod-a"
  },
  "url": "https://observabilidade.exemplo.com/d/checkout"
}
```

## Exemplo mínimo

```json theme={null}
{
  "title": "Job noturno falhou",
  "service": "pipeline-dados"
}
```

## Resposta

```json theme={null}
{ "status": "accepted" }
```

Com `HTTP 202`. O processamento é assíncrono: o acionamento aparece no painel em segundos.

## Limitações

<Warning>
  Fontes do tipo `Genérico` **não suportam auto-resolução**. Enviar `"status": "resolved"` faz o alerta ser descartado, não resolve o acionamento. Para auto-resolução, use o tipo de fonte da sua ferramenta.
</Warning>

* Um POST representa um alerta. Para vários alertas, faça vários POSTs.
* O corpo tem limite de tamanho (por padrão, 1 MB).

<Card title="Guia do webhook genérico" icon="code" href="/pt-br/integracoes/webhook-generico" horizontal />
