MethodPathSummaryAuth
GET/v1/node-line-groups查询线路组当前修订列表Session
POST/v1/node-line-groups创建线路组首个不可变修订Session
GET/v1/node-line-groups/{id}查询线路组当前修订Session
PUT/v1/node-line-groups/{id}创建线路组下一不可变修订Session
DELETE/v1/node-line-groups/{id}软删除线路组并保留不可变修订历史Session
POST/v1/node-line-groups/{id}/decisions计算可审计的区域健康调度决策Session
POST/v1/node-line-groups/{id}/platform-default设为或取消平台默认线路组Session
GET/v1/node-line-groups/{id}/revisions/{revision}查询线路组历史修订Session
POST/v1/node-line-groups/{id}/rollback将历史配置复制为新的当前修订Session
GET/v1/node-line-groups/{id}/target-snapshots按来源修订查询 L1/L2 拓扑快照Session
POST/v1/node-line-groups/{id}/target-snapshots创建 L1 目标与 L2 候选拓扑快照Session

Contract file:api/control-node-scheduling.openapi.yaml

Operation details

GET /v1/node-line-groups

查询线路组当前修订列表

operationId
listNodeLineGroups
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

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

listNodeLineGroups Parameters
NameInTypeRequiredDescription
target_scope_idquerystring(uuid)NoTenant credentials may omit this value or repeat their own scope. Platform Bearer credentials omit it to target the platform scope; an explicit tenant scope is allowed only on read or decision operations.

Responses

listNodeLineGroups Responses
StatusDescription
200Current immutable revision of every visible line group.

Fields:items: array<LineGroupRevision>

400Stable error envelope; messages are not localization keys.
defaultStable error envelope; messages are not localization keys.

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.

↑ Back to list

POST /v1/node-line-groups

创建线路组首个不可变修订

operationId
createNodeLineGroup
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

The contract has no separate permission annotation; see the description below and the 403 response.

Description (from the contract)

租户会话管理自身作用域;平台会话未指定 target_scope_id 时管理本主控平台作用域,显式指定租户作用域时拒绝写入。

Parameters

createNodeLineGroup Parameters
NameInTypeRequiredDescription
target_scope_idquerystring(uuid)NoTenant credentials may omit this value or repeat their own scope. Platform Bearer credentials omit it to target the platform scope; an explicit tenant scope is allowed only on read or decision operations.
If-MatchheaderstringYesMust be the single exact quoted value "0".
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringYes—

Request body

application/json · Required:Yes

createNodeLineGroup Request body
NameTypeRequiredDescription
namestringYes—
regionstringNo—
resolved_valuestringNo留空时由服务端生成稳定的小写 DNS 标签;不要填写域名后缀、端口或 IP。
ipv4_resolved_valuestringNoIPv4 专用解析值;留空时由服务端按线路组 ID 生成稳定的小写 DNS 标签。
l2_config_idstring(uuid) | null(uuid)No同一作用域、同一区域且未引用其他 L2 配置的活动线路组;为空表示独立线路组。
failover_modestring: primary_offline / online_less_than_backup_countNo有主IP下线时逐个启用备用IP,或在线主IP数少于备用IP数时启用全部备用IP。
notestringNo—
sort_orderinteger(int32)No—
health_policyHealthPolicyYes—
endpointsarray<EndpointWrite>Yes—

Responses

createNodeLineGroup Responses
StatusDescription
201Revision 1 created. ETag is a quoted decimal revision.

Fields:group: LineGroupRevision replayed: boolean

400Stable error envelope; messages are not localization keys.
409Stable error envelope; messages are not localization keys.
defaultStable error envelope; messages are not localization keys.

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.

↑ Back to list

GET /v1/node-line-groups/{id}

查询线路组当前修订

operationId
getNodeLineGroup
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

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

getNodeLineGroup Parameters
NameInTypeRequiredDescription
idpathstring(uuid)Yes—
target_scope_idquerystring(uuid)NoTenant credentials may omit this value or repeat their own scope. Platform Bearer credentials omit it to target the platform scope; an explicit tenant scope is allowed only on read or decision operations.

