Guia rápido
De uma chave aos seus primeiros registos e a uma fotografia de entrega em cinco minutos, com curl.
Precisa de uma só coisa: uma chave de parceiro. Ela já sabe que restaurantes lhe foram concedidos, e a API diz-lho.
1. Obter uma chave
Escreva para contact@backresto.com com a sua empresa, os restaurantes de que precisa e os scopes que quer. Confirmamos com o restaurante e depois enviamos a chave ao contacto técnico que indicou. Obter uma chave é a lista de verificação completa. Enviá-la completa é o que transforma a ida e volta num email em vez de quatro.
Uma chave tem este aspeto:
brp_hV8kZ2pQ.tW3nR7yL9cF1sB4xJ6mA8dK0gN5vE2uP7hQ3rT1zY6i
A metade antes do ponto é um prefixo público: identifica a chave na lista dessa página e nas conversas de suporte, e pode ser escrita sem risco. A metade a seguir é o segredo, e não aparece em mais lado nenhum além desse ecrã.
2. Guardá-la
Coloque o valor inteiro no seu gestor de segredos, como uma só cadeia de caracteres, e apague o email em que chegou. Nunca num repositório, nunca num URL, nunca numa linha de registo. Guardamos apenas um resumo criptográfico do segredo, por isso uma chave perdida significa uma revogação e uma chave nova. Escreva-nos e ambas acontecem no mesmo dia.
export BACKRESTO_PARTNER_API_KEY='brp_…'
3. Encontrar o seu restaurante
Pergunte à chave que restaurantes alcança, e com que scopes:
curl "https://api.backresto.com/v1/restaurants" \
-H "Authorization: Bearer $BACKRESTO_PARTNER_API_KEY"
{
"data": [
{
"restaurantId": "restaurant-1",
"scopes": ["deliveries:read", "delivery-pictures:read", "temperature-records:read"]
}
]
}
A maioria das chaves alcança um só restaurante. Guarde o seu identificador para as chamadas seguintes:
export RESTAURANT_ID='restaurant-1'
4. Ver que coleções a chave abre
Todos os tipos de registo, incluindo as entregas, são uma coleção. Pergunte à chave quais é que ela alcança:
curl "https://api.backresto.com/v1/restaurants/$RESTAURANT_ID/collections" \
-H "Authorization: Bearer $BACKRESTO_PARTNER_API_KEY"
{
"data": [
{
"collection": "deliveries",
"readScope": "deliveries:read",
"description": "Received shadow snapshots for deliveries; not complete primary-store history.",
"stateKind": "received-shadow-snapshot",
"payloadVersion": 1
}
]
}
Um data vazio significa que a chave ainda não tem concessões de coleções.
Peça aquelas de que precisa.
5. Percorrer as entregas
Uma coleção percorre-se página a página com um cursor opaco. As marcas temporais estão em milissegundos desde a época Unix, em forma de cadeia de caracteres: é a convenção em toda a API, nunca segundos, nunca ISO 8601.
curl "https://api.backresto.com/v1/restaurants/$RESTAURANT_ID/collections/deliveries/records" \
-H "Authorization: Bearer $BACKRESTO_PARTNER_API_KEY" \
--get --data-urlencode "limit=100"
{
"data": [
{
"id": "8f2c1b04-0d5a-4b7e-9f31-6ad2c0e77a51",
"restaurantId": "restaurant-1",
"collection": "deliveries",
"deleted": false,
"capturedAt": "1787932805120",
"receivedAt": "1787932911004",
"sequence": "88",
"data": {
"timestamp": "1787932800000",
"isCompliant": false,
"supplierDeliveriesId": "supplier-7",
"temperatureRecords": [
{ "product": "Poulet fermier", "lotNumber": "L2291", "value": 6.4, "unit": "C" }
],
"nonComplianceReasons": ["Température trop élevée"],
"correctiveActions": ["Produit refusé"],
"commentary": null
}
}
],
"nextCursor": null
}
As temperaturas estão sempre em graus Celsius. Aqui não há intervalo de tempo:
percorre a coleção, filtra por data.timestamp se quiser uma semana, e guarda o
id para reconciliar no percurso seguinte. As outras coleções (temperaturas,
arrefecimento, limpeza, etiquetas) percorrem-se exatamente da mesma maneira.
6. Obter as fotografias de uma entrega
As fotografias são a coleção delivery-pictures. Cada registo indica a sua
entrega em data.deliveryId, e os bytes vêm dos seus ficheiros:
curl "https://api.backresto.com/v1/restaurants/$RESTAURANT_ID/collections/delivery-pictures/records" \
-H "Authorization: Bearer $BACKRESTO_PARTNER_API_KEY" \
--get --data-urlencode "limit=100"
curl "https://api.backresto.com/v1/restaurants/$RESTAURANT_ID/collections/delivery-pictures/records/$PICTURE_ID/assets" \
-H "Authorization: Bearer $BACKRESTO_PARTNER_API_KEY"
A segunda chamada responde com URL assinados válidos durante quinze minutos;
transfira os bytes sem qualquer cabeçalho Authorization. Precisa do scope
delivery-pictures:read. Se a sua chave só tiver deliveries:read, as entregas
respondem e as fotografias respondem 403: é a concessão a fazer o seu
trabalho, e a solução passa por o cliente mandar emitir uma chave com ambos.
7. Lidar com as duas falhas que vai mesmo encontrar
404: o restaurante não está na sua chave, ou o registo não existe. Os
dois casos são deliberadamente indistinguíveis: a API não confirma a existência
de um restaurante a quem não o pode ver.
403: o restaurante está na sua chave, mas o scope de que este endpoint
precisa não está.
Todos os erros são um documento de problema, nunca uma página
HTML, e trazem um requestId que vale a pena citar se nos escrever.
Para onde ir a seguir
- Obter uma chave: a lista de verificação do pedido, e como alterar uma chave mais tarde.
- Autenticação: scopes, rotação, o que uma chave pode e não pode fazer.
- Paginação: o cursor, e como manter uma cópia atualizada.
- Entregas: cada campo de um controlo de receção e as suas fotografias.
- Coleções e registos: os vinte e seis tipos de registo, e o envelope que partilham.
- MCP: os mesmos dados dentro de um cliente de IA, em cerca de três minutos.