# Les corrections dans vos outils

> Chaque demande de corrections arrive signée sur votre route, avec le commentaire du client, prête à devenir un ticket. Comment le faire avec colis, à quoi faire attention, et où c’est documenté.

Canonical: https://colis-site.vercel.app/use-cases/corrections-dans-vos-outils · Markdown: https://colis-site.vercel.app/use-cases/corrections-dans-vos-outils.md · English: https://colis-site.vercel.app/en/use-cases/corrections-dans-vos-outils

Chaque demande de corrections arrive signée sur votre route, avec le commentaire du client, prête à devenir un ticket.

```ts
import { verifyWebhook } from '@colis/protocol'

export async function POST(request: Request) {
  const body = await request.text()
  const result = await verifyWebhook(process.env.DROP_WEBHOOK_SECRET!, request.headers, body)
  if (!result.valid) return new Response(null, { status: 401 })

  const event = JSON.parse(body)
  if (event.type === 'parcel.changes_requested') {
    await createIssue({                       // your tracker
      title: `Corrections : ${event.data.filename}`,
      body: event.data.comment,
      reference: event.data.code,
    })
  }

  return new Response(null, { status: 204 })
}
```

## Ce qui se passe vraiment.
### Le problème
Les retours clients se perdent entre l’e-mail, la messagerie et les appels. Celui qui compte, « le logo en SVG, et le fond plus clair », doit finir dans votre outil de suivi.

### Ce que colis y fait
Pointez `DROP_WEBHOOK_URL` vers une route à vous. `verifyWebhook` de `@colis/protocol` vérifie la signature Standard Webhooks (HMAC-SHA256) avec le même code que celui qui signe. Sur `parcel.changes_requested`, `data.comment` contient ce que le client a écrit : créez le ticket, et reliez-le au colis par son code.

## Les pièges faciles.
- **Lisez le corps brut** — La signature porte sur les octets reçus : `request.text()` avant tout `JSON.parse`.
- **Cinq minutes de tolérance** — Un horodatage décalé de plus de cinq minutes est refusé, pour qu’une ancienne livraison ne puisse pas être rejouée.
- **Aucun secret dans l’événement** — `data` ne contient jamais le mot de passe, son hachage, ni le jeton de l’expéditeur.

Packages: @colis/protocol. [Les webhooks, dans le README](https://github.com/mamadouwhile/colis/blob/main/templates/drop/README.md#webhooks)
