Fotografías de entrega

Las fotos tomadas en la recepción, servidas como URL firmadas que caducan en quince minutos.

El personal fotografía lo que recibe: una etiqueta, un palé dañado, una sonda apoyada en un expositor. Esas fotos son la prueba que hay detrás de isCompliant, y este endpoint se las entrega.

Necesita ambos, deliveries:read y delivery-images:read, sobre el restaurante que aparece en la ruta. Una clave que solo tenga el primero responde 403 aquí, mientras que la entrega en sí responde con normalidad.

Listar las fotografías de una entrega

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"
    }
  ]
}

No hay paginación: una entrega tiene como máximo veinte fotografías, y vuelven en una sola respuesta.

CampoTipoSignificado
idstringIdentificador estable de la foto dentro de la entrega.
contentTypestringimage/jpeg, image/png o image/webp. Nada más llega a esta API.
byteLengthintegerTamaño exacto del objeto, hasta 10 MB.
uploadedAtstringCuándo terminó de subirse la foto, milisegundos desde la época Unix como cadena.
urlstringUna URL firmada y directa a los bytes.
urlExpiresAtstringCuándo deja de funcionar esa URL, milisegundos desde la época Unix como cadena.

Las URL son de vida corta a propósito

url es un enlace prefirmado válido durante quince minutos, y todas las URL de una misma respuesta comparten la misma caducidad, así que puede tratar la página como una unidad. Lleva su propia autorización, de modo que descargar los bytes no requiere cabecera Authorization, lo que también significa que el enlace es en sí mismo una credencial al portador.

Eso condiciona cómo debe usarlo:

  • Descárguelas ahora, o vuelva a pedirlas luego. Descargue los bytes mientras la respuesta es reciente; no guarde la URL para seguirla mañana. Llame otra vez al endpoint para obtener enlaces nuevos: es barato, y vuelve a comprobar la concesión, que es de lo que se trata.
  • Nunca ponga la URL donde sobreviva a su propósito. Ni en un correo, ni en un ticket, ni en una caché de cliente con un TTL largo. Durante quince minutos, cualquiera que la tenga puede ver esa foto.
  • Guarde los bytes, no el enlace, si necesita la foto en su propio producto. Conserve el id junto a ellos para poder saber si ya la tiene.

Solo aparecen las fotos ya subidas

Una fotografía se registra cuando el dispositivo empieza la subida y solo se hace visible aquí una vez que los bytes han llegado de verdad y se han verificado. Una foto todavía en tránsito —un teléfono que salió del edificio a mitad de la subida— está ausente, no rota.

Por eso imageCount en la entrega puede superar brevemente lo que devuelve este endpoint. Fíese de este endpoint para lo que existe ahora, y vuelva a leer la entrega más tarde si el recuento le importa.

Descargarlas

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

La cabecera Authorization en la primera llamada, y ninguna en la segunda: la firma de la URL es lo que autoriza la descarga.

Última actualización: 2026-09-09.