您系统中的广告资源在一天中会因为新的预订、 取消订单、安排更改以及安排更改。实时更新 API 是一种将商品目录变化告知 Google 的机制 。您还可以使用实时 API 更新将 对现有预订所做的更改。
如果您所有商家都使用候位名单功能,则不必进行实时更新。
API 的实时更新和 Feed
API 实时更新用于通知 Google 以下项目的增量更改: 实时掌握库存的可用情况和预订情况此外 实时 API 更新,每天发送完整的可用性 Feed, 因为 Google 拥有最准确、最新的库存状况信息, 您的系统中完整的 Feed 会用作当前 Feed 的快照 您系统中广告资源可用情况的状态
虽然 API 更新可用于更新 (例如有关商家和服务的信息), 通常仅用于更新库存状况信息。
需要实时更新的 API
需要实时更新 (RTU) 的 API | ||
---|---|---|
BookingNotification | 必须 | 每当有预订通知时都发送 BookingNotification RTU 预订变更(例如修改或取消)。 |
可用性替换 RTU | 随条件发生变化[1] | 发送任一 批量替换或 单个替换 RTU,用于发送对商品目录库存状况的更新。 更改可能需要几分钟才能传播和反映。 |
商家 RTU | 可选 | 如果您想对商家进行更改,请发送商家 RTU 实时更新信息更改可能需要几个小时才能生效 和反思。 |
服务 RTU | 可选 | 如果您想更改服务,请发送服务 RTU 实时更新信息一个常见的使用场景是 大幅波动,实施服务 RTU 建议,以免因价格不一致而导致订单失败。更改可 需要几个小时才能传播和反映 |
可用性替换 API RTU
使用可用性替换 API 在 以下用例:
- 用户在您的系统上进行了预订,因此可用性空档为 。
- 商家在您的系统中更改了可用性。
- 用户通过 Google 进行预订,因此可用性空档为 。
- 例如,您这边通过 Google 进行的预订被取消, 由商家直接上传您需要更新预订以及 可用性,因为原始空档现在又可用了。
- 预订服务器
BatchAvailabilityLookup
调用返回 与实际广告资源不匹配的广告资源。
如需了解详情,请参阅以下资源:
Booking Notification API RTU
Booking Notification API 会将相关信息告知 Google
对现有预订进行更新。在你发送有关订阅取消的最新动态时
在请求中只发送重要信息
updateMask
查询参数。示例如下:
Request: PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/<PARTNER_ID>/bookings/<BOOKING_ID>?updateMask=status Body: {"name":"partners/<PARTNER_ID>/bookings/<BOOKING_ID>", "status":"CANCELED"}
访问 API
创建服务账号
您可以使用 Google API 控制台中的凭据标签页来 创建服务账号。将 JSON 格式的私钥存储在安全的 位置。创建账号时,您可以选择将角色设为 “负责人。”
对 Maps Booking API 进行身份验证
创建服务账号后,请对以下 API 进行身份验证:
- Google Maps Booking API
- Google Maps Booking API(开发者版)
有关如何执行此操作的分步指南,请参阅 使用 Maps Booking API 进行身份验证教程。
使用 RESTful 调用或者下载客户端库
我们建议您直接对 Maps Booking API 进行 RESTful 调用 JSON 载荷。有关详情,请参阅 REST API 文档。
您还可以通过客户端库连接到 API。
语言 | 下载链接 |
---|---|
Java | Java 客户端库。有关详情,请参阅 Java 客户端说明。 |
其他 支持库可供下载 处理 Google API 调用的授权和其他方面。如有需要 看看 这些示例。
提取发现文档
对于某些客户端库(如 Ruby),有必要从 API 的发现文档,其中介绍了其方法和 参数。
使用以下命令提取 Discovery 文档:
curl -s -o 'mapsbooking_rest' 'https://mapsbooking.googleapis.com/$discovery/rest?version=v1alpha'
如需详细了解如何从 Ruby 访问 API,请访问以下链接: Ruby API 客户端和 Ruby 身份验证库。
对 API 进行已获授权的调用
调用该 API 时,请参阅
准备进行已获授权的 API 调用以向您的服务授权
账号与您的私钥及以下 OAuth 范围相关联:
https://www.googleapis.com/auth/mapsbooking
。
API 配额
API 更新的配额为每 60 秒 1500 次请求,即 25 次请求 平均每秒运行 1 次当您超出配额(可能是因为您没有在合作伙伴门户中添加正确的 Google Cloud 项目编号时)时,Google 会回复 以下错误消息:
{ "error": { "code": 429, "message": "Insufficient tokens for quota ...", "status": "RESOURCE_EXHAUSTED", "details": [...] } }
要解决此问题,请以指数级时间再次重试调用,
就会成功如果您定期用尽
ReplaceServiceAvailability
,切换到
BatchReplaceServiceAvailabily
,以减少 API 的数量
调用。通过此方法,您可以在单个 API 中更新多项服务
调用。
沙盒环境和生产环境中的端点
您可以通过以下命令调用沙盒环境和生产环境: 该 API。确保您已在 Google Cloud 项目中启用了这两个 API。 这两个 API 的范围相同,但端点不同。
生产端点:https://mapsbooking.googleapis.com/
沙盒端点:https://partnerdev-mapsbooking.googleapis.com/
以下是有关如何切换端点的 Java 示例:
// This block of code is for OAuth and is the same for prod and sandbox. GoogleCredential .fromStream(new FileInputStream(...)) .createScoped(Collections.singleton("https://www.googleapis.com/auth/mapsbooking")) // This block of code sets the endpoint. This is what you'd change to connect to the sandbox. new GoogleMapsBookingAPI.Builder(...) .setApplicationName(...) .setRootUrl("https://partnerdev-mapsbooking.googleapis.com/") // you add this to change the endpoint to use partnerdev. .build()