Fotografie delle consegne
Le immagini scattate al ricevimento, servite come URL firmati che scadono in quindici minuti.
Il personale fotografa ciò che riceve — un'etichetta, un pallet danneggiato, una
sonda accostata a un display. Quelle immagini sono la prova dietro
isCompliant, e questo endpoint gliele consegna.
Richiede entrambi gli ambiti deliveries:read e delivery-images:read sul
ristorante indicato nel percorso. Una chiave che ha solo il primo risponde 403
qui, mentre la consegna stessa risponde normalmente.
Elencare le fotografie di una consegna
GET /v1/restaurants/{restaurantId}/deliveries/{deliveryId}/images
{
"data": [
{
"id": "b4d81f0ac2e7",
"contentType": "image/jpeg",
"byteLength": 902450,
"uploadedAt": "1787932860000",
"url": "https://…/restaurants/restaurant-1/deliveries/8f2c…/b4d81f0ac2e7.jpg?X-Amz-Signature=…",
"urlExpiresAt": "1787933760000"
}
]
}
Non c'è paginazione: una consegna contiene al massimo venti fotografie, e tornano tutte in una sola risposta.
| Campo | Tipo | Significato |
|---|---|---|
id | stringa | Identificatore stabile dell'immagine all'interno della consegna. |
contentType | stringa | image/jpeg, image/png o image/webp. Nient'altro raggiunge questa API. |
byteLength | intero | Dimensione esatta dell'oggetto, fino a 10 MB. |
uploadedAt | stringa | Quando il caricamento dell'immagine è terminato, millisecondi dall'epoch come stringa. |
url | stringa | Un URL firmato e diretto ai byte. |
urlExpiresAt | stringa | Quando quell'URL smette di funzionare, millisecondi dall'epoch come stringa. |
Gli URL sono di breve durata di proposito
url è un collegamento pre-firmato valido per quindici minuti, e tutti gli
URL di una stessa risposta condividono la stessa scadenza, così può trattare la
pagina come un'unità. Porta con sé la propria autorizzazione, quindi scaricare i
byte non richiede alcun header Authorization — il che significa anche che il
collegamento è di per sé una credenziale al portatore.
Questo determina come dovrebbe usarlo:
- Scarichi adesso, oppure scarichi di nuovo più tardi. Scarichi i byte mentre la risposta è fresca; non memorizzi l'URL per seguirlo domani. Chiami di nuovo l'endpoint per ottenere collegamenti nuovi — costa poco, e ricontrolla la concessione, che è il punto.
- Non metta mai l'URL dove sopravvive al proprio scopo. Non in una email, non in un ticket, non in una cache lato client con un TTL lungo. Per quindici minuti chiunque lo possieda può leggere quell'immagine.
- Conservi i byte, non il collegamento, se le serve l'immagine nel suo
prodotto. Tenga accanto l'
idcosì può capire se ce l'ha già.
Compaiono solo le immagini caricate
Una fotografia viene registrata quando il dispositivo inizia il caricamento e diventa visibile qui solo una volta che i byte sono effettivamente arrivati e sono stati verificati. Un'immagine ancora in transito — un telefono che ha lasciato l'edificio a metà caricamento — è assente anziché rotta.
È per questo che imageCount sulla consegna può brevemente superare quello che
restituisce questo endpoint. Si fidi di questo endpoint per ciò che esiste
adesso, e rilegga la consegna più tardi se un conteggio le interessa.
Scaricarle
curl "https://api.backresto.com/v1/restaurants/$RESTAURANT_ID/deliveries/$DELIVERY_ID/images" \
-H "Authorization: Bearer $BACKRESTO_PARTNER_API_KEY" \
| jq -r '.data[] | "\(.id) \(.url)"' \
| while read -r id url; do
curl -sS "$url" -o "$id.jpg"
done
L'header Authorization sulla prima chiamata, e nessuno sulla seconda: è la
firma nell'URL ad autorizzare il download.