Responses

getNodeLineGroup Responses
StatusDescription
200Current immutable revision.

Fields:id: string(uuid) display_id: string tenant_scope_id: string(uuid) revision: integer(int64) name: string region: string resolved_value: string ipv4_resolved_value: string l2_config_id: string(uuid) | null(uuid) failover_mode: string: primary_offline / online_less_than_backup_count note: string sort_order: integer(int32) health_policy: HealthPolicy endpoints: array<Endpoint> statistics?: LineGroupStatistics configuration_digest: string created_by_user_id: string(uuid) created_at: string(date-time) sealed_at: string(date-time) is_platform_default?: boolean backup_states?: array<LineBackupState>

400Stable error envelope; messages are not localization keys.
defaultStable error envelope; messages are not localization keys.

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.

↑ Back to list

PUT /v1/node-line-groups/{id}

创建线路组下一不可变修订

operationId
updateNodeLineGroup
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

The contract has no separate permission annotation; see the description below and the 403 response.

Description (from the contract)

租户会话管理自身作用域;平台会话未指定 target_scope_id 时管理本主控平台作用域,显式指定租户作用域时拒绝写入。

Parameters

updateNodeLineGroup Parameters
NameInTypeRequiredDescription
idpathstring(uuid)Yes—
target_scope_idquerystring(uuid)NoTenant credentials may omit this value or repeat their own scope. Platform Bearer credentials omit it to target the platform scope; an explicit tenant scope is allowed only on read or decision operations.
If-MatchheaderstringYesSingle quoted positive decimal current revision, for example "3".
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringYes—

Request body

application/json · Required:Yes

updateNodeLineGroup Request body
NameTypeRequiredDescription
namestringYes—
regionstringNo—
resolved_valuestringNo留空时由服务端生成稳定的小写 DNS 标签;不要填写域名后缀、端口或 IP。
ipv4_resolved_valuestringNoIPv4 专用解析值;留空时由服务端按线路组 ID 生成稳定的小写 DNS 标签。
l2_config_idstring(uuid) | null(uuid)No同一作用域、同一区域且未引用其他 L2 配置的活动线路组;为空表示独立线路组。
failover_modestring: primary_offline / online_less_than_backup_countNo有主IP下线时逐个启用备用IP,或在线主IP数少于备用IP数时启用全部备用IP。
notestringNo—
sort_orderinteger(int32)No—
health_policyHealthPolicyYes—
endpointsarray<EndpointWrite>Yes—

Responses

updateNodeLineGroup Responses
StatusDescription
200New immutable current revision.

Fields:group: LineGroupRevision replayed: boolean

400Stable error envelope; messages are not localization keys.
409Stable error envelope; messages are not localization keys.
defaultStable error envelope; messages are not localization keys.

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.

↑ Back to list

DELETE /v1/node-line-groups/{id}

软删除线路组并保留不可变修订历史

operationId
deleteNodeLineGroup
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

The contract has no separate permission annotation; see the description below and the 403 response.

Description (from the contract)

租户会话删除自身作用域线路组;平台会话未指定 target_scope_id 时删除本主控平台作用域线路组,显式指定租户作用域时返回 403。删除后列表、当前详情、历史详情、探测与新拓扑快照入口均不可见;同一幂等键可重放。

Parameters

deleteNodeLineGroup Parameters
NameInTypeRequiredDescription
idpathstring(uuid)Yes—
target_scope_idquerystring(uuid)NoTenant credentials may omit this value or repeat their own scope. Platform Bearer credentials omit it to target the platform scope; an explicit tenant scope is allowed only on read or decision operations.
If-MatchheaderstringYesSingle quoted positive decimal current revision, for example "3".
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringYes—

Responses

