MethodPathSummaryAuth
GET/v1/admin/gatewaysList standalone Agent Gateways (platform session, system.gateway.manage)Session
POST/v1/admin/gatewaysAdd a Gateway and issue its one-time binding token (1 hour, single use, only the SHA-256 is stored)Session
DELETE/v1/admin/gateways/{id}Delete a Gateway; every certificate it was issued is revokedSession
PUT/v1/admin/gateways/{id}/allowed-ipsReplace the addresses a bound Gateway may connect from (IPv4/IPv6, 1–16, audited)Session
POST/v1/admin/gateways/{id}/binding-tokenReplace the binding token of a pending Gateway (the previous token stops working)Session
POST/v1/admin/gateways/{id}/disableDisable a bound Gateway; its ControlInternal calls are refusedSession
POST/v1/admin/gateways/{id}/enableRe-enable a disabled GatewaySession

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

Operation details

GET /v1/admin/gateways

List standalone Agent Gateways (platform session, system.gateway.manage)

operationId
listAgentGateways
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)

The co-located Gateway of an all-mode installation is not listed. standalone_access_open is false until the control plane opens ControlInternal/Redis/NATS to Gateways; binding is refused until then.

Responses

listAgentGateways Responses
StatusDescription
200Gateways that are not deleted.

Fields:items: array<AgentGateway> installation_id: string(uuid) standalone_access_open: boolean

401Authentication failed or the session is invalid.
403The authenticated principal is not allowed to perform the action.

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.

↑ Back to list

POST /v1/admin/gateways

Add a Gateway and issue its one-time binding token (1 hour, single use, only the SHA-256 is stored)

operationId
createAgentGateway
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.

Request body

application/json · Required:Yes

createAgentGateway Request body
NameTypeRequiredDescription
namestringYes—
hoststringYesPublic Gateway name (domain or IP)

Responses

createAgentGateway Responses
StatusDescription
201Created; binding_token is shown once.

Fields:gateway: AgentGateway binding_token: string token_expires_at: string(date-time)

401Authentication failed or the session is invalid.
403The authenticated principal is not allowed to perform the action.
409gateway_name_taken
422invalid_input

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.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.

↑ Back to list

DELETE /v1/admin/gateways/{id}

Delete a Gateway; every certificate it was issued is revoked

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

deleteAgentGateway Parameters
NameInTypeRequiredDescription
idpathstring(uuid)Yes—

Responses

deleteAgentGateway Responses
StatusDescription
204Deleted.
404gateway_not_found

What to do on failure

  • 404 The resource does not exist or belongs to another tenant.

↑ Back to list

PUT /v1/admin/gateways/{id}/allowed-ips

Replace the addresses a bound Gateway may connect from (IPv4/IPv6, 1–16, audited)

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

setAgentGatewayAllowedIPs Parameters
NameInTypeRequiredDescription
idpathstring(uuid)Yes—

Request body

application/json · Required:Yes

setAgentGatewayAllowedIPs Request body
NameTypeRequiredDescription
allowed_ipsarray<string>Yes—

Responses

setAgentGatewayAllowedIPs Responses
StatusDescription
200Saved (normalized).

Fields:allowed_ips: array<string>

404gateway_not_found
409gateway_state_conflict (not bound yet)
422invalid_input

What to do on failure

  • 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/admin/gateways/{id}/binding-token

Replace the binding token of a pending Gateway (the previous token stops working)

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

reissueAgentGatewayBindingToken Parameters
NameInTypeRequiredDescription
idpathstring(uuid)Yes—

Responses

reissueAgentGatewayBindingToken Responses
StatusDescription
200New token.

Fields:gateway: AgentGateway binding_token: string token_expires_at: string(date-time)

404gateway_not_found
409gateway_state_conflict (already bound)

What to do on failure

  • 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/admin/gateways/{id}/disable

Disable a bound Gateway; its ControlInternal calls are refused

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

disableAgentGateway Parameters
NameInTypeRequiredDescription
idpathstring(uuid)Yes—

Responses

disableAgentGateway Responses
StatusDescription
204Disabled.
404gateway_not_found
409gateway_state_conflict

What to do on failure

  • 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/admin/gateways/{id}/enable

Re-enable a disabled Gateway

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

enableAgentGateway Parameters
NameInTypeRequiredDescription
idpathstring(uuid)Yes—

Responses

enableAgentGateway Responses
StatusDescription
204Enabled.
404gateway_not_found
409gateway_state_conflict

What to do on failure

  • 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