开放接口

/v1/billing-bridge

18 个接口 · 11 个接口支持 API Key

← 全部分组 · 第一次调用?先看教程:认证、权限、请求与响应、常见失败

方法路径摘要认证
GET/v1/billing-bridge/keysList the reseller billing bridge keys登录会话
POST/v1/billing-bridge/keysCreate a reseller billing bridge key登录会话
POST/v1/billing-bridge/keys/{id}/revokeRevoke a reseller billing bridge key登录会话
POST/v1/billing-bridge/keys/{id}/rotateRotate the secret of a reseller billing bridge key登录会话
GET/v1/billing-bridge/logsList the reseller billing bridge call log登录会话
GET/v1/billing-bridge/pingBilling system TestConnection with a signed bridge keyAPI Key 可调
GET/v1/billing-bridge/productsBilling system ConfigOptions — the key owner's published packagesAPI Key 可调
POST/v1/billing-bridge/servicesBilling system CreateAccount — open a CDN service for a billing serviceAPI Key 可调
GET/v1/billing-bridge/services/{system}/{service_id}Billing system ClientArea — one service of the key ownerAPI Key 可调
POST/v1/billing-bridge/services/{system}/{service_id}/changeBilling system ChangePackageAPI Key 可调
POST/v1/billing-bridge/services/{system}/{service_id}/renewBilling system RenewAPI Key 可调
POST/v1/billing-bridge/services/{system}/{service_id}/ssoBilling system ServiceSingleSignOn — one-time console sign-in linkAPI Key 可调
POST/v1/billing-bridge/services/{system}/{service_id}/suspendBilling system Suspend — stop this service onlyAPI Key 可调
POST/v1/billing-bridge/services/{system}/{service_id}/terminateBilling system TerminateAPI Key 可调
POST/v1/billing-bridge/services/{system}/{service_id}/unsuspendBilling system UnsuspendAPI Key 可调
GET/v1/billing-bridge/settingsRead the reseller billing bridge plugin settings登录会话
PUT/v1/billing-bridge/settingsChange the reseller billing bridge plugin settings登录会话
GET/v1/billing-bridge/usageBilling system UsageUpdate — current billing cycle usageAPI Key 可调

契约文件:api/openapi/v1/control.yaml

接口详情

GET /v1/billing-bridge/keys

List the reseller billing bridge keys

operationId
listResellerBillingBridgeKeys
认证
  • 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
所需权限

全部需要:reseller.customers.manage

说明(契约原文)

Bearer session of the active reseller (tenant session, reseller.customers.manage; 403 reseller_inactive when the tenant is not an active reseller). Lease feature module.billing.bridge (403 entitlement_feature_denied when the plugin is not enabled). Keys are paged by (created_at DESC, id DESC); the secret is never returned here.

参数

listResellerBillingBridgeKeys 参数
名称位置类型必填说明
limitqueryinteger否—
cursorquerystring否—

响应

listResellerBillingBridgeKeys 响应
状态码说明
200One page of keys.

字段:items: array<BillingBridgeKey> next_cursor: string has_more: boolean

400请求体或参数不合法。
401认证失败或会话已失效。
403当前身份没有执行该操作的权限。
503A required dependency is unavailable.

失败时怎么办

  • 400 按字段说明修正参数或请求体再发;不要原样重试。
  • 401 检查凭据格式、是否过期或被轮换。
  • 403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。
  • 503 依赖暂不可用:稍后用原 Idempotency-Key 重试。

↑ 回到列表

POST /v1/billing-bridge/keys

Create a reseller billing bridge key

operationId
createResellerBillingBridgeKey
认证
  • 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
所需权限

全部需要:reseller.customers.manage

说明(契约原文)

Bearer session of the active reseller (tenant session, reseller.customers.manage; 403 reseller_inactive when the tenant is not an active reseller), MFA step-up proof (audience billing-bridge, action billing_bridge.key.create) in step_up_token; 403 mfa_step_up_required without it. ip_allowlist is required (1–32 addresses or CIDR networks, no /0). The secret is returned once in this response and only its pepper-derived seed is stored. Audit billing_bridge.key.created.

