Skip to content
登录
Veridien Docs

身份认证

每个需要认证的请求都携带一把 Bearer API 密钥。密钥标明你正在操作哪家酒店,以及你被允许使用哪些权限范围。这里没有用户名、密码或 OAuth 流程:一个集成对应一把密钥。

Veridien API 密钥形如:

vrdn_live_xxxxxxxxxxxxxxxxxxxx
  • 它以 vrdn_live_ 开头。
  • 它只在创建时显示一次。Veridien 只保存密钥的 SHA-256 哈希值,密钥无法再次取回,只能吊销并重新签发。
  • 它绑定一家酒店。酒店由密钥本身确定,因此任何接口都不会要你传酒店 id。

像对待密码一样对待密钥

一把密钥可以凭它的权限范围操作你线上的酒店数据。请把它放在服务端的密钥库或环境变量里,绝不要写进客户端代码或公开仓库。如果密钥泄露,请立即吊销并签发一把新的。

在仪表盘的设置 → API 密钥中创建密钥:

  1. 点击创建密钥,起一个说明用途的名称(例如 Sunrise Bay booking engine)。
  2. 勾选该集成所需的权限范围,按最小必要授予。
  3. 复制确认对话框中显示的密钥并妥善保存。它不会再次显示。

密钥随时可以在同一界面吊销。被吊销的密钥立即失效,之后使用它的请求会返回 401

把密钥放进每个请求的 Authorization 头:

curl https://veridien.app/api/v1/me \
  -H "Authorization: Bearer vrdn_live_xxxxxxxxxxxxxxxxxxxx"

成功调用 /me 说明密钥可用,并会返回它对应的酒店与权限范围:

{
  "property_id": "p_8f2a1c",
  "property_slug": "sunrise-bay",
  "scopes": ["availability:read", "reservations:write", "folio:write"],
  "request_id": "req_a1b2c3d4e5"
}

如果这个头缺失或格式不对,你会收到 401 missing_api_key;如果密钥未知、已停用或已过期,你会收到 401 invalid_api_key

只有持有某个接口所需的权限范围,密钥才能调用该接口。缺少权限范围时调用会返回 403 insufficient_scope。权限范围采用 resource:action 的形式。

权限范围授予的能力
availability:read读取房量与房价(/availability/rates/room-types/services,以及已发布的优惠)。
rates:read读取房价管理类资源(GET /rate-plans/{id}/intervals/inclusions/promo-codes)。定价读取接口(/rates/rate-plans)接受 availability:read
rates:write创建、更新与删除房价方案和促销、季节区间、包含项与额度,以及促销码(/rate-plans/intervals/promo-codes)。
reservations:read列出与读取预订(/reservations/reservations/{id})。
reservations:write创建锁房、确认预订与取消(/holds/holds/{id}/confirm/reservations/{id}/cancel)。
guests:read读取客人档案,不含个人身份信息。
guests:read:pii额外返回客人的个人身份信息(邮箱、电话、地址、证件)。
guests:write注册、关联与更新客人(POST /guestsPATCH /guests/{id})。
loyalty:read读取客人的积分余额、等级与流水。
loyalty:write兑换积分(/loyalty/redemptions)。
folio:read读取一条预订的账单。
folio:write向账单入账费用(/reservations/{id}/folio/charges)。
webhooks:manage预留给即将推出的 webhook 订阅管理。

最小权限

只授予集成真正需要的权限范围。一个只读的房量组件只需要 availability:read;一个完整的预订引擎通常需要 availability:readguests:writereservations:writefolio:write,如果还要展示积分,再加上 loyalty:*

客人档案分为基础视图和个人信息视图。只持有 guests:read 时,你会收到标识符与非敏感字段(姓名、国籍、状态、本地居民核验标记)。若要额外收到 emailphoneaddress 与证件字段,密钥还必须持有 guests:read:pii。这样你就可以做一个面向公众的组件,读取客人状态而完全不暴露联系方式。

有两个元信息接口无需密钥、也无需权限范围:

  • GET /health:存活探测,返回 { "status": "ok" }
  • GET /openapi.json:整套 API 的 OpenAPI 3.1 描述。

其余接口都需要一把持有相应权限范围的有效密钥。

  • 接口约定:错误、幂等、分页与调用限流。
  • 快速上手:从密钥到已确认预订的完整预订流程。