Networking

Preview — pending review

This reference is generated from the platform API contract and is still under review. Operations, fields, and descriptions can change before publication.

Attach health monitor to a backend pool

POST
/scopes/{scopeId}/network/load-balancers/{loadBalancerId}/pools/{poolId}/monitor

Attaches a health monitor to one backend pool ("Add health monitor" in the Backend pools tab). The monitor (type HTTP | HTTPS | TCP | PING, probe delay, timeout, maxRetries, plus urlPath / expectedCodes for the HTTP(S) types) is programmed on the provider, after which the pool reports a real health state instead of NO_MONITOR. Validation: parent LB and pool must exist in the scope (404 NOT_FOUND); the LB must not be mid-create/mid-delete (409 CONFLICT); the pool must not already carry a monitor (409 CONFLICT — edit or delete the existing one instead); urlPath / expectedCodes are only valid for the HTTP/HTTPS monitor types (422 VALIDATION_FAILED). Async & state: Asynchronous. Returns 202 with the transitional LbHealthMonitor while the parent LB passes through provisioning=PENDING_UPDATE → ACTIVE, emitting resource.updated SSE frames (kind "network.load_balancer", patch to pools). Errors: 401 unauthenticated; 403 insufficient role; 404 unknown LB or pool; 409 state conflict or a monitor already attached; 422 invalid fields; 500 backend failure. Idempotency/Concurrency: Idempotency-Key required; replays return the first outcome.

Authorization

bearerToken
headerAuthorizationBearer <token>

An API token (pc_live_…) or a service-account key (sak_live_…), created in Identity & Access Management and sent as Authorization: Bearer <token>. Requests are rate limited per credential and per tenant: every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset, and a refused request gets 429 RATE_LIMITED with Retry-After.

Path Parameters

scopeId*string

Opaque ownership+authorization scope resolving to tenant + subscription + project.

loadBalancerId*string
poolId*string

Header Parameters

Idempotency-Key*string

Required: this operation creates a new resource asynchronously, so a retry without the key would create a second one. Same key+body within 24h replays the original result; the same key with a different body is 409 CONFLICT. Keys are unique per tenant (the same key in two tenants is two different requests). An API token or service-account (bearer) caller MUST send it -- a request without it is refused with 400 IDEMPOTENCY_KEY_REQUIRED (ErrIdempotencyKeyRequired); reuse the same key on every retry of one logical request. A console session gets one from the edge.

Formatuuid

Request Body

application/json
  1. body

Health monitor configuration from the create-load-balancer wizard (step 5).

type*HealthMonitorType

Health monitor probe type.

Value in"HTTP""HTTPS""TCP""PING"
delay*integer
Default5
timeout*integer
Default3
maxRetries*integer
Default3
urlPath?|

Only for HTTP/HTTPS monitor types.

Default"/healthz"
expectedCodes?|

Only for HTTP/HTTPS monitor types.

Default"200"

Response Body

Attach accepted; the transitional monitor is returned.

application/json
  1. response

Health monitor attached to a load-balancer pool.

id*string
type*HealthMonitorType

Health monitor probe type.

Value in"HTTP""HTTPS""TCP""PING"
delay*integer

Probe interval in seconds.

timeout*integer

Probe timeout in seconds.

maxRetries*integer
httpMethod*string|null
urlPath*string|null
expectedCodes*|

Expected HTTP status codes, e.g. "200".

operating*LbOperating

Operating (health) state of a load balancer or one of its sub-resources.

Value in"ONLINE""DEGRADED""OFFLINE""ERROR""NO_MONITOR"
curl -X POST "https://example.com/scopes/string/network/load-balancers/string/pools/string/monitor" \  -H "Idempotency-Key: 497f6eca-6276-4993-bfeb-53cbbbba6f08" \  -H "Content-Type: application/json" \  -d '{    "type": "HTTP",    "delay": 5,    "timeout": 3,    "maxRetries": 3  }'
{  "id": "string",  "type": "HTTP",  "delay": 0,  "timeout": 0,  "maxRetries": 0,  "httpMethod": "string",  "urlPath": "string",  "expectedCodes": "string",  "operating": "ONLINE"}