请求体

application/json · 必填:是

createResellerBillingBridgeKey 请求体
名称类型必填说明
namestring是—
ip_allowlistarray<string>是—
expires_atstring(date-time)否—
step_up_tokenstring是—

响应

createResellerBillingBridgeKey 响应
状态码说明
201The key and its one-time secret.

字段:key: BillingBridgeKey secret: string

400请求体或参数不合法。
401认证失败或会话已失效。
403当前身份没有执行该操作的权限。
415Content-Type must be exactly application/json without parameters.
503A required dependency is unavailable.

失败时怎么办

  • 400 按字段说明修正参数或请求体再发;不要原样重试。
  • 401 检查凭据格式、是否过期或被轮换。
  • 403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。
  • 503 依赖暂不可用:稍后用原 Idempotency-Key 重试。

↑ 回到列表

POST /v1/billing-bridge/keys/{id}/revoke

Revoke a reseller billing bridge key

operationId
revokeResellerBillingBridgeKey
认证
  • 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
所需权限

全部需要:reseller.customers.manage

说明(契约原文)

Step-up action billing_bridge.key.revoke bound to the key id. Revocation is final. Audit billing_bridge.key.revoked.

参数

revokeResellerBillingBridgeKey 参数
名称位置类型必填说明
idpathstring(uuid)是—

请求体

application/json · 必填:是

revokeResellerBillingBridgeKey 请求体
名称类型必填说明
expected_revisioninteger(int64)是—
step_up_tokenstring是—

响应

revokeResellerBillingBridgeKey 响应
状态码说明
200The revoked key.

字段:id: string(uuid) key_id: string owner_scope_id: string(uuid) owner_kind: string: platform / reseller name: string ip_allowlist: array<string> status: string: active / revoked expires_at: string(date-time) last_used_at: string(date-time) created_by: string(uuid) revision: integer(int64) created_at: string(date-time) updated_at: string(date-time) revoked_at: string(date-time)

400请求体或参数不合法。
401认证失败或会话已失效。
403当前身份没有执行该操作的权限。
404请求的资源不存在。
409请求的状态与已有资源或幂等记录冲突。
503A required dependency is unavailable.

失败时怎么办

  • 400 按字段说明修正参数或请求体再发;不要原样重试。
  • 401 检查凭据格式、是否过期或被轮换。
  • 403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。
  • 404 资源不存在或不属于当前租户。
  • 409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。
  • 503 依赖暂不可用:稍后用原 Idempotency-Key 重试。

↑ 回到列表

POST /v1/billing-bridge/keys/{id}/rotate

Rotate the secret of a reseller billing bridge key

operationId
rotateResellerBillingBridgeKey
认证
  • 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
所需权限

全部需要:reseller.customers.manage

说明(契约原文)

Step-up action billing_bridge.key.rotate bound to the key id. The old secret stops working at once; the new one is returned once. 409 revision_conflict on a stale expected_revision, 409 key_revoked for a revoked key. Audit billing_bridge.key.rotated.

参数

rotateResellerBillingBridgeKey 参数
名称位置类型必填说明
idpathstring(uuid)是—

请求体

application/json · 必填:是

rotateResellerBillingBridgeKey 请求体
名称类型必填说明
expected_revisioninteger(int64)是—
step_up_tokenstring是—

响应

rotateResellerBillingBridgeKey 响应
状态码说明
200The key and its new one-time secret.

字段:key: BillingBridgeKey secret: string

400请求体或参数不合法。
401认证失败或会话已失效。
403当前身份没有执行该操作的权限。
404请求的资源不存在。
409请求的状态与已有资源或幂等记录冲突。
503A required dependency is unavailable.

失败时怎么办

  • 400 按字段说明修正参数或请求体再发;不要原样重试。
  • 401 检查凭据格式、是否过期或被轮换。
  • 403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。
  • 404 资源不存在或不属于当前租户。
  • 409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。
  • 503 依赖暂不可用:稍后用原 Idempotency-Key 重试。

