解析 Offering
POST/api/v1/offerings/resolve
返回已发布 Offering Version、原始层级、候选 Product 与逐项 availability;不执行购买,Customer 身份与 App/环境由凭据约束。
API v1更新于
发起请求
返回已发布 Offering Version、原始层级、候选 Product 与逐项 availability;不执行购买,Customer 身份与 App/环境由凭据约束。
- 调用凭据
- 服务端 API Key 或客户 Token。客户调用不能选择其他客户。
- 所需权限
entitlements:read
base URL 和 App ID 来自 SDK 接入页。示例使用占位值,不会执行请求。服务端 Key 不可放入浏览器。
1curl -X POST "$INDIANA_BASE_URL/api/v1/offerings/resolve" \2 -H "Authorization: Bearer $INDIANA_CUSTOMER_TOKEN" \3 -H "X-Indiana-Project: $INDIANA_PROJECT_ID" \4 -H "X-Indiana-Environment: sandbox" \5 -H "Content-Type: application/json" \6 -d '{7 "selector": {8 "type": "version",9 "versionId": "00000000-0000-4000-8000-000000000001"10 },11 "commerce": {12 "provider": "stripe",13 "currency": "USD"14 }15}'
响应选项卡列出字段类型,不是响应示例;实际值由客户状态决定。
请求参数
JSON 请求体
selectorobject | object | object | object必填本次操作的 selector 值,类型和约束见字段标注。
展开子字段
type"current" | "id" | "lookup_key" | "version"必填本次操作的 type 值,类型和约束见字段标注。
iduuid可选本次操作的 id 值,类型和约束见字段标注。
lookupKeystring可选本次操作的 lookupKey 值,类型和约束见字段标注。
minLength: 1 · maxLength: 200
versionIduuid可选不可变 product_versions.id,可筛选历史版本。
customerIdstring可选Indiana 客户 ID。服务端从已验证身份关联;客户 Token 调用时省略并使用 Token 绑定的客户。
minLength: 1
commerceobject必填本次操作的 commerce 值,类型和约束见字段标注。
展开子字段
providerenum必填本次操作的 provider 值,类型和约束见字段标注。
查看允许值
"stripe""apple""google"
currencyenum必填已发布价格支持的币种代码。
查看允许值
"USD""EUR""CNY""GBP""JPY""CAD""AUD""NZD""CHF""HKD""SGD""KRW""INR""BRL""MXN""TWD""THB""IDR""MYR""PHP""VND""ZAR""AED""SAR""SEK""NOK""DKK""PLN""CZK""HUF""ILS""TRY""RON"
requirementobject可选本次操作的 requirement 值,类型和约束见字段标注。
展开子字段
internal_feature_iduuid必填本次操作的 internal_feature_id 值,类型和约束见字段标注。
quantitystring必填业务数量按字段标注类型传入;积分操作用十进制字符串,避免浮点误差。quote/reserve/confirm/refund 要求正数;consume 可记录零费用事件。
pattern: ^(0|[1-9]\d{0,11})(\.\d{1,6})?$
propertiesobject必填服务端校验的计价属性,用于匹配维度和倍率。
entityIduuid可选当前客户范围内的实体 ID;只用于已配置的实体和许可功能。
响应字段
成功响应包含 requestId 和 scope。结合实际业务状态或 accepted 判断操作结果;可选字段不可用时省略。
HTTP 200 · application/json
requestIduuid必填服务端生成的 HTTP 请求 UUID,排查请求时提供这个值。
scopeobject必填响应实际所属的 App 和环境。Header 只能核对,不能切换 Key 范围。
展开子字段
projectIdstring必填凭据绑定的 App ID。
minLength: 1
environmentenum必填独立数据范围:sandbox 或 live。
查看允许值
"sandbox""live"
offeringobject必填本次操作的 offering 值,类型和约束见字段标注。
展开子字段
iduuid必填本次操作的 id 值,类型和约束见字段标注。
offeringIduuid必填本次操作的 offeringId 值,类型和约束见字段标注。
versioninteger必填本次操作的 version 值,类型和约束见字段标注。
max: 9007199254740991
documentobject必填已发布的 schemaVersion 3 设计。缓存命中时可为 null;直接 HTTP 调用方须用匹配缓存还原。
展开子字段
lookupKeystring必填本次操作的 lookupKey 值,类型和约束见字段标注。
minLength: 1 · maxLength: 200
displayNamestring必填本次操作的 displayName 值,类型和约束见字段标注。
minLength: 1 · maxLength: 1500
itemsarray必填本次操作的 items 值,类型和约束见字段标注。
maxItems: 20
展开子字段
type"product" | "group"必填本次操作的 type 值,类型和约束见字段标注。
productIduuid可选本次操作的 productId 值,类型和约束见字段标注。
keystring可选本次操作的 key 值,类型和约束见字段标注。
pattern: ^[a-zA-Z][a-zA-Z0-9_-]{0,63}$
namestring可选客户或对象的展示名称,不作为身份唯一键。
minLength: 1 · maxLength: 80
itemsarray可选本次操作的 items 值,类型和约束见字段标注。
maxItems: 20
metadataobject必填本次操作的 metadata 值,类型和约束见字段标注。
candidatesarray必填本次操作的 candidates 值,类型和约束见字段标注。
maxItems: 20
展开子字段
productIdstring必填本次操作的 productId 值,类型和约束见字段标注。
minLength: 1
productVersionIdstring必填本次操作的 productVersionId 值,类型和约束见字段标注。
minLength: 1
namestring必填客户或对象的展示名称,不作为身份唯一键。
minLength: 1 · maxLength: 120
actionenum必填本次业务动作。不同动作的目标字段和数量要求不同,见请求结构与示例。
查看允许值
"purchase""upgrade""addon""topup"
membershipIdstring | null必填本次操作的 membershipId 值,类型和约束见字段标注。
currencyenum必填已发布价格支持的币种代码。
查看允许值
"USD""EUR""CNY""GBP""JPY""CAD""AUD""NZD""CHF""HKD""SGD""KRW""INR""BRL""MXN""TWD""THB""IDR""MYR""PHP""VND""ZAR""AED""SAR""SEK""NOK""DKK""PLN""CZK""HUF""ILS""TRY""RON"
amountMinorstring必填本次操作的 amountMinor 值,类型和约束见字段标注。
pattern: ^(0|[1-9]\d{0,8})$
intervalenum必填本次操作的 interval 值,类型和约束见字段标注。
查看允许值
"free""week""month""year""one_time"
intervalCountinteger必填收费周期的次数:week 最多 156、month 最多 36、year 最多 3,省略为 1;free 和 one_time 不接受。额度重置周期独立。
min: 1 · max: 156
availabilityarray必填本次操作的 availability 值,类型和约束见字段标注。
maxItems: 20
展开子字段
productVersionIduuid必填本次操作的 productVersionId 值,类型和约束见字段标注。
availableboolean必填本次操作的 available 值,类型和约束见字段标注。
reasonenum | null必填拒绝原因或账本操作说明;结合 accepted / 状态判断结果。
checkobject | null必填本次操作的 check 值,类型和约束见字段标注。
展开子字段
internal_feature_idstring必填本次操作的 internal_feature_id 值,类型和约束见字段标注。
minLength: 1
namestring必填客户或对象的展示名称,不作为身份唯一键。
minLength: 1 · maxLength: 120
kindenum必填本次操作的 kind 值,类型和约束见字段标注。
查看允许值
"access""metered""credit"
quantityobject必填业务数量按字段标注类型传入;积分操作用十进制字符串,避免浮点误差。quote/reserve/confirm/refund 要求正数;consume 可记录零费用事件。
allowedboolean必填当前评估时是否允许此功能。仅用于展示,业务操作仍需后端授权。
reasonenum | null必填拒绝原因或账本操作说明;结合 accepted / 状态判断结果。
previewobject | null必填本次操作的 preview 值,类型和约束见字段标注。
展开子字段
scenarioenum必填本次操作的 scenario 值,类型和约束见字段标注。
查看允许值
"feature_flag""usage_limit"
candidatesarray必填本次操作的 candidates 值,类型和约束见字段标注。
maxItems: 20
展开子字段
productIdstring必填本次操作的 productId 值,类型和约束见字段标注。
minLength: 1
productVersionIdstring必填本次操作的 productVersionId 值,类型和约束见字段标注。
minLength: 1
namestring必填客户或对象的展示名称,不作为身份唯一键。
minLength: 1 · maxLength: 120
actionenum必填本次业务动作。不同动作的目标字段和数量要求不同,见请求结构与示例。
查看允许值
"purchase""upgrade""addon""topup"
membershipIdstring | null必填本次操作的 membershipId 值,类型和约束见字段标注。
currencyenum必填已发布价格支持的币种代码。
查看允许值
"USD""EUR""CNY""GBP""JPY""CAD""AUD""NZD""CHF""HKD""SGD""KRW""INR""BRL""MXN""TWD""THB""IDR""MYR""PHP""VND""ZAR""AED""SAR""SEK""NOK""DKK""PLN""CZK""HUF""ILS""TRY""RON"
amountMinorstring必填本次操作的 amountMinor 值,类型和约束见字段标注。
pattern: ^(0|[1-9]\d{0,8})$
intervalenum必填本次操作的 interval 值,类型和约束见字段标注。
查看允许值
"free""week""month""year""one_time"
intervalCountinteger必填收费周期的次数:week 最多 156、month 最多 36、year 最多 3,省略为 1;free 和 one_time 不接受。额度重置周期独立。
min: 1 · max: 156
处理错误
常见失败| 错误码 | 处理方式 |
|---|
| UNAUTHENTICATED | 核对 Key,或将过期客户 Token 重新签发一次。 |
| FORBIDDEN | 核对当前 Key 权限与客户访问范围。 |
| INVALID_REQUEST | 检查字段类型、UUID、十进制字符串和互斥字段。 |
| SCOPE_MISMATCH | 使用凭据绑定的 App 和环境。 |
常见失败
UNAUTHENTICATED
- 处理方式
- 核对 Key,或将过期客户 Token 重新签发一次。
FORBIDDEN
- 处理方式
- 核对当前 Key 权限与客户访问范围。
INVALID_REQUEST
- 处理方式
- 检查字段类型、UUID、十进制字符串和互斥字段。
SCOPE_MISMATCH
- 处理方式
- 使用凭据绑定的 App 和环境。
相关:完整请求与错误约定·返回接口索引