MethodPathSummaryAuth
GET/v1/admin/billing-bridge/keysList the platform billing bridge keysSession
POST/v1/admin/billing-bridge/keysCreate a platform billing bridge keySession
POST/v1/admin/billing-bridge/keys/{id}/revokeRevoke a platform billing bridge keySession
POST/v1/admin/billing-bridge/keys/{id}/rotateRotate the secret of a platform billing bridge keySession
GET/v1/admin/billing-bridge/logsList the platform billing bridge call logSession
GET/v1/admin/billing-bridge/settingsRead the platform billing bridge plugin settingsSession
PUT/v1/admin/billing-bridge/settingsChange the platform billing bridge plugin settingsSession

Contract file:api/openapi/v1/control.yaml

Operation details

GET /v1/admin/billing-bridge/keys

List the platform billing bridge keys

operationId
listPlatformBillingBridgeKeys
Auth
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

All of:billing_bridge.manage

Description (from the contract)

Bearer session of the platform owner (platform session, billing_bridge.manage). 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.

Parameters

listPlatformBillingBridgeKeys Parameters
NameInTypeRequiredDescription
limitqueryintegerNo—
cursorquerystringNo—

Responses

listPlatformBillingBridgeKeys Responses
StatusDescription
200One page of keys.

Fields:items: array<BillingBridgeKey> next_cursor: string has_more: boolean

400The request body or parameters are invalid.
401Authentication failed or the session is invalid.
403The authenticated principal is not allowed to perform the action.
503A required dependency is unavailable.

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

POST /v1/admin/billing-bridge/keys

Create a platform billing bridge key

operationId
createPlatformBillingBridgeKey
Auth
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

All of:billing_bridge.manage

Description (from the contract)

Bearer session of the platform owner (platform session, billing_bridge.manage), 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.

Request body

application/json · Required:Yes

createPlatformBillingBridgeKey Request body
NameTypeRequiredDescription
namestringYes—
ip_allowlistarray<string>Yes—
expires_atstring(date-time)No—
step_up_tokenstringYes—

Responses

createPlatformBillingBridgeKey Responses
StatusDescription
201The key and its one-time secret.

Fields:key: BillingBridgeKey secret: string

400The request body or parameters are invalid.
401Authentication failed or the session is invalid.
403The authenticated principal is not allowed to perform the action.
415Content-Type must be exactly application/json without parameters.
503A required dependency is unavailable.

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

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

Revoke a platform billing bridge key

operationId
revokePlatformBillingBridgeKey
Auth
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

All of:billing_bridge.manage

Description (from the contract)

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

Parameters

revokePlatformBillingBridgeKey Parameters
NameInTypeRequiredDescription
idpathstring(uuid)Yes—

Request body

application/json · Required:Yes

revokePlatformBillingBridgeKey Request body
NameTypeRequiredDescription
expected_revisioninteger(int64)Yes—
step_up_tokenstringYes—

Responses

revokePlatformBillingBridgeKey Responses
StatusDescription
200The revoked key.

Fields: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)

400The request body or parameters are invalid.
401Authentication failed or the session is invalid.
403The authenticated principal is not allowed to perform the action.
404The requested resource was not found.
409The requested state conflicts with an existing resource or idempotency fact.
503A required dependency is unavailable.

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

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

Rotate the secret of a platform billing bridge key

operationId
rotatePlatformBillingBridgeKey
Auth
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

All of:billing_bridge.manage

Description (from the contract)

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.

Parameters

rotatePlatformBillingBridgeKey Parameters
NameInTypeRequiredDescription
idpathstring(uuid)Yes—

Request body

application/json · Required:Yes

rotatePlatformBillingBridgeKey Request body
NameTypeRequiredDescription
expected_revisioninteger(int64)Yes—
step_up_tokenstringYes—

Responses

rotatePlatformBillingBridgeKey Responses
StatusDescription
200The key and its new one-time secret.

Fields:key: BillingBridgeKey secret: string

400The request body or parameters are invalid.
401Authentication failed or the session is invalid.
403The authenticated principal is not allowed to perform the action.
404The requested resource was not found.
409The requested state conflicts with an existing resource or idempotency fact.
503A required dependency is unavailable.

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

GET /v1/admin/billing-bridge/logs

List the platform billing bridge call log

operationId
listPlatformBillingBridgeLogs
Auth
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

All of:billing_bridge.manage

Description (from the contract)

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.

Parameters

listPlatformBillingBridgeLogs Parameters
NameInTypeRequiredDescription
limitqueryintegerNo—
cursorquerystringNo—

Responses

listPlatformBillingBridgeLogs Responses
StatusDescription
200One page of log rows.

Fields:items: array<BillingBridgeLogEntry> next_cursor: string has_more: boolean

400The request body or parameters are invalid.
401Authentication failed or the session is invalid.
403The authenticated principal is not allowed to perform the action.
503A required dependency is unavailable.

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

GET /v1/admin/billing-bridge/settings

Read the platform billing bridge plugin settings

operationId
getPlatformBillingBridgeSettings
Auth
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

All of:billing_bridge.manage

Description (from the contract)

Platform 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).

Responses

getPlatformBillingBridgeSettings Responses
StatusDescription
200Current settings.

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

401Authentication failed or the session is invalid.
403The authenticated principal is not allowed to perform the action.
503A required dependency is unavailable.

What to do on failure

  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

PUT /v1/admin/billing-bridge/settings

Change the platform billing bridge plugin settings

operationId
putPlatformBillingBridgeSettings
Auth
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

All of:billing_bridge.manage

Description (from the contract)

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.

Request body

application/json · Required:Yes

putPlatformBillingBridgeSettings Request body
NameTypeRequiredDescription
sso_require_mfabooleanYes—
expected_revisioninteger(int64)Yes—
step_up_tokenstringYes—

Responses

putPlatformBillingBridgeSettings Responses
StatusDescription
200Saved settings.

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

400The request body or parameters are invalid.
401Authentication failed or the session is invalid.
403The authenticated principal is not allowed to perform the action.
409The requested state conflicts with an existing resource or idempotency fact.
503A required dependency is unavailable.

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list