↑ 回到列表

GET /v1/billing-bridge/logs

List the reseller billing bridge call log

operationId
listResellerBillingBridgeLogs
认证
  • 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
所需权限

全部需要:reseller.customers.manage

说明(契约原文)

Calls made with the caller's own keys only (owner scope), newest first, cursor paged. Denied calls carry the internal reason_code the caller of the bridge never sees. Rows are kept 90 days.

参数

listResellerBillingBridgeLogs 参数
名称位置类型必填说明
limitqueryinteger否—
cursorquerystring否—

响应

listResellerBillingBridgeLogs 响应
状态码说明
200One page of log rows.

字段:items: array<BillingBridgeLogEntry> next_cursor: string has_more: boolean

400请求体或参数不合法。
401认证失败或会话已失效。
403当前身份没有执行该操作的权限。
503A required dependency is unavailable.

失败时怎么办

  • 400 按字段说明修正参数或请求体再发;不要原样重试。
  • 401 检查凭据格式、是否过期或被轮换。
  • 403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。
  • 503 依赖暂不可用:稍后用原 Idempotency-Key 重试。

↑ 回到列表

GET /v1/billing-bridge/ping

Billing system TestConnection with a signed bridge key

operationId
pingBillingBridge
认证
  • API Key:请求头 Authorization: CdncaKey <key_id>.<secret>。有效权限是 Key 的范围与所有者当前权限的交集。
所需权限

契约没有单独标注权限码,权限要求见下方说明与 403 响应。

说明(契约原文)

Signed with the bridge headers (billingBridgeSignature). Any authentication failure (unknown key, clock skew over 300 s, replayed nonce, wrong signature, source IP outside the allowlist, revoked or expired key, owner no longer an active reseller) is 401 unauthorized with no further detail; the reason is written to the bridge log. A valid key whose plugin is not enabled gets 403 entitlement_feature_denied. Bridge keys authenticate only /v1/billing-bridge/* facade routes; every other route rejects them.

响应

pingBillingBridge 响应
状态码说明
200The key owner and server time.

字段:owner_kind: string: platform / reseller owner_scope_id: string(uuid) module_enabled: boolean server_time: string(date-time)

401认证失败或会话已失效。
403当前身份没有执行该操作的权限。

失败时怎么办

  • 401 检查凭据格式、是否过期或被轮换。
  • 403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。

↑ 回到列表

GET /v1/billing-bridge/products

Billing system ConfigOptions — the key owner's published packages

operationId
listBillingBridgeProducts
认证
  • API Key:请求头 Authorization: CdncaKey <key_id>.<secret>。有效权限是 Key 的范围与所有者当前权限的交集。
所需权限

契约没有单独标注权限码,权限要求见下方说明与 403 响应。

说明(契约原文)

A (reseller key): the reseller's own published packages with its wholesale cost per period; B (platform key): the platform's published packages (no wholesale_minor).

响应

listBillingBridgeProducts 响应
状态码说明
200Published packages.

字段:data: array<BillingBridgeProduct>

400{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
401{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
403{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
404{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
409{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
412{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
422{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
503{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.

失败时怎么办

  • 400 按字段说明修正参数或请求体再发;不要原样重试。
  • 401 检查凭据格式、是否过期或被轮换。
  • 403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。
  • 404 资源不存在或不属于当前租户。
  • 409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。
  • 412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。
  • 503 依赖暂不可用:稍后用原 Idempotency-Key 重试。

↑ 回到列表

POST /v1/billing-bridge/services

Billing system CreateAccount — open a CDN service for a billing service

operationId
createBillingBridgeService
认证
  • API Key:请求头 Authorization: CdncaKey <key_id>.<secret>。有效权限是 Key 的范围与所有者当前权限的交集。
所需权限

契约没有单独标注权限码,权限要求见下方说明与 403 响应。

说明(契约原文)

(owner, external_system, external_service_id) is the idempotency key of the service: repeating it with the same input returns the same service (200, created false); other input is 409 bridge_service_conflict. The customer of (external_system, external_client_id) is found or opened (A: a reseller customer, B: a platform direct customer; username {system}_{client_id}, a short suffix on a clash, random password not returned). A places the order for its customer and pays the prepaid wholesale cost (422 reseller_prepaid_insufficient, reseller_wholesale_unpriced); B opens the subscription without a charge.

参数

createBillingBridgeService 参数
名称位置类型必填说明
Idempotency-Keyheaderstring是{system}:{service_id}:{action}:{billing task, invoice ID or date}. A retry with the same key and body replays the result; another body with the same key is 409 bridge_service_conflict.

请求体

application/json · 必填:是

createBillingBridgeService 请求体
名称类型必填说明
external_systemstring: whmcs / zjmf / zjmf_cbap是—
external_service_idstring是—
external_client_idstring是—
clientobject是—
product_idstring(uuid)是—
product_revisioninteger(int64)否—
periodstring: month / quarter / year是—

响应

createBillingBridgeService 响应
状态码说明
201Opened (created true).

字段:data: BillingBridgeService

200Already opened by an earlier call (created false).

字段:data: BillingBridgeService

400{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
401{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
403{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
404{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
409{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
412{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
422{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
503{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.

失败时怎么办

  • 400 按字段说明修正参数或请求体再发;不要原样重试。
  • 401 检查凭据格式、是否过期或被轮换。
  • 403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。
  • 404 资源不存在或不属于当前租户。
  • 409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。
  • 412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。
  • 503 依赖暂不可用:稍后用原 Idempotency-Key 重试。

↑ 回到列表

GET /v1/billing-bridge/services/{system}/{service_id}

Billing system ClientArea — one service of the key owner

operationId
getBillingBridgeService
认证
  • API Key:请求头 Authorization: CdncaKey <key_id>.<secret>。有效权限是 Key 的范围与所有者当前权限的交集。
所需权限

契约没有单独标注权限码,权限要求见下方说明与 403 响应。

说明(契约原文)

A service of another owner, or not opened, is 404 bridge_service_not_found.

参数

getBillingBridgeService 参数
名称位置类型必填说明
systempathstring: whmcs / zjmf / zjmf_cbap是—
service_idpathstring是—

响应

getBillingBridgeService 响应
状态码说明
200The service.

字段:data: BillingBridgeService

400{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
401{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
403{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
404{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
409{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
412{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
422{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
503{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.

失败时怎么办

  • 400 按字段说明修正参数或请求体再发;不要原样重试。
  • 401 检查凭据格式、是否过期或被轮换。
  • 403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。
  • 404 资源不存在或不属于当前租户。
  • 409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。
  • 412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。
  • 503 依赖暂不可用:稍后用原 Idempotency-Key 重试。

↑ 回到列表

POST /v1/billing-bridge/services/{system}/{service_id}/change

Billing system ChangePackage

operationId
changeBillingBridgeService
认证
  • API Key:请求头 Authorization: CdncaKey <key_id>.<secret>。有效权限是 Key 的范围与所有者当前权限的交集。
所需权限

契约没有单独标注权限码,权限要求见下方说明与 403 响应。

说明(契约原文)

Upgrade or downgrade by the new and the current period price (same price is an upgrade), effective at once. A: between the reseller's packages, prorated wholesale difference charged or returned; B: between platform packages, no customer charge.

参数

changeBillingBridgeService 参数
名称位置类型必填说明
systempathstring: whmcs / zjmf / zjmf_cbap是—
service_idpathstring是—
Idempotency-Keyheaderstring是{system}:{service_id}:{action}:{billing task, invoice ID or date}. A retry with the same key and body replays the result; another body with the same key is 409 bridge_service_conflict.

请求体

application/json · 必填:否

changeBillingBridgeService 请求体
名称类型必填说明
product_idstring(uuid)是—
product_revisioninteger(int64)否—
periodstring: month / quarter / year否—

响应

changeBillingBridgeService 响应
状态码说明
200The service after the action.

字段:data: BillingBridgeService

400{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
401{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
403{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
404{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
409{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
412{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
422{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
503{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.

失败时怎么办

  • 400 按字段说明修正参数或请求体再发;不要原样重试。
  • 401 检查凭据格式、是否过期或被轮换。
  • 403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。
  • 404 资源不存在或不属于当前租户。
  • 409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。
  • 412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。
  • 503 依赖暂不可用:稍后用原 Idempotency-Key 重试。

↑ 回到列表

POST /v1/billing-bridge/services/{system}/{service_id}/renew

Billing system Renew

operationId
renewBillingBridgeService
认证
  • API Key:请求头 Authorization: CdncaKey <key_id>.<secret>。有效权限是 Key 的范围与所有者当前权限的交集。
所需权限

契约没有单独标注权限码,权限要求见下方说明与 403 响应。

说明(契约原文)

Extends the term by period (default the current period). A renews for its customer at the wholesale cost; B renews without a charge. A retry with the same Idempotency-Key does not renew twice.

参数

renewBillingBridgeService 参数
名称位置类型必填说明
systempathstring: whmcs / zjmf / zjmf_cbap是—
service_idpathstring是—
Idempotency-Keyheaderstring是{system}:{service_id}:{action}:{billing task, invoice ID or date}. A retry with the same key and body replays the result; another body with the same key is 409 bridge_service_conflict.

请求体

application/json · 必填:否

renewBillingBridgeService 请求体
名称类型必填说明
periodstring: month / quarter / year否—

响应

renewBillingBridgeService 响应
状态码说明
200The service after the action.

字段:data: BillingBridgeService

400{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
401{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
403{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
404{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
409{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
412{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
422{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
503{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.

失败时怎么办

  • 400 按字段说明修正参数或请求体再发;不要原样重试。
  • 401 检查凭据格式、是否过期或被轮换。
  • 403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。
  • 404 资源不存在或不属于当前租户。
  • 409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。
  • 412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。
  • 503 依赖暂不可用:稍后用原 Idempotency-Key 重试。

↑ 回到列表

POST /v1/billing-bridge/services/{system}/{service_id}/sso

Billing system ServiceSingleSignOn — one-time console sign-in link

operationId
issueBillingBridgeSso
认证
  • API Key:请求头 Authorization: CdncaKey <key_id>.<secret>。有效权限是 Key 的范围与所有者当前权限的交集。
所需权限

契约没有单独标注权限码,权限要求见下方说明与 403 响应。

说明(契约原文)

Returns {url, expires_at}: url is {console}/sso/bridge?ticket=…, valid 60 seconds and once. Only the ticket's digest is stored. Audited as billing_bridge.sso.issued.

参数

issueBillingBridgeSso 参数
名称位置类型必填说明
systempathstring: whmcs / zjmf / zjmf_cbap是—
service_idpathstring是—
Idempotency-Keyheaderstring是{system}:{service_id}:{action}:{billing task, invoice ID or date}. A retry with the same key and body replays the result; another body with the same key is 409 bridge_service_conflict.

请求体

application/json · 必填:否

issueBillingBridgeSso 请求体
名称类型必填说明
redirectstring否Same-site path after sign-in (default /).

响应

issueBillingBridgeSso 响应
状态码说明
200The sign-in link.

字段:data: object

400{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
401{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
403{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
404{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
409{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
412{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
422{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
503{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.

失败时怎么办

  • 400 按字段说明修正参数或请求体再发;不要原样重试。
  • 401 检查凭据格式、是否过期或被轮换。
  • 403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。
  • 404 资源不存在或不属于当前租户。
  • 409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。
  • 412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。
  • 503 依赖暂不可用:稍后用原 Idempotency-Key 重试。

↑ 回到列表

POST /v1/billing-bridge/services/{system}/{service_id}/suspend

Billing system Suspend — stop this service only

operationId
suspendBillingBridgeService
认证
  • API Key:请求头 Authorization: CdncaKey <key_id>.<secret>。有效权限是 Key 的范围与所有者当前权限的交集。
所需权限

契约没有单独标注权限码,权限要求见下方说明与 403 响应。

说明(契约原文)

Suspends the subscription: its sites stop being published, configuration is kept, the term keeps running. Other services of the customer are untouched. Already suspended succeeds without a change.

参数

suspendBillingBridgeService 参数
名称位置类型必填说明
systempathstring: whmcs / zjmf / zjmf_cbap是—
service_idpathstring是—
Idempotency-Keyheaderstring是{system}:{service_id}:{action}:{billing task, invoice ID or date}. A retry with the same key and body replays the result; another body with the same key is 409 bridge_service_conflict.

请求体

application/json · 必填:否

suspendBillingBridgeService 请求体
名称类型必填说明
reasonstring否—

响应

suspendBillingBridgeService 响应
状态码说明
200The service after the action.

字段:data: BillingBridgeService

400{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
401{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
403{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
404{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
409{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
412{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
422{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
503{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.

失败时怎么办

  • 400 按字段说明修正参数或请求体再发;不要原样重试。
  • 401 检查凭据格式、是否过期或被轮换。
  • 403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。
  • 404 资源不存在或不属于当前租户。
  • 409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。
  • 412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。
  • 503 依赖暂不可用:稍后用原 Idempotency-Key 重试。

↑ 回到列表

POST /v1/billing-bridge/services/{system}/{service_id}/terminate

Billing system Terminate

operationId
terminateBillingBridgeService
认证
  • API Key:请求头 Authorization: CdncaKey <key_id>.<secret>。有效权限是 Key 的范围与所有者当前权限的交集。
所需权限

契约没有单独标注权限码,权限要求见下方说明与 403 响应。

说明(契约原文)

Cancels the subscription (sites stop) and marks the service terminated; when the customer has no other live service of this owner, the CDN account is disabled. Later actions are 409 bridge_service_terminated.

参数

terminateBillingBridgeService 参数
名称位置类型必填说明
systempathstring: whmcs / zjmf / zjmf_cbap是—
service_idpathstring是—
Idempotency-Keyheaderstring是{system}:{service_id}:{action}:{billing task, invoice ID or date}. A retry with the same key and body replays the result; another body with the same key is 409 bridge_service_conflict.

响应

terminateBillingBridgeService 响应
状态码说明
200The service after the action.

字段:data: BillingBridgeService

400{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
401{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
403{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
404{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
409{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
412{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
422{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
503{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.

失败时怎么办

  • 400 按字段说明修正参数或请求体再发;不要原样重试。
  • 401 检查凭据格式、是否过期或被轮换。
  • 403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。
  • 404 资源不存在或不属于当前租户。
  • 409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。
  • 412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。
  • 503 依赖暂不可用:稍后用原 Idempotency-Key 重试。

↑ 回到列表

POST /v1/billing-bridge/services/{system}/{service_id}/unsuspend

Billing system Unsuspend

operationId
unsuspendBillingBridgeService
认证
  • API Key:请求头 Authorization: CdncaKey <key_id>.<secret>。有效权限是 Key 的范围与所有者当前权限的交集。
所需权限

契约没有单独标注权限码,权限要求见下方说明与 403 响应。

说明(契约原文)

Republishes the subscription. Already active succeeds without a change.

参数

unsuspendBillingBridgeService 参数
名称位置类型必填说明
systempathstring: whmcs / zjmf / zjmf_cbap是—
service_idpathstring是—
Idempotency-Keyheaderstring是{system}:{service_id}:{action}:{billing task, invoice ID or date}. A retry with the same key and body replays the result; another body with the same key is 409 bridge_service_conflict.

响应

unsuspendBillingBridgeService 响应
状态码说明
200The service after the action.

字段:data: BillingBridgeService

400{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
401{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
403{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
404{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
409{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
412{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
422{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
503{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.

失败时怎么办

  • 400 按字段说明修正参数或请求体再发;不要原样重试。
  • 401 检查凭据格式、是否过期或被轮换。
  • 403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。
  • 404 资源不存在或不属于当前租户。
  • 409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。
  • 412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。
  • 503 依赖暂不可用:稍后用原 Idempotency-Key 重试。

↑ 回到列表

GET /v1/billing-bridge/settings

Read the reseller billing bridge plugin settings

operationId
getResellerBillingBridgeSettings
认证
  • 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
所需权限

全部需要:reseller.customers.manage

说明(契约原文)

Reseller plugin settings. sso_require_mfa defaults to false (bridge SSO skips the second factor); revision 0 means never saved. Lease feature module.billing.bridge (403 entitlement_feature_denied).

响应

getResellerBillingBridgeSettings 响应
状态码说明
200Current settings.

字段:sso_require_mfa: boolean revision: integer(int64) updated_at?: string(date-time)

401认证失败或会话已失效。
403当前身份没有执行该操作的权限。
503A required dependency is unavailable.

失败时怎么办

  • 401 检查凭据格式、是否过期或被轮换。
  • 403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。
  • 503 依赖暂不可用:稍后用原 Idempotency-Key 重试。

↑ 回到列表

PUT /v1/billing-bridge/settings

Change the reseller billing bridge plugin settings

operationId
putResellerBillingBridgeSettings
认证
  • 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
所需权限

全部需要:reseller.customers.manage

说明(契约原文)

Requires a step-up proof (audience billing-bridge, action billing_bridge.settings.update, bound to the owner scope): turning MFA off weakens every bridge SSO sign-in. expected_revision is the revision read (0 for the first save); a stale revision is 409. Audited as billing_bridge.settings.updated.

请求体

application/json · 必填:是

putResellerBillingBridgeSettings 请求体
名称类型必填说明
sso_require_mfaboolean是—
expected_revisioninteger(int64)是—
step_up_tokenstring是—

响应

putResellerBillingBridgeSettings 响应
状态码说明
200Saved settings.

字段:sso_require_mfa: boolean revision: integer(int64) updated_at?: string(date-time)

400请求体或参数不合法。
401认证失败或会话已失效。
403当前身份没有执行该操作的权限。
409请求的状态与已有资源或幂等记录冲突。
503A required dependency is unavailable.

失败时怎么办

  • 400 按字段说明修正参数或请求体再发;不要原样重试。
  • 401 检查凭据格式、是否过期或被轮换。
  • 403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。
  • 409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。
  • 503 依赖暂不可用:稍后用原 Idempotency-Key 重试。

↑ 回到列表

GET /v1/billing-bridge/usage

Billing system UsageUpdate — current billing cycle usage

operationId
getBillingBridgeUsage
认证
  • API Key:请求头 Authorization: CdncaKey <key_id>.<secret>。有效权限是 Key 的范围与所有者当前权限的交集。
所需权限

契约没有单独标注权限码,权限要求见下方说明与 403 响应。

说明(契约原文)

Up to 100 ids; ids that are not the owner's opened services are left out.

参数

getBillingBridgeUsage 参数
名称位置类型必填说明
external_systemquerystring: whmcs / zjmf / zjmf_cbap是—
idsquerystring是Comma-separated external_service_id (1–100).

响应

getBillingBridgeUsage 响应
状态码说明
200Usage of the current billing cycle.

字段:data: array<BillingBridgeUsage>

400{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
401{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
403{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
404{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
409{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
412{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
422{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.
503{"error":{"code","message","request_id"}}. Codes: bridge_unauthenticated 401, entitlement_feature_denied 403, bridge_service_not_found 404, bridge_product_not_found 404, bridge_service_conflict 409, bridge_service_terminated 409, reseller_prepaid_insufficient 422, reseller_wholesale_unpriced 422, bridge_validation_error 400; other package commerce codes as they are.

失败时怎么办

  • 400 按字段说明修正参数或请求体再发;不要原样重试。
  • 401 检查凭据格式、是否过期或被轮换。
  • 403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。
  • 404 资源不存在或不属于当前租户。
  • 409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。
  • 412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。
  • 503 依赖暂不可用:稍后用原 Idempotency-Key 重试。

↑ 回到列表