Read-only operator HTTP API
Documentation version: 858adedd187db2e94614b1dfd389e4bf98e6e202:ac5d527caaa1f97eee9d71262e7c843ae7b24000e01ba5b44931108b2b489c0d
Generated from the canonical OpenAPI 0.1.0 contract. Source SHA256: 764c85e702f4b1b5618d7c4d0dd0dd8159117a25e80950464da1618013a36c45. This describes implemented transport shapes; installation capability, grants and validated profile still govern availability.
GET listOperatorProducts
GET /v1/operator/products
Authentication: operatorToken.
| Parameter | Location | Required | Type |
|---|---|---|---|
limit | query | No | {"type":"integer","minimum":1,"maximum":200,"default":50} |
cursor | query | No | {"type":"string"} |
| Response | Meaning | Body |
|---|---|---|
| 200 | Authorized stable keyset page. Empty nextCursor marks the end. | application/json: CatalogEntryPage |
| 400 | Rejected request or unavailable dependency | application/json: Error |
| 401 | Rejected request or unavailable dependency | application/json: Error |
| 403 | Rejected request or unavailable dependency | application/json: Error |
| 404 | Rejected request or unavailable dependency | application/json: Error |
| 503 | Rejected request or unavailable dependency | application/json: Error |
GET listOperatorTenants
GET /v1/operator/products/{product}/tenants
Authentication: operatorToken.
| Parameter | Location | Required | Type |
|---|---|---|---|
product | path | Yes | {"type":"string"} |
limit | query | No | {"type":"integer","minimum":1,"maximum":200,"default":50} |
cursor | query | No | {"type":"string"} |
| Response | Meaning | Body |
|---|---|---|
| 200 | Authorized stable keyset page. Empty nextCursor marks the end. | application/json: CatalogEntryPage |
| 400 | Rejected request or unavailable dependency | application/json: Error |
| 401 | Rejected request or unavailable dependency | application/json: Error |
| 403 | Rejected request or unavailable dependency | application/json: Error |
| 404 | Rejected request or unavailable dependency | application/json: Error |
| 503 | Rejected request or unavailable dependency | application/json: Error |
GET listOperatorProjects
GET /v1/operator/products/{product}/tenants/{tenant}/projects
Authentication: operatorToken.
| Parameter | Location | Required | Type |
|---|---|---|---|
product | path | Yes | {"type":"string"} |
tenant | path | Yes | {"type":"string"} |
limit | query | No | {"type":"integer","minimum":1,"maximum":200,"default":50} |
cursor | query | No | {"type":"string"} |
| Response | Meaning | Body |
|---|---|---|
| 200 | Authorized stable keyset page. Empty nextCursor marks the end. | application/json: ProjectPage |
| 400 | Rejected request or unavailable dependency | application/json: Error |
| 401 | Rejected request or unavailable dependency | application/json: Error |
| 403 | Rejected request or unavailable dependency | application/json: Error |
| 404 | Rejected request or unavailable dependency | application/json: Error |
| 503 | Rejected request or unavailable dependency | application/json: Error |
GET listOperatorEnvironments
GET /v1/operator/products/{product}/tenants/{tenant}/projects/{project}/environments
Authentication: operatorToken.
| Parameter | Location | Required | Type |
|---|---|---|---|
product | path | Yes | {"type":"string"} |
tenant | path | Yes | {"type":"string"} |
project | path | Yes | {"type":"string"} |
limit | query | No | {"type":"integer","minimum":1,"maximum":200,"default":50} |
cursor | query | No | {"type":"string"} |
| Response | Meaning | Body |
|---|---|---|
| 200 | Authorized stable keyset page. Empty nextCursor marks the end. | application/json: EnvironmentPage |
| 400 | Rejected request or unavailable dependency | application/json: Error |
| 401 | Rejected request or unavailable dependency | application/json: Error |
| 403 | Rejected request or unavailable dependency | application/json: Error |
| 404 | Rejected request or unavailable dependency | application/json: Error |
| 503 | Rejected request or unavailable dependency | application/json: Error |
GET operatorGetDeploymentState
GET /v1/operator/products/{product}/tenants/{tenant}/projects/{project}/environments/{environment}/deployment-state
Authentication: operatorToken.
| Parameter | Location | Required | Type |
|---|---|---|---|
product | path | Yes | {"type":"string"} |
tenant | path | Yes | {"type":"string"} |
project | path | Yes | {"type":"string"} |
environment | path | Yes | {"type":"string"} |
| Response | Meaning | Body |
|---|---|---|
| 200 | Durable operation state | application/json: DeploymentState |
| 400 | Invalid input | application/json: Error |
| 401 | Missing or invalid credential | application/json: Error |
| 403 | Missing capability | application/json: Error |
| 404 | Unknown route or scope | application/json: Error |
| 409 | Idempotency conflict | application/json: Error |
| 413 | Body exceeds 16 KiB | application/json: Error |
| 415 | JSON required | application/json: Error |
| 429 | Quota exceeded | application/json: Error |
| 503 | Dependency unavailable | application/json: Error |
GET operatorGetDatabaseBinding
GET /v1/operator/products/{product}/tenants/{tenant}/projects/{project}/environments/{environment}/database
Authentication: operatorToken.
| Parameter | Location | Required | Type |
|---|---|---|---|
product | path | Yes | {"type":"string"} |
tenant | path | Yes | {"type":"string"} |
project | path | Yes | {"type":"string"} |
environment | path | Yes | {"type":"string"} |
| Response | Meaning | Body |
|---|---|---|
| 200 | Scoped native database binding; no administrator credentials | application/json: DatabaseBinding |
| 401 | Missing or invalid credential | application/json: Error |
| 403 | Missing capability | application/json: Error |
| 404 | Unknown route or scope | application/json: Error |
| 503 | Dependency unavailable | application/json: Error |
GET operatorGetWorkspace
GET /v1/operator/products/{product}/tenants/{tenant}/projects/{project}/environments/{environment}/workspace
getWorkspace
Authentication: operatorToken.
| Parameter | Location | Required | Type |
|---|---|---|---|
product | path | Yes | {"type":"string"} |
tenant | path | Yes | {"type":"string"} |
project | path | Yes | {"type":"string"} |
environment | path | Yes | {"type":"string"} |
| Response | Meaning | Body |
|---|---|---|
| 200 | Scoped resource result | application/json: Workspace |
| 400 | Invalid input | application/json: Error |
| 401 | Missing or invalid credential | application/json: Error |
| 403 | Missing capability | application/json: Error |
| 404 | Unknown route or scope | application/json: Error |
| 409 | Idempotency conflict | application/json: Error |
| 413 | Plan exceeds the registered hierarchical native message budget | application/json: Error |
| 415 | JSON required | application/json: Error |
| 429 | Quota exceeded | application/json: Error |
| 503 | Dependency unavailable | application/json: Error |
GET operatorGetPlacement
GET /v1/operator/products/{product}/tenants/{tenant}/projects/{project}/environments/{environment}/placement
Authentication: operatorToken.
| Parameter | Location | Required | Type |
|---|---|---|---|
product | path | Yes | {"type":"string"} |
tenant | path | Yes | {"type":"string"} |
project | path | Yes | {"type":"string"} |
environment | path | Yes | {"type":"string"} |
| Response | Meaning | Body |
|---|---|---|
| 200 | Authorized environment placement | application/json: PlacementState |
| 400 | Invalid input | application/json: Error |
| 401 | Missing or invalid credential | application/json: Error |
| 403 | Missing capability | application/json: Error |
| 404 | Unknown route or scope | application/json: Error |
| 409 | Idempotency conflict | application/json: Error |
| 413 | Body exceeds 16 KiB | application/json: Error |
| 415 | JSON required | application/json: Error |
| 429 | Quota exceeded | application/json: Error |
| 503 | Dependency unavailable | application/json: Error |
GET operatorListPlacementLocations
GET /v1/operator/products/{product}/tenants/{tenant}/projects/{project}/environments/{environment}/locations
Authentication: operatorToken.
| Parameter | Location | Required | Type |
|---|---|---|---|
product | path | Yes | {"type":"string"} |
tenant | path | Yes | {"type":"string"} |
project | path | Yes | {"type":"string"} |
environment | path | Yes | {"type":"string"} |
| Response | Meaning | Body |
|---|---|---|
| 200 | Registered locations allowed by this environment policy | application/json: {"type":"array","items":{"$ref":"#/components/schemas/PlacementLocation"}} |
| 400 | Invalid input | application/json: Error |
| 401 | Missing or invalid credential | application/json: Error |
| 403 | Missing capability | application/json: Error |
| 404 | Unknown route or scope | application/json: Error |
| 409 | Idempotency conflict | application/json: Error |
| 413 | Body exceeds 16 KiB | application/json: Error |
| 415 | JSON required | application/json: Error |
| 429 | Quota exceeded | application/json: Error |
| 503 | Dependency unavailable | application/json: Error |
GET operatorGetBuildingBlock
GET /v1/operator/products/{product}/tenants/{tenant}/projects/{project}/environments/{environment}/building-blocks/{resource}
Authentication: operatorToken.
| Parameter | Location | Required | Type |
|---|---|---|---|
product | path | Yes | {"type":"string"} |
tenant | path | Yes | {"type":"string"} |
project | path | Yes | {"type":"string"} |
environment | path | Yes | {"type":"string"} |
resource | path | Yes | {"type":"string"} |
| Response | Meaning | Body |
|---|---|---|
| 200 | Scoped desired and observed building block | application/json: BuildingBlock |
| 400 | Invalid input | application/json: Error |
| 401 | Missing or invalid credential | application/json: Error |
| 403 | Missing capability | application/json: Error |
| 404 | Unknown route or scope | application/json: Error |
| 503 | Dependency unavailable | application/json: Error |
GET operatorGetEnvironmentBuildingBlock
GET /v1/operator/products/{product}/tenants/{tenant}/projects/{project}/environments/{environment}/building-blocks/by-kind/{kind}
Authentication: operatorToken.
| Parameter | Location | Required | Type |
|---|---|---|---|
product | path | Yes | {"type":"string"} |
tenant | path | Yes | {"type":"string"} |
project | path | Yes | {"type":"string"} |
environment | path | Yes | {"type":"string"} |
kind | path | Yes | {"type":"string","enum":["identity","storage","jobs"]} |
| Response | Meaning | Body |
|---|---|---|
| 200 | Scoped primary block | application/json: BuildingBlock |
GET operatorGetEnvironment
GET /v1/operator/products/{product}/tenants/{tenant}/projects/{project}/environments/{environment}
Authentication: operatorToken.
| Parameter | Location | Required | Type |
|---|---|---|---|
product | path | Yes | {"type":"string"} |
tenant | path | Yes | {"type":"string"} |
project | path | Yes | {"type":"string"} |
environment | path | Yes | {"type":"string"} |
| Response | Meaning | Body |
|---|---|---|
| 200 | Scoped current environment | application/json: Environment |
GET operatorGetProject
GET /v1/operator/products/{product}/tenants/{tenant}/projects/{project}
Authentication: operatorToken.
| Parameter | Location | Required | Type |
|---|---|---|---|
product | path | Yes | {"type":"string"} |
tenant | path | Yes | {"type":"string"} |
project | path | Yes | {"type":"string"} |
| Response | Meaning | Body |
|---|---|---|
| 200 | Scoped resource | application/json: Project |
GET operatorGetRepository
GET /v1/operator/products/{product}/tenants/{tenant}/projects/{project}/repository
Authentication: operatorToken.
| Parameter | Location | Required | Type |
|---|---|---|---|
product | path | Yes | {"type":"string"} |
tenant | path | Yes | {"type":"string"} |
project | path | Yes | {"type":"string"} |
| Response | Meaning | Body |
|---|---|---|
| 200 | Scoped resource | application/json: Repository |
GET operatorListProjectOperations
GET /v1/operator/products/{product}/tenants/{tenant}/projects/{project}/operations
List scoped project operations
Authentication: operatorToken.
| Parameter | Location | Required | Type |
|---|---|---|---|
product | path | Yes | {"type":"string"} |
tenant | path | Yes | {"type":"string"} |
project | path | Yes | {"type":"string"} |
limit | query | No | {"type":"integer","minimum":1,"maximum":200,"default":50} |
cursor | query | No | {"type":"string"} |
| Response | Meaning | Body |
|---|---|---|
| 200 | Authorized stable keyset page. Empty nextCursor marks the end. | application/json: OperationPage |
| 400 | Rejected request or unavailable dependency | application/json: Error |
| 401 | Rejected request or unavailable dependency | application/json: Error |
| 403 | Rejected request or unavailable dependency | application/json: Error |
| 404 | Rejected request or unavailable dependency | application/json: Error |
| 503 | Rejected request or unavailable dependency | application/json: Error |
GET operatorListBuildingBlocks
GET /v1/operator/products/{product}/tenants/{tenant}/projects/{project}/environments/{environment}/building-blocks
List scoped building blocks
Authentication: operatorToken.
| Parameter | Location | Required | Type |
|---|---|---|---|
product | path | Yes | {"type":"string"} |
tenant | path | Yes | {"type":"string"} |
project | path | Yes | {"type":"string"} |
environment | path | Yes | {"type":"string"} |
limit | query | No | {"type":"integer","minimum":1,"maximum":200,"default":50} |
cursor | query | No | {"type":"string"} |
| Response | Meaning | Body |
|---|---|---|
| 200 | Authorized stable keyset page. Empty nextCursor marks the end. | application/json: BuildingBlockPage |
| 400 | Rejected request or unavailable dependency | application/json: Error |
| 401 | Rejected request or unavailable dependency | application/json: Error |
| 403 | Rejected request or unavailable dependency | application/json: Error |
| 404 | Rejected request or unavailable dependency | application/json: Error |
| 503 | Rejected request or unavailable dependency | application/json: Error |
GET getOperatorProjectOperation
GET /v1/operator/products/{product}/tenants/{tenant}/projects/{project}/operations/{operation}
Authentication: managementToken.
| Parameter | Location | Required | Type |
|---|---|---|---|
product | path | Yes | {"type":"string"} |
tenant | path | Yes | {"type":"string"} |
project | path | Yes | {"type":"string"} |
operation | path | Yes | {"type":"string"} |
| Response | Meaning | Body |
|---|---|---|
| 200 | Durable operation state | application/json: OperatorOperationDetail |
| 400 | Invalid input | application/json: Error |
| 401 | Missing or invalid credential | application/json: Error |
| 403 | Missing capability | application/json: Error |
| 404 | Unknown route or scope | application/json: Error |
| 409 | Idempotency conflict | application/json: Error |
| 413 | Body exceeds 16 KiB | application/json: Error |
| 415 | JSON required | application/json: Error |
| 429 | Quota exceeded | application/json: Error |
| 503 | Dependency unavailable | application/json: Error |
GET getOperatorProjectOperationLog
GET /v1/operator/products/{product}/tenants/{tenant}/projects/{project}/operations/{operation}/logs/{kind}
Authentication: managementToken.
| Parameter | Location | Required | Type |
|---|---|---|---|
product | path | Yes | {"type":"string"} |
tenant | path | Yes | {"type":"string"} |
project | path | Yes | {"type":"string"} |
operation | path | Yes | {"type":"string"} |
kind | path | Yes | {"type":"string","enum":["build","execution"]} |
| Response | Meaning | Body |
|---|---|---|
| 200 | Durable operation state | application/json: OperationLog |
| 400 | Invalid input | application/json: Error |
| 401 | Missing or invalid credential | application/json: Error |
| 403 | Missing capability | application/json: Error |
| 404 | Unknown route or scope | application/json: Error |
| 409 | Idempotency conflict | application/json: Error |
| 413 | Body exceeds 16 KiB | application/json: Error |
| 415 | JSON required | application/json: Error |
| 429 | Quota exceeded | application/json: Error |
| 503 | Dependency unavailable | application/json: Error |
GET operatorGetEnvironmentTopology
GET /v1/operator/products/{product}/tenants/{tenant}/projects/{project}/environments/{environment}/topology
Observed native application hosts, runtime versions and targets for the exact committed placement epoch. Operator audience only. Missing and expired observations are explicit; this does not assert database replication or standby readiness.
Authentication: operatorToken.
| Parameter | Location | Required | Type |
|---|---|---|---|
product | path | Yes | {"type":"string"} |
tenant | path | Yes | {"type":"string"} |
project | path | Yes | {"type":"string"} |
environment | path | Yes | {"type":"string"} |
| Response | Meaning | Body |
|---|---|---|
| 200 | Native epoch-bound topology observation | application/json: EnvironmentTopology |
| 400 | Invalid input | application/json: Error |
| 401 | Missing or invalid credential | application/json: Error |
| 403 | Missing capability | application/json: Error |
| 404 | Unknown route or scope | application/json: Error |
| 409 | Idempotency conflict | application/json: Error |
| 413 | Body exceeds 16 KiB | application/json: Error |
| 415 | JSON required | application/json: Error |
| 429 | Quota exceeded | application/json: Error |
| 503 | Dependency unavailable | application/json: Error |
GET operatorListHostnames
GET /v1/operator/products/{product}/tenants/{tenant}/projects/{project}/environments/{environment}/hostnames
Registered hostname bindings for the exact environment. This is routing-owner state, not an independent reachability or standby-readiness assertion.
Authentication: operatorToken.
| Parameter | Location | Required | Type |
|---|---|---|---|
product | path | Yes | {"type":"string"} |
tenant | path | Yes | {"type":"string"} |
project | path | Yes | {"type":"string"} |
environment | path | Yes | {"type":"string"} |
limit | query | No | {"type":"integer","minimum":1,"maximum":200,"default":50} |
cursor | query | No | {"type":"string"} |
| Response | Meaning | Body |
|---|---|---|
| 200 | Scoped routing-owner inventory, including pending and retired bindings | application/json: HostnameBindingPage |
| 400 | Rejected request or unavailable dependency | application/json: Error |
| 401 | Rejected request or unavailable dependency | application/json: Error |
| 403 | Rejected request or unavailable dependency | application/json: Error |
| 404 | Rejected request or unavailable dependency | application/json: Error |
| 503 | Rejected request or unavailable dependency | application/json: Error |