定向发放优惠
POST/api/v1/offers/grant
可信服务端给已验证客户发放指定优惠,需要显式 offers:grant 权限。
SDK 0.0.1更新于
发起请求
可信服务端给已验证客户发放指定优惠,需要显式 offers:grant 权限。
- 调用凭据
- 仅服务端 API Key。由可信后端调用。
- 所需权限
offers:grant
base URL 和 App ID 来自 SDK 接入页。示例使用占位值,不会执行请求。服务端 Key 不可放入浏览器。
1curl -X POST "$GROOVE_BASE_URL/api/v1/offers/grant" \2 -H "Authorization: Bearer $GROOVE_SECRET_KEY" \3 -H "X-Groove-Project: $GROOVE_PROJECT_ID" \4 -H "X-Groove-Environment: sandbox" \5 -H "Content-Type: application/json" \6 -d '{7 "customerId": "00000000-0000-4000-8000-000000000001",8 "couponId": "00000000-0000-4000-8000-000000000001",9 "requestId": "00000000-0000-4000-8000-000000000001"10}'
响应选项卡列出字段类型,不是响应示例;实际值由客户状态决定。
请求参数
JSON 请求体
customerIdstring必填Indiana 客户 ID。服务端从已验证身份关联;客户 Token 调用时省略并使用 Token 绑定的客户。
minLength: 1 · maxLength: 255
couponIduuid必填当前 App 和环境中的优惠券 UUID。
requestIduuid必填你的业务请求 UUID;同一次操作重试复用,新的操作生成新值。
响应字段
成功响应包含 requestId 和 scope。结合实际业务状态或 accepted 判断操作结果;可选字段不可用时省略。
HTTP 200 · application/json
requestIduuid必填服务端生成的 HTTP 请求 UUID,排查请求时提供这个值。
scopeobject必填响应实际所属的 App 和环境。Header 只能核对,不能切换 Key 范围。
展开子字段
projectIdstring必填凭据绑定的 App ID。
minLength: 1
environmentenum必填独立数据范围:sandbox 或 live。
查看允许值
"sandbox""live"
offerobject | null必填本次操作的 offer 值,类型和约束见字段标注。
展开子字段
iduuid必填本次操作的 id 值,类型和约束见字段标注。
couponIduuid必填当前 App 和环境中的优惠券 UUID。
statusenum必填本次操作的 status 值,类型和约束见字段标注。
查看允许值
"issued""reserved""redeemed""revoked""expired"
issuedAtdate-time必填本次操作的 issuedAt 值,类型和约束见字段标注。
expiresAtdate-time必填ISO 8601 UTC 到期时间;会话和预占到期后不能继续使用。
couponobject必填本次操作的 coupon 值,类型和约束见字段标注。
展开子字段
namestring必填客户或对象的展示名称,不作为身份唯一键。
discountobject | object必填本次操作的 discount 值,类型和约束见字段标注。
展开子字段
type"percent" | "amount"必填本次操作的 type 值,类型和约束见字段标注。
percentOffinteger可选本次操作的 percentOff 值,类型和约束见字段标注。
min: 1 · max: 100
amountOffCentsinteger可选本次操作的 amountOffCents 值,类型和约束见字段标注。
min: 1 · max: 100000000
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"
durationobject | object | object必填本次操作的 duration 值,类型和约束见字段标注。
展开子字段
type"once" | "repeating" | "forever"必填本次操作的 type 值,类型和约束见字段标注。
monthsinteger可选本次操作的 months 值,类型和约束见字段标注。
min: 1 · max: 36
appliesToobject | object必填本次操作的 appliesTo 值,类型和约束见字段标注。
展开子字段
type"all" | "plans"必填本次操作的 type 值,类型和约束见字段标注。
planIdsarray可选本次操作的 planIds 值,类型和约束见字段标注。
minItems: 1 · maxItems: 50
reasonenum | null必填拒绝原因或账本操作说明;结合 accepted / 状态判断结果。
处理错误
常见失败| 错误码 | 处理方式 |
|---|
| UNAUTHENTICATED | 核对 Key,或将过期客户 Token 重新签发一次。 |
| FORBIDDEN | 核对当前 Key 权限与客户访问范围。 |
| INVALID_REQUEST | 检查字段类型、UUID、十进制字符串和互斥字段。 |
| SCOPE_MISMATCH | 使用凭据绑定的 App 和环境。 |
常见失败
UNAUTHENTICATED
- 处理方式
- 核对 Key,或将过期客户 Token 重新签发一次。
FORBIDDEN
- 处理方式
- 核对当前 Key 权限与客户访问范围。
INVALID_REQUEST
- 处理方式
- 检查字段类型、UUID、十进制字符串和互斥字段。
SCOPE_MISMATCH
- 处理方式
- 使用凭据绑定的 App 和环境。
相关:完整请求与错误约定·返回接口索引