# Webhooks

Crie uma assinatura com `POST /hooks`. A Atomicat envia um POST HTTP para `target_url` quando o evento acontece.

```bash
curl -X POST "https://automation.atomicat-api.com/api/automation/v1/hooks" \
  -H "Authorization: Bearer $ATOMICAT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "target_url": "https://example.com/atomicat",
    "event_type": "form_lead.created"
  }'
```

A resposta inclui o `id` da assinatura. Ela não repete a URL de destino. `DELETE /hooks/{subscriptionId}` desativa a assinatura. As entregas param.

## Eventos

| `event_type` | Quando é enviado |
| --- | --- |
| `form_lead.created` | Um envio de formulário é salvo |
| `quiz_lead.created` | Um envio de quiz é salvo |
| `page.created` | Uma página é criada |
| `page.published` | Uma página é publicada |
| `product.created` | Um produto é criado |
| `funnel.created` | Um funil é criado |
| `site.created` | Um site é criado |
| `project.created` | Um projeto é criado |

Não existe o evento `video.uploaded`. Depois de um upload no app, consulte `GET /videos`.

`GET /hooks/sample/{eventType}` devolve um objeto de exemplo dentro de um array. Use para montar o receptor antes de assinar.

## Regras da URL

`target_url` precisa ser HTTPS em um host público. São recusados:

- URLs `http://`
- URLs com usuário ou senha
- `localhost`, `.local` e `.internal`
- endereços privados, de loopback e de link local, inclusive os de metadados da nuvem
- um hostname que resolve para um desses endereços

O host é verificado de novo imediatamente antes de cada entrega.

## Receptor

Responda com status `2xx`. Trate o corpo como JSON. O endpoint de exemplo mostra os campos de cada evento. Guarde o `id` do evento se precisar ignorar uma entrega repetida.