deleteNodeLineGroup Responses
StatusDescription
204Soft deletion completed or the stored result was replayed.
400Stable error envelope; messages are not localization keys.
401Stable error envelope; messages are not localization keys.
403Stable error envelope; messages are not localization keys.
404Stable error envelope; messages are not localization keys.
409Stable error envelope; messages are not localization keys.
defaultStable error envelope; messages are not localization keys.

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.

↑ Back to list

POST /v1/node-line-groups/{id}/decisions

计算可审计的区域健康调度决策

operationId
decideNodeLineGroupEndpoint
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

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

decideNodeLineGroupEndpoint Parameters
NameInTypeRequiredDescription
idpathstring(uuid)Yes—
target_scope_idquerystring(uuid)NoTenant credentials may omit this value or repeat their own scope. Platform Bearer credentials omit it to target the platform scope; an explicit tenant scope is allowed only on read or decision operations.
X-Request-IDheaderstringYes—

Request body

application/json · Required:Yes

decideNodeLineGroupEndpoint Request body
NameTypeRequiredDescription
selectorSelectorYes—
requested_modestring: weighted_baseline / weighted_rendezvous / p2c_least_loadedYes—
stable_keystringYes—

Responses

decideNodeLineGroupEndpoint Responses
StatusDescription
200Deterministic selection with auditable reason and fallback state.

Fields:endpoint: Endpoint requested_mode: string: weighted_baseline / weighted_rendezvous / p2c_least_loaded effective_mode: string: weighted_baseline / weighted_rendezvous / p2c_least_loaded reason: string: baseline_weighted_selected / weighted_rendezvous_selected / p2c_least_loaded_selected / telemetry_insufficient / telemetry_stale_fallback / telemetry_unavailable_fallback / single_candidate_fallback / no_healthy_endpoint fallback: boolean priority: integer candidates: array<Endpoint> standby: array<Endpoint> snapshot: DecisionSnapshot

400Stable error envelope; messages are not localization keys.
defaultStable error envelope; messages are not localization keys.

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.

↑ Back to list

POST /v1/node-line-groups/{id}/platform-default

设为或取消平台默认线路组

operationId
setNodeLineGroupPlatformDefault
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

The contract has no separate permission annotation; see the description below and the 403 response.

Description (from the contract)

只限平台作用域普通线路组;设为默认会取消原默认。不推进线路组修订。没选套餐的网站用它冻结 CNAME 目标 IP。

Parameters

setNodeLineGroupPlatformDefault Parameters
NameInTypeRequiredDescription
idpathstring(uuid)Yes—
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringYes—

Request body

application/json · Required:Yes

setNodeLineGroupPlatformDefault Request body
NameTypeRequiredDescription
is_platform_defaultbooleanYes—

Responses

setNodeLineGroupPlatformDefault Responses
StatusDescription
200Current line group with the new platform default flag.

Fields:group: LineGroupRevision

400Stable error envelope; messages are not localization keys.
403Stable error envelope; messages are not localization keys.
404Stable error envelope; messages are not localization keys.
defaultStable error envelope; messages are not localization keys.

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 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.

↑ Back to list

GET /v1/node-line-groups/{id}/revisions/{revision}

查询线路组历史修订

operationId
getNodeLineGroupRevision
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

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

getNodeLineGroupRevision Parameters
NameInTypeRequiredDescription
idpathstring(uuid)Yes—
revisionpathinteger(int64)Yes—
target_scope_idquerystring(uuid)NoTenant credentials may omit this value or repeat their own scope. Platform Bearer credentials omit it to target the platform scope; an explicit tenant scope is allowed only on read or decision operations.

Responses

getNodeLineGroupRevision Responses
StatusDescription
200Historical immutable revision.

Fields:id: string(uuid) display_id: string tenant_scope_id: string(uuid) revision: integer(int64) name: string region: string resolved_value: string ipv4_resolved_value: string l2_config_id: string(uuid) | null(uuid) failover_mode: string: primary_offline / online_less_than_backup_count note: string sort_order: integer(int32) health_policy: HealthPolicy endpoints: array<Endpoint> statistics?: LineGroupStatistics configuration_digest: string created_by_user_id: string(uuid) created_at: string(date-time) sealed_at: string(date-time) is_platform_default?: boolean backup_states?: array<LineBackupState>

