# Declanșatoare (/ro/docs/api/gateway/triggers)

Webhook-uri care transformă evenimentele din GitHub, Sentry, monitorizare sau surse proprii în sesiuni de agent, plus inbox-ul de notificări.

Un declanșator (trigger) este un webhook de intrare semnat, legat de contul tău. Fiecare livrare e verificată cu secretul propriu al declanșatorului, transformată într-o fișă de eveniment, trecută prin politica declanșatorului (filtre, buget, limită de rată, deduplicare) și apoi deschide o sesiune, se adaugă la una deja deschisă sau doar publică o notificare.

## Semnarea livrărilor generice [#semnarea-livrărilor-generice]

Expeditorii proprii semnează cu schema codai:

```http
x-codai-signature: t=<secunde unix>,v1=<hex HMAC-SHA256(secret, "<t>.<corp brut>")>
x-codai-delivery: <id-ul livrării tale>
```

- HMAC-ul acoperă marcajul de timp, un `.` literal și corpul **brut** al cererii, octet cu octet — semnează înainte de orice reserializare.
- `t` trebuie să fie la cel mult **5 minute** de ceasul gateway-ului; marcajele mai vechi sau din viitor sunt respinse cu `stale_timestamp`.
- `x-codai-delivery` este cheia de idempotență: un id de livrare repetat se înregistrează o singură dată. Fără el, gateway-ul derivă un id din `t` și dintr-un hash al corpului.
- Sursele GitHub (`X-Hub-Signature-256`) și Sentry (`Sentry-Hook-Signature`) folosesc în schimb semnăturile lor native.

## Căi de intrare [#căi-de-intrare]

Câmpul `ingress` din politica declanșatorului stabilește unde sunt acceptate livrările:

- `public` (implicit) — endpoint-ul expus pe internet `POST /v1/hooks/{id}`.
- `local` — surse doar din rețeaua locală. URL-ul public răspunde **404**; livrările ajung prin daemonul codaid sau prin brokerul aplicației desktop din rețeaua ta, care le transmit mai departe cu aceeași verificare de semnătură.
- `both` — oricare dintre cele două.

Folosește `rotate-secret` ca să generezi un secret nou sau `PUT …/secret` ca să setezi secretul cu care semnează deja un serviciu terț. `POST …/test` trimite o livrare de probă semnată prin tot fluxul.

<OpenAPIPage document="./openapi/ro/gateway.yaml" operations={[{path: '/v1/triggers',method: 'get'},{path: '/v1/triggers',method: 'post'},{path: '/v1/triggers/{id}',method: 'patch'},{path: '/v1/triggers/{id}',method: 'delete'},{path: '/v1/triggers/{id}/rotate-secret',method: 'post'},{path: '/v1/triggers/{id}/secret',method: 'put'},{path: '/v1/triggers/{id}/test',method: 'post'},{path: '/v1/triggers/{id}/events',method: 'get'},{path: '/v1/hooks/{id}',method: 'post'},{path: '/v1/notifications',method: 'get'},{path: '/v1/notifications/read',method: 'post'},{path: '/v1/notifications/{id}',method: 'delete'},{path: '/v1/notifications/delete',method: 'post'}]} />
