{"openapi":"3.1.0","info":{"title":"Rivet Cloud API","version":"0.0.1"},"paths":{"/v2/health":{"get":{"tags":["system"],"operationId":"health","parameters":[],"security":[],"responses":{"204":{"description":"<No Content>"},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"503":{"description":"ServiceUnavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableEncoded"}}}}}}},"/v2/me":{"get":{"tags":["auth"],"operationId":"auth.me","parameters":[],"security":[{"bearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SessionEncoded"},{"$ref":"#/components/schemas/ApiTokenEncoded"},{"$ref":"#/components/schemas/OAuthEncoded"},{"$ref":"#/components/schemas/ClusterTokenEncoded"}]}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}}},"description":"Return the principal the API resolved for the request's credentials."}},"/v2/plans":{"get":{"tags":["Plans"],"operationId":"plans.get","parameters":[],"security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"plans":{"type":"array","items":{"type":"object","properties":{"plan":{"type":"string","enum":["free","pro","team","enterprise"]},"label":{"type":"string"},"monthly_cents":{"type":"integer"},"prices":{"type":"object","properties":{"gcp":{"type":"integer"},"aws":{"type":"object","properties":{"us-east-1":{"type":"integer"},"us-east-2":{"type":"integer"},"eu-central-1":{"type":"integer"},"ap-southeast-1":{"type":"integer"}},"required":["us-east-1","us-east-2","eu-central-1","ap-southeast-1"],"additionalProperties":false}},"required":["gcp","aws"],"additionalProperties":false},"control_plane":{"type":"object","properties":{"machine_type":{"type":"string","enum":["e2-micro","e2-small","e2-medium","e2-custom-4-8192","e2-custom-8-16384"]},"node_count":{"type":"integer"}},"required":["machine_type","node_count"],"additionalProperties":false},"control_planes":{"type":"array","items":{"type":"object","properties":{"control_plane":{"type":"string","enum":["1x-e2-micro","1x-e2-small","1x-e2-medium","3x-e2-medium","3x-e2-custom-4-8192","3x-e2-custom-8-16384","5x-e2-custom-8-16384"]},"label":{"type":"string"},"machine_type":{"type":"string","enum":["e2-micro","e2-small","e2-medium","e2-custom-4-8192","e2-custom-8-16384"]},"node_count":{"type":"integer"},"availability_zones":{"type":"integer"},"monthly_cents":{"type":"integer"},"prices":{"type":"object","properties":{"gcp":{"type":"integer"},"aws":{"type":"object","properties":{"us-east-1":{"type":"integer"},"us-east-2":{"type":"integer"},"eu-central-1":{"type":"integer"},"ap-southeast-1":{"type":"integer"}},"required":["us-east-1","us-east-2","eu-central-1","ap-southeast-1"],"additionalProperties":false}},"required":["gcp","aws"],"additionalProperties":false}},"required":["control_plane","label","machine_type","node_count","availability_zones","monthly_cents","prices"],"additionalProperties":false}},"runners":{"type":"object","properties":{"max_nodes":{"type":"integer"},"machine_types":{"type":"array","items":{"type":"string","enum":["e2-micro","e2-small","e2-medium","e2-custom-4-8192","e2-custom-8-16384"]}},"billed":{"type":"boolean"}},"required":["max_nodes","machine_types","billed"],"additionalProperties":false},"uptime_sla":{"anyOf":[{"type":"string"},{"type":"null"}]},"support":{"type":"string"},"user_data_gib":{"type":"number"}},"required":["plan","label","monthly_cents","prices","control_plane","control_planes","runners","uptime_sla","support","user_data_gib"],"additionalProperties":false}},"machine_types":{"type":"array","items":{"type":"object","properties":{"machine_type":{"type":"string","enum":["e2-micro","e2-small","e2-medium","e2-custom-4-8192","e2-custom-8-16384"]},"label":{"type":"string"},"vcpu":{"type":"number"},"memory_gib":{"type":"number"},"storage_gib":{"type":"number"},"write_mbps":{"type":"number"}},"required":["machine_type","label","vcpu","memory_gib","storage_gib","write_mbps"],"additionalProperties":false}},"cloud_machine_types":{"type":"array","items":{"type":"object","properties":{"cloud":{"type":"string","enum":["aws","gcp","azure"]},"machine_type":{"type":"string","enum":["e2-micro","e2-small","e2-medium","e2-custom-4-8192","e2-custom-8-16384"]},"cloud_machine_type":{"type":"string"},"label":{"type":"string"},"vcpu":{"type":"number"},"memory_gib":{"type":"number"},"storage_gib":{"type":"number"},"write_mbps":{"type":"number"}},"required":["cloud","machine_type","cloud_machine_type","label","vcpu","memory_gib","storage_gib","write_mbps"],"additionalProperties":false}},"node_prices":{"type":"array","items":{"type":"object","properties":{"cloud":{"type":"string","enum":["aws","gcp","azure"]},"region":{"anyOf":[{"type":"string"},{"type":"null"}]},"machine_type":{"type":"string","enum":["e2-micro","e2-small","e2-medium","e2-custom-4-8192","e2-custom-8-16384"]},"monthly_cents":{"type":"integer"}},"required":["cloud","region","machine_type","monthly_cents"],"additionalProperties":false}},"allowances":{"type":"object","properties":{"included_egress_gib":{"type":"number"},"egress_cents_per_gib":{"type":"number"},"egress_prices":{"type":"object","properties":{"gcp":{"type":"integer"},"aws":{"type":"object","properties":{"us-east-1":{"type":"integer"},"us-east-2":{"type":"integer"},"eu-central-1":{"type":"integer"},"ap-southeast-1":{"type":"integer"}},"required":["us-east-1","us-east-2","eu-central-1","ap-southeast-1"],"additionalProperties":false}},"required":["gcp","aws"],"additionalProperties":false}},"required":["included_egress_gib","egress_cents_per_gib","egress_prices"],"additionalProperties":false}},"required":["plans","machine_types","cloud_machine_types","node_prices","allowances"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}}},"description":"List the cluster plans, machine types and prices. Needs no authentication."}},"/v2/clusters":{"get":{"tags":["Clusters"],"operationId":"clusters.list","parameters":[],"security":[{"bearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"cluster":{"type":"string"},"slug":{"type":"string"},"domain":{"type":"string"},"admin_token":{"anyOf":[{"type":"string"},{"type":"null"}]},"plan":{"type":"string","enum":["free","pro","team","enterprise"]},"control_plane":{"type":"string","enum":["1x-e2-micro","1x-e2-small","1x-e2-medium","3x-e2-medium","3x-e2-custom-4-8192","3x-e2-custom-8-16384","5x-e2-custom-8-16384"]},"control_plane_label":{"type":"string"},"billing_status":{"type":"string","enum":["active","past_due","canceled"]},"trial_ends_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"object","properties":{"state":{"type":"string","enum":["provisioning","ready","updating","degraded","down","deleting"]},"state_since":{"anyOf":[{"type":"integer"},{"type":"null"}]},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"fault":{"anyOf":[{"type":"string","enum":["user","platform"]},{"type":"null"}]},"action_needed":{"type":"boolean"},"waiting_on":{"anyOf":[{"type":"string","enum":["project","arena","infrastructure","engine","runners"]},{"type":"null"}]},"replicas":{"anyOf":[{"type":"object","properties":{"desired":{"type":"integer"},"ready":{"type":"integer"},"updated":{"type":"integer"}},"required":["desired","ready","updated"],"additionalProperties":false},{"type":"null"}]}},"required":["state","state_since","message","fault","action_needed","waiting_on","replicas"],"additionalProperties":false}},"required":["cluster","slug","domain","plan","control_plane","control_plane_label","billing_status","trial_ends_at","status"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}}},"description":"List the organization's clusters."}},"/v2/clusters/{cluster}":{"put":{"tags":["Clusters"],"operationId":"clusters.upsert","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true},{"name":"region","in":"query","schema":{"anyOf":[{"type":"string"},{"type":"null"}]},"required":false},{"name":"cloud","in":"query","schema":{"anyOf":[{"type":"string","enum":["aws","gcp","azure"]},{"type":"null"}]},"required":false},{"name":"plan","in":"query","schema":{"anyOf":[{"type":"string","enum":["free","pro","team","enterprise"]},{"type":"null"}]},"required":false},{"name":"control_plane","in":"query","schema":{"anyOf":[{"type":"string","enum":["1x-e2-micro","1x-e2-small","1x-e2-medium","3x-e2-medium","3x-e2-custom-4-8192","3x-e2-custom-8-16384","5x-e2-custom-8-16384"]},{"type":"null"}]},"required":false},{"name":"cidr_allowlist","in":"query","schema":{"anyOf":[{"type":"string","description":"Comma-separated IPv4 CIDR ranges that may reach the engine. Empty keeps the engine off the internet. Defaults to `0.0.0.0/0`."},{"type":"null"}]},"required":false}],"security":[{"bearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"cluster":{"type":"string"},"slug":{"type":"string"},"domain":{"type":"string"},"admin_token":{"anyOf":[{"type":"string"},{"type":"null"}]},"plan":{"type":"string","enum":["free","pro","team","enterprise"]},"control_plane":{"type":"string","enum":["1x-e2-micro","1x-e2-small","1x-e2-medium","3x-e2-medium","3x-e2-custom-4-8192","3x-e2-custom-8-16384","5x-e2-custom-8-16384"]},"control_plane_label":{"type":"string"},"billing_status":{"type":"string","enum":["active","past_due","canceled"]},"trial_ends_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"object","properties":{"state":{"type":"string","enum":["provisioning","ready","updating","degraded","down","deleting"]},"state_since":{"anyOf":[{"type":"integer"},{"type":"null"}]},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"fault":{"anyOf":[{"type":"string","enum":["user","platform"]},{"type":"null"}]},"action_needed":{"type":"boolean"},"waiting_on":{"anyOf":[{"type":"string","enum":["project","arena","infrastructure","engine","runners"]},{"type":"null"}]},"replicas":{"anyOf":[{"type":"object","properties":{"desired":{"type":"integer"},"ready":{"type":"integer"},"updated":{"type":"integer"}},"required":["desired","ready","updated"],"additionalProperties":false},{"type":"null"}]}},"required":["state","state_since","message","fault","action_needed","waiting_on","replicas"],"additionalProperties":false}},"required":["cluster","slug","domain","plan","control_plane","control_plane_label","billing_status","trial_ends_at","status"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"402":{"description":"PaymentRequired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequiredEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"422":{"description":"UnprocessableEntity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnprocessableEntityEncoded"}}}},"503":{"description":"ServiceUnavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableEncoded"}}}}},"description":"Create a cluster when it does not exist, in `region` from `GET /v2/regions` (default `us-east4`), on `plan` (default `free`) sized by its `control_plane` option (default the plan's first) with the engine's `cidr_allowlist`. The plan sizes the engine. A paid plan charges the organization's default payment method and fails with 402 when it has none. The region never changes, so naming another region for an existing cluster fails; the plan and allowlist apply only to a new cluster. The cluster's domain is assigned by the system. Changes apply in the background, so the cluster is `pending` until everything it owns is caught up."},"get":{"tags":["Clusters"],"operationId":"clusters.get","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"cluster":{"type":"string"},"slug":{"type":"string"},"domain":{"type":"string"},"admin_token":{"anyOf":[{"type":"string"},{"type":"null"}]},"plan":{"type":"string","enum":["free","pro","team","enterprise"]},"control_plane":{"type":"string","enum":["1x-e2-micro","1x-e2-small","1x-e2-medium","3x-e2-medium","3x-e2-custom-4-8192","3x-e2-custom-8-16384","5x-e2-custom-8-16384"]},"control_plane_label":{"type":"string"},"billing_status":{"type":"string","enum":["active","past_due","canceled"]},"trial_ends_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"object","properties":{"state":{"type":"string","enum":["provisioning","ready","updating","degraded","down","deleting"]},"state_since":{"anyOf":[{"type":"integer"},{"type":"null"}]},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"fault":{"anyOf":[{"type":"string","enum":["user","platform"]},{"type":"null"}]},"action_needed":{"type":"boolean"},"waiting_on":{"anyOf":[{"type":"string","enum":["project","arena","infrastructure","engine","runners"]},{"type":"null"}]},"replicas":{"anyOf":[{"type":"object","properties":{"desired":{"type":"integer"},"ready":{"type":"integer"},"updated":{"type":"integer"}},"required":["desired","ready","updated"],"additionalProperties":false},{"type":"null"}]}},"required":["state","state_since","message","fault","action_needed","waiting_on","replicas"],"additionalProperties":false}},"required":["cluster","slug","domain","plan","control_plane","control_plane_label","billing_status","trial_ends_at","status"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}}},"description":"Read one cluster and its status."},"delete":{"tags":["Clusters"],"operationId":"clusters.delete","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"202":{"description":"<No Content>"},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}}},"description":"Request a cluster's deletion. Deletion runs in the background."}},"/v2/clusters/{cluster}/plan":{"put":{"tags":["Clusters"],"operationId":"clusters.setPlan","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"cluster":{"type":"string"},"slug":{"type":"string"},"domain":{"type":"string"},"admin_token":{"anyOf":[{"type":"string"},{"type":"null"}]},"plan":{"type":"string","enum":["free","pro","team","enterprise"]},"control_plane":{"type":"string","enum":["1x-e2-micro","1x-e2-small","1x-e2-medium","3x-e2-medium","3x-e2-custom-4-8192","3x-e2-custom-8-16384","5x-e2-custom-8-16384"]},"control_plane_label":{"type":"string"},"billing_status":{"type":"string","enum":["active","past_due","canceled"]},"trial_ends_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"object","properties":{"state":{"type":"string","enum":["provisioning","ready","updating","degraded","down","deleting"]},"state_since":{"anyOf":[{"type":"integer"},{"type":"null"}]},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"fault":{"anyOf":[{"type":"string","enum":["user","platform"]},{"type":"null"}]},"action_needed":{"type":"boolean"},"waiting_on":{"anyOf":[{"type":"string","enum":["project","arena","infrastructure","engine","runners"]},{"type":"null"}]},"replicas":{"anyOf":[{"type":"object","properties":{"desired":{"type":"integer"},"ready":{"type":"integer"},"updated":{"type":"integer"}},"required":["desired","ready","updated"],"additionalProperties":false},{"type":"null"}]}},"required":["state","state_since","message","fault","action_needed","waiting_on","replicas"],"additionalProperties":false}},"required":["cluster","slug","domain","plan","control_plane","control_plane_label","billing_status","trial_ends_at","status"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"402":{"description":"PaymentRequired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequiredEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictEncoded"}}}},"422":{"description":"UnprocessableEntity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnprocessableEntityEncoded"}}}},"503":{"description":"ServiceUnavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableEncoded"}}}}},"description":"Move a cluster to another plan or control plane option. The plan resizes the engine in the background and charges or credits the difference right away. Fails with 422 while the cluster's runner pools need more nodes or machine types than the plan allows, and with 402 when a paid plan has no payment method to charge.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"plan":{"type":"string","enum":["free","pro","team","enterprise"]},"control_plane":{"anyOf":[{"type":"string","enum":["1x-e2-micro","1x-e2-small","1x-e2-medium","3x-e2-medium","3x-e2-custom-4-8192","3x-e2-custom-8-16384","5x-e2-custom-8-16384"]},{"type":"null"}]}},"required":["plan"],"additionalProperties":false}}},"required":true},"x-fern-sdk-group-name":"clusters","x-fern-sdk-method-name":"set-plan"}},"/v2/regions":{"get":{"tags":["Regions"],"operationId":"regions.available","parameters":[],"security":[{"bearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"region":{"type":"string"},"zone":{"type":"string"},"cloud":{"type":"string","enum":["aws","gcp","azure"]},"city":{"type":"string"},"country":{"type":"string"}},"required":["region","zone","cloud","city","country"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}}},"description":"List the regions a cluster can be created in."}},"/v2/clusters/{cluster}/regions":{"get":{"tags":["Regions"],"operationId":"regions.list","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"cluster":{"type":"string"},"region":{"type":"string"},"cloud":{"type":"string","enum":["aws","gcp","azure"]},"machine_type":{"type":"string","enum":["e2-micro","e2-small","e2-medium","e2-custom-4-8192","e2-custom-8-16384"]},"node_count":{"type":"integer"},"cidr_allowlist":{"type":"array","items":{"type":"string"}},"engine_config":{"type":"object","properties":{"pegboard":{"type":"object","properties":{"actor_start_threshold":{"type":"integer","description":"How long, in milliseconds, an actor may take to report it started before the engine marks it lost. 1000 to 3600000; defaults to 30000."},"actor_allocation_threshold":{"type":"integer","description":"How long, in milliseconds, the engine waits for an actor's allocation to be acknowledged before it marks it lost. 1000 to 3600000."}},"additionalProperties":false}},"additionalProperties":false,"description":"Engine settings for the region's engine. Changing them restarts the engine. Omitted settings take the engine's defaults."},"endpoints":{"type":"object","properties":{"public":{"type":"string"},"private":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["public","private"],"additionalProperties":false},"status":{"type":"object","properties":{"state":{"type":"string","enum":["provisioning","ready","updating","degraded","down","deleting"]},"state_since":{"anyOf":[{"type":"integer"},{"type":"null"}]},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"fault":{"anyOf":[{"type":"string","enum":["user","platform"]},{"type":"null"}]},"action_needed":{"type":"boolean"},"waiting_on":{"anyOf":[{"type":"string","enum":["project","arena","infrastructure","engine","runners"]},{"type":"null"}]},"replicas":{"anyOf":[{"type":"object","properties":{"desired":{"type":"integer"},"ready":{"type":"integer"},"updated":{"type":"integer"}},"required":["desired","ready","updated"],"additionalProperties":false},{"type":"null"}]}},"required":["state","state_since","message","fault","action_needed","waiting_on","replicas"],"additionalProperties":false}},"required":["cluster","region","cloud","machine_type","node_count","cidr_allowlist","engine_config","endpoints","status"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}}},"description":"List the regions enabled on a cluster."}},"/v2/clusters/{cluster}/regions/{region}":{"put":{"tags":["Regions"],"operationId":"regions.upsert","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true},{"name":"region","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"cluster":{"type":"string"},"region":{"type":"string"},"cloud":{"type":"string","enum":["aws","gcp","azure"]},"machine_type":{"type":"string","enum":["e2-micro","e2-small","e2-medium","e2-custom-4-8192","e2-custom-8-16384"]},"node_count":{"type":"integer"},"cidr_allowlist":{"type":"array","items":{"type":"string"}},"engine_config":{"type":"object","properties":{"pegboard":{"type":"object","properties":{"actor_start_threshold":{"type":"integer","description":"How long, in milliseconds, an actor may take to report it started before the engine marks it lost. 1000 to 3600000; defaults to 30000."},"actor_allocation_threshold":{"type":"integer","description":"How long, in milliseconds, the engine waits for an actor's allocation to be acknowledged before it marks it lost. 1000 to 3600000."}},"additionalProperties":false}},"additionalProperties":false,"description":"Engine settings for the region's engine. Changing them restarts the engine. Omitted settings take the engine's defaults."},"endpoints":{"type":"object","properties":{"public":{"type":"string"},"private":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["public","private"],"additionalProperties":false},"status":{"type":"object","properties":{"state":{"type":"string","enum":["provisioning","ready","updating","degraded","down","deleting"]},"state_since":{"anyOf":[{"type":"integer"},{"type":"null"}]},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"fault":{"anyOf":[{"type":"string","enum":["user","platform"]},{"type":"null"}]},"action_needed":{"type":"boolean"},"waiting_on":{"anyOf":[{"type":"string","enum":["project","arena","infrastructure","engine","runners"]},{"type":"null"}]},"replicas":{"anyOf":[{"type":"object","properties":{"desired":{"type":"integer"},"ready":{"type":"integer"},"updated":{"type":"integer"}},"required":["desired","ready","updated"],"additionalProperties":false},{"type":"null"}]}},"required":["state","state_since","message","fault","action_needed","waiting_on","replicas"],"additionalProperties":false}},"required":["cluster","region","cloud","machine_type","node_count","cidr_allowlist","engine_config","endpoints","status"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictEncoded"}}}},"422":{"description":"UnprocessableEntity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnprocessableEntityEncoded"}}}}},"description":"Enable a region on a cluster or change its allowlist or engine config. Changing `engine_config` restarts the region's engine; omitting it keeps the current one. The engine's `machine_type` and `node_count` follow the cluster's plan and change only with it. A region's `cloud` cannot change; delete and recreate the region to move it to another cloud.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"cloud":{"type":"string","enum":["aws","gcp","azure"]},"cidr_allowlist":{"type":"array","items":{"type":"string"}},"engine_config":{"type":"object","description":"Engine settings for the region's engine, shaped like the engine's `engine.json`. Settable: `pegboard.actor_start_threshold` (1000 to 3600000), in milliseconds. The engine's actor stop threshold follows the runner pools' `drain_timeout_ms` instead. Changing them restarts the engine. `{}` restores the defaults; omitting the field keeps the current settings."}},"required":["cloud","cidr_allowlist"],"additionalProperties":false}}},"required":true}},"get":{"tags":["Regions"],"operationId":"regions.get","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true},{"name":"region","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"cluster":{"type":"string"},"region":{"type":"string"},"cloud":{"type":"string","enum":["aws","gcp","azure"]},"machine_type":{"type":"string","enum":["e2-micro","e2-small","e2-medium","e2-custom-4-8192","e2-custom-8-16384"]},"node_count":{"type":"integer"},"cidr_allowlist":{"type":"array","items":{"type":"string"}},"engine_config":{"type":"object","properties":{"pegboard":{"type":"object","properties":{"actor_start_threshold":{"type":"integer","description":"How long, in milliseconds, an actor may take to report it started before the engine marks it lost. 1000 to 3600000; defaults to 30000."},"actor_allocation_threshold":{"type":"integer","description":"How long, in milliseconds, the engine waits for an actor's allocation to be acknowledged before it marks it lost. 1000 to 3600000."}},"additionalProperties":false}},"additionalProperties":false,"description":"Engine settings for the region's engine. Changing them restarts the engine. Omitted settings take the engine's defaults."},"endpoints":{"type":"object","properties":{"public":{"type":"string"},"private":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["public","private"],"additionalProperties":false},"status":{"type":"object","properties":{"state":{"type":"string","enum":["provisioning","ready","updating","degraded","down","deleting"]},"state_since":{"anyOf":[{"type":"integer"},{"type":"null"}]},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"fault":{"anyOf":[{"type":"string","enum":["user","platform"]},{"type":"null"}]},"action_needed":{"type":"boolean"},"waiting_on":{"anyOf":[{"type":"string","enum":["project","arena","infrastructure","engine","runners"]},{"type":"null"}]},"replicas":{"anyOf":[{"type":"object","properties":{"desired":{"type":"integer"},"ready":{"type":"integer"},"updated":{"type":"integer"}},"required":["desired","ready","updated"],"additionalProperties":false},{"type":"null"}]}},"required":["state","state_since","message","fault","action_needed","waiting_on","replicas"],"additionalProperties":false}},"required":["cluster","region","cloud","machine_type","node_count","cidr_allowlist","engine_config","endpoints","status"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}}},"description":"Read one region of a cluster and its status."},"delete":{"tags":["Regions"],"operationId":"regions.delete","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true},{"name":"region","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"202":{"description":"<No Content>"},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictEncoded"}}}}},"description":"Request a region's removal. Fails with a conflict while any runner pool uses the region."}},"/v2/clusters/{cluster}/metrics":{"get":{"tags":["Metrics"],"operationId":"metrics.get","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true},{"name":"metrics","in":"query","schema":{"type":"string","description":"Comma-separated metrics to read: `awake_actors`, `connections`, `actions_per_minute`, `wake_latency_p50`, `cpu_utilization`, `memory_utilization`, `disk_utilization`, `engine_ssd_utilization`."},"required":true},{"name":"actor_name","in":"query","schema":{"anyOf":[{"type":"string","description":"Only actors with this name. Applies only to actor metrics."},{"type":"null"}]},"required":false},{"name":"source","in":"query","schema":{"anyOf":[{"type":"string","enum":["engine","runner"],"description":"Only the engine's VMs, or only the runners'. Actor metrics come only from runners."},{"type":"null"}]},"required":false},{"name":"runner_pool","in":"query","schema":{"anyOf":[{"type":"string","description":"Only this runner pool."},{"type":"null"}]},"required":false},{"name":"from","in":"query","schema":{"anyOf":[{"type":"string","pattern":"^[+-]?\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?$"},{"type":"null"}]},"required":false},{"name":"to","in":"query","schema":{"anyOf":[{"type":"string","pattern":"^[+-]?\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?$"},{"type":"null"}]},"required":false},{"name":"step","in":"query","schema":{"anyOf":[{"type":"string","pattern":"^[+-]?\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?$"},{"type":"null"}]},"required":false}],"security":[{"bearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"from":{"anyOf":[{"type":"number"},{"type":"string","enum":["Infinity","-Infinity","NaN"]}]},"to":{"anyOf":[{"type":"number"},{"type":"string","enum":["Infinity","-Infinity","NaN"]}]},"step":{"type":"integer"},"stats":{"type":"object","additionalProperties":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"string","enum":["Infinity","-Infinity","NaN"]}]},{"type":"null"}]}},"series":{"type":"object","additionalProperties":{"type":"array","items":{"type":"array","prefixItems":[{"anyOf":[{"type":"number"},{"type":"string","enum":["Infinity","-Infinity","NaN"]}]},{"anyOf":[{"type":"number"},{"type":"string","enum":["Infinity","-Infinity","NaN"]}]}],"maxItems":2,"minItems":2}}}},"required":["from","to","step","stats","series"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"ServiceUnavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableEncoded"}}}}},"description":"Read time series for a cluster: its actors, from what its runners report, and its VMs' CPU, memory and disk use. A window covers at most 30 days."}},"/v2/clusters/{cluster}/logs":{"get":{"tags":["Logs"],"operationId":"logs.list","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true},{"name":"source","in":"query","schema":{"anyOf":[{"type":"string","enum":["engine","runner"],"description":"Only the engine's lines, or only the runners'."},{"type":"null"}]},"required":false},{"name":"runner_pool","in":"query","schema":{"anyOf":[{"type":"string","description":"Only lines from this runner pool."},{"type":"null"}]},"required":false},{"name":"contains","in":"query","schema":{"anyOf":[{"type":"string","maxLength":256,"description":"Only lines containing this text, ignoring case."},{"type":"null"}]},"required":false},{"name":"min_severity","in":"query","schema":{"anyOf":[{"type":"string","enum":["trace","debug","info","warn","error","fatal"],"description":"Only lines at this severity or above. Leaves out lines without one."},{"type":"null"}]},"required":false},{"name":"severity","in":"query","schema":{"anyOf":[{"type":"string","description":"Comma-separated severities to keep, from `trace`, `debug`, `info`, `warn`, `error`, `fatal`. Leaves out lines without one. Cannot be combined with `min_severity`."},{"type":"null"}]},"required":false},{"name":"before","in":"query","schema":{"anyOf":[{"type":"string","description":"A line's `id`. Reads the lines just before it."},{"type":"null"}]},"required":false},{"name":"after","in":"query","schema":{"anyOf":[{"type":"string","description":"A line's `id`. Reads the lines just after it, oldest first, to follow new output."},{"type":"null"}]},"required":false},{"name":"from","in":"query","schema":{"anyOf":[{"type":"string","pattern":"^[+-]?\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?$"},{"type":"null"}]},"required":false},{"name":"to","in":"query","schema":{"anyOf":[{"type":"string","pattern":"^[+-]?\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?$"},{"type":"null"}]},"required":false},{"name":"ansi","in":"query","schema":{"anyOf":[{"type":"string","enum":["true","false"]},{"type":"null"}]},"required":false},{"name":"limit","in":"query","schema":{"anyOf":[{"type":"string","pattern":"^[+-]?\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?$"},{"type":"null"}]},"required":false}],"security":[{"bearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"timestamp":{"type":"string"},"severity":{"anyOf":[{"type":"string","enum":["trace","debug","info","warn","error","fatal"]},{"type":"null"}]},"message":{"type":"string"},"source":{"type":"string","enum":["engine","runner"]},"runner_pool":{"anyOf":[{"type":"string"},{"type":"null"}]},"instance_id":{"type":"string"}},"required":["id","timestamp","severity","message","source","runner_pool","instance_id"],"additionalProperties":false}},"has_more":{"type":"boolean"}},"required":["items","has_more"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"ServiceUnavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableEncoded"}}}}},"description":"Read the output of a cluster's engine and runners. Without `after`, returns the newest lines in the window; page back with `before`. Lines can arrive up to a minute after they were written, so a follower should re-read its last minute. A window with both `from` and `to` covers at most 30 days."}},"/v2/clusters/{cluster}/runner-pools":{"get":{"tags":["Runner pools"],"operationId":"runnerPools.list","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true},{"name":"region","in":"query","schema":{"anyOf":[{"type":"string"},{"type":"null"}]},"required":false}],"security":[{"bearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"cluster":{"type":"string"},"region":{"type":"string"},"pool":{"type":"string"},"build_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"machine_type":{"anyOf":[{"type":"string","enum":["e2-micro","e2-small","e2-medium","e2-custom-4-8192","e2-custom-8-16384"]},{"type":"null"}]},"node_count":{"type":"integer"},"drain_timeout_ms":{"type":"integer","description":"How long, in milliseconds, each of the pool's VMs may take to shut down, for its actors to stop, before it is deleted. A VM is deleted as soon as it stops, so this is an upper bound."},"cidr_allowlist":{"type":"array","items":{"type":"string"}},"env":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"string":{"type":"string"}},"required":["string"],"additionalProperties":false},{"type":"object","properties":{"secret":{"type":"object","properties":{"name":{"type":"string"},"pinned_version":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["name","pinned_version"],"additionalProperties":false}},"required":["secret"],"additionalProperties":false}]},"description":"The variables the pool's app starts with, by name: a string, or a cluster secret by name. A secret's `pinned_version` is null while the pool takes its latest version, and set after a rollback until `env` is next sent."},"endpoints":{"type":"object","properties":{"public":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["public"],"additionalProperties":false},"status":{"type":"object","properties":{"state":{"type":"string","enum":["provisioning","ready","updating","degraded","down","deleting"]},"state_since":{"anyOf":[{"type":"integer"},{"type":"null"}]},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"fault":{"anyOf":[{"type":"string","enum":["user","platform"]},{"type":"null"}]},"action_needed":{"type":"boolean"},"waiting_on":{"anyOf":[{"type":"string","enum":["project","arena","infrastructure","engine","runners"]},{"type":"null"}]},"replicas":{"anyOf":[{"type":"object","properties":{"desired":{"type":"integer"},"ready":{"type":"integer"},"updated":{"type":"integer"}},"required":["desired","ready","updated"],"additionalProperties":false},{"type":"null"}]}},"required":["state","state_since","message","fault","action_needed","waiting_on","replicas"],"additionalProperties":false}},"required":["cluster","region","pool","build_id","machine_type","node_count","drain_timeout_ms","cidr_allowlist","env","endpoints","status"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}}},"description":"List a cluster's runner pools, optionally only those of one region."}},"/v2/clusters/{cluster}/regions/{region}/runner-pools/{pool}":{"put":{"tags":["Runner pools"],"operationId":"runnerPools.upsert","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true},{"name":"region","in":"path","schema":{"type":"string"},"required":true},{"name":"pool","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"cluster":{"type":"string"},"region":{"type":"string"},"pool":{"type":"string"},"build_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"machine_type":{"anyOf":[{"type":"string","enum":["e2-micro","e2-small","e2-medium","e2-custom-4-8192","e2-custom-8-16384"]},{"type":"null"}]},"node_count":{"type":"integer"},"drain_timeout_ms":{"type":"integer","description":"How long, in milliseconds, each of the pool's VMs may take to shut down, for its actors to stop, before it is deleted. A VM is deleted as soon as it stops, so this is an upper bound."},"cidr_allowlist":{"type":"array","items":{"type":"string"}},"env":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"string":{"type":"string"}},"required":["string"],"additionalProperties":false},{"type":"object","properties":{"secret":{"type":"object","properties":{"name":{"type":"string"},"pinned_version":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["name","pinned_version"],"additionalProperties":false}},"required":["secret"],"additionalProperties":false}]},"description":"The variables the pool's app starts with, by name: a string, or a cluster secret by name. A secret's `pinned_version` is null while the pool takes its latest version, and set after a rollback until `env` is next sent."},"endpoints":{"type":"object","properties":{"public":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["public"],"additionalProperties":false},"status":{"type":"object","properties":{"state":{"type":"string","enum":["provisioning","ready","updating","degraded","down","deleting"]},"state_since":{"anyOf":[{"type":"integer"},{"type":"null"}]},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"fault":{"anyOf":[{"type":"string","enum":["user","platform"]},{"type":"null"}]},"action_needed":{"type":"boolean"},"waiting_on":{"anyOf":[{"type":"string","enum":["project","arena","infrastructure","engine","runners"]},{"type":"null"}]},"replicas":{"anyOf":[{"type":"object","properties":{"desired":{"type":"integer"},"ready":{"type":"integer"},"updated":{"type":"integer"}},"required":["desired","ready","updated"],"additionalProperties":false},{"type":"null"}]}},"required":["state","state_since","message","fault","action_needed","waiting_on","replicas"],"additionalProperties":false}},"required":["cluster","region","pool","build_id","machine_type","node_count","drain_timeout_ms","cidr_allowlist","env","endpoints","status"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"402":{"description":"PaymentRequired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequiredEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictEncoded"}}}},"503":{"description":"ServiceUnavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableEncoded"}}}}},"description":"Roll a runner pool out to a build, creating the pool when it does not exist. `build_id` must name a build whose `status` is `ready`, and the pool's region must be enabled on the cluster. `machine_type` and `node_count` change the pool's machine type and count; a new pool without them gets one `e2-small` node, and an existing pool without them keeps its own. `drain_timeout_ms` bounds how long each VM may take to shut down: a new pool without it gets 25 minutes, and an existing pool without it keeps its own. Changing it rolls the pool, and a drain above 30 minutes also restarts the engine first. `env` replaces the variables the pool's app starts with, which may name cluster secrets, and an upsert without it keeps them. The cluster's plan caps the machine types and the nodes across its pools, and refuses the rest as a bad request on `machine_type` or `node_count`. Runner nodes on a paid plan are charged to the organization, which fails with 402 when it has no payment method.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"build_id":{"type":"string"},"cidr_allowlist":{"type":"array","items":{"type":"string"}},"machine_type":{"anyOf":[{"type":"string","enum":["e2-micro","e2-small","e2-medium","e2-custom-4-8192","e2-custom-8-16384"]},{"type":"null"}]},"node_count":{"anyOf":[{"type":"integer"},{"type":"null"}]},"drain_timeout_ms":{"type":"integer","minimum":5000,"maximum":10800000,"description":"How long, in milliseconds, each of the pool's VMs may take to shut down, for its actors to stop, before it is deleted. 5000 to 10800000. A new pool without it gets 1500000 (25 minutes), and an existing pool without it keeps its own. Changing it rolls the pool, and a value above 1800000 (30 minutes) also restarts the region's engine first."},"env":{"type":"object","additionalProperties":{"anyOf":[{"type":"string","pattern":"^\\P{Cc}*$"},{"type":"object","properties":{"string":{"type":"string","pattern":"^\\P{Cc}*$"}},"required":["string"],"additionalProperties":false},{"type":"object","properties":{"secret":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"pinned_version":{"type":"integer"}},"required":["name"],"additionalProperties":false}]}},"required":["secret"],"additionalProperties":false}]}}},"required":["build_id","cidr_allowlist"],"additionalProperties":false}}},"required":true}},"get":{"tags":["Runner pools"],"operationId":"runnerPools.get","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true},{"name":"region","in":"path","schema":{"type":"string"},"required":true},{"name":"pool","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"cluster":{"type":"string"},"region":{"type":"string"},"pool":{"type":"string"},"build_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"machine_type":{"anyOf":[{"type":"string","enum":["e2-micro","e2-small","e2-medium","e2-custom-4-8192","e2-custom-8-16384"]},{"type":"null"}]},"node_count":{"type":"integer"},"drain_timeout_ms":{"type":"integer","description":"How long, in milliseconds, each of the pool's VMs may take to shut down, for its actors to stop, before it is deleted. A VM is deleted as soon as it stops, so this is an upper bound."},"cidr_allowlist":{"type":"array","items":{"type":"string"}},"env":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"string":{"type":"string"}},"required":["string"],"additionalProperties":false},{"type":"object","properties":{"secret":{"type":"object","properties":{"name":{"type":"string"},"pinned_version":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["name","pinned_version"],"additionalProperties":false}},"required":["secret"],"additionalProperties":false}]},"description":"The variables the pool's app starts with, by name: a string, or a cluster secret by name. A secret's `pinned_version` is null while the pool takes its latest version, and set after a rollback until `env` is next sent."},"endpoints":{"type":"object","properties":{"public":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["public"],"additionalProperties":false},"status":{"type":"object","properties":{"state":{"type":"string","enum":["provisioning","ready","updating","degraded","down","deleting"]},"state_since":{"anyOf":[{"type":"integer"},{"type":"null"}]},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"fault":{"anyOf":[{"type":"string","enum":["user","platform"]},{"type":"null"}]},"action_needed":{"type":"boolean"},"waiting_on":{"anyOf":[{"type":"string","enum":["project","arena","infrastructure","engine","runners"]},{"type":"null"}]},"replicas":{"anyOf":[{"type":"object","properties":{"desired":{"type":"integer"},"ready":{"type":"integer"},"updated":{"type":"integer"}},"required":["desired","ready","updated"],"additionalProperties":false},{"type":"null"}]}},"required":["state","state_since","message","fault","action_needed","waiting_on","replicas"],"additionalProperties":false}},"required":["cluster","region","pool","build_id","machine_type","node_count","drain_timeout_ms","cidr_allowlist","env","endpoints","status"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}}},"description":"Read one runner pool and its rollout status. `build_id` is null for a pool that has never been given a build."},"delete":{"tags":["Runner pools"],"operationId":"runnerPools.delete","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true},{"name":"region","in":"path","schema":{"type":"string"},"required":true},{"name":"pool","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"202":{"description":"<No Content>"},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictEncoded"}}}}},"description":"Request a runner pool's removal."}},"/v2/clusters/{cluster}/secrets":{"get":{"tags":["Secrets"],"operationId":"secrets.list","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"latest_version":{"type":"integer"},"updated_at":{"type":"string","description":"When the latest version was rolled out, as an ISO 8601 timestamp."}},"required":["name","latest_version","updated_at"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}}},"description":"List a cluster's secrets: names, latest versions and when each was last rolled out. Values are never returned."}},"/v2/clusters/{cluster}/secrets/rollout":{"post":{"tags":["Secrets"],"operationId":"secrets.rollout","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"latest_version":{"type":"integer"},"changed":{"type":"boolean"}},"required":["name","latest_version","changed"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictEncoded"}}}},"503":{"description":"ServiceUnavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableEncoded"}}}}},"description":"Roll out a value for a cluster secret, creating the secret when it does not exist. The value is stored encrypted as the secret's next version, and every runner pool whose `env` names the secret rolls onto it, one node at a time. Rolling out the latest value again changes nothing. `name` is letters, digits, `_` and `-`, such as `DATABASE_URL` or `db-url`, and `value` is one line of text of at most 1024 bytes; a cluster holds at most 64 secrets. The value is never returned by any endpoint.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string","pattern":"^\\P{Cc}*$"}},"required":["name","value"],"additionalProperties":false}}},"required":true}}},"/v2/clusters/{cluster}/secrets/{name}":{"delete":{"tags":["Secrets"],"operationId":"secrets.delete","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true},{"name":"name","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"204":{"description":"<No Content>"},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictEncoded"}}}}},"description":"Delete a cluster secret. Refused with 409 while a runner pool's `env` names it, including a version pinned by a rollback."}},"/v2/clusters/{cluster}/builds":{"get":{"tags":["Builds"],"operationId":"builds.list","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"cluster":{"type":"string"},"build_id":{"type":"string"},"image":{"type":"string"},"content_length":{"type":"integer"},"content_md5":{"type":"string"},"status":{"type":"string","enum":["uploading","completing","preparing","ready","failed","expired","deleting"]},"created_at":{"type":"string"},"upload_expires_at":{"type":"string"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"failure":{"anyOf":[{"type":"object","properties":{"fault":{"type":"string","enum":["user","platform"]},"code":{"type":"string"},"message":{"type":"string"}},"required":["fault","code","message"],"additionalProperties":false},{"type":"null"}]}},"required":["cluster","build_id","image","content_length","content_md5","status","created_at","upload_expires_at","completed_at","failure"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}}},"description":"List every build of a cluster with its status, newest first."},"post":{"tags":["Builds"],"operationId":"builds.create","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"build_id":{"type":"string"},"upload_url":{"type":"string"},"expires_at":{"type":"string"}},"required":["build_id","upload_url","expires_at"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictEncoded"}}}}},"description":"Register a build and get the URL its image is uploaded to. `content_length` is the size in bytes of the `docker image save` tarball and `content_md5` is its MD5 digest in base64, as `openssl md5 -binary app.tar | base64` prints it. Send the tarball to `upload_url` with one HTTP PUT that carries `Content-MD5` and exactly `content_length` bytes, before `expires_at`, then complete the build. The tarball never passes through the API.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"image":{"type":"string","minLength":1,"maxLength":255},"content_length":{"type":"integer","minimum":1,"maximum":5368709120},"content_md5":{"type":"string"}},"required":["image","content_length","content_md5"],"additionalProperties":false}}},"required":true}}},"/v2/clusters/{cluster}/builds/{build_id}/complete":{"post":{"tags":["Builds"],"operationId":"builds.complete","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true},{"name":"build_id","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"202":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"cluster":{"type":"string"},"build_id":{"type":"string"},"image":{"type":"string"},"content_length":{"type":"integer"},"content_md5":{"type":"string"},"status":{"type":"string","enum":["uploading","completing","preparing","ready","failed","expired","deleting"]},"created_at":{"type":"string"},"upload_expires_at":{"type":"string"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"failure":{"anyOf":[{"type":"object","properties":{"fault":{"type":"string","enum":["user","platform"]},"code":{"type":"string"},"message":{"type":"string"}},"required":["fault","code","message"],"additionalProperties":false},{"type":"null"}]}},"required":["cluster","build_id","image","content_length","content_md5","status","created_at","upload_expires_at","completed_at","failure"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}}},"description":"Request that an uploaded build be verified and made available. Verification and preparing the image its runners boot run in the background, so the build is usually `completing`, then `preparing`; read it until it is `ready`, or `failed`, when `failure` says why, such as an upload that does not match the declared size and digest."}},"/v2/clusters/{cluster}/builds/{build_id}":{"get":{"tags":["Builds"],"operationId":"builds.get","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true},{"name":"build_id","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"cluster":{"type":"string"},"build_id":{"type":"string"},"image":{"type":"string"},"content_length":{"type":"integer"},"content_md5":{"type":"string"},"status":{"type":"string","enum":["uploading","completing","preparing","ready","failed","expired","deleting"]},"created_at":{"type":"string"},"upload_expires_at":{"type":"string"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"failure":{"anyOf":[{"type":"object","properties":{"fault":{"type":"string","enum":["user","platform"]},"code":{"type":"string"},"message":{"type":"string"}},"required":["fault","code","message"],"additionalProperties":false},{"type":"null"}]}},"required":["cluster","build_id","image","content_length","content_md5","status","created_at","upload_expires_at","completed_at","failure"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}}},"description":"Read one build and where it is in its lifecycle."},"delete":{"tags":["Builds"],"operationId":"builds.delete","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true},{"name":"build_id","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"202":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"cluster":{"type":"string"},"build_id":{"type":"string"},"image":{"type":"string"},"content_length":{"type":"integer"},"content_md5":{"type":"string"},"status":{"type":"string","enum":["uploading","completing","preparing","ready","failed","expired","deleting"]},"created_at":{"type":"string"},"upload_expires_at":{"type":"string"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"failure":{"anyOf":[{"type":"object","properties":{"fault":{"type":"string","enum":["user","platform"]},"code":{"type":"string"},"message":{"type":"string"}},"required":["fault","code","message"],"additionalProperties":false},{"type":"null"}]}},"required":["cluster","build_id","image","content_length","content_md5","status","created_at","upload_expires_at","completed_at","failure"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictEncoded"}}}}},"description":"Request a build's deletion. Refused with a conflict while runners run the build or can roll back to it."}},"/v2/clusters/{cluster}/nodes":{"get":{"tags":["Nodes"],"operationId":"nodes.list","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true},{"name":"region","in":"query","schema":{"anyOf":[{"type":"string"},{"type":"null"}]},"required":false},{"name":"namespace","in":"query","schema":{"anyOf":[{"type":"string"},{"type":"null"}]},"required":false},{"name":"pool","in":"query","schema":{"anyOf":[{"type":"string"},{"type":"null"}]},"required":false}],"security":[{"bearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"cluster":{"type":"string"},"region":{"type":"string"},"node_id":{"type":"string"},"machine_type":{"type":"string","enum":["e2-micro","e2-small","e2-medium","e2-custom-4-8192","e2-custom-8-16384"]},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}]},"pool":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"object","properties":{"ready":{"type":"boolean"}},"required":["ready"],"additionalProperties":false}},"required":["cluster","region","node_id","machine_type","status"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"501":{"description":"NotImplemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotImplementedEncoded"}}}}},"description":"List a cluster's nodes, optionally filtered by region, namespace or pool."}},"/v2/clusters/{cluster}/nodes/{node_id}":{"get":{"tags":["Nodes"],"operationId":"nodes.get","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true},{"name":"node_id","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"cluster":{"type":"string"},"region":{"type":"string"},"node_id":{"type":"string"},"machine_type":{"type":"string","enum":["e2-micro","e2-small","e2-medium","e2-custom-4-8192","e2-custom-8-16384"]},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}]},"pool":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"object","properties":{"ready":{"type":"boolean"}},"required":["ready"],"additionalProperties":false}},"required":["cluster","region","node_id","machine_type","status"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"501":{"description":"NotImplemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotImplementedEncoded"}}}}},"description":"Read one node of a cluster."}},"/v2/clusters/{cluster}/tokens":{"get":{"tags":["Cluster tokens"],"operationId":"clusterTokens.list","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"cluster":{"type":"string"},"token_id":{"type":"string"},"name":{"type":"string"},"scopes":{"type":"array","items":{"type":"string","enum":["rivet:cluster:read","rivet:cluster:deploy","rivet:cluster:logs:read","rivet:cluster:engine:read","rivet:cluster:engine:write","rivet:cluster:secrets:write"]}},"last_four":{"type":"string"},"created_by_user_id":{"type":"string"},"created_at":{"type":"string"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"last_used_at":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["cluster","token_id","name","scopes","last_four","created_by_user_id","created_at","expires_at","last_used_at"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}}},"description":"List a cluster's API tokens that are not revoked, newest first, expired ones included."},"post":{"tags":["Cluster tokens"],"operationId":"clusterTokens.create","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"cluster":{"type":"string"},"token_id":{"type":"string"},"name":{"type":"string"},"scopes":{"type":"array","items":{"type":"string","enum":["rivet:cluster:read","rivet:cluster:deploy","rivet:cluster:logs:read","rivet:cluster:engine:read","rivet:cluster:engine:write","rivet:cluster:secrets:write"]}},"last_four":{"type":"string"},"created_by_user_id":{"type":"string"},"created_at":{"type":"string"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"last_used_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"cluster_token":{"type":"string"}},"required":["cluster","token_id","name","scopes","last_four","created_by_user_id","created_at","expires_at","last_used_at","cluster_token"],"additionalProperties":false}}}},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictEncoded"}}}}},"description":"Create an API token for one cluster, for CI and other non-interactive callers. It grants only `scopes`, which never change: `rivet:cluster:read` reads the cluster, its regions, runner pools, builds, nodes and metrics; `rivet:cluster:deploy` uploads builds and rolls existing runner pools out to them; `rivet:cluster:logs:read` reads logs; `rivet:cluster:engine:read` and `rivet:cluster:engine:write` call the cluster's engine API, which includes actor state; `rivet:cluster:secrets:write` rolls out and deletes cluster secrets and, with `rivet:cluster:deploy`, changes a runner pool's `env`. A deploy also needs `rivet:cluster:read`. A token stops working when its creator leaves the organization. Only a signed-in member can create one, and a cluster holds at most 50 working tokens. `cluster_token` is shown only in this response.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":255},"scopes":{"type":"array","items":{"type":"string","enum":["rivet:cluster:read","rivet:cluster:deploy","rivet:cluster:logs:read","rivet:cluster:engine:read","rivet:cluster:engine:write","rivet:cluster:secrets:write"]},"minItems":1,"uniqueItems":true},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","scopes"],"additionalProperties":false}}},"required":true}}},"/v2/clusters/{cluster}/tokens/{token_id}":{"delete":{"tags":["Cluster tokens"],"operationId":"clusterTokens.revoke","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true},{"name":"token_id","in":"path","schema":{"type":"string","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"},"required":true}],"security":[{"bearer":[]}],"responses":{"204":{"description":"<No Content>"},"400":{"description":"BadRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestEncoded"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}}},"description":"Revoke a cluster's API token. It stops working right away."}},"/v2/clusters/{cluster}/engine/actors":{"get":{"tags":["Engine"],"operationId":"engine.actors_list","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true,"description":"The cluster whose engine answers the request."},{"name":"namespace","in":"query","required":true,"schema":{"type":"string"}},{"name":"name","in":"query","required":false,"schema":{"type":"string"}},{"name":"key","in":"query","required":false,"schema":{"type":"string"}},{"name":"actor_ids","in":"query","description":"Deprecated.","required":false,"schema":{"type":"string"}},{"name":"actor_id","in":"query","required":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/EngineRivetId"}}},{"name":"include_destroyed","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":0}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineActorsListResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"Cluster not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"The cluster's engine could not be reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterUnreachableEncoded"}}}}},"security":[{"bearer":[]}],"x-fern-sdk-group-name":["engine","actors"],"x-fern-sdk-method-name":"list"},"put":{"tags":["Engine"],"operationId":"engine.actors_get_or_create","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true,"description":"The cluster whose engine answers the request."},{"name":"namespace","in":"query","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineActorsGetOrCreateRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineActorsGetOrCreateResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"Cluster not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"The cluster's engine could not be reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterUnreachableEncoded"}}}}},"security":[{"bearer":[]}],"x-fern-sdk-group-name":["engine","actors"],"x-fern-sdk-method-name":"getOrCreate"},"post":{"tags":["Engine"],"operationId":"engine.actors_create","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true,"description":"The cluster whose engine answers the request."},{"name":"namespace","in":"query","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineActorsCreateRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineActorsCreateResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"Cluster not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"The cluster's engine could not be reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterUnreachableEncoded"}}}}},"security":[{"bearer":[]}],"x-fern-sdk-group-name":["engine","actors"],"x-fern-sdk-method-name":"create"}},"/v2/clusters/{cluster}/engine/actors/names":{"get":{"tags":["Engine"],"operationId":"engine.actors_list_names","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true,"description":"The cluster whose engine answers the request."},{"name":"namespace","in":"query","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":0}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineActorsListNamesResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"Cluster not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"The cluster's engine could not be reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterUnreachableEncoded"}}}}},"security":[{"bearer":[]}],"x-fern-sdk-group-name":["engine","actors"],"x-fern-sdk-method-name":"listNames"}},"/v2/clusters/{cluster}/engine/actors/{actor_id}":{"delete":{"tags":["Engine"],"operationId":"engine.actors_delete","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true,"description":"The cluster whose engine answers the request."},{"name":"actor_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/EngineRivetId"}},{"name":"namespace","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineActorsDeleteResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"Cluster not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"The cluster's engine could not be reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterUnreachableEncoded"}}}}},"security":[{"bearer":[]}],"x-fern-sdk-group-name":["engine","actors"],"x-fern-sdk-method-name":"delete"}},"/v2/clusters/{cluster}/engine/actors/{actor_id}/kv/keys/{key}":{"get":{"tags":["Engine"],"operationId":"engine.actors_kv_get","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true,"description":"The cluster whose engine answers the request."},{"name":"actor_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/EngineRivetId"}},{"name":"key","in":"path","required":true,"schema":{"type":"string"}},{"name":"namespace","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineActorsKvGetResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"Cluster not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"The cluster's engine could not be reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterUnreachableEncoded"}}}}},"security":[{"bearer":[]}],"x-fern-sdk-group-name":["engine","actors"],"x-fern-sdk-method-name":"kvGet"}},"/v2/clusters/{cluster}/engine/actors/{actor_id}/reschedule":{"post":{"tags":["Engine"],"operationId":"engine.actors_reschedule","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true,"description":"The cluster whose engine answers the request."},{"name":"actor_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/EngineRivetId"}},{"name":"namespace","in":"query","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineActorsRescheduleRequestBody"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineActorsRescheduleResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"Cluster not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"The cluster's engine could not be reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterUnreachableEncoded"}}}}},"security":[{"bearer":[]}],"x-fern-sdk-group-name":["engine","actors"],"x-fern-sdk-method-name":"reschedule"}},"/v2/clusters/{cluster}/engine/actors/{actor_id}/sleep":{"post":{"tags":["Engine"],"operationId":"engine.actors_sleep","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true,"description":"The cluster whose engine answers the request."},{"name":"actor_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/EngineRivetId"}},{"name":"namespace","in":"query","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineActorsSleepRequestBody"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineActorsSleepResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"Cluster not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"The cluster's engine could not be reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterUnreachableEncoded"}}}}},"security":[{"bearer":[]}],"x-fern-sdk-group-name":["engine","actors"],"x-fern-sdk-method-name":"sleep"}},"/v2/clusters/{cluster}/engine/datacenters":{"get":{"tags":["Engine"],"operationId":"engine.datacenters_list","responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineDatacentersListResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"Cluster not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"The cluster's engine could not be reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterUnreachableEncoded"}}}}},"security":[{"bearer":[]}],"parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true,"description":"The cluster whose engine answers the request."}],"x-fern-sdk-group-name":["engine","datacenters"],"x-fern-sdk-method-name":"list"}},"/v2/clusters/{cluster}/engine/health/fanout":{"get":{"tags":["Engine"],"operationId":"engine.health_fanout","responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineHealthFanoutResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"Cluster not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"The cluster's engine could not be reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterUnreachableEncoded"}}}}},"security":[{"bearer":[]}],"parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true,"description":"The cluster whose engine answers the request."}],"x-fern-sdk-group-name":["engine","health"],"x-fern-sdk-method-name":"fanout"}},"/v2/clusters/{cluster}/engine/metadata":{"get":{"tags":["Engine"],"operationId":"engine.metadata_get","responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineMetadataGetResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"Cluster not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"The cluster's engine could not be reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterUnreachableEncoded"}}}}},"parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true,"description":"The cluster whose engine answers the request."}],"security":[{"bearer":[]}],"x-fern-sdk-group-name":["engine","metadata"],"x-fern-sdk-method-name":"get"}},"/v2/clusters/{cluster}/engine/namespaces":{"get":{"tags":["Engine"],"operationId":"engine.namespaces_list","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true,"description":"The cluster whose engine answers the request."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":0}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"name","in":"query","required":false,"schema":{"type":"string"}},{"name":"namespace_ids","in":"query","description":"Deprecated.","required":false,"schema":{"type":"string"}},{"name":"namespace_id","in":"query","required":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/EngineRivetId"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineNamespaceListResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"Cluster not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"The cluster's engine could not be reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterUnreachableEncoded"}}}}},"security":[{"bearer":[]}],"x-fern-sdk-group-name":["engine","namespaces"],"x-fern-sdk-method-name":"list"},"post":{"tags":["Engine"],"operationId":"engine.namespaces_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineNamespacesCreateRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineNamespacesCreateResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"Cluster not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"The cluster's engine could not be reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterUnreachableEncoded"}}}}},"security":[{"bearer":[]}],"parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true,"description":"The cluster whose engine answers the request."}],"x-fern-sdk-group-name":["engine","namespaces"],"x-fern-sdk-method-name":"create"}},"/v2/clusters/{cluster}/engine/runner-configs":{"get":{"tags":["Engine"],"operationId":"engine.runner_configs_list","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true,"description":"The cluster whose engine answers the request."},{"name":"namespace","in":"query","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":0}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"variant","in":"query","required":false,"schema":{"$ref":"#/components/schemas/EngineRunnerConfigVariant"}},{"name":"runner_names","in":"query","description":"Deprecated.","required":false,"schema":{"type":"string"}},{"name":"runner_name","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineRunnerConfigsListResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"Cluster not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"The cluster's engine could not be reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterUnreachableEncoded"}}}}},"security":[{"bearer":[]}],"x-fern-sdk-group-name":["engine","runner"],"x-fern-sdk-method-name":"configsList"}},"/v2/clusters/{cluster}/engine/runner-configs/serverless-health-check":{"post":{"tags":["Engine"],"operationId":"engine.runner_configs_serverless_health_check","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true,"description":"The cluster whose engine answers the request."},{"name":"namespace","in":"query","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineRunnerConfigsServerlessHealthCheckRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineRunnerConfigsServerlessHealthCheckResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"Cluster not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"The cluster's engine could not be reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterUnreachableEncoded"}}}}},"security":[{"bearer":[]}],"x-fern-sdk-group-name":["engine","runner"],"x-fern-sdk-method-name":"configsServerlessHealthCheck"}},"/v2/clusters/{cluster}/engine/runner-configs/{runner_name}":{"put":{"tags":["Engine"],"operationId":"engine.runner_configs_upsert","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true,"description":"The cluster whose engine answers the request."},{"name":"runner_name","in":"path","required":true,"schema":{"type":"string"}},{"name":"namespace","in":"query","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineRunnerConfigsUpsertRequestBody"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineRunnerConfigsUpsertResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"Cluster not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"The cluster's engine could not be reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterUnreachableEncoded"}}}}},"security":[{"bearer":[]}],"x-fern-sdk-group-name":["engine","runner"],"x-fern-sdk-method-name":"configsUpsert"},"delete":{"tags":["Engine"],"operationId":"engine.runner_configs_delete","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true,"description":"The cluster whose engine answers the request."},{"name":"runner_name","in":"path","required":true,"schema":{"type":"string"}},{"name":"namespace","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineRunnerConfigsDeleteResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"Cluster not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"The cluster's engine could not be reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterUnreachableEncoded"}}}}},"security":[{"bearer":[]}],"x-fern-sdk-group-name":["engine","runner"],"x-fern-sdk-method-name":"configsDelete"}},"/v2/clusters/{cluster}/engine/runner-configs/{runner_name}/refresh-metadata":{"post":{"tags":["Engine"],"operationId":"engine.runner_configs_refresh_metadata","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true,"description":"The cluster whose engine answers the request."},{"name":"runner_name","in":"path","required":true,"schema":{"type":"string"}},{"name":"namespace","in":"query","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineRunnerConfigsRefreshMetadataRequestBody"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineRunnerConfigsRefreshMetadataResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"Cluster not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"The cluster's engine could not be reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterUnreachableEncoded"}}}}},"security":[{"bearer":[]}],"x-fern-sdk-group-name":["engine","runner"],"x-fern-sdk-method-name":"configsRefreshMetadata"}},"/v2/clusters/{cluster}/engine/runners":{"get":{"tags":["Engine"],"operationId":"engine.runners_list","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true,"description":"The cluster whose engine answers the request."},{"name":"namespace","in":"query","required":true,"schema":{"type":"string"}},{"name":"name","in":"query","required":false,"schema":{"type":"string"}},{"name":"runner_ids","in":"query","description":"Deprecated.","required":false,"schema":{"type":"string"}},{"name":"runner_id","in":"query","required":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/EngineRivetId"}}},{"name":"include_stopped","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":0}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineRunnersListResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"Cluster not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"The cluster's engine could not be reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterUnreachableEncoded"}}}}},"security":[{"bearer":[]}],"x-fern-sdk-group-name":["engine","runners"],"x-fern-sdk-method-name":"list"}},"/v2/clusters/{cluster}/engine/runners/names":{"get":{"tags":["Engine"],"operationId":"engine.runners_list_names","parameters":[{"name":"cluster","in":"path","schema":{"type":"string"},"required":true,"description":"The cluster whose engine answers the request."},{"name":"namespace","in":"query","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":0}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineRunnersListNamesResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedEncoded"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenEncoded"}}}},"404":{"description":"Cluster not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundEncoded"}}}},"503":{"description":"The cluster's engine could not be reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterUnreachableEncoded"}}}}},"security":[{"bearer":[]}],"x-fern-sdk-group-name":["engine","runners"],"x-fern-sdk-method-name":"listNames"}}},"components":{"schemas":{"BadRequestEncoded":{"type":"object","properties":{"_tag":{"type":"string","enum":["BadRequest"]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["_tag","message","errors"],"additionalProperties":false},"UnauthorizedEncoded":{"type":"object","properties":{"_tag":{"type":"string","enum":["Unauthorized"]},"message":{"type":"string"}},"required":["_tag","message"],"additionalProperties":false},"ForbiddenEncoded":{"type":"object","properties":{"_tag":{"type":"string","enum":["Forbidden"]},"message":{"type":"string"}},"required":["_tag","message"],"additionalProperties":false},"NotFoundEncoded":{"type":"object","properties":{"_tag":{"type":"string","enum":["NotFound"]},"message":{"type":"string"}},"required":["_tag","message"],"additionalProperties":false},"ConflictEncoded":{"type":"object","properties":{"_tag":{"type":"string","enum":["Conflict"]},"message":{"type":"string"}},"required":["_tag","message"],"additionalProperties":false},"NotImplementedEncoded":{"type":"object","properties":{"_tag":{"type":"string","enum":["NotImplemented"]},"message":{"type":"string"}},"required":["_tag","message"],"additionalProperties":false},"ServiceUnavailableEncoded":{"type":"object","properties":{"_tag":{"type":"string","enum":["ServiceUnavailable"]},"message":{"type":"string"}},"required":["_tag","message"],"additionalProperties":false},"PaymentRequiredEncoded":{"type":"object","properties":{"_tag":{"type":"string","enum":["PaymentRequired"]},"message":{"type":"string"}},"required":["_tag","message"],"additionalProperties":false},"UnprocessableEntityEncoded":{"type":"object","properties":{"_tag":{"type":"string","enum":["UnprocessableEntity"]},"message":{"type":"string"}},"required":["_tag","message"],"additionalProperties":false},"ClusterTokenEncoded":{"type":"object","properties":{"_tag":{"type":"string","enum":["ClusterToken"]},"tokenId":{"type":"string"},"organizationId":{"type":"string"},"clusterId":{"type":"string"},"scopes":{"type":"array","items":{"type":"string","enum":["rivet:cluster:read","rivet:cluster:deploy","rivet:cluster:logs:read","rivet:cluster:engine:read","rivet:cluster:engine:write","rivet:cluster:secrets:write"]}}},"required":["_tag","tokenId","organizationId","clusterId","scopes"],"additionalProperties":false},"OAuthEncoded":{"type":"object","properties":{"_tag":{"type":"string","enum":["OAuth"]},"userId":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}}},"required":["_tag","userId","scopes"],"additionalProperties":false},"ApiTokenEncoded":{"type":"object","properties":{"_tag":{"type":"string","enum":["ApiToken"]},"organizationId":{"type":"string"},"projectId":{"type":"string"}},"required":["_tag","organizationId","projectId"],"additionalProperties":false},"SessionEncoded":{"type":"object","properties":{"_tag":{"type":"string","enum":["Session"]},"userId":{"type":"string"},"activeOrganizationId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["_tag","userId","activeOrganizationId"],"additionalProperties":false},"ClusterUnreachableEncoded":{"type":"object","properties":{"_tag":{"type":"string","enum":["ClusterUnreachable"]},"message":{"type":"string"}},"required":["_tag","message"],"additionalProperties":false},"EngineRunnersListNamesResponse":{"type":"object","required":["names","pagination"],"properties":{"names":{"type":"array","items":{"type":"string"}},"pagination":{"$ref":"#/components/schemas/EnginePagination"}},"additionalProperties":false},"EnginePagination":{"type":"object","properties":{"cursor":{"type":["string","null"]}},"additionalProperties":false},"EngineRunnersListResponse":{"type":"object","required":["runners","pagination"],"properties":{"pagination":{"$ref":"#/components/schemas/EnginePagination"},"runners":{"type":"array","items":{"$ref":"#/components/schemas/EngineRunner"}}},"additionalProperties":false},"EngineRunner":{"type":"object","required":["runner_id","namespace_id","datacenter","name","key","version","total_slots","remaining_slots","create_ts","last_ping_ts","last_rtt"],"properties":{"create_ts":{"type":"integer","format":"int64"},"datacenter":{"type":"string"},"drain_ts":{"type":["integer","null"],"format":"int64"},"key":{"type":"string"},"last_connected_ts":{"type":["integer","null"],"format":"int64"},"last_ping_ts":{"type":"integer","format":"int64"},"last_rtt":{"type":"integer","format":"int32","minimum":0},"metadata":{"type":["object","null"],"additionalProperties":{},"propertyNames":{"type":"string"}},"name":{"type":"string"},"namespace_id":{"$ref":"#/components/schemas/EngineRivetId"},"remaining_slots":{"type":"integer","format":"int32","minimum":0},"runner_id":{"$ref":"#/components/schemas/EngineRivetId"},"stop_ts":{"type":["integer","null"],"format":"int64"},"total_slots":{"type":"integer","format":"int32","minimum":0},"version":{"type":"integer","format":"int32","minimum":0}},"additionalProperties":false},"EngineRivetId":{"type":"string"},"EngineRunnerConfigsRefreshMetadataResponse":{"type":"object","additionalProperties":false},"EngineRunnerConfigsRefreshMetadataRequestBody":{"type":"object","additionalProperties":false},"EngineRunnerConfigsDeleteResponse":{"type":"object"},"EngineRunnerConfigsUpsertResponse":{"type":"object","required":["endpoint_config_changed"],"properties":{"endpoint_config_changed":{"type":"boolean"}}},"EngineRunnerConfigsUpsertRequestBody":{"type":"object","required":["datacenters"],"properties":{"datacenters":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/EngineRunnerConfig"},"propertyNames":{"type":"string"}}},"additionalProperties":false},"EngineRunnerConfig":{"allOf":[{"$ref":"#/components/schemas/EngineRunnerConfigKind"},{"type":"object","properties":{"drain_on_version_upgrade":{"type":["boolean","null"],"description":"Deprecated."},"metadata":{}}}]},"EngineRunnerConfigKind":{"oneOf":[{"type":"object","required":["normal"],"properties":{"normal":{"type":"object","properties":{"actor_eviction_delay":{"type":["integer","null"],"format":"int32","description":"Seconds.","minimum":0},"actor_eviction_period":{"type":["integer","null"],"format":"int32","description":"Seconds.","minimum":0},"actor_eviction_rate":{"type":["number","null"],"format":"float","description":"Actors per second."},"drain_on_version_upgrade":{"type":["boolean","null"]}}}}},{"type":"object","required":["serverless"],"properties":{"serverless":{"type":"object","required":["url","request_lifespan"],"properties":{"actor_eviction_delay":{"type":["integer","null"],"format":"int32","description":"Seconds.","minimum":0},"actor_eviction_period":{"type":["integer","null"],"format":"int32","description":"Seconds.","minimum":0},"actor_eviction_rate":{"type":["number","null"],"format":"float","description":"Actors per second."},"drain_grace_period":{"type":["integer","null"],"format":"int32","description":"Seconds.","minimum":0},"drain_on_version_upgrade":{"type":["boolean","null"]},"headers":{"type":["object","null"],"additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"max_concurrent_actors":{"type":["integer","null"],"format":"int64","minimum":0},"max_runners":{"type":["integer","null"],"format":"int32","description":"Deprecated.","minimum":0},"metadata_poll_interval":{"type":["integer","null"],"format":"int64","description":"Milliseconds between metadata polling. If not set, uses the global default.","minimum":0},"min_runners":{"type":["integer","null"],"format":"int32","description":"Deprecated.","minimum":0},"request_lifespan":{"type":"integer","format":"int32","description":"Seconds.","minimum":0},"runners_margin":{"type":["integer","null"],"format":"int32","description":"Deprecated.","minimum":0},"slots_per_runner":{"type":["integer","null"],"format":"int32","description":"Deprecated.","minimum":0},"url":{"type":"string"}}}}}]},"EngineRunnerConfigsServerlessHealthCheckResponse":{"oneOf":[{"type":"object","required":["success"],"properties":{"success":{"type":"object","required":["version"],"properties":{"version":{"type":"string"}}}}},{"type":"object","required":["failure"],"properties":{"failure":{"type":"object","required":["error"],"properties":{"error":{"$ref":"#/components/schemas/EngineRunnerConfigsServerlessMetadataError"}}}}}]},"EngineRunnerConfigsServerlessMetadataError":{"type":"object","description":"Wire-format envelope for serverless metadata errors.\n\nSurfaced to API clients with a stable `{message, details, metadata}` shape\nregardless of which internal `ServerlessMetadataError` variant produced it.\n`metadata.kind` discriminates the variant; per-variant fields live alongside\n`kind`.","required":["message"],"properties":{"details":{"type":["string","null"]},"message":{"type":"string"},"metadata":{}}},"EngineRunnerConfigsServerlessHealthCheckRequest":{"type":"object","required":["url"],"properties":{"headers":{"type":"object","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"url":{"type":"string"}},"additionalProperties":false},"EngineRunnerConfigsListResponse":{"type":"object","required":["runner_configs","pagination"],"properties":{"pagination":{"$ref":"#/components/schemas/EnginePagination"},"runner_configs":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/EngineRunnerConfigsListResponseRunnerConfigsValue"},"propertyNames":{"type":"string"}}},"additionalProperties":false},"EngineRunnerConfigsListResponseRunnerConfigsValue":{"type":"object","required":["datacenters"],"properties":{"datacenters":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/EngineRunnerConfigResponse"},"propertyNames":{"type":"string"}}}},"EngineRunnerConfigResponse":{"allOf":[{"$ref":"#/components/schemas/EngineRunnerConfig"},{"type":"object","properties":{"protocol_version":{"type":["integer","null"],"format":"int32","minimum":0},"runner_pool_error":{"type":["object","null"]}}}]},"EngineRunnerConfigVariant":{"type":"string","enum":["serverless","normal"]},"EngineNamespacesCreateResponse":{"type":"object","required":["namespace"],"properties":{"namespace":{"$ref":"#/components/schemas/EngineNamespace"}},"additionalProperties":false},"EngineNamespace":{"type":"object","required":["namespace_id","name","display_name","create_ts"],"properties":{"create_ts":{"type":"integer","format":"int64"},"display_name":{"type":"string"},"name":{"type":"string"},"namespace_id":{"$ref":"#/components/schemas/EngineRivetId"}}},"EngineNamespacesCreateRequest":{"type":"object","required":["name","display_name"],"properties":{"display_name":{"type":"string"},"name":{"type":"string"}},"additionalProperties":false},"EngineNamespaceListResponse":{"type":"object","required":["namespaces","pagination"],"properties":{"namespaces":{"type":"array","items":{"$ref":"#/components/schemas/EngineNamespace"}},"pagination":{"$ref":"#/components/schemas/EnginePagination"}},"additionalProperties":false},"EngineMetadataGetResponse":{"type":"object","required":["runtime","version","git_sha","build_timestamp","rustc_version","rustc_host","cargo_target","cargo_profile","epoxy_protocol_version","envoy_protocol_version"],"properties":{"build_timestamp":{"type":"string"},"cargo_profile":{"type":"string"},"cargo_target":{"type":"string"},"envoy_protocol_version":{"type":"integer","format":"int32","minimum":0},"epoxy_protocol_version":{"type":"integer","format":"int32","minimum":0},"git_sha":{"type":"string"},"runtime":{"type":"string"},"rustc_host":{"type":"string"},"rustc_version":{"type":"string"},"version":{"type":"string"}}},"EngineHealthFanoutResponse":{"type":"object","required":["datacenters"],"properties":{"datacenters":{"type":"array","items":{"$ref":"#/components/schemas/EngineDatacenterHealth"}}}},"EngineDatacenterHealth":{"type":"object","required":["datacenter_label","datacenter_name","status"],"properties":{"datacenter_label":{"type":"integer","format":"int32","minimum":0},"datacenter_name":{"type":"string"},"error":{"type":["string","null"]},"response":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/EngineHealthResponse"}]},"rtt_ms":{"type":["number","null"],"format":"double"},"status":{"$ref":"#/components/schemas/EngineHealthStatus"}}},"EngineHealthStatus":{"type":"string","enum":["ok","error"]},"EngineHealthResponse":{"type":"object","required":["runtime","status","version"],"properties":{"runtime":{"type":"string"},"status":{"type":"string"},"version":{"type":"string"}}},"EngineDatacentersListResponse":{"type":"object","required":["datacenters","pagination"],"properties":{"datacenters":{"type":"array","items":{"$ref":"#/components/schemas/EngineDatacenter"}},"pagination":{"$ref":"#/components/schemas/EnginePagination"}},"additionalProperties":false},"EngineDatacenter":{"type":"object","required":["label","name","url"],"properties":{"label":{"type":"integer","format":"int32","minimum":0},"name":{"type":"string"},"url":{"type":"string"}},"additionalProperties":false},"EngineActorsSleepResponse":{"type":"object","additionalProperties":false},"EngineActorsSleepRequestBody":{"type":"object","additionalProperties":false},"EngineActorsRescheduleResponse":{"type":"object","additionalProperties":false},"EngineActorsRescheduleRequestBody":{"type":"object","additionalProperties":false},"EngineActorsKvGetResponse":{"type":"object","required":["value","update_ts"],"properties":{"update_ts":{"type":"integer","format":"int64"},"value":{"type":"string"}},"additionalProperties":false},"EngineActorsDeleteResponse":{"type":"object"},"EngineActorsListNamesResponse":{"type":"object","required":["names","pagination"],"properties":{"names":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/EngineActorName"},"propertyNames":{"type":"string"}},"pagination":{"$ref":"#/components/schemas/EnginePagination"}},"additionalProperties":false},"EngineActorName":{"type":"object","required":["metadata"],"properties":{"metadata":{"type":"object","additionalProperties":{},"propertyNames":{"type":"string"}}}},"EngineActorsCreateResponse":{"type":"object","required":["actor"],"properties":{"actor":{"$ref":"#/components/schemas/EngineActor"}},"additionalProperties":false},"EngineActor":{"type":"object","required":["actor_id","name","namespace_id","datacenter","runner_name_selector","crash_policy","create_ts"],"properties":{"actor_id":{"$ref":"#/components/schemas/EngineRivetId"},"connectable_ts":{"type":["integer","null"],"format":"int64","description":"Denotes when the actor was last connectable. Null if actor is not running."},"crash_policy":{"$ref":"#/components/schemas/EngineCrashPolicy"},"create_ts":{"type":"integer","format":"int64","description":"Denotes when the actor was first created."},"datacenter":{"type":"string"},"destroy_ts":{"type":["integer","null"],"format":"int64","description":"Denotes when the actor was destroyed."},"error":{"type":["object","null"],"description":"Error details if the actor failed to start."},"key":{"type":["string","null"]},"name":{"type":"string"},"namespace_id":{"$ref":"#/components/schemas/EngineRivetId"},"pending_allocation_ts":{"type":["integer","null"],"format":"int64","description":"Denotes when the actor started waiting for an allocation."},"reschedule_ts":{"type":["integer","null"],"format":"int64","description":"Denotes when the actor will try to allocate again. If this is set, the actor will not attempt to\nallocate until the given timestamp."},"runner_name_selector":{"type":"string"},"sleep_ts":{"type":["integer","null"],"format":"int64","description":"Denotes when the actor entered a sleeping state."},"start_ts":{"type":["integer","null"],"format":"int64","description":"Denotes when the actor was first made connectable. Null if never."}}},"EngineCrashPolicy":{"type":"string","enum":["restart","sleep","destroy"]},"EngineActorsCreateRequest":{"type":"object","required":["name","runner_name_selector","crash_policy"],"properties":{"crash_policy":{"$ref":"#/components/schemas/EngineCrashPolicy"},"datacenter":{"type":["string","null"]},"input":{"type":["string","null"],"description":"Arbitrary base64 encoded binary data."},"key":{"type":["string","null"]},"name":{"type":"string"},"runner_name_selector":{"type":"string"}},"additionalProperties":false},"EngineActorsGetOrCreateResponse":{"type":"object","required":["actor","created"],"properties":{"actor":{"$ref":"#/components/schemas/EngineActor"},"created":{"type":"boolean"}},"additionalProperties":false},"EngineActorsGetOrCreateRequest":{"type":"object","required":["name","key","runner_name_selector","crash_policy"],"properties":{"crash_policy":{"$ref":"#/components/schemas/EngineCrashPolicy"},"datacenter":{"type":["string","null"]},"input":{"type":["string","null"]},"key":{"type":"string"},"name":{"type":"string"},"runner_name_selector":{"type":"string"}},"additionalProperties":false},"EngineActorsListResponse":{"type":"object","required":["actors","pagination"],"properties":{"actors":{"type":"array","items":{"$ref":"#/components/schemas/EngineActor"}},"pagination":{"$ref":"#/components/schemas/EnginePagination"}},"additionalProperties":false}},"securitySchemes":{"bearer":{"type":"http","scheme":"Bearer"}}},"security":[],"tags":[{"name":"system"},{"name":"auth"},{"name":"Plans"},{"name":"Clusters"},{"name":"Regions"},{"name":"Metrics"},{"name":"Logs"},{"name":"Runner pools"},{"name":"Secrets"},{"name":"Builds"},{"name":"Nodes"},{"name":"Cluster tokens"},{"name":"Engine","description":"The cluster's engine API, forwarded through the cluster's private tunnel. The cloud API authenticates the caller and supplies the engine's admin token, so the engine's own allowlist does not apply."}]}