Guida rapida

Da una chiave a un record di consegna e a un record di collezione in cinque minuti, con curl.

Le serve una cosa sola: una chiave partner. Sa già quali ristoranti le sono stati concessi, e l'API glielo dice.

1. Ottenere una chiave

Scriva a contact@backresto.com indicando la sua azienda, i ristoranti di cui ha bisogno e gli ambiti che desidera. Confermiamo con il ristorante, poi inviamo la chiave al contatto tecnico che ha indicato. Ottenere una chiave è la lista di controllo completa — inviarla completa è ciò che riduce lo scambio a una email invece che a quattro.

Una chiave si presenta così:

brp_hV8kZ2pQ.tW3nR7yL9cF1sB4xJ6mA8dK0gN5vE2uP7hQ3rT1zY6i

La metà prima del punto è un prefisso pubblico — identifica la chiave nell'elenco su quella pagina e nelle conversazioni con il supporto, e può essere annotata senza rischi. La metà dopo il punto è il secret, e non compare da nessuna parte se non su quella singola schermata.

2. Conservarla

Metta l'intero valore nel suo gestore di secret, come una sola stringa, ed elimini l'email con cui è arrivata. Mai in un repository, mai in un URL, mai in una riga di log. Conserviamo solo un digest del secret, quindi una chiave persa significa una revoca e una chiave nuova — ci scriva e accadono entrambe in giornata.

export BACKRESTO_PARTNER_API_KEY='brp_…'

3. Trovare il suo ristorante

Chieda alla chiave quali ristoranti raggiunge, e con quali ambiti:

curl "https://api.backresto.com/v1/restaurants" \
  -H "Authorization: Bearer $BACKRESTO_PARTNER_API_KEY"
{
  "data": [
    {
      "restaurantId": "restaurant-1",
      "scopes": ["deliveries:read", "delivery-images:read"]
    }
  ]
}

La maggior parte delle chiavi raggiunge un solo ristorante. Tenga il suo identificativo per le chiamate seguenti:

export RESTAURANT_ID='restaurant-1'

4. Elencare una settimana di consegne

L'endpoint di elenco richiede un intervallo di tempo esplicito, in millisecondi dall'epoch, come stringhe. È la convenzione dell'intera API — mai secondi, mai ISO 8601.

curl "https://api.backresto.com/v1/restaurants/$RESTAURANT_ID/deliveries" \
  -H "Authorization: Bearer $BACKRESTO_PARTNER_API_KEY" \
  --get \
  --data-urlencode "from=1787846400000" \
  --data-urlencode "to=1788451200000" \
  --data-urlencode "limit=25"
{
  "data": [
    {
      "id": "8f2c1b04-0d5a-4b7e-9f31-6ad2c0e77a51",
      "restaurantId": "restaurant-1",
      "occurredAt": "1787932800000",
      "isCompliant": false,
      "supplier": { "id": "supplier-7", "name": "Metro Nord" },
      "temperatureRecords": [
        { "product": "Poulet fermier", "lotNumber": "L2291", "unit": "C", "value": 6.4 }
      ],
      "nonComplianceReasons": ["Température trop élevée"],
      "correctiveActions": ["Produit refusé"],
      "commentary": null,
      "imageCount": 2
    }
  ],
  "nextCursor": null
}

5. Recuperare una consegna e le sue fotografie

curl "https://api.backresto.com/v1/restaurants/$RESTAURANT_ID/deliveries/$DELIVERY_ID" \
  -H "Authorization: Bearer $BACKRESTO_PARTNER_API_KEY"

curl "https://api.backresto.com/v1/restaurants/$RESTAURANT_ID/deliveries/$DELIVERY_ID/images" \
  -H "Authorization: Bearer $BACKRESTO_PARTNER_API_KEY"

L'endpoint delle fotografie richiede l'ambito delivery-images:read oltre a deliveries:read. Se la sua chiave ha solo il primo, la consegna risponde e le fotografie rispondono 403 — è la concessione che fa il suo lavoro, e la soluzione è che il cliente richieda una chiave con entrambi.

6. Leggere una delle altre collezioni

Tutto ciò che non è una consegna — temperature, raffreddamento, pulizie, etichette — è una collezione. Chieda alla chiave quali apre:

curl "https://api.backresto.com/v1/restaurants/$RESTAURANT_ID/collections" \
  -H "Authorization: Bearer $BACKRESTO_PARTNER_API_KEY"

Un data vuoto significa che la chiave non ha ancora concessioni su collezioni, che è lo stato normale di una chiave emessa per le sole consegne — richieda quelle che le servono. Altrimenti, ne percorra una:

curl "https://api.backresto.com/v1/restaurants/$RESTAURANT_ID/collections/temperature-records/records" \
  -H "Authorization: Bearer $BACKRESTO_PARTNER_API_KEY" \
  --get --data-urlencode "limit=100"
{
  "data": [
    {
      "id": "3a71f0c8-9d24-4f11-bb0e-77c2e5a41d93",
      "restaurantId": "restaurant-1",
      "collection": "temperature-records",
      "deleted": false,
      "capturedAt": "1788961200000",
      "receivedAt": "1788961318000",
      "sequence": "4192",
      "data": {
        "timestamp": "1788961200000",
        "value": 3.2,
        "unit": "CELSIUS",
        "shift": "MORNING",
        "equipmentId": "equipment-12"
      }
    }
  ],
  "nextCursor": null
}

Qui non c'è alcun intervallo di tempo: si percorre la collezione e si conserva id per riconciliare al percorso successivo.

7. Gestire i due errori che incontrerà davvero

404 — il ristorante non è sulla sua chiave, oppure la consegna non esiste. I due casi sono deliberatamente indistinguibili: l'API non conferma l'esistenza di un ristorante a un chiamante che non può vederlo.

403 — il ristorante è sulla sua chiave, ma l'ambito richiesto da questo endpoint no.

Ogni errore è un documento di problema, mai una pagina HTML, e porta un requestId che vale la pena citare se ci scrive.

Dove andare adesso

  • Ottenere una chiave — la lista di controllo della richiesta e come modificare una chiave in seguito.
  • Autenticazione — ambiti, rotazione, cosa una chiave può e non può fare.
  • Paginazione — il cursore e come percorrere un intervallo lungo.
  • Consegne — ogni campo e cosa significa sul campo.
  • Collezioni e record — gli altri ventiquattro tipi di record e l'involucro che condividono.
  • MCP — gli stessi dati dentro un client IA, in circa tre minuti.

Ultimo aggiornamento 2026-09-19.