MethodPathSummaryAuth
GET/v1/escalate/granteesActive resellers the session scope may grant line groups toSession
GET/v1/escalate/line-groupsList the line groups the session scope may use for B/C (own and granted) with their tierSession
GET/v1/escalate/line-groups/grantsThe grants the session scope made, newest first, revoked ones includedSession
POST/v1/escalate/line-groups/grantsGrant a platform line group to an active resellerSession
DELETE/v1/escalate/line-groups/grants/{grant_id}Revoke a grant; the reseller's packages using the line group are withdrawn and their B/C clearedSession
PUT/v1/escalate/line-groups/{line_group_id}/tierMark one of the session scope's own line groups 普通 / 高防 / 无限防Session

Contract file:api/control-escalate.openapi.yaml

Operation details

GET /v1/escalate/grantees

Active resellers the session scope may grant line groups to

operationId
listEscalateGrantees
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:node_scheduling.manage

Description (from the contract)

The platform gets the active resellers (an active tenant with an active reseller profile); a tenant (reseller) gets an empty list, as 1.0.35 has one level. Replaces GET /v1/admin/tenant-scopes in the grant dialog.

Parameters

listEscalateGrantees Parameters
NameInTypeRequiredDescription
searchquerystringNoShort tenant ID, or a case-insensitive substring of the tenant name or scope UUID.

Responses

listEscalateGrantees Responses
StatusDescription
200At most 200 resellers ordered by name.

Fields:items: array<Grantee>

400Error.
401Error.
403Error.
503Error.

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/escalate/line-groups

List the line groups the session scope may use for B/C (own and granted) with their tier

operationId
listEscalateLineGroups
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:node_scheduling.read

Responses

listEscalateLineGroups Responses
StatusDescription
200Usable line groups.

Fields:items: array<UsableLineGroup>

400Error.
401Error.
403Error.
503Error.

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/escalate/line-groups/grants

The grants the session scope made, newest first, revoked ones included

operationId
listEscalateLineGroupGrants
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:node_scheduling.manage

Description (from the contract)

NODE-N05. Cursor paged by (created_at, id) descending; next_cursor is empty on the last page. Only the session scope's own grants (grantor_scope_id); a reseller gets none, as 1.0.35 has one level. Revoked grants carry revoked_at so the history stays visible; only live ones can be revoked.

Parameters

listEscalateLineGroupGrants Parameters
NameInTypeRequiredDescription
cursorquerystringNo—
limitqueryintegerNo—

Responses

listEscalateLineGroupGrants Responses
StatusDescription
200A page of grants.

Fields:items: array<GrantRecord> next_cursor: string

400Error.
401Error.
403Error.
503Error.

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/escalate/line-groups/grants

Grant a platform line group to an active reseller

operationId
grantEscalateLineGroup
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:node_scheduling.manage

Required features:module.escalate

Description (from the contract)

Only the platform grants, only its own line groups, and only to an active reseller (GET /v1/escalate/grantees). 1.0.35 has one reseller level, so may_regrant must be false (422 escalate_regrant_unsupported); a grantee that is not an active reseller is 422 escalate_grantee_not_reseller; a tenant caller or a line group the platform does not own is 403 escalate_grant_denied.

Request body

application/json · Required:Yes

grantEscalateLineGroup Request body
NameTypeRequiredDescription
owner_scope_idstring(uuid)Yes—
line_group_idstring(uuid)Yes—
grantee_scope_idstring(uuid)Yes—
may_regrantbooleanYesMust be false in 1.0.35.

Responses

grantEscalateLineGroup Responses
StatusDescription
201The grant.

Fields:id: string(uuid) owner_scope_id: string(uuid) line_group_id: string(uuid) grantor_scope_id: string(uuid) grantee_scope_id: string(uuid) may_regrant: boolean created_at: string(date-time)

400Error.
401Error.
403Error.
404Error.
409Error.
422Error.
503Error.

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

DELETE /v1/escalate/line-groups/grants/{grant_id}

Revoke a grant; the reseller's packages using the line group are withdrawn and their B/C cleared

operationId
revokeEscalateLineGroupGrant
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:node_scheduling.manage

Required features:module.escalate

Description (from the contract)

In one transaction: the grant (and anything passed on) is revoked, every published package of the reseller that uses the line group is withdrawn, and B/C pointing at it are cleared (audited in the reseller's scope as package.escalate_policy.grant_revoked). Sold subscriptions keep their snapshot until they expire.

Parameters

revokeEscalateLineGroupGrant Parameters
NameInTypeRequiredDescription
grant_idpathstring(uuid)Yes—

Responses

revokeEscalateLineGroupGrant Responses
StatusDescription
200What the revocation did.

Fields:revoked: integer withdrawn_products: array<string(uuid)> cleared_policies: array<string(uuid)>

400Error.
401Error.
403Error.
404Error.
503Error.

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.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

PUT /v1/escalate/line-groups/{line_group_id}/tier

Mark one of the session scope's own line groups 普通 / 高防 / 无限防

operationId
putEscalateLineGroupTier
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:node_scheduling.manage

Required features:module.escalate

Parameters

putEscalateLineGroupTier Parameters
NameInTypeRequiredDescription
line_group_idpathstring(uuid)Yes—

Request body

application/json · Required:Yes

putEscalateLineGroupTier Request body
NameTypeRequiredDescription
tierstring: normal / high_defense / unlimitedYes—

Responses

putEscalateLineGroupTier Responses
StatusDescription
200The tier written.

Fields:line_group_id: string(uuid) tier: string: normal / high_defense / unlimited

400Error.
401Error.
403Error.
404Error.
503Error.

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.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list