Aller au contenu
colis

Cas d’usage

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.

app/api/colis/route.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 })
}

La situation

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.

À surveiller

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.

Paquets@colis/protocol

Vous envoyez. Ils valident. Vous le savez.

Votre stockage, une page de livraison à votre nom, un webhook à chaque étape. Rien d’hébergé chez un tiers.