rivet-dev / rivet
5,823 RustRivet Actors are the primitive for stateful workloads. Built for AI agents, collaborative apps, and durable execution.
rivet-api-public Specification
Located in engine/artifacts/openapi.json on branch HEAD
3.1.0
JSON
17 Endpoints
56.7 KB
Operations & Route Endpoints (21)
Raw JSON Specification
{
"openapi": "3.1.0",
"info": {
"title": "rivet-api-public",
"description": "",
"contact": {
"name": "Rivet Gaming, LLC",
"email": "[email protected]"
},
"license": {
"name": "Apache-2.0",
"identifier": "Apache-2.0"
},
"version": "2.3.7"
},
"paths": {
"/actors": {
"get": {
"tags": [
"actors::list"
],
"summary": " ## Datacenter Round Trips",
"description": " **If key is some & `include_destroyed` is false**\n\n 2 round trips:\n - namespace::ops::resolve_for_name_global\n - GET /actors (multiple DCs based on actor IDs)\n\n\tThis path is optimized because we can read the actor IDs fro the key directly from Epoxy with\n\tstale consistency to determine which datacenter the actor lives in. Under most circumstances,\n\tthis means we don't need to fan out to all datacenters (like normal list does).\n\n\tThe reason `include_destroyed` has to be false is Epoxy only stores currently active actors. If\n\t`include_destroyed` is true, we show all previous iterations of actors with the same key.\n\n **Otherwise**\n\n 2 round trips:\n - namespace::ops::resolve_for_name_global\n - GET /actors (fanout)\n\n ## Optimized Alternative Routes",
"operationId": "actors_list",
"parameters": [
{
"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/RivetId"
}
}
},
{
"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/ActorsListResponse"
}
}
}
}
}
},
"put": {
"tags": [
"actors::get_or_create"
],
"summary": "## Datacenter Round Trips",
"description": "**If actor exists**\n\n2 round trips:\n- namespace::ops::resolve_for_name_global\n- GET /actors/{}\n\n**If actor does not exist and is created in the current datacenter:**\n\n2 round trips:\n- namespace::ops::resolve_for_name_global\n- [pegboard::workflows::actor] Create actor workflow (includes Epoxy key allocation)\n\n**If actor does not exist and is created in a different datacenter:**\n\n3 round trips:\n- namespace::ops::resolve_for_name_global\n- POST /actors to remote datacenter\n- [pegboard::workflows::actor] Create actor workflow (includes Epoxy key allocation)\n\nactor::get will always be in the same datacenter.\n\n## Optimized Alternative Routes",
"operationId": "actors_get_or_create",
"parameters": [
{
"name": "namespace",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ActorsGetOrCreateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ActorsGetOrCreateResponse"
}
}
}
}
}
},
"post": {
"tags": [
"actors::create"
],
"summary": "## Datacenter Round Trips",
"description": "**If actor is created in the current datacenter:**\n\n2 round trips:\n- namespace::ops::resolve_for_name_global\n- [pegboard::workflows::actor] Create actor workflow (includes Epoxy key allocation)\n\n**If actor is created in a different datacenter:**\n\n3 round trips:\n- namespace::ops::resolve_for_name_global\n- POST /actors to remote datacenter\n- [pegboard::workflows::actor] Create actor workflow (includes Epoxy key allocation)\n\nactor::get will always be in the same datacenter.",
"operationId": "actors_create",
"parameters": [
{
"name": "namespace",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ActorsCreateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ActorsCreateResponse"
}
}
}
}
}
}
},
"/actors/names": {
"get": {
"tags": [
"actors::list_names"
],
"summary": "## Datacenter Round Trips",
"description": "2 round trips:\n- GET /actors/names (fanout)\n- [api-peer] namespace::ops::resolve_for_name_global",
"operationId": "actors_list_names",
"parameters": [
{
"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/ActorsListNamesResponse"
}
}
}
}
},
"security": [
{
"bearer_auth": []
}
]
}
},
"/actors/{actor_id}": {
"delete": {
"tags": [
"actors::delete"
],
"summary": "## Datacenter Round Trips",
"description": "2 round trip:\n- DELETE /actors/{}\n- [api-peer] namespace::ops::resolve_for_name_global",
"operationId": "actors_delete",
"parameters": [
{
"name": "actor_id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/RivetId"
}
},
{
"name": "namespace",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ActorsDeleteResponse"
}
}
}
}
},
"security": [
{
"bearer_auth": []
}
]
}
},
"/actors/{actor_id}/kv/keys/{key}": {
"get": {
"tags": [
"actors::kv_get"
],
"operationId": "actors_kv_get",
"parameters": [
{
"name": "actor_id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/RivetId"
}
},
{
"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/ActorsKvGetResponse"
}
}
}
}
},
"security": [
{
"bearer_auth": []
}
]
}
},
"/actors/{actor_id}/reschedule": {
"post": {
"tags": [
"actors::reschedule"
],
"operationId": "actors_reschedule",
"parameters": [
{
"name": "actor_id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/RivetId"
}
},
{
"name": "namespace",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ActorsRescheduleRequestBody"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ActorsRescheduleResponse"
}
}
}
}
},
"security": [
{
"bearer_auth": []
}
]
}
},
"/actors/{actor_id}/sleep": {
"post": {
"tags": [
"actors::sleep"
],
"operationId": "actors_sleep",
"parameters": [
{
"name": "actor_id",
"in": "path",
"required": true,
"schema": {
"$ref": "#/components/schemas/RivetId"
}
},
{
"name": "namespace",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ActorsSleepRequestBody"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ActorsSleepResponse"
}
}
}
}
},
"security": [
{
"bearer_auth": []
}
]
}
},
"/datacenters": {
"get": {
"tags": [
"datacenters"
],
"operationId": "datacenters_list",
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DatacentersListResponse"
}
}
}
}
},
"security": [
{
"bearer_auth": []
}
]
}
},
"/envoys": {
"get": {
"tags": [
"envoys"
],
"operationId": "envoys_list",
"parameters": [
{
"name": "namespace",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "name",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "envoy_key",
"in": "query",
"required": false,
"schema": {
"type": "array",
"items": {
"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/EnvoysListResponse"
}
}
}
}
},
"security": [
{
"bearer_auth": []
}
]
}
},
"/health/fanout": {
"get": {
"tags": [
"health"
],
"operationId": "health_fanout",
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HealthFanoutResponse"
}
}
}
}
},
"security": [
{
"bearer_auth": []
}
]
}
},
"/metadata": {
"get": {
"tags": [
"metadata"
],
"summary": "Returns metadata about the API including runtime and version",
"operationId": "metadata_get",
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MetadataGetResponse"
}
}
}
}
}
}
},
"/namespaces": {
"get": {
"tags": [
"namespaces"
],
"operationId": "namespaces_list",
"parameters": [
{
"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/RivetId"
}
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NamespaceListResponse"
}
}
}
}
},
"security": [
{
"bearer_auth": []
}
]
},
"post": {
"tags": [
"namespaces"
],
"operationId": "namespaces_create",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NamespacesCreateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NamespacesCreateResponse"
}
}
}
}
},
"security": [
{
"bearer_auth": []
}
]
}
},
"/runner-configs": {
"get": {
"tags": [
"runner_configs::list"
],
"operationId": "runner_configs_list",
"parameters": [
{
"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/RunnerConfigVariant"
}
},
{
"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/RunnerConfigsListResponse"
}
}
}
}
},
"security": [
{
"bearer_auth": []
}
]
}
},
"/runner-configs/serverless-health-check": {
"post": {
"tags": [
"runner_configs::serverless_health_check"
],
"operationId": "runner_configs_serverless_health_check",
"parameters": [
{
"name": "namespace",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RunnerConfigsServerlessHealthCheckRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RunnerConfigsServerlessHealthCheckResponse"
}
}
}
}
},
"security": [
{
"bearer_auth": []
}
]
}
},
"/runner-configs/{runner_name}": {
"put": {
"tags": [
"runner_configs::upsert"
],
"operationId": "runner_configs_upsert",
"parameters": [
{
"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/RunnerConfigsUpsertRequestBody"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RunnerConfigsUpsertResponse"
}
}
}
}
},
"security": [
{
"bearer_auth": []
}
]
},
"delete": {
"tags": [
"runner_configs::delete"
],
"operationId": "runner_configs_delete",
"parameters": [
{
"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/RunnerConfigsDeleteResponse"
}
}
}
}
},
"security": [
{
"bearer_auth": []
}
]
}
},
"/runner-configs/{runner_name}/refresh-metadata": {
"post": {
"tags": [
"runner_configs::refresh_metadata"
],
"operationId": "runner_configs_refresh_metadata",
"parameters": [
{
"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/RunnerConfigsRefreshMetadataRequestBody"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RunnerConfigsRefreshMetadataResponse"
}
}
}
}
},
"security": [
{
"bearer_auth": []
}
]
}
},
"/runners": {
"get": {
"tags": [
"runners"
],
"operationId": "runners_list",
"parameters": [
{
"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/RivetId"
}
}
},
{
"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/RunnersListResponse"
}
}
}
}
},
"security": [
{
"bearer_auth": []
}
]
}
},
"/runners/names": {
"get": {
"tags": [
"runners"
],
"summary": "## Datacenter Round Trips",
"description": "2 round trips:\n- GET /runners/names (fanout)\n- [api-peer] namespace::ops::resolve_for_name_global",
"operationId": "runners_list_names",
"parameters": [
{
"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/RunnersListNamesResponse"
}
}
}
}
},
"security": [
{
"bearer_auth": []
}
]
}
}
},
"components": {
"schemas": {
"Actor": {
"type": "object",
"required": [
"actor_id",
"name",
"namespace_id",
"datacenter",
"runner_name_selector",
"crash_policy",
"create_ts"
],
"properties": {
"actor_id": {
"$ref": "#/components/schemas/RivetId"
},
"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/CrashPolicy"
},
"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/RivetId"
},
"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."
}
}
},
"ActorName": {
"type": "object",
"required": [
"metadata"
],
"properties": {
"metadata": {
"type": "object",
"additionalProperties": {},
"propertyNames": {
"type": "string"
}
}
}
},
"ActorsCreateRequest": {
"type": "object",
"required": [
"name",
"runner_name_selector",
"crash_policy"
],
"properties": {
"crash_policy": {
"$ref": "#/components/schemas/CrashPolicy"
},
"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
},
"ActorsCreateResponse": {
"type": "object",
"required": [
"actor"
],
"properties": {
"actor": {
"$ref": "#/components/schemas/Actor"
}
},
"additionalProperties": false
},
"ActorsDeleteResponse": {
"type": "object"
},
"ActorsGetOrCreateRequest": {
"type": "object",
"required": [
"name",
"key",
"runner_name_selector",
"crash_policy"
],
"properties": {
"crash_policy": {
"$ref": "#/components/schemas/CrashPolicy"
},
"datacenter": {
"type": [
"string",
"null"
]
},
"input": {
"type": [
"string",
"null"
]
},
"key": {
"type": "string"
},
"name": {
"type": "string"
},
"runner_name_selector": {
"type": "string"
}
},
"additionalProperties": false
},
"ActorsGetOrCreateResponse": {
"type": "object",
"required": [
"actor",
"created"
],
"properties": {
"actor": {
"$ref": "#/components/schemas/Actor"
},
"created": {
"type": "boolean"
}
},
"additionalProperties": false
},
"ActorsKvGetResponse": {
"type": "object",
"required": [
"value",
"update_ts"
],
"properties": {
"update_ts": {
"type": "integer",
"format": "int64"
},
"value": {
"type": "string"
}
},
"additionalProperties": false
},
"ActorsListNamesResponse": {
"type": "object",
"required": [
"names",
"pagination"
],
"properties": {
"names": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/ActorName"
},
"propertyNames": {
"type": "string"
}
},
"pagination": {
"$ref": "#/components/schemas/Pagination"
}
},
"additionalProperties": false
},
"ActorsListResponse": {
"type": "object",
"required": [
"actors",
"pagination"
],
"properties": {
"actors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Actor"
}
},
"pagination": {
"$ref": "#/components/schemas/Pagination"
}
},
"additionalProperties": false
},
"ActorsRescheduleRequestBody": {
"type": "object",
"additionalProperties": false
},
"ActorsRescheduleResponse": {
"type": "object",
"additionalProperties": false
},
"ActorsSleepRequestBody": {
"type": "object",
"additionalProperties": false
},
"ActorsSleepResponse": {
"type": "object",
"additionalProperties": false
},
"CrashPolicy": {
"type": "string",
"enum": [
"restart",
"sleep",
"destroy"
]
},
"Datacenter": {
"type": "object",
"required": [
"label",
"name",
"url"
],
"properties": {
"label": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"name": {
"type": "string"
},
"url": {
"type": "string"
}
},
"additionalProperties": false
},
"DatacenterHealth": {
"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/HealthResponse"
}
]
},
"rtt_ms": {
"type": [
"number",
"null"
],
"format": "double"
},
"status": {
"$ref": "#/components/schemas/HealthStatus"
}
}
},
"DatacentersListResponse": {
"type": "object",
"required": [
"datacenters",
"pagination"
],
"properties": {
"datacenters": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Datacenter"
}
},
"pagination": {
"$ref": "#/components/schemas/Pagination"
}
},
"additionalProperties": false
},
"Envoy": {
"type": "object",
"required": [
"envoy_key",
"namespace_id",
"datacenter",
"pool_name",
"version",
"slots",
"create_ts",
"last_ping_ts",
"last_rtt"
],
"properties": {
"create_ts": {
"type": "integer",
"format": "int64"
},
"datacenter": {
"type": "string"
},
"envoy_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"
}
},
"namespace_id": {
"$ref": "#/components/schemas/RivetId"
},
"pool_name": {
"type": "string"
},
"slots": {
"type": "integer",
"format": "int64",
"minimum": 0
},
"stop_ts": {
"type": [
"integer",
"null"
],
"format": "int64"
},
"version": {
"type": "integer",
"format": "int32",
"minimum": 0
}
},
"additionalProperties": false
},
"EnvoysListResponse": {
"type": "object",
"required": [
"envoys",
"pagination"
],
"properties": {
"envoys": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Envoy"
}
},
"pagination": {
"$ref": "#/components/schemas/Pagination"
}
},
"additionalProperties": false
},
"HealthFanoutResponse": {
"type": "object",
"required": [
"datacenters"
],
"properties": {
"datacenters": {
"type": "array",
"items": {
"$ref": "#/components/schemas/DatacenterHealth"
}
}
}
},
"HealthResponse": {
"type": "object",
"required": [
"runtime",
"status",
"version"
],
"properties": {
"runtime": {
"type": "string"
},
"status": {
"type": "string"
},
"version": {
"type": "string"
}
}
},
"HealthStatus": {
"type": "string",
"enum": [
"ok",
"error"
]
},
"MetadataGetResponse": {
"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"
}
}
},
"Namespace": {
"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/RivetId"
}
}
},
"NamespaceListResponse": {
"type": "object",
"required": [
"namespaces",
"pagination"
],
"properties": {
"namespaces": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Namespace"
}
},
"pagination": {
"$ref": "#/components/schemas/Pagination"
}
},
"additionalProperties": false
},
"NamespacesCreateRequest": {
"type": "object",
"required": [
"name",
"display_name"
],
"properties": {
"display_name": {
"type": "string"
},
"name": {
"type": "string"
}
},
"additionalProperties": false
},
"NamespacesCreateResponse": {
"type": "object",
"required": [
"namespace"
],
"properties": {
"namespace": {
"$ref": "#/components/schemas/Namespace"
}
},
"additionalProperties": false
},
"Pagination": {
"type": "object",
"properties": {
"cursor": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
},
"RivetId": {
"type": "string"
},
"Runner": {
"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/RivetId"
},
"remaining_slots": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"runner_id": {
"$ref": "#/components/schemas/RivetId"
},
"stop_ts": {
"type": [
"integer",
"null"
],
"format": "int64"
},
"total_slots": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"version": {
"type": "integer",
"format": "int32",
"minimum": 0
}
},
"additionalProperties": false
},
"RunnerConfig": {
"allOf": [
{
"$ref": "#/components/schemas/RunnerConfigKind"
},
{
"type": "object",
"properties": {
"drain_on_version_upgrade": {
"type": [
"boolean",
"null"
],
"description": "Deprecated."
},
"metadata": {}
}
}
]
},
"RunnerConfigKind": {
"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"
}
}
}
}
}
]
},
"RunnerConfigResponse": {
"allOf": [
{
"$ref": "#/components/schemas/RunnerConfig"
},
{
"type": "object",
"properties": {
"protocol_version": {
"type": [
"integer",
"null"
],
"format": "int32",
"minimum": 0
},
"runner_pool_error": {
"type": [
"object",
"null"
]
}
}
}
]
},
"RunnerConfigVariant": {
"type": "string",
"enum": [
"serverless",
"normal"
]
},
"RunnerConfigsDeleteResponse": {
"type": "object"
},
"RunnerConfigsListResponse": {
"type": "object",
"required": [
"runner_configs",
"pagination"
],
"properties": {
"pagination": {
"$ref": "#/components/schemas/Pagination"
},
"runner_configs": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/RunnerConfigsListResponseRunnerConfigsValue"
},
"propertyNames": {
"type": "string"
}
}
},
"additionalProperties": false
},
"RunnerConfigsListResponseRunnerConfigsValue": {
"type": "object",
"required": [
"datacenters"
],
"properties": {
"datacenters": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/RunnerConfigResponse"
},
"propertyNames": {
"type": "string"
}
}
}
},
"RunnerConfigsRefreshMetadataRequestBody": {
"type": "object",
"additionalProperties": false
},
"RunnerConfigsRefreshMetadataResponse": {
"type": "object",
"additionalProperties": false
},
"RunnerConfigsServerlessHealthCheckRequest": {
"type": "object",
"required": [
"url"
],
"properties": {
"headers": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"propertyNames": {
"type": "string"
}
},
"url": {
"type": "string"
}
},
"additionalProperties": false
},
"RunnerConfigsServerlessHealthCheckResponse": {
"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/RunnerConfigsServerlessMetadataError"
}
}
}
}
}
]
},
"RunnerConfigsServerlessMetadataError": {
"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": {}
}
},
"RunnerConfigsUpsertRequestBody": {
"type": "object",
"required": [
"datacenters"
],
"properties": {
"datacenters": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/RunnerConfig"
},
"propertyNames": {
"type": "string"
}
}
},
"additionalProperties": false
},
"RunnerConfigsUpsertResponse": {
"type": "object",
"required": [
"endpoint_config_changed"
],
"properties": {
"endpoint_config_changed": {
"type": "boolean"
}
}
},
"RunnersListNamesResponse": {
"type": "object",
"required": [
"names",
"pagination"
],
"properties": {
"names": {
"type": "array",
"items": {
"type": "string"
}
},
"pagination": {
"$ref": "#/components/schemas/Pagination"
}
},
"additionalProperties": false
},
"RunnersListResponse": {
"type": "object",
"required": [
"runners",
"pagination"
],
"properties": {
"pagination": {
"$ref": "#/components/schemas/Pagination"
},
"runners": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Runner"
}
}
},
"additionalProperties": false
}
},
"securitySchemes": {
"bearer_auth": {
"type": "http",
"scheme": "bearer"
}
}
},
"security": [
{
"bearer_auth": []
}
]
}