# Comprobantes y etiquetas

## Comprobante de entrega

`GET /api/v1/deliveries/{id}/proof` · permiso `proof:read`.

```json
{
  "deliveryId": "6f1c1d0e-…",
  "proofId": "0b6d1d0e-…",
  "recordedAt": "2026-10-10T15:20:00Z",
  "recipientName": "Portero",
  "expiresAt": "2027-01-08T15:20:00Z",
  "photo": {"url": "https://<tu-courier>/api/public/proof-assets/…?delivery=…&expires=…&signature=…",
            "contentType": "image/jpeg", "width": 1280, "height": 960, "sizeBytes": 183245},
  "signature": null,
  "urlsExpireAt": "2026-10-10T15:25:00Z",
  "test": false
}
```

- `photo.url` y `signature.url` (firma del destinatario, si se pidió) son **enlaces firmados de 5 minutos**: se abren sin clave de API, así que podés mostrarlos a tu equipo o a tu cliente. Pasado `urlsExpireAt` responden `410 SIGNED_URL_EXPIRED`: pedí el comprobante de nuevo para obtener enlaces nuevos.
- Un enlace alterado (otra entrega, otro archivo u otro vencimiento) responde `404`.
- Sin comprobante: `404`. Cuando la política de retención del courier ya lo borró (`expiresAt`): `410 EVIDENCE_EXPIRED`.
- El aviso `delivery.proof_added` te dice cuándo pedirlo.
- Nunca incluye la identidad ni la ubicación del repartidor ni sus notas.

## Etiqueta PDF

`GET /api/v1/deliveries/{id}/label` · permiso `deliveries:read` → `application/pdf`, una página de 10 × 15 cm (etiqueta térmica) con:

- el QR interno que escanea el repartidor (no es el enlace de seguimiento),
- destinatario y dirección,
- número de tu pedido (`externalReference`), comercio, zona, ventana y monto a cobrar, si los hay.

```bash
curl -o etiqueta.pdf "$RUTA_API/api/v1/deliveries/$ID/label" -H "Authorization: Bearer $RUTA_API_KEY"
```

Con una clave de prueba la etiqueta lleva el sello «PRUEBA - SIN VALIDEZ» y su QR no corresponde a ninguna entrega real.