400Stable error envelope; messages are not localization keys.
defaultStable error envelope; messages are not localization keys.

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.

↑ Back to list

POST /v1/node-line-groups/{id}/rollback

将历史配置复制为新的当前修订

operationId
rollbackNodeLineGroup
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

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

rollbackNodeLineGroup Parameters
NameInTypeRequiredDescription
idpathstring(uuid)Yes—
target_scope_idquerystring(uuid)NoTenant credentials may omit this value or repeat their own scope. Platform Bearer credentials omit it to target the platform scope; an explicit tenant scope is allowed only on read or decision operations.
If-MatchheaderstringYesSingle quoted positive decimal current revision, for example "3".
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringYes—

Request body

application/json · Required:Yes

rollbackNodeLineGroup Request body
NameTypeRequiredDescription
source_revisioninteger(int64)Yes—

Responses

rollbackNodeLineGroup Responses
StatusDescription
200Historical configuration copied into current revision plus one.

Fields:group: LineGroupRevision replayed: boolean

400Stable error envelope; messages are not localization keys.
409Stable error envelope; messages are not localization keys.
defaultStable error envelope; messages are not localization keys.

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.

↑ Back to list

GET /v1/node-line-groups/{id}/target-snapshots

按来源修订查询 L1/L2 拓扑快照

operationId
getNodeLineGroupTargetSnapshot
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

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

getNodeLineGroupTargetSnapshot Parameters
NameInTypeRequiredDescription
idpathstring(uuid)Yes—
source_revisionqueryinteger(int64)YesSingle positive decimal source line-group revision.
target_scope_idquerystring(uuid)NoTenant credentials may omit this value or repeat their own scope. Platform Bearer credentials omit it to target the platform scope; an explicit tenant scope is allowed only on read or decision operations.

Responses

getNodeLineGroupTargetSnapshot Responses
StatusDescription
200Immutable L1 target set bound to the requested L2 source revision.

Fields:id: string(uuid) revision: integer(int64) tenant_scope_id: string(uuid) source_line_group_id: string(uuid) source_revision: integer(int64) source_configuration_digest: string node_set_digest: string node_ids: array<string(uuid)>

400Stable error envelope; messages are not localization keys.
403Stable error envelope; messages are not localization keys.
404Stable error envelope; messages are not localization keys.
defaultStable error envelope; messages are not localization keys.

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 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.

↑ Back to list

POST /v1/node-line-groups/{id}/target-snapshots

创建 L1 目标与 L2 候选拓扑快照

operationId
createNodeLineGroupTargetSnapshot
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

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

createNodeLineGroupTargetSnapshot Parameters
NameInTypeRequiredDescription
idpathstring(uuid)Yes—
target_scope_idquerystring(uuid)NoTenant credentials may omit this value or repeat their own scope. Platform Bearer credentials omit it to target the platform scope; an explicit tenant scope is allowed only on read or decision operations.
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringYes—

Request body

application/json · Required:Yes

createNodeLineGroupTargetSnapshot Request body
NameTypeRequiredDescription
source_revisioninteger(int64)Yes—
node_idsarray<string(uuid)>YesL1 target nodes. Every target has an edge to every L2 endpoint node in the source revision.

Responses

createNodeLineGroupTargetSnapshot Responses
StatusDescription
201Immutable L1 target set bound to an immutable L2 source revision.

Fields:id: string(uuid) revision: integer(int64) tenant_scope_id: string(uuid) source_line_group_id: string(uuid) source_revision: integer(int64) source_configuration_digest: string node_set_digest: string node_ids: array<string(uuid)>

400Stable error envelope; messages are not localization keys.
defaultStable error envelope; messages are not localization keys.

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.

↑ Back to list