# Webhook-uri

7 rute de platformă, cu exemplu de cerere pentru fiecare.

Adresa de bază: `https://app.ilustromania.com/nucleu`

### GET /v1/webhookuri

Acces: `rol:admin`

**Destinațiile webhook ale firmei**

Lista destinațiilor webhook ale firmei din sesiune, fără secrete. Doar administratorul (403 altfel); 409 dacă livrarea nu e pornită pe firmă.

```bash
curl https://app.ilustromania.com/nucleu/v1/webhookuri \
  -H "Cookie: __Host-sesiune=$JETON_SESIUNE"
```

### POST /v1/webhookuri

Acces: `rol:admin`

**Adaugă o destinație webhook**

Corp `{url, evenimente, descriere?}`; evenimente din factura.emisa, aviz.emis, oferta.creata, comanda_catering.primita. Întoarce 201 `{destinatie, secret}`: secretul `whsec_…` se arată doar acum. 400 corp invalid sau adresă refuzată, 503 fără cheia Seifului. Doar administratorul.

```bash
curl -X POST https://app.ilustromania.com/nucleu/v1/webhookuri \
  -H "Cookie: __Host-sesiune=$JETON_SESIUNE" \
  -H "Content-Type: application/json" \
  -d '{ … }'
```

### GET /v1/webhookuri/{id}/livrari

Acces: `rol:admin`

**Jurnalul livrărilor unei destinații**

Cele mai noi 100 de livrări ale destinației (încercare, cod, durată, când). 404 destinație străină sau lipsă. Doar administratorul.

Parametri de cale:

| Nume | Tip | Descriere |
| --- | --- | --- |
| `id` | `string` | identificatorul resursei |

```bash
curl https://app.ilustromania.com/nucleu/v1/webhookuri/{id}/livrari \
  -H "Cookie: __Host-sesiune=$JETON_SESIUNE"
```

### POST /v1/webhookuri/{id}/opreste

Acces: `rol:admin`

**Oprește o destinație webhook**

Destinația nu mai primește nimic, iar livrările în așteptare se anulează. 404 dacă destinația e a altei firme sau lipsește. Doar administratorul.

Parametri de cale:

| Nume | Tip | Descriere |
| --- | --- | --- |
| `id` | `string` | identificatorul resursei |

```bash
curl -X POST https://app.ilustromania.com/nucleu/v1/webhookuri/{id}/opreste \
  -H "Cookie: __Host-sesiune=$JETON_SESIUNE" \
  -H "Content-Type: application/json" \
  -d '{ … }'
```

### POST /v1/webhookuri/{id}/roteste-secret

Acces: `rol:admin`

**Rotește secretul destinației**

Scrie un secret nou în Seif și îl întoarce o singură dată `{destinatie, secret}`; cel vechi mai semnează 24 de ore. 409 pe destinație oprită, 503 fără cheia Seifului. Doar administratorul.

Parametri de cale:

| Nume | Tip | Descriere |
| --- | --- | --- |
| `id` | `string` | identificatorul resursei |

```bash
curl -X POST https://app.ilustromania.com/nucleu/v1/webhookuri/{id}/roteste-secret \
  -H "Cookie: __Host-sesiune=$JETON_SESIUNE" \
  -H "Content-Type: application/json" \
  -d '{ … }'
```

### POST /v1/webhookuri/{id}/test

Acces: `rol:admin`

**Trimite un webhook de probă**

Pune o livrare `test.ping` doar spre această destinație și răspunde 202. 404 destinație străină sau lipsă, 409 destinație oprită. Doar administratorul.

Parametri de cale:

| Nume | Tip | Descriere |
| --- | --- | --- |
| `id` | `string` | identificatorul resursei |

```bash
curl -X POST https://app.ilustromania.com/nucleu/v1/webhookuri/{id}/test \
  -H "Cookie: __Host-sesiune=$JETON_SESIUNE" \
  -H "Content-Type: application/json" \
  -d '{ … }'
```

### POST /v1/webhookuri/livrari/{id}/retrimite

Acces: `rol:admin`

**Retrimite o livrare webhook**

Pune din nou același eveniment spre aceeași destinație, de la încercarea 1, și răspunde 202 `{livrare}`. 404 livrare străină sau lipsă, 409 destinație oprită. Doar administratorul.

Parametri de cale:

| Nume | Tip | Descriere |
| --- | --- | --- |
| `id` | `string` | identificatorul resursei |

```bash
curl -X POST https://app.ilustromania.com/nucleu/v1/webhookuri/livrari/{id}/retrimite \
  -H "Cookie: __Host-sesiune=$JETON_SESIUNE" \
  -H "Content-Type: application/json" \
  -d '{ … }'
```
