> ## Documentation Index
> Fetch the complete documentation index at: https://docs.colismove.com/llms.txt
> Use this file to discover all available pages before exploring further.

# QR Code dépôt & livraison

> Validation sécurisée des remises de colis via QR codes

# QR Code dépôt & livraison

ColisMove utilise des QR codes pour valider de manière sécurisée les remises de colis à deux moments critiques : le **dépôt** (expéditeur → transporteur) et la **livraison** (transporteur → destinataire).

## Fonctionnement

### Flux de dépôt

```mermaid theme={null}
sequenceDiagram
    participant Sender
    participant API as ColisMove API
    participant Carrier
    
    Note over Carrier: Booking is ACCEPTEE
    Carrier->>API: GET /qrcode/generate?reservationId=123&type=DEPOT
    API->>Carrier: QR code image (PNG)
    Sender->>Carrier: Meets carrier, scans QR code
    Sender->>API: POST /qrcode/process-depot {reservationId, code}
    API->>API: Validate code, transition to EN_COURS_DE_LIVRAISON
    API->>Sender: 200 OK
    API->>Carrier: Push notification: parcel received
```

### Flux de livraison

```mermaid theme={null}
sequenceDiagram
    participant Carrier
    participant API as ColisMove API
    participant Recipient
    
    Note over Carrier: Booking is EN_COURS_DE_LIVRAISON
    Carrier->>API: GET /qrcode/generate?reservationId=123&type=LIVRAISON
    API->>Carrier: QR code image (PNG)
    Recipient->>Carrier: Meets carrier, scans QR code
    Recipient->>API: POST /qrcode/process-livraison {reservationId, code}
    API->>API: Validate code, transition to LIVREE
    API->>API: Trigger Stripe transfer to carrier
    API->>Recipient: 200 OK
    API->>Carrier: Push notification: delivery confirmed + payment released
```

## Endpoints API

### Générer un QR Code

```bash theme={null}
GET /v1/api/qrcode/generate?reservationId=123&type=DEPOT
```

Renvoie une image PNG contenant le QR code. Le paramètre `type` peut valoir `DEPOT` ou `LIVRAISON`.

### Valider un QR Code

```bash theme={null}
POST /v1/api/qrcode/validate
{
  "reservationId": 123,
  "code": "ABC123"
}
```

Valide le code sans déclencher de transition. Utile pour une pré-validation.

### Traiter le dépôt

```bash theme={null}
POST /v1/api/qrcode/process-depot
{
  "reservationId": 123,
  "code": "ABC123"
}
```

Valide le code **et** fait passer la réservation à `EN_COURS_DE_LIVRAISON`.

### Traiter la livraison

```bash theme={null}
POST /v1/api/qrcode/process-livraison
{
  "reservationId": 123,
  "code": "XYZ789"
}
```

Valide le code **et** fait passer la réservation à `LIVREE`, déclenchant le paiement du transporteur.

## Page destinataire

Pour les destinataires qui ne disposent pas de l'application, une page web est disponible :

```bash theme={null}
GET /v1/api/destinataire/page/{reservationId}
```

Elle renvoie une page HTML contenant les informations de livraison et un scanner de QR code, permettant aux destinataires de confirmer la livraison depuis le navigateur de leur téléphone.

<Warning>
  Chaque QR code est à usage unique. Une fois traité, il ne peut pas être réutilisé. Un nouveau code doit être généré si nécessaire.
</Warning>
