快速上手
从一把密钥到一条收货记录和一条集合记录,五分钟,用 curl 完成。
你只需要一样东西:一把合作方密钥。它已经知道自己被授予了哪些餐厅,API 会告诉你。
1. 拿到一把密钥
发邮件到 contact@backresto.com, 写上你的公司、你需要的餐厅和你想要的权限范围。我们与餐厅确认之后,把密钥发给你 指定的技术联系人。获取密钥 是完整的清单——一次把它写全,是让这趟 往返只花一封邮件而不是四封的原因。
一把密钥长这样:
brp_hV8kZ2pQ.tW3nR7yL9cF1sB4xJ6mA8dK0gN5vE2uP7hQ3rT1zY6i
点号前的那一半是公开前缀——它在那个页面的密钥列表里和支持沟通中标识这把密钥, 写下来是安全的。点号后的那一半是密钥串,它只在那一个屏幕上出现过,别处都没有。
2. 存好它
把整个值作为一个字符串放进你的密钥管理器,然后删掉它到达时的那封邮件。绝不要放进 代码仓库,绝不要放进 URL,绝不要放进日志行。我们只保存密钥串的摘要,所以密钥一旦 丢失,就意味着一次吊销加一把新密钥——写信给我们,两件事都在当天完成。
export BACKRESTO_PARTNER_API_KEY='brp_…'
3. 找到你的餐厅
问这把密钥它能触及哪些餐厅,以及各自带有哪些权限范围:
curl "https://api.backresto.com/v1/restaurants" \
-H "Authorization: Bearer $BACKRESTO_PARTNER_API_KEY"
{
"data": [
{
"restaurantId": "restaurant-1",
"scopes": ["deliveries:read", "delivery-images:read"]
}
]
}
大多数密钥只触及一家餐厅。把它的标识符留着,下面的调用会用到:
export RESTAURANT_ID='restaurant-1'
4. 列出一周的收货记录
列表端点需要一个明确的时间区间,以字符串表示的 Unix 毫秒时间戳。这是整个 API 通用的约定——绝不是秒,也绝不是 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. 取一条收货记录,以及它的照片
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"
照片端点在 deliveries:read 之外还需要 delivery-images:read 权限范围。如果你的
密钥只有前者,收货记录会正常返回,而照片返回 403——这正是授权在起作用,解决办法
是让客户签发一把两个权限范围都有的密钥。
6. 读一读其他集合中的一个
不是收货记录的一切——温度、冷却、清洁、标签——都是一个集合。 先问这把密钥它打开了哪些:
curl "https://api.backresto.com/v1/restaurants/$RESTAURANT_ID/collections" \
-H "Authorization: Bearer $BACKRESTO_PARTNER_API_KEY"
一个空的 data 意味着这把密钥还没有任何集合授权,而这正是一把只为收货记录签发的
密钥的常态——去申请你需要的那些。否则,就走一个看看:
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
}
这里没有时间区间:你走完这个集合,并留着 id,好在下一次遍历时对账。
7. 处理你真正会遇到的那两种失败
404——这家餐厅不在你的密钥上,或者这条收货记录不存在。两者被有意做成无法
区分:API 不会向一个看不到某家餐厅的调用方确认它存在。
403——这家餐厅在你的密钥上,但这个端点需要的那个权限范围不在。
每一个错误都是一份 problem 文档,绝不会是 HTML 页面,并且带有一个
requestId,写信给我们时值得把它附上。