diff --git a/src/langsmith/langsmith-platform-openapi.json b/src/langsmith/langsmith-platform-openapi.json index 87292f07e2..6205b8e890 100644 --- a/src/langsmith/langsmith-platform-openapi.json +++ b/src/langsmith/langsmith-platform-openapi.json @@ -25,7 +25,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/info/health": { @@ -47,51 +48,8 @@ } } } - } - } - }, - "/api/v1/metrics/queue/{queue_name}": { - "get": { - "tags": [ - "metrics" - ], - "summary": "Get Queue Metrics", - "description": "Return cached SAQ queue counts for the requested queue.", - "operationId": "get_queue_metrics_api_v1_metrics_queue__queue_name__get", - "parameters": [ - { - "name": "queue_name", - "in": "path", - "required": true, - "schema": { - "type": "string", - "title": "Queue Name" - } - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/QueueInfoResponse" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } }, - "x-hidden": true + "x-public": true } }, "/api/v1/sessions/{session_id}/dashboard": { @@ -172,7 +130,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/sessions/{session_id}": { @@ -181,7 +140,7 @@ "tracer-sessions" ], "summary": "Read Tracer Session", - "description": "Get a specific session.", + "description": "Get a specific project.", "operationId": "read_tracer_session_api_v1_sessions__session_id__get", "security": [ { @@ -270,14 +229,15 @@ } } } - } + }, + "x-public": true }, "patch": { "tags": [ "tracer-sessions" ], "summary": "Update Tracer Session", - "description": "Update a session.", + "description": "Update a project.", "operationId": "update_tracer_session_api_v1_sessions__session_id__patch", "security": [ { @@ -333,14 +293,15 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ "tracer-sessions" ], "summary": "Delete Tracer Session", - "description": "Delete a specific session.", + "description": "Delete a specific project.", "operationId": "delete_tracer_session_api_v1_sessions__session_id__delete", "security": [ { @@ -384,7 +345,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/sessions": { @@ -393,7 +355,7 @@ "tracer-sessions" ], "summary": "Read Tracer Sessions", - "description": "Get all sessions.", + "description": "List all projects.", "operationId": "read_tracer_sessions_api_v1_sessions_get", "security": [ { @@ -761,14 +723,15 @@ } } } - } + }, + "x-public": true }, "post": { "tags": [ "tracer-sessions" ], "summary": "Create Tracer Session", - "description": "Create a new session.", + "description": "Create a new project.", "operationId": "create_tracer_session_api_v1_sessions_post", "security": [ { @@ -824,14 +787,15 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ "tracer-sessions" ], "summary": "Delete Tracer Sessions", - "description": "Delete sessions.", + "description": "Delete projects.", "operationId": "delete_tracer_sessions_api_v1_sessions_delete", "security": [ { @@ -878,7 +842,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/sessions/{session_id}/metadata": { @@ -990,7 +955,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/sessions/{session_id}/views": { @@ -1065,7 +1031,8 @@ } } } - } + }, + "x-public": true }, "post": { "tags": [ @@ -1128,7 +1095,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/sessions/{session_id}/views/{view_id}": { @@ -1193,7 +1161,8 @@ } } } - } + }, + "x-public": true }, "patch": { "tags": [ @@ -1266,7 +1235,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -1327,7 +1297,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/sessions/{session_id}/views/{view_id}/rename": { @@ -1402,7 +1373,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/sessions/{session_id}/insights": { @@ -1513,7 +1485,8 @@ } } } - } + }, + "x-public": true }, "post": { "tags": [ @@ -1576,7 +1549,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/sessions/{session_id}/insights/configs": { @@ -1641,7 +1615,8 @@ } } } - } + }, + "x-public": true }, "post": { "tags": [ @@ -1704,7 +1679,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/sessions/{session_id}/insights/configs/generate": { @@ -1769,7 +1745,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/sessions/{session_id}/insights/configs/{config_id}": { @@ -1844,7 +1821,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -1907,7 +1885,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/sessions/{session_id}/insights/{job_id}": { @@ -1972,7 +1951,8 @@ } } } - } + }, + "x-public": true }, "patch": { "tags": [ @@ -2045,7 +2025,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -2108,7 +2089,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/sessions/{session_id}/insights/{job_id}/clusters/{cluster_id}": { @@ -2183,7 +2165,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/sessions/{session_id}/insights/{job_id}/runs": { @@ -2324,7 +2307,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/workspaces": { @@ -2377,7 +2361,8 @@ } } } - } + }, + "x-public": true }, "get": { "tags": [ @@ -2451,7 +2436,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/workspaces/{workspace_id}": { @@ -2516,7 +2502,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -2566,7 +2553,89 @@ } } } - } + }, + "x-public": true + }, + "get": { + "tags": [ + "workspaces" + ], + "summary": "Get Workspace", + "description": "Get a single workspace by ID, scoped to the current org and identity.", + "operationId": "get_workspace_api_v1_workspaces__workspace_id__get", + "security": [ + { + "API Key": [] + }, + { + "Organization ID": [] + }, + { + "Bearer Auth": [] + } + ], + "parameters": [ + { + "name": "workspace_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Workspace Id" + } + }, + { + "name": "include_deleted", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": false, + "title": "Include Deleted" + } + }, + { + "name": "data_plane_id", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Data Plane Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantForUser" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "x-public": true } }, "/api/v1/workspaces/current/stats": { @@ -2630,7 +2699,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/workspaces/current/usage_limits": { @@ -2662,7 +2732,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/workspaces/current/shared": { @@ -2730,7 +2801,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -2779,7 +2851,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/workspaces/current/secrets": { @@ -2815,7 +2888,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true }, "post": { "tags": [ @@ -2867,7 +2941,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/workspaces/current/secrets/encrypted": { @@ -2960,7 +3035,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/workspaces/current/tag-keys": { @@ -2996,7 +3072,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true }, "post": { "tags": [ @@ -3046,7 +3123,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/workspaces/current/tag-keys/{tag_key_id}": { @@ -3110,7 +3188,8 @@ } } } - } + }, + "x-public": true }, "get": { "tags": [ @@ -3162,7 +3241,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -3212,7 +3292,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/workspaces/current/tag-keys/{tag_key_id}/tag-values": { @@ -3276,7 +3357,8 @@ } } } - } + }, + "x-public": true }, "get": { "tags": [ @@ -3332,7 +3414,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/workspaces/current/tag-keys/{tag_key_id}/tag-values/{tag_value_id}": { @@ -3396,7 +3479,8 @@ } } } - } + }, + "x-public": true }, "patch": { "tags": [ @@ -3468,7 +3552,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -3528,7 +3613,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/workspaces/current/taggings": { @@ -3580,7 +3666,8 @@ } } } - } + }, + "x-public": true }, "get": { "tags": [ @@ -3643,7 +3730,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/workspaces/current/taggings/{tagging_id}": { @@ -3695,7 +3783,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/workspaces/current/tags": { @@ -3705,33 +3794,62 @@ ], "summary": "List Tags", "operationId": "list_tags_api_v1_workspaces_current_tags_get", + "security": [ + { + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "parameters": [ + { + "name": "resource_type", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/ResourceType" + }, + { + "type": "null" + } + ], + "title": "Resource Type" + } + } + ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { + "type": "array", "items": { "$ref": "#/components/schemas/TagKeyWithValues" }, - "type": "array", "title": "Response List Tags Api V1 Workspaces Current Tags Get" } } } - } - }, - "security": [ - { - "API Key": [] }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } } - ] + }, + "x-public": true } }, "/api/v1/workspaces/current/tags/resource": { @@ -3797,7 +3915,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/workspaces/current/tags/resources": { @@ -3863,7 +3982,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/audit-logs": { @@ -4004,7 +4124,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/ttl-settings": { @@ -4041,7 +4162,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true }, "put": { "tags": [ @@ -4091,7 +4213,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/orgs/ttl-settings": { @@ -4128,7 +4251,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true }, "put": { "tags": [ @@ -4178,27 +4302,8 @@ { "Bearer Auth": [] } - ] - } - }, - "/api/v1/ok": { - "get": { - "tags": [ - "health" ], - "summary": "Ok", - "operationId": "ok_api_v1_ok_get", - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": {} - } - } - } - }, - "x-hidden": true + "x-public": true } }, "/api/v1/examples/count": { @@ -4371,7 +4476,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/examples/{example_id}": { @@ -4463,7 +4569,8 @@ } } } - } + }, + "x-public": true }, "patch": { "tags": [ @@ -4524,7 +4631,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -4575,7 +4683,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/examples": { @@ -4773,6 +4882,9 @@ "name", "dataset_id", "source_run_id", + "source_session_id", + "source_run_start_time", + "source_trace_id", "metadata", "inputs", "outputs" @@ -4838,7 +4950,8 @@ } } } - } + }, + "x-public": true }, "post": { "tags": [ @@ -4906,6 +5019,42 @@ ], "title": "Source Run Id" }, + "source_session_id": { + "anyOf": [ + { + "format": "uuid", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Session Id" + }, + "source_run_start_time": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Run Start Time" + }, + "source_trace_id": { + "anyOf": [ + { + "format": "uuid", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Trace Id" + }, "metadata": { "anyOf": [ { @@ -4992,7 +5141,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -5046,7 +5196,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/examples/bulk": { @@ -5092,6 +5243,42 @@ ], "title": "Source Run Id" }, + "source_session_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Source Session Id" + }, + "source_run_start_time": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Source Run Start Time" + }, + "source_trace_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Source Trace Id" + }, "metadata": { "anyOf": [ { @@ -5216,7 +5403,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true }, "patch": { "tags": [ @@ -5269,7 +5457,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/examples/upload/{dataset_id}": { @@ -5338,7 +5527,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/examples/validate": { @@ -5371,7 +5561,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/examples/validate/bulk": { @@ -5408,7 +5599,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/datasets": { @@ -5638,7 +5830,8 @@ } } } - } + }, + "x-public": true }, "post": { "tags": [ @@ -5689,7 +5882,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -5744,7 +5938,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/datasets/stream": { @@ -5949,7 +6144,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/datasets/{dataset_id}": { @@ -6004,7 +6200,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -6055,7 +6252,8 @@ } } } - } + }, + "x-public": true }, "patch": { "tags": [ @@ -6126,7 +6324,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/datasets/upload": { @@ -6179,7 +6378,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/datasets/upload-experiment": { @@ -6232,7 +6432,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/datasets/{dataset_id}/versions": { @@ -6347,7 +6548,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/datasets/{dataset_id}/versions/diff": { @@ -6436,7 +6638,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/datasets/{dataset_id}/version": { @@ -6524,7 +6727,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/datasets/{dataset_id}/tags": { @@ -6589,7 +6793,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/datasets/{dataset_id}/openai": { @@ -6661,7 +6866,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/datasets/{dataset_id}/openai_ft": { @@ -6733,7 +6939,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/datasets/{dataset_id}/csv": { @@ -6805,7 +7012,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/datasets/{dataset_id}/jsonl": { @@ -6877,7 +7085,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/datasets/{dataset_id}/runs": { @@ -6973,17 +7182,18 @@ } } } - } + }, + "x-public": true } }, - "/api/v1/datasets/{dataset_id}/group/runs": { - "post": { + "/api/v1/datasets/{dataset_id}/share": { + "get": { "tags": [ "datasets" ], - "summary": "Read Examples With Runs Grouped", - "description": "Fetch examples for a dataset, and fetch the runs for each example if they are associated with the given session_ids.", - "operationId": "read_examples_with_runs_grouped_api_v1_datasets__dataset_id__group_runs_post", + "summary": "Read Dataset Share State", + "description": "Get the state of sharing a dataset", + "operationId": "read_dataset_share_state_api_v1_datasets__dataset_id__share_get", "security": [ { "API Key": [] @@ -7007,23 +7217,21 @@ } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/QueryGroupedExamplesWithRuns" - } - } - } - }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GroupedExamplesWithRunsResponse" + "anyOf": [ + { + "$ref": "#/components/schemas/DatasetShareSchema" + }, + { + "type": "null" + } + ], + "title": "Response Read Dataset Share State Api V1 Datasets Dataset Id Share Get" } } } @@ -7038,17 +7246,16 @@ } } } - } - } - }, - "/api/v1/datasets/{dataset_id}/runs/delta": { - "post": { + }, + "x-public": true + }, + "put": { "tags": [ "datasets" ], - "summary": "Read Delta", - "description": "Fetch the number of regressions/improvements for each example in a dataset, between sessions[0] and sessions[1].", - "operationId": "read_delta_api_v1_datasets__dataset_id__runs_delta_post", + "summary": "Share Dataset", + "description": "Share a dataset.", + "operationId": "share_dataset_api_v1_datasets__dataset_id__share_put", "security": [ { "API Key": [] @@ -7070,89 +7277,26 @@ "format": "uuid", "title": "Dataset Id" } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/QueryFeedbackDelta" - } - } - } - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SessionFeedbackDelta" - } - } - } }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/v1/datasets/{dataset_id}/runs/delta/stream": { - "post": { - "tags": [ - "datasets" - ], - "summary": "Read Delta Stream", - "description": "Stream feedback deltas for multiple feedback keys.\n\nReturns results in chunks as they become available. Each chunk contains\nresults for one or more feedback keys. Errors for individual chunks are\nincluded in the response rather than failing the entire operation.\n\nResponse format (SSE):\n event: data\n data: {\"feedback_deltas\": {\"key1\": {session_id: {...}}, ...}, \"errors\": null}\n\n event: data\n data: {\"feedback_deltas\": {\"key2\": {...}}, \"errors\": null}\n\n event: end", - "operationId": "read_delta_stream_api_v1_datasets__dataset_id__runs_delta_stream_post", - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "parameters": [ { - "name": "dataset_id", - "in": "path", - "required": true, + "name": "share_projects", + "in": "query", + "required": false, "schema": { - "type": "string", - "format": "uuid", - "title": "Dataset Id" + "type": "boolean", + "default": false, + "title": "Share Projects" } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/QueryFeedbackDeltaBatch" - } - } - } - }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { - "schema": {} + "schema": { + "$ref": "#/components/schemas/DatasetShareSchema" + } } } }, @@ -7166,204 +7310,16 @@ } } } - } - } - }, - "/api/v1/datasets/{dataset_id}/experiments/grouped": { - "post": { + }, + "x-public": true + }, + "delete": { "tags": [ "datasets" ], - "summary": "Read Grouped Experiments", - "description": "Stream grouped and aggregated experiments.", - "operationId": "read_grouped_experiments_api_v1_datasets__dataset_id__experiments_grouped_post", - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "parameters": [ - { - "name": "dataset_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Dataset Id" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GroupedExperimentsRequest" - } - } - } - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": {} - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/v1/datasets/{dataset_id}/share": { - "get": { - "tags": [ - "datasets" - ], - "summary": "Read Dataset Share State", - "description": "Get the state of sharing a dataset", - "operationId": "read_dataset_share_state_api_v1_datasets__dataset_id__share_get", - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "parameters": [ - { - "name": "dataset_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Dataset Id" - } - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "anyOf": [ - { - "$ref": "#/components/schemas/DatasetShareSchema" - }, - { - "type": "null" - } - ], - "title": "Response Read Dataset Share State Api V1 Datasets Dataset Id Share Get" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - }, - "put": { - "tags": [ - "datasets" - ], - "summary": "Share Dataset", - "description": "Share a dataset.", - "operationId": "share_dataset_api_v1_datasets__dataset_id__share_put", - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "parameters": [ - { - "name": "dataset_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Dataset Id" - } - }, - { - "name": "share_projects", - "in": "query", - "required": false, - "schema": { - "type": "boolean", - "default": false, - "title": "Share Projects" - } - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DatasetShareSchema" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - }, - "delete": { - "tags": [ - "datasets" - ], - "summary": "Unshare Dataset", - "description": "Unshare a dataset.", - "operationId": "unshare_dataset_api_v1_datasets__dataset_id__share_delete", + "summary": "Unshare Dataset", + "description": "Unshare a dataset.", + "operationId": "unshare_dataset_api_v1_datasets__dataset_id__share_delete", "security": [ { "API Key": [] @@ -7406,160 +7362,8 @@ } } } - } - } - }, - "/api/v1/datasets/{dataset_id}/comparative": { - "get": { - "tags": [ - "datasets" - ], - "summary": "Read Comparative Experiments", - "description": "Get all comparative experiments for a given dataset.", - "operationId": "read_comparative_experiments_api_v1_datasets__dataset_id__comparative_get", - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "parameters": [ - { - "name": "dataset_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Dataset Id" - } - }, - { - "name": "name", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Name" - } - }, - { - "name": "name_contains", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Name Contains" - } - }, - { - "name": "id", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - } - }, - { - "type": "null" - } - ], - "title": "Id" - } - }, - { - "name": "offset", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "default": 0, - "title": "Offset" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "maximum": 100, - "minimum": 1, - "default": 100, - "title": "Limit" - } - }, - { - "name": "sort_by", - "in": "query", - "required": false, - "schema": { - "$ref": "#/components/schemas/SortByComparativeExperimentColumn", - "default": "created_at" - } - }, - { - "name": "sort_by_desc", - "in": "query", - "required": false, - "schema": { - "type": "boolean", - "default": true, - "title": "Sort By Desc" - } - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ComparativeExperiment" - }, - "title": "Response Read Comparative Experiments Api V1 Datasets Dataset Id Comparative Get" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } + }, + "x-public": true } }, "/api/v1/datasets/comparative": { @@ -7612,7 +7416,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/datasets/comparative/{comparative_experiment_id}": { @@ -7665,7 +7470,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/datasets/clone": { @@ -7723,7 +7529,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/datasets/{dataset_id}/splits": { @@ -7801,7 +7608,8 @@ } } } - } + }, + "x-public": true }, "put": { "tags": [ @@ -7868,7 +7676,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/datasets/{dataset_id}/generate": { @@ -7912,97 +7721,6 @@ } } }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": {} - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/v1/datasets/playground_experiment/batch": { - "post": { - "tags": [ - "datasets" - ], - "summary": "Dataset Handler", - "operationId": "dataset_handler_api_v1_datasets_playground_experiment_batch_post", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PlaygroundRunOverDatasetBatchRequestSchema" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "title": "Response Dataset Handler Api V1 Datasets Playground Experiment Batch Post" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - }, - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ] - } - }, - "/api/v1/datasets/playground_experiment/stream": { - "post": { - "tags": [ - "datasets" - ], - "summary": "Stream Dataset Handler", - "operationId": "stream_dataset_handler_api_v1_datasets_playground_experiment_stream_post", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PlaygroundRunOverDatasetRequestSchema" - } - } - }, - "required": true - }, "responses": { "200": { "description": "Successful Response", @@ -8023,17 +7741,7 @@ } } }, - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ] + "x-public": true } }, "/api/v1/datasets/studio_experiment": { @@ -8085,7 +7793,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/runs/rules": { @@ -8271,7 +7980,8 @@ } } } - } + }, + "x-public": true }, "post": { "tags": [ @@ -8322,7 +8032,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/runs/rules/validate": { @@ -8380,7 +8091,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/runs/rules/{rule_id}": { @@ -8445,7 +8157,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -8496,7 +8209,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/runs/threads/{thread_id}": { @@ -8598,7 +8312,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/runs/rules/{rule_id}/logs": { @@ -8731,7 +8446,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/runs/rules/{rule_id}/logs/v2": { @@ -8875,7 +8591,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/runs/rules/{rule_id}/last_applied": { @@ -8940,7 +8657,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/runs/rules/{rule_id}/trigger": { @@ -8995,7 +8713,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/runs/rules/trigger": { @@ -9046,7 +8765,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/runs/{run_id}": { @@ -9165,7 +8885,8 @@ } } } - } + }, + "x-public": true }, "patch": { "tags": [ @@ -9216,7 +8937,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/runs/{run_id}/share": { @@ -9279,7 +9001,8 @@ } } } - } + }, + "x-public": true }, "put": { "tags": [ @@ -9332,7 +9055,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -9383,7 +9107,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/runs/query/validate": { @@ -9425,7 +9150,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/runs/query": { @@ -9477,7 +9203,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/runs/generate-query": { @@ -9530,7 +9257,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/runs/stats": { @@ -9594,7 +9322,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/runs": { @@ -9625,7 +9354,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/runs/batch": { @@ -9656,7 +9386,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/runs/multipart": { @@ -9687,7 +9418,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/runs/group": { @@ -9756,7 +9488,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/runs/group/stats": { @@ -9809,7 +9542,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/runs/delete/traces": { @@ -9860,7 +9594,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/runs/delete": { @@ -9910,7 +9645,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/runs/experiments/{experiment_id}/evaluate": { @@ -9977,7 +9713,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/feedback/formulas": { @@ -10030,7 +9767,8 @@ } } } - } + }, + "x-public": true }, "get": { "tags": [ @@ -10131,7 +9869,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/feedback/formulas/{feedback_formula_id}": { @@ -10186,7 +9925,8 @@ } } } - } + }, + "x-public": true }, "put": { "tags": [ @@ -10249,7 +9989,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -10300,7 +10041,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/feedback/{feedback_id}": { @@ -10371,7 +10113,8 @@ } } } - } + }, + "x-public": true }, "patch": { "tags": [ @@ -10434,7 +10177,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -10485,7 +10229,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/feedback": { @@ -10719,6 +10464,22 @@ "title": "Min Created At" } }, + { + "name": "feedback_thread_id", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Feedback Thread Id" + } + }, { "name": "include_user_names", "in": "query", @@ -10778,7 +10539,8 @@ } } } - } + }, + "x-public": true }, "post": { "tags": [ @@ -10829,7 +10591,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/feedback/eager": { @@ -10838,7 +10601,7 @@ "feedback" ], "summary": "Eagerly Create Feedback", - "description": "Create a new feedback.\n\nThis method is invoked under the assumption that the run\nis already visible in the app, thus already present in DB", + "description": "Deprecated: use POST /feedback instead.\n\nThis method is invoked under the assumption that the run\nis already visible in the app, thus already present in DB", "operationId": "eagerly_create_feedback_api_v1_feedback_eager_post", "requestBody": { "content": { @@ -10872,6 +10635,7 @@ } } }, + "deprecated": true, "security": [ { "API Key": [] @@ -10882,7 +10646,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/feedback/tokens": { @@ -10957,7 +10722,8 @@ } } } - } + }, + "x-public": true }, "get": { "tags": [ @@ -11014,7 +10780,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/feedback/tokens/{token}": { @@ -11058,6 +10825,16 @@ "title": "Score" } }, + { + "name": "extend_trace_retention", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": true, + "title": "Extend Trace Retention" + } + }, { "name": "value", "in": "query", @@ -11135,7 +10912,8 @@ } } } - } + }, + "x-public": true }, "post": { "tags": [ @@ -11185,7 +10963,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/public/{share_token}/run": { @@ -11239,7 +11018,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/public/{share_token}/run/{id}": { @@ -11303,7 +11083,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/public/{share_token}/runs/query": { @@ -11357,7 +11138,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/public/{share_token}/feedbacks": { @@ -11573,7 +11355,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/public/{share_token}/datasets": { @@ -11659,7 +11442,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/public/{share_token}/examples/count": { @@ -11776,7 +11560,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/public/{share_token}/examples": { @@ -11942,7 +11727,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/public/{share_token}/datasets/sessions": { @@ -12067,6 +11853,22 @@ "title": "Sort By Feedback Key" } }, + { + "name": "sort_by_feedback_source", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Sort By Feedback Source" + } + }, { "name": "offset", "in": "query", @@ -12100,6 +11902,68 @@ "title": "Facets" } }, + { + "name": "use_approx_stats", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": false, + "title": "Use Approx Stats" + } + }, + { + "name": "stats_start_time", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Stats Start Time" + } + }, + { + "name": "stats_select", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ], + "title": "Stats Select" + } + }, + { + "name": "stats_filter", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Stats Filter" + } + }, { "name": "accept", "in": "header", @@ -12142,7 +12006,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/public/datasets/sessions-bulk": { @@ -12192,181 +12057,8 @@ } } } - } - } - }, - "/api/v1/public/{share_token}/examples/runs": { - "post": { - "tags": [ - "public" - ], - "summary": "Read Shared Dataset Examples With Runs", - "description": "Get examples with associated runs from sessions in a dataset that has been shared.", - "operationId": "read_shared_dataset_examples_with_runs_api_v1_public__share_token__examples_runs_post", - "parameters": [ - { - "name": "share_token", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Share Token" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/QueryExampleSchemaWithRuns" - } - } - } - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "anyOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/PublicExampleWithRuns" - } - }, - { - "type": "array", - "items": { - "$ref": "#/components/schemas/ExampleWithRunsCH" - } - } - ], - "title": "Response Read Shared Dataset Examples With Runs Api V1 Public Share Token Examples Runs Post" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/v1/public/{share_token}/datasets/runs/delta": { - "post": { - "tags": [ - "public" - ], - "summary": "Read Shared Delta", - "description": "Fetch the number of regressions/improvements for each example in a dataset, between sessions[0] and sessions[1].", - "operationId": "read_shared_delta_api_v1_public__share_token__datasets_runs_delta_post", - "parameters": [ - { - "name": "share_token", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Share Token" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/QueryFeedbackDelta" - } - } - } - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SessionFeedbackDelta" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/v1/public/{share_token}/datasets/runs/delta/stream": { - "post": { - "tags": [ - "public" - ], - "summary": "Read Shared Delta Stream", - "description": "Stream feedback deltas for multiple feedback keys.\n\nReturns results in chunks as they become available. Each chunk contains\nresults for one or more feedback keys. Errors for individual chunks are\nincluded in the response rather than failing the entire operation.\n\nResponse format (SSE):\n event: data\n data: {\"feedback_deltas\": {\"key1\": {session_id: {...}}, ...}, \"errors\": null}\n\n event: data\n data: {\"feedback_deltas\": {\"key2\": {...}}, \"errors\": null}\n\n event: end", - "operationId": "read_shared_delta_stream_api_v1_public__share_token__datasets_runs_delta_stream_post", - "parameters": [ - { - "name": "share_token", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Share Token" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/QueryFeedbackDeltaBatch" - } - } - } }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": {} - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } + "x-public": true } }, "/api/v1/public/{share_token}/datasets/runs/query": { @@ -12420,7 +12112,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/public/{share_token}/datasets/runs/generate-query": { @@ -12474,7 +12167,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/public/{share_token}/datasets/runs/stats": { @@ -12528,7 +12222,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/public/{share_token}/datasets/runs/{run_id}": { @@ -12592,7 +12287,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/public/{share_token}/datasets/feedback": { @@ -12809,7 +12505,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/public/{share_token}/datasets/comparative": { @@ -12931,7 +12628,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/public/schemas/{version}/message.json": { @@ -12971,7 +12669,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/public/schemas/{version}/tooldef.json": { @@ -13011,7 +12710,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/annotation-queues": { @@ -13227,7 +12927,8 @@ } } } - } + }, + "x-public": true }, "post": { "tags": [ @@ -13277,7 +12978,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -13332,7 +13034,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/annotation-queues/populate": { @@ -13383,7 +13086,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/annotation-queues/{queue_id}": { @@ -13435,7 +13139,8 @@ } } } - } + }, + "x-public": true }, "patch": { "tags": [ @@ -13495,7 +13200,8 @@ } } } - } + }, + "x-public": true }, "get": { "tags": [ @@ -13547,7 +13253,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/annotation-queues/{queue_id}/runs": { @@ -13578,6 +13285,16 @@ "format": "uuid", "title": "Queue Id" } + }, + { + "name": "extend_trace_retention", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": false, + "title": "Extend Trace Retention" + } } ], "requestBody": { @@ -13636,7 +13353,8 @@ } } } - } + }, + "x-public": true }, "get": { "tags": [ @@ -13768,7 +13486,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/annotation-queues/{queue_id}/runs/by-key": { @@ -13799,6 +13518,16 @@ "format": "uuid", "title": "Queue Id" } + }, + { + "name": "extend_trace_retention", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": false, + "title": "Extend Trace Retention" + } } ], "requestBody": { @@ -13840,7 +13569,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/annotation-queues/{queue_id}/export": { @@ -13902,7 +13632,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/annotation-queues/{queue_id}/run/{index}": { @@ -13976,7 +13707,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/annotation-queues/{run_id}/queues": { @@ -14034,7 +13766,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/annotation-queues/{queue_id}/runs/{queue_run_id}": { @@ -14106,7 +13839,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -14166,7 +13900,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/annotation-queues/{queue_id}/runs/delete": { @@ -14228,7 +13963,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/annotation-queues/{queue_id}/total_size": { @@ -14282,7 +14018,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/annotation-queues/{queue_id}/total_archived": { @@ -14370,7 +14107,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/annotation-queues/{queue_id}/size": { @@ -14445,7 +14183,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/annotation-queues/status/{annotation_queue_run_id}": { @@ -14507,7 +14246,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/annotation-queues/{queue_id}/runs/resolve/{queue_run_id}": { @@ -14572,7 +14312,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/ace/execute": { @@ -14627,7 +14368,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/bulk-exports": { @@ -14638,22 +14380,83 @@ "summary": "Get Bulk Exports", "description": "Get the current workspace's bulk exports", "operationId": "get_bulk_exports_api_v1_bulk_exports_get", + "security": [ + { + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "parameters": [ + { + "name": "limit", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer", + "maximum": 1000, + "minimum": 1 + }, + { + "type": "null" + } + ], + "title": "Limit" + } + }, + { + "name": "offset", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "default": 0, + "title": "Offset" + } + } + ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { + "type": "array", "items": { "$ref": "#/components/schemas/BulkExport" }, - "type": "array", "title": "Response Get Bulk Exports Api V1 Bulk Exports Get" } } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } } }, + "x-public": true + }, + "post": { + "tags": [ + "bulk-exports" + ], + "summary": "Create Bulk Export", + "description": "Create a new bulk export", + "operationId": "create_bulk_export_api_v1_bulk_exports_post", "security": [ { "API Key": [] @@ -14664,24 +14467,16 @@ { "Bearer Auth": [] } - ] - }, - "post": { - "tags": [ - "bulk-exports" ], - "summary": "Create Bulk Export", - "description": "Create a new bulk export", - "operationId": "create_bulk_export_api_v1_bulk_exports_post", "requestBody": { + "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkExportCreate" } } - }, - "required": true + } }, "responses": { "200": { @@ -14705,17 +14500,7 @@ } } }, - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ] + "x-public": true } }, "/api/v1/bulk-exports/destinations": { @@ -14752,7 +14537,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true }, "post": { "tags": [ @@ -14803,7 +14589,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/bulk-exports/runs": { @@ -14812,7 +14599,7 @@ "bulk-exports" ], "summary": "Get Bulk Export Runs Filtered", - "description": "Get all bulk export runs for exports that were created from a scheduled bulk export", + "description": "Get bulk export runs for exports that were created from a scheduled bulk export", "operationId": "get_bulk_export_runs_filtered_api_v1_bulk_exports_runs_get", "security": [ { @@ -14835,6 +14622,35 @@ "format": "uuid", "title": "Source Bulk Export Id" } + }, + { + "name": "limit", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer", + "maximum": 1000, + "minimum": 1 + }, + { + "type": "null" + } + ], + "title": "Limit" + } + }, + { + "name": "offset", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "default": 0, + "title": "Offset" + } } ], "responses": { @@ -14862,7 +14678,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/bulk-exports/{bulk_export_id}": { @@ -14917,70 +14734,72 @@ } } } - } - }, - "patch": { - "tags": [ - "bulk-exports" - ], - "summary": "Cancel Bulk Export", - "description": "Cancel a bulk export by ID", - "operationId": "cancel_bulk_export_api_v1_bulk_exports__bulk_export_id__patch", - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "parameters": [ - { - "name": "bulk_export_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Bulk Export Id" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BulkExportUpdate" - } - } - } }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BulkExport" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } + "x-public": true + }, + "patch": { + "tags": [ + "bulk-exports" + ], + "summary": "Cancel Bulk Export", + "description": "Cancel a bulk export by ID", + "operationId": "cancel_bulk_export_api_v1_bulk_exports__bulk_export_id__patch", + "security": [ + { + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "parameters": [ + { + "name": "bulk_export_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Bulk Export Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkExportUpdate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkExport" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "x-public": true } }, "/api/v1/bulk-exports/destinations/{destination_id}": { @@ -15035,7 +14854,8 @@ } } } - } + }, + "x-public": true }, "patch": { "tags": [ @@ -15098,7 +14918,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/bulk-exports/{bulk_export_id}/runs": { @@ -15130,6 +14951,35 @@ "format": "uuid", "title": "Bulk Export Id" } + }, + { + "name": "limit", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer", + "maximum": 1000, + "minimum": 1 + }, + { + "type": "null" + } + ], + "title": "Limit" + } + }, + { + "name": "offset", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "default": 0, + "title": "Offset" + } } ], "responses": { @@ -15157,7 +15007,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/bulk-exports/{bulk_export_id}/runs/{run_id}": { @@ -15222,7 +15073,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/feedback-configs": { @@ -15355,7 +15207,8 @@ } } } - } + }, + "x-public": true }, "post": { "tags": [ @@ -15405,7 +15258,8 @@ } } } - } + }, + "x-public": true }, "patch": { "tags": [ @@ -15455,7 +15309,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -15500,7 +15355,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/model-price-map": { @@ -15510,16 +15366,6 @@ ], "summary": "Read Model Price Map", "operationId": "read_model_price_map_api_v1_model_price_map_get", - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": {} - } - } - } - }, "security": [ { "API Key": [] @@ -15530,30 +15376,61 @@ { "Bearer Auth": [] } - ] - }, - "post": { - "tags": [ - "model-price-map" ], - "summary": "Create New Model Price", - "operationId": "create_new_model_price_api_v1_model_price_map_post", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelPriceMapCreateSchema" - } + "parameters": [ + { + "name": "offset", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "default": 0, + "title": "Offset" } }, - "required": true - }, + { + "name": "limit", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "maximum": 100, + "minimum": 1, + "default": 100, + "title": "Limit" + } + }, + { + "name": "q", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "maxLength": 200 + }, + { + "type": "null" + } + ], + "title": "Q" + } + } + ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { - "schema": {} + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ModelPriceMapSchema" + }, + "title": "Response Read Model Price Map Api V1 Model Price Map Get" + } } } }, @@ -15568,26 +15445,14 @@ } } }, - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ] - } - }, - "/api/v1/model-price-map/{id}": { - "put": { + "x-public": true + }, + "post": { "tags": [ "model-price-map" ], - "summary": "Update Model Price", - "operationId": "update_model_price_api_v1_model_price_map__id__put", + "summary": "Create New Model Price", + "operationId": "create_new_model_price_api_v1_model_price_map_post", "security": [ { "API Key": [] @@ -15599,24 +15464,12 @@ "Bearer Auth": [] } ], - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Id" - } - } - ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ModelPriceMapUpdateSchema" + "$ref": "#/components/schemas/ModelPriceMapCreateSchema" } } } @@ -15640,14 +15493,17 @@ } } } - } - }, - "delete": { + }, + "x-public": true + } + }, + "/api/v1/model-price-map/{id}": { + "put": { "tags": [ "model-price-map" ], - "summary": "Delete Model Price", - "operationId": "delete_model_price_api_v1_model_price_map__id__delete", + "summary": "Update Model Price", + "operationId": "update_model_price_api_v1_model_price_map__id__put", "security": [ { "API Key": [] @@ -15671,83 +15527,15 @@ } } ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": {} - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/v1/prompts/invoke_prompt": { - "post": { - "tags": [ - "prompts" - ], - "summary": "Invoke Prompt", - "operationId": "invoke_prompt_api_v1_prompts_invoke_prompt_post", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/InvokePromptPayload" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": {} - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "$ref": "#/components/schemas/ModelPriceMapUpdateSchema" } } } - } - } - }, - "/api/v1/prompts/canvas": { - "post": { - "tags": [ - "prompts" - ], - "summary": "Prompt Canvas", - "operationId": "prompt_canvas_api_v1_prompts_canvas_post", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PlaygroundPromptCanvasPayload" - } - } - }, - "required": true }, "responses": { "200": { @@ -15769,6 +15557,14 @@ } } }, + "x-public": true + }, + "delete": { + "tags": [ + "model-price-map" + ], + "summary": "Delete Model Price", + "operationId": "delete_model_price_api_v1_model_price_map__id__delete", "security": [ { "API Key": [] @@ -15779,7 +15575,131 @@ { "Bearer Auth": [] } - ] + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "x-public": true + } + }, + "/api/v1/prompts/invoke_prompt": { + "post": { + "tags": [ + "prompts" + ], + "summary": "Invoke Prompt", + "operationId": "invoke_prompt_api_v1_prompts_invoke_prompt_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InvokePromptPayload" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "x-public": true + } + }, + "/api/v1/prompts/canvas": { + "post": { + "tags": [ + "prompts" + ], + "summary": "Prompt Canvas", + "operationId": "prompt_canvas_api_v1_prompts_canvas_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PlaygroundPromptCanvasPayload" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "x-public": true } }, "/api/v1/prompt-webhooks": { @@ -15816,7 +15736,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true }, "post": { "tags": [ @@ -15867,7 +15788,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/prompt-webhooks/{webhook_id}": { @@ -15922,7 +15844,8 @@ } } } - } + }, + "x-public": true }, "patch": { "tags": [ @@ -15985,7 +15908,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -16036,7 +15960,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/prompt-webhooks/test": { @@ -16093,7 +16018,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/playground-settings": { @@ -16130,7 +16056,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true }, "post": { "tags": [ @@ -16181,7 +16108,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/playground-settings/{playground_settings_id}": { @@ -16235,7 +16163,8 @@ } } } - } + }, + "x-public": true }, "patch": { "tags": [ @@ -16297,7 +16226,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -16347,7 +16277,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/charts/section/clone": { @@ -16400,7 +16331,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/charts/section": { @@ -16562,7 +16494,8 @@ } } } - } + }, + "x-public": true }, "post": { "tags": [ @@ -16613,7 +16546,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/charts": { @@ -16666,7 +16600,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/charts/preview": { @@ -16719,7 +16654,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/charts/create": { @@ -16772,7 +16708,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/charts/{chart_id}": { @@ -16837,7 +16774,8 @@ } } } - } + }, + "x-public": true }, "patch": { "tags": [ @@ -16900,7 +16838,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -16951,7 +16890,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/charts/section/{section_id}": { @@ -17016,7 +16956,8 @@ } } } - } + }, + "x-public": true }, "patch": { "tags": [ @@ -17079,7 +17020,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -17130,7 +17072,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/org-charts/section": { @@ -17139,8 +17082,19 @@ "charts" ], "summary": "Org Read Sections", - "description": "Get all sections for the tenant.", + "description": "Deprecated: organization usage charts have been retired (HTTP 410).", "operationId": "org_read_sections_api_v1_org_charts_section_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + } + }, + "deprecated": true, "security": [ { "API Key": [] @@ -17152,155 +17106,26 @@ "Bearer Auth": [] } ], - "parameters": [ - { - "name": "limit", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "maximum": 100, - "minimum": 1, - "default": 100, - "title": "Limit" - } - }, - { - "name": "offset", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "minimum": 0, - "default": 0, - "title": "Offset" - } - }, - { - "name": "title_contains", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Title Contains" - } - }, - { - "name": "ids", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - } - }, - { - "type": "null" - } - ], - "title": "Ids" - } - }, - { - "name": "sort_by", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "created_at", - "title": "Sort By" - } - }, - { - "name": "sort_by_desc", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": true, - "title": "Sort By Desc" - } - }, - { - "name": "tag_value_id", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - } - }, - { - "type": "null" - } - ], - "title": "Tag Value Id" - } - } + "x-public": true + }, + "post": { + "tags": [ + "charts" ], + "summary": "Org Create Section", + "description": "Deprecated: organization usage charts have been retired (HTTP 410).", + "operationId": "org_create_section_api_v1_org_charts_section_post", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomChartsSectionResponse" - }, - "title": "Response Org Read Sections Api V1 Org Charts Section Get" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": {} } } } - } - }, - "post": { - "tags": [ - "charts" - ], - "summary": "Org Create Section", - "description": "Create a new section.", - "operationId": "org_create_section_api_v1_org_charts_section_post", + }, + "deprecated": true, "security": [ { "API Key": [] @@ -17312,38 +17137,7 @@ "Bearer Auth": [] } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomChartsSectionCreate" - } - } - } - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomChartsSectionResponse" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } + "x-public": true } }, "/api/v1/org-charts": { @@ -17352,40 +17146,19 @@ "charts" ], "summary": "Org Read Charts", - "description": "Get all charts for the tenant.", + "description": "Deprecated: organization usage charts have been retired (HTTP 410).", "operationId": "org_read_charts_api_v1_org_charts_post", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomChartsRequest" - } - } - }, - "required": true - }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomChartsResponse" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": {} } } } }, + "deprecated": true, "security": [ { "API Key": [] @@ -17396,7 +17169,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/org-charts/preview": { @@ -17405,40 +17179,19 @@ "charts" ], "summary": "Org Read Chart Preview", - "description": "Get a preview for a chart without actually creating it.", + "description": "Deprecated: organization usage charts have been retired (HTTP 410).", "operationId": "org_read_chart_preview_api_v1_org_charts_preview_post", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomChartPreviewRequest" - } - } - }, - "required": true - }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/SingleCustomChartResponseBase" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": {} } } } }, + "deprecated": true, "security": [ { "API Key": [] @@ -17449,7 +17202,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/org-charts/create": { @@ -17458,40 +17212,19 @@ "charts" ], "summary": "Org Create Chart", - "description": "Create a new chart.", + "description": "Deprecated: organization usage charts have been retired (HTTP 410).", "operationId": "org_create_chart_api_v1_org_charts_create_post", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomChartCreate" - } - } - }, - "required": true - }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomChartResponse" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": {} } } } }, + "deprecated": true, "security": [ { "API Key": [] @@ -17502,7 +17235,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/org-charts/{chart_id}": { @@ -17511,8 +17245,19 @@ "charts" ], "summary": "Org Read Single Chart", - "description": "Get a single chart by ID.", + "description": "Deprecated: organization usage charts have been retired (HTTP 410).", "operationId": "org_read_single_chart_api_v1_org_charts__chart_id__post", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + } + }, + "deprecated": true, "security": [ { "API Key": [] @@ -17524,58 +17269,57 @@ "Bearer Auth": [] } ], - "parameters": [ - { - "name": "chart_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Chart Id" - } - } + "x-public": true + }, + "delete": { + "tags": [ + "charts" ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomChartsRequest" + "summary": "Org Delete Chart", + "description": "Deprecated: organization usage charts have been retired (HTTP 410).", + "operationId": "org_delete_chart_api_v1_org_charts__chart_id__delete", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} } } } }, + "deprecated": true, + "security": [ + { + "API Key": [] + }, + { + "Organization ID": [] + }, + { + "Bearer Auth": [] + } + ], + "x-public": true + }, + "patch": { + "tags": [ + "charts" + ], + "summary": "Org Update Chart", + "description": "Deprecated: organization usage charts have been retired (HTTP 410).", + "operationId": "org_update_chart_api_v1_org_charts__chart_id__patch", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/SingleCustomChartResponse" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": {} } } } - } - }, - "patch": { - "tags": [ - "charts" - ], - "summary": "Org Update Chart", - "description": "Update a chart.", - "operationId": "org_update_chart_api_v1_org_charts__chart_id__patch", + }, + "deprecated": true, "security": [ { "API Key": [] @@ -17587,58 +17331,28 @@ "Bearer Auth": [] } ], - "parameters": [ - { - "name": "chart_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Chart Id" - } - } + "x-public": true + } + }, + "/api/v1/org-charts/section/{section_id}": { + "post": { + "tags": [ + "charts" ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomChartUpdate" - } - } - } - }, + "summary": "Org Read Single Section", + "description": "Deprecated: organization usage charts have been retired (HTTP 410).", + "operationId": "org_read_single_section_api_v1_org_charts_section__section_id__post", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomChartResponse" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": {} } } } - } - }, - "delete": { - "tags": [ - "charts" - ], - "summary": "Org Delete Chart", - "description": "Delete a chart.", - "operationId": "org_delete_chart_api_v1_org_charts__chart_id__delete", + }, + "deprecated": true, "security": [ { "API Key": [] @@ -17650,18 +17364,15 @@ "Bearer Auth": [] } ], - "parameters": [ - { - "name": "chart_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Chart Id" - } - } + "x-public": true + }, + "delete": { + "tags": [ + "charts" ], + "summary": "Org Delete Section", + "description": "Deprecated: organization usage charts have been retired (HTTP 410).", + "operationId": "org_delete_section_api_v1_org_charts_section__section_id__delete", "responses": { "200": { "description": "Successful Response", @@ -17670,28 +17381,9 @@ "schema": {} } } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } } - } - } - }, - "/api/v1/org-charts/section/{section_id}": { - "post": { - "tags": [ - "charts" - ], - "summary": "Org Read Single Section", - "description": "Get a single section by ID.", - "operationId": "org_read_single_section_api_v1_org_charts_section__section_id__post", + }, + "deprecated": true, "security": [ { "API Key": [] @@ -17703,121 +17395,26 @@ "Bearer Auth": [] } ], - "parameters": [ - { - "name": "section_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Section Id" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomChartsRequestBase" - } - } - } - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomChartsSection" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } + "x-public": true }, "patch": { "tags": [ "charts" ], "summary": "Org Update Section", - "description": "Update a section.", + "description": "Deprecated: organization usage charts have been retired (HTTP 410).", "operationId": "org_update_section_api_v1_org_charts_section__section_id__patch", - "security": [ - { - "API Key": [] - }, - { - "Organization ID": [] - }, - { - "Bearer Auth": [] - } - ], - "parameters": [ - { - "name": "section_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Section Id" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomChartsSectionUpdate" - } - } - } - }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomChartsSectionResponse" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": {} } } } - } - }, - "delete": { - "tags": [ - "charts" - ], - "summary": "Org Delete Section", - "description": "Delete a section.", - "operationId": "org_delete_section_api_v1_org_charts_section__section_id__delete", + }, + "deprecated": true, "security": [ { "API Key": [] @@ -17829,38 +17426,7 @@ "Bearer Auth": [] } ], - "parameters": [ - { - "name": "section_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Section Id" - } - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": {} - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } + "x-public": true } }, "/api/v1/mcp/tools": { @@ -17954,7 +17520,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -18036,7 +17603,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/mcp/proxy": { @@ -18107,7 +17675,8 @@ } } } - } + }, + "x-public": true }, "post": { "tags": [ @@ -18155,7 +17724,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/orgs": { @@ -18218,7 +17788,8 @@ } } } - } + }, + "x-public": true }, "post": { "tags": [ @@ -18262,7 +17833,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/orgs/current/setup": { @@ -18294,7 +17866,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/orgs/current": { @@ -18326,7 +17899,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/orgs/current/info": { @@ -18358,7 +17932,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true }, "patch": { "tags": [ @@ -18408,7 +17983,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/orgs/current/billing": { @@ -18440,7 +18016,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/orgs/current/dashboard": { @@ -18508,7 +18085,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/orgs/current/payment-method": { @@ -18558,7 +18136,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/orgs/current/business-info": { @@ -18590,7 +18169,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true }, "post": { "tags": [ @@ -18638,7 +18218,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/orgs/current/plan": { @@ -18688,7 +18269,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/orgs/current/roles": { @@ -18724,7 +18306,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true }, "post": { "tags": [ @@ -18774,7 +18357,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/orgs/current/roles/{role_id}": { @@ -18828,7 +18412,8 @@ } } } - } + }, + "x-public": true }, "patch": { "tags": [ @@ -18890,7 +18475,73 @@ } } } - } + }, + "x-public": true + } + }, + "/api/v1/orgs/current/roles/{role_id}/restriction": { + "put": { + "tags": [ + "orgs" + ], + "summary": "Set Role Restriction", + "operationId": "set_role_restriction_api_v1_orgs_current_roles__role_id__restriction_put", + "security": [ + { + "API Key": [] + }, + { + "Organization ID": [] + }, + { + "Bearer Auth": [] + } + ], + "parameters": [ + { + "name": "role_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Role Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoleRestrictionUpdate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Role" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "x-public": true } }, "/api/v1/orgs/permissions": { @@ -18920,7 +18571,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/orgs/pending": { @@ -18951,7 +18603,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/orgs/current/members": { @@ -18983,7 +18636,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true }, "post": { "tags": [ @@ -19033,7 +18687,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/orgs/current/members/active": { @@ -19203,7 +18858,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/orgs/current/members/pending": { @@ -19328,7 +18984,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/orgs/current/members/batch": { @@ -19389,7 +19046,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/orgs/current/members/basic/batch": { @@ -19450,7 +19108,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/orgs/current/members/{identity_id}/pending": { @@ -19503,7 +19162,72 @@ } } } - } + }, + "x-public": true + }, + "patch": { + "tags": [ + "orgs" + ], + "summary": "Patch Current Org Pending Member", + "description": "Update the role on a pending org member invite.", + "operationId": "patch_current_org_pending_member_api_v1_orgs_current_members__identity_id__pending_patch", + "security": [ + { + "API Key": [] + }, + { + "Organization ID": [] + }, + { + "Bearer Auth": [] + } + ], + "parameters": [ + { + "name": "identity_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Identity Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PendingIdentityPatch" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgPendingIdentity" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "x-public": true } }, "/api/v1/orgs/pending/{organization_id}": { @@ -19549,7 +19273,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/orgs/pending/{organization_id}/claim": { @@ -19597,7 +19322,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/orgs/current/members/{identity_id}": { @@ -19650,7 +19376,8 @@ } } } - } + }, + "x-public": true }, "patch": { "tags": [ @@ -19711,7 +19438,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/orgs/members/basic": { @@ -19762,95 +19490,98 @@ { "Bearer Auth": [] } - ] - } - }, - "/api/v1/orgs/current/sso-settings": { - "get": { - "tags": [ - "orgs" ], - "summary": "Get Current Sso Settings", - "description": "Get SSO provider settings for the current organization.", - "operationId": "get_current_sso_settings_api_v1_orgs_current_sso_settings_get", - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/SSOProvider" - }, - "type": "array", - "title": "Response Get Current Sso Settings Api V1 Orgs Current Sso Settings Get" - } - } - } - } - }, - "security": [ - { - "API Key": [] - }, - { - "Organization ID": [] - }, - { - "Bearer Auth": [] - } - ] - }, - "post": { - "tags": [ - "orgs" - ], - "summary": "Create Sso Settings", - "description": "Create SSO provider settings for the current organization.", - "operationId": "create_sso_settings_api_v1_orgs_current_sso_settings_post", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SSOSettingsCreate" - } - } - }, - "required": true - }, - "responses": { - "201": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SSOProvider" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - }, - "security": [ - { - "API Key": [] - }, - { - "Organization ID": [] - }, - { - "Bearer Auth": [] - } - ] + "x-public": true + } + }, + "/api/v1/orgs/current/sso-settings": { + "get": { + "tags": [ + "orgs" + ], + "summary": "Get Current Sso Settings", + "description": "Get SSO provider settings for the current organization.", + "operationId": "get_current_sso_settings_api_v1_orgs_current_sso_settings_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/SSOProvider" + }, + "type": "array", + "title": "Response Get Current Sso Settings Api V1 Orgs Current Sso Settings Get" + } + } + } + } + }, + "security": [ + { + "API Key": [] + }, + { + "Organization ID": [] + }, + { + "Bearer Auth": [] + } + ], + "x-public": true + }, + "post": { + "tags": [ + "orgs" + ], + "summary": "Create Sso Settings", + "description": "Create SSO provider settings for the current organization.", + "operationId": "create_sso_settings_api_v1_orgs_current_sso_settings_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SSOSettingsCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SSOProvider" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "API Key": [] + }, + { + "Organization ID": [] + }, + { + "Bearer Auth": [] + } + ], + "x-public": true } }, "/api/v1/orgs/current/sso-settings/{id}": { @@ -19915,7 +19646,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -19968,7 +19700,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/orgs/current/login-methods": { @@ -20023,7 +19756,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/orgs/current/billing/usage": { @@ -20101,7 +19835,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/orgs/current/billing/granular-usage": { @@ -20110,7 +19845,7 @@ "orgs" ], "summary": "Get Granular Usage", - "description": "Get granular usage data with flexible grouping.\n\nworkspace_ids filters results to the specified workspaces. Only workspaces\nthe user has read access to will be included in the results.", + "description": "Get granular usage data with flexible grouping.\n\n`kind` selects the billable usage domain:\n- `traces` (default): trace counts.\n- `langsmith_deployments`: LangSmith Deployment metrics (nodes\n executed, agent runs, agent uptime). The three Deployment fields\n are populated and `traces` is `0`.\n\n`trace_tier` (only meaningful for `kind=traces`) optionally restricts\nresults to a single retention tier (longlived = extended retention,\nshortlived = standard retention). When `group_by=trace_tier`, results\nare split into one record per retention tier per time bucket.\n\n`workspace_ids` filters results to the specified workspaces. Only\nworkspaces the user has read access to are included.", "operationId": "get_granular_usage_api_v1_orgs_current_billing_granular_usage_get", "security": [ { @@ -20165,6 +19900,31 @@ "$ref": "#/components/schemas/GranularUsageGroupBy", "default": "workspace" } + }, + { + "name": "kind", + "in": "query", + "required": false, + "schema": { + "$ref": "#/components/schemas/GranularUsageKind", + "default": "traces" + } + }, + { + "name": "trace_tier", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/TraceTier" + }, + { + "type": "null" + } + ], + "title": "Trace Tier" + } } ], "responses": { @@ -20188,7 +19948,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/orgs/current/billing/granular-usage/export": { @@ -20197,7 +19958,7 @@ "orgs" ], "summary": "Export Granular Usage Csv", - "description": "Export granular usage data as CSV.\n\nReturns the same data as the granular-usage endpoint but formatted as a\ndownloadable CSV file. Only workspaces the user has read access to will\nbe included in the results.", + "description": "Export granular usage data as CSV.\n\nSame `kind` semantics as `/granular-usage`. The CSV's value columns\nvary by kind:\n- `traces`: single `Traces` column.\n- `langsmith_deployments`: `Nodes Executed`, `Agent Runs`,\n `Agent Uptime (seconds)` columns.\nDimension columns are identical across kinds.", "operationId": "export_granular_usage_csv_api_v1_orgs_current_billing_granular_usage_export_get", "security": [ { @@ -20252,6 +20013,31 @@ "$ref": "#/components/schemas/GranularUsageGroupBy", "default": "workspace" } + }, + { + "name": "kind", + "in": "query", + "required": false, + "schema": { + "$ref": "#/components/schemas/GranularUsageKind", + "default": "traces" + } + }, + { + "name": "trace_tier", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/TraceTier" + }, + { + "type": "null" + } + ], + "title": "Trace Tier" + } } ], "responses": { @@ -20273,7 +20059,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/orgs/current/user/login-methods": { @@ -20310,7 +20097,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/orgs/current/stripe_checkout_session": { @@ -20361,7 +20149,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/orgs/current/stripe_account_links": { @@ -20412,7 +20201,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/orgs/current/service-keys": { @@ -20422,22 +20212,68 @@ ], "summary": "List Org Service Keys", "operationId": "list_org_service_keys_api_v1_orgs_current_service_keys_get", + "security": [ + { + "API Key": [] + }, + { + "Organization ID": [] + }, + { + "Bearer Auth": [] + } + ], + "parameters": [ + { + "name": "workspace_ids", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "default": [], + "title": "Workspace Ids" + } + } + ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { + "type": "array", "items": { "$ref": "#/components/schemas/APIKeyGetResponse" }, - "type": "array", "title": "Response List Org Service Keys Api V1 Orgs Current Service Keys Get" } } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } } }, + "x-public": true + }, + "post": { + "tags": [ + "orgs" + ], + "summary": "Create Org Service Key", + "description": "Create org-scoped service key. If workspaces is None, key is org-wide.", + "operationId": "create_org_service_key_api_v1_orgs_current_service_keys_post", "security": [ { "API Key": [] @@ -20448,24 +20284,16 @@ { "Bearer Auth": [] } - ] - }, - "post": { - "tags": [ - "orgs" ], - "summary": "Create Org Service Key", - "description": "Create org-scoped service key. If workspaces is None, key is org-wide.", - "operationId": "create_org_service_key_api_v1_orgs_current_service_keys_post", "requestBody": { + "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/APIKeyCreateRequest" } } - }, - "required": true + } }, "responses": { "200": { @@ -20489,6 +20317,16 @@ } } }, + "x-public": true + } + }, + "/api/v1/orgs/current/service-keys/{api_key_id}": { + "delete": { + "tags": [ + "orgs" + ], + "summary": "Delete Org Service Key", + "operationId": "delete_org_service_key_api_v1_orgs_current_service_keys__api_key_id__delete", "security": [ { "API Key": [] @@ -20499,16 +20337,50 @@ { "Bearer Auth": [] } - ] - } - }, - "/api/v1/orgs/current/service-keys/{api_key_id}": { - "delete": { + ], + "parameters": [ + { + "name": "api_key_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Api Key Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIKeyGetResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "x-public": true + }, + "patch": { "tags": [ "orgs" ], - "summary": "Delete Org Service Key", - "operationId": "delete_org_service_key_api_v1_orgs_current_service_keys__api_key_id__delete", + "summary": "Update Org Service Key", + "description": "Update an API key's role(s) in place without rotating the key.\n\nRestricted to org admins (ORGANIZATION_MANAGE). Applies to both\norg-scoped and workspace-scoped keys listed in /orgs/current/service-keys.", + "operationId": "update_org_service_key_api_v1_orgs_current_service_keys__api_key_id__patch", "security": [ { "API Key": [] @@ -20532,6 +20404,16 @@ } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIKeyUpdateRequest" + } + } + } + }, "responses": { "200": { "description": "Successful Response", @@ -20553,15 +20435,17 @@ } } } - } - }, - "patch": { + }, + "x-public": true + } + }, + "/api/v1/orgs/current/personal-access-tokens": { + "get": { "tags": [ "orgs" ], - "summary": "Update Org Service Key", - "description": "Update an API key's role(s) in place without rotating the key.\n\nRestricted to org admins (ORGANIZATION_MANAGE). Applies to both\norg-scoped and workspace-scoped keys listed in /orgs/current/service-keys.", - "operationId": "update_org_service_key_api_v1_orgs_current_service_keys__api_key_id__patch", + "summary": "List Org Personal Access Tokens", + "operationId": "list_org_personal_access_tokens_api_v1_orgs_current_personal_access_tokens_get", "security": [ { "API Key": [] @@ -20575,33 +20459,31 @@ ], "parameters": [ { - "name": "api_key_id", - "in": "path", - "required": true, + "name": "workspace_ids", + "in": "query", + "required": false, "schema": { - "type": "string", - "format": "uuid", - "title": "Api Key Id" + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "default": [], + "title": "Workspace Ids" } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/APIKeyUpdateRequest" - } - } - } - }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/APIKeyGetResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/APIKeyGetResponse" + }, + "title": "Response List Org Personal Access Tokens Api V1 Orgs Current Personal Access Tokens Get" } } } @@ -20616,32 +20498,15 @@ } } } - } - } - }, - "/api/v1/orgs/current/personal-access-tokens": { - "get": { + }, + "x-public": true + }, + "post": { "tags": [ "orgs" ], - "summary": "List Org Personal Access Tokens", - "operationId": "list_org_personal_access_tokens_api_v1_orgs_current_personal_access_tokens_get", - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/APIKeyGetResponse" - }, - "type": "array", - "title": "Response List Org Personal Access Tokens Api V1 Orgs Current Personal Access Tokens Get" - } - } - } - } - }, + "summary": "Create Org Personal Access Token", + "operationId": "create_org_personal_access_token_api_v1_orgs_current_personal_access_tokens_post", "security": [ { "API Key": [] @@ -20652,23 +20517,16 @@ { "Bearer Auth": [] } - ] - }, - "post": { - "tags": [ - "orgs" ], - "summary": "Create Org Personal Access Token", - "operationId": "create_org_personal_access_token_api_v1_orgs_current_personal_access_tokens_post", "requestBody": { + "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/APIKeyCreateRequest" } } - }, - "required": true + } }, "responses": { "200": { @@ -20692,17 +20550,7 @@ } } }, - "security": [ - { - "API Key": [] - }, - { - "Organization ID": [] - }, - { - "Bearer Auth": [] - } - ] + "x-public": true } }, "/api/v1/orgs/current/personal-access-tokens/{pat_id}": { @@ -20756,7 +20604,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/orgs/current/set-default-sso-provision": { @@ -20791,7 +20640,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/login": { @@ -20812,7 +20662,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/sso/email-verification/send": { @@ -20861,7 +20712,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/sso/email-verification/status": { @@ -20903,7 +20755,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/sso/email-verification/confirm": { @@ -20947,7 +20800,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/sso/settings/{sso_login_slug}": { @@ -20994,7 +20848,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/sso/email-lookup": { @@ -21040,7 +20895,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/api-key": { @@ -21077,7 +20933,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true }, "post": { "tags": [ @@ -21131,7 +20988,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/api-key/{api_key_id}": { @@ -21186,7 +21044,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/api-key/current": { @@ -21224,7 +21083,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true }, "post": { "tags": [ @@ -21278,7 +21138,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/api-key/current/{pat_id}": { @@ -21334,7 +21195,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/tenants": { @@ -21397,7 +21259,8 @@ } } } - } + }, + "x-public": true }, "post": { "tags": [ @@ -21442,7 +21305,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/me/onboarding_state": { @@ -21469,7 +21333,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true }, "post": { "tags": [ @@ -21494,7 +21359,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/me/onboarding_state/{field}": { @@ -21542,7 +21408,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/me/ls_user_id": { @@ -21570,7 +21437,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/service-accounts": { @@ -21607,7 +21475,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true }, "post": { "tags": [ @@ -21658,7 +21527,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/service-accounts/{service_account_id}": { @@ -21713,7 +21583,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/workspaces/pending": { @@ -21744,7 +21615,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/workspaces/pending/{id}": { @@ -21790,7 +21662,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/workspaces/pending/{workspace_id}/claim": { @@ -21837,7 +21710,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/workspaces/current/members": { @@ -21869,7 +21743,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true }, "post": { "tags": [ @@ -21920,7 +21795,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/workspaces/current/members/active": { @@ -22090,7 +21966,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/workspaces/current/members/pending": { @@ -22215,7 +22092,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/workspaces/current/members/batch": { @@ -22247,7 +22125,7 @@ "application/json": { "schema": { "items": { - "$ref": "#/components/schemas/PendingIdentity" + "$ref": "#/components/schemas/WorkspaceInviteResult" }, "type": "array", "title": "Response Add Members To Current Workspace Batch Api V1 Workspaces Current Members Batch Post" @@ -22279,7 +22157,8 @@ { "Organization ID": [] } - ] + ], + "x-public": true } }, "/api/v1/workspaces/current/members/{identity_id}": { @@ -22331,7 +22210,8 @@ } } } - } + }, + "x-public": true }, "patch": { "tags": [ @@ -22391,10 +22271,75 @@ } } } - } + }, + "x-public": true } }, "/api/v1/workspaces/current/members/{identity_id}/pending": { + "patch": { + "tags": [ + "workspaces" + ], + "summary": "Patch Current Workspace Pending Member", + "description": "Update the role on a pending workspace member invite.", + "operationId": "patch_current_workspace_pending_member_api_v1_workspaces_current_members__identity_id__pending_patch", + "security": [ + { + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "parameters": [ + { + "name": "identity_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Identity Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PendingIdentityPatch" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PendingIdentity" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "x-public": true + }, "delete": { "tags": [ "workspaces" @@ -22443,7 +22388,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/usage-limits": { @@ -22480,7 +22426,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true }, "put": { "tags": [ @@ -22531,7 +22478,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/usage-limits/org": { @@ -22568,7 +22516,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/usage-limits/{usage_limit_id}": { @@ -22621,7 +22570,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/settings": { @@ -22654,7 +22604,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/settings/handle": { @@ -22707,7 +22658,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/repos": { @@ -22740,6 +22692,16 @@ "title": "With Latest Manifest" } }, + { + "name": "include_owners", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": false, + "title": "Include Owners" + } + }, { "name": "limit", "in": "query", @@ -23069,7 +23031,8 @@ } } } - } + }, + "x-public": true }, "post": { "tags": [ @@ -23120,7 +23083,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -23175,7 +23139,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/repos/{owner}/{repo}": { @@ -23238,7 +23203,8 @@ } } } - } + }, + "x-public": true }, "patch": { "tags": [ @@ -23309,7 +23275,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -23368,7 +23335,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/repos/{owner}/{repo}/fork": { @@ -23441,7 +23409,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/repos/tags": { @@ -23749,7 +23718,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/repos/optimize-job": { @@ -23802,7 +23772,8 @@ { "Bearer Auth": [] } - ] + ], + "x-public": true } }, "/api/v1/likes/{owner}/{repo}": { @@ -23875,7 +23846,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/comments/{owner}/{repo}": { @@ -23945,7 +23917,8 @@ } } } - } + }, + "x-public": true }, "get": { "tags": [ @@ -24028,7 +24001,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/comments/{owner}/{repo}/{parent_comment_id}": { @@ -24123,7 +24097,8 @@ } } } - } + }, + "x-public": true }, "post": { "tags": [ @@ -24203,7 +24178,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/comments/{owner}/{repo}/{parent_comment_id}/like": { @@ -24277,7 +24253,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -24349,7 +24326,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/repos/{owner}/{repo}/tags": { @@ -24406,7 +24384,8 @@ } } } - } + }, + "x-public": true }, "post": { "tags": [ @@ -24477,7 +24456,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/repos/{owner}/{repo}/tags/{tag_name}": { @@ -24539,7 +24519,8 @@ } } } - } + }, + "x-public": true }, "patch": { "tags": [ @@ -24619,7 +24600,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -24687,7 +24669,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/repos/{owner}/{repo}/owners": { @@ -24750,7 +24733,8 @@ } } } - } + }, + "x-public": true }, "post": { "tags": [ @@ -24821,7 +24805,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -24890,7 +24875,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/repos/{owner}/{repo}/optimization-jobs": { @@ -24948,7 +24934,8 @@ } } } - } + }, + "x-public": true }, "post": { "tags": [ @@ -25010,7 +24997,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/repos/{owner}/{repo}/optimization-jobs/{job_id}": { @@ -25065,7 +25053,8 @@ } } } - } + }, + "x-public": true }, "patch": { "tags": [ @@ -25128,7 +25117,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -25179,7 +25169,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/repos/{owner}/{repo}/optimization-jobs/{job_id}/logs": { @@ -25238,7 +25229,8 @@ } } } - } + }, + "x-public": true }, "post": { "tags": [ @@ -25301,7 +25293,8 @@ } } } - } + }, + "x-public": true } }, "/api/v1/repos/{owner}/{repo}/optimization-jobs/{job_id}/logs/{log_id}": { @@ -25356,7 +25349,8 @@ } } } - } + }, + "x-public": true }, "delete": { "tags": [ @@ -25407,7 +25401,8 @@ } } } - } + }, + "x-public": true } }, "/.well-known/oauth-authorization-server": { @@ -25450,6 +25445,7 @@ } } }, + "x-public": true, "parameters": [] } }, @@ -25513,6 +25509,7 @@ } } }, + "x-public": true, "parameters": [] }, "post": { @@ -25575,6 +25572,7 @@ } } }, + "x-public": true, "requestBody": { "required": true, "content": { @@ -25660,7 +25658,8 @@ } } } - } + }, + "x-public": true }, "patch": { "security": [ @@ -25732,6 +25731,7 @@ } } }, + "x-public": true, "requestBody": { "required": true, "content": { @@ -25774,6 +25774,7 @@ } } }, + "x-public": true, "parameters": [] } }, @@ -25878,7 +25879,8 @@ } } } - } + }, + "x-public": true } }, "/aws-marketplace/register": { @@ -25914,6 +25916,7 @@ } } }, + "x-public": true, "requestBody": { "required": true, "content": { @@ -25977,8 +25980,8 @@ "name": "include_stats", "in": "query", "schema": { - "type": "boolean", "default": true, + "type": "boolean", "title": "Include Stats" } }, @@ -25987,10 +25990,10 @@ "name": "limit", "in": "query", "schema": { - "maximum": 100, - "type": "integer", "default": 20, + "maximum": 100, "minimum": 1, + "type": "integer", "title": "Limit" } }, @@ -25999,9 +26002,9 @@ "name": "offset", "in": "query", "schema": { - "type": "integer", "default": 0, "minimum": 0, + "type": "integer", "title": "Offset" } }, @@ -26056,7 +26059,8 @@ } } } - } + }, + "x-public": true }, "post": { "security": [ @@ -26147,6 +26151,7 @@ } } }, + "x-public": true, "requestBody": { "required": true, "content": { @@ -26209,8 +26214,8 @@ "name": "get_examples", "in": "query", "schema": { - "type": "boolean", "default": false, + "type": "boolean", "title": "Get Examples" } }, @@ -26228,8 +26233,8 @@ "name": "include_model", "in": "query", "schema": { - "type": "boolean", "default": false, + "type": "boolean", "title": "Include Model" } }, @@ -26237,8 +26242,8 @@ "name": "is_view", "in": "query", "schema": { - "type": "boolean", "default": false, + "type": "boolean", "title": "Is View" } } @@ -26284,7 +26289,8 @@ } } } - } + }, + "x-public": true } }, "/datasets/{dataset_id}/experiment-view-overrides": { @@ -26384,7 +26390,8 @@ } } } - } + }, + "x-public": true }, "post": { "security": [ @@ -26506,6 +26513,7 @@ } } }, + "x-public": true, "requestBody": { "required": true, "content": { @@ -26623,7 +26631,8 @@ } } } - } + }, + "x-public": true }, "delete": { "security": [ @@ -26722,7 +26731,8 @@ } } } - } + }, + "x-public": true }, "patch": { "security": [ @@ -26842,6 +26852,7 @@ } } }, + "x-public": true, "requestBody": { "required": true, "content": { @@ -26867,11 +26878,11 @@ "Bearer Auth": [] } ], - "description": "Returns one row per tenant in the caller's\norganization, each carrying that tenant's Engine LCU\nspend over the requested window. The org-wide total\nis derived by the caller (the UI tile sums the\n`lcu_total` field across items) so future drill-down\nsurfaces can render the per-tenant breakdown without\na backend change. The window defaults to the current\ncalendar month (UTC) and can be overridden with\n`start` and `end` (RFC 3339, capped at 31 days). Hours\nwhere the rate card did not price a (provider, model)\npair are excluded from each item's `lcu_total` and\nsurfaced as `lcu_unpriced_row_count` so callers can\ndetect billing coverage gaps without inflating the\nspend number.", + "description": "Returns one flat row per (tenant, session) pair in the\ncaller's organization that has Engine spend in the\nwindow, each carrying its workspace name, project\n(session) name, and Engine LCU spend. The caller groups\nrows by tenant for display and sums the `lcu_total`\nfield across items for the org-wide total (the UI tile\ndoes both). The window defaults to the current calendar\nmonth (UTC) and can be overridden with `start` and `end`\n(RFC 3339, capped at 31 days). Hours where the rate card\ndid not price a (provider, model) pair are excluded from\neach row's `lcu_total` and surfaced as\n`lcu_unpriced_row_count` so callers can detect billing\ncoverage gaps without inflating the spend number.", "tags": [ "issues-agent" ], - "summary": "Get issues-agent (Engine) LCU spend for every tenant in the calling org", + "summary": "Get issues-agent (Engine) LCU spend per project for the calling org", "parameters": [ { "description": "Inclusive window start, RFC 3339. Defaults to first instant of current calendar month (UTC).", @@ -26933,7 +26944,8 @@ } } } - } + }, + "x-public": true } }, "/me/providers/{providerType}": { @@ -27006,7 +27018,8 @@ } } } - } + }, + "x-public": true } }, "/oauth/authorize": { @@ -27102,7 +27115,8 @@ } } } - } + }, + "x-public": true } }, "/oauth/authorize/approve": { @@ -27179,6 +27193,7 @@ } } }, + "x-public": true, "requestBody": { "required": true, "content": { @@ -27228,6 +27243,59 @@ } } }, + "/oauth/client/{clientID}": { + "get": { + "description": "Returns the display metadata (name, logo, homepage/terms/privacy links) for a registered OAuth2 client. Used by the consent screen to show a human-readable client identity instead of the raw client_id. Public endpoint; exposes only non-sensitive display fields.", + "tags": [ + "oauth" + ], + "summary": "Get public OAuth2 client metadata", + "parameters": [ + { + "description": "OAuth2 client ID", + "name": "clientID", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oauth.ClientPublicMetadata" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oauth.TokenErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oauth.TokenErrorResponse" + } + } + } + } + }, + "x-public": true + } + }, "/oauth/device/authorize": { "post": { "security": [ @@ -27292,6 +27360,7 @@ } } }, + "x-public": true, "requestBody": { "required": true, "content": { @@ -27373,6 +27442,7 @@ } } }, + "x-public": true, "requestBody": { "required": true, "content": { @@ -27407,7 +27477,7 @@ "Bearer Auth": [] } ], - "description": "Public RFC 7591 Dynamic Client Registration endpoint. Only mints public clients with loopback HTTP or HTTPS-with-domain redirect URIs. Body limit 8 KB.", + "description": "Public RFC 7591 Dynamic Client Registration endpoint. Only mints public clients with allowed loopback, HTTPS, or native client redirect URIs. Body limit 8 KB.", "tags": [ "oauth" ], @@ -27455,6 +27525,7 @@ } } }, + "x-public": true, "requestBody": { "required": true, "content": { @@ -27491,6 +27562,7 @@ "description": "OK" } }, + "x-public": true, "requestBody": { "required": true, "content": { @@ -27563,6 +27635,7 @@ } } }, + "x-public": true, "requestBody": { "required": true, "content": { @@ -27691,6 +27764,7 @@ } } }, + "x-public": true, "parameters": [] }, "post": { @@ -27727,10 +27801,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/data_planes.ErrorResponse" } } } @@ -27740,10 +27811,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/data_planes.ErrorResponse" } } } @@ -27753,10 +27821,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/data_planes.ErrorResponse" } } } @@ -27766,10 +27831,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/data_planes.ErrorResponse" } } } @@ -27779,15 +27841,13 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/data_planes.ErrorResponse" } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { @@ -27850,10 +27910,10 @@ "name": "limit", "in": "query", "schema": { - "maximum": 100, - "type": "integer", "default": 50, + "maximum": 100, "minimum": 1, + "type": "integer", "title": "Limit" } }, @@ -27861,9 +27921,9 @@ "name": "offset", "in": "query", "schema": { - "type": "integer", "default": 0, "minimum": 0, + "type": "integer", "title": "Offset" } } @@ -27909,7 +27969,8 @@ } } } - } + }, + "x-public": true } }, "/runs": { @@ -28008,6 +28069,7 @@ } } }, + "x-public": true, "requestBody": { "required": true, "content": { @@ -28095,108 +28157,8 @@ } } }, - "422": { - "description": "Unprocessable Entity", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/runs.ErrorResponse" - } - } - } - }, - "429": { - "description": "Too Many Requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/runs.ErrorResponse" - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "patch": { - "type": "array", - "items": { - "$ref": "#/components/schemas/runs.Run" - } - }, - "post": { - "type": "array", - "items": { - "$ref": "#/components/schemas/runs.Run" - } - } - } - } - } - } - } - } - }, - "/runs/multipart": { - "post": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Ingests multiple runs, feedback objects, and binary attachments in a single `multipart/form-data` request.\n**Part‑name pattern**: `.[.]` where `event` ∈ {`post`, `patch`, `feedback`, `attachment`}.\n* `post|patch.` – JSON run payload.\n* `post|patch..` – out‑of‑band run data (`inputs`, `outputs`, `events`, `error`, `extra`, `serialized`).\n* `feedback.` – JSON feedback payload (must include `trace_id`).\n* `attachment..` – arbitrary binary attachment stored in S3.\n**Headers**: every part must set `Content-Type` **and** either a `Content-Length` header or `length` parameter. Per‑part `Content-Encoding` is **not** allowed; the top‑level request may be `Content-Encoding: gzip` or `Content-Encoding: zstd`.\n**Best performance** for high‑volume ingestion.", - "tags": [ - "runs" - ], - "summary": "Ingest Runs (Multipart)", - "parameters": [], - "responses": { - "202": { - "description": "Accepted", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/runs.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/runs.ErrorResponse" - } - } - } - }, - "409": { - "description": "Conflict", + "413": { + "description": "Request Entity Too Large", "content": { "application/json": { "schema": { @@ -28226,6 +28188,128 @@ } } }, + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "patch": { + "type": "array", + "items": { + "$ref": "#/components/schemas/runs.Run" + } + }, + "post": { + "type": "array", + "items": { + "$ref": "#/components/schemas/runs.Run" + } + } + } + } + } + } + } + } + }, + "/runs/multipart": { + "post": { + "security": [ + { + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "description": "Ingests multiple runs, feedback objects, and binary attachments in a single `multipart/form-data` request.\n**Part‑name pattern**: `.[.]` where `event` ∈ {`post`, `patch`, `feedback`, `attachment`}.\n* `post|patch.` – JSON run payload.\n* `post|patch..` – out‑of‑band run data (`inputs`, `outputs`, `events`, `error`, `extra`, `serialized`).\n* `feedback.` – JSON feedback payload (must include `trace_id`).\n* `attachment..` – arbitrary binary attachment stored in S3.\n**Headers**: every part must set `Content-Type` **and** either a `Content-Length` header or `length` parameter. Per‑part `Content-Encoding` is **not** allowed; the top‑level request may be `Content-Encoding: gzip` or `Content-Encoding: zstd`.\n**Best performance** for high‑volume ingestion.", + "tags": [ + "runs" + ], + "summary": "Ingest Runs (Multipart)", + "parameters": [], + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/runs.ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/runs.ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/runs.ErrorResponse" + } + } + } + }, + "413": { + "description": "Request Entity Too Large", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/runs.ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/runs.ErrorResponse" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/runs.ErrorResponse" + } + } + } + } + }, + "x-public": true, "requestBody": { "required": true, "content": { @@ -28387,6 +28471,7 @@ } } }, + "x-public": true, "requestBody": { "required": true, "content": { @@ -28481,6 +28566,7 @@ } } }, + "x-public": true, "parameters": [] }, "put": { @@ -28552,6 +28638,7 @@ } } }, + "x-public": true, "requestBody": { "required": true, "content": { @@ -28564,131 +28651,48 @@ } } }, - "/v1/beacon/usage-snapshot": { - "post": { + "/v1/fleet/orgs": { + "get": { "security": [ { "API Key": [] }, - { - "Tenant ID": [] - }, { "Bearer Auth": [] } ], - "description": "Records aggregate entity counts (workspaces, projects, datasets, active users, etc.)\nfrom a self-hosted deployment or BYOC data plane.\nSelf-hosted authenticates via license_key in the body.\nBYOC data planes authenticate via the X-Data-Plane-Auth JWT header.", + "description": "Returns the organizations the authenticated caller belongs to. This endpoint does not require X-Tenant-Id and is the entry point for Fleet bootstrap: take an organization's `id` and list its workspaces via GET /v1/fleet/orgs/{org_id}/tenants, then call workspace-scoped endpoints with that tenant's id in X-Tenant-Id.", "tags": [ - "beacon" + "fleet orgs" ], - "summary": "Submit a usage snapshot", - "parameters": [], - "responses": { - "204": { - "description": "No Content" - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/beacon.SubmitUsageSnapshotPayload" - } - } - } - }, - "x-hidden": true - } - }, - "/v1/deepagents/auth-sessions": { - "post": { - "security": [ - { - "API Key": [] - }, + "summary": "List organizations", + "parameters": [ { - "Tenant ID": [] + "description": "Items per page (default 20, max 20)", + "name": "page_size", + "in": "query", + "schema": { + "type": "integer", + "title": "Page Size" + } }, { - "Bearer Auth": [] + "description": "Opaque pagination cursor returned by a prior response", + "name": "cursor", + "in": "query", + "schema": { + "type": "string", + "title": "Cursor" + } } ], - "description": "Initiates an OAuth flow for the caller. If the user is already authorized, returns a completed session that references an existing token. Otherwise, returns a pending session containing a verification URL the user must visit to complete authorization.", - "tags": [ - "fleet auth" - ], - "summary": "Start an authorization session", - "parameters": [], "responses": { "200": { - "description": "Existing token reused; no new session created.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/auth.CreateSessionResponse" - } - } - } - }, - "201": { - "description": "New pending session created; visit verification_url to complete.", + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.CreateSessionResponse" + "$ref": "#/components/schemas/orgs.ListOrgsResponse" } } } @@ -28698,7 +28702,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/httperr.ErrorResponse" } } } @@ -28708,57 +28712,45 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/httperr.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/httperr.ErrorResponse" } } } } }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/auth.CreateSessionRequest" - } - } - } - }, + "x-public": true, "x-hidden": true } }, - "/v1/deepagents/auth-sessions/{session_id}": { + "/v1/fleet/orgs/{org_id}/tenants": { "get": { "security": [ { "API Key": [] }, - { - "Tenant ID": [] - }, { "Bearer Auth": [] } ], - "description": "Returns the current status of an in-flight authorization session. The optional `wait_seconds` query param (1-25, default 1) keeps the request open up to that many seconds, returning early if the session completes. Poll until status is COMPLETED.", + "description": "Returns the LangSmith tenants/workspaces visible to the authenticated caller in the requested organization. This endpoint does not require X-Tenant-Id and is intended for Fleet bootstrap.", "tags": [ - "fleet auth" + "fleet tenants" ], - "summary": "Get an authorization session", + "summary": "List tenants", "parameters": [ { - "description": "Authorization session ID", - "name": "session_id", + "description": "Organization ID", + "name": "org_id", "in": "path", "required": true, "schema": { @@ -28766,12 +28758,21 @@ } }, { - "description": "Long-poll window in seconds (1-25, default 1)", - "name": "wait_seconds", + "description": "Items per page (default 20, max 20)", + "name": "page_size", "in": "query", "schema": { "type": "integer", - "title": "Wait Seconds" + "title": "Page Size" + } + }, + { + "description": "Opaque pagination cursor returned by a prior response", + "name": "cursor", + "in": "query", + "schema": { + "type": "string", + "title": "Cursor" } } ], @@ -28781,7 +28782,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.GetSessionResponse" + "$ref": "#/components/schemas/tenants.ListTenantsResponse" } } } @@ -28791,7 +28792,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/tenants.ErrorResponse" } } } @@ -28801,36 +28802,27 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/tenants.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/tenants.ErrorResponse" } } } } }, + "x-public": true, "x-hidden": true } }, - "/v1/deepagents/mcp-servers": { + "/v1/fleet/secrets": { "get": { "security": [ { @@ -28843,18 +28835,28 @@ "Bearer Auth": [] } ], - "description": "Returns MCP servers visible to the caller after ABAC filtering. Service-key callers may pass X-Ls-User-Id to resolve per-user OAuth providers.", + "description": "Lists the names of secrets configured for the workspace. Use this to check which model API keys (see a model's required_secrets) are already set. Secret values are never returned. Secrets are a single shared namespace per workspace. Any agent (triggered by any member) can use them, and any member whose role grants workspaces:manage-secrets (Workspace Admins by default) can overwrite or delete them. Setting an existing name replaces its value for everyone. Treat them as shared team credentials, not personal keys.", "tags": [ - "fleet mcp" + "fleet secrets" ], - "summary": "List MCP servers", + "summary": "List workspace secret names", "parameters": [ { - "description": "User UUID for per-user OAuth resolution (service keys)", - "name": "X-Ls-User-Id", - "in": "header", + "description": "Items per page (1-100, default 20)", + "name": "page_size", + "in": "query", "schema": { - "type": "string" + "type": "integer", + "title": "Page Size" + } + }, + { + "description": "Opaque pagination cursor from a prior response's next_cursor", + "name": "cursor", + "in": "query", + "schema": { + "type": "string", + "title": "Cursor" } } ], @@ -28864,10 +28866,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.McpServer" - } + "$ref": "#/components/schemas/secrets.ListResponse" } } } @@ -28877,7 +28876,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/secrets.ErrorResponse" } } } @@ -28887,7 +28886,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/secrets.ErrorResponse" } } } @@ -28897,7 +28896,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/secrets.ErrorResponse" } } } @@ -28907,22 +28906,13 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" - } - } - } - }, - "503": { - "description": "Service Unavailable", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/secrets.ErrorResponse" } } } } }, + "x-public": true, "x-hidden": true }, "post": { @@ -28937,29 +28927,22 @@ "Bearer Auth": [] } ], - "description": "Registers a new MCP server configuration for the workspace.", + "description": "Sets or deletes multiple workspace secrets in one request, mirroring the upstream SecretUpsert contract. A null value deletes the key; a non-null value sets it. Values are never returned. Secrets are a single shared namespace per workspace. Any agent (triggered by any member) can use them, and any member whose role grants workspaces:manage-secrets (Workspace Admins by default) can overwrite or delete them. Setting an existing name replaces its value for everyone. Treat them as shared team credentials, not personal keys.", "tags": [ - "fleet mcp" + "fleet secrets" ], - "summary": "Create MCP server", + "summary": "Bulk set or delete workspace secrets", "parameters": [], "responses": { - "201": { - "description": "Created", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.McpServer" - } - } - } + "204": { + "description": "No Content" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/secrets.ErrorResponse" } } } @@ -28969,7 +28952,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/secrets.ErrorResponse" } } } @@ -28979,48 +28962,22 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" - } - } - } - }, - "503": { - "description": "Service Unavailable", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/secrets.ErrorResponse" } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.CreateMcpServerPayload" + "type": "array", + "items": { + "$ref": "#/components/schemas/secrets.bulkUpsertItem" + } } } } @@ -29028,8 +28985,8 @@ "x-hidden": true } }, - "/v1/deepagents/mcp-servers/{mcp_server_id}": { - "get": { + "/v1/fleet/secrets/{name}": { + "put": { "security": [ { "API Key": [] @@ -29041,15 +28998,15 @@ "Bearer Auth": [] } ], - "description": "Returns a single MCP server by ID.", + "description": "Creates or updates a single workspace secret by name. The value is write-only and is never returned by any endpoint. Secrets are a single shared namespace per workspace. Any agent (triggered by any member) can use them, and any member whose role grants workspaces:manage-secrets (Workspace Admins by default) can overwrite or delete them. Setting an existing name replaces its value for everyone. Treat them as shared team credentials, not personal keys.", "tags": [ - "fleet mcp" + "fleet secrets" ], - "summary": "Get MCP server", + "summary": "Set a workspace secret", "parameters": [ { - "description": "MCP server ID", - "name": "mcp_server_id", + "description": "Secret name (e.g. ANTHROPIC_API_KEY)", + "name": "name", "in": "path", "required": true, "schema": { @@ -29058,22 +29015,15 @@ } ], "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.McpServer" - } - } - } + "204": { + "description": "No Content" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/secrets.ErrorResponse" } } } @@ -29083,7 +29033,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/secrets.ErrorResponse" } } } @@ -29093,38 +29043,19 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/secrets.ErrorResponse" } } } - }, - "503": { - "description": "Service Unavailable", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" - } + } + }, + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/secrets.putRequest" } } } @@ -29143,15 +29074,15 @@ "Bearer Auth": [] } ], - "description": "Deletes an MCP server configuration.", + "description": "Removes a single workspace secret by name. Succeeds whether or not the secret currently exists. Secrets are a single shared namespace per workspace. Any agent (triggered by any member) can use them, and any member whose role grants workspaces:manage-secrets (Workspace Admins by default) can overwrite or delete them. Setting an existing name replaces its value for everyone. Treat them as shared team credentials, not personal keys.", "tags": [ - "fleet mcp" + "fleet secrets" ], - "summary": "Delete MCP server", + "summary": "Delete a workspace secret", "parameters": [ { - "description": "MCP server ID", - "name": "mcp_server_id", + "description": "Secret name (e.g. ANTHROPIC_API_KEY)", + "name": "name", "in": "path", "required": true, "schema": { @@ -29168,7 +29099,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/secrets.ErrorResponse" } } } @@ -29178,7 +29109,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/secrets.ErrorResponse" } } } @@ -29188,65 +29119,44 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" - } - } - } - }, - "503": { - "description": "Service Unavailable", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/secrets.ErrorResponse" } } } } }, + "x-public": true, "x-hidden": true - }, - "patch": { + } + }, + "/v1/fleet/tenants/{tenant_id}/users/{id}": { + "get": { "security": [ { "API Key": [] }, - { - "Tenant ID": [] - }, { "Bearer Auth": [] } ], - "description": "Partially updates an MCP server. Tool list cache is invalidated on success.", + "description": "Resolves a LangSmith user by ID within a tenant/workspace the caller can access. This endpoint does not require X-Tenant-Id because the tenant is part of the path.", "tags": [ - "fleet mcp" + "fleet users" ], - "summary": "Update MCP server", + "summary": "Get Fleet user in tenant", "parameters": [ { - "description": "MCP server ID", - "name": "mcp_server_id", + "description": "Tenant ID", + "name": "tenant_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "User ID", + "name": "id", "in": "path", "required": true, "schema": { @@ -29260,7 +29170,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.McpServer" + "$ref": "#/components/schemas/users.UserRef" } } } @@ -29270,7 +29180,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/users.ErrorResponse" } } } @@ -29280,7 +29190,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/users.ErrorResponse" } } } @@ -29290,7 +29200,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/users.ErrorResponse" } } } @@ -29300,7 +29210,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/users.ErrorResponse" } } } @@ -29310,36 +29220,79 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/users.ErrorResponse" + } + } + } + } + }, + "x-public": true, + "x-hidden": true + } + }, + "/v1/fleet/users/current": { + "get": { + "security": [ + { + "API Key": [] + }, + { + "Bearer Auth": [] + } + ], + "description": "Returns the authenticated Fleet caller's user profile. This endpoint does not require X-Tenant-Id and is intended for Fleet bootstrap.", + "tags": [ + "fleet users" + ], + "summary": "Get current Fleet user", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/users.User" } } } }, - "503": { - "description": "Service Unavailable", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/users.ErrorResponse" } } } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.UpdateMcpServerPayload" + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/users.ErrorResponse" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/users.ErrorResponse" + } } } } }, + "x-public": true, + "parameters": [], "x-hidden": true } }, - "/v1/deepagents/mcp-servers/{mcp_server_id}/oauth-provider": { + "/v1/platform/alerts/{session_id}": { "post": { "security": [ { @@ -29352,15 +29305,15 @@ "Bearer Auth": [] } ], - "description": "Discovers and registers an OAuth provider for the authenticated user against a Deep Agents MCP server configured with per-user dynamic client mode. Idempotent when a mapping already exists.", + "description": "Creates a new alert rule. The request body must be a JSON-encoded alert rule object that follows the CreateAlertRuleRequest schema.", "tags": [ - "fleet mcp" + "alert_rules" ], - "summary": "Register per-user MCP OAuth provider", + "summary": "Create an alert rule", "parameters": [ { - "description": "MCP server ID", - "name": "mcp_server_id", + "description": "Session ID", + "name": "session_id", "in": "path", "required": true, "schema": { @@ -29369,32 +29322,22 @@ } ], "responses": { - "200": { - "description": "OK", + "201": { + "description": "Alert rule created", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.RegisterOAuthProviderResponse" + "$ref": "#/components/schemas/alerts.AlertRuleResponse" } } } }, "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" - } - } - } - }, - "401": { - "description": "Unauthorized", + "description": "Bad request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } @@ -29404,57 +29347,57 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } }, - "404": { - "description": "Not Found", + "429": { + "description": "Alert Rule Limit Reached", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } }, "500": { - "description": "Internal Server Error", + "description": "Internal server error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } }, "503": { - "description": "Service Unavailable", + "description": "Service unavailable", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } } }, + "x-public": true, "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.RegisterOAuthProviderPayload" + "$ref": "#/components/schemas/alerts.CreateAlertRuleRequest" } } } - }, - "x-hidden": true + } } }, - "/v1/fleet/agents": { - "get": { + "/v1/platform/alerts/{session_id}/test": { + "post": { "security": [ { "API Key": [] @@ -29466,110 +29409,63 @@ "Bearer Auth": [] } ], - "description": "Returns the agents the authenticated user has access to. The\ndefault `audience=user` view returns the agents the caller owns\nplus any agents that have been directly shared with the caller\nvia `permissions.shared_users`. The alternate `audience=tenant`\nview returns only the workspace-shared agents (those whose\n`permissions.visibility` is `tenant`). System-created defaults\nare always excluded.\n\nEach item carries two caller-relative fields that describe the\nauthenticated user's relationship to that agent:\n* `is_owner` — `true` if the caller is the agent's owner.\n* `access_level` — one of `READ`, `RUN`, or `WRITE`. Owners\nget `WRITE`. Direct shares get the level matching the\n`shared_users` list they appear in. Tenant-shared rows get\nthe agent's `tenant_access_level`. The maximum applicable\nlevel always wins.\n\nResults are cursor-paginated. Pass the `cursor` value from the\nprevious response to fetch the next page; `next_cursor` is\nomitted when no further pages exist.", + "description": "Tests an alert action which will fire a notification to all configured recipients if the configuration is valid.", "tags": [ - "agents" + "alert_rules" ], - "summary": "List agents", + "summary": "Test an alert action to determine if configuration is valid", "parameters": [ { - "description": "Items per page (1-100). Default 20.", - "name": "page_size", - "in": "query", - "schema": { - "type": "integer", - "title": "Page Size" - } - }, - { - "description": "Opaque pagination cursor returned by the previous list call.", - "name": "cursor", - "in": "query", - "schema": { - "type": "string", - "title": "Cursor" - } - }, - { - "description": "Case-insensitive substring filter on the agent name.", - "name": "name", - "in": "query", - "schema": { - "type": "string", - "title": "Name" - } - }, - { - "description": "Scope of agents to return. `user` (default) returns owned + directly-shared. `tenant` returns workspace-shared only.", - "name": "audience", - "in": "query", - "schema": { - "enum": [ - "user", - "tenant" - ], - "type": "string", - "default": "user", - "title": "Audience" - } - }, - { - "description": "Field to sort by.", - "name": "sort_by", - "in": "query", + "description": "Session ID", + "name": "session_id", + "in": "path", + "required": true, "schema": { - "enum": [ - "created_at", - "updated_at", - "name" - ], - "type": "string", - "default": "updated_at", - "title": "Sort By" + "type": "string" } }, { - "description": "Sort direction.", - "name": "sort_order", - "in": "query", + "description": "Alert rule ID", + "name": "alert_rule_id", + "in": "path", + "required": true, "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string", - "default": "desc", - "title": "Sort Order" + "type": "string" } } ], "responses": { "200": { - "description": "OK", + "description": "Alert action fired successfully", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ListAgentsResponse" + "type": "object", + "additionalProperties": { + "allOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + ] + } } } } }, "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", + "description": "Bad request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } @@ -29579,45 +29475,37 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } }, "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" - } - } - } - }, - "502": { - "description": "Bad Gateway", + "description": "Internal server error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } }, "503": { - "description": "Service Unavailable", + "description": "Service unavailable", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } } }, - "x-hidden": true - }, - "post": { + "x-public": true + } + }, + "/v1/platform/alerts/{session_id}/{alert_rule_id}": { + "get": { "security": [ { "API Key": [] @@ -29629,39 +29517,48 @@ "Bearer Auth": [] } ], - "description": "Creates an agent with the given metadata, runtime configuration,\nand optional file tree. Returns the agent's identity, ownership,\nand a revision token identifying the initial file tree.\nCreation is atomic — either the agent is fully created or no\nstate is persisted.\n\nThe file tree is built from typed fields:\n* `system_prompt` → `AGENTS.md` (`instructions` is a\ndeprecated alias; `system_prompt` wins when both are sent)\n* `tools` → `tools.json`\n* `subagents[i]` → `subagents//AGENTS.md` + `subagents//tools.json`\n* `skills[i]` → `skills//SKILL.md` + supporting files\n\nAll file paths in `skills[i].files` and the top-level `files` map\nmust be relative — no leading `/`, no `..` segments.\n\n`extras` is an arbitrary key/value map for caller-defined tracking\nattached to the agent's metadata.\n\nUse `files` for paths the typed fields don't cover. Setting both\na typed field and the corresponding `files` entry returns 422.", + "description": "Gets an alert rule.", "tags": [ - "agents" + "alert_rules" ], - "summary": "Create an agent", + "summary": "Get an alert rule", "parameters": [ { - "description": "Echo the agent's file tree in the response", - "name": "include_files", - "in": "query", + "description": "Session ID", + "name": "session_id", + "in": "path", + "required": true, "schema": { - "type": "boolean", - "title": "Include Files" + "type": "string" + } + }, + { + "description": "Alert rule ID", + "name": "alert_rule_id", + "in": "path", + "required": true, + "schema": { + "type": "string" } } ], "responses": { - "201": { - "description": "Created", + "200": { + "description": "Alert rule", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.Agent" + "$ref": "#/components/schemas/alerts.AlertRuleResponse" } } } }, "400": { - "description": "Bad Request", + "description": "Bad request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } @@ -29671,77 +29568,45 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } }, - "422": { - "description": "Unprocessable Entity", + "404": { + "description": "Not found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } }, "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" - } - } - } - }, - "502": { - "description": "Bad Gateway", + "description": "Internal server error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } }, "503": { - "description": "Service Unavailable", + "description": "Service unavailable", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } } }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/agents.CreateAgentRequest" - } - } - } - }, - "x-hidden": true - } - }, - "/v1/fleet/agents/{agent_id}": { - "get": { + "x-public": true + }, + "delete": { "security": [ { "API Key": [] @@ -29753,59 +29618,63 @@ "Bearer Auth": [] } ], - "description": "Returns the specified agent: its metadata (name, description,\npermissions, runtime, extras) plus the parsed\nfile tree (system prompt, tools, subagents, skills) at the\nlatest commit. Pass `include_files=true` to also receive the\nraw file map.\n\nResponses include `system_prompt` and `instructions` with the\nsame value; `instructions` is deprecated.", + "description": "Deletes an alert rule", "tags": [ - "agents" + "alert_rules" ], - "summary": "Get an agent", + "summary": "Delete an alert rule", "parameters": [ { - "description": "Agent ID", - "name": "agent_id", + "description": "Session ID", + "name": "session_id", "in": "path", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } }, { - "description": "Include the raw file map in the response", - "name": "include_files", - "in": "query", + "description": "Alert rule ID", + "name": "alert_rule_id", + "in": "path", + "required": true, "schema": { - "type": "boolean", - "title": "Include Files" + "type": "string" } } ], "responses": { "200": { - "description": "OK", + "description": "Alert rule deleted", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.Agent" + "type": "object", + "additionalProperties": { + "allOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + ] + } } } } }, "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", + "description": "Bad request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } @@ -29815,55 +29684,45 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } }, "404": { - "description": "Not Found", + "description": "Not found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } }, "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" - } - } - } - }, - "502": { - "description": "Bad Gateway", + "description": "Internal server error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } }, "503": { - "description": "Service Unavailable", + "description": "Service unavailable", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } } }, - "x-hidden": true + "x-public": true }, - "delete": { + "patch": { "security": [ { "API Key": [] @@ -29875,43 +29734,63 @@ "Bearer Auth": [] } ], - "description": "Deletes the agent and all of its associated state. The call is\nidempotent — deleting a non-existent agent returns 204.", + "description": "Updates an alert rule.", "tags": [ - "agents" + "alert_rules" ], - "summary": "Delete an agent", + "summary": "Update an alert rule", "parameters": [ { - "description": "Agent ID", - "name": "agent_id", + "description": "Session ID", + "name": "session_id", "in": "path", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" + } + }, + { + "description": "Alert rule ID", + "name": "alert_rule_id", + "in": "path", + "required": true, + "schema": { + "type": "string" } } ], "responses": { - "204": { - "description": "No Content" - }, - "400": { - "description": "Bad Request", + "200": { + "description": "Alert rule updated", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "type": "object", + "additionalProperties": { + "allOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + ] + } } } } }, - "401": { - "description": "Unauthorized", + "400": { + "description": "Bad request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } @@ -29921,45 +29800,57 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } }, - "500": { - "description": "Internal Server Error", + "404": { + "description": "Not found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "500": { + "description": "Internal server error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } }, "503": { - "description": "Service Unavailable", + "description": "Service unavailable", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/alerts.ErrorResponse" } } } } }, - "x-hidden": true - }, - "patch": { + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/alerts.UpdateAlertRuleRequest" + } + } + } + } + } + }, + "/v1/platform/annotation-queues/{queue_id}/reviewers": { + "post": { "security": [ { "API Key": [] @@ -29971,39 +29862,29 @@ "Bearer Auth": [] } ], - "description": "Updates the specified agent. All request fields are optional;\nomitted fields are left unchanged.\n\nMerge semantics follow PATCH conventions:\n* Top-level scalars (`name`, `description`) merge field-by-field —\nsending one does not affect the other.\n* Nested objects (`runtime`, `permissions`, `tools`,\n`subagents`, `skills`, `extras`) are replaced in full when any\nof their fields is provided. To preserve existing nested values,\ninclude them in your PATCH.\n* Providing any of `system_prompt`, `tools`, `subagents`, `skills`,\nor `files` triggers a new file tree commit. `instructions` is\na deprecated alias for `system_prompt` and is still accepted;\n`system_prompt` wins when both are sent.\n\nEntries under `files` are created or replaced by path. The call is\natomic per request: if any entry fails validation, no changes are\napplied.", + "description": "Assigns a single identity as a reviewer for the queue. Idempotent.", "tags": [ - "agents" + "annotation_queues" ], - "summary": "Update an agent", + "summary": "Add a reviewer to an annotation queue", "parameters": [ { - "description": "Agent ID", - "name": "agent_id", + "description": "Queue ID", + "name": "queue_id", "in": "path", "required": true, "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "description": "Echo the agent's file tree in the response", - "name": "include_files", - "in": "query", - "schema": { - "type": "boolean", - "title": "Include Files" + "type": "string" } } ], "responses": { - "200": { - "description": "OK", + "201": { + "description": "Created", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.Agent" + "$ref": "#/components/schemas/annotationqueues.AddReviewerResponse" } } } @@ -30013,17 +29894,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } @@ -30033,17 +29907,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" - } - } - } - }, - "422": { - "description": "Unprocessable Entity", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } @@ -30053,27 +29920,30 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.UpdateAgentRequest" + "$ref": "#/components/schemas/annotationqueues.AddReviewerRequest" } } } - }, - "x-hidden": true + } } }, - "/v1/fleet/agents/{agent_id}/clone": { - "post": { + "/v1/platform/annotation-queues/{queue_id}/reviewers/{identity_id}": { + "delete": { "security": [ { "API Key": [] @@ -30085,139 +29955,164 @@ "Bearer Auth": [] } ], - "description": "Creates a new agent that mirrors the source agent's behaviour\nbut is owned by the calling identity. Creation is atomic — the\nclone is either fully created or no state is persisted.\n\nWhat is copied from the source:\n* `description`\n* `runtime` (model configuration)\n* `backend` (backend type + sandbox configuration)\n* `system_prompt`, `tools`, `subagents`, `skills`\n* any leftover files outside the typed fields above (e.g.\n`docs/README.md` attached via the escape `files` field)\n\nWhat the caller can override (sent in the request body):\n* `name` — defaults to `\" (Copy)\"`\n* `permissions` — defaults to the source's `identity` with\n`visibility=user` and `tenant_access_level=read`. When\nsupplied the object fully replaces the default; PATCH-style\nmerging does not apply.\n\nWhat is always reset for the clone (you cannot override these):\n* agent ID, agent version, owner, timestamps\n* stamped user context (`user_email`, `user_name`,\n`user_timezone` — taken from the calling identity + the\n`X-User-Timezone` header)\n\nWhat is never copied (start fresh on the clone):\n* `extras` (caller-defined metadata bag, e.g. icon\ncustomisations, template IDs)\n* caller-defined `configurable` bag entries\n* sharing state, tokens, triggers, and schedules\n\nCloning a built-in system template returns 422.", + "description": "Unassigns an identity as a reviewer for the queue. Idempotent.", "tags": [ - "agents" + "annotation_queues" ], - "summary": "Clone an agent", + "summary": "Remove a reviewer from an annotation queue", "parameters": [ { - "description": "Source agent ID", - "name": "agent_id", + "description": "Queue ID", + "name": "queue_id", "in": "path", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } }, { - "description": "Echo the new agent's file tree in the response", - "name": "include_files", - "in": "query", + "description": "Identity ID of the reviewer to remove", + "name": "identity_id", + "in": "path", + "required": true, "schema": { - "type": "boolean", - "title": "Include Files" + "type": "string" } } ], "responses": { - "201": { - "description": "Created", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/agents.Agent" - } - } - } + "204": { + "description": "No Content" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } }, - "401": { - "description": "Unauthorized", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } }, - "403": { - "description": "Forbidden", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } + } + }, + "x-public": true + } + }, + "/v1/platform/datasets/examples/delete": { + "post": { + "security": [ + { + "API Key": [] }, - "404": { - "description": "Not Found", + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "description": "This endpoint hard deletes *all* versions of a dataset example(s).\nDeletion is performed by setting inputs, outputs, and metadata to null and deleting attachment files while keeping the example ID, dataset ID, and creation timestamp.\nIMPORTANT: attachment files can take up to 7 days to be deleted. inputs, outputs and metadata are nullified immediately.", + "tags": [ + "examples" + ], + "summary": "Hard Delete Examples", + "parameters": [], + "responses": { + "200": { + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/examples.ExamplesDeletedResponse" } } } }, - "422": { - "description": "Unprocessable Entity", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/examples.ErrorResponse" } } } }, - "500": { - "description": "Internal Server Error", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/examples.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/examples.ErrorResponse" } } } }, - "503": { - "description": "Service Unavailable", + "422": { + "description": "Unprocessable Entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/examples.ErrorResponse" } } } } }, + "x-public": true, "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.CloneAgentRequest" + "$ref": "#/components/schemas/examples.DeleteExamplesRequest" } } } - }, - "x-hidden": true + } } }, - "/v1/fleet/agents/{agent_id}/connections": { - "get": { + "/v1/platform/datasets/{dataset_id}/examples": { + "post": { "security": [ { "API Key": [] @@ -30229,67 +30124,114 @@ "Bearer Auth": [] } ], - "description": "Lists the OAuth connections for an agent.", + "description": "This endpoint allows clients to upload examples to a specified dataset by sending a multipart/form-data POST request.\nEach form part contains either JSON-encoded data or binary attachment files associated with an example.", "tags": [ - "agents" + "examples" ], - "summary": "List an agent's connections", + "summary": "Upload Examples", "parameters": [ { - "description": "Agent ID", - "name": "agent_id", + "description": "Dataset ID", + "name": "dataset_id", "in": "path", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], "responses": { - "200": { - "description": "OK", + "201": { + "description": "Created", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ListConnectionsResponse" + "$ref": "#/components/schemas/examples.ExamplesCreatedResponse" } } } }, - "401": { - "description": "Unauthorized", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/examples.ErrorResponse" } } } }, - "404": { - "description": "Not Found", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/examples.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "409": { + "description": "Conflict", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/examples.ErrorResponse" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/examples.ErrorResponse" } } } } }, - "x-hidden": true + "x-public": true, + "requestBody": { + "required": true, + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "{example_id}": { + "type": "string", + "format": "binary", + "description": "The Example info as JSON. Can have fields 'metadata', 'split', 'use_source_run_io', 'source_run_id', 'created_at', 'modified_at'" + }, + "{example_id}.inputs": { + "type": "string", + "format": "binary", + "description": "The Example inputs as JSON" + }, + "{example_id}.outputs": { + "type": "string", + "format": "binary", + "description": "THe Example outputs as JSON" + }, + "{example_id}.attachments.{name}": { + "type": "string", + "format": "binary", + "description": "File attachment named {name}" + } + }, + "required": [ + "{example_id}", + "{example_id}.inputs" + ] + } + } + } + } }, - "post": { + "patch": { "security": [ { "API Key": [] @@ -30301,19 +30243,20 @@ "Bearer Auth": [] } ], - "description": "Associates an existing auth token with an agent so the agent can act with that token.", + "description": "This endpoint allows clients to update existing examples in a specified dataset by sending a multipart/form-data PATCH request.\nEach form part contains either JSON-encoded data or binary attachment files to update an example.", "tags": [ - "agents" + "examples" ], - "summary": "Create a connection for an agent", + "summary": "Update Examples", "parameters": [ { - "description": "Agent ID", - "name": "agent_id", + "description": "Dataset ID", + "name": "dataset_id", "in": "path", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], @@ -30323,7 +30266,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.Connection" + "$ref": "#/components/schemas/examples.ExamplesUpdatedResponse" } } } @@ -30333,17 +30276,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/examples.ErrorResponse" } } } }, - "401": { - "description": "Unauthorized", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/examples.ErrorResponse" } } } @@ -30353,7 +30296,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/examples.ErrorResponse" } } } @@ -30363,37 +30306,67 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/examples.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "422": { + "description": "Unprocessable Entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/examples.ErrorResponse" } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { - "application/json": { + "multipart/form-data": { "schema": { - "$ref": "#/components/schemas/agents.CreateConnectionRequest" + "type": "object", + "properties": { + "{example_id}": { + "type": "string", + "format": "binary", + "description": "The Example update info as JSON. Can have fields 'metadata', 'split'" + }, + "{example_id}.inputs": { + "type": "string", + "format": "binary", + "description": "The updated Example inputs as JSON" + }, + "{example_id}.outputs": { + "type": "string", + "format": "binary", + "description": "The updated Example outputs as JSON" + }, + "{example_id}.attachments_operations": { + "type": "string", + "format": "binary", + "description": "JSON describing attachment operations (retain, rename)" + }, + "{example_id}.attachment.{name}": { + "type": "string", + "format": "binary", + "description": "New file attachment named {name}" + } + }, + "required": [ + "{example_id}" + ] } } } - }, - "x-hidden": true + } } }, - "/v1/fleet/agents/{agent_id}/connections/{connection_id}": { - "delete": { + "/v1/platform/evaluators": { + "get": { "security": [ { "API Key": [] @@ -30405,96 +30378,103 @@ "Bearer Auth": [] } ], - "description": "Removes a single connection from an agent. The underlying token is not revoked.", + "description": "List evaluators for the current workspace, with optional filtering by type, name, tag, feedback key, or resource ID.", "tags": [ - "agents" + "evaluators" ], - "summary": "Remove an agent's connection", + "summary": "List evaluators", "parameters": [ { - "description": "Agent ID", - "name": "agent_id", - "in": "path", - "required": true, + "description": "Filter by evaluator type", + "name": "type", + "in": "query", "schema": { - "type": "string" + "type": "string", + "title": "Type" } }, { - "description": "Connection Id", - "name": "connection_id", - "in": "path", - "required": true, + "description": "Filter by name substring (also searches creator names)", + "name": "name_contains", + "in": "query", "schema": { - "type": "string" + "type": "string", + "title": "Name Contains" } - } - ], - "responses": { - "204": { - "description": "No Content" }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" - } - } + { + "description": "Filter by tag value IDs", + "name": "tag_value_id", + "in": "query", + "style": "form", + "explode": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Tag Value Id" } }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" - } - } + { + "description": "Filter by feedback key", + "name": "feedback_key", + "in": "query", + "schema": { + "type": "string", + "title": "Feedback Key" } }, - "502": { - "description": "Bad Gateway", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" - } - } + { + "description": "Filter by resource IDs", + "name": "resource_id", + "in": "query", + "style": "form", + "explode": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Resource Id" } - } - }, - "x-hidden": true - } - }, - "/v1/fleet/agents/{agent_id}/health": { - "get": { - "security": [ + }, { - "API Key": [] + "description": "Field to sort by", + "name": "sort_by", + "in": "query", + "schema": { + "type": "string", + "title": "Sort By" + } }, { - "Tenant ID": [] + "description": "Sort in descending order", + "name": "sort_by_desc", + "in": "query", + "schema": { + "type": "boolean", + "title": "Sort By Desc" + } }, { - "Bearer Auth": [] - } - ], - "description": "Returns a per-MCP-server health summary for the agent. Each MCP\nserver referenced by the agent (its tools.json plus every\nsubagent's tools.json) is probed in parallel by issuing a single\nMCP initialize JSON-RPC call. Credentials are resolved per\n(tenant, server) using the configured authentication method.\nPer-server failures surface as\n`ok=false` with an `error_code` (auth_failed | unreachable |\ninvalid_response) and a human-readable `error` string.\n`mcp_check.ok` is `true` only when every server returns a\nhealthy response; an empty server list is treated as healthy.", - "tags": [ - "agents" - ], - "summary": "Check agent MCP-server health", - "parameters": [ + "description": "Maximum number of results (1-100)", + "name": "limit", + "in": "query", + "schema": { + "default": 100, + "type": "integer", + "title": "Limit" + } + }, { - "description": "Agent ID", - "name": "agent_id", - "in": "path", - "required": true, + "description": "Offset for pagination", + "name": "offset", + "in": "query", "schema": { - "type": "string", - "format": "uuid" + "default": 0, + "type": "integer", + "title": "Offset" } } ], @@ -30504,7 +30484,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.HealthResponse" + "$ref": "#/components/schemas/evaluators.ListEvaluatorsResponse" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } @@ -30514,17 +30504,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } }, - "404": { - "description": "Not Found", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } @@ -30534,17 +30524,15 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agents.ErrorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } } }, - "x-hidden": true - } - }, - "/v1/fleet/auth-providers": { - "get": { + "x-public": true + }, + "post": { "security": [ { "API Key": [] @@ -30556,97 +30544,77 @@ "Bearer Auth": [] } ], - "description": "Lists the OAuth providers configured for your organization. Each provider defines how a third-party service (GitHub, Google, Slack, etc.) authorizes connections.", + "description": "Create a new LLM or code evaluator for the current workspace.", "tags": [ - "fleet auth" + "evaluators" ], - "summary": "List OAuth providers", + "summary": "Create evaluator", + "parameters": [], "responses": { - "200": { - "description": "OK" - }, - "401": { - "description": "Unauthorized", + "201": { + "description": "Created", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.CreateEvaluatorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } - } - }, - "parameters": [], - "x-hidden": true - }, - "post": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Registers an OAuth provider configuration for your organization. End users can then start authorization sessions against this provider.", - "tags": [ - "fleet auth" - ], - "summary": "Register an OAuth provider", - "responses": { - "201": { - "description": "Created" }, - "400": { - "description": "Bad Request", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } }, - "401": { - "description": "Unauthorized", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } } }, - "parameters": [], - "x-hidden": true - } - }, - "/v1/fleet/auth-providers/discover": { - "post": { + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/evaluators.CreateEvaluatorRequest" + } + } + } + } + }, + "delete": { "security": [ { "API Key": [] @@ -30658,21 +30626,54 @@ "Bearer Auth": [] } ], - "description": "Auto-discovers an OAuth provider's metadata from an MCP server URL and registers it for your organization in one step.", + "description": "Delete multiple evaluators by their IDs. Returns per-item success/failure.", "tags": [ - "fleet auth" + "evaluators" + ], + "summary": "Bulk delete evaluators", + "parameters": [ + { + "description": "Evaluator IDs to delete", + "name": "evaluator_ids", + "in": "query", + "required": true, + "style": "form", + "explode": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Evaluator Ids" + } + }, + { + "description": "When true, delete all run rules for this evaluator before deleting the evaluator", + "name": "delete_run_rules", + "in": "query", + "schema": { + "type": "boolean", + "title": "Delete Run Rules" + } + } ], - "summary": "Discover and register an OAuth provider", "responses": { - "201": { - "description": "Created" + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/evaluators.BulkDeleteEvaluatorsResponse" + } + } + } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } @@ -30682,27 +30683,36 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/evaluators.ErrorResponse" + } + } + } + }, + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } } }, - "parameters": [], - "x-hidden": true + "x-public": true } }, - "/v1/fleet/auth-providers/{provider_id}": { + "/v1/platform/evaluators/spend": { "get": { "security": [ { @@ -30715,97 +30725,128 @@ "Bearer Auth": [] } ], - "description": "Returns a single OAuth provider by ID.", + "description": "Returns per-day LLM evaluator spend for the requested 7-day period, grouped by evaluator, resource, or run rule. Exactly one of group_by, evaluator_id, session_id, or dataset_id is required. resource_id, type, and feedback_key may be supplied with group_by to narrow listing aggregations.", "tags": [ - "fleet auth" + "evaluators" ], - "summary": "Get an OAuth provider", + "summary": "Get evaluator spend", "parameters": [ { - "description": "Provider ID", - "name": "provider_id", - "in": "path", + "description": "Aggregation mode: 'evaluator', 'resource', or 'run_rule'. Mutually exclusive with entity filters.", + "name": "group_by", + "in": "query", + "schema": { + "type": "string", + "title": "Group By" + } + }, + { + "description": "Filter to a specific evaluator (UUID). Mutually exclusive with group_by.", + "name": "evaluator_id", + "in": "query", + "schema": { + "type": "string", + "title": "Evaluator Id" + } + }, + { + "description": "Filter to a specific project (UUID). Mutually exclusive with group_by.", + "name": "session_id", + "in": "query", + "schema": { + "type": "string", + "title": "Session Id" + } + }, + { + "description": "Filter to a specific dataset (UUID). Mutually exclusive with group_by.", + "name": "dataset_id", + "in": "query", + "schema": { + "type": "string", + "title": "Dataset Id" + } + }, + { + "description": "Filter grouped results to evaluators attached to all supplied project or dataset IDs. Only valid with group_by.", + "name": "resource_id", + "in": "query", + "style": "form", + "explode": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Resource Id" + } + }, + { + "description": "Filter grouped results by evaluator type: 'llm' or 'code'. Only valid with group_by.", + "name": "type", + "in": "query", + "schema": { + "type": "string", + "title": "Type" + } + }, + { + "description": "Filter grouped results by evaluator feedback key. Only valid with group_by.", + "name": "feedback_key", + "in": "query", + "schema": { + "type": "string", + "title": "Feedback Key" + } + }, + { + "description": "Start of the 7-day window (YYYY-MM-DD).", + "name": "period_start", + "in": "query", "required": true, "schema": { - "type": "string" + "type": "string", + "title": "Period Start" } } ], "responses": { "200": { - "description": "OK" - }, - "401": { - "description": "Unauthorized", + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.GetEvaluatorSpendResponse" } } } }, - "404": { - "description": "Not Found", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } - } - }, - "x-hidden": true - }, - "delete": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Deletes an OAuth provider. Tokens previously issued for this provider are revoked.", - "tags": [ - "fleet auth" - ], - "summary": "Delete an OAuth provider", - "parameters": [ - { - "description": "Provider ID", - "name": "provider_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "No Content" }, - "401": { - "description": "Unauthorized", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } @@ -30815,25 +30856,27 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } } }, - "x-hidden": true - }, - "patch": { + "x-public": true + } + }, + "/v1/platform/evaluators/{evaluator_id}": { + "get": { "security": [ { "API Key": [] @@ -30845,15 +30888,15 @@ "Bearer Auth": [] } ], - "description": "Updates an OAuth provider's configuration. Sent fields replace the stored values; absent fields are left unchanged.", + "description": "Retrieve a single evaluator by its ID.", "tags": [ - "fleet auth" + "evaluators" ], - "summary": "Update an OAuth provider", + "summary": "Get evaluator", "parameters": [ { - "description": "Provider ID", - "name": "provider_id", + "description": "Evaluator ID", + "name": "evaluator_id", "in": "path", "required": true, "schema": { @@ -30863,14 +30906,21 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/evaluators.Evaluator" + } + } + } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } @@ -30880,7 +30930,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } @@ -30890,27 +30950,25 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } } }, - "x-hidden": true - } - }, - "/v1/fleet/auth-scopes/{scope_slug}/credentials": { - "post": { + "x-public": true + }, + "delete": { "security": [ { "API Key": [] @@ -30922,39 +30980,41 @@ "Bearer Auth": [] } ], - "description": "Registers a credential (e.g. a static bearer token) under an auth scope and binds it to one or more targets such as MCP servers. The response never includes the secret token.", + "description": "Delete an evaluator. When delete_run_rules is true, all run rules referencing this evaluator are deleted first (same tenant). Associated llm_evaluators and code_evaluators rows are removed by foreign-key cascade when the evaluator row is deleted.", "tags": [ - "fleet credentials" + "evaluators" ], - "summary": "Create a credential under an auth scope", + "summary": "Delete evaluator", "parameters": [ { - "description": "Auth scope slug (currently only \\", - "name": "scope_slug", + "description": "Evaluator ID", + "name": "evaluator_id", "in": "path", "required": true, "schema": { "type": "string" } + }, + { + "description": "When true, delete all run rules for this evaluator before deleting the evaluator", + "name": "delete_run_rules", + "in": "query", + "schema": { + "type": "boolean", + "title": "Delete Run Rules" + } } ], "responses": { - "201": { - "description": "Created", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/credentials.response" - } - } - } + "204": { + "description": "No Content" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/credentials.ErrorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } @@ -30964,111 +31024,55 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/credentials.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/credentials.ErrorResponse" - } - } - } - } - }, - "x-hidden": true - } - }, - "/v1/fleet/auth-sessions": { - "post": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Initiates an OAuth flow for the caller. If the user is already authorized, returns a completed session that references an existing token. Otherwise, returns a pending session containing a verification URL the user must visit to complete authorization.", - "tags": [ - "fleet auth" - ], - "summary": "Start an authorization session", - "parameters": [], - "responses": { - "200": { - "description": "Existing token reused; no new session created.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/auth.CreateSessionResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } }, - "201": { - "description": "New pending session created; visit verification_url to complete.", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.CreateSessionResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } }, - "400": { - "description": "Bad Request", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } }, - "401": { - "description": "Unauthorized", + "409": { + "description": "Conflict", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } } }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/auth.CreateSessionRequest" - } - } - } - }, - "x-hidden": true - } - }, - "/v1/fleet/auth-sessions/{session_id}": { - "get": { + "x-public": true + }, + "patch": { "security": [ { "API Key": [] @@ -31080,29 +31084,20 @@ "Bearer Auth": [] } ], - "description": "Returns the current status of an in-flight authorization session. The optional `wait_seconds` query param (1-25, default 1) keeps the request open up to that many seconds, returning early if the session completes. Poll until status is COMPLETED.", + "description": "Update an existing evaluator's name, LLM configuration, or code configuration.", "tags": [ - "fleet auth" + "evaluators" ], - "summary": "Get an authorization session", + "summary": "Update evaluator", "parameters": [ { - "description": "Authorization session ID", - "name": "session_id", + "description": "Evaluator ID", + "name": "evaluator_id", "in": "path", "required": true, "schema": { "type": "string" } - }, - { - "description": "Long-poll window in seconds (1-25, default 1)", - "name": "wait_seconds", - "in": "query", - "schema": { - "type": "integer", - "title": "Wait Seconds" - } } ], "responses": { @@ -31111,7 +31106,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.GetSessionResponse" + "$ref": "#/components/schemas/evaluators.UpdateEvaluatorResponse" } } } @@ -31121,7 +31116,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } @@ -31131,7 +31126,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } @@ -31141,26 +31146,36 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/evaluators.ErrorResponse" } } } } }, - "x-hidden": true + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/evaluators.UpdateEvaluatorRequest" + } + } + } + } } }, - "/v1/fleet/auth-tokens": { + "/v1/platform/features": { "get": { "security": [ { @@ -31173,96 +31188,62 @@ "Bearer Auth": [] } ], - "description": "Lists the active OAuth tokens belonging to the caller. Optionally filter by provider or agent. Accepts page_size and cursor for forward compatibility; pagination is not yet enforced and all matching tokens are returned in one page.", + "description": "Returns a consolidated view of default models and disabled models per feature for the workspace.", "tags": [ - "fleet auth" - ], - "summary": "List your connection tokens", - "parameters": [ - { - "description": "Filter by provider ID", - "name": "provider_id", - "in": "query", - "schema": { - "type": "string", - "title": "Provider Id" - } - }, - { - "description": "Filter to default (true) or secondary (false) tokens. Omit to return both.", - "name": "is_default", - "in": "query", - "schema": { - "type": "boolean", - "title": "Is Default" - } - }, - { - "description": "Items per page (1-100, default 20). Currently advisory; all matching tokens are returned.", - "name": "page_size", - "in": "query", - "schema": { - "type": "integer", - "title": "Page Size" - } - }, - { - "description": "Opaque pagination cursor. Currently accepted but ignored.", - "name": "cursor", - "in": "query", - "schema": { - "type": "string", - "title": "Cursor" - } - } + "features" ], + "summary": "List feature configurations", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.ListTokensResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/features.FeatureConfig" + } } } } }, - "400": { - "description": "Bad Request", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/features.ErrorResponse" } } } }, - "401": { - "description": "Unauthorized", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/features.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/features.ErrorResponse" } } } } }, - "x-hidden": true + "x-public": true, + "parameters": [] } }, - "/v1/fleet/auth-tokens/{token_id}": { - "delete": { + "/v1/platform/features/{feature}/default-model": { + "put": { "security": [ { "API Key": [] @@ -31274,15 +31255,15 @@ "Bearer Auth": [] } ], - "description": "Revokes a single connection token by ID. The user is disconnected from the corresponding service.", + "description": "Sets or replaces the default model for a feature in the workspace.", "tags": [ - "fleet auth" + "features" ], - "summary": "Revoke a connection token", + "summary": "Set default model for a feature", "parameters": [ { - "description": "Token ID", - "name": "token_id", + "description": "Feature name", + "name": "feature", "in": "path", "required": true, "schema": { @@ -31294,40 +31275,60 @@ "204": { "description": "No Content" }, - "401": { - "description": "Unauthorized", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/features.ErrorResponse" } } } }, - "404": { - "description": "Not Found", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/features.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/features.ErrorResponse" } } } - } - }, - "x-hidden": true + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/features.ErrorResponse" + } + } + } + } + }, + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/features.UpsertDefaultModelRequest" + } + } + } + } }, - "patch": { + "delete": { "security": [ { "API Key": [] @@ -31339,15 +31340,15 @@ "Bearer Auth": [] } ], - "description": "Updates a token's metadata such as label or default flag.", + "description": "Removes the default model for a feature in the workspace.", "tags": [ - "fleet auth" + "features" ], - "summary": "Update a connection token", + "summary": "Delete default model for a feature", "parameters": [ { - "description": "Token ID", - "name": "token_id", + "description": "Feature name", + "name": "feature", "in": "path", "required": true, "schema": { @@ -31356,55 +31357,45 @@ } ], "responses": { - "200": { - "description": "OK" - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/auth.errorResponse" - } - } - } + "204": { + "description": "No Content" }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/features.ErrorResponse" } } } }, - "404": { - "description": "Not Found", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/features.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/auth.errorResponse" + "$ref": "#/components/schemas/features.ErrorResponse" } } } } }, - "x-hidden": true + "x-public": true } }, - "/v1/fleet/integrations": { - "get": { + "/v1/platform/features/{feature}/disabled-models": { + "put": { "security": [ { "API Key": [] @@ -31416,57 +31407,32 @@ "Bearer Auth": [] } ], - "description": "Returns integrations available to the workspace.", + "description": "Adds a model to the disabled list for a feature in the workspace.", "tags": [ - "fleet integrations" + "features" ], - "summary": "List integrations", + "summary": "Disable a model for a feature", "parameters": [ { - "description": "Filter by source (e.g. langchain, custom)", - "name": "source", - "in": "query", - "schema": { - "type": "string", - "title": "Source" - } - }, - { - "description": "Items per page (default 20, max 100)", - "name": "page_size", - "in": "query", - "schema": { - "type": "integer", - "title": "Page Size" - } - }, - { - "description": "Opaque pagination cursor", - "name": "cursor", - "in": "query", + "description": "Feature name", + "name": "feature", + "in": "path", + "required": true, "schema": { - "type": "string", - "title": "Cursor" + "type": "string" } } ], "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/integrations.ListResponse" - } - } - } + "204": { + "description": "No Content" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.ErrorResponse" + "$ref": "#/components/schemas/features.ErrorResponse" } } } @@ -31476,7 +31442,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.ErrorResponse" + "$ref": "#/components/schemas/features.ErrorResponse" } } } @@ -31486,89 +31452,37 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.ErrorResponse" - } - } - } - } - }, - "x-hidden": true - }, - "post": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Registers a new custom integration. Type is forced to CUSTOM.", - "tags": [ - "fleet integrations" - ], - "summary": "Create a custom integration", - "parameters": [], - "responses": { - "201": { - "description": "Created", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/integrations.Integration" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/integrations.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/integrations.ErrorResponse" + "$ref": "#/components/schemas/features.ErrorResponse" } } } }, - "403": { - "description": "Forbidden", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.ErrorResponse" + "$ref": "#/components/schemas/features.ErrorResponse" } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.CreateRequest" + "$ref": "#/components/schemas/features.DisableModelRequest" } } } - }, - "x-hidden": true + } } }, - "/v1/fleet/integrations/{id}": { - "get": { + "/v1/platform/features/{feature}/disabled-models/{model}": { + "delete": { "security": [ { "API Key": [] @@ -31580,14 +31494,24 @@ "Bearer Auth": [] } ], + "description": "Removes a model from the disabled list for a feature in the workspace.", "tags": [ - "fleet integrations" + "features" ], - "summary": "Get an integration", + "summary": "Re-enable a disabled model for a feature", "parameters": [ { - "description": "Integration id", - "name": "id", + "description": "Feature name", + "name": "feature", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Model name (URL-encoded)", + "name": "model", "in": "path", "required": true, "schema": { @@ -31596,12 +31520,15 @@ } ], "responses": { - "200": { - "description": "OK", + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.Integration" + "$ref": "#/components/schemas/features.ErrorResponse" } } } @@ -31611,7 +31538,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.ErrorResponse" + "$ref": "#/components/schemas/features.ErrorResponse" } } } @@ -31621,218 +31548,259 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.ErrorResponse" + "$ref": "#/components/schemas/features.ErrorResponse" } } } }, - "404": { - "description": "Not Found", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.ErrorResponse" + "$ref": "#/components/schemas/features.ErrorResponse" } } } } }, - "x-hidden": true - }, - "delete": { + "x-public": true + } + }, + "/v1/platform/gateway-policies": { + "get": { "security": [ { "API Key": [] }, - { - "Tenant ID": [] - }, { "Bearer Auth": [] } ], - "description": "Idempotent. Returns 204 whether or not the integration existed.", + "description": "Returns every gateway policy in the current organization.\nThe response includes both admin-created policies and\nruntime-materialized children of `default_spend_cap`\npolicies (children carry `parent_policy_id`).\n\n**Spend tracking:** each spend-cap policy carries\n`current_spend_usd` — the spend accumulated in the policy's\nactive window.\n\n**Filters** (all optional):\n- `policy_type` — `spend_cap`, `default_spend_cap`, `guard`, or `route_config`\n- `subject_matcher_key` + `subject_matcher_value` — narrow to\npolicies whose subject_matchers contain `{key, value}`\n\nFor batch lookups by a set of subject values (e.g. many\nrun_rule_ids at once), use POST\n`/v1/platform/gateway-policies/search`; it accepts the\nvalues in a JSON body and avoids the URL-length ceiling\nthat a repeated query param would hit at scale.", "tags": [ - "fleet integrations" + "gateway-policies" ], - "summary": "Delete a custom integration", + "summary": "List gateway policies", "parameters": [ { - "description": "Integration id", - "name": "id", - "in": "path", - "required": true, + "description": "Filter by policy_type", + "name": "policy_type", + "in": "query", "schema": { - "type": "string" + "type": "string", + "title": "Policy Type" + } + }, + { + "description": "Filter by subject matcher key", + "name": "subject_matcher_key", + "in": "query", + "schema": { + "type": "string", + "title": "Subject Matcher Key" + } + }, + { + "description": "Filter by subject matcher value (paired with subject_matcher_key)", + "name": "subject_matcher_value", + "in": "query", + "schema": { + "type": "string", + "title": "Subject Matcher Value" } } ], "responses": { - "204": { - "description": "No Content" + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/gateway_policies.GatewayPolicyRecord" + } + } + } + } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.ErrorResponse" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } }, "403": { - "description": "Forbidden", + "description": "LLM Gateway not enabled, or caller lacks OrganizationRead", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/gateway_policies.errorResponse" + } + } + } + }, + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.ErrorResponse" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } } }, - "x-hidden": true + "x-public": true }, - "patch": { + "post": { "security": [ { "API Key": [] }, - { - "Tenant ID": [] - }, { "Bearer Auth": [] } ], - "description": "Updates mutable fields. URL is immutable.", + "description": "Creates a gateway policy for the calling organization.\n\n**policy_type** is one of `spend_cap`, `default_spend_cap`,\n`guard`, or `route_config`. The shape of `config` depends on policy_type:\n- `spend_cap` / `default_spend_cap`:\n`{\"window\": \"hourly\"|\"daily\"|\"weekly\"|\"monthly\", \"limit_usd\": }`\n- `guard`:\n`{\"version\": 1, \"detect\": {\"pii\": , \"secrets\": }, \"timeout_seconds\": , \"timeout_action\": \"allow\"|\"block\"}`\n`timeout_seconds` (optional, 0.1–30) caps guard pipeline execution time; defaults to 2s. `timeout_action` defaults to `allow`.\n- `route_config`:\n`{\"strategy\": \"priority_fallback\", \"triggers\": {\"status_codes\": []}, \"fallbacks\": [{\"model_configs\": [{\"model_config_id\": \"\"}]}]}`\n`triggers` is required, with no default: `status_codes` must be a non-empty list (include 502 and 504 for upstream transport failures). `fallbacks` contains an entry whose `model_configs` are tried in priority order (1–5). `subject_matchers` must be a single `workspace_id` entry.\n\n**subject_matchers** is a list of `{key, value}` pairs.\n`key` is one of `organization_id`, `workspace_id`, `user_id`,\n`api_key_id`, or `run_rule_id`. Multiple matchers AND together. A\n`default_spend_cap` uses `{key, value: \"\"}` so the runtime\nmaterializes a per-subject child for every distinct subject\nof that kind it sees in request metadata.\n\n**action** is currently always `block`. Spend caps reject the\nrequest with 402 when the limit is hit; guard policies redact\nmatched content in-place before forwarding upstream.\n\n**Upsert by matchers:** for `spend_cap`, `default_spend_cap`, and\n`guard`, if a policy with the same `subject_matchers` already exists\nin this organization, the existing policy is updated in place instead\nof a duplicate being created. `id` is preserved. `route_config` does\nnot upsert by matchers — name must be unique per organization (409 on\nconflict). Returns 201 either way.", "tags": [ - "fleet integrations" - ], - "summary": "Update a custom integration", - "parameters": [ - { - "description": "Integration id", - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } + "gateway-policies" ], + "summary": "Create a gateway policy", + "parameters": [], "responses": { - "200": { - "description": "OK", + "201": { + "description": "Created", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.Integration" + "$ref": "#/components/schemas/gateway_policies.GatewayPolicyRecord" } } } }, "400": { - "description": "Bad Request", + "description": "validation error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.ErrorResponse" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } }, "401": { - "description": "Unauthorized", + "description": "missing or invalid auth", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.ErrorResponse" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } }, "403": { - "description": "Forbidden", + "description": "LLM Gateway not enabled for the organization, or caller lacks OrganizationManage", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.ErrorResponse" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } }, - "404": { - "description": "Not Found", + "409": { + "description": "policy name conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/gateway_policies.errorResponse" + } + } + } + }, + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.ErrorResponse" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } } }, + "x-codeSamples": [ + { + "label": "spend_cap", + "lang": "json", + "source": "{\n \"name\": \"monthly-cap\",\n \"policy_type\": \"spend_cap\",\n \"action\": \"block\",\n \"subject_matchers\": [{\"key\":\"organization_id\",\"value\":\"\"}],\n \"config\": {\"window\": \"monthly\", \"limit_usd\": 100}\n}" + }, + { + "label": "guard", + "lang": "json", + "source": "{\n \"name\": \"redact-pii\",\n \"policy_type\": \"guard\",\n \"action\": \"block\",\n \"subject_matchers\": [{\"key\":\"organization_id\",\"value\":\"\"}],\n \"config\": {\"version\": 1, \"detect\": {\"pii\": true, \"secrets\": true}, \"timeout_seconds\": 3}\n}" + }, + { + "label": "route_config", + "lang": "json", + "source": "{\n \"name\": \"gpt-fallback\",\n \"policy_type\": \"route_config\",\n \"action\": \"block\",\n \"subject_matchers\": [{\"key\": \"workspace_id\", \"value\": \"\"}],\n \"config\": {\"strategy\": \"priority_fallback\", \"triggers\": {\"status_codes\": [429, 500, 502, 503, 504]}, \"fallbacks\": [{\"model_configs\": [{\"model_config_id\": \"11111111-1111-1111-1111-111111111111\"}]}]}\n}" + } + ], + "x-public": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.UpdateRequest" + "$ref": "#/components/schemas/gateway_policies.CreateGatewayPolicyRequest" } } } - }, - "x-hidden": true + } } }, - "/v1/fleet/integrations/{id}/auth-methods": { - "put": { + "/v1/platform/gateway-policies/search": { + "post": { "security": [ { "API Key": [] }, - { - "Tenant ID": [] - }, { "Bearer Auth": [] } ], - "description": "Replaces the integration's full list of supported auth methods.", + "description": "Batch variant of GET /v1/platform/gateway-policies for\nfetching policies that match a set of subject_matcher_values\nunder one subject_matcher_key. Accepts the values in a JSON\nbody so callers can include hundreds of subject ids without\nbumping into per-server URL-length limits.\n\nVisibility, response shape, and matcher semantics are\nidentical to the GET list. With `subject_matcher_values`\nempty (or omitted) this returns the same result as GET\nwith only `policy_type` set.", "tags": [ - "fleet integrations" - ], - "summary": "Replace integration auth methods", - "parameters": [ - { - "description": "Integration id", - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } + "gateway-policies" ], + "summary": "Search gateway policies by subject value set", + "parameters": [], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.Integration" + "type": "array", + "items": { + "$ref": "#/components/schemas/gateway_policies.GatewayPolicyRecord" + } } } } }, "400": { - "description": "Bad Request", + "description": "validation error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.ErrorResponse" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } @@ -31842,70 +31810,69 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.ErrorResponse" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } }, "403": { - "description": "Forbidden", + "description": "LLM Gateway not enabled, or caller lacks OrganizationRead", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.ErrorResponse" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } }, - "404": { - "description": "Not Found", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.ErrorResponse" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/integrations.ReplaceAuthMethodsRequest" + "$ref": "#/components/schemas/gateway_policies.SearchGatewayPoliciesRequest" } } } - }, - "x-hidden": true + } } }, - "/v1/fleet/mcp-servers": { + "/v1/platform/gateway-policies/{id}": { "get": { "security": [ { "API Key": [] }, - { - "Tenant ID": [] - }, { "Bearer Auth": [] } ], - "description": "Returns MCP servers visible to the caller after ABAC filtering. Service-key callers may pass X-Ls-User-Id to resolve per-user OAuth providers.", + "description": "Returns a single gateway policy by id. Cross-org access is\nrejected with 404\n\n**Spend tracking:** spend-cap policies include\n`current_spend_usd` for the active window so callers can\nread per-policy cost without hitting a separate endpoint.\nGuard policies leave it null.", "tags": [ - "fleet mcp" + "gateway-policies" ], - "summary": "List MCP servers", + "summary": "Get a gateway policy", "parameters": [ { - "description": "User UUID for per-user OAuth resolution (service keys)", - "name": "X-Ls-User-Id", - "in": "header", + "description": "Policy ID", + "name": "id", + "in": "path", + "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], @@ -31915,20 +31882,17 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.McpServer" - } + "$ref": "#/components/schemas/gateway_policies.GatewayPolicyRecord" } } } }, "400": { - "description": "Bad Request", + "description": "validation error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } @@ -31938,79 +31902,80 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } }, "403": { - "description": "Forbidden", + "description": "LLM Gateway not enabled, or caller lacks OrganizationRead", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } }, - "500": { - "description": "Internal Server Error", + "404": { + "description": "policy not found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } }, - "503": { - "description": "Service Unavailable", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } } }, - "x-hidden": true + "x-public": true }, - "post": { + "delete": { "security": [ { "API Key": [] }, - { - "Tenant ID": [] - }, { "Bearer Auth": [] } ], - "description": "Registers a new MCP server configuration for the workspace.", + "description": "Deletes a gateway policy. Subsequent reads return 404.\n\n**default_spend_cap cascade:** deleting a `default_spend_cap`\nalso deletes every child policy materialized from it.", "tags": [ - "fleet mcp" + "gateway-policies" ], - "summary": "Create MCP server", - "parameters": [], - "responses": { - "201": { - "description": "Created", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.McpServer" - } - } + "summary": "Delete a gateway policy", + "parameters": [ + { + "description": "Policy ID", + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" } + } + ], + "responses": { + "204": { + "description": "No Content" }, "400": { - "description": "Bad Request", + "description": "validation error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } @@ -32020,27 +31985,27 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } }, "403": { - "description": "Forbidden", + "description": "LLM Gateway not enabled, or caller lacks OrganizationManage", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } }, - "409": { - "description": "Conflict", + "404": { + "description": "policy not found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } @@ -32050,61 +32015,37 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" - } - } - } - }, - "503": { - "description": "Service Unavailable", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } } }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.CreateMcpServerPayload" - } - } - } - }, - "x-hidden": true - } - }, - "/v1/fleet/mcp-servers/{mcp_server_id}": { - "get": { + "x-public": true + }, + "patch": { "security": [ { "API Key": [] }, - { - "Tenant ID": [] - }, { "Bearer Auth": [] } ], - "description": "Returns a single MCP server by ID.", + "description": "Partially updates a gateway policy. Only fields present in\nthe request body are applied; absent fields are left\nunchanged. `policy_type` is immutable — to change a\npolicy's type, delete it and create a new one.\n\n**config** if supplied must match the policy's type:\n- spend-cap: `{\"window\": ..., \"limit_usd\": ...}`\n- guard: `{\"version\": 1, \"detect\": {...}, \"timeout_seconds\": , \"timeout_action\": \"allow\"|\"block\"}`\nMismatched shapes are rejected with 400.\n\n**default_spend_cap cascade:** editing a `default_spend_cap`\nupdates the config/action/enabled/priority on every\nattached child policy so the template stays the source of\ntruth across rollouts.", "tags": [ - "fleet mcp" + "gateway-policies" ], - "summary": "Get MCP server", + "summary": "Update a gateway policy", "parameters": [ { - "description": "MCP server ID", - "name": "mcp_server_id", + "description": "Policy ID", + "name": "id", "in": "path", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], @@ -32114,17 +32055,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.McpServer" + "$ref": "#/components/schemas/gateway_policies.GatewayPolicyRecord" } } } }, "400": { - "description": "Bad Request", + "description": "validation error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } @@ -32134,55 +32075,79 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } }, "403": { - "description": "Forbidden", + "description": "LLM Gateway not enabled, or caller lacks OrganizationManage", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } }, "404": { - "description": "Not Found", + "description": "policy not found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } }, - "500": { - "description": "Internal Server Error", + "409": { + "description": "matcher edit collides with another policy in the same family", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } }, - "503": { - "description": "Service Unavailable", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/gateway_policies.errorResponse" } } } } }, - "x-hidden": true - }, - "delete": { + "x-codeSamples": [ + { + "label": "spend_cap", + "lang": "json", + "source": "{\n \"config\": {\"window\": \"monthly\", \"limit_usd\": 200},\n \"enabled\": false\n}" + }, + { + "label": "guard", + "lang": "json", + "source": "{\n \"config\": {\"version\": 1, \"detect\": {\"pii\": true, \"secrets\": true}, \"timeout_seconds\": 5},\n \"enabled\": true\n}" + } + ], + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/gateway_policies.UpdateGatewayPolicyRequest" + } + } + } + } + } + }, + "/v1/platform/hub/repos/{owner}/{repo}/directories": { + "get": { "security": [ { "API Key": [] @@ -32194,32 +32159,60 @@ "Bearer Auth": [] } ], - "description": "Deletes an MCP server configuration.", + "description": "Resolves the flattened file tree for an agent or skill repository at a specific commit, tag, or latest.", "tags": [ - "fleet mcp" + "directories" ], - "summary": "Delete MCP server", + "summary": "Get directory contents", "parameters": [ { - "description": "MCP server ID", - "name": "mcp_server_id", + "description": "Repository owner handle or '-' for current tenant", + "name": "owner", "in": "path", "required": true, "schema": { "type": "string" } - } - ], + }, + { + "description": "Repository handle", + "name": "repo", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Commit hash/tag to resolve (defaults to latest)", + "name": "commit", + "in": "query", + "schema": { + "type": "string", + "title": "Commit" + } + } + ], "responses": { - "204": { - "description": "No Content" + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/directories.GetDirectoryResponse" + } + } + } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } @@ -32229,7 +32222,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } @@ -32239,7 +32235,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } @@ -32249,7 +32248,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } @@ -32259,25 +32261,18 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" - } - } - } - }, - "503": { - "description": "Service Unavailable", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } } }, - "x-hidden": true + "x-public": true }, - "patch": { + "delete": { "security": [ { "API Key": [] @@ -32289,15 +32284,24 @@ "Bearer Auth": [] } ], - "description": "Partially updates an MCP server. Tool list cache is invalidated on success.", + "description": "Deletes an agent or skill repository and its owned child file repositories.", "tags": [ - "fleet mcp" + "directories" ], - "summary": "Update MCP server", + "summary": "Delete directory repository", "parameters": [ { - "description": "MCP server ID", - "name": "mcp_server_id", + "description": "Repository owner handle or '-' for current tenant", + "name": "owner", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Repository handle", + "name": "repo", "in": "path", "required": true, "schema": { @@ -32306,22 +32310,18 @@ } ], "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.McpServer" - } - } - } + "204": { + "description": "No Content" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } @@ -32331,7 +32331,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } @@ -32341,7 +32344,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } @@ -32351,7 +32357,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } @@ -32361,36 +32370,19 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" - } - } - } - }, - "503": { - "description": "Service Unavailable", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } } }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.UpdateMcpServerPayload" - } - } - } - }, - "x-hidden": true + "x-public": true } }, - "/v1/fleet/mcp-servers/{mcp_server_id}/oauth-provider": { + "/v1/platform/hub/repos/{owner}/{repo}/directories/commits": { "post": { "security": [ { @@ -32403,15 +32395,24 @@ "Bearer Auth": [] } ], - "description": "Discovers and registers an OAuth provider for a user against an MCP server configured with per-user dynamic client mode. Idempotent when a mapping already exists.", + "description": "Creates a new directory commit for an agent or skill repository by applying file/link create, update, and delete operations.", "tags": [ - "fleet mcp" + "directories" ], - "summary": "Register per-user MCP OAuth provider", + "summary": "Create directory commit", "parameters": [ { - "description": "MCP server ID", - "name": "mcp_server_id", + "description": "Repository owner handle or '-' for current tenant", + "name": "owner", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Repository handle", + "name": "repo", "in": "path", "required": true, "schema": { @@ -32425,7 +32426,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.RegisterOAuthProviderResponse" + "$ref": "#/components/schemas/directories.CommitResponse" } } } @@ -32435,7 +32436,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } @@ -32445,7 +32449,23 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } } } } @@ -32455,46 +32475,55 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } }, - "500": { - "description": "Internal Server Error", + "409": { + "description": "Conflict", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } }, - "503": { - "description": "Service Unavailable", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.RegisterOAuthProviderPayload" + "$ref": "#/components/schemas/directories.CreateDirectoryCommitRequest" } } } - }, - "x-hidden": true + } } }, - "/v1/fleet/mcp/tools": { + "/v1/platform/issues": { "get": { "security": [ { @@ -32507,47 +32536,107 @@ "Bearer Auth": [] } ], - "description": "Returns tools from a remote MCP server. Serves cached results when fresh, otherwise fetches from the remote server and caches the response.", + "description": "**Beta:** This endpoint is in active development and may change without notice.\n\nReturns issues for the authenticated tenant, optionally filtered\nby session, status, severity, tag, or last modified time.", "tags": [ - "fleet mcp" + "issues" ], - "summary": "List MCP tools", + "summary": "[Beta] List issues", "parameters": [ { - "description": "MCP server URL to fetch tools from", - "name": "url", + "description": "Filter by session ID (UUID)", + "name": "session_id", "in": "query", - "required": true, "schema": { "type": "string", - "title": "Url" + "title": "Session Id" } }, { - "description": "OAuth provider ID for token-based auth", - "name": "oauth_provider_id", + "description": "Filter by session name (exact match)", + "name": "session_name", "in": "query", "schema": { "type": "string", - "title": "Oauth Provider Id" + "title": "Session Name" } }, { - "description": "Skip cache and fetch fresh tools", - "name": "force_refresh", + "description": "Filter by status", + "name": "status", "in": "query", "schema": { - "type": "boolean", - "title": "Force Refresh" + "enum": [ + "open", + "completed", + "ignored" + ], + "type": "string", + "title": "Status" } }, { - "description": "User ID override (service-key callers)", - "name": "ls_user_id", + "description": "Filter by severity", + "name": "severity", + "in": "query", + "schema": { + "enum": [ + 0, + 1, + 2, + 3 + ], + "type": "integer", + "title": "Severity" + } + }, + { + "description": "Filter by tag (exact match)", + "name": "tag", "in": "query", "schema": { "type": "string", - "title": "Ls User Id" + "title": "Tag" + } + }, + { + "description": "Return only issues updated at or after this RFC3339 timestamp", + "name": "updated_at", + "in": "query", + "schema": { + "type": "string", + "title": "Updated At" + } + }, + { + "description": "Sort field", + "name": "sort_by", + "in": "query", + "schema": { + "enum": [ + "created_at", + "updated_at", + "severity" + ], + "type": "string", + "title": "Sort By" + } + }, + { + "description": "Page size (positive integer; defaults to 50, capped at 500)", + "name": "limit", + "in": "query", + "schema": { + "type": "integer", + "title": "Limit" + } + }, + { + "description": "Page offset (non-negative integer)", + "name": "offset", + "in": "query", + "schema": { + "type": "integer", + "title": "Offset" } } ], @@ -32557,7 +32646,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcptools.ListToolsResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/tracer_session_issues.Issue" + } } } } @@ -32567,7 +32659,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcptools.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" } } } @@ -32577,7 +32669,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcptools.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" } } } @@ -32587,36 +32679,26 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcptools.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcptools.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcptools.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" } } } } }, - "x-hidden": true + "x-public": true } }, - "/v1/fleet/models": { + "/v1/platform/issues-agent": { "get": { "security": [ { @@ -32629,38 +32711,31 @@ "Bearer Auth": [] } ], - "description": "Returns models available for Fleet agent configuration.", + "description": "**Beta:** This endpoint is in active development and may change without notice.\n\nReturns every issues agent config configured for the authenticated tenant.", "tags": [ - "fleet" - ], - "summary": "List Fleet models", - "parameters": [ - { - "description": "Include the served Fleet default model group.", - "name": "include_served_default", - "in": "query", - "schema": { - "type": "boolean", - "title": "Include Served Default" - } - }, - { - "description": "Include optional OSS model group.", - "name": "include_oss_models", - "in": "query", - "schema": { - "type": "boolean", - "title": "Include Oss Models" - } - } + "issues-agent" ], + "summary": "[Beta] List issues agent configs", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/models.ListModelsResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/tracer_session_issues_agent.IssuesAgent" + } + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } @@ -32670,7 +32745,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/models.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } @@ -32680,7 +32755,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/models.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } @@ -32690,16 +32765,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/models.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } } }, - "x-hidden": true + "x-public": true, + "parameters": [] } }, - "/v1/fleet/skills": { + "/v1/platform/issues/{id}": { "get": { "security": [ { @@ -32712,28 +32788,19 @@ "Bearer Auth": [] } ], - "description": "Returns the skills in the caller's workspace, paginated.", + "description": "**Beta:** This endpoint is in active development and may change without notice.\n\nReturns one issue for the authenticated tenant.", "tags": [ - "skills" + "issues" ], - "summary": "List skills", + "summary": "[Beta] Get issue", "parameters": [ { - "description": "Items per page (default 20, max 100)", - "name": "page_size", - "in": "query", - "schema": { - "type": "integer", - "title": "Page Size" - } - }, - { - "description": "Opaque pagination cursor", - "name": "cursor", - "in": "query", + "description": "Issue ID (UUID)", + "name": "id", + "in": "path", + "required": true, "schema": { - "type": "string", - "title": "Cursor" + "type": "string" } } ], @@ -32743,7 +32810,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.ListSkillsResponse" + "$ref": "#/components/schemas/tracer_session_issues.Issue" } } } @@ -32753,7 +32820,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" } } } @@ -32763,7 +32830,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" } } } @@ -32773,7 +32840,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" } } } @@ -32783,14 +32860,16 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" } } } } }, - "x-hidden": true - }, + "x-public": true + } + }, + "/v1/platform/issues/{id}/fix-verdict": { "post": { "security": [ { @@ -32803,19 +32882,29 @@ "Bearer Auth": [] } ], - "description": "Creates a workspace skill with the supplied file tree.\nSkills support file entries only — linked agent/skill entries\nare rejected.\n\nCleanup is best-effort: if the initial commit fails the empty\nrepo is deleted, but a transport failure during rollback can\nleave an orphan repo with no commits. Subsequent creates with\nthe same name will then 409; delete the orphan and retry.", + "description": "Records whether a fix resolved the issue when replayed against its preview deployment.", "tags": [ - "skills" + "issues" + ], + "summary": "Record a fix-verification verdict", + "parameters": [ + { + "description": "Issue ID", + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Create a skill", - "parameters": [], "responses": { - "201": { - "description": "Created", + "200": { + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.Skill" + "$ref": "#/components/schemas/tracer_session_issues.FixVerification" } } } @@ -32825,67 +32914,101 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" } } } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/skills.ErrorResponse" - } + } + }, + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tracer_session_issues.RecordFixVerdictRequest" } } + } + } + } + }, + "/v1/platform/issues/{id}/start-preview": { + "post": { + "security": [ + { + "API Key": [] }, - "409": { - "description": "Conflict", + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "description": "Opens/reuses the fix PR, applies the preview label, and schedules the poll that resumes the fix run when the preview is up.", + "tags": [ + "issues" + ], + "summary": "Start preview-deploy verification for a fix", + "parameters": [ + { + "description": "Issue ID", + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues.StartPreviewResponse" } } } }, - "422": { - "description": "Unprocessable Entity", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" } } } }, - "500": { - "description": "Internal Server Error", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.CreateSkillRequest" + "$ref": "#/components/schemas/tracer_session_issues.StartPreviewRequest" } } } - }, - "x-hidden": true + } } }, - "/v1/fleet/skills/{skillID}": { - "get": { + "/v1/platform/issues/{id}/views": { + "post": { "security": [ { "API Key": [] @@ -32897,15 +33020,15 @@ "Bearer Auth": [] } ], - "description": "Returns the specified skill, including its full file tree.", + "description": "**Beta:** Records that the current user opened this issue.\nIdempotent. Drives the Engine tab unread-issues badge.", "tags": [ - "skills" + "issues" ], - "summary": "Get a skill", + "summary": "[Beta] Mark issue viewed", "parameters": [ { - "description": "Skill ID", - "name": "skillID", + "description": "Issue ID (UUID)", + "name": "id", "in": "path", "required": true, "schema": { @@ -32914,12 +33037,15 @@ } ], "responses": { - "200": { - "description": "OK", + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.Skill" + "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" } } } @@ -32929,7 +33055,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" } } } @@ -32939,7 +33065,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" } } } @@ -32949,7 +33075,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" } } } @@ -32959,15 +33085,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" } } } } }, - "x-hidden": true - }, - "delete": { + "x-public": true + } + }, + "/v1/platform/mcp-vendors": { + "get": { "security": [ { "API Key": [] @@ -32979,60 +33107,49 @@ "Bearer Auth": [] } ], - "description": "Deletes the skill and all of its files. Idempotent: deleting an\nalready-deleted skill returns 204.", + "description": "Returns the catalog of available MCP vendors.", "tags": [ - "skills" - ], - "summary": "Delete a skill", - "parameters": [ - { - "description": "Skill ID", - "name": "skillID", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } + "mcp_vendors" ], + "summary": "List MCP vendors", "responses": { - "204": { - "description": "No Content" - }, - "401": { - "description": "Unauthorized", + "200": { + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ListMcpVendorsResponse" } } } }, - "403": { - "description": "Forbidden", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } }, - "500": { - "description": "Internal Server Error", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } } }, - "x-hidden": true - }, - "patch": { + "x-public": true, + "parameters": [] + } + }, + "/v1/platform/mcp-vendors/{vendor_slug}": { + "get": { "security": [ { "API Key": [] @@ -33044,16 +33161,16 @@ "Bearer Auth": [] } ], - "description": "Applies a sparse patch to the skill's file tree. Each entry in\n`files` is keyed by relative path: a non-null value upserts\nthat file, an explicit null deletes it, and absent paths are\nleft unchanged. SKILL.md cannot be deleted via this endpoint —\nuse DELETE on the skill instead. Skills support file entries\nonly — linked agent/skill entries are rejected. The commit is\natomic: on validation failure no changes are applied.", + "description": "Returns vendor metadata and current settings.", "tags": [ - "skills" + "mcp_vendors" ], - "summary": "Update a skill", + "summary": "Get MCP vendor", "parameters": [ { - "description": "Skill ID", - "name": "skillID", - "in": "path", + "description": "Vendor slug (e.g. arcade)", + "name": "vendor_slug", + "in": "path", "required": true, "schema": { "type": "string" @@ -33066,17 +33183,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.Skill" + "$ref": "#/components/schemas/mcp_vendors.GetMcpVendorResponse" } } } }, - "400": { - "description": "Bad Request", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } @@ -33086,7 +33203,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } @@ -33096,47 +33213,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/skills.ErrorResponse" - } - } - } - }, - "422": { - "description": "Unprocessable Entity", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/skills.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/skills.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } } }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/skills.UpdateSkillRequest" - } - } - } - }, - "x-hidden": true + "x-public": true } }, - "/v1/fleet/threads": { - "post": { + "/v1/platform/mcp-vendors/{vendor_slug}/account": { + "get": { "security": [ { "API Key": [] @@ -33148,19 +33235,29 @@ "Bearer Auth": [] } ], - "description": "Create a thread, optionally bound to an agent. Subsequent runs are started on it via `POST /v1/fleet/threads/{thread_id}/runs/stream`.", + "description": "Resolves OAuth token and returns the vendor's account info.", "tags": [ - "fleet threads" + "mcp_vendors" + ], + "summary": "Get vendor account", + "parameters": [ + { + "description": "Vendor slug (e.g. arcade)", + "name": "vendor_slug", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Create a thread", - "parameters": [], "responses": { - "201": { - "description": "Created", + "200": { + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.Thread" + "$ref": "#/components/schemas/mcp_vendors.ArcadeAccountResponseList" } } } @@ -33170,7 +33267,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } @@ -33180,7 +33277,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } @@ -33190,17 +33287,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } }, - "409": { - "description": "Conflict", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } @@ -33210,27 +33307,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } } }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/threads.CreateThreadRequest" - } - } - } - }, - "x-hidden": true + "x-public": true } }, - "/v1/fleet/threads/bulk-modify": { - "post": { + "/v1/platform/mcp-vendors/{vendor_slug}/mcp-servers": { + "get": { "security": [ { "API Key": [] @@ -33242,19 +33329,47 @@ "Bearer Auth": [] } ], - "description": "Applies one thread update payload to multiple threads in a single call. `data` uses the same shape as the single-thread update payload. The request may include at most 50 thread IDs. Returns one result per thread in the same order as `thread_ids`; the overall response is 200 even when individual threads fail.", + "description": "Returns the MCP gateways from the vendor for the workspace's configured org/project.", "tags": [ - "fleet threads" + "mcp_vendors" + ], + "summary": "List MCP servers for a vendor", + "parameters": [ + { + "description": "Vendor slug (e.g. arcade)", + "name": "vendor_slug", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Max items to return (default 100)", + "name": "limit", + "in": "query", + "schema": { + "type": "integer", + "title": "Limit" + } + }, + { + "description": "Number of items to skip (default 0)", + "name": "offset", + "in": "query", + "schema": { + "type": "integer", + "title": "Offset" + } + } ], - "summary": "Bulk update threads", - "parameters": [], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.BulkUpdateThreadsResponse" + "$ref": "#/components/schemas/mcp_vendors.ListMcpGatewaysResponse" } } } @@ -33264,7 +33379,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } @@ -33274,7 +33389,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } @@ -33284,36 +33399,36 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/threads.BulkUpdateThreadsRequest" + }, + "502": { + "description": "Bad Gateway", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" + } } } } }, - "x-hidden": true + "x-public": true } }, - "/v1/fleet/threads/count": { + "/v1/platform/mcp-vendors/{vendor_slug}/settings": { "get": { "security": [ { @@ -33326,20 +33441,19 @@ "Bearer Auth": [] } ], - "description": "Returns the caller's inbox `attention_count`: the number of threads needing user action — unread idle threads (`metadata.read_status=false`) plus interrupted plus errored. Scoped to deep-agent threads (`graph_id=deep_agent`); test-run threads (`options.test_run=true`) are always excluded.", + "description": "Returns the current vendor-specific settings.", "tags": [ - "internal" + "mcp_vendors" ], - "summary": "Inbox attention count", + "summary": "Get vendor settings", "parameters": [ { - "description": "Optional agent UUID to scope all buckets to a single agent", - "name": "agent_id", - "in": "query", + "description": "Vendor slug (e.g. arcade)", + "name": "vendor_slug", + "in": "path", + "required": true, "schema": { - "type": "string", - "format": "uuid", - "title": "Agent Id" + "type": "string" } } ], @@ -33349,17 +33463,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.CountResponse" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ArcadeSettingsResponse" } } } @@ -33369,7 +33473,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } @@ -33379,27 +33483,25 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } } }, - "x-hidden": true - } - }, - "/v1/fleet/threads/runs": { - "post": { + "x-public": true + }, + "put": { "security": [ { "API Key": [] @@ -33411,29 +33513,29 @@ "Bearer Auth": [] } ], - "description": "Creates a thread bound to `agent_id` and starts a run on it in one call. Returns the upstream run record (pending/running, not yet complete). Run kwargs are passed through; thread-creation flags go in the optional `thread` envelope. The new thread is rolled back if the run fails to start.", + "description": "Replaces vendor settings.", "tags": [ - "fleet threads" + "mcp_vendors" + ], + "summary": "Replace vendor settings", + "parameters": [ + { + "description": "Vendor slug (e.g. arcade)", + "name": "vendor_slug", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Create a thread and start a run", - "parameters": [], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "object" - } - } - } - }, - "201": { - "description": "Created", - "content": { - "application/json": { - "schema": { - "type": "object" + "$ref": "#/components/schemas/mcp_vendors.ArcadeSettingsResponse" } } } @@ -33443,7 +33545,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } @@ -33453,7 +33555,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } @@ -33463,7 +33565,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } @@ -33473,56 +33575,24 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" - } - } - } - }, - "422": { - "description": "Unprocessable Entity", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" - } - } - } - }, - "502": { - "description": "Bad Gateway", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.CreateThreadAndRunRequest" + "$ref": "#/components/schemas/mcp_vendors.ArcadeSettingsRequest" } } } - }, - "x-hidden": true - } - }, - "/v1/fleet/threads/search": { + } + }, "post": { "security": [ { @@ -33535,21 +33605,29 @@ "Bearer Auth": [] } ], - "description": "Searches threads. Request and response bodies are proxied unchanged to the upstream agent runtime.", + "description": "Initializes vendor settings.", "tags": [ - "fleet threads" + "mcp_vendors" + ], + "summary": "Create vendor settings", + "parameters": [ + { + "description": "Vendor slug (e.g. arcade)", + "name": "vendor_slug", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Search threads", "responses": { - "200": { - "description": "OK", + "201": { + "description": "Created", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "type": "object" - } + "$ref": "#/components/schemas/mcp_vendors.ArcadeSettingsResponse" } } } @@ -33559,7 +33637,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } @@ -33569,7 +33647,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } @@ -33579,38 +33657,45 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } }, - "422": { - "description": "Unprocessable Entity", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "409": { + "description": "Conflict", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } } }, - "parameters": [], - "x-hidden": true - } - }, - "/v1/fleet/threads/{thread_id}": { - "get": { + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/mcp_vendors.ArcadeSettingsRequest" + } + } + } + } + }, + "delete": { "security": [ { "API Key": [] @@ -33622,15 +33707,15 @@ "Bearer Auth": [] } ], - "description": "Returns thread metadata and status for the given thread id.", + "description": "Removes vendor settings.", "tags": [ - "fleet threads" + "mcp_vendors" ], - "summary": "Get thread", + "summary": "Delete vendor settings", "parameters": [ { - "description": "Thread id", - "name": "thread_id", + "description": "Vendor slug (e.g. arcade)", + "name": "vendor_slug", "in": "path", "required": true, "schema": { @@ -33644,7 +33729,7 @@ "content": { "application/json": { "schema": { - "type": "object" + "$ref": "#/components/schemas/mcp_vendors.ArcadeSettingsResponse" } } } @@ -33654,7 +33739,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } @@ -33664,7 +33749,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } @@ -33674,25 +33759,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" - } - } - } - }, - "502": { - "description": "Bad Gateway", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } } }, - "x-hidden": true - }, - "delete": { + "x-public": true + } + }, + "/v1/platform/mcp-vendors/{vendor_slug}/tools": { + "get": { "security": [ { "API Key": [] @@ -33704,32 +33781,47 @@ "Bearer Auth": [] } ], - "description": "Deletes a thread and all of its runs. Idempotent: deleting a thread that does not exist returns 204.", + "description": "Returns the tool catalog for this vendor.", "tags": [ - "fleet threads" + "mcp_vendors" ], - "summary": "Delete thread", + "summary": "List tools for a vendor", "parameters": [ { - "description": "Thread id", - "name": "thread_id", + "description": "Vendor slug (e.g. arcade)", + "name": "vendor_slug", "in": "path", "required": true, "schema": { "type": "string" } + }, + { + "description": "Max tools to return (default 50)", + "name": "limit", + "in": "query", + "schema": { + "type": "integer", + "title": "Limit" + } + }, + { + "description": "Number of tools to skip (default 0)", + "name": "offset", + "in": "query", + "schema": { + "type": "integer", + "title": "Offset" + } } ], "responses": { - "204": { - "description": "No Content" - }, - "400": { - "description": "Bad Request", + "200": { + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ListVendorToolsResponse" } } } @@ -33739,7 +33831,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } @@ -33749,79 +33841,67 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" } } } } }, - "x-hidden": true - }, - "patch": { + "x-public": true + } + }, + "/v1/platform/ops/backfills/restart": { + "post": { "security": [ { "API Key": [] }, { - "Tenant ID": [] + "Organization ID": [] }, { "Bearer Auth": [] } ], - "description": "Updates thread fields such as title and metadata. Omitted fields are unchanged; null values clear fields where supported.", + "description": "Deletes the backfill job record, causing the backfill to restart from the beginning on the next cron tick. Requires instance admin access.", "tags": [ - "fleet threads" - ], - "summary": "Update a thread", - "parameters": [ - { - "description": "Thread id", - "name": "thread_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } + "backfills" ], + "summary": "Restart a backfill job", + "parameters": [], "responses": { "200": { - "description": "OK", + "description": "Backfill restarted", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.UpdateThreadResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } }, "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", + "description": "Bad request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } @@ -33831,104 +33911,79 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" - } - } - } - }, - "422": { - "description": "Unprocessable Entity", + "description": "Backfill not found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } }, - "502": { - "description": "Bad Gateway", + "500": { + "description": "Internal server error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.UpdateThreadRequest" + "$ref": "#/components/schemas/backfills.restartBackfillRequest" } } } - }, - "x-hidden": true + } } }, - "/v1/fleet/threads/{thread_id}/resolve-interrupt": { - "post": { + "/v1/platform/orgs/current/access-policies": { + "get": { "security": [ { "API Key": [] }, { - "Tenant ID": [] + "Organization ID": [] }, { "Bearer Auth": [] } ], - "description": "Completes a human-interrupt pause on the thread without sending new input, allowing execution to continue or finish. On success the response has no body.", + "description": "Lists all access policies for the organization.", "tags": [ - "fleet threads" - ], - "summary": "Resolve an interrupted thread", - "parameters": [ - { - "description": "Thread id", - "name": "thread_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } + "access_policies" ], + "summary": "List access policies", "responses": { - "204": { - "description": "No Content" - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", + "200": { + "description": "List of access policies", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/authz_internal.ListAccessPoliciesResponse" } } } @@ -33938,181 +33993,150 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/abac.ErrorResponse" } } } }, - "422": { - "description": "Unprocessable Entity", + "500": { + "description": "Internal server error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/abac.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "503": { + "description": "Service unavailable", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/abac.ErrorResponse" } } } } }, - "x-hidden": true - } - }, - "/v1/fleet/threads/{thread_id}/runs": { + "x-public": true, + "parameters": [] + }, "post": { "security": [ { "API Key": [] }, { - "Tenant ID": [] + "Organization ID": [] }, { "Bearer Auth": [] } ], - "description": "Starts a run on the thread. The request body must include `assistant_id` (the assistant to execute). Include run inputs and options in the body as supported by this API.", + "description": "Creates a new access policy.", "tags": [ - "fleet threads" - ], - "summary": "Create thread run", - "parameters": [ - { - "description": "Thread id", - "name": "thread_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } + "access_policies" ], + "summary": "Create an access policy", + "parameters": [], "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } - }, "201": { - "description": "Created", + "description": "Access policy created", "content": { "application/json": { "schema": { - "type": "object" + "$ref": "#/components/schemas/authz_internal.AccessPolicyCreateResponse" } } } }, "400": { - "description": "Bad Request", + "description": "Bad request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/abac.ErrorResponse" } } } }, - "401": { - "description": "Unauthorized", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/abac.ErrorResponse" } } } }, - "403": { - "description": "Forbidden", + "404": { + "description": "Role not found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/abac.ErrorResponse" } } } }, - "404": { - "description": "Not Found", + "500": { + "description": "Internal server error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/abac.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "503": { + "description": "Service unavailable", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/abac.ErrorResponse" } } } } }, - "x-hidden": true + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/authz_internal.CreateAccessPolicyPayload" + } + } + } + } } }, - "/v1/fleet/threads/{thread_id}/runs/stream": { + "/v1/platform/orgs/current/access-policies/roles/{role_id}/access-policies": { "post": { "security": [ { "API Key": [] }, { - "Tenant ID": [] + "Organization ID": [] }, { "Bearer Auth": [] } ], - "description": "Start a run on a thread and stream its output as Server-Sent Events. The connection stays open until the run completes; the client is responsible for closing it.", + "description": "Attaches one or more access policies to a specific role. The request body must contain an array of access policy IDs.", "tags": [ - "fleet threads" + "access_policies" ], - "summary": "Stream a thread run", + "summary": "Attach access policies to a role", "parameters": [ { - "description": "Thread ID", - "name": "thread_id", + "description": "Role ID", + "name": "role_id", "in": "path", "required": true, "schema": { @@ -34121,128 +34145,119 @@ } ], "responses": { - "200": { - "description": "SSE event stream", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } + "204": { + "description": "Access policies attached successfully" }, "400": { - "description": "Bad Request", + "description": "Bad request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/abac.ErrorResponse" } } } }, - "401": { - "description": "Unauthorized", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/abac.ErrorResponse" } } } }, - "403": { - "description": "Forbidden", + "404": { + "description": "Role not found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/abac.ErrorResponse" } } } }, - "404": { - "description": "Not Found", + "500": { + "description": "Internal server error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/abac.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "503": { + "description": "Service unavailable", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.ErrorResponse" + "$ref": "#/components/schemas/abac.ErrorResponse" } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/threads.StreamRunRequest" + "$ref": "#/components/schemas/authz_internal.AttachAccessPoliciesPayload" } } } - }, - "x-hidden": true + } } }, - "/v1/fleet/trigger-templates": { + "/v1/platform/orgs/current/access-policies/{access_policy_id}": { "get": { "security": [ { "API Key": [] }, { - "Tenant ID": [] + "Organization ID": [] }, { "Bearer Auth": [] } ], - "description": "Lists trigger templates with their config schema and auth requirements (paginated).", + "description": "Gets a specific access policy by ID.", "tags": [ - "fleet trigger-templates" + "access_policies" ], - "summary": "List trigger templates", + "summary": "Get an access policy", "parameters": [ { - "description": "Items per page (default 20, max 100)", - "name": "page_size", - "in": "query", - "schema": { - "type": "integer", - "title": "Page Size" - } - }, - { - "description": "Opaque pagination cursor returned by a prior response", - "name": "cursor", - "in": "query", + "description": "Access Policy ID", + "name": "access_policy_id", + "in": "path", + "required": true, "schema": { - "type": "string", - "title": "Cursor" + "type": "string" } } ], "responses": { "200": { - "description": "OK" + "description": "Access policy details", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/authz_internal.AccessPolicy" + } + } + } }, - "401": { - "description": "Unauthorized", + "400": { + "description": "Bad request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "$ref": "#/components/schemas/abac.ErrorResponse" } } } @@ -34252,47 +34267,65 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "$ref": "#/components/schemas/abac.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "404": { + "description": "Access policy not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/abac.ErrorResponse" + } + } + } + }, + "500": { + "description": "Internal server error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/abac.ErrorResponse" + } + } + } + }, + "503": { + "description": "Service unavailable", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "$ref": "#/components/schemas/abac.ErrorResponse" } } } } }, - "x-hidden": true - } - }, - "/v1/fleet/trigger-templates/{template_id}": { - "get": { + "x-public": true + }, + "delete": { "security": [ { "API Key": [] }, { - "Tenant ID": [] + "Organization ID": [] }, { "Bearer Auth": [] } ], - "description": "Returns a single trigger template by id.", + "description": "Deletes a specific access policy by ID.", "tags": [ - "fleet trigger-templates" + "access_policies" ], - "summary": "Get trigger template", + "summary": "Delete an access policy", "parameters": [ { - "description": "Trigger template id", - "name": "template_id", + "description": "Access Policy ID", + "name": "access_policy_id", "in": "path", "required": true, "schema": { @@ -34301,15 +34334,15 @@ } ], "responses": { - "200": { - "description": "OK" + "204": { + "description": "Access policy deleted successfully" }, - "401": { - "description": "Unauthorized", + "400": { + "description": "Bad request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "$ref": "#/components/schemas/abac.ErrorResponse" } } } @@ -34319,108 +34352,73 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "$ref": "#/components/schemas/abac.ErrorResponse" } } } }, - "404": { - "description": "Not Found", + "500": { + "description": "Internal server error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "$ref": "#/components/schemas/abac.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "503": { + "description": "Service unavailable", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "$ref": "#/components/schemas/abac.ErrorResponse" } } } } }, - "x-hidden": true + "x-public": true } }, - "/v1/fleet/triggers": { + "/v1/platform/orgs/current/info": { "get": { "security": [ { "API Key": [] }, { - "Tenant ID": [] + "Organization ID": [] }, { "Bearer Auth": [] } ], - "description": "Lists triggers for the calling user (paginated). Filter by agent_id and/or template_id.", + "description": "Returns organization info for the authenticated user's current organization.", "tags": [ - "fleet triggers" - ], - "summary": "List triggers", - "parameters": [ - { - "description": "Filter by agent id", - "name": "agent_id", - "in": "query", - "schema": { - "type": "string", - "title": "Agent Id" - } - }, - { - "description": "Filter by trigger template id", - "name": "template_id", - "in": "query", - "schema": { - "type": "string", - "title": "Template Id" - } - }, - { - "description": "Items per page (default 20, max 100)", - "name": "page_size", - "in": "query", - "schema": { - "type": "integer", - "title": "Page Size" - } - }, - { - "description": "Opaque pagination cursor returned by a prior response", - "name": "cursor", - "in": "query", - "schema": { - "type": "string", - "title": "Cursor" - } - } + "Organizations" ], + "summary": "Get current organization info", "responses": { "200": { - "description": "OK", + "description": "Organization info", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.TriggerListResponse" + "$ref": "#/components/schemas/orgs.OrganizationInfo" } } } }, "400": { - "description": "Bad Request", + "description": "Invalid organization ID", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } @@ -34430,173 +34428,263 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } }, - "502": { - "description": "Bad Gateway", + "500": { + "description": "Internal server error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } } }, - "x-hidden": true - }, - "post": { + "x-public": true, + "parameters": [] + } + }, + "/v1/platform/orgs/current/members": { + "get": { "security": [ { "API Key": [] }, { - "Tenant ID": [] + "Organization ID": [] }, { "Bearer Auth": [] } ], - "description": "Creates a trigger for an agent and returns the created trigger instance.", + "description": "Returns a paginated list of org members (active and pending) enriched with workspace memberships.", "tags": [ - "fleet triggers" + "orgs" + ], + "summary": "List org members with workspace roles", + "parameters": [ + { + "description": "Page size (default 50, max 500)", + "name": "limit", + "in": "query", + "schema": { + "type": "integer", + "title": "Limit" + } + }, + { + "description": "Page offset (default 0)", + "name": "offset", + "in": "query", + "schema": { + "type": "integer", + "title": "Offset" + } + }, + { + "description": "Filter: true = only active members; false = only pending members", + "name": "active_is", + "in": "query", + "schema": { + "type": "boolean", + "title": "Active Is" + } + }, + { + "description": "Filter: true = only pending members; false = only active members", + "name": "pending_is", + "in": "query", + "schema": { + "type": "boolean", + "title": "Pending Is" + } + }, + { + "description": "Glob filter on display name; use * as wildcard (repeatable, matches any)", + "name": "name_like", + "in": "query", + "style": "form", + "explode": true, + "schema": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Name Like" + } + }, + { + "description": "Glob filter on email; use * as wildcard (repeatable, matches any)", + "name": "email_like", + "in": "query", + "style": "form", + "explode": true, + "schema": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Email Like" + } + }, + { + "description": "Glob filter on workspace name or ID; use * as wildcard (repeatable, matches any)", + "name": "workspace_name_like", + "in": "query", + "style": "form", + "explode": true, + "schema": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Workspace Name Like" + } + }, + { + "description": "Glob filter on organization role name; use * as wildcard (repeatable, matches any)", + "name": "organization_role_like", + "in": "query", + "style": "form", + "explode": true, + "schema": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Organization Role Like" + } + }, + { + "description": "Glob filter on workspace role name; use * as wildcard (repeatable, matches any)", + "name": "workspace_role_like", + "in": "query", + "style": "form", + "explode": true, + "schema": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Workspace Role Like" + } + } ], - "summary": "Create trigger", - "parameters": [], "responses": { - "201": { - "description": "Created", - "content": { - "application/json": { + "200": { + "description": "Org members", + "headers": { + "X-Members-Anonymity-Restricted": { + "description": "Set to 'true' when the response was restricted by the organization's anonymity setting.", "schema": { - "$ref": "#/components/schemas/triggers.Trigger" + "type": "string" } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { + }, + "X-Members-List-All-Workspaces": { + "description": "true if caller has organization:manage", + "schema": { + "type": "string" + } + }, + "X-Pagination-Total": { + "description": "Total number of matching members", "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "type": "string" } } - } - }, - "401": { - "description": "Unauthorized", + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/orgs.OrgMemberEnriched" + } } } } }, - "403": { - "description": "Forbidden", + "400": { + "description": "Bad request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } }, - "409": { - "description": "Conflict", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } }, - "502": { - "description": "Bad Gateway", + "500": { + "description": "Internal server error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } } }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/triggers.CreateTriggerRequest" - } - } - } - }, - "x-hidden": true + "x-public": true } }, - "/v1/fleet/triggers/{trigger_id}": { + "/v1/platform/orgs/current/scim/tokens": { "get": { "security": [ { "API Key": [] }, { - "Tenant ID": [] + "Organization ID": [] }, { "Bearer Auth": [] } ], - "description": "Returns a single trigger by id for the calling user.", + "description": "List all SCIM bearer tokens for the current organization. The full token values are not returned.", "tags": [ - "fleet triggers" - ], - "summary": "Get trigger", - "parameters": [ - { - "description": "Trigger id (UUID)", - "name": "trigger_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } + "SCIM Tokens" ], + "summary": "List SCIM tokens", "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/triggers.Trigger" - } - } - } - }, - "400": { - "description": "Bad Request", + "description": "List of SCIM tokens", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/scim.ScimTokenResponse" + } } } } @@ -34606,82 +34694,70 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "$ref": "#/components/schemas/scim.ErrorResponse" } } } }, "403": { - "description": "Forbidden", + "description": "Forbidden - requires OrganizationRead permission", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "$ref": "#/components/schemas/scim.ErrorResponse" } } } }, - "404": { - "description": "Not Found", + "500": { + "description": "Internal server error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "$ref": "#/components/schemas/scim.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "503": { + "description": "Service unavailable", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "$ref": "#/components/schemas/scim.ErrorResponse" } } } } }, - "x-hidden": true + "x-public": true, + "parameters": [] }, - "delete": { + "post": { "security": [ { "API Key": [] }, { - "Tenant ID": [] + "Organization ID": [] }, { "Bearer Auth": [] } ], - "description": "Deletes a trigger by id for the calling user. The operation is idempotent - deleting a trigger that does not exist (or that belongs to another user) still returns 204.", + "description": "Create a new SCIM bearer token for the current organization. The full token value is only returned once upon creation.", "tags": [ - "fleet triggers" - ], - "summary": "Delete trigger", - "parameters": [ - { - "description": "Trigger id (UUID)", - "name": "trigger_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } + "SCIM Tokens" ], + "summary": "Create a SCIM token", + "parameters": [], "responses": { - "204": { - "description": "No Content" - }, - "400": { - "description": "Bad Request", + "201": { + "description": "Created SCIM token with full token value", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "$ref": "#/components/schemas/scim.ScimTokenSensitiveResponse" } } } @@ -34691,55 +34767,77 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "$ref": "#/components/schemas/scim.ErrorResponse" } } } }, "403": { - "description": "Forbidden", + "description": "Forbidden - requires OrganizationManage permission", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "$ref": "#/components/schemas/scim.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "500": { + "description": "Internal server error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/scim.ErrorResponse" + } + } + } + }, + "503": { + "description": "Service unavailable", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "$ref": "#/components/schemas/scim.ErrorResponse" } } } } }, - "x-hidden": true - }, - "patch": { + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/scim.CreateScimTokenPayload" + } + } + } + } + } + }, + "/v1/platform/orgs/current/scim/tokens/{scim_token_id}": { + "get": { "security": [ { "API Key": [] }, { - "Tenant ID": [] + "Organization ID": [] }, { "Bearer Auth": [] } ], - "description": "Updates a trigger by id for the calling user. agent_id is not mutable.", + "description": "Retrieve a specific SCIM token by ID for the current organization. The full token value is not returned.", "tags": [ - "fleet triggers" + "SCIM Tokens" ], - "summary": "Update trigger", + "summary": "Get a SCIM token", "parameters": [ { - "description": "Trigger id (UUID)", - "name": "trigger_id", + "description": "SCIM Token ID", + "name": "scim_token_id", "in": "path", "required": true, "schema": { @@ -34749,101 +34847,89 @@ ], "responses": { "200": { - "description": "OK", + "description": "SCIM token details", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.Trigger" + "$ref": "#/components/schemas/scim.ScimTokenResponse" } } } }, - "400": { - "description": "Bad Request", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "$ref": "#/components/schemas/scim.ErrorResponse" } } } }, - "401": { - "description": "Unauthorized", + "403": { + "description": "Forbidden - requires OrganizationRead permission", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "$ref": "#/components/schemas/scim.ErrorResponse" } } } }, - "403": { - "description": "Forbidden", + "404": { + "description": "Token not found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "$ref": "#/components/schemas/scim.ErrorResponse" } } } }, - "404": { - "description": "Not Found", + "500": { + "description": "Internal server error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "$ref": "#/components/schemas/scim.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "503": { + "description": "Service unavailable", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/triggers.ErrorResponse" + "$ref": "#/components/schemas/scim.ErrorResponse" } } } } }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/triggers.UpdateTriggerRequest" - } - } - } - }, - "x-hidden": true - } - }, - "/v1/platform/alerts/{session_id}": { - "post": { + "x-public": true + }, + "delete": { "security": [ { "API Key": [] }, { - "Tenant ID": [] + "Organization ID": [] }, { "Bearer Auth": [] } ], - "description": "Creates a new alert rule. The request body must be a JSON-encoded alert rule object that follows the CreateAlertRuleRequest schema.", + "description": "Delete a SCIM bearer token from the current organization.", "tags": [ - "alert_rules" + "SCIM Tokens" ], - "summary": "Create an alert rule", + "summary": "Delete a SCIM token", "parameters": [ { - "description": "Session ID", - "name": "session_id", + "description": "SCIM Token ID", + "name": "scim_token_id", "in": "path", "required": true, "schema": { @@ -34852,42 +34938,35 @@ } ], "responses": { - "201": { - "description": "Alert rule created", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/alerts.AlertRuleResponse" - } - } - } + "204": { + "description": "No content - token deleted successfully" }, - "400": { - "description": "Bad request", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" + "$ref": "#/components/schemas/scim.ErrorResponse" } } } }, "403": { - "description": "Forbidden", + "description": "Forbidden - requires OrganizationManage permission", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" + "$ref": "#/components/schemas/scim.ErrorResponse" } } } }, - "429": { - "description": "Alert Rule Limit Reached", + "404": { + "description": "Token not found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" + "$ref": "#/components/schemas/scim.ErrorResponse" } } } @@ -34897,7 +34976,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" + "$ref": "#/components/schemas/scim.ErrorResponse" } } } @@ -34907,55 +34986,35 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" + "$ref": "#/components/schemas/scim.ErrorResponse" } } } } }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/alerts.CreateAlertRuleRequest" - } - } - } - } - } - }, - "/v1/platform/alerts/{session_id}/test": { - "post": { + "x-public": true + }, + "patch": { "security": [ { "API Key": [] }, { - "Tenant ID": [] + "Organization ID": [] }, { "Bearer Auth": [] } ], - "description": "Tests an alert action which will fire a notification to all configured recipients if the configuration is valid.", + "description": "Update the description of an existing SCIM token for the current organization.", "tags": [ - "alert_rules" + "SCIM Tokens" ], - "summary": "Test an alert action to determine if configuration is valid", + "summary": "Update a SCIM token", "parameters": [ { - "description": "Session ID", - "name": "session_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Alert rule ID", - "name": "alert_rule_id", + "description": "SCIM Token ID", + "name": "scim_token_id", "in": "path", "required": true, "schema": { @@ -34965,46 +35024,41 @@ ], "responses": { "200": { - "description": "Alert action fired successfully", + "description": "Updated SCIM token details", "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "allOf": [ - { - "type": "string" - }, - { - "type": "object", - "properties": { - "message": { - "type": "string" - } - } - } - ] - } + "$ref": "#/components/schemas/scim.ScimTokenResponse" } } } }, - "400": { - "description": "Bad request", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" + "$ref": "#/components/schemas/scim.ErrorResponse" } } } }, "403": { - "description": "Forbidden", + "description": "Forbidden - requires OrganizationManage permission", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" + "$ref": "#/components/schemas/scim.ErrorResponse" + } + } + } + }, + "404": { + "description": "Token not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/scim.ErrorResponse" } } } @@ -35014,7 +35068,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" + "$ref": "#/components/schemas/scim.ErrorResponse" } } } @@ -35024,15 +35078,26 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" + "$ref": "#/components/schemas/scim.ErrorResponse" } } } } + }, + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/scim.UpdateScimTokenPayload" + } + } + } } } }, - "/v1/platform/alerts/{session_id}/{alert_rule_id}": { + "/v1/platform/sessions/{sessionID}/agent-versions": { "get": { "security": [ { @@ -35045,24 +35110,15 @@ "Bearer Auth": [] } ], - "description": "Gets an alert rule.", + "description": "Returns all agent versions (commit SHAs) seen in the given tracing project, ordered by first_seen_at descending.", "tags": [ - "alert_rules" + "sessions" ], - "summary": "Get an alert rule", + "summary": "List agent versions for a project", "parameters": [ { - "description": "Session ID", - "name": "session_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Alert rule ID", - "name": "alert_rule_id", + "description": "Tracing project (session) UUID", + "name": "sessionID", "in": "path", "required": true, "schema": { @@ -35072,68 +35128,50 @@ ], "responses": { "200": { - "description": "Alert rule", + "description": "Agent versions", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.AlertRuleResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/tracer_sessions.AgentVersionResponse" + } } } } }, "400": { - "description": "Bad request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal server error", + "description": "Invalid session ID", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } }, - "503": { - "description": "Service unavailable", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } } - } - }, - "delete": { + }, + "x-public": true + } + }, + "/v1/platform/sessions/{session_id}/issues-agent": { + "get": { "security": [ { "API Key": [] @@ -35145,110 +35183,87 @@ "Bearer Auth": [] } ], - "description": "Deletes an alert rule", + "description": "**Beta:** This endpoint is in active development and may change without notice.\n\nReturns the issues agent config attached to the given tracer session.", "tags": [ - "alert_rules" + "issues-agent" ], - "summary": "Delete an alert rule", + "summary": "[Beta] Get the issues agent config for a session", "parameters": [ { - "description": "Session ID", + "description": "Tracer session ID (UUID)", "name": "session_id", "in": "path", "required": true, "schema": { "type": "string" } - }, - { - "description": "Alert rule ID", - "name": "alert_rule_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } } ], "responses": { "200": { - "description": "Alert rule deleted", + "description": "OK", "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "allOf": [ - { - "type": "string" - }, - { - "type": "object", - "properties": { - "message": { - "type": "string" - } - } - } - ] - } + "$ref": "#/components/schemas/tracer_session_issues_agent.IssuesAgent" } } } }, "400": { - "description": "Bad request", + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } }, - "403": { - "description": "Forbidden", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } }, - "404": { - "description": "Not found", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } }, - "500": { - "description": "Internal server error", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } }, - "503": { - "description": "Service unavailable", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } } - } + }, + "x-public": true }, - "patch": { + "post": { "security": [ { "API Key": [] @@ -35260,122 +35275,97 @@ "Bearer Auth": [] } ], - "description": "Updates an alert rule.", + "description": "**Beta:** This endpoint is in active development and may change without notice.\n\nConfigures the issues agent for the given tracer session and enqueues\nthe initial scan. Fails if an agent already exists for the session.", "tags": [ - "alert_rules" + "issues-agent" ], - "summary": "Update an alert rule", + "summary": "[Beta] Create the issues agent for a session", "parameters": [ { - "description": "Session ID", + "description": "Tracer session ID (UUID)", "name": "session_id", "in": "path", "required": true, "schema": { "type": "string" } - }, - { - "description": "Alert rule ID", - "name": "alert_rule_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } } ], "responses": { - "200": { - "description": "Alert rule updated", + "201": { + "description": "Created", "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "allOf": [ - { - "type": "string" - }, - { - "type": "object", - "properties": { - "message": { - "type": "string" - } - } - } - ] - } + "$ref": "#/components/schemas/tracer_session_issues_agent.IssuesAgent" } } } }, "400": { - "description": "Bad request", + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } }, - "403": { - "description": "Forbidden", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } }, - "404": { - "description": "Not found", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } }, - "500": { - "description": "Internal server error", + "409": { + "description": "Conflict", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } }, - "503": { - "description": "Service unavailable", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/alerts.UpdateAlertRuleRequest" + "$ref": "#/components/schemas/tracer_session_issues_agent.CreateIssuesAgentRequest" } } } } - } - }, - "/v1/platform/annotation-queues/{queue_id}/reviewers": { - "post": { + }, + "delete": { "security": [ { "API Key": [] @@ -35387,15 +35377,15 @@ "Bearer Auth": [] } ], - "description": "Assigns a single identity as a reviewer for the queue. Idempotent.", + "description": "**Beta:** This endpoint is in active development and may change without notice.\n\nRemoves the agent config, its issues, and the agent-overview hub repo.", "tags": [ - "annotation_queues" + "issues-agent" ], - "summary": "Add a reviewer to an annotation queue", + "summary": "[Beta] Delete the issues agent for a session", "parameters": [ { - "description": "Queue ID", - "name": "queue_id", + "description": "Tracer session ID (UUID)", + "name": "session_id", "in": "path", "required": true, "schema": { @@ -35404,25 +35394,35 @@ } ], "responses": { - "201": { - "description": "Created", + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/annotationqueues.AddReviewerResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } }, - "400": { - "description": "Bad Request", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } @@ -35432,10 +35432,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } @@ -35445,29 +35442,15 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } } }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/annotationqueues.AddReviewerRequest" - } - } - } - } - } - }, - "/v1/platform/annotation-queues/{queue_id}/reviewers/{identity_id}": { - "delete": { + "x-public": true + }, + "patch": { "security": [ { "API Key": [] @@ -35479,24 +35462,15 @@ "Bearer Auth": [] } ], - "description": "Unassigns an identity as a reviewer for the queue. Idempotent.", + "description": "**Beta:** This endpoint is in active development and may change without notice.\n\nPatches the agent config. All side effects (clearing fix fields when\nthe GitHub repo changes, setting agent_overview_repo_id) happen in a\nsingle CRUD transaction. Omitted fields are left unchanged.", "tags": [ - "annotation_queues" + "issues-agent" ], - "summary": "Remove a reviewer from an annotation queue", + "summary": "[Beta] Update the issues agent config for a session", "parameters": [ { - "description": "Queue ID", - "name": "queue_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Identity ID of the reviewer to remove", - "name": "identity_id", + "description": "Tracer session ID (UUID)", + "name": "session_id", "in": "path", "required": true, "schema": { @@ -35505,87 +35479,32 @@ } ], "responses": { - "204": { - "description": "No Content" - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "500": { - "description": "Internal Server Error", + "200": { + "description": "OK", "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/tracer_session_issues_agent.IssuesAgent" } } } - } - } - } - }, - "/v1/platform/datasets/examples/delete": { - "post": { - "security": [ - { - "API Key": [] }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "This endpoint hard deletes *all* versions of a dataset example(s).\nDeletion is performed by setting inputs, outputs, and metadata to null and deleting attachment files while keeping the example ID, dataset ID, and creation timestamp.\nIMPORTANT: attachment files can take up to 7 days to be deleted. inputs, outputs and metadata are nullified immediately.", - "tags": [ - "examples" - ], - "summary": "Hard Delete Examples", - "parameters": [], - "responses": { - "200": { - "description": "OK", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/examples.ExamplesDeletedResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } }, - "400": { - "description": "Bad Request", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/examples.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } @@ -35595,7 +35514,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/examples.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } @@ -35605,36 +35524,37 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/examples.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } }, - "422": { - "description": "Unprocessable Entity", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/examples.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/examples.DeleteExamplesRequest" + "$ref": "#/components/schemas/tracer_session_issues_agent.UpdateIssuesAgentRequest" } } } } } }, - "/v1/platform/datasets/{dataset_id}/examples": { - "post": { + "/v1/platform/sessions/{session_id}/issues-agent/overview": { + "patch": { "security": [ { "API Key": [] @@ -35646,30 +35566,29 @@ "Bearer Auth": [] } ], - "description": "This endpoint allows clients to upload examples to a specified dataset by sending a multipart/form-data POST request.\nEach form part contains either JSON-encoded data or binary attachment files associated with an example.", + "description": "**Beta:** This endpoint is in active development and may change without notice.\n\nSaves the issues agent overview content server-side, creating or updating\nthe backing private Prompt Hub repo and linking it to the issues agent config.", "tags": [ - "examples" + "issues-agent" ], - "summary": "Upload Examples", + "summary": "[Beta] Save the agent overview for a session", "parameters": [ { - "description": "Dataset ID", - "name": "dataset_id", + "description": "Tracer session ID (UUID)", + "name": "session_id", "in": "path", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], "responses": { - "201": { - "description": "Created", + "200": { + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/examples.ExamplesCreatedResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.SaveOverviewResponse" } } } @@ -35679,7 +35598,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/examples.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } @@ -35689,70 +35618,47 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/examples.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } }, - "409": { - "description": "Conflict", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/examples.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } }, - "422": { - "description": "Unprocessable Entity", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/examples.ErrorResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { - "multipart/form-data": { + "application/json": { "schema": { - "type": "object", - "properties": { - "{example_id}": { - "type": "string", - "format": "binary", - "description": "The Example info as JSON. Can have fields 'metadata', 'split', 'use_source_run_io', 'source_run_id', 'created_at', 'modified_at'" - }, - "{example_id}.inputs": { - "type": "string", - "format": "binary", - "description": "The Example inputs as JSON" - }, - "{example_id}.outputs": { - "type": "string", - "format": "binary", - "description": "THe Example outputs as JSON" - }, - "{example_id}.attachments.{name}": { - "type": "string", - "format": "binary", - "description": "File attachment named {name}" - } - }, - "required": [ - "{example_id}", - "{example_id}.inputs" - ] + "$ref": "#/components/schemas/tracer_session_issues_agent.SaveOverviewRequest" } } } } - }, - "patch": { + } + }, + "/v1/platform/sessions/{session_id}/issues-agent/webhooks/{id}/roll-secret": { + "post": { "security": [ { "API Key": [] @@ -35764,30 +35670,38 @@ "Bearer Auth": [] } ], - "description": "This endpoint allows clients to update existing examples in a specified dataset by sending a multipart/form-data PATCH request.\nEach form part contains either JSON-encoded data or binary attachment files to update an example.", + "description": "Replaces the signing secret for the given issues agent webhook and returns the\nupdated webhook. Future deliveries are signed with the new secret immediately.", "tags": [ - "examples" + "issues-agent" ], - "summary": "Update Examples", + "summary": "Roll an issues agent webhook signing secret", "parameters": [ { - "description": "Dataset ID", - "name": "dataset_id", + "description": "Tracer session ID (UUID)", + "name": "session_id", "in": "path", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" + } + }, + { + "description": "Webhook ID (UUID)", + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" } } ], "responses": { - "201": { - "description": "Created", + "200": { + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/examples.ExamplesUpdatedResponse" + "$ref": "#/components/schemas/tracer_session_issues_agent_webhooks.IssuesAgentWebhook" } } } @@ -35797,123 +35711,106 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/examples.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } }, - "403": { - "description": "Forbidden", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/examples.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } }, - "404": { - "description": "Not Found", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/examples.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } }, - "409": { - "description": "Conflict", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/examples.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } }, - "422": { - "description": "Unprocessable Entity", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/examples.ErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } } }, - "requestBody": { - "required": true, - "content": { - "multipart/form-data": { - "schema": { - "type": "object", - "properties": { - "{example_id}": { - "type": "string", - "format": "binary", - "description": "The Example update info as JSON. Can have fields 'metadata', 'split'" - }, - "{example_id}.inputs": { - "type": "string", - "format": "binary", - "description": "The updated Example inputs as JSON" - }, - "{example_id}.outputs": { - "type": "string", - "format": "binary", - "description": "The updated Example outputs as JSON" - }, - "{example_id}.attachments_operations": { - "type": "string", - "format": "binary", - "description": "JSON describing attachment operations (retain, rename)" - }, - "{example_id}.attachment.{name}": { - "type": "string", - "format": "binary", - "description": "New file attachment named {name}" - } - }, - "required": [ - "{example_id}" - ] - } - } - } - } + "x-public": true } }, - "/v1/platform/engine/trial-response": { - "post": { + "/v1/platform/sessions/{session_id}/issues/views": { + "get": { "security": [ { "API Key": [] }, { - "Organization ID": [] + "Tenant ID": [] }, { "Bearer Auth": [] } ], - "description": "Records a user's response to the Engine trial ending modal.\naction must be \"acknowledge\", \"opt_out\", or \"mark_seen\".", + "description": "**Beta:** Returns the issues in this session that the current\nuser has opened, with timestamps. Used by the UI to derive\nthe per-row \"unread\" indicator and the Engine tab badge.", "tags": [ - "engine-trial" + "issues" + ], + "summary": "[Beta] List viewed issues for a session", + "parameters": [ + { + "description": "Session ID (UUID)", + "name": "session_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Respond to Engine trial ending notice", - "parameters": [], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/tracer_session_issues.ListViewsResponse" } } } @@ -35923,10 +35820,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" } } } @@ -35936,23 +35830,17 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" } } } }, - "404": { - "description": "Not Found", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" } } } @@ -35962,28 +35850,16 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" } } } } }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/engine_trial.trialResponseRequest" - } - } - } - } + "x-public": true } }, - "/v1/platform/evaluators": { + "/v1/platform/tools": { "get": { "security": [ { @@ -35996,104 +35872,38 @@ "Bearer Auth": [] } ], - "description": "List evaluators for the current workspace, with optional filtering by type, name, tag, feedback key, or resource ID.", + "description": "Returns a paginated list of tools in the workspace.", "tags": [ - "evaluators" + "tools" ], - "summary": "List evaluators", + "summary": "List tools", "parameters": [ { - "description": "Filter by evaluator type", - "name": "type", - "in": "query", - "schema": { - "type": "string", - "title": "Type" - } - }, - { - "description": "Filter by name substring (also searches creator names)", - "name": "name_contains", - "in": "query", - "schema": { - "type": "string", - "title": "Name Contains" - } - }, - { - "description": "Filter by tag value IDs", - "name": "tag_value_id", - "in": "query", - "style": "form", - "explode": false, - "schema": { - "items": { - "type": "string" - }, - "type": "array", - "title": "Tag Value Id" - } - }, - { - "description": "Filter by feedback key", - "name": "feedback_key", - "in": "query", - "schema": { - "type": "string", - "title": "Feedback Key" - } - }, - { - "description": "Filter by resource IDs", - "name": "resource_id", - "in": "query", - "style": "form", - "explode": false, - "schema": { - "items": { - "type": "string" - }, - "type": "array", - "title": "Resource Id" - } - }, - { - "description": "Field to sort by", - "name": "sort_by", - "in": "query", - "schema": { - "type": "string", - "title": "Sort By" - } - }, - { - "description": "Sort in descending order", - "name": "sort_by_desc", - "in": "query", - "schema": { - "type": "boolean", - "title": "Sort By Desc" - } - }, - { - "description": "Maximum number of results (1-100)", + "description": "Maximum number of tools to return", "name": "limit", "in": "query", "schema": { "type": "integer", - "default": 100, "title": "Limit" } }, { - "description": "Offset for pagination", + "description": "Number of tools to skip", "name": "offset", "in": "query", "schema": { "type": "integer", - "default": 0, "title": "Offset" } + }, + { + "description": "Search query to filter tools by name or description", + "name": "query", + "in": "query", + "schema": { + "type": "string", + "title": "Query" + } } ], "responses": { @@ -36102,7 +35912,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ListEvaluatorsResponse" + "$ref": "#/components/schemas/tools.ListToolsResponse" } } } @@ -36112,7 +35922,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36122,7 +35932,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36132,7 +35942,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36142,12 +35952,13 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } } - } + }, + "x-public": true }, "post": { "security": [ @@ -36161,11 +35972,11 @@ "Bearer Auth": [] } ], - "description": "Create a new LLM or code evaluator for the current workspace.", + "description": "Creates a new tool in the workspace.", "tags": [ - "evaluators" + "tools" ], - "summary": "Create evaluator", + "summary": "Create a tool", "parameters": [], "responses": { "201": { @@ -36173,7 +35984,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.CreateEvaluatorResponse" + "$ref": "#/components/schemas/tools.Tool" } } } @@ -36183,7 +35994,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36193,7 +36004,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36203,7 +36014,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36213,24 +36034,27 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.CreateEvaluatorRequest" + "$ref": "#/components/schemas/tools.CreateToolPayload" } } } } - }, - "delete": { + } + }, + "/v1/platform/tools/id/{id}": { + "get": { "security": [ { "API Key": [] @@ -36242,34 +36066,19 @@ "Bearer Auth": [] } ], - "description": "Delete multiple evaluators by their IDs. Returns per-item success/failure.", + "description": "Returns a tool identified by its UUID.", "tags": [ - "evaluators" + "tools" ], - "summary": "Bulk delete evaluators", + "summary": "Get a tool by ID", "parameters": [ { - "description": "Evaluator IDs to delete", - "name": "evaluator_ids", - "in": "query", + "description": "Tool UUID", + "name": "id", + "in": "path", "required": true, - "style": "form", - "explode": false, - "schema": { - "items": { - "type": "string" - }, - "type": "array", - "title": "Evaluator Ids" - } - }, - { - "description": "When true, delete all run rules for this evaluator before deleting the evaluator", - "name": "delete_run_rules", - "in": "query", "schema": { - "type": "boolean", - "title": "Delete Run Rules" + "type": "string" } } ], @@ -36279,7 +36088,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.BulkDeleteEvaluatorsResponse" + "$ref": "#/components/schemas/tools.Tool" } } } @@ -36289,7 +36098,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36299,7 +36108,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36309,7 +36118,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36319,16 +36138,15 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } } - } - } - }, - "/v1/platform/evaluators/spend": { - "get": { + }, + "x-public": true + }, + "delete": { "security": [ { "API Key": [] @@ -36340,76 +36158,32 @@ "Bearer Auth": [] } ], - "description": "Returns per-day LLM evaluator spend for the requested 7-day period, grouped by evaluator, resource, or run rule. Exactly one of group_by, evaluator_id, session_id, or dataset_id is required.", + "description": "Deletes a tool identified by its UUID.", "tags": [ - "evaluators" + "tools" ], - "summary": "Get evaluator spend", + "summary": "Delete a tool by ID", "parameters": [ { - "description": "Aggregation mode: 'evaluator', 'resource', or 'run_rule'. Mutually exclusive with entity filters.", - "name": "group_by", - "in": "query", - "schema": { - "type": "string", - "title": "Group By" - } - }, - { - "description": "Filter to a specific evaluator (UUID). Mutually exclusive with group_by.", - "name": "evaluator_id", - "in": "query", - "schema": { - "type": "string", - "title": "Evaluator Id" - } - }, - { - "description": "Filter to a specific project (UUID). Mutually exclusive with group_by.", - "name": "session_id", - "in": "query", - "schema": { - "type": "string", - "title": "Session Id" - } - }, - { - "description": "Filter to a specific dataset (UUID). Mutually exclusive with group_by.", - "name": "dataset_id", - "in": "query", - "schema": { - "type": "string", - "title": "Dataset Id" - } - }, - { - "description": "Start of the 7-day window (YYYY-MM-DD).", - "name": "period_start", - "in": "query", + "description": "Tool UUID", + "name": "id", + "in": "path", "required": true, "schema": { - "type": "string", - "title": "Period Start" + "type": "string" } } ], "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/evaluators.GetEvaluatorSpendResponse" - } - } - } + "204": { + "description": "No Content" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36419,7 +36193,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36429,7 +36203,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36439,7 +36213,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36449,16 +36223,15 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } } - } - } - }, - "/v1/platform/evaluators/{evaluator_id}": { - "get": { + }, + "x-public": true + }, + "patch": { "security": [ { "API Key": [] @@ -36470,15 +36243,15 @@ "Bearer Auth": [] } ], - "description": "Retrieve a single evaluator by its ID.", + "description": "Updates an existing tool identified by its UUID.", "tags": [ - "evaluators" + "tools" ], - "summary": "Get evaluator", + "summary": "Update a tool by ID", "parameters": [ { - "description": "Evaluator ID", - "name": "evaluator_id", + "description": "Tool UUID", + "name": "id", "in": "path", "required": true, "schema": { @@ -36492,7 +36265,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.Evaluator" + "$ref": "#/components/schemas/tools.Tool" } } } @@ -36502,7 +36275,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36512,7 +36285,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36522,7 +36295,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36532,7 +36305,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36542,14 +36315,27 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } } + }, + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tools.UpdateToolPayload" + } + } + } } - }, - "delete": { + } + }, + "/v1/platform/tools/{handle}": { + "get": { "security": [ { "API Key": [] @@ -36561,41 +36347,39 @@ "Bearer Auth": [] } ], - "description": "Delete an evaluator. When delete_run_rules is true, all run rules referencing this evaluator are deleted first (same tenant). Associated llm_evaluators and code_evaluators rows are removed by foreign-key cascade when the evaluator row is deleted.", + "description": "Returns a tool identified by its handle.", "tags": [ - "evaluators" + "tools" ], - "summary": "Delete evaluator", + "summary": "Get a tool by handle", "parameters": [ { - "description": "Evaluator ID", - "name": "evaluator_id", + "description": "Tool handle", + "name": "handle", "in": "path", "required": true, "schema": { "type": "string" } - }, - { - "description": "When true, delete all run rules for this evaluator before deleting the evaluator", - "name": "delete_run_rules", - "in": "query", - "schema": { - "type": "boolean", - "title": "Delete Run Rules" - } } ], "responses": { - "204": { - "description": "No Content" + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tools.Tool" + } + } + } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36605,7 +36389,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36615,7 +36399,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36625,17 +36409,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36645,14 +36419,15 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } } - } + }, + "x-public": true }, - "patch": { + "delete": { "security": [ { "API Key": [] @@ -36664,15 +36439,15 @@ "Bearer Auth": [] } ], - "description": "Update an existing evaluator's name, LLM configuration, or code configuration.", + "description": "Deletes a tool identified by its handle.", "tags": [ - "evaluators" + "tools" ], - "summary": "Update evaluator", + "summary": "Delete a tool by handle", "parameters": [ { - "description": "Evaluator ID", - "name": "evaluator_id", + "description": "Tool handle", + "name": "handle", "in": "path", "required": true, "schema": { @@ -36681,22 +36456,15 @@ } ], "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/evaluators.UpdateEvaluatorResponse" - } - } - } + "204": { + "description": "No Content" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36706,7 +36474,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36716,7 +36484,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36726,7 +36494,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36736,26 +36504,15 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/evaluators.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } } }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/evaluators.UpdateEvaluatorRequest" - } - } - } - } - } - }, - "/v1/platform/features": { - "get": { + "x-public": true + }, + "patch": { "security": [ { "API Key": [] @@ -36767,21 +36524,39 @@ "Bearer Auth": [] } ], - "description": "Returns a consolidated view of default models and disabled models per feature for the workspace.", + "description": "Updates an existing tool identified by its handle.", "tags": [ - "features" + "tools" + ], + "summary": "Update a tool by handle", + "parameters": [ + { + "description": "Tool handle", + "name": "handle", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "List feature configurations", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/features.FeatureConfig" - } + "$ref": "#/components/schemas/tools.Tool" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36791,7 +36566,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/features.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36801,7 +36576,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/features.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tools.ErrorResponse" } } } @@ -36811,37 +36596,36 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/features.ErrorResponse" + "$ref": "#/components/schemas/tools.ErrorResponse" } } } } }, - "parameters": [] + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tools.UpdateToolPayload" + } + } + } + } } }, - "/v1/platform/features/{feature}/default-model": { - "put": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Sets or replaces the default model for a feature in the workspace.", + "/v2/datasets/public/{share_token}/experiment-runs": { + "post": { + "description": "Public share-token variant of POST /v2/datasets/{dataset_id}/experiment-runs.\nReturns a paginated page of dataset examples with runs from the requested experiments.", "tags": [ - "features" + "datasets" ], - "summary": "Set default model for a feature", + "summary": "Fetch shared experiment runs for dataset examples", "parameters": [ { - "description": "Feature name", - "name": "feature", + "description": "Dataset share token", + "name": "share_token", "in": "path", "required": true, "schema": { @@ -36850,35 +36634,42 @@ } ], "responses": { - "204": { - "description": "No Content" + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/datasets.V2DatasetsExperimentRunsResponseBody" + } + } + } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/features.ErrorResponse" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, - "401": { - "description": "Unauthorized", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/features.ErrorResponse" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, - "403": { - "description": "Forbidden", + "422": { + "description": "Unprocessable Entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/features.ErrorResponse" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } @@ -36888,44 +36679,56 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/features.ErrorResponse" + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + }, + "502": { + "description": "Bad Gateway", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/features.UpsertDefaultModelRequest" + "$ref": "#/components/schemas/datasets.V2DatasetsExperimentRunsRequestBody" } } } } - }, - "delete": { + } + }, + "/v2/datasets/{dataset_id}/experiment-runs": { + "post": { "security": [ { - "API Key": [] - }, - { + "API Key": [], "Tenant ID": [] }, { - "Bearer Auth": [] + "Bearer Auth": [], + "Tenant ID": [] } ], - "description": "Removes the default model for a feature in the workspace.", + "description": "Returns a paginated page of dataset examples with runs from the requested experiments.\nResponse uses the canonical `{items, next_cursor}` envelope.", "tags": [ - "features" + "datasets" ], - "summary": "Delete default model for a feature", + "summary": "Fetch experiment runs for dataset examples", "parameters": [ { - "description": "Feature name", - "name": "feature", + "description": "Dataset ID", + "name": "dataset_id", "in": "path", "required": true, "schema": { @@ -36934,323 +36737,261 @@ } ], "responses": { - "204": { - "description": "No Content" - }, - "401": { - "description": "Unauthorized", + "200": { + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/features.ErrorResponse" + "$ref": "#/components/schemas/datasets.V2DatasetsExperimentRunsResponseBody" } } } }, - "403": { - "description": "Forbidden", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/features.ErrorResponse" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, - "500": { - "description": "Internal Server Error", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/features.ErrorResponse" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } - } - } - } - }, - "/v1/platform/features/{feature}/disabled-models": { - "put": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Adds a model to the disabled list for a feature in the workspace.", - "tags": [ - "features" - ], - "summary": "Disable a model for a feature", - "parameters": [ - { - "description": "Feature name", - "name": "feature", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "No Content" }, - "400": { - "description": "Bad Request", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/features.ErrorResponse" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, - "401": { - "description": "Unauthorized", + "422": { + "description": "Unprocessable Entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/features.ErrorResponse" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, - "403": { - "description": "Forbidden", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/features.ErrorResponse" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, - "500": { - "description": "Internal Server Error", + "502": { + "description": "Bad Gateway", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/features.ErrorResponse" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/features.DisableModelRequest" + "$ref": "#/components/schemas/datasets.V2DatasetsExperimentRunsRequestBody" } } } } } }, - "/v1/platform/features/{feature}/disabled-models/{model}": { - "delete": { - "security": [ + "/v2/public/{share_token}/run/{run_id}": { + "get": { + "description": "**Alpha:** The request and response contract may change;\nReturns one run within the trace identified by the share token. The request supplies only the run ID and that run's exact start_time coordinate.", + "tags": [ + "runs" + ], + "summary": "Get a public shared trace run", + "parameters": [ { - "API Key": [] + "description": "application/json", + "name": "Accept", + "in": "header", + "schema": { + "type": "string" + } }, { - "Tenant ID": [] + "description": "Share token UUID", + "name": "share_token", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } }, { - "Bearer Auth": [] - } - ], - "description": "Removes a model from the disabled list for a feature in the workspace.", - "tags": [ - "features" - ], - "summary": "Re-enable a disabled model for a feature", - "parameters": [ - { - "description": "Feature name", - "name": "feature", + "description": "Run UUID", + "name": "run_id", "in": "path", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } }, { - "description": "Model name (URL-encoded)", - "name": "model", - "in": "path", + "description": "Run start_time coordinate (RFC3339)", + "name": "start_time", + "in": "query", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "date-time", + "title": "Start Time" + } + }, + { + "description": "repeatable public run fields to include", + "name": "selects", + "in": "query", + "required": true, + "style": "form", + "explode": true, + "schema": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Selects" } } ], "responses": { - "204": { - "description": "No Content" - }, - "400": { - "description": "Bad Request", + "200": { + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/features.ErrorResponse" + "$ref": "#/components/schemas/query.RunResponse" } } } }, - "401": { - "description": "Unauthorized", + "400": { + "description": "bad request (missing or malformed start_time)", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/features.ErrorResponse" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, - "403": { - "description": "Forbidden", + "404": { + "description": "share token or run not found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/features.ErrorResponse" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/features.ErrorResponse" - } - } - } - } - } - } - }, - "/v1/platform/fleet-webhooks/{webhook_id}/run": { - "post": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Sends the request payload to the webhook's stored URL and returns the upstream response in a JSON envelope.", - "tags": [ - "fleet_webhooks" - ], - "summary": "Run a fleet webhook", - "parameters": [ - { - "description": "Webhook UUID", - "name": "webhook_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", + "description": "internal server error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/agent_builder_webhooks.WebhookTestResult" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, - "400": { - "description": "invalid request", + "501": { + "description": "no V2 backend configured and no V1 proxy fallback", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, - "404": { - "description": "webhook not found", + "503": { + "description": "service unavailable", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, - "502": { - "description": "webhook request failed", + "504": { + "description": "gateway timeout or deadline exceeded", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } } }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } - }, - "x-hidden": true + "x-public": true } }, - "/v1/platform/fleet/mcp-servers": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Returns MCP servers visible to the caller after ABAC filtering. Service-key callers may pass X-Ls-User-Id to resolve per-user OAuth providers.", + "/v2/public/{share_token}/runs/v2/query": { + "post": { + "description": "**Alpha:** The request and response contract may change;\nReturns all runs within the trace identified by the share token. The share token supplies the tenant, project, and trace scope.", "tags": [ - "fleet mcp" + "runs" ], - "summary": "List MCP servers", + "summary": "Query public shared trace runs", "parameters": [ { - "description": "User UUID for per-user OAuth resolution (service keys)", - "name": "X-Ls-User-Id", + "description": "application/json", + "name": "Accept", + "in": "header", + "schema": { + "type": "string" + } + }, + { + "description": "application/json", + "name": "Content-Type", "in": "header", "schema": { "type": "string" } + }, + { + "description": "Share token UUID", + "name": "share_token", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } } ], "responses": { @@ -37259,196 +37000,341 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.McpServer" - } + "$ref": "#/components/schemas/query.QueryTraceResponseBody" } } } }, "400": { - "description": "Bad Request", + "description": "bad request (malformed JSON or invalid parameters)", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, - "401": { - "description": "Unauthorized", + "404": { + "description": "share token or shared trace not found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, - "403": { - "description": "Forbidden", + "500": { + "description": "internal server error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, - "500": { - "description": "Internal Server Error", + "501": { + "description": "no V2 backend configured and no V1 proxy fallback", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, "503": { - "description": "Service Unavailable", + "description": "service unavailable", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + }, + "504": { + "description": "gateway timeout or deadline exceeded", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } } }, - "x-hidden": true - }, + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/query.PublicSharedTraceRunsRequestBody" + } + } + } + } + } + }, + "/v2/runs/query": { "post": { "security": [ { - "API Key": [] - }, - { + "API Key": [], "Tenant ID": [] }, { - "Bearer Auth": [] + "Bearer Auth": [], + "Tenant ID": [] } ], - "description": "Registers a new MCP server configuration for the workspace.", + "description": "**Alpha:** The request and response contract may change;\nReturns a paginated list of runs for the given projects within min/max start_time. Supports filters, cursor pagination, and `selects` to select fields to return.", "tags": [ - "fleet mcp" + "runs" + ], + "summary": "Query runs", + "parameters": [ + { + "description": "application/json", + "name": "Accept", + "in": "header", + "schema": { + "type": "string" + } + }, + { + "description": "application/json (required for JSON body)", + "name": "Content-Type", + "in": "header", + "schema": { + "type": "string" + } + } ], - "summary": "Create MCP server", - "parameters": [], "responses": { - "201": { - "description": "Created", + "200": { + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.McpServer" + "$ref": "#/components/schemas/query.QueryRunsResponseBody" } } } }, "400": { - "description": "Bad Request", + "description": "bad request (malformed JSON or invalid parameters)", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, "401": { - "description": "Unauthorized", + "description": "missing or invalid authentication", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, "403": { - "description": "Forbidden", + "description": "forbidden (insufficient permission)", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, - "409": { - "description": "Conflict", + "404": { + "description": "session not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + }, + "422": { + "description": "unprocessable entity (e.g. invalid UUID)", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, "500": { - "description": "Internal Server Error", + "description": "internal server error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, "503": { - "description": "Service Unavailable", + "description": "service unavailable", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + }, + "504": { + "description": "gateway timeout or deadline exceeded", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.CreateMcpServerPayload" + "$ref": "#/components/schemas/query.QueryRunsRequestBody" } } } - }, - "x-hidden": true + } } }, - "/v1/platform/fleet/mcp-servers/{mcp_server_id}": { + "/v2/runs/{run_id}": { "get": { "security": [ { - "API Key": [] - }, - { + "API Key": [], "Tenant ID": [] }, { - "Bearer Auth": [] + "Bearer Auth": [], + "Tenant ID": [] } ], - "description": "Returns a single MCP server by ID.", + "description": "**Alpha:** The request and response contract may change;\nReturns one run by ID for the given session and start_time. Use the `selects` query parameter (repeatable) to select fields to return.", "tags": [ - "fleet mcp" + "runs" ], - "summary": "Get MCP server", + "summary": "Get a single run", "parameters": [ { - "description": "MCP server ID", - "name": "mcp_server_id", + "description": "application/json", + "name": "Accept", + "in": "header", + "schema": { + "type": "string" + } + }, + { + "description": "Run UUID", + "name": "run_id", "in": "path", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" + } + }, + { + "description": "`project_id` is the UUID of the tracing project that owns the run.", + "name": "project_id", + "in": "query", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Project Id" + } + }, + { + "description": "`selects` lists which properties to include on the returned run (repeatable query parameter). Accepts any value of the `RunSelectField` enum. If omitted, only `id` is returned.", + "name": "selects", + "in": "query", + "style": "form", + "explode": true, + "schema": { + "items": { + "enum": [ + "ID", + "NAME", + "RUN_TYPE", + "STATUS", + "START_TIME", + "END_TIME", + "LATENCY_SECONDS", + "FIRST_TOKEN_TIME", + "ERROR", + "ERROR_PREVIEW", + "EXTRA", + "METADATA", + "EVENTS", + "INPUTS", + "INPUTS_PREVIEW", + "OUTPUTS", + "OUTPUTS_PREVIEW", + "MANIFEST", + "PARENT_RUN_IDS", + "PROJECT_ID", + "TRACE_ID", + "THREAD_ID", + "DOTTED_ORDER", + "IS_ROOT", + "REFERENCE_EXAMPLE_ID", + "REFERENCE_DATASET_ID", + "TOTAL_TOKENS", + "PROMPT_TOKENS", + "COMPLETION_TOKENS", + "TOTAL_COST", + "PROMPT_COST", + "COMPLETION_COST", + "PROMPT_TOKEN_DETAILS", + "COMPLETION_TOKEN_DETAILS", + "PROMPT_COST_DETAILS", + "COMPLETION_COST_DETAILS", + "PRICE_MODEL_ID", + "TAGS", + "APP_PATH", + "ATTACHMENTS", + "THREAD_EVALUATION_TIME", + "IS_IN_DATASET", + "SHARE_URL", + "FEEDBACK_STATS" + ], + "type": "string" + }, + "type": "array", + "title": "Selects" + } + }, + { + "description": "`start_time` is the run's `start_time` (RFC3339 date-time), used together with `project_id` to locate the run.", + "name": "start_time", + "in": "query", + "required": true, + "schema": { + "type": "string", + "format": "date-time", + "title": "Start Time" } } ], @@ -37458,75 +37344,97 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.McpServer" + "$ref": "#/components/schemas/query.RunResponse" } } } }, "400": { - "description": "Bad Request", + "description": "bad request (missing or invalid query parameters)", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, "401": { - "description": "Unauthorized", + "description": "missing or invalid authentication", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, "403": { - "description": "Forbidden", + "description": "forbidden (insufficient permission)", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, "404": { - "description": "Not Found", + "description": "run or session not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + }, + "422": { + "description": "unprocessable entity (e.g. invalid UUID)", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, "500": { - "description": "Internal Server Error", + "description": "internal server error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, "503": { - "description": "Service Unavailable", + "description": "service unavailable", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + }, + "504": { + "description": "gateway timeout or deadline exceeded", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } } }, - "x-hidden": true - }, - "delete": { + "x-public": true + } + }, + "/v2/runs/{run_id}/share": { + "post": { "security": [ { "API Key": [] @@ -37538,32 +37446,40 @@ "Bearer Auth": [] } ], - "description": "Deletes an MCP server configuration.", + "description": "Creates or returns a share token for a run. Child runs share their trace root.", "tags": [ - "fleet mcp" + "runs" ], - "summary": "Delete MCP server", + "summary": "Share a run", "parameters": [ { - "description": "MCP server ID", - "name": "mcp_server_id", + "description": "Run UUID", + "name": "run_id", "in": "path", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], "responses": { - "204": { - "description": "No Content" + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/share.CreateShareTokenResponseBody" + } + } + } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } @@ -37573,7 +37489,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } @@ -37583,7 +37499,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } @@ -37593,35 +37509,47 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, - "500": { - "description": "Internal Server Error", + "413": { + "description": "Request Entity Too Large", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, - "503": { - "description": "Service Unavailable", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } } }, - "x-hidden": true - }, - "patch": { + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/share.CreateShareTokenRequestBody" + } + } + } + } + } + }, + "/v2/runs/{trace_id}/share": { + "delete": { "security": [ { "API Key": [] @@ -37633,39 +37561,33 @@ "Bearer Auth": [] } ], - "description": "Partially updates an MCP server. Tool list cache is invalidated on success.", + "description": "Deletes the share token for the trace identified by trace_id and session_id. Idempotent: returns 204 whether or not a share token existed.", "tags": [ - "fleet mcp" + "runs" ], - "summary": "Update MCP server", + "summary": "Unshare a run", "parameters": [ { - "description": "MCP server ID", - "name": "mcp_server_id", + "description": "Trace root UUID", + "name": "trace_id", "in": "path", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.McpServer" - } - } - } + "204": { + "description": "No Content" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } @@ -37675,7 +37597,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } @@ -37685,17 +37607,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } }, - "404": { - "description": "Not Found", + "413": { + "description": "Request Entity Too Large", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } @@ -37705,37 +37627,27 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" - } - } - } - }, - "503": { - "description": "Service Unavailable", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/shared.ProblemDetails" } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.UpdateMcpServerPayload" + "$ref": "#/components/schemas/share.DeleteShareTokenRequestBody" } } } - }, - "x-hidden": true + } } }, - "/v1/platform/fleet/mcp-servers/{mcp_server_id}/oauth-provider": { - "post": { + "/v2/sandboxes/boxes": { + "get": { "security": [ { "API Key": [] @@ -37745,21 +37657,82 @@ }, { "Bearer Auth": [] + }, + { + "X-Service-Key": [] } ], - "description": "Discovers and registers an OAuth provider for a user against an MCP server configured with per-user dynamic client mode. Idempotent when a mapping already exists.", + "description": "List sandboxes for the authenticated tenant, with optional filtering, sorting, and pagination.", "tags": [ - "fleet mcp" + "sandboxes" ], - "summary": "Register per-user MCP OAuth provider", + "summary": "List sandboxes", "parameters": [ { - "description": "MCP server ID", - "name": "mcp_server_id", - "in": "path", - "required": true, + "description": "Maximum number of results", + "name": "limit", + "in": "query", "schema": { - "type": "string" + "default": 50, + "type": "integer", + "title": "Limit" + } + }, + { + "description": "Pagination offset", + "name": "offset", + "in": "query", + "schema": { + "default": 0, + "type": "integer", + "title": "Offset" + } + }, + { + "description": "Filter by name substring", + "name": "name_contains", + "in": "query", + "schema": { + "type": "string", + "title": "Name Contains" + } + }, + { + "description": "Filter by status (provisioning, ready, failed, stopped, deleting)", + "name": "status", + "in": "query", + "schema": { + "type": "string", + "title": "Status" + } + }, + { + "description": "Filter by creator identity. Only 'me' is supported.", + "name": "created_by", + "in": "query", + "schema": { + "type": "string", + "title": "Created By" + } + }, + { + "description": "Sort column (name, status, created_at)", + "name": "sort_by", + "in": "query", + "schema": { + "default": "created_at", + "type": "string", + "title": "Sort By" + } + }, + { + "description": "Sort direction (asc, desc)", + "name": "sort_direction", + "in": "query", + "schema": { + "default": "desc", + "type": "string", + "title": "Sort Direction" } } ], @@ -37769,7 +37742,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.RegisterOAuthProviderResponse" + "$ref": "#/components/schemas/sandboxes.SandboxListResponse" } } } @@ -37779,66 +37752,141 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, - "401": { - "description": "Unauthorized", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, - "404": { - "description": "Not Found", + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } + } + } + }, + "x-public": true + }, + "post": { + "security": [ + { + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + }, + { + "X-Service-Key": [] + } + ], + "description": "Create a new sandbox from a snapshot. Provide at most one of `snapshot_id` or `snapshot_name`; if neither is provided, the server uses the default snapshot.", + "tags": [ + "sandboxes" + ], + "summary": "Create a sandbox", + "parameters": [], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.SandboxResponse" + } + } + } + }, + "400": { + "description": "Snapshot not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } + } + }, + "409": { + "description": "Name already exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } + } + }, + "422": { + "description": "Validation error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } + } + }, + "429": { + "description": "Quota exceeded", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, "500": { - "description": "Internal Server Error", + "description": "Sandbox creation failed or internal error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, - "503": { - "description": "Service Unavailable", + "504": { + "description": "Sandbox did not become ready in time", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_servers.McpServerAPIError" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.RegisterOAuthProviderPayload" + "$ref": "#/components/schemas/sandboxes.CreateSandboxPayload" } } } - }, - "x-hidden": true + } } }, - "/v1/platform/fleet/providers/github-app/auth": { + "/v2/sandboxes/boxes/batch-delete": { "post": { "security": [ { @@ -37851,18 +37899,19 @@ "Bearer Auth": [] } ], - "description": "Generate a GitHub OAuth link for the current user to connect their GitHub account.", + "description": "Delete multiple sandboxes by name or UUID in a single request.", "tags": [ - "fleet github-app" + "sandboxes" ], - "summary": "Get GitHub OAuth authorization link", + "summary": "Batch delete sandboxes", + "parameters": [], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.UserAuthLinkResponse" + "$ref": "#/components/schemas/sandboxes.BatchDeleteResponse" } } } @@ -37872,27 +37921,46 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, - "503": { - "description": "Service Unavailable", + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } + } + }, + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } } }, - "parameters": [], - "x-hidden": true + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.BatchDeleteRequest" + } + } + } + } } }, - "/v1/platform/fleet/providers/github-app/connection": { + "/v2/sandboxes/boxes/{name}": { "get": { "security": [ { @@ -37903,30 +37971,44 @@ }, { "Bearer Auth": [] + }, + { + "X-Service-Key": [] } ], - "description": "Return the current user's GitHub connection status and metadata.", + "description": "Retrieve a sandbox by name. Stale provisioning sandboxes are auto-failed.", "tags": [ - "fleet github-app" + "sandboxes" + ], + "summary": "Get a sandbox", + "parameters": [ + { + "description": "Sandbox display name", + "name": "name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Get GitHub user connection status", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.UserConnectionStatus" + "$ref": "#/components/schemas/sandboxes.SandboxResponse" } } } }, - "400": { - "description": "Bad Request", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -37936,14 +38018,13 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } } }, - "parameters": [], - "x-hidden": true + "x-public": true }, "delete": { "security": [ @@ -37955,23 +38036,37 @@ }, { "Bearer Auth": [] + }, + { + "X-Service-Key": [] } ], - "description": "Remove the current user's GitHub connection and all linked installations.", + "description": "Delete a sandbox by name or UUID. Tears down the sandbox runtime and removes the DB record.", "tags": [ - "fleet github-app" + "sandboxes" + ], + "summary": "Delete a sandbox", + "parameters": [ + { + "description": "Sandbox display name or UUID", + "name": "name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Delete GitHub user connection", "responses": { "204": { - "description": "No Content" + "description": "No content" }, - "400": { - "description": "Bad Request", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -37981,14 +38076,13 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } } }, - "parameters": [], - "x-hidden": true + "x-public": true }, "patch": { "security": [ @@ -38000,41 +38094,64 @@ }, { "Bearer Auth": [] + }, + { + "X-Service-Key": [] } ], - "description": "Update the actor preference for the current user's GitHub connection.", + "description": "Update a sandbox's display name. The name must be unique within the tenant.", "tags": [ - "fleet github-app" + "sandboxes" + ], + "summary": "Update a sandbox", + "parameters": [ + { + "description": "Current sandbox display name", + "name": "name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Update GitHub user connection", - "parameters": [], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.UserConnectionStatus" + "$ref": "#/components/schemas/sandboxes.SandboxResponse" } } } }, - "400": { - "description": "Bad Request", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, - "404": { - "description": "Not Found", + "409": { + "description": "Name already exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } + } + }, + "422": { + "description": "Validation error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -38044,26 +38161,26 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.UpdateUserConnectionRequest" + "$ref": "#/components/schemas/sandboxes.UpdateSandboxPayload" } } } - }, - "x-hidden": true + } } }, - "/v1/platform/fleet/providers/github-app/install": { + "/v2/sandboxes/boxes/{name}/service-url": { "post": { "security": [ { @@ -38076,18 +38193,29 @@ "Bearer Auth": [] } ], - "description": "Generate a link to install the GitHub App for the current organization.", + "description": "Create a short-lived JWT for accessing an HTTP service running on a specific port inside a sandbox. Returns a browser_url (sets auth cookie via redirect), a service_url (for use with the X-Langsmith-Sandbox-Service-Token header), the raw token, and its expiry.", "tags": [ - "fleet github-app" + "sandboxes" + ], + "summary": "Generate a service access token", + "parameters": [ + { + "description": "Sandbox display name", + "name": "name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Get GitHub App install link", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.InstallLinkResponse" + "$ref": "#/components/schemas/sandboxes.ServiceURLResponse" } } } @@ -38097,7 +38225,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -38107,84 +38235,56 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, - "503": { - "description": "Service Unavailable", + "422": { + "description": "Unprocessable Entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } - } - }, - "parameters": [], - "x-hidden": true - } - }, - "/v1/platform/fleet/providers/github-app/installations": { - "get": { - "security": [ - { - "API Key": [] }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Return GitHub App installations linked to the current user from\nour database. This is a cache — it does not hit the GitHub API.\nUse POST /installations/refresh to force a fresh sync from GitHub.", - "tags": [ - "fleet github-app" - ], - "summary": "List GitHub App installations", - "responses": { - "200": { - "description": "OK", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/github_app.Installation" - } + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, - "400": { - "description": "Bad Request", + "501": { + "description": "Not Implemented", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" - } + } + }, + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ServiceURLPayload" } } } - }, - "parameters": [], - "x-hidden": true + } } }, - "/v1/platform/fleet/providers/github-app/installations/refresh": { + "/v2/sandboxes/boxes/{name}/snapshot": { "post": { "security": [ { @@ -38197,21 +38297,29 @@ "Bearer Auth": [] } ], - "description": "Trigger a live sync with GitHub for the current user's GitHub App\ninstallations. Upserts new installations, deletes stale ones, and\nreturns the refreshed list. Requires an existing GitHub connection.", + "description": "Create a snapshot by capturing the current state of a sandbox or promoting an existing checkpoint.", "tags": [ - "fleet github-app" + "sandboxes" + ], + "summary": "Capture a snapshot from a sandbox", + "parameters": [ + { + "description": "Sandbox display name", + "name": "name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Refresh GitHub App installations", "responses": { - "200": { - "description": "OK", + "201": { + "description": "Created", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/github_app.Installation" - } + "$ref": "#/components/schemas/sandboxes.SnapshotResponse" } } } @@ -38221,7 +38329,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -38231,28 +38349,47 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } + } + }, + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } } }, - "parameters": [], - "x-hidden": true + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.CaptureSnapshotPayload" + } + } + } + } } }, - "/v1/platform/fleet/providers/github-app/installations/{id}": { - "delete": { + "/v2/sandboxes/boxes/{name}/start": { + "post": { "security": [ { "API Key": [] @@ -38264,15 +38401,15 @@ "Bearer Auth": [] } ], - "description": "Remove a GitHub App installation link for the current user.", + "description": "Start a stopped or failed sandbox. This endpoint is not idempotent.", "tags": [ - "fleet github-app" + "sandboxes" ], - "summary": "Delete a GitHub App installation", + "summary": "Start a sandbox", "parameters": [ { - "description": "Installation ID", - "name": "id", + "description": "Sandbox display name", + "name": "name", "in": "path", "required": true, "schema": { @@ -38281,15 +38418,32 @@ } ], "responses": { - "204": { - "description": "No Content" + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.SandboxResponse" + } + } + } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -38299,16 +38453,26 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } } }, - "x-hidden": true + "x-public": true } }, - "/v1/platform/fleet/providers/github-app/installations/{id}/repos": { + "/v2/sandboxes/boxes/{name}/status": { "get": { "security": [ { @@ -38319,17 +38483,20 @@ }, { "Bearer Auth": [] + }, + { + "X-Service-Key": [] } ], - "description": "Return repositories accessible to the specified GitHub App installation.", + "description": "Retrieve the lightweight status of a sandbox for polling.", "tags": [ - "fleet github-app" + "sandboxes" ], - "summary": "List repositories for a GitHub App installation", + "summary": "Get sandbox status", "parameters": [ { - "description": "Installation ID", - "name": "id", + "description": "Sandbox display name", + "name": "name", "in": "path", "required": true, "schema": { @@ -38343,20 +38510,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/github_app.Repository" - } - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.SandboxStatusResponse" } } } @@ -38366,26 +38520,26 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, - "502": { - "description": "Bad Gateway", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } } }, - "x-hidden": true + "x-public": true } }, - "/v1/platform/fleet/providers/github-app/tokens": { + "/v2/sandboxes/boxes/{name}/stop": { "post": { "security": [ { @@ -38398,94 +38552,71 @@ "Bearer Auth": [] } ], - "description": "Return a short-lived GitHub access token scoped to the given repository.", + "description": "Stop a ready sandbox. This endpoint is not idempotent; the filesystem is preserved for later restart.", "tags": [ - "fleet github-app" + "sandboxes" ], - "summary": "Request a GitHub access token", - "parameters": [], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/github_app.UserTokenResponse" - } - } + "summary": "Stop a sandbox", + "parameters": [ + { + "description": "Sandbox display name", + "name": "name", + "in": "path", + "required": true, + "schema": { + "type": "string" } + } + ], + "responses": { + "204": { + "description": "Sandbox stopped" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, - "404": { - "description": "Not Found", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/github_app.TokenRequest" - } - } - } - }, - "x-hidden": true - } - }, - "/v1/platform/fleet/providers/github-app/webhooks": { - "post": { - "description": "Process GitHub App webhooks (installation lifecycle, installation_repositories). GitHub may deliver the same event more than once; handling re-applies the current repository-selection state and is safe to repeat.", - "tags": [ - "fleet github-app" - ], - "summary": "Handle GitHub App webhook events", - "responses": { - "200": { - "description": "OK" }, - "400": { - "description": "Bad Request", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, - "403": { - "description": "Forbidden", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/github_app.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } } }, - "parameters": [], - "x-hidden": true + "x-public": true } }, - "/v1/platform/fleet/usage/agents": { + "/v2/sandboxes/registries": { "get": { "security": [ { @@ -38498,60 +38629,37 @@ "Bearer Auth": [] } ], - "description": "Returns the top agents in the workspace with cost data for the given time window. Defaults to sorting by cost descending; pass sort_by and sort_order to change. Data is sourced entirely from ClickHouse run metadata.", + "description": "List sandbox registries for pulling private images.", "tags": [ - "fleet usage" + "sandboxes" ], - "summary": "List fleet agents with usage", + "summary": "List registries", "parameters": [ { - "description": "Max results (max 100)", + "description": "Maximum number of registries to return", "name": "limit", "in": "query", "schema": { "type": "integer", - "default": 20, "title": "Limit" } }, { - "description": "Start of cost window (ISO8601)", - "name": "start_time", - "in": "query", - "required": true, - "schema": { - "type": "string", - "title": "Start Time" - } - }, - { - "description": "End of cost window (ISO8601)", - "name": "end_time", - "in": "query", - "required": true, - "schema": { - "type": "string", - "title": "End Time" - } - }, - { - "description": "Sort field (cost, runs, last_used, first_used)", - "name": "sort_by", + "description": "Number of registries to skip", + "name": "offset", "in": "query", "schema": { - "type": "string", - "default": "cost", - "title": "Sort By" + "type": "integer", + "title": "Offset" } }, { - "description": "Sort direction (asc, desc)", - "name": "sort_order", + "description": "Filter to registries whose name contains this substring", + "name": "name_contains", "in": "query", "schema": { "type": "string", - "default": "desc", - "title": "Sort Order" + "title": "Name Contains" } } ], @@ -38561,7 +38669,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/usage.AgentUsageResponse" + "$ref": "#/components/schemas/sandboxes.RegistryListResponse" } } } @@ -38571,7 +38679,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/errutil.UserError" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -38581,17 +38699,15 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/errutil.InternalError" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } } }, - "x-hidden": true - } - }, - "/v1/platform/fleet/usage/models": { - "get": { + "x-public": true + }, + "post": { "security": [ { "API Key": [] @@ -38603,60 +38719,103 @@ "Bearer Auth": [] } ], - "description": "Returns the top models used in the workspace with aggregated cost and distinct run counts for the given time window. Defaults to sorting by cost descending; pass sort_by and sort_order to change.", + "description": "Create a sandbox registry for pulling private images.", "tags": [ - "fleet usage" + "sandboxes" ], - "summary": "List fleet models with usage", - "parameters": [ - { - "description": "Max results (max 100)", - "name": "limit", - "in": "query", - "schema": { - "type": "integer", - "default": 20, - "title": "Limit" + "summary": "Create a registry", + "parameters": [], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.RegistryResponse" + } + } } }, - { - "description": "Start of window (ISO8601)", - "name": "start_time", - "in": "query", - "required": true, - "schema": { - "type": "string", - "title": "Start Time" + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } } }, - { - "description": "End of window (ISO8601)", - "name": "end_time", - "in": "query", - "required": true, - "schema": { - "type": "string", - "title": "End Time" + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } } }, - { - "description": "Sort field (cost, runs, last_used)", - "name": "sort_by", - "in": "query", - "schema": { - "type": "string", - "default": "cost", - "title": "Sort By" + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } } }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } + } + } + }, + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.CreateRegistryPayload" + } + } + } + } + } + }, + "/v2/sandboxes/registries/{name}": { + "get": { + "security": [ { - "description": "Sort direction (asc, desc)", - "name": "sort_order", - "in": "query", + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "description": "Get a sandbox registry by name.", + "tags": [ + "sandboxes" + ], + "summary": "Get a registry", + "parameters": [ + { + "description": "Registry name", + "name": "name", + "in": "path", + "required": true, "schema": { - "type": "string", - "default": "desc", - "title": "Sort Order" + "type": "string" } } ], @@ -38666,17 +38825,27 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/usage.ModelUsageResponse" + "$ref": "#/components/schemas/sandboxes.RegistryResponse" } } } }, - "400": { - "description": "Bad Request", + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/errutil.UserError" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -38686,17 +38855,15 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/errutil.InternalError" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } } }, - "x-hidden": true - } - }, - "/v1/platform/fleet/usage/tools": { - "get": { + "x-public": true + }, + "delete": { "security": [ { "API Key": [] @@ -38708,60 +38875,84 @@ "Bearer Auth": [] } ], - "description": "Returns the top tools in the workspace with run counts, latency, and agent counts for the given time window. Defaults to sorting by runs descending; pass sort_by and sort_order to change.", + "description": "Delete a sandbox registry by name.", "tags": [ - "fleet usage" + "sandboxes" ], - "summary": "List fleet tools with usage", + "summary": "Delete a registry", "parameters": [ { - "description": "Max results (max 100)", - "name": "limit", - "in": "query", + "description": "Registry name", + "name": "name", + "in": "path", + "required": true, "schema": { - "type": "integer", - "default": 20, - "title": "Limit" + "type": "string" } + } + ], + "responses": { + "204": { + "description": "No Content" }, - { - "description": "Start of window (ISO8601)", - "name": "start_time", - "in": "query", - "required": true, - "schema": { - "type": "string", - "title": "Start Time" + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } } }, - { - "description": "End of window (ISO8601)", - "name": "end_time", - "in": "query", - "required": true, - "schema": { - "type": "string", - "title": "End Time" + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } } }, - { - "description": "Sort field (runs, avg_latency_ms, agent_count, last_used)", - "name": "sort_by", - "in": "query", - "schema": { - "type": "string", - "default": "runs", - "title": "Sort By" + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } } + } + }, + "x-public": true + }, + "patch": { + "security": [ + { + "API Key": [] }, { - "description": "Sort direction (asc, desc)", - "name": "sort_order", - "in": "query", + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "description": "Update a sandbox registry's name and/or credentials.", + "tags": [ + "sandboxes" + ], + "summary": "Update a registry", + "parameters": [ + { + "description": "Registry name", + "name": "name", + "in": "path", + "required": true, "schema": { - "type": "string", - "default": "desc", - "title": "Sort Order" + "type": "string" } } ], @@ -38771,7 +38962,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/usage.ToolUsageResponse" + "$ref": "#/components/schemas/sandboxes.RegistryResponse" } } } @@ -38781,7 +38972,37 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/errutil.UserError" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -38791,16 +39012,26 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/errutil.InternalError" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } } }, - "x-hidden": true + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.UpdateRegistryPayload" + } + } + } + } } }, - "/v1/platform/fleet/usage/users": { + "/v2/sandboxes/snapshots": { "get": { "security": [ { @@ -38813,60 +39044,77 @@ "Bearer Auth": [] } ], - "description": "Returns the top users with aggregated cost data for the given time window. Defaults to sorting by cost descending; pass sort_by and sort_order to change.", + "description": "List sandbox snapshots for the authenticated tenant, with optional filtering, sorting, and pagination.", "tags": [ - "fleet usage" + "sandboxes" ], - "summary": "List fleet users with usage", + "summary": "List snapshots", "parameters": [ { - "description": "Max results (max 100)", + "description": "Maximum number of results", "name": "limit", "in": "query", "schema": { + "default": 50, "type": "integer", - "default": 20, "title": "Limit" } }, { - "description": "Start of cost window (ISO8601)", - "name": "start_time", + "description": "Pagination offset", + "name": "offset", + "in": "query", + "schema": { + "default": 0, + "type": "integer", + "title": "Offset" + } + }, + { + "description": "Filter by name substring", + "name": "name_contains", "in": "query", - "required": true, "schema": { "type": "string", - "title": "Start Time" + "title": "Name Contains" } }, { - "description": "End of cost window (ISO8601)", - "name": "end_time", + "description": "Filter by status (building, ready, failed, deleting)", + "name": "status", "in": "query", - "required": true, "schema": { "type": "string", - "title": "End Time" + "title": "Status" + } + }, + { + "description": "Filter by creator identity. Only 'me' is supported.", + "name": "created_by", + "in": "query", + "schema": { + "type": "string", + "title": "Created By" } }, { - "description": "Sort field (cost, runs, agent_count, last_used, first_used)", + "description": "Sort column (name, status, created_at)", "name": "sort_by", "in": "query", "schema": { + "default": "created_at", "type": "string", - "default": "cost", "title": "Sort By" } }, { "description": "Sort direction (asc, desc)", - "name": "sort_order", + "name": "sort_direction", "in": "query", "schema": { - "type": "string", "default": "desc", - "title": "Sort Order" + "type": "string", + "title": "Sort Direction" } } ], @@ -38876,7 +39124,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/usage.UserUsageResponse" + "$ref": "#/components/schemas/sandboxes.SnapshotListResponse" } } } @@ -38886,7 +39134,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/errutil.UserError" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -38896,60 +39154,59 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/errutil.InternalError" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } } }, - "x-hidden": true - } - }, - "/v1/platform/gateway-policies": { - "get": { + "x-public": true + }, + "post": { "security": [ { "API Key": [] }, + { + "Tenant ID": [] + }, { "Bearer Auth": [] } ], - "description": "Returns every gateway policy in the current organization.\nThe response includes both admin-created policies and\nruntime-materialized children of `default_spend_cap`\npolicies (children carry `parent_policy_id`).\n\n**Spend tracking:** each spend-cap policy carries\n`current_spend_usd` — the spend accumulated in the policy's\nactive window.", + "description": "Create a snapshot from a Docker image (async build).", "tags": [ - "gateway-policies" + "sandboxes" ], - "summary": "List gateway policies", + "summary": "Create a snapshot", + "parameters": [], "responses": { - "200": { - "description": "OK", + "201": { + "description": "Created", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/gateway_policies.GatewayPolicyRecord" - } + "$ref": "#/components/schemas/sandboxes.SnapshotResponse" } } } }, - "401": { - "description": "Unauthorized", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, "403": { - "description": "LLM Gateway not enabled, or caller lacks OrganizationRead", + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -38959,76 +39216,91 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } } }, - "parameters": [] - }, - "post": { + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.CreateSnapshotPayload" + } + } + } + } + } + }, + "/v2/sandboxes/snapshots/{snapshot_id}": { + "get": { "security": [ { "API Key": [] }, + { + "Tenant ID": [] + }, { "Bearer Auth": [] } ], - "description": "Creates a gateway policy for the calling organization.\n\n**policy_type** is one of `spend_cap`, `default_spend_cap`, or\n`guard`. The shape of `config` depends on policy_type:\n- `spend_cap` / `default_spend_cap`:\n`{\"window\": \"hourly\"|\"daily\"|\"weekly\"|\"monthly\", \"limit_usd\": }`\n- `guard`:\n`{\"version\": 1, \"detect\": {\"pii\": , \"secrets\": }, \"timeout_seconds\": }`\n`timeout_seconds` (optional, 0.1–30) caps guard pipeline execution time; defaults to 2s.\n\n**subject_matchers** is a list of `{key, value}` pairs.\n`key` is one of `organization_id`, `workspace_id`, `user_id`,\n`api_key_id`, or `run_rule_id`. Multiple matchers AND together. A\n`default_spend_cap` uses `{key, value: \"\"}` so the runtime\nmaterializes a per-subject child for every distinct subject\nof that kind it sees in request metadata.\n\n**action** is currently always `block`. Spend caps reject the\nrequest with 402 when the limit is hit; guard policies redact\nmatched content in-place before forwarding upstream.\n\n**Upsert by matchers:** if a policy with the same\n`subject_matchers` already exists in this organization, the\nexisting policy is updated in place instead of a duplicate\nbeing created. `id` is preserved. Returns 201 either way.", + "description": "Get a sandbox snapshot by ID.", "tags": [ - "gateway-policies" + "sandboxes" + ], + "summary": "Get a snapshot", + "parameters": [ + { + "description": "Snapshot UUID", + "name": "snapshot_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Create a gateway policy", - "parameters": [], "responses": { - "201": { - "description": "Created", + "200": { + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.GatewayPolicyRecord" + "$ref": "#/components/schemas/sandboxes.SnapshotResponse" } } } }, "400": { - "description": "validation failure (bad matchers, unknown policy_type, missing required field)", + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, - "401": { - "description": "missing or invalid auth", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, - "403": { - "description": "LLM Gateway not enabled for the organization, or caller lacks OrganizationManage", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" - } - } - } - }, - "409": { - "description": "policy name conflict", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -39038,100 +39310,118 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } } }, - "x-codeSamples": [ - { - "label": "spend_cap", - "lang": "json", - "source": "{\n \"name\": \"monthly-cap\",\n \"policy_type\": \"spend_cap\",\n \"action\": \"block\",\n \"subject_matchers\": [{\"key\":\"organization_id\",\"value\":\"\"}],\n \"config\": {\"window\": \"monthly\", \"limit_usd\": 100}\n}" - }, - { - "label": "guard", - "lang": "json", - "source": "{\n \"name\": \"redact-pii\",\n \"policy_type\": \"guard\",\n \"action\": \"block\",\n \"subject_matchers\": [{\"key\":\"organization_id\",\"value\":\"\"}],\n \"config\": {\"version\": 1, \"detect\": {\"pii\": true, \"secrets\": true}, \"timeout_seconds\": 3}\n}" - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/gateway_policies.CreateGatewayPolicyRequest" - } - } - } - } - } - }, - "/v1/platform/gateway-policies/{id}": { - "get": { + "x-public": true + }, + "delete": { "security": [ { "API Key": [] }, + { + "Tenant ID": [] + }, { "Bearer Auth": [] } ], - "description": "Returns a single gateway policy by id. Cross-org access is\nrejected with 404\n\n**Spend tracking:** spend-cap policies include\n`current_spend_usd` for the active window so callers can\nread per-policy cost without hitting a separate endpoint.\nGuard policies leave it null.", + "description": "Delete a snapshot by ID. The underlying storage is reclaimed asynchronously.", "tags": [ - "gateway-policies" + "sandboxes" ], - "summary": "Get a gateway policy", + "summary": "Delete a snapshot", "parameters": [ { - "description": "Policy ID", - "name": "id", + "description": "Snapshot UUID", + "name": "snapshot_id", "in": "path", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], "responses": { - "200": { - "description": "OK", + "204": { + "description": "Snapshot deleted" + }, + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.GatewayPolicyRecord" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, - "401": { - "description": "Unauthorized", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, - "403": { - "description": "LLM Gateway not enabled, or caller lacks OrganizationRead", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, - "404": { - "description": "policy not found", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } + } + } + }, + "x-public": true + } + }, + "/v2/sandboxes/usage": { + "get": { + "security": [ + { + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + }, + { + "X-Service-Key": [] + } + ], + "description": "Get current sandbox resource usage and quota limits for the workspace", + "tags": [ + "sandboxes" + ], + "summary": "Get sandbox resource usage", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.UsageResponse" } } } @@ -39141,69 +39431,85 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } } - } - }, - "delete": { + }, + "x-public": true, + "parameters": [] + } + }, + "/v2/sandboxes/{sandbox_id}/download": { + "get": { "security": [ { "API Key": [] }, + { + "Tenant ID": [] + }, { "Bearer Auth": [] } ], - "description": "Deletes a gateway policy. Subsequent reads return 404.\n\n**default_spend_cap cascade:** deleting a `default_spend_cap`\nalso deletes every child policy materialized from it.", + "description": "Download file contents from a sandbox filesystem path.", "tags": [ - "gateway-policies" + "sandboxes" ], - "summary": "Delete a gateway policy", + "summary": "Download a sandbox file", "parameters": [ { - "description": "Policy ID", - "name": "id", + "description": "Sandbox ID or name", + "name": "sandbox_id", "in": "path", "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "File path to download", + "name": "path", + "in": "query", + "required": true, "schema": { "type": "string", - "format": "uuid" + "title": "Path" } } ], "responses": { - "204": { - "description": "No Content" + "200": { + "description": "File content" }, - "401": { - "description": "Unauthorized", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, "403": { - "description": "LLM Gateway not enabled, or caller lacks OrganizationManage", + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, "404": { - "description": "policy not found", + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -39213,36 +39519,41 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } } - } - }, - "patch": { + }, + "x-public": true + } + }, + "/v2/sandboxes/{sandbox_id}/execute": { + "post": { "security": [ { "API Key": [] }, + { + "Tenant ID": [] + }, { "Bearer Auth": [] } ], - "description": "Partially updates a gateway policy. Only fields present in\nthe request body are applied; absent fields are left\nunchanged. `policy_type` is immutable — to change a\npolicy's type, delete it and create a new one.\n\n**config** if supplied must match the policy's type:\n- spend-cap: `{\"window\": ..., \"limit_usd\": ...}`\n- guard: `{\"version\": 1, \"detect\": {...}, \"timeout_seconds\": }`\nMismatched shapes are rejected with 400.\n\n**default_spend_cap cascade:** editing a `default_spend_cap`\nupdates the config/action/enabled/priority on every\nattached child policy so the template stays the source of\ntruth across rollouts.", + "description": "Execute a command inside a sandbox and return stdout, stderr, and exit code.", "tags": [ - "gateway-policies" + "sandboxes" ], - "summary": "Update a gateway policy", + "summary": "Execute a sandbox command", "parameters": [ { - "description": "Policy ID", - "name": "id", + "description": "Sandbox ID or name", + "name": "sandbox_id", "in": "path", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], @@ -39252,57 +39563,37 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.GatewayPolicyRecord" + "$ref": "#/components/schemas/sandboxes.ExecResponse" } } } }, "400": { - "description": "validation failure", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, "403": { - "description": "LLM Gateway not enabled, or caller lacks OrganizationManage", + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } }, "404": { - "description": "policy not found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" - } - } - } - }, - "409": { - "description": "matcher edit collides with another policy in the same family", + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -39312,37 +39603,26 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.errorResponse" + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } } }, - "x-codeSamples": [ - { - "label": "spend_cap", - "lang": "json", - "source": "{\n \"config\": {\"window\": \"monthly\", \"limit_usd\": 200},\n \"enabled\": false\n}" - }, - { - "label": "guard", - "lang": "json", - "source": "{\n \"config\": {\"version\": 1, \"detect\": {\"pii\": true, \"secrets\": true}, \"timeout_seconds\": 5},\n \"enabled\": true\n}" - } - ], + "x-public": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/gateway_policies.UpdateGatewayPolicyRequest" + "$ref": "#/components/schemas/sandboxes.ExecRequest" } } } } } }, - "/v1/platform/hub/repos/{owner}/{repo}/directories": { + "/v2/sandboxes/{sandbox_id}/execute/ws": { "get": { "security": [ { @@ -39355,73 +39635,32 @@ "Bearer Auth": [] } ], - "description": "Resolves the flattened file tree for an agent or skill repository at a specific commit, tag, or latest.", + "description": "Open a WebSocket connection for streaming command execution inside a sandbox.", "tags": [ - "directories" + "sandboxes" ], - "summary": "Get directory contents", + "summary": "Execute a sandbox command over WebSocket", "parameters": [ { - "description": "Repository owner handle or '-' for current tenant", - "name": "owner", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Repository handle", - "name": "repo", + "description": "Sandbox ID or name", + "name": "sandbox_id", "in": "path", "required": true, "schema": { "type": "string" } - }, - { - "description": "Commit hash/tag to resolve (defaults to latest)", - "name": "commit", - "in": "query", - "schema": { - "type": "string", - "title": "Commit" - } } ], "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/directories.GetDirectoryResponse" - } - } - } + "101": { + "description": "WebSocket upgrade" }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -39431,10 +39670,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -39444,10 +39680,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -39457,17 +39690,17 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } } - } - }, - "delete": { + }, + "x-public": true + } + }, + "/v2/sandboxes/{sandbox_id}/glob": { + "post": { "security": [ { "API Key": [] @@ -39479,24 +39712,15 @@ "Bearer Auth": [] } ], - "description": "Deletes an agent or skill repository and its owned child file repositories.", + "description": "Find files under a root path matching a glob pattern (supports **). Entries are returned in lexical order by path.", "tags": [ - "directories" + "sandboxes" ], - "summary": "Delete directory repository", + "summary": "Glob a sandbox filesystem", "parameters": [ { - "description": "Repository owner handle or '-' for current tenant", - "name": "owner", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Repository handle", - "name": "repo", + "description": "Sandbox ID or name", + "name": "sandbox_id", "in": "path", "required": true, "schema": { @@ -39505,31 +39729,22 @@ } ], "responses": { - "204": { - "description": "No Content" - }, - "400": { - "description": "Bad Request", + "200": { + "description": "OK", "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/sandboxes.GlobResponse" } } } }, - "401": { - "description": "Unauthorized", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -39539,10 +39754,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -39552,10 +39764,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -39565,18 +39774,26 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } } + }, + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.GlobRequest" + } + } + } } } }, - "/v1/platform/hub/repos/{owner}/{repo}/directories/commits": { + "/v2/sandboxes/{sandbox_id}/grep": { "post": { "security": [ { @@ -39589,24 +39806,15 @@ "Bearer Auth": [] } ], - "description": "Creates a new directory commit for an agent or skill repository by applying file/link create, update, and delete operations.", + "description": "Search files under a root path for a literal text pattern (not a regex).", "tags": [ - "directories" + "sandboxes" ], - "summary": "Create directory commit", + "summary": "Grep a sandbox filesystem", "parameters": [ { - "description": "Repository owner handle or '-' for current tenant", - "name": "owner", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Repository handle", - "name": "repo", + "description": "Sandbox ID or name", + "name": "sandbox_id", "in": "path", "required": true, "schema": { @@ -39620,7 +39828,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/directories.CommitResponse" + "$ref": "#/components/schemas/sandboxes.GrepResponse" } } } @@ -39630,23 +39838,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -39656,10 +39848,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -39669,23 +39858,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } @@ -39695,28 +39868,26 @@ "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/sandboxes.ErrorResponse" } } } } }, + "x-public": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/directories.CreateDirectoryCommitRequest" + "$ref": "#/components/schemas/sandboxes.GrepRequest" } } } } } }, - "/v1/platform/issues": { + "/v2/sandboxes/{sandbox_id}/tunnel": { "get": { "security": [ { @@ -39729,4957 +39900,62 @@ "Bearer Auth": [] } ], - "description": "**Beta:** This endpoint is in active development and may change without notice.\n\nReturns issues for the authenticated tenant, optionally filtered\nby session, status, severity, tag, or last modified time.", + "description": "Open a WebSocket tunnel to a specific port inside a sandbox.", "tags": [ - "issues" + "sandboxes" ], - "summary": "[Beta] List issues", + "summary": "Open a sandbox TCP tunnel", "parameters": [ { - "description": "Filter by session ID (UUID)", - "name": "session_id", - "in": "query", + "description": "Sandbox ID or name", + "name": "sandbox_id", + "in": "path", + "required": true, "schema": { - "type": "string", - "title": "Session Id" + "type": "string" } }, { - "description": "Filter by session name (exact match)", - "name": "session_name", - "in": "query", + "description": "Target sandbox TCP port", + "name": "X-Sandbox-Port", + "in": "header", "schema": { - "type": "string", - "title": "Session Name" + "type": "integer" } + } + ], + "responses": { + "101": { + "description": "WebSocket upgrade" }, - { - "description": "Filter by status", - "name": "status", - "in": "query", - "schema": { - "enum": [ - "open", - "completed", - "ignored" - ], - "type": "string", - "title": "Status" + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } } }, - { - "description": "Filter by severity", - "name": "severity", - "in": "query", - "schema": { - "enum": [ - 0, - 1, - 2, - 3 - ], - "type": "integer", - "title": "Severity" + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } } }, - { - "description": "Filter by tag (exact match)", - "name": "tag", - "in": "query", - "schema": { - "type": "string", - "title": "Tag" - } - }, - { - "description": "Return only issues updated at or after this RFC3339 timestamp", - "name": "updated_at", - "in": "query", - "schema": { - "type": "string", - "title": "Updated At" - } - }, - { - "description": "Sort field", - "name": "sort_by", - "in": "query", - "schema": { - "enum": [ - "created_at", - "updated_at", - "severity" - ], - "type": "string", - "title": "Sort By" - } - }, - { - "description": "Page size (positive integer)", - "name": "limit", - "in": "query", - "schema": { - "type": "integer", - "title": "Limit" - } - }, - { - "description": "Page offset (non-negative integer)", - "name": "offset", - "in": "query", - "schema": { - "type": "integer", - "title": "Offset" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/tracer_session_issues.Issue" - } - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" - } - } - } - } - } - } - }, - "/v1/platform/issues-agent": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "**Beta:** This endpoint is in active development and may change without notice.\n\nReturns every issues agent config configured for the authenticated tenant.", - "tags": [ - "issues-agent" - ], - "summary": "[Beta] List issues agent configs", - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/tracer_session_issues_agent.IssuesAgent" - } - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - } - }, - "parameters": [] - } - }, - "/v1/platform/issues/{id}/views": { - "post": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "**Beta:** Records that the current user opened this issue.\nIdempotent. Drives the Engine tab unread-issues badge.", - "tags": [ - "issues" - ], - "summary": "[Beta] Mark issue viewed", - "parameters": [ - { - "description": "Issue ID (UUID)", - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "No Content" - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" - } - } - } - } - } - } - }, - "/v1/platform/mcp-vendors": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Returns the catalog of available MCP vendors.", - "tags": [ - "mcp_vendors" - ], - "summary": "List MCP vendors", - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ListMcpVendorsResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - } - }, - "parameters": [] - } - }, - "/v1/platform/mcp-vendors/{vendor_slug}": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Returns vendor metadata and current settings.", - "tags": [ - "mcp_vendors" - ], - "summary": "Get MCP vendor", - "parameters": [ - { - "description": "Vendor slug (e.g. arcade)", - "name": "vendor_slug", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.GetMcpVendorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - } - } - } - }, - "/v1/platform/mcp-vendors/{vendor_slug}/account": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Resolves OAuth token and returns the vendor's account info.", - "tags": [ - "mcp_vendors" - ], - "summary": "Get vendor account", - "parameters": [ - { - "description": "Vendor slug (e.g. arcade)", - "name": "vendor_slug", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ArcadeAccountResponseList" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "502": { - "description": "Bad Gateway", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - } - } - } - }, - "/v1/platform/mcp-vendors/{vendor_slug}/mcp-servers": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Returns the MCP gateways from the vendor for the workspace's configured org/project.", - "tags": [ - "mcp_vendors" - ], - "summary": "List MCP servers for a vendor", - "parameters": [ - { - "description": "Vendor slug (e.g. arcade)", - "name": "vendor_slug", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Max items to return (default 100)", - "name": "limit", - "in": "query", - "schema": { - "type": "integer", - "title": "Limit" - } - }, - { - "description": "Number of items to skip (default 0)", - "name": "offset", - "in": "query", - "schema": { - "type": "integer", - "title": "Offset" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ListMcpGatewaysResponse" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "502": { - "description": "Bad Gateway", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - } - } - } - }, - "/v1/platform/mcp-vendors/{vendor_slug}/settings": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Returns the current vendor-specific settings.", - "tags": [ - "mcp_vendors" - ], - "summary": "Get vendor settings", - "parameters": [ - { - "description": "Vendor slug (e.g. arcade)", - "name": "vendor_slug", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ArcadeSettingsResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - } - } - }, - "put": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Replaces vendor settings.", - "tags": [ - "mcp_vendors" - ], - "summary": "Replace vendor settings", - "parameters": [ - { - "description": "Vendor slug (e.g. arcade)", - "name": "vendor_slug", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ArcadeSettingsResponse" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ArcadeSettingsRequest" - } - } - } - } - }, - "post": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Initializes vendor settings.", - "tags": [ - "mcp_vendors" - ], - "summary": "Create vendor settings", - "parameters": [ - { - "description": "Vendor slug (e.g. arcade)", - "name": "vendor_slug", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "201": { - "description": "Created", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ArcadeSettingsResponse" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ArcadeSettingsRequest" - } - } - } - } - }, - "delete": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Removes vendor settings.", - "tags": [ - "mcp_vendors" - ], - "summary": "Delete vendor settings", - "parameters": [ - { - "description": "Vendor slug (e.g. arcade)", - "name": "vendor_slug", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ArcadeSettingsResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - } - } - } - }, - "/v1/platform/mcp-vendors/{vendor_slug}/tools": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Returns the tool catalog for this vendor.", - "tags": [ - "mcp_vendors" - ], - "summary": "List tools for a vendor", - "parameters": [ - { - "description": "Vendor slug (e.g. arcade)", - "name": "vendor_slug", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Max tools to return (default 50)", - "name": "limit", - "in": "query", - "schema": { - "type": "integer", - "title": "Limit" - } - }, - { - "description": "Number of tools to skip (default 0)", - "name": "offset", - "in": "query", - "schema": { - "type": "integer", - "title": "Offset" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ListVendorToolsResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } - } - } - } - } - }, - "/v1/platform/nps/response": { - "post": { - "security": [ - { - "Bearer Auth": [] - } - ], - "description": "Records the authenticated user's NPS score and optional comment.", - "tags": [ - "nps" - ], - "summary": "Submit an NPS response", - "parameters": [], - "responses": { - "204": { - "description": "No Content" - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/nps.SubmitResponseRequest" - } - } - } - }, - "x-hidden": true - } - }, - "/v1/platform/ops/backfills/restart": { - "post": { - "security": [ - { - "API Key": [] - }, - { - "Organization ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Deletes the backfill job record, causing the backfill to restart from the beginning on the next cron tick. Requires instance admin access.", - "tags": [ - "backfills" - ], - "summary": "Restart a backfill job", - "parameters": [], - "responses": { - "200": { - "description": "Backfill restarted", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "400": { - "description": "Bad request", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "404": { - "description": "Backfill not found", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/backfills.restartBackfillRequest" - } - } - } - } - } - }, - "/v1/platform/orgs/current/access-policies": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Organization ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Lists all access policies for the organization.", - "tags": [ - "access_policies" - ], - "summary": "List access policies", - "responses": { - "200": { - "description": "List of access policies", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/authz_internal.ListAccessPoliciesResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - }, - "503": { - "description": "Service unavailable", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - } - }, - "parameters": [] - }, - "post": { - "security": [ - { - "API Key": [] - }, - { - "Organization ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Creates a new access policy.", - "tags": [ - "access_policies" - ], - "summary": "Create an access policy", - "parameters": [], - "responses": { - "201": { - "description": "Access policy created", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/authz_internal.AccessPolicyCreateResponse" - } - } - } - }, - "400": { - "description": "Bad request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - }, - "404": { - "description": "Role not found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - }, - "503": { - "description": "Service unavailable", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/authz_internal.CreateAccessPolicyPayload" - } - } - } - } - } - }, - "/v1/platform/orgs/current/access-policies/roles/{role_id}/access-policies": { - "post": { - "security": [ - { - "API Key": [] - }, - { - "Organization ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Attaches one or more access policies to a specific role. The request body must contain an array of access policy IDs.", - "tags": [ - "access_policies" - ], - "summary": "Attach access policies to a role", - "parameters": [ - { - "description": "Role ID", - "name": "role_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "Access policies attached successfully" - }, - "400": { - "description": "Bad request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - }, - "404": { - "description": "Role not found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - }, - "503": { - "description": "Service unavailable", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/authz_internal.AttachAccessPoliciesPayload" - } - } - } - } - } - }, - "/v1/platform/orgs/current/access-policies/{access_policy_id}": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Organization ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Gets a specific access policy by ID.", - "tags": [ - "access_policies" - ], - "summary": "Get an access policy", - "parameters": [ - { - "description": "Access Policy ID", - "name": "access_policy_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Access policy details", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/authz_internal.AccessPolicy" - } - } - } - }, - "400": { - "description": "Bad request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - }, - "404": { - "description": "Access policy not found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - }, - "503": { - "description": "Service unavailable", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - } - } - }, - "delete": { - "security": [ - { - "API Key": [] - }, - { - "Organization ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Deletes a specific access policy by ID.", - "tags": [ - "access_policies" - ], - "summary": "Delete an access policy", - "parameters": [ - { - "description": "Access Policy ID", - "name": "access_policy_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "Access policy deleted successfully" - }, - "400": { - "description": "Bad request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - }, - "503": { - "description": "Service unavailable", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/abac.ErrorResponse" - } - } - } - } - } - } - }, - "/v1/platform/orgs/current/info": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Organization ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Returns organization info for the authenticated user's current organization.", - "tags": [ - "Organizations" - ], - "summary": "Get current organization info", - "responses": { - "200": { - "description": "Organization info", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/orgs.OrganizationInfo" - } - } - } - }, - "400": { - "description": "Invalid organization ID", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - } - }, - "parameters": [] - } - }, - "/v1/platform/orgs/current/members": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Organization ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Returns a paginated list of org members (active and pending) enriched with workspace memberships.", - "tags": [ - "orgs" - ], - "summary": "List org members with workspace roles", - "parameters": [ - { - "description": "Page size (default 50, max 500)", - "name": "limit", - "in": "query", - "schema": { - "type": "integer", - "title": "Limit" - } - }, - { - "description": "Page offset (default 0)", - "name": "offset", - "in": "query", - "schema": { - "type": "integer", - "title": "Offset" - } - }, - { - "description": "Filter: true = only active members; false = only pending members", - "name": "active_is", - "in": "query", - "schema": { - "type": "boolean", - "title": "Active Is" - } - }, - { - "description": "Filter: true = only pending members; false = only active members", - "name": "pending_is", - "in": "query", - "schema": { - "type": "boolean", - "title": "Pending Is" - } - }, - { - "description": "Glob filter on display name; use * as wildcard (repeatable, matches any)", - "name": "name_like", - "in": "query", - "style": "form", - "explode": true, - "schema": { - "items": { - "type": "string" - }, - "type": "array", - "title": "Name Like" - } - }, - { - "description": "Glob filter on email; use * as wildcard (repeatable, matches any)", - "name": "email_like", - "in": "query", - "style": "form", - "explode": true, - "schema": { - "items": { - "type": "string" - }, - "type": "array", - "title": "Email Like" - } - }, - { - "description": "Glob filter on workspace name or ID; use * as wildcard (repeatable, matches any)", - "name": "workspace_name_like", - "in": "query", - "style": "form", - "explode": true, - "schema": { - "items": { - "type": "string" - }, - "type": "array", - "title": "Workspace Name Like" - } - }, - { - "description": "Glob filter on organization role name; use * as wildcard (repeatable, matches any)", - "name": "organization_role_like", - "in": "query", - "style": "form", - "explode": true, - "schema": { - "items": { - "type": "string" - }, - "type": "array", - "title": "Organization Role Like" - } - }, - { - "description": "Glob filter on workspace role name; use * as wildcard (repeatable, matches any)", - "name": "workspace_role_like", - "in": "query", - "style": "form", - "explode": true, - "schema": { - "items": { - "type": "string" - }, - "type": "array", - "title": "Workspace Role Like" - } - } - ], - "responses": { - "200": { - "description": "Org members", - "headers": { - "X-Members-List-All-Workspaces": { - "description": "true if caller has organization:manage", - "schema": { - "type": "string" - } - }, - "X-Pagination-Total": { - "description": "Total number of matching members", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/orgs.OrgMemberEnriched" - } - } - } - } - }, - "400": { - "description": "Bad request", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - } - } - } - }, - "/v1/platform/orgs/current/scim/tokens": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Organization ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "List all SCIM bearer tokens for the current organization. The full token values are not returned.", - "tags": [ - "SCIM Tokens" - ], - "summary": "List SCIM tokens", - "responses": { - "200": { - "description": "List of SCIM tokens", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/scim.ScimTokenResponse" - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden - requires OrganizationRead permission", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - }, - "503": { - "description": "Service unavailable", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - } - }, - "parameters": [] - }, - "post": { - "security": [ - { - "API Key": [] - }, - { - "Organization ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Create a new SCIM bearer token for the current organization. The full token value is only returned once upon creation.", - "tags": [ - "SCIM Tokens" - ], - "summary": "Create a SCIM token", - "parameters": [], - "responses": { - "201": { - "description": "Created SCIM token with full token value", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ScimTokenSensitiveResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden - requires OrganizationManage permission", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - }, - "503": { - "description": "Service unavailable", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.CreateScimTokenPayload" - } - } - } - } - } - }, - "/v1/platform/orgs/current/scim/tokens/{scim_token_id}": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Organization ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Retrieve a specific SCIM token by ID for the current organization. The full token value is not returned.", - "tags": [ - "SCIM Tokens" - ], - "summary": "Get a SCIM token", - "parameters": [ - { - "description": "SCIM Token ID", - "name": "scim_token_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "SCIM token details", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ScimTokenResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden - requires OrganizationRead permission", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - }, - "404": { - "description": "Token not found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - }, - "503": { - "description": "Service unavailable", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - } - } - }, - "delete": { - "security": [ - { - "API Key": [] - }, - { - "Organization ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Delete a SCIM bearer token from the current organization.", - "tags": [ - "SCIM Tokens" - ], - "summary": "Delete a SCIM token", - "parameters": [ - { - "description": "SCIM Token ID", - "name": "scim_token_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "No content - token deleted successfully" - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden - requires OrganizationManage permission", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - }, - "404": { - "description": "Token not found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - }, - "503": { - "description": "Service unavailable", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - } - } - }, - "patch": { - "security": [ - { - "API Key": [] - }, - { - "Organization ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Update the description of an existing SCIM token for the current organization.", - "tags": [ - "SCIM Tokens" - ], - "summary": "Update a SCIM token", - "parameters": [ - { - "description": "SCIM Token ID", - "name": "scim_token_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Updated SCIM token details", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ScimTokenResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden - requires OrganizationManage permission", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - }, - "404": { - "description": "Token not found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - }, - "503": { - "description": "Service unavailable", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.ErrorResponse" - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/scim.UpdateScimTokenPayload" - } - } - } - } - } - }, - "/v1/platform/sessions/{sessionID}/agent-versions": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Returns all agent versions (commit SHAs) seen in the given tracing project, ordered by first_seen_at descending.", - "tags": [ - "sessions" - ], - "summary": "List agent versions for a project", - "parameters": [ - { - "description": "Tracing project (session) UUID", - "name": "sessionID", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Agent versions", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/tracer_sessions.AgentVersionResponse" - } - } - } - } - }, - "400": { - "description": "Invalid session ID", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - } - } - } - }, - "/v1/platform/sessions/{session_id}/issues-agent": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "**Beta:** This endpoint is in active development and may change without notice.\n\nReturns the issues agent config attached to the given tracer session.", - "tags": [ - "issues-agent" - ], - "summary": "[Beta] Get the issues agent config for a session", - "parameters": [ - { - "description": "Tracer session ID (UUID)", - "name": "session_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.IssuesAgent" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - } - } - }, - "post": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "**Beta:** This endpoint is in active development and may change without notice.\n\nConfigures the issues agent for the given tracer session and enqueues\nthe initial scan. Fails if an agent already exists for the session.", - "tags": [ - "issues-agent" - ], - "summary": "[Beta] Create the issues agent for a session", - "parameters": [ - { - "description": "Tracer session ID (UUID)", - "name": "session_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "201": { - "description": "Created", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.IssuesAgent" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.CreateIssuesAgentRequest" - } - } - } - } - }, - "delete": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "**Beta:** This endpoint is in active development and may change without notice.\n\nRemoves the agent config, its issues, and the agent-overview hub repo.", - "tags": [ - "issues-agent" - ], - "summary": "[Beta] Delete the issues agent for a session", - "parameters": [ - { - "description": "Tracer session ID (UUID)", - "name": "session_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "No Content" - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - } - } - }, - "patch": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "**Beta:** This endpoint is in active development and may change without notice.\n\nPatches the agent config. All side effects (clearing fix fields when\nthe GitHub repo changes, setting agent_overview_repo_id) happen in a\nsingle CRUD transaction. Omitted fields are left unchanged.", - "tags": [ - "issues-agent" - ], - "summary": "[Beta] Update the issues agent config for a session", - "parameters": [ - { - "description": "Tracer session ID (UUID)", - "name": "session_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.IssuesAgent" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.UpdateIssuesAgentRequest" - } - } - } - } - } - }, - "/v1/platform/sessions/{session_id}/issues-agent/overview": { - "patch": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "**Beta:** This endpoint is in active development and may change without notice.\n\nSaves the issues agent overview content server-side, creating or updating\nthe backing private Prompt Hub repo and linking it to the issues agent config.", - "tags": [ - "issues-agent" - ], - "summary": "[Beta] Save the agent overview for a session", - "parameters": [ - { - "description": "Tracer session ID (UUID)", - "name": "session_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.SaveOverviewResponse" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.ErrorResponse" - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues_agent.SaveOverviewRequest" - } - } - } - } - } - }, - "/v1/platform/sessions/{session_id}/issues/views": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "**Beta:** Returns the issues in this session that the current\nuser has opened, with timestamps. Used by the UI to derive\nthe per-row \"unread\" indicator and the Engine tab badge.", - "tags": [ - "issues" - ], - "summary": "[Beta] List viewed issues for a session", - "parameters": [ - { - "description": "Session ID (UUID)", - "name": "session_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues.ListViewsResponse" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tracer_session_issues.ErrorResponse" - } - } - } - } - } - } - }, - "/v1/platform/tools": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Returns a paginated list of tools in the workspace.", - "tags": [ - "tools" - ], - "summary": "List tools", - "parameters": [ - { - "description": "Maximum number of tools to return", - "name": "limit", - "in": "query", - "schema": { - "type": "integer", - "title": "Limit" - } - }, - { - "description": "Number of tools to skip", - "name": "offset", - "in": "query", - "schema": { - "type": "integer", - "title": "Offset" - } - }, - { - "description": "Search query to filter tools by name or description", - "name": "query", - "in": "query", - "schema": { - "type": "string", - "title": "Query" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ListToolsResponse" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - } - } - }, - "post": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Creates a new tool in the workspace.", - "tags": [ - "tools" - ], - "summary": "Create a tool", - "parameters": [], - "responses": { - "201": { - "description": "Created", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.Tool" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.CreateToolPayload" - } - } - } - } - } - }, - "/v1/platform/tools/id/{id}": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Returns a tool identified by its UUID.", - "tags": [ - "tools" - ], - "summary": "Get a tool by ID", - "parameters": [ - { - "description": "Tool UUID", - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.Tool" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - } - } - }, - "delete": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Deletes a tool identified by its UUID.", - "tags": [ - "tools" - ], - "summary": "Delete a tool by ID", - "parameters": [ - { - "description": "Tool UUID", - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "No Content" - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - } - } - }, - "patch": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Updates an existing tool identified by its UUID.", - "tags": [ - "tools" - ], - "summary": "Update a tool by ID", - "parameters": [ - { - "description": "Tool UUID", - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.Tool" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.UpdateToolPayload" - } - } - } - } - } - }, - "/v1/platform/tools/{handle}": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Returns a tool identified by its handle.", - "tags": [ - "tools" - ], - "summary": "Get a tool by handle", - "parameters": [ - { - "description": "Tool handle", - "name": "handle", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.Tool" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - } - } - }, - "delete": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Deletes a tool identified by its handle.", - "tags": [ - "tools" - ], - "summary": "Delete a tool by handle", - "parameters": [ - { - "description": "Tool handle", - "name": "handle", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "No Content" - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - } - } - }, - "patch": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Updates an existing tool identified by its handle.", - "tags": [ - "tools" - ], - "summary": "Update a tool by handle", - "parameters": [ - { - "description": "Tool handle", - "name": "handle", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.Tool" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.ErrorResponse" - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/tools.UpdateToolPayload" - } - } - } - } - } - }, - "/v2/runs/query": { - "post": { - "security": [ - { - "API Key": [], - "Tenant ID": [] - }, - { - "Bearer Auth": [], - "Tenant ID": [] - } - ], - "description": "**Alpha:** The request and response contract may change;\nReturns a paginated list of runs for the given projects within min/max start_time. Supports filters, cursor pagination, and `selects` to select fields to return.", - "tags": [ - "runs" - ], - "summary": "Query runs", - "parameters": [ - { - "description": "application/json", - "name": "Accept", - "in": "header", - "schema": { - "type": "string" - } - }, - { - "description": "application/json (required for JSON body)", - "name": "Content-Type", - "in": "header", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/query.QueryRunsResponseBody" - } - } - } - }, - "400": { - "description": "bad request (malformed JSON or invalid parameters)", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/shared.ProblemDetails" - } - } - } - }, - "401": { - "description": "missing or invalid authentication", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/shared.ProblemDetails" - } - } - } - }, - "403": { - "description": "forbidden (insufficient permission)", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/shared.ProblemDetails" - } - } - } - }, - "404": { - "description": "session not found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/shared.ProblemDetails" - } - } - } - }, - "422": { - "description": "unprocessable entity (e.g. invalid UUID)", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/shared.ProblemDetails" - } - } - } - }, - "500": { - "description": "internal server error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/shared.ProblemDetails" - } - } - } - }, - "503": { - "description": "service unavailable", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/shared.ProblemDetails" - } - } - } - }, - "504": { - "description": "gateway timeout or deadline exceeded", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/shared.ProblemDetails" - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/query.QueryRunsRequestBody" - } - } - } - } - } - }, - "/v2/runs/{run_id}": { - "get": { - "security": [ - { - "API Key": [], - "Tenant ID": [] - }, - { - "Bearer Auth": [], - "Tenant ID": [] - } - ], - "description": "**Alpha:** The request and response contract may change;\nReturns one run by ID for the given session and start_time. Use the `selects` query parameter (repeatable) to select fields to return.", - "tags": [ - "runs" - ], - "summary": "Get a single run", - "parameters": [ - { - "description": "application/json", - "name": "Accept", - "in": "header", - "schema": { - "type": "string" - } - }, - { - "description": "Run UUID", - "name": "run_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "description": "`project_id` is the UUID of the tracing project that owns the run.", - "name": "project_id", - "in": "query", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Project Id" - } - }, - { - "description": "`selects` lists which properties to include on the returned run (repeatable query parameter). Accepts any value of the `RunSelectField` enum. If omitted, only `id` is returned.", - "name": "selects", - "in": "query", - "style": "form", - "explode": true, - "schema": { - "items": { - "enum": [ - "ID", - "NAME", - "RUN_TYPE", - "STATUS", - "START_TIME", - "END_TIME", - "LATENCY_SECONDS", - "FIRST_TOKEN_TIME", - "ERROR", - "ERROR_PREVIEW", - "EXTRA", - "METADATA", - "EVENTS", - "INPUTS", - "INPUTS_PREVIEW", - "OUTPUTS", - "OUTPUTS_PREVIEW", - "MANIFEST", - "PARENT_RUN_IDS", - "PROJECT_ID", - "TRACE_ID", - "THREAD_ID", - "DOTTED_ORDER", - "IS_ROOT", - "REFERENCE_EXAMPLE_ID", - "REFERENCE_DATASET_ID", - "TOTAL_TOKENS", - "PROMPT_TOKENS", - "COMPLETION_TOKENS", - "TOTAL_COST", - "PROMPT_COST", - "COMPLETION_COST", - "PROMPT_TOKEN_DETAILS", - "COMPLETION_TOKEN_DETAILS", - "PROMPT_COST_DETAILS", - "COMPLETION_COST_DETAILS", - "PRICE_MODEL_ID", - "TAGS", - "APP_PATH", - "ATTACHMENTS", - "THREAD_EVALUATION_TIME", - "IS_IN_DATASET", - "SHARE_URL", - "FEEDBACK_STATS" - ], - "type": "string" - }, - "type": "array", - "title": "Selects" - } - }, - { - "description": "`start_time` is the run's `start_time` (RFC3339 date-time), used together with `project_id` to locate the run.", - "name": "start_time", - "in": "query", - "required": true, - "schema": { - "type": "string", - "format": "date-time", - "title": "Start Time" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/query.RunResponse" - } - } - } - }, - "400": { - "description": "bad request (missing or invalid query parameters)", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/shared.ProblemDetails" - } - } - } - }, - "401": { - "description": "missing or invalid authentication", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/shared.ProblemDetails" - } - } - } - }, - "403": { - "description": "forbidden (insufficient permission)", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/shared.ProblemDetails" - } - } - } - }, - "404": { - "description": "run or session not found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/shared.ProblemDetails" - } - } - } - }, - "422": { - "description": "unprocessable entity (e.g. invalid UUID)", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/shared.ProblemDetails" - } - } - } - }, - "500": { - "description": "internal server error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/shared.ProblemDetails" - } - } - } - }, - "503": { - "description": "service unavailable", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/shared.ProblemDetails" - } - } - } - }, - "504": { - "description": "gateway timeout or deadline exceeded", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/shared.ProblemDetails" - } - } - } - } - } - } - }, - "/v2/sandboxes/boxes": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - }, - { - "X-Service-Key": [] - } - ], - "description": "List sandboxes for the authenticated tenant, with optional filtering, sorting, and pagination.", - "tags": [ - "sandboxes" - ], - "summary": "List sandboxes", - "parameters": [ - { - "description": "Maximum number of results", - "name": "limit", - "in": "query", - "schema": { - "type": "integer", - "default": 50, - "title": "Limit" - } - }, - { - "description": "Pagination offset", - "name": "offset", - "in": "query", - "schema": { - "type": "integer", - "default": 0, - "title": "Offset" - } - }, - { - "description": "Filter by name substring", - "name": "name_contains", - "in": "query", - "schema": { - "type": "string", - "title": "Name Contains" - } - }, - { - "description": "Filter by status (provisioning, ready, failed, stopped, deleting)", - "name": "status", - "in": "query", - "schema": { - "type": "string", - "title": "Status" - } - }, - { - "description": "Sort column (name, status, created_at)", - "name": "sort_by", - "in": "query", - "schema": { - "type": "string", - "default": "created_at", - "title": "Sort By" - } - }, - { - "description": "Sort direction (asc, desc)", - "name": "sort_direction", - "in": "query", - "schema": { - "type": "string", - "default": "desc", - "title": "Sort Direction" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.SandboxListResponse" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - } - } - }, - "post": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - }, - { - "X-Service-Key": [] - } - ], - "description": "Create a new sandbox from a snapshot. Provide at most one of `snapshot_id` or `snapshot_name`; if neither is provided, the server uses the default static blueprint.", - "tags": [ - "sandboxes" - ], - "summary": "Create a sandbox", - "parameters": [], - "responses": { - "201": { - "description": "Created", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.SandboxResponse" - } - } - } - }, - "400": { - "description": "Snapshot not found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "409": { - "description": "Name already exists", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "422": { - "description": "Validation error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "429": { - "description": "Quota exceeded", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "500": { - "description": "Sandbox creation failed or internal error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "504": { - "description": "Sandbox did not become ready in time", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.CreateSandboxPayload" - } - } - } - } - } - }, - "/v2/sandboxes/boxes/batch-delete": { - "post": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Delete multiple sandboxes by name or UUID in a single request.", - "tags": [ - "sandboxes" - ], - "summary": "Batch delete sandboxes", - "parameters": [], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.BatchDeleteResponse" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.BatchDeleteRequest" - } - } - } - } - } - }, - "/v2/sandboxes/boxes/{name}": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - }, - { - "X-Service-Key": [] - } - ], - "description": "Retrieve a sandbox by name. Stale provisioning sandboxes are auto-failed.", - "tags": [ - "sandboxes" - ], - "summary": "Get a sandbox", - "parameters": [ - { - "description": "Sandbox display name", - "name": "name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.SandboxResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - } - } - }, - "delete": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - }, - { - "X-Service-Key": [] - } - ], - "description": "Delete a sandbox by name or UUID. Tears down the sandbox runtime and removes the DB record.", - "tags": [ - "sandboxes" - ], - "summary": "Delete a sandbox", - "parameters": [ - { - "description": "Sandbox display name or UUID", - "name": "name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "No content" - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - } - } - }, - "patch": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - }, - { - "X-Service-Key": [] - } - ], - "description": "Update a sandbox's display name. The name must be unique within the tenant.", - "tags": [ - "sandboxes" - ], - "summary": "Update a sandbox", - "parameters": [ - { - "description": "Current sandbox display name", - "name": "name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.SandboxResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "409": { - "description": "Name already exists", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "422": { - "description": "Validation error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.UpdateSandboxPayload" - } - } - } - } - } - }, - "/v2/sandboxes/boxes/{name}/service-url": { - "post": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Create a short-lived JWT for accessing an HTTP service running on a specific port inside a sandbox. Returns a browser_url (sets auth cookie via redirect), a service_url (for use with the X-Langsmith-Sandbox-Service-Token header), the raw token, and its expiry.", - "tags": [ - "sandboxes" - ], - "summary": "Generate a service access token", - "parameters": [ - { - "description": "Sandbox display name", - "name": "name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ServiceURLResponse" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "422": { - "description": "Unprocessable Entity", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "501": { - "description": "Not Implemented", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ServiceURLPayload" - } - } - } - } - } - }, - "/v2/sandboxes/boxes/{name}/snapshot": { - "post": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Create a snapshot by capturing the current state of a sandbox or promoting an existing checkpoint.", - "tags": [ - "sandboxes" - ], - "summary": "Capture a snapshot from a sandbox", - "parameters": [ - { - "description": "Sandbox display name", - "name": "name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "201": { - "description": "Created", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.SnapshotResponse" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "422": { - "description": "Unprocessable Entity", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - } - }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.CaptureSnapshotPayload" - } - } - } - } - } - }, - "/v2/sandboxes/boxes/{name}/start": { - "post": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Start a stopped or failed sandbox. This endpoint is not idempotent.", - "tags": [ - "sandboxes" - ], - "summary": "Start a sandbox", - "parameters": [ - { - "description": "Sandbox display name", - "name": "name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "202": { - "description": "Accepted", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.SandboxResponse" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - } - } - } - }, - "/v2/sandboxes/boxes/{name}/status": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - }, - { - "X-Service-Key": [] - } - ], - "description": "Retrieve the lightweight status of a sandbox for polling.", - "tags": [ - "sandboxes" - ], - "summary": "Get sandbox status", - "parameters": [ - { - "description": "Sandbox display name", - "name": "name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.SandboxStatusResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ErrorResponse" + } + } } }, "500": { @@ -44692,10 +39968,11 @@ } } } - } + }, + "x-public": true } }, - "/v2/sandboxes/boxes/{name}/stop": { + "/v2/sandboxes/{sandbox_id}/upload": { "post": { "security": [ { @@ -44708,80 +39985,15 @@ "Bearer Auth": [] } ], - "description": "Stop a ready sandbox. This endpoint is not idempotent; the filesystem is preserved for later restart.", + "description": "Upload a file to a sandbox filesystem path.", "tags": [ "sandboxes" ], - "summary": "Stop a sandbox", - "parameters": [ - { - "description": "Sandbox display name", - "name": "name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "Sandbox stopped" - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - } - } - } - }, - "/v2/sandboxes/internal/start/{name}": { - "post": { - "description": "Called by the sandbox-router to wake stopped sandboxes. Blocks until the sandbox is ready or times out. The name parameter accepts either the display name or route name (sb-).", - "tags": [ - "sandboxes-internal" - ], - "summary": "Internal: start a stopped sandbox (service-to-service)", + "summary": "Upload a sandbox file", "parameters": [ { - "description": "Sandbox display name or route name (sb-)", - "name": "name", + "description": "Sandbox ID or name", + "name": "sandbox_id", "in": "path", "required": true, "schema": { @@ -44789,135 +40001,13 @@ } }, { - "description": "Tenant ID", - "name": "X-Tenant-Id", - "in": "header", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.SandboxResponse" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - } - }, - "x-hidden": true - } - }, - "/v2/sandboxes/snapshots": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "List sandbox snapshots for the authenticated tenant, with optional filtering, sorting, and pagination.", - "tags": [ - "sandboxes" - ], - "summary": "List snapshots", - "parameters": [ - { - "description": "Maximum number of results", - "name": "limit", - "in": "query", - "schema": { - "type": "integer", - "default": 50, - "title": "Limit" - } - }, - { - "description": "Pagination offset", - "name": "offset", - "in": "query", - "schema": { - "type": "integer", - "default": 0, - "title": "Offset" - } - }, - { - "description": "Filter by name substring", - "name": "name_contains", - "in": "query", - "schema": { - "type": "string", - "title": "Name Contains" - } - }, - { - "description": "Filter by status (building, ready, failed, deleting)", - "name": "status", - "in": "query", - "schema": { - "type": "string", - "title": "Status" - } - }, - { - "description": "Sort column (name, status, created_at)", - "name": "sort_by", - "in": "query", - "schema": { - "type": "string", - "default": "created_at", - "title": "Sort By" - } - }, - { - "description": "Sort direction (asc, desc)", - "name": "sort_direction", + "description": "Destination file path", + "name": "path", "in": "query", + "required": true, "schema": { "type": "string", - "default": "desc", - "title": "Sort Direction" + "title": "Path" } } ], @@ -44927,7 +40017,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/sandboxes.SnapshotListResponse" + "$ref": "#/components/schemas/sandboxes.UploadResponse" } } } @@ -44952,59 +40042,8 @@ } } }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - } - } - }, - "post": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Create a snapshot from a Docker image (async build).", - "tags": [ - "sandboxes" - ], - "summary": "Create a snapshot", - "parameters": [], - "responses": { - "201": { - "description": "Created", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.SnapshotResponse" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { @@ -45024,221 +40063,29 @@ } } }, + "x-public": true, "requestBody": { "required": true, "content": { - "application/json": { + "multipart/form-data": { "schema": { - "$ref": "#/components/schemas/sandboxes.CreateSnapshotPayload" - } - } - } - } - } - }, - "/v2/sandboxes/snapshots/{snapshot_id}": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Get a sandbox snapshot by ID.", - "tags": [ - "sandboxes" - ], - "summary": "Get a snapshot", - "parameters": [ - { - "description": "Snapshot UUID", - "name": "snapshot_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.SnapshotResponse" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - } - } - }, - "delete": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Delete a snapshot by ID. The underlying storage is reclaimed asynchronously.", - "tags": [ - "sandboxes" - ], - "summary": "Delete a snapshot", - "parameters": [ - { - "description": "Snapshot UUID", - "name": "snapshot_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "Snapshot deleted" - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary", + "description": "File to upload" + } + }, + "required": [ + "file" + ] } } } } } }, - "/v2/sandboxes/usage": { - "get": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - }, - { - "X-Service-Key": [] - } - ], - "description": "Get current sandbox resource usage and quota limits for the workspace", - "tags": [ - "sandboxes" - ], - "summary": "Get sandbox resource usage", - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.UsageResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - } - }, - "parameters": [] - } - }, "/v2/threads/query": { "post": { "security": [ @@ -45349,6 +40196,7 @@ } } }, + "x-public": true, "requestBody": { "required": true, "content": { @@ -45388,6 +40236,15 @@ "type": "string" } }, + { + "description": "`filter` narrows which of the thread's traces are aggregated, using a LangSmith filter expression. For example: lt(start_time, \"2025-01-01T00:00:00Z\") or eq(trace_id, \"0190a1b2-c3d4-7ef0-a5b6-6ea3a82e9328\").\nSee https://docs.langchain.com/langsmith/trace-query-syntax#filter-query-language for syntax.", + "name": "filter", + "in": "query", + "schema": { + "type": "string", + "title": "Filter" + } + }, { "example": [ "TURNS", @@ -45396,6 +40253,7 @@ "description": "`selects` lists which aggregate stats to compute and return (repeatable query parameter). At least one value is required. Accepts any value of `SingleThreadStatsSelectField`.", "name": "selects", "in": "query", + "required": true, "style": "form", "explode": true, "schema": { @@ -45416,7 +40274,8 @@ "PROMPT_TOKEN_DETAILS", "COMPLETION_TOKEN_DETAILS", "PROMPT_COST_DETAILS", - "COMPLETION_COST_DETAILS" + "COMPLETION_COST_DETAILS", + "FEEDBACK_STATS" ], "type": "string" }, @@ -45527,7 +40386,8 @@ } } } - } + }, + "x-public": true } }, "/v2/threads/{thread_id}/traces": { @@ -45581,10 +40441,10 @@ "name": "page_size", "in": "query", "schema": { - "maximum": 100, - "type": "integer", "default": 20, + "maximum": 100, "minimum": 1, + "type": "integer", "title": "Page Size" } }, @@ -45624,6 +40484,9 @@ "FIRST_TOKEN_TIME", "INPUTS_PREVIEW", "OUTPUTS_PREVIEW", + "INPUTS", + "OUTPUTS", + "ERROR", "PROMPT_COST", "COMPLETION_COST", "TOTAL_COST", @@ -45732,6 +40595,139 @@ } } } + }, + "x-public": true + } + }, + "/v2/traces/query": { + "post": { + "security": [ + { + "API Key": [], + "Tenant ID": [] + }, + { + "Bearer Auth": [], + "Tenant ID": [] + } + ], + "description": "Returns a paginated list of traces (root runs) for a single tracing project. Each item carries the trace's root run plus optional trace-wide aggregates (`total_tokens`, `total_cost`, `first_token_time`) under `trace_aggregates`, so clients never have to merge by `trace_id`.\n\nTraces are scanned within a `start_time` window: `min_start_time` defaults to 24 hours before the request, `max_start_time` defaults to the request time. Set either explicitly to widen or narrow the window.\n\nSupports filters (`trace_filter`, `tree_filter`), cursor pagination (`cursor`), and field projection (`selects`).", + "tags": [ + "runs" + ], + "summary": "Query traces", + "parameters": [ + { + "description": "application/json (required for JSON body)", + "name": "Content-Type", + "in": "header", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/query.QueryTracesResponseBody" + } + } + } + }, + "400": { + "description": "bad request (malformed JSON or invalid parameters)", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + }, + "401": { + "description": "missing or invalid authentication", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + }, + "403": { + "description": "forbidden (insufficient permission)", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + }, + "404": { + "description": "session not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + }, + "422": { + "description": "unprocessable entity (e.g. invalid UUID)", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + }, + "500": { + "description": "internal server error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + }, + "503": { + "description": "service unavailable", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + }, + "504": { + "description": "gateway timeout or deadline exceeded", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + } + }, + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/query.QueryTracesRequestBody" + } + } + } } } }, @@ -45781,10 +40777,9 @@ } }, { - "description": "`max_start_time` is the inclusive upper bound for run `start_time` (RFC3339 date-time).", + "description": "`max_start_time` is the optional inclusive upper bound for run `start_time` (RFC3339 date-time). Required together with `min_start_time`.", "name": "max_start_time", "in": "query", - "required": true, "schema": { "type": "string", "format": "date-time", @@ -45792,10 +40787,9 @@ } }, { - "description": "`min_start_time` is the inclusive lower bound for run `start_time` (RFC3339 date-time).", + "description": "`min_start_time` is the optional inclusive lower bound for run `start_time` (RFC3339 date-time). Required together with `max_start_time`.", "name": "min_start_time", "in": "query", - "required": true, "schema": { "type": "string", "format": "date-time", @@ -45965,7 +40959,8 @@ } } } - } + }, + "x-public": true } }, "/workspaces/current/ttl-settings": { @@ -46037,6 +41032,7 @@ } } }, + "x-public": true, "parameters": [] }, "put": { @@ -46108,6 +41104,7 @@ } } }, + "x-public": true, "requestBody": { "required": true, "content": { @@ -48216,11 +43213,13 @@ "create_role", "update_role", "delete_role", + "upsert_role_restriction", "invite_user_to_org", "invite_users_to_org_batch", "add_basic_auth_users_to_org", "update_basic_auth_user", "delete_org_pending_member", + "update_org_pending_member", "delete_org_member", "update_org_member", "create_sso_settings", @@ -48244,7 +43243,9 @@ "delete_workspace_member", "update_workspace_member", "delete_workspace_pending_member", + "update_workspace_pending_member", "update_workspace_secrets", + "delete_workspace_secret", "unshare_entities", "set_tenant_handle", "create_tag_key", @@ -48259,6 +43260,8 @@ "delete_tracer_session", "delete_tracer_sessions", "delete_runs", + "share_run", + "unshare_run", "create_dataset", "create_csv_dataset", "create_experiment_via_upload", @@ -48278,6 +43281,7 @@ "create_examples", "update_example", "update_examples", + "update_examples_metadata", "sync_examples", "delete_example", "delete_examples", @@ -48346,6 +43350,7 @@ "trigger_forge_configuration", "add_annotation_queue_reviewer", "remove_annotation_queue_reviewer", + "add_items_to_annotation_queue", "submit_nps_response", "create_mcp_server", "update_mcp_server", @@ -48508,8 +43513,10 @@ "list_pending_organization_invites", "list_org_members", "get_org_usage", - "get_granular_usage", - "export_granular_usage_csv", + "get_granular_usage_traces", + "export_granular_usage_traces_csv", + "get_granular_usage_deployments", + "export_granular_usage_deployments_csv", "export_usage_backfill_csv", "get_login_methods", "get_sso_settings_current", @@ -48551,6 +43558,7 @@ "query_run", "query_runs", "query_trace", + "query_traces", "query_trace_messages", "batch_query_trace_messages", "query_thread_messages", @@ -48573,6 +43581,9 @@ "create_self_hosted_customer", "update_self_hosted_customer", "update_self_hosted_license", + "get_self_hosted_customer", + "get_provisioned_saas_org", + "update_provisioned_saas_org", "test_op_generic" ], "title": "AuditLogOperation", @@ -48829,7 +43840,8 @@ "type": "null" } ], - "title": "Trace" + "title": "Trace", + "description": "Filter runs by trace ID. When set, limit and cursor-based pagination are not applied — all runs in the trace are returned in a single response." }, "parent_run": { "anyOf": [ @@ -49039,6 +44051,7 @@ "maximum": 100.0, "minimum": 1.0, "title": "Limit", + "description": "Maximum number of runs to return. Not applied when trace is set — all runs in the trace are returned in a single response.", "default": 100 }, "select": { @@ -49136,7 +44149,8 @@ "type": "null" } ], - "title": "Trace" + "title": "Trace", + "description": "Filter runs by trace ID. When set, limit and cursor-based pagination are not applied — all runs in the trace are returned in a single response." }, "parent_run": { "anyOf": [ @@ -49346,6 +44360,7 @@ "maximum": 100.0, "minimum": 1.0, "title": "Limit", + "description": "Maximum number of runs to return. Not applied when trace is set — all runs in the trace are returned in a single response.", "default": 100 }, "select": { @@ -49473,6 +44488,22 @@ } ], "title": "Split" + }, + "tag_value_ids": { + "anyOf": [ + { + "items": { + "type": "string", + "format": "uuid" + }, + "type": "array", + "maxItems": 100 + }, + { + "type": "null" + } + ], + "title": "Tag Value Ids" } }, "type": "object", @@ -49537,9 +44568,7 @@ "metadata": { "anyOf": [ { - "additionalProperties": { - "type": "string" - }, + "additionalProperties": true, "type": "object" }, { @@ -49547,6 +44576,23 @@ } ], "title": "Metadata" + }, + "delete_examples": { + "type": "boolean", + "title": "Delete Examples", + "default": false + }, + "start_time": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Start Time" } }, "type": "object", @@ -49607,8 +44653,8 @@ "properties": { "file": { "type": "string", - "format": "binary", - "title": "File" + "title": "File", + "format": "binary" }, "input_keys": { "items": { @@ -49724,6 +44770,17 @@ } ], "title": "Metadata Key Mappings" + }, + "tag_value_ids": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tag Value Ids" } }, "type": "object", @@ -49737,8 +44794,8 @@ "properties": { "file": { "type": "string", - "format": "binary", - "title": "File" + "title": "File", + "format": "binary" }, "input_keys": { "items": { @@ -49895,7 +44952,7 @@ }, "compression": { "$ref": "#/components/schemas/BulkExportCompression", - "default": "gzip" + "default": "zstandard" }, "interval_hours": { "anyOf": [ @@ -50055,7 +45112,7 @@ }, "compression": { "$ref": "#/components/schemas/BulkExportCompression", - "default": "gzip" + "default": "zstandard" }, "interval_hours": { "anyOf": [ @@ -50589,13 +45646,17 @@ "disabled", "developer", "developer_01_2026", + "developer_07_2026", "plus", "plus_01_2026", + "plus_07_2026", "startup", "startup_v0", + "startup_07_2026", "partner", "premier", - "free" + "free", + "free_07_2026" ], "title": "ChangePaymentPlanReq", "description": "Enum for payment plans that the user can change to. Developer plans are permanent and enterprise plans will be changed manually." @@ -50604,6 +45665,17 @@ "properties": { "tier": { "$ref": "#/components/schemas/ChangePaymentPlanReq" + }, + "display_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Display Name" } }, "type": "object", @@ -51227,6 +46299,81 @@ "title": "ComparativeExperimentCreate", "description": "Create class for ComparativeExperiment." }, + "CompositeEvaluatorCreated": { + "properties": { + "rule_id": { + "type": "string", + "format": "uuid", + "title": "Rule Id" + }, + "evaluator_id": { + "type": "string", + "format": "uuid", + "title": "Evaluator Id" + } + }, + "type": "object", + "required": [ + "rule_id", + "evaluator_id" + ], + "title": "CompositeEvaluatorCreated", + "description": "Result of creating a composite score as a code evaluator + run rule." + }, + "CompositeMigrationRequest": { + "properties": { + "formula_ids": { + "items": { + "type": "string", + "format": "uuid" + }, + "type": "array", + "title": "Formula Ids" + } + }, + "type": "object", + "required": [ + "formula_ids" + ], + "title": "CompositeMigrationRequest", + "description": "A batch of feedback_formulas ids to migrate to the v2 model.\n\nAll ids are processed in the tenant of the calling service-key token; ids for\nother tenants (or already migrated / nonexistent) are reported as skipped,\nnever migrated. Both session-scoped and dataset-scoped formulas are migrated." + }, + "CompositeMigrationResult": { + "properties": { + "migrated": { + "items": { + "type": "string", + "format": "uuid" + }, + "type": "array", + "title": "Migrated" + }, + "skipped": { + "items": { + "type": "string", + "format": "uuid" + }, + "type": "array", + "title": "Skipped" + }, + "failed": { + "items": { + "type": "string", + "format": "uuid" + }, + "type": "array", + "title": "Failed" + } + }, + "type": "object", + "required": [ + "migrated", + "skipped", + "failed" + ], + "title": "CompositeMigrationResult", + "description": "Per-id outcome of a composite migration batch." + }, "ConfiguredBy": { "type": "string", "enum": [ @@ -51367,6 +46514,22 @@ }, "CreateRepoRequest": { "properties": { + "tag_value_ids": { + "anyOf": [ + { + "items": { + "type": "string", + "format": "uuid" + }, + "type": "array", + "maxItems": 100 + }, + { + "type": "null" + } + ], + "title": "Tag Value Ids" + }, "repo_handle": { "type": "string", "title": "Repo Handle" @@ -51815,7 +46978,7 @@ "properties": { "series": { "items": { - "$ref": "#/components/schemas/CustomChartSeries" + "$ref": "#/components/schemas/CustomChartSeries-Input" }, "type": "array", "title": "Series" @@ -51837,6 +47000,206 @@ ], "title": "CustomChartCreatePreview" }, + "CustomChartFeedbackScoreMetricScalar": { + "properties": { + "type": { + "anyOf": [ + { + "type": "string", + "const": "max" + }, + { + "type": "string", + "const": "min" + }, + { + "type": "string", + "const": "avg" + } + ], + "title": "Type" + }, + "field": { + "type": "string", + "const": "feedback_score", + "title": "Field" + }, + "filter": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Filter" + }, + "params": { + "$ref": "#/components/schemas/CustomChartFeedbackScoreMetricScalarParams" + } + }, + "type": "object", + "required": [ + "type", + "field", + "params" + ], + "title": "CustomChartFeedbackScoreMetricScalar" + }, + "CustomChartFeedbackScoreMetricScalarParams": { + "properties": { + "feedback_key": { + "type": "string", + "title": "Feedback Key" + } + }, + "type": "object", + "required": [ + "feedback_key" + ], + "title": "CustomChartFeedbackScoreMetricScalarParams" + }, + "CustomChartFilterByDataset": { + "properties": { + "source_type": { + "type": "string", + "const": "dataset", + "title": "Source Type" + }, + "dataset_ids": { + "items": { + "type": "string", + "format": "uuid" + }, + "type": "array", + "title": "Dataset Ids" + } + }, + "type": "object", + "required": [ + "source_type", + "dataset_ids" + ], + "title": "CustomChartFilterByDataset" + }, + "CustomChartFilterByTracingProject": { + "properties": { + "source_type": { + "type": "string", + "const": "tracing_project", + "title": "Source Type" + }, + "run_filter": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Run Filter" + }, + "trace_filter": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Trace Filter" + }, + "tree_filter": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tree Filter" + }, + "project_ids": { + "items": { + "type": "string", + "format": "uuid" + }, + "type": "array", + "title": "Project Ids" + } + }, + "type": "object", + "required": [ + "source_type", + "project_ids" + ], + "title": "CustomChartFilterByTracingProject" + }, + "CustomChartGroupByComplex": { + "properties": { + "attribute": { + "anyOf": [ + { + "type": "string", + "const": "metadata" + }, + { + "type": "string", + "const": "feedback_label" + } + ], + "title": "Attribute" + }, + "path": { + "type": "string", + "title": "Path" + } + }, + "type": "object", + "required": [ + "attribute", + "path" + ], + "title": "CustomChartGroupByComplex" + }, + "CustomChartGroupByPlain": { + "properties": { + "attribute": { + "anyOf": [ + { + "type": "string", + "const": "name" + }, + { + "type": "string", + "const": "run_type" + }, + { + "type": "string", + "const": "tag" + }, + { + "type": "string", + "const": "project" + }, + { + "type": "string", + "const": "status" + } + ], + "title": "Attribute" + } + }, + "type": "object", + "required": [ + "attribute" + ], + "title": "CustomChartGroupByPlain" + }, "CustomChartMetric": { "type": "string", "enum": [ @@ -51869,6 +47232,237 @@ "title": "CustomChartMetric", "description": "Metrics you can chart. Feedback metrics are not available for organization-scoped charts." }, + "CustomChartMetricCount": { + "properties": { + "type": { + "type": "string", + "const": "count", + "title": "Type", + "default": "count" + }, + "filter": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Filter" + } + }, + "type": "object", + "title": "CustomChartMetricCount" + }, + "CustomChartMetricField": { + "type": "string", + "enum": [ + "latency_seconds", + "first_token_seconds", + "total_tokens", + "prompt_tokens", + "completion_tokens", + "total_cost", + "prompt_cost", + "completion_cost", + "feedback_score" + ], + "title": "CustomChartMetricField" + }, + "CustomChartMetricPercentile": { + "properties": { + "type": { + "type": "string", + "const": "percentile", + "title": "Type" + }, + "filter": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Filter" + }, + "field": { + "$ref": "#/components/schemas/CustomChartMetricField" + }, + "params": { + "$ref": "#/components/schemas/CustomChartMetricPercentileParams" + } + }, + "type": "object", + "required": [ + "type", + "field", + "params" + ], + "title": "CustomChartMetricPercentile" + }, + "CustomChartMetricPercentileParams": { + "properties": { + "p": { + "type": "number", + "maximum": 1.0, + "minimum": 0.0, + "title": "P" + } + }, + "type": "object", + "required": [ + "p" + ], + "title": "CustomChartMetricPercentileParams" + }, + "CustomChartMetricRatio-Input": { + "properties": { + "type": { + "type": "string", + "const": "ratio", + "title": "Type" + }, + "numerator": { + "anyOf": [ + { + "$ref": "#/components/schemas/CustomChartMetricCount" + }, + { + "$ref": "#/components/schemas/CustomChartFeedbackScoreMetricScalar" + }, + { + "$ref": "#/components/schemas/CustomChartMetricScalar" + }, + { + "$ref": "#/components/schemas/CustomChartMetricPercentile" + } + ], + "title": "Numerator" + }, + "denominator": { + "anyOf": [ + { + "$ref": "#/components/schemas/CustomChartMetricCount" + }, + { + "$ref": "#/components/schemas/CustomChartFeedbackScoreMetricScalar" + }, + { + "$ref": "#/components/schemas/CustomChartMetricScalar" + }, + { + "$ref": "#/components/schemas/CustomChartMetricPercentile" + } + ], + "title": "Denominator" + } + }, + "type": "object", + "required": [ + "type", + "numerator", + "denominator" + ], + "title": "CustomChartMetricRatio" + }, + "CustomChartMetricRatio-Output": { + "properties": { + "type": { + "type": "string", + "const": "ratio", + "title": "Type" + }, + "numerator": { + "anyOf": [ + { + "$ref": "#/components/schemas/CustomChartMetricCount" + }, + { + "$ref": "#/components/schemas/CustomChartFeedbackScoreMetricScalar" + }, + { + "$ref": "#/components/schemas/CustomChartMetricScalar" + }, + { + "$ref": "#/components/schemas/CustomChartMetricPercentile" + } + ], + "title": "Numerator" + }, + "denominator": { + "anyOf": [ + { + "$ref": "#/components/schemas/CustomChartMetricCount" + }, + { + "$ref": "#/components/schemas/CustomChartFeedbackScoreMetricScalar" + }, + { + "$ref": "#/components/schemas/CustomChartMetricScalar" + }, + { + "$ref": "#/components/schemas/CustomChartMetricPercentile" + } + ], + "title": "Denominator" + } + }, + "type": "object", + "required": [ + "type", + "numerator", + "denominator" + ], + "title": "CustomChartMetricRatio" + }, + "CustomChartMetricScalar": { + "properties": { + "type": { + "anyOf": [ + { + "type": "string", + "const": "sum" + }, + { + "type": "string", + "const": "max" + }, + { + "type": "string", + "const": "min" + }, + { + "type": "string", + "const": "avg" + } + ], + "title": "Type" + }, + "field": { + "$ref": "#/components/schemas/CustomChartMetricField" + }, + "filter": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Filter" + } + }, + "type": "object", + "required": [ + "type", + "field" + ], + "title": "CustomChartMetricScalar" + }, "CustomChartPreviewRequest": { "properties": { "bucket_info": { @@ -51935,7 +47529,7 @@ "anyOf": [ { "items": { - "$ref": "#/components/schemas/CustomChartSeries" + "$ref": "#/components/schemas/CustomChartSeries-Output" }, "type": "array" }, @@ -51957,7 +47551,7 @@ ], "title": "CustomChartResponse" }, - "CustomChartSeries": { + "CustomChartSeries-Input": { "properties": { "name": { "type": "string", @@ -51974,7 +47568,24 @@ ] }, "metric": { - "$ref": "#/components/schemas/CustomChartMetric" + "anyOf": [ + { + "$ref": "#/components/schemas/CustomChartMetric" + }, + { + "type": "null" + } + ] + }, + "project_metric": { + "anyOf": [ + { + "$ref": "#/components/schemas/HostProjectChartMetric" + }, + { + "type": "null" + } + ] }, "feedback_key": { "anyOf": [ @@ -51999,6 +47610,120 @@ ], "title": "Workspace Id" }, + "metric_definition": { + "anyOf": [ + { + "$ref": "#/components/schemas/CustomChartMetricCount" + }, + { + "$ref": "#/components/schemas/CustomChartFeedbackScoreMetricScalar" + }, + { + "$ref": "#/components/schemas/CustomChartMetricScalar" + }, + { + "$ref": "#/components/schemas/CustomChartMetricPercentile" + }, + { + "$ref": "#/components/schemas/CustomChartMetricRatio-Input" + }, + { + "type": "null" + } + ], + "title": "Metric Definition" + }, + "group_by_definitions": { + "anyOf": [ + { + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/CustomChartGroupByPlain" + }, + { + "$ref": "#/components/schemas/CustomChartGroupByComplex" + } + ] + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Group By Definitions" + }, + "filter_definition": { + "anyOf": [ + { + "$ref": "#/components/schemas/CustomChartFilterByTracingProject" + }, + { + "$ref": "#/components/schemas/CustomChartFilterByDataset" + }, + { + "type": "null" + } + ], + "title": "Filter Definition" + }, + "id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "string" + } + ], + "title": "Id" + }, + "group_by": { + "anyOf": [ + { + "$ref": "#/components/schemas/RunStatsGroupBySeriesResponse" + }, + { + "type": "null" + } + ] + } + }, + "type": "object", + "required": [ + "name", + "id" + ], + "title": "CustomChartSeries" + }, + "CustomChartSeries-Output": { + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "filters": { + "anyOf": [ + { + "$ref": "#/components/schemas/CustomChartSeriesFilters" + }, + { + "type": "null" + } + ] + }, + "metric": { + "anyOf": [ + { + "$ref": "#/components/schemas/CustomChartMetric" + }, + { + "type": "null" + } + ] + }, "project_metric": { "anyOf": [ { @@ -52009,6 +47734,87 @@ } ] }, + "feedback_key": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Feedback Key" + }, + "workspace_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Workspace Id" + }, + "metric_definition": { + "anyOf": [ + { + "$ref": "#/components/schemas/CustomChartMetricCount" + }, + { + "$ref": "#/components/schemas/CustomChartFeedbackScoreMetricScalar" + }, + { + "$ref": "#/components/schemas/CustomChartMetricScalar" + }, + { + "$ref": "#/components/schemas/CustomChartMetricPercentile" + }, + { + "$ref": "#/components/schemas/CustomChartMetricRatio-Output" + }, + { + "type": "null" + } + ], + "title": "Metric Definition" + }, + "group_by_definitions": { + "anyOf": [ + { + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/CustomChartGroupByPlain" + }, + { + "$ref": "#/components/schemas/CustomChartGroupByComplex" + } + ] + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Group By Definitions" + }, + "filter_definition": { + "anyOf": [ + { + "$ref": "#/components/schemas/CustomChartFilterByTracingProject" + }, + { + "$ref": "#/components/schemas/CustomChartFilterByDataset" + }, + { + "type": "null" + } + ], + "title": "Filter Definition" + }, "id": { "anyOf": [ { @@ -52035,7 +47841,6 @@ "type": "object", "required": [ "name", - "metric", "id" ], "title": "CustomChartSeries" @@ -52057,7 +47862,24 @@ ] }, "metric": { - "$ref": "#/components/schemas/CustomChartMetric" + "anyOf": [ + { + "$ref": "#/components/schemas/CustomChartMetric" + }, + { + "type": "null" + } + ] + }, + "project_metric": { + "anyOf": [ + { + "$ref": "#/components/schemas/HostProjectChartMetric" + }, + { + "type": "null" + } + ] }, "feedback_key": { "anyOf": [ @@ -52082,15 +47904,63 @@ ], "title": "Workspace Id" }, - "project_metric": { + "metric_definition": { "anyOf": [ { - "$ref": "#/components/schemas/HostProjectChartMetric" + "$ref": "#/components/schemas/CustomChartMetricCount" + }, + { + "$ref": "#/components/schemas/CustomChartFeedbackScoreMetricScalar" + }, + { + "$ref": "#/components/schemas/CustomChartMetricScalar" + }, + { + "$ref": "#/components/schemas/CustomChartMetricPercentile" + }, + { + "$ref": "#/components/schemas/CustomChartMetricRatio-Input" }, { "type": "null" } - ] + ], + "title": "Metric Definition" + }, + "group_by_definitions": { + "anyOf": [ + { + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/CustomChartGroupByPlain" + }, + { + "$ref": "#/components/schemas/CustomChartGroupByComplex" + } + ] + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Group By Definitions" + }, + "filter_definition": { + "anyOf": [ + { + "$ref": "#/components/schemas/CustomChartFilterByTracingProject" + }, + { + "$ref": "#/components/schemas/CustomChartFilterByDataset" + }, + { + "type": "null" + } + ], + "title": "Filter Definition" }, "group_by": { "anyOf": [ @@ -52105,8 +47975,7 @@ }, "type": "object", "required": [ - "name", - "metric" + "name" ], "title": "CustomChartSeriesCreate" }, @@ -52181,7 +48050,24 @@ ] }, "metric": { - "$ref": "#/components/schemas/CustomChartMetric" + "anyOf": [ + { + "$ref": "#/components/schemas/CustomChartMetric" + }, + { + "type": "null" + } + ] + }, + "project_metric": { + "anyOf": [ + { + "$ref": "#/components/schemas/HostProjectChartMetric" + }, + { + "type": "null" + } + ] }, "feedback_key": { "anyOf": [ @@ -52206,15 +48092,63 @@ ], "title": "Workspace Id" }, - "project_metric": { + "metric_definition": { "anyOf": [ { - "$ref": "#/components/schemas/HostProjectChartMetric" + "$ref": "#/components/schemas/CustomChartMetricCount" + }, + { + "$ref": "#/components/schemas/CustomChartFeedbackScoreMetricScalar" + }, + { + "$ref": "#/components/schemas/CustomChartMetricScalar" + }, + { + "$ref": "#/components/schemas/CustomChartMetricPercentile" + }, + { + "$ref": "#/components/schemas/CustomChartMetricRatio-Input" }, { "type": "null" } - ] + ], + "title": "Metric Definition" + }, + "group_by_definitions": { + "anyOf": [ + { + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/CustomChartGroupByPlain" + }, + { + "$ref": "#/components/schemas/CustomChartGroupByComplex" + } + ] + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Group By Definitions" + }, + "filter_definition": { + "anyOf": [ + { + "$ref": "#/components/schemas/CustomChartFilterByTracingProject" + }, + { + "$ref": "#/components/schemas/CustomChartFilterByDataset" + }, + { + "type": "null" + } + ], + "title": "Filter Definition" }, "group_by": { "anyOf": [ @@ -52241,8 +48175,7 @@ }, "type": "object", "required": [ - "name", - "metric" + "name" ], "title": "CustomChartSeriesUpdate" }, @@ -52250,7 +48183,11 @@ "type": "string", "enum": [ "line", - "bar" + "bar", + "table", + "kpi", + "top-k", + "pie" ], "title": "CustomChartType", "description": "Enum for custom chart types." @@ -53131,6 +49068,22 @@ }, "DatasetCreate": { "properties": { + "tag_value_ids": { + "anyOf": [ + { + "items": { + "type": "string", + "format": "uuid" + }, + "type": "array", + "maxItems": 100 + }, + { + "type": "null" + } + ], + "title": "Tag Value Ids" + }, "name": { "type": "string", "title": "Name" @@ -53841,6 +49794,51 @@ "title": "EvaluateExperimentRequest", "description": "Request body for evaluating an experiment." }, + "EvaluatorSpendDefaultBody": { + "properties": { + "limit_usd": { + "type": "number", + "exclusiveMinimum": 0.0, + "title": "Limit Usd" + }, + "window": { + "type": "string", + "enum": [ + "hourly", + "daily", + "weekly", + "monthly" + ], + "title": "Window" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "limit_usd", + "window" + ], + "title": "EvaluatorSpendDefaultBody", + "description": "Request shape for PUT. Matchers, name, type, action, and priority\nare server-defined; only limit and window are caller-controlled." + }, + "EvaluatorSpendDefaultResponse": { + "properties": { + "limit_usd": { + "type": "number", + "title": "Limit Usd" + }, + "window": { + "type": "string", + "title": "Window" + } + }, + "type": "object", + "required": [ + "limit_usd", + "window" + ], + "title": "EvaluatorSpendDefaultResponse" + }, "EvaluatorStructuredOutput": { "properties": { "hub_ref": { @@ -53926,6 +49924,17 @@ } ], "title": "Model" + }, + "playground_settings_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Model Configuration ID" } }, "type": "object", @@ -53975,6 +49984,42 @@ ], "title": "Source Run Id" }, + "source_session_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Source Session Id" + }, + "source_run_start_time": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Source Run Start Time" + }, + "source_trace_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Source Trace Id" + }, "metadata": { "anyOf": [ { @@ -54256,6 +50301,9 @@ "name", "dataset_id", "source_run_id", + "source_session_id", + "source_run_start_time", + "source_trace_id", "metadata", "inputs", "outputs", @@ -54595,6 +50643,42 @@ ], "title": "Source Run Id" }, + "source_session_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Source Session Id" + }, + "source_run_start_time": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Source Run Start Time" + }, + "source_trace_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Source Trace Id" + }, "metadata": { "anyOf": [ { @@ -54808,6 +50892,22 @@ }, "ExperimentResultsUpload": { "properties": { + "tag_value_ids": { + "anyOf": [ + { + "items": { + "type": "string", + "format": "uuid" + }, + "type": "array", + "maxItems": 100 + }, + { + "type": "null" + } + ], + "title": "Tag Value Ids" + }, "experiment_name": { "type": "string", "title": "Experiment Name" @@ -55410,6 +51510,22 @@ ], "title": "Start Time" }, + "feedback_thread_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Feedback Thread Id" + }, + "extend_trace_retention": { + "type": "boolean", + "title": "Extend Trace Retention", + "default": true + }, "id": { "type": "string", "format": "uuid", @@ -55496,6 +51612,11 @@ ], "title": "Score" }, + "extend_trace_retention": { + "type": "boolean", + "title": "Extend Trace Retention", + "default": true + }, "value": { "anyOf": [ { @@ -56485,152 +52606,168 @@ } }, "type": "object", - "required": [ - "display_name" - ], - "title": "FilterViewCreate" - }, - "FilterViewRename": { - "properties": { - "display_name": { - "type": "string", - "title": "Display Name" - }, - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Description" - } - }, - "type": "object", - "required": [ - "display_name" - ], - "title": "FilterViewRename" - }, - "FilterViewType": { - "type": "string", - "enum": [ - "runs", - "threads", - "single_run" - ], - "title": "FilterViewType" + "required": [ + "display_name" + ], + "title": "FilterViewCreate" + }, + "FilterViewRename": { + "properties": { + "display_name": { + "type": "string", + "title": "Display Name" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + } + }, + "type": "object", + "required": [ + "display_name" + ], + "title": "FilterViewRename" + }, + "FilterViewType": { + "type": "string", + "enum": [ + "runs", + "threads", + "single_run" + ], + "title": "FilterViewType" + }, + "FilterViewUpdate": { + "properties": { + "filter_string": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Filter String" + }, + "display_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Display Name" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "trace_filter_string": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Trace Filter String" + }, + "tree_filter_string": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tree Filter String" + }, + "type": { + "anyOf": [ + { + "$ref": "#/components/schemas/FilterViewType" + }, + { + "type": "null" + } + ] + }, + "start_time": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Start Time" + }, + "end_time": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "End Time" + }, + "duration": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Duration" + } + }, + "type": "object", + "title": "FilterViewUpdate" }, - "FilterViewUpdate": { + "ForkRepoRequest": { "properties": { - "filter_string": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Filter String" - }, - "display_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Display Name" - }, - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Description" - }, - "trace_filter_string": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Trace Filter String" - }, - "tree_filter_string": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Tree Filter String" - }, - "type": { - "anyOf": [ - { - "$ref": "#/components/schemas/FilterViewType" - }, - { - "type": "null" - } - ] - }, - "start_time": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } - ], - "title": "Start Time" - }, - "end_time": { + "tag_value_ids": { "anyOf": [ { - "type": "string", - "format": "date-time" + "items": { + "type": "string", + "format": "uuid" + }, + "type": "array", + "maxItems": 100 }, { "type": "null" } ], - "title": "End Time" + "title": "Tag Value Ids" }, - "duration": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Duration" - } - }, - "type": "object", - "title": "FilterViewUpdate" - }, - "ForkRepoRequest": { - "properties": { "repo_handle": { "type": "string", "title": "Repo Handle" @@ -57251,6 +53388,16 @@ } ], "title": "Workspace Name" + }, + "trace_tier": { + "anyOf": [ + { + "$ref": "#/components/schemas/TraceTier" + }, + { + "type": "null" + } + ] } }, "type": "object", @@ -57263,11 +53410,21 @@ "user", "api_key", "project", - "workspace" + "workspace", + "trace_tier" ], "title": "GranularUsageGroupBy", "description": "Dimensions for grouping granular usage data." }, + "GranularUsageKind": { + "type": "string", + "enum": [ + "traces", + "langsmith_deployments" + ], + "title": "GranularUsageKind", + "description": "Which billable usage domain a granular-usage query targets.\n\n- `traces`: trace counts.\n- `langsmith_deployments`: LangSmith Deployment metrics (nodes executed,\n agent runs, agent uptime).\n\nDefault is `traces` for backward compatibility — existing callers of\n`GET /granular-usage` without a `kind` query param get the same\nresponse shape they always did." + }, "GranularUsageRecord": { "properties": { "time_bucket": { @@ -57289,6 +53446,21 @@ "type": "integer", "title": "Traces", "default": 0 + }, + "nodes_executed": { + "type": "integer", + "title": "Nodes Executed", + "default": 0 + }, + "agent_runs": { + "type": "integer", + "title": "Agent Runs", + "default": 0 + }, + "agent_uptime_seconds": { + "type": "integer", + "title": "Agent Uptime Seconds", + "default": 0 } }, "type": "object", @@ -57296,7 +53468,7 @@ "dimensions" ], "title": "GranularUsageRecord", - "description": "A single granular usage data point." + "description": "A single granular usage data point.\n\nCarries both trace and LangSmith Deployment metric fields; the\n`kind` query param on `GET /granular-usage` picks which metric domain\nthe row's values come from. Fields for the unselected domain are\nalways `0`. Backwards-compat: callers that only read `traces` (the\npre-existing field) keep working unchanged." }, "GranularUsageResponse": { "properties": { @@ -59192,6 +55364,117 @@ "title": "ModelPriceMapCreateSchema", "description": "Model price map create schema." }, + "ModelPriceMapSchema": { + "properties": { + "id": { + "type": "string", + "format": "uuid", + "title": "Id" + }, + "name": { + "type": "string", + "title": "Name" + }, + "start_time": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Start Time" + }, + "tenant_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + }, + "match_path": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Match Path", + "default": [ + "model", + "model_name", + "model_id", + "model_path", + "endpoint_name" + ] + }, + "match_pattern": { + "type": "string", + "title": "Match Pattern" + }, + "prompt_cost": { + "type": "string", + "title": "Prompt Cost" + }, + "completion_cost": { + "type": "string", + "title": "Completion Cost" + }, + "prompt_cost_details": { + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Prompt Cost Details" + }, + "completion_cost_details": { + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Completion Cost Details" + }, + "provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Provider" + } + }, + "type": "object", + "required": [ + "name", + "match_pattern", + "prompt_cost", + "completion_cost" + ], + "title": "ModelPriceMapSchema", + "description": "Model price map schema." + }, "ModelPriceMapUpdateSchema": { "properties": { "name": { @@ -59343,7 +55626,8 @@ "OCSFApi": { "properties": { "operation": { - "$ref": "#/components/schemas/AuditLogOperation" + "$ref": "#/components/schemas/AuditLogOperation", + "x-extensible-enum": true } }, "type": "object", @@ -59992,6 +56276,17 @@ ], "title": "Role Id" }, + "role_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Role Name" + }, "workspace_ids": { "anyOf": [ { @@ -60019,6 +56314,17 @@ ], "title": "Workspace Role Id" }, + "workspace_role_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Workspace Role Name" + }, "password": { "anyOf": [ { @@ -60091,17 +56397,6 @@ "format": "date-time", "title": "Created At" }, - "role_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Role Name" - }, "org_role_id": { "anyOf": [ { @@ -60317,6 +56612,11 @@ "title": "Marketplace Payouts Enabled", "default": false }, + "byoc_create_saas_workspace_enabled": { + "type": "boolean", + "title": "Byoc Create Saas Workspace Enabled", + "default": true + }, "default_sso_provision": { "type": "boolean", "title": "Default Sso Provision", @@ -60486,9 +56786,26 @@ "title": "Plan Tier" }, "engine_default_enabled": { - "type": "boolean", - "title": "Engine Default Enabled", - "default": false + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Engine Default Enabled" + }, + "engine_lcu_spend_limit_monthly": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Engine Lcu Spend Limit Monthly" }, "max_identities": { "type": "integer", @@ -60633,6 +56950,11 @@ "title": "Byoc Enabled", "default": false }, + "byoc_max_data_planes": { + "type": "integer", + "title": "Byoc Max Data Planes", + "default": 5 + }, "enable_langgraph_pricing": { "type": "boolean", "title": "Enable Langgraph Pricing", @@ -60643,11 +56965,6 @@ "title": "Enable Thread View Playground", "default": false }, - "enable_org_usage_charts": { - "type": "boolean", - "title": "Enable Org Usage Charts", - "default": false - }, "use_exact_search_for_prompts": { "type": "boolean", "title": "Use Exact Search For Prompts", @@ -60795,6 +57112,27 @@ "title": "Agent Builder Enabled", "default": true }, + "fleet_builtin_models_enabled": { + "type": "boolean", + "title": "Fleet Builtin Models Enabled", + "default": false + }, + "dev_zero_deployments_enabled": { + "type": "boolean", + "title": "Dev Zero Deployments Enabled", + "default": false + }, + "fleet_lcu_spend_limit_monthly": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Fleet Lcu Spend Limit Monthly" + }, "max_agent_builder_assistants": { "type": "integer", "title": "Max Agent Builder Assistants", @@ -60834,6 +57172,17 @@ "type": "boolean", "title": "Managed Deep Agents Enabled", "default": false + }, + "is_anonymous": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Anonymous" } }, "type": "object", @@ -60945,6 +57294,17 @@ ], "title": "Engine Enabled" }, + "engine_lcu_spend_limit_monthly": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Engine Lcu Spend Limit Monthly" + }, "is_personal": { "type": "boolean", "title": "Is Personal" @@ -61023,6 +57383,11 @@ "title": "Workspace Admin Can Invite To Org", "default": false }, + "byoc_create_saas_workspace_enabled": { + "type": "boolean", + "title": "Byoc Create Saas Workspace Enabled", + "default": true + }, "marketplace_payouts_enabled": { "type": "boolean", "title": "Marketplace Payouts Enabled", @@ -61121,6 +57486,13 @@ "title": "Ip Allowlist Enabled", "default": false }, + "disabled_model_providers": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Disabled Model Providers" + }, "restrict_browser_secrets": { "anyOf": [ { @@ -61146,12 +57518,18 @@ ], "title": "Llm Auth Proxy Allowed Urls" }, - "engine_show_trial_modal": { - "type": "boolean", - "title": "Engine Show Trial Modal", - "default": false + "managed_evals_enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Managed Evals Enabled" }, - "engine_trial_modal_seen_at": { + "managed_eval_terms_accepted_at": { "anyOf": [ { "type": "string" @@ -61160,7 +57538,7 @@ "type": "null" } ], - "title": "Engine Trial Modal Seen At" + "title": "Managed Eval Terms Accepted At" } }, "type": "object", @@ -61320,6 +57698,17 @@ "title": "Workspace Admin Can Invite To Org", "default": false }, + "byoc_create_saas_workspace_enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Byoc Create Saas Workspace Enabled" + }, "default_sso_provision": { "type": "boolean", "title": "Default Sso Provision", @@ -61410,6 +57799,20 @@ ], "title": "Ip Allowlist" }, + "disabled_model_providers": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Disabled Model Providers" + }, "restrict_browser_secrets": { "anyOf": [ { @@ -61445,6 +57848,28 @@ } ], "title": "Engine Enabled" + }, + "engine_lcu_spend_limit_monthly": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Engine Lcu Spend Limit Monthly" + }, + "managed_evals_enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Managed Evals Enabled" } }, "type": "object", @@ -61618,6 +58043,20 @@ ], "title": "Ip Allowlist" }, + "disabled_model_providers": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Disabled Model Providers" + }, "restrict_browser_secrets": { "anyOf": [ { @@ -61629,6 +58068,17 @@ ], "title": "Restrict Browser Secrets" }, + "byoc_create_saas_workspace_enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Byoc Create Saas Workspace Enabled" + }, "llm_auth_proxy_allowed_urls": { "anyOf": [ { @@ -61653,6 +58103,20 @@ } ], "title": "Engine Enabled" + }, + "engine_lcu_spend_limit_monthly": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Engine Lcu Spend Limit Monthly" } }, "type": "object", @@ -61691,15 +58155,19 @@ "no_plan", "developer", "developer_01_2026", + "developer_07_2026", "plus", "plus_01_2026", + "plus_07_2026", "enterprise", "developer_legacy", "plus_legacy", "free", + "free_07_2026", "enterprise_legacy", "startup", "startup_v0", + "startup_07_2026", "partner", "premier" ], @@ -61729,6 +58197,17 @@ ], "title": "Role Id" }, + "role_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Role Name" + }, "workspace_ids": { "anyOf": [ { @@ -61756,6 +58235,17 @@ ], "title": "Workspace Role Id" }, + "workspace_role_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Workspace Role Name" + }, "password": { "anyOf": [ { @@ -61828,17 +58318,6 @@ "format": "date-time", "title": "Created At" }, - "role_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Role Name" - }, "org_role_id": { "anyOf": [ { @@ -61895,6 +58374,17 @@ ], "title": "Role Id" }, + "role_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Role Name" + }, "workspace_ids": { "anyOf": [ { @@ -61922,6 +58412,17 @@ ], "title": "Workspace Role Id" }, + "workspace_role_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Workspace Role Name" + }, "password": { "anyOf": [ { @@ -61951,6 +58452,35 @@ ], "title": "PendingIdentityCreate" }, + "PendingIdentityPatch": { + "properties": { + "role_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Role Id" + }, + "role_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Role Name" + } + }, + "type": "object", + "title": "PendingIdentityPatch" + }, "PendingUpload": { "properties": { "target_cursor": { @@ -62139,417 +58669,6 @@ ], "title": "PlaygroundPromptCanvasPayload" }, - "PlaygroundRunOverDatasetBatchRequestSchema": { - "properties": { - "manifest": { - "title": "Manifest" - }, - "secrets": { - "additionalProperties": { - "type": "string" - }, - "type": "object", - "title": "Secrets" - }, - "run_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Run Id" - }, - "repo_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Repo Id" - }, - "tools": { - "anyOf": [ - { - "items": {}, - "type": "array" - }, - { - "type": "null" - } - ], - "title": "Tools" - }, - "tool_choice": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Tool Choice" - }, - "parallel_tool_calls": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Parallel Tool Calls" - }, - "options": { - "$ref": "#/components/schemas/RunnableConfig" - }, - "project_name": { - "type": "string", - "title": "Project Name" - }, - "repo_handle": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Repo Handle" - }, - "owner": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Owner" - }, - "commit": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Commit" - }, - "evaluator_rules": { - "anyOf": [ - { - "items": { - "type": "string", - "format": "uuid" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "title": "Evaluator Rules" - }, - "requests_per_second": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Requests Per Second" - }, - "use_or_fallback_to_workspace_secrets": { - "type": "boolean", - "title": "Use Or Fallback To Workspace Secrets", - "default": false - }, - "runner_context": { - "anyOf": [ - { - "$ref": "#/components/schemas/RunnerContextEnum" - }, - { - "type": "null" - } - ], - "default": "langsmith_ui" - }, - "dataset_id": { - "type": "string", - "format": "uuid", - "title": "Dataset Id" - }, - "dataset_splits": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "title": "Dataset Splits" - }, - "repetitions": { - "type": "integer", - "maximum": 30.0, - "minimum": 1.0, - "title": "Repetitions", - "default": 1 - }, - "metadata": { - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "title": "Metadata" - }, - "batch_size": { - "anyOf": [ - { - "type": "integer", - "maximum": 100.0, - "minimum": 1.0 - }, - { - "type": "null" - } - ], - "title": "Batch Size" - } - }, - "type": "object", - "required": [ - "manifest", - "secrets", - "options", - "project_name", - "dataset_id" - ], - "title": "PlaygroundRunOverDatasetBatchRequestSchema" - }, - "PlaygroundRunOverDatasetRequestSchema": { - "properties": { - "manifest": { - "title": "Manifest" - }, - "secrets": { - "additionalProperties": { - "type": "string" - }, - "type": "object", - "title": "Secrets" - }, - "run_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Run Id" - }, - "repo_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Repo Id" - }, - "tools": { - "anyOf": [ - { - "items": {}, - "type": "array" - }, - { - "type": "null" - } - ], - "title": "Tools" - }, - "tool_choice": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Tool Choice" - }, - "parallel_tool_calls": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Parallel Tool Calls" - }, - "options": { - "$ref": "#/components/schemas/RunnableConfig" - }, - "project_name": { - "type": "string", - "title": "Project Name" - }, - "repo_handle": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Repo Handle" - }, - "owner": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Owner" - }, - "commit": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Commit" - }, - "evaluator_rules": { - "anyOf": [ - { - "items": { - "type": "string", - "format": "uuid" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "title": "Evaluator Rules" - }, - "requests_per_second": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Requests Per Second" - }, - "use_or_fallback_to_workspace_secrets": { - "type": "boolean", - "title": "Use Or Fallback To Workspace Secrets", - "default": false - }, - "runner_context": { - "anyOf": [ - { - "$ref": "#/components/schemas/RunnerContextEnum" - }, - { - "type": "null" - } - ], - "default": "langsmith_ui" - }, - "dataset_id": { - "type": "string", - "format": "uuid", - "title": "Dataset Id" - }, - "dataset_splits": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "title": "Dataset Splits" - }, - "repetitions": { - "type": "integer", - "maximum": 30.0, - "minimum": 1.0, - "title": "Repetitions", - "default": 1 - }, - "metadata": { - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "title": "Metadata" - } - }, - "type": "object", - "required": [ - "manifest", - "secrets", - "options", - "project_name", - "dataset_id" - ], - "title": "PlaygroundRunOverDatasetRequestSchema" - }, "PlaygroundSavedOptions": { "properties": { "requests_per_second": { @@ -62819,7 +58938,7 @@ }, "available_in_polly": { "type": "boolean", - "title": "Available In Chat", + "title": "Available In Polly", "default": false }, "available_in_insights_heavy": { @@ -63023,7 +59142,7 @@ "type": "null" } ], - "title": "Available In Chat" + "title": "Available In Polly" }, "available_in_insights_heavy": { "anyOf": [ @@ -63183,6 +59302,11 @@ }, "type": "array", "title": "Session Ids" + }, + "extend_trace_retention": { + "type": "boolean", + "title": "Extend Trace Retention", + "default": false } }, "type": "object", @@ -64285,6 +60409,42 @@ ], "title": "Source Run Id" }, + "source_session_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Source Session Id" + }, + "source_run_start_time": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Source Run Start Time" + }, + "source_trace_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Source Trace Id" + }, "metadata": { "anyOf": [ { @@ -64726,6 +60886,7 @@ "format": "uuid" }, "type": "array", + "maxItems": 10, "minItems": 1, "title": "Session Ids" }, @@ -64737,6 +60898,7 @@ }, "limit": { "type": "integer", + "maximum": 20.0, "minimum": 1.0, "title": "Limit", "default": 10 @@ -65301,6 +61463,20 @@ "type": "null" } ] + }, + "owners": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/RepoOwner" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Owners" } }, "type": "object", @@ -65396,6 +61572,7 @@ "ResourceType": { "type": "string", "enum": [ + "agent", "dashboard", "dataset", "deployment", @@ -65406,7 +61583,8 @@ "project", "prompt", "queue", - "sandbox" + "sandbox", + "skill" ], "title": "ResourceType" }, @@ -65481,6 +61659,11 @@ "type": "null" } ] + }, + "is_restricted": { + "type": "boolean", + "title": "Is Restricted", + "default": false } }, "type": "object", @@ -65493,6 +61676,19 @@ ], "title": "Role" }, + "RoleRestrictionUpdate": { + "properties": { + "is_restricted": { + "type": "boolean", + "title": "Is Restricted" + } + }, + "type": "object", + "required": [ + "is_restricted" + ], + "title": "RoleRestrictionUpdate" + }, "RootModel_Dict_str__list_str___": { "additionalProperties": { "items": { @@ -65582,6 +61778,18 @@ ], "title": "Run Session Id" }, + "run_trace_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Run Trace Id" + }, "start_time": { "type": "string", "format": "date-time", @@ -67437,6 +63645,49 @@ "title": "Extend Only", "default": false }, + "is_tracing_disabled": { + "type": "boolean", + "title": "Is Tracing Disabled", + "default": false + }, + "extend_evaluator_trace_retention": { + "type": "boolean", + "title": "Extend Evaluator Trace Retention", + "default": false + }, + "extend_dataset_trace_retention": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Extend Dataset Trace Retention" + }, + "extend_annotation_queue_trace_retention": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Extend Annotation Queue Trace Retention" + }, + "extend_webhook_trace_retention": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Extend Webhook Trace Retention" + }, "transient": { "type": "boolean", "title": "Transient", @@ -67892,6 +64143,60 @@ "title": "Extend Only", "default": false }, + "is_managed_evaluator": { + "type": "boolean", + "title": "Is Managed Evaluator", + "default": false + }, + "is_tracing_disabled": { + "type": "boolean", + "title": "Is Tracing Disabled", + "default": false + }, + "extend_evaluator_trace_retention": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Extend Evaluator Trace Retention" + }, + "extend_dataset_trace_retention": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Extend Dataset Trace Retention" + }, + "extend_annotation_queue_trace_retention": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Extend Annotation Queue Trace Retention" + }, + "extend_webhook_trace_retention": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Extend Webhook Trace Retention" + }, "include_extended_stats": { "type": "boolean", "title": "Include Extended Stats", @@ -68173,6 +64478,61 @@ "title": "Extend Only", "default": false }, + "is_tracing_disabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Tracing Disabled" + }, + "extend_evaluator_trace_retention": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Extend Evaluator Trace Retention" + }, + "extend_dataset_trace_retention": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Extend Dataset Trace Retention" + }, + "extend_annotation_queue_trace_retention": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Extend Annotation Queue Trace Retention" + }, + "extend_webhook_trace_retention": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Extend Webhook Trace Retention" + }, "transient": { "type": "boolean", "title": "Transient", @@ -68431,6 +64791,49 @@ "title": "Extend Only", "default": false }, + "is_tracing_disabled": { + "type": "boolean", + "title": "Is Tracing Disabled", + "default": false + }, + "extend_evaluator_trace_retention": { + "type": "boolean", + "title": "Extend Evaluator Trace Retention", + "default": false + }, + "extend_dataset_trace_retention": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Extend Dataset Trace Retention" + }, + "extend_annotation_queue_trace_retention": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Extend Annotation Queue Trace Retention" + }, + "extend_webhook_trace_retention": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Extend Webhook Trace Retention" + }, "transient": { "type": "boolean", "title": "Transient", @@ -68635,6 +65038,17 @@ } ], "title": "Test Attachments" + }, + "test_thread_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Test Thread Id" } }, "type": "object", @@ -68643,7 +65057,7 @@ "sampling_rate" ], "title": "RunRulesValidateSchema", - "description": "Schema for validating rules without creating them.\n\nExtends RunRulesCreateSchema with test data fields for validation.\nOnly LLM-as-judge rules (evaluators) are supported, not code_evaluators." + "description": "Schema for validating rules without creating them.\n\nExtends RunRulesCreateSchema with test data fields for validation.\nOnly LLM-as-judge rules (evaluators) are supported, not code_evaluators.\n\nFor trace-level evaluators, provide test_inputs / test_outputs.\nFor thread evaluators (group_by=\"thread_id\"), provide test_thread_id +\nsession_id instead; the backend fetches and assembles all turns automatically." }, "RunRulesWebhookSchema": { "properties": { @@ -69572,6 +65986,18 @@ ], "title": "Completion Tokens" }, + "first_token_time": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "First Token Time" + }, "total_cost": { "anyOf": [ { @@ -69634,13 +66060,6 @@ } ], "title": "App Path" - }, - "feedbacks": { - "items": { - "$ref": "#/components/schemas/FeedbackSchema" - }, - "type": "array", - "title": "Feedbacks" } }, "type": "object", @@ -70392,6 +66811,11 @@ "format": "uuid", "title": "Run Id" }, + "shared_trace_id": { + "type": "string", + "format": "uuid", + "title": "Shared Trace Id" + }, "share_token": { "type": "string", "format": "uuid", @@ -70401,6 +66825,7 @@ "type": "object", "required": [ "run_id", + "shared_trace_id", "share_token" ], "title": "RunShareSchema" @@ -70843,7 +67268,8 @@ "type": "null" } ], - "title": "Trace" + "title": "Trace", + "description": "Filter runs by trace ID. When set, limit and cursor-based pagination are not applied — all runs in the trace are returned in a single response." }, "parent_run": { "anyOf": [ @@ -71081,6 +67507,23 @@ } ], "title": "Select" + }, + "reference_dataset_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Reference Dataset Id" + }, + "include_details": { + "type": "boolean", + "title": "Include Details", + "default": false } }, "type": "object", @@ -71119,6 +67562,7 @@ "session_feedback_stats", "all_run_stats", "all_token_stats", + "group_count", "prompt_token_details", "completion_token_details", "prompt_cost_details", @@ -71141,82 +67585,6 @@ "title": "RunTypeEnum", "description": "Enum for run types." }, - "RunnableConfig": { - "properties": { - "tags": { - "items": { - "type": "string" - }, - "type": "array", - "title": "Tags" - }, - "metadata": { - "additionalProperties": true, - "type": "object", - "title": "Metadata" - }, - "callbacks": { - "anyOf": [ - { - "items": {}, - "type": "array" - }, - {}, - { - "type": "null" - } - ], - "title": "Callbacks" - }, - "run_name": { - "type": "string", - "title": "Run Name" - }, - "max_concurrency": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Max Concurrency" - }, - "recursion_limit": { - "type": "integer", - "title": "Recursion Limit" - }, - "configurable": { - "additionalProperties": true, - "type": "object", - "title": "Configurable" - }, - "run_id": { - "anyOf": [ - { - "type": "string", - "format": "uuid" - }, - { - "type": "null" - } - ], - "title": "Run Id" - } - }, - "type": "object", - "title": "RunnableConfig", - "description": "Configuration for a `Runnable`.\n\n!!! note Custom values\n\n The `TypedDict` has `total=False` set intentionally to:\n\n - Allow partial configs to be created and merged together via `merge_configs`\n - Support config propagation from parent to child runnables via\n `var_child_runnable_config` (a `ContextVar` that automatically passes\n config down the call stack without explicit parameter passing), where\n configs are merged rather than replaced\n\n !!! example\n\n ```python\n # Parent sets tags\n chain.invoke(input, config={\"tags\": [\"parent\"]})\n # Child automatically inherits and can add:\n # ensure_config({\"tags\": [\"child\"]}) -> {\"tags\": [\"parent\", \"child\"]}\n ```" - }, - "RunnerContextEnum": { - "type": "string", - "enum": [ - "langsmith_ui", - "langsmith_align_evals" - ], - "title": "RunnerContextEnum" - }, "RunsFilterDataSourceTypeEnum": { "type": "string", "enum": [ @@ -72115,8 +68483,7 @@ "latency_p50", "latency_p99", "error_rate", - "feedback", - "runs_count" + "feedback" ], "title": "SessionSortableColumns" }, @@ -72210,7 +68577,7 @@ }, "series": { "items": { - "$ref": "#/components/schemas/CustomChartSeries" + "$ref": "#/components/schemas/CustomChartSeries-Output" }, "type": "array", "title": "Series" @@ -73414,6 +69781,14 @@ }, "TaggingsByResourceType": { "properties": { + "agents": { + "items": { + "$ref": "#/components/schemas/Resource" + }, + "type": "array", + "title": "Agents", + "default": [] + }, "alerts": { "items": { "$ref": "#/components/schemas/Resource" @@ -73501,6 +69876,14 @@ "type": "array", "title": "Sandboxes", "default": [] + }, + "skills": { + "items": { + "$ref": "#/components/schemas/Resource" + }, + "type": "array", + "title": "Skills", + "default": [] } }, "type": "object", @@ -74665,6 +71048,22 @@ }, "TracerSessionCreate": { "properties": { + "tag_value_ids": { + "anyOf": [ + { + "items": { + "type": "string", + "format": "uuid" + }, + "type": "array", + "maxItems": 100 + }, + { + "type": "null" + } + ], + "title": "Tag Value Ids" + }, "start_time": { "type": "string", "format": "date-time", @@ -75298,6 +71697,34 @@ "type": "string", "format": "uuid", "title": "Id" + }, + "scope": { + "$ref": "#/components/schemas/UsageLimitScope", + "default": "workspace" + }, + "session_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Session Id" + }, + "identity_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Identity Id" } }, "type": "object", @@ -75322,6 +71749,34 @@ "format": "uuid", "title": "Id" }, + "scope": { + "$ref": "#/components/schemas/UsageLimitScope", + "default": "workspace" + }, + "session_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Session Id" + }, + "identity_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Identity Id" + }, "tenant_id": { "type": "string", "format": "uuid", @@ -75349,6 +71804,16 @@ "title": "UsageLimit", "description": "Usage limit model." }, + "UsageLimitScope": { + "type": "string", + "enum": [ + "workspace", + "project", + "user" + ], + "title": "UsageLimitScope", + "description": "Granularity a limit applies to within a tenant." + }, "UsageLimitType": { "type": "string", "enum": [ @@ -75615,52 +72080,31 @@ "title": "WorkspaceCreate", "description": "Creation model for the workspace." }, - "WorkspacePatch": { - "properties": { - "display_name": { - "type": "string", - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\-_ '@()]+$", - "title": "Display Name" - } - }, - "type": "object", - "required": [ - "display_name" - ], - "title": "WorkspacePatch", - "description": "Patch model for the workspace." - }, - "_SSOEmailLookupRequest": { + "WorkspaceInviteResult": { "properties": { "email": { "type": "string", "title": "Email" - } - }, - "type": "object", - "required": [ - "email" - ], - "title": "_SSOEmailLookupRequest" - }, - "app__hub__crud__tenants__Tenant": { - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Id" }, - "display_name": { - "type": "string", - "title": "Display Name" + "read_only": { + "type": "boolean", + "title": "Read Only", + "default": false, + "deprecated": true }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Created At" + "role_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Role Id" }, - "tenant_handle": { + "role_name": { "anyOf": [ { "type": "string" @@ -75669,25 +72113,24 @@ "type": "null" } ], - "title": "Tenant Handle" - } - }, - "type": "object", - "required": [ - "id", - "display_name", - "created_at" - ], - "title": "Tenant" - }, - "app__schemas__Tenant": { - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Id" + "title": "Role Name" }, - "organization_id": { + "workspace_ids": { + "anyOf": [ + { + "items": { + "type": "string", + "format": "uuid" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Workspace Ids" + }, + "workspace_role_id": { "anyOf": [ { "type": "string", @@ -75697,26 +72140,9 @@ "type": "null" } ], - "title": "Organization Id" - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Created At" - }, - "display_name": { - "type": "string", - "title": "Display Name" - }, - "is_personal": { - "type": "boolean", - "title": "Is Personal" - }, - "is_deleted": { - "type": "boolean", - "title": "Is Deleted" + "title": "Workspace Role Id" }, - "tenant_handle": { + "workspace_role_name": { "anyOf": [ { "type": "string" @@ -75725,9 +72151,9 @@ "type": "null" } ], - "title": "Tenant Handle" + "title": "Workspace Role Name" }, - "data_plane_url": { + "password": { "anyOf": [ { "type": "string" @@ -75736,744 +72162,255 @@ "type": "null" } ], - "title": "Data Plane Url" - } - }, - "type": "object", - "required": [ - "id", - "created_at", - "display_name", - "is_personal", - "is_deleted" - ], - "title": "Tenant", - "description": "Tenant schema." - }, - "abac.ErrorResponse": { - "type": "object", - "properties": { - "error": { - "type": "string", - "example": "Invalid request: missing required fields" - } - } - }, - "agent_builder_webhooks.WebhookTestResult": { - "type": "object", - "properties": { - "upstream_body": { - "type": "string" - }, - "upstream_content_type": { - "type": "string" - }, - "upstream_status_code": { - "type": "integer" - } - } - }, - "agents.Agent": { - "type": "object", - "properties": { - "access_level": { - "type": "string", - "enum": [ - "READ", - "RUN", - "WRITE" - ] - }, - "backend": { - "$ref": "#/components/schemas/agents.AgentBackend" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "description": { - "type": "string" - }, - "extras": { - "type": "object", - "additionalProperties": {} - }, - "files": { - "description": "Raw file map. Returned only when `include_files=true`.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/agents.FileEntry" - } - }, - "id": { - "type": "string", - "format": "uuid" - }, - "instructions": { - "description": "Deprecated: use `system_prompt`. Echoed alongside `system_prompt` with\nthe same value for backwards compatibility.", - "type": "string" - }, - "is_owner": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "owner_id": { - "type": "string", - "format": "uuid" - }, - "permissions": { - "$ref": "#/components/schemas/agents.AgentPermissions" - }, - "revision": { - "type": "string" - }, - "runtime": { - "$ref": "#/components/schemas/agents.AgentRuntime" - }, - "skills": { - "description": "Skills parsed from `skills//SKILL.md` and supporting files.", - "type": "array", - "items": { - "$ref": "#/components/schemas/agents.SkillSpec" - } - }, - "subagents": { - "description": "Subagents parsed from `subagents//AGENTS.md` + `subagents//tools.json`.", - "type": "array", - "items": { - "$ref": "#/components/schemas/agents.SubagentSpec" - } - }, - "system_prompt": { - "description": "Agent system prompt parsed from `AGENTS.md`.", - "type": "string" + "title": "Password" }, - "tools": { - "description": "Tool config parsed from `tools.json`.", - "allOf": [ + "full_name": { + "anyOf": [ { - "$ref": "#/components/schemas/agents.ToolsConfig" - } - ] - }, - "updated_at": { - "type": "string", - "format": "date-time" - } - } - }, - "agents.AgentBackend": { - "type": "object", - "properties": { - "sandbox": { - "description": "Sandbox configuration. Applies when `type` is a scoped sandbox backend.", - "allOf": [ + "type": "string" + }, { - "$ref": "#/components/schemas/agents.SandboxConfig" + "type": "null" } - ] - }, - "type": { - "description": "Execution backend type. Use a scoped sandbox backend for sandbox-backed agents.", - "type": "string", - "enum": [ - "default", - "thread_scoped_sandbox", - "agent_scoped_sandbox" ], - "example": "thread_scoped_sandbox" - } - } - }, - "agents.AgentModelConfig": { - "type": "object", - "properties": { - "model_id": { - "description": "Model ID used to run the agent.", - "type": "string", - "example": "claude-sonnet-4-6" - } - } - }, - "agents.AgentPermissions": { - "type": "object", - "properties": { - "identity": { - "type": "string", - "enum": [ - "personal", - "shared" - ] + "title": "Full Name" }, - "shared_users": { - "$ref": "#/components/schemas/agents.SharedUsers" + "access_scope": { + "$ref": "#/components/schemas/AccessScope", + "default": "workspace" }, - "tenant_access_level": { + "id": { "type": "string", - "enum": [ - "read", - "run", - "write" - ] + "format": "uuid", + "title": "Id" }, - "visibility": { - "type": "string", - "enum": [ - "tenant", - "user" - ] - } - } - }, - "agents.AgentRuntime": { - "type": "object", - "properties": { - "model": { - "description": "Model configuration for the agent.", - "allOf": [ + "user_id": { + "anyOf": [ { - "$ref": "#/components/schemas/agents.AgentModelConfig" + "type": "string", + "format": "uuid" + }, + { + "type": "null" } - ] - } - } - }, - "agents.AgentSummary": { - "type": "object", - "properties": { - "access_level": { - "type": "string", - "enum": [ - "READ", - "RUN", - "WRITE" - ] - }, - "backend": { - "$ref": "#/components/schemas/agents.AgentBackend" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "description": { - "type": "string" - }, - "extras": { - "type": "object", - "additionalProperties": {} - }, - "id": { - "type": "string", - "format": "uuid" - }, - "is_owner": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "owner_id": { - "type": "string", - "format": "uuid" - }, - "permissions": { - "$ref": "#/components/schemas/agents.AgentPermissions" - }, - "runtime": { - "$ref": "#/components/schemas/agents.AgentRuntime" - }, - "updated_at": { - "type": "string", - "format": "date-time" - } - } - }, - "agents.CloneAgentRequest": { - "type": "object", - "properties": { - "name": { - "type": "string", - "example": "Researcher (Copy)" - }, - "permissions": { - "$ref": "#/components/schemas/agents.AgentPermissions" - } - } - }, - "agents.Connection": { - "type": "object", - "properties": { - "agent_id": { - "type": "string" - }, - "auth_token_id": { - "type": "string" - }, - "created_at": { - "type": "string" - }, - "created_by": { - "type": "string" - }, - "expires_at": { - "type": "string" - }, - "id": { - "type": "string" - }, - "provider_account_label": { - "type": "string" - }, - "provider_id": { - "type": "string" - }, - "scopes": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "agents.CreateAgentRequest": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "backend": { - "$ref": "#/components/schemas/agents.AgentBackend" - }, - "configurable": { - "description": "Caller-defined key/value tracking merged into the agent's runtime\nconfiguration. Typed runtime fields win on key collision.", - "type": "object", - "additionalProperties": {} - }, - "description": { - "type": "string" - }, - "extras": { - "description": "Caller-defined key/value tracking attached to the agent's metadata.", - "type": "object", - "additionalProperties": {} - }, - "files": { - "description": "Raw file map for paths the typed fields don't cover. Setting a typed\nfield and the corresponding `files` entry returns 422.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/agents.FileEntry" - } - }, - "instructions": { - "description": "Deprecated: use `system_prompt`. Accepted for backwards compatibility;\n`system_prompt` takes precedence when both are set.", - "type": "string" - }, - "name": { - "type": "string" - }, - "permissions": { - "$ref": "#/components/schemas/agents.AgentPermissions" - }, - "runtime": { - "$ref": "#/components/schemas/agents.AgentRuntime" - }, - "skills": { - "description": "Skills. Each entry is written to `skills//SKILL.md` and supporting files.", - "type": "array", - "items": { - "$ref": "#/components/schemas/agents.SkillSpec" - } - }, - "subagents": { - "description": "Subagents. Each entry is written to `subagents//AGENTS.md` and `subagents//tools.json`.", - "type": "array", - "items": { - "$ref": "#/components/schemas/agents.SubagentSpec" - } - }, - "system_prompt": { - "description": "Agent system prompt. Written to `AGENTS.md`.", - "type": "string", - "example": "You are a helpful agent. Use the available tools to answer the user's question." + ], + "title": "User Id" }, - "tools": { - "description": "Tool config. Written to `tools.json`.", - "allOf": [ + "tenant_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, { - "$ref": "#/components/schemas/agents.ToolsConfig" + "type": "null" } - ] - } - } - }, - "agents.CreateConnectionRequest": { - "type": "object", - "properties": { - "auth_token_id": { - "type": "string" - } - } - }, - "agents.ErrorResponse": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - }, - "status": { - "type": "integer" - }, - "type": { - "type": "string" - } - } - }, - "agents.FileEntry": { - "type": "object", - "properties": { - "commit_id": { - "description": "Optional pin to a specific skill commit. Defaults to latest.", - "type": "string" - }, - "content": { - "description": "File contents as a UTF-8 string.", - "type": "string", - "example": "# AGENTS.md\n\nYou are a helpful agent." - }, - "repo_handle": { - "description": "Workspace skill repo handle. Required when type=skill.", - "type": "string", - "example": "summarizer" - }, - "type": { - "description": "Entry discriminator. Defaults to \"file\" when omitted.", - "type": "string", - "enum": [ - "file", - "skill" ], - "example": "file" - } - } - }, - "agents.HealthResponse": { - "type": "object", - "properties": { - "agent_id": { - "type": "string" - }, - "checked_at": { - "type": "string", - "format": "date-time" - }, - "mcp_check": { - "$ref": "#/components/schemas/agents.MCPCheck" - } - } - }, - "agents.ListAgentsResponse": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/agents.AgentSummary" - } - }, - "next_cursor": { - "type": "string" - } - } - }, - "agents.ListConnectionsResponse": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/agents.Connection" - } - } - } - }, - "agents.MCPCheck": { - "type": "object", - "properties": { - "ok": { - "type": "boolean" - }, - "servers": { - "type": "array", - "items": { - "$ref": "#/components/schemas/agents.MCPServerHealth" - } - } - } - }, - "agents.MCPServerHealth": { - "type": "object", - "properties": { - "error": { - "type": "string" + "title": "Tenant Id" }, - "error_code": { - "$ref": "#/components/schemas/mcptools.MCPErrorCode" + "organization_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Organization Id" }, - "is_default": { - "type": "boolean" + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" }, - "name": { - "type": "string" + "org_role_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Org Role Id" }, - "ok": { - "type": "boolean" + "org_role_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Org Role Name" }, - "url": { - "type": "string" + "ls_user_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Ls User Id" } - } - }, - "agents.SandboxConfig": { + }, "type": "object", + "required": [ + "email", + "id", + "created_at" + ], + "title": "WorkspaceInviteResult", + "description": "Response type for the batch workspace invite endpoint.\n\nExtends PendingIdentity so existing clients continue to work. When the\ninvitee was already an active org member, ``ls_user_id`` is populated\nand ``email`` is filled from the request payload." + }, + "WorkspacePatch": { "properties": { - "delete_after_stop_seconds": { - "description": "Time after a sandbox is stopped before it is deleted, in seconds.", - "type": "integer", - "example": 1200 - }, - "idle_ttl_seconds": { - "description": "Idle timeout after which an unused sandbox is paused, in seconds.", - "type": "integer", - "example": 600 - }, - "policy_ids": { - "description": "Sandbox policies governing tool execution.", - "type": "array", - "items": { - "type": "string" - } - }, - "snapshot_id": { - "description": "Snapshot used when creating new sandbox-backed computers.", + "display_name": { "type": "string", - "example": "550e8400-e29b-41d4-a716-446655440000" + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_ '@()]+$", + "title": "Display Name" } - } - }, - "agents.SharedUsers": { + }, "type": "object", + "required": [ + "display_name" + ], + "title": "WorkspacePatch", + "description": "Patch model for the workspace." + }, + "_SSOEmailLookupRequest": { "properties": { - "read": { - "description": "User IDs allowed to read the agent.", - "type": "array", - "items": { - "type": "string" - } - }, - "run": { - "description": "User IDs allowed to run the agent.", - "type": "array", - "items": { - "type": "string" - } - }, - "update": { - "description": "User IDs allowed to update the agent.", - "type": "array", - "items": { - "type": "string" - } + "email": { + "type": "string", + "title": "Email" } - } - }, - "agents.SkillSpec": { + }, "type": "object", + "required": [ + "email" + ], + "title": "_SSOEmailLookupRequest" + }, + "app__hub__crud__tenants__Tenant": { "properties": { - "description": { - "description": "Short human-readable description shown to the agent.", + "id": { "type": "string", - "example": "Summarise text into a paragraph." - }, - "files": { - "description": "Supporting files keyed by relative path. Each path becomes `skills//`.\nPaths must be relative — no leading `/`, no `..` segments.", - "type": "object", - "additionalProperties": { - "type": "string" - } + "format": "uuid", + "title": "Id" }, - "instructions": { - "description": "Skill body. Written to `skills//SKILL.md`.", + "display_name": { "type": "string", - "example": "# Summarize\n\nGiven a text, produce a one-paragraph summary." + "title": "Display Name" }, - "name": { - "description": "Skill slug. Becomes `skills//SKILL.md`.", + "created_at": { "type": "string", - "example": "summarize" + "format": "date-time", + "title": "Created At" }, - "type": { - "description": "Skill discriminator. Only `inline` is supported today.", - "type": "string", - "enum": [ - "inline" + "tenant_handle": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } ], - "example": "inline" + "title": "Tenant Handle" } - } - }, - "agents.SubagentSpec": { + }, "type": "object", + "required": [ + "id", + "display_name", + "created_at" + ], + "title": "Tenant" + }, + "app__schemas__Tenant": { "properties": { - "description": { - "description": "Short human-readable description.", - "type": "string", - "example": "Researches a topic and summarises findings." - }, - "instructions": { - "description": "Subagent system prompt. Written to `subagents//AGENTS.md`.", + "id": { "type": "string", - "example": "You are a research assistant. Use the available tools to gather information." + "format": "uuid", + "title": "Id" }, - "model_id": { - "description": "Model ID for this subagent. Inherits the parent runtime when empty.", - "type": "string", - "example": "claude-sonnet-4-6" + "organization_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Organization Id" }, - "name": { - "description": "Subagent slug. Becomes `subagents//AGENTS.md`.", + "created_at": { "type": "string", - "example": "researcher" + "format": "date-time", + "title": "Created At" }, - "tools": { - "description": "Subagent tool config. Written to `subagents//tools.json`.", - "allOf": [ - { - "$ref": "#/components/schemas/agents.ToolsConfig" - } - ] - } - } - }, - "agents.ToolSpec": { - "type": "object", - "properties": { "display_name": { - "description": "Display name for the tool. Defaults to the tool name when empty.", "type": "string", - "example": "read_url_content" + "title": "Display Name" }, - "mcp_server_name": { - "description": "Display name for the MCP server. Defaults to the URL when empty.", - "type": "string", - "example": "Fleet" + "is_personal": { + "type": "boolean", + "title": "Is Personal" }, - "mcp_server_url": { - "description": "URL of the MCP server hosting this tool.", - "type": "string", - "example": "https://tools.example.com" + "is_deleted": { + "type": "boolean", + "title": "Is Deleted" }, - "name": { - "description": "Tool name as exposed by the MCP server.", - "type": "string", - "example": "read_url_content" - } - } - }, - "agents.ToolsConfig": { - "type": "object", - "properties": { - "interrupt_config": { - "description": "Per-tool interrupt rules keyed by tool name. Use `{}` for no interrupts.", - "type": "object", - "additionalProperties": {} + "tenant_handle": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Handle" }, - "tools": { - "description": "MCP tools available to the agent. Serialised to `tools.json`.", - "type": "array", - "items": { - "$ref": "#/components/schemas/agents.ToolSpec" - } + "data_plane_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Data Plane Url" } - } + }, + "type": "object", + "required": [ + "id", + "created_at", + "display_name", + "is_personal", + "is_deleted" + ], + "title": "Tenant", + "description": "Tenant schema." }, - "agents.UpdateAgentRequest": { + "abac.ErrorResponse": { "type": "object", "properties": { - "backend": { - "$ref": "#/components/schemas/agents.AgentBackend" - }, - "configurable": { - "description": "Caller-defined key/value tracking merged into the agent's runtime\nconfiguration. Typed runtime fields win on key collision.", - "type": "object", - "additionalProperties": {} - }, - "deleted_paths": { - "description": "Paths to remove from the file tree. Relative paths only.", - "type": "array", - "items": { - "type": "string" - } - }, - "description": { - "type": "string" - }, - "extras": { - "description": "Caller-defined key/value tracking attached to the agent's metadata.", - "type": "object", - "additionalProperties": {} - }, - "files": { - "description": "Raw file entries created or replaced by path. Triggers a new commit.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/agents.FileEntry" - } - }, - "instructions": { - "description": "Deprecated: use `system_prompt`. Accepted for backwards compatibility;\n`system_prompt` takes precedence when both are set.", - "type": "string" - }, - "name": { - "type": "string" - }, - "permissions": { - "$ref": "#/components/schemas/agents.AgentPermissions" - }, - "runtime": { - "$ref": "#/components/schemas/agents.AgentRuntime" - }, - "skills": { - "description": "Skills. Each entry is written to `skills//SKILL.md` and supporting files. Triggers a new commit.", - "type": "array", - "items": { - "$ref": "#/components/schemas/agents.SkillSpec" - } - }, - "subagents": { - "description": "Subagents. Each entry is written to `subagents//AGENTS.md` and `subagents//tools.json`. Triggers a new commit.", - "type": "array", - "items": { - "$ref": "#/components/schemas/agents.SubagentSpec" - } - }, - "system_prompt": { - "description": "Agent system prompt. Written to `AGENTS.md`. Triggers a new commit.", + "error": { "type": "string", - "example": "You are a helpful agent. Use the available tools to answer the user's question." - }, - "tools": { - "description": "Tool config. Written to `tools.json`. Triggers a new commit.", - "allOf": [ - { - "$ref": "#/components/schemas/agents.ToolsConfig" - } - ] + "example": "Invalid request: missing required fields" } } }, @@ -76501,7 +72438,8 @@ "enum": [ "pagerduty", "webhook", - "dynatrace" + "dynatrace", + "slack" ] }, "updated_at": { @@ -76530,7 +72468,8 @@ "enum": [ "pagerduty", "webhook", - "dynatrace" + "dynatrace", + "slack" ] } } @@ -76785,156 +72724,6 @@ } } }, - "auth.CreateSessionRequest": { - "type": "object", - "properties": { - "agent_id": { - "type": "string" - }, - "is_default": { - "type": "boolean" - }, - "provider_id": { - "type": "string" - }, - "scopes": { - "type": "array", - "items": { - "type": "string" - } - }, - "strategy": { - "$ref": "#/components/schemas/auth.SessionStrategy" - }, - "token_id": { - "type": "string" - } - } - }, - "auth.CreateSessionResponse": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "metadata": { - "type": "object", - "additionalProperties": {} - }, - "provider_id": { - "type": "string" - }, - "status": { - "$ref": "#/components/schemas/auth.SessionStatus" - }, - "token": { - "type": "string" - }, - "verification_url": { - "type": "string" - } - } - }, - "auth.GetSessionResponse": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "status": { - "$ref": "#/components/schemas/auth.SessionStatus" - } - } - }, - "auth.ListTokensResponse": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/auth.TokenSummary" - } - }, - "next_cursor": { - "type": "string" - } - } - }, - "auth.SessionStatus": { - "type": "string", - "enum": [ - "PENDING", - "COMPLETED", - "CONNECTION_REQUIRED", - "TOKEN_EXPIRED" - ], - "x-enum-varnames": [ - "SessionStatusPending", - "SessionStatusCompleted", - "SessionStatusConnectionRequired", - "SessionStatusTokenExpired" - ] - }, - "auth.SessionStrategy": { - "type": "string", - "enum": [ - "REUSE", - "CREATE" - ], - "x-enum-varnames": [ - "SessionStrategyReuse", - "SessionStrategyCreate" - ] - }, - "auth.TokenSummary": { - "type": "object", - "properties": { - "created_at": { - "type": "string" - }, - "expires_at": { - "type": "string" - }, - "id": { - "type": "string" - }, - "is_default": { - "type": "boolean" - }, - "label": { - "type": "string" - }, - "provider_id": { - "type": "string" - }, - "scopes": { - "type": "array", - "items": { - "type": "string" - } - }, - "updated_at": { - "type": "string" - } - } - }, - "auth.errorResponse": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - }, - "status": { - "type": "integer" - }, - "type": { - "type": "string" - } - } - }, "authn.OrganizationConfig": { "type": "object", "properties": { @@ -76954,6 +72743,10 @@ "description": "Indicates whether this org can provision BYOC data planes.", "type": "boolean" }, + "byoc_max_data_planes": { + "description": "ByocMaxDataPlanes is the maximum number of BYOC data planes this org may have provisioned at once.", + "type": "integer" + }, "can_add_seats": { "description": "CanAddSeats indicates whether this org can invite new users based on their plan.", "type": "boolean" @@ -77010,6 +72803,10 @@ "description": "DemoLgpNewGraphEnabled indicates whether this org can use the demo page for creating new graphs.", "type": "boolean" }, + "dev_zero_deployments_enabled": { + "description": "DevZeroDeploymentsEnabled indicates whether the org can create development deployments that scale to zero.", + "type": "boolean" + }, "enable_align_evaluators": { "description": "EnableAlignEvaluators indicates whether to enable the align evaluators flow for this org.", "type": "boolean" @@ -77038,10 +72835,6 @@ "description": "EnableMonthlyUsageCharts indicates whether to show monthly organization usage charts backed by Metronome for self hosted customers", "type": "boolean" }, - "enable_org_usage_charts": { - "description": "EnableOrgUsageCharts indicates whether to show organization usage charts backed by ClickHouse queries instead of Metronome.", - "type": "boolean" - }, "enable_pricing_redesign": { "description": "EnablePricingRedesign indicates whether the pricing redesign is enabled", "type": "boolean" @@ -77066,10 +72859,26 @@ "description": "EngineDefaultEnabled indicates whether Engine is enabled by default for this organization's plan.", "type": "boolean" }, + "engine_lcu_spend_limit_monthly": { + "description": "EngineLCUSpendLimitMonthly is an optional Metronome-set monthly LCU spend limit\nfor Engine. nil means no limit at this layer. Both the Metronome plan and customer\ncustom fields use this single key; the plan-then-customer config merge means the\ncustomer value (when set) overwrites the plan value, so only the resolved value\narrives here. The effective enforced limit is the minimum of this and the org admin\nlimit (organizations.engine_lcu_spend_limit_monthly).", + "type": "number" + }, + "fleet_builtin_models_enabled": { + "description": "FleetBuiltinModelsEnabled indicates whether the org can use Fleet's served\nbuilt-in models (the Fast/Pro/Max tiers). Resolved from the Metronome\nplan/customer custom field, falling back to organizations.config; code\ndefault false (paid feature, fail-closed).", + "type": "boolean" + }, + "fleet_lcu_spend_limit_monthly": { + "description": "FleetLCUSpendLimitMonthly caps an org's monthly Fleet LCU spend, resolved from\nMetronome custom fields. nil or negative means unlimited; 0 blocks all runs.", + "type": "number" + }, "ip_allowlist_enabled": { "description": "IPAllowlistEnabled indicates whether this org can configure and enforce IP allowlists.\nSet by Metronome entitlement, not admin-patchable.", "type": "boolean" }, + "is_anonymous": { + "description": "IsAnonymous, when true, restricts members to viewing only themselves in\nmember-listing endpoints.", + "type": "boolean" + }, "kv_dataset_message_support": { "description": "KvDatasetMessageSupport indicates whether to use the new messages experience for KV datasets.", "type": "boolean" @@ -77126,7 +72935,7 @@ "type": "integer" }, "max_prompt_webhooks": { - "description": "MaxPromptWebhooks is the maximum number of prompt webhooks allowed for this org.", + "description": "MaxPromptWebhooks independently limits each org's Prompt Hub and Context Hub webhook collections.", "type": "integer" }, "max_sandbox_cpu": { @@ -77394,8 +73203,10 @@ "charts:update", "datasets:create", "datasets:delete", + "datasets:download", "datasets:read", "datasets:share", + "datasets:tag-on-create", "datasets:update", "deployments:create", "deployments:delete", @@ -77413,18 +73224,21 @@ "projects:create", "projects:delete", "projects:read", + "projects:tag-on-create", "projects:update", "projects:increase-trace-tier", "projects:decrease-trace-tier", "prompts:create", "prompts:delete", "prompts:read", + "prompts:tag-on-create", "prompts:update", "prompts:share", "rules:create", "rules:delete", "rules:read", "rules:update", + "rules:configure-retention", "runs:create", "runs:read", "runs:share", @@ -77432,6 +73246,7 @@ "sandboxes:create", "sandboxes:delete", "sandboxes:read", + "sandboxes:tag-on-create", "sandboxes:update", "sandboxes:exec", "workspaces:manage-members", @@ -77468,8 +73283,10 @@ "ChartsUpdate", "DatasetsCreate", "DatasetsDelete", + "DatasetsDownload", "DatasetsRead", "DatasetsShare", + "DatasetsTagOnCreate", "DatasetsUpdate", "DeploymentsCreate", "DeploymentsDelete", @@ -77487,18 +73304,21 @@ "ProjectsCreate", "ProjectsDelete", "ProjectsRead", + "ProjectsTagOnCreate", "ProjectsUpdate", "ProjectsIncreaseTraceTier", "ProjectsDecreaseTraceTier", "PromptsCreate", "PromptsDelete", "PromptsRead", + "PromptsTagOnCreate", "PromptsUpdate", "PromptsShare", "RulesCreate", "RulesDelete", "RulesRead", "RulesUpdate", + "RulesConfigureRetention", "RunsCreate", "RunsRead", "RunsShare", @@ -77506,6 +73326,7 @@ "SandboxesCreate", "SandboxesDelete", "SandboxesRead", + "SandboxesTagOnCreate", "SandboxesUpdate", "SandboxesExec", "WorkspacesManageMembers", @@ -77540,26 +73361,6 @@ } } }, - "beacon.SubmitUsageSnapshotPayload": { - "type": "object", - "properties": { - "from_timestamp": { - "type": "string" - }, - "license_key": { - "type": "string" - }, - "measures": { - "type": "object", - "additionalProperties": { - "type": "integer" - } - }, - "to_timestamp": { - "type": "string" - } - } - }, "commits.CommitResponse": { "type": "object", "properties": { @@ -77734,102 +73535,71 @@ } } }, - "credentials.ErrorResponse": { + "data_planes.CreateDataPlaneRequestAws": { "type": "object", "properties": { - "code": { + "external_id": { "type": "string" }, - "detail": { + "name": { "type": "string" }, - "status": { - "type": "integer" + "public_load_balancer": { + "type": "boolean" }, - "type": { + "region": { + "type": "string" + }, + "role_arn": { + "type": "string" + }, + "vpc_cidr": { "type": "string" } } }, - "credentials.bindingPayload": { + "data_planes.ErrorResponse": { "type": "object", - "required": [ - "kind", - "url" - ], "properties": { - "kind": { - "type": "string", - "enum": [ - "mcp_server" - ] + "code": { + "type": "string" }, - "url": { + "error": { "type": "string" + }, + "missing_permissions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/data_planes.MissingPermission" + } } } }, - "credentials.response": { + "data_planes.ListPublicDataPlanesResponse": { "type": "object", "properties": { - "auth_type": { - "type": "string" - }, - "bindings": { + "data_planes": { "type": "array", "items": { - "$ref": "#/components/schemas/credentials.bindingPayload" + "$ref": "#/components/schemas/data_planes.PublicDataPlane" } - }, - "created_at": { - "type": "string" - }, - "description": { - "type": "string" - }, - "display_name": { - "type": "string" - }, - "id": { - "type": "string" - }, - "scope_slug": { - "type": "string" } } }, - "data_planes.CreateDataPlaneRequestAws": { + "data_planes.MissingPermission": { "type": "object", "properties": { - "external_id": { - "description": "ExternalID is the value LangSmith presents as ExternalId when assuming role_arn. Must\nmatch the ExternalId condition in the customer role's trust policy. Required.", - "type": "string" - }, - "name": { - "type": "string" - }, - "region": { + "action": { "type": "string" }, - "role_arn": { + "decision": { "type": "string" }, - "vpc_cidr": { + "resource_arn": { "type": "string" } } }, - "data_planes.ListPublicDataPlanesResponse": { - "type": "object", - "properties": { - "data_planes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/data_planes.PublicDataPlane" - } - } - } - }, "data_planes.PublicDataPlane": { "type": "object", "properties": { @@ -77896,6 +73666,150 @@ "DataPlaneStatusRevoked" ] }, + "datasets.V2DatasetsExperimentRunsRequestBody": { + "type": "object", + "properties": { + "comparative_experiment_id": { + "description": "`comparative_experiment_id` scopes pairwise-annotation feedback (optional).", + "type": "string" + }, + "cursor": { + "description": "`cursor` is the opaque string from a previous response's `next_cursor`. Absent for the first page.", + "type": "string" + }, + "example_ids": { + "description": "`example_ids` optionally restricts the page to these dataset example UUIDs (max 1000).", + "type": "array", + "items": { + "type": "string" + } + }, + "experiment_ids": { + "description": "`experiment_ids` lists the experiment (tracing session) UUIDs to query. Required, non-empty.", + "type": "array", + "items": { + "type": "string" + } + }, + "filters": { + "description": "`filters` maps a project (session) UUID string to a list of filter expressions (optional).", + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "page_size": { + "description": "`page_size` is the maximum number of examples to return. Defaults to 20, max 100.", + "type": "integer" + }, + "selects": { + "description": "`selects` lists which run properties to include. Omitted => only `id`. Tokens mirror /v2/runs/query.", + "type": "array", + "items": { + "$ref": "#/components/schemas/query.RunSelectField" + } + }, + "sort": { + "description": "`sort` controls feedback-score sorting (single project only).", + "allOf": [ + { + "$ref": "#/components/schemas/datasets.V2DatasetsExperimentRunsSort" + } + ] + } + } + }, + "datasets.V2DatasetsExperimentRunsResponseBody": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/datasets.V2ExampleWithRuns" + } + }, + "next_cursor": { + "type": "string" + } + } + }, + "datasets.V2DatasetsExperimentRunsSort": { + "type": "object", + "properties": { + "by": { + "description": "`by` is the feedback selector, e.g. `feedback.correctness` (the `feedback.` prefix is optional).", + "type": "string" + }, + "order": { + "description": "`order` is `ASC` or `DESC` (defaults to `DESC`).", + "type": "string" + } + } + }, + "datasets.V2ExampleWithRuns": { + "type": "object", + "properties": { + "attachment_urls": { + "description": "`attachment_urls` maps each attachment name to a pre-signed download URL.", + "type": "object" + }, + "created_at": { + "description": "`created_at` is when the example was created (RFC3339 date-time).", + "type": "string", + "format": "date-time", + "example": "2024-01-15T10:30:00.000Z" + }, + "dataset_id": { + "description": "`dataset_id` is the parent dataset UUID.", + "type": "string", + "format": "uuid", + "example": "0190a1b2-c3d4-7ef0-a5b6-6ea3a82e9328" + }, + "id": { + "description": "`id` is the dataset example UUID.", + "type": "string", + "format": "uuid", + "example": "018e4c7e-a9fb-7ef0-a5b6-6ea3a82e9327" + }, + "inputs": { + "description": "`inputs` is the example input payload (arbitrary JSON object).", + "type": "object" + }, + "metadata": { + "description": "`metadata` is arbitrary user-defined JSON metadata on the example.", + "type": "object" + }, + "modified_at": { + "description": "`modified_at` is when the example was last modified (RFC3339 date-time).", + "type": "string", + "format": "date-time", + "example": "2024-01-15T10:30:00.000Z" + }, + "name": { + "description": "`name` is the example's optional name.", + "type": "string" + }, + "outputs": { + "description": "`outputs` is the example reference-output payload (arbitrary JSON object).", + "type": "object" + }, + "runs": { + "description": "`runs` is the list of experiment runs produced for this example.", + "type": "array", + "items": { + "$ref": "#/components/schemas/query.RunResponse" + } + }, + "source_run_id": { + "description": "`source_run_id` is the run UUID the example was created from, if any.", + "type": "string", + "format": "uuid" + } + } + }, "directories.CommitInfo": { "type": "object", "properties": { @@ -77928,6 +73842,10 @@ }, "parent_commit": { "type": "string" + }, + "skip_webhooks": { + "description": "SkipWebhooks, when true, suppresses Context Hub commit webhooks for this\ncommit. Deliberately a plain bool, not the any (bool | []string) shape of\nthe prompt-hub CreateCommitReq.SkipWebhooks: Context Hub v1 has no\nper-webhook filtering, so a bool is the correct shape.", + "type": "boolean" } } }, @@ -77946,20 +73864,6 @@ } } }, - "engine_trial.trialResponseRequest": { - "type": "object", - "properties": { - "action": { - "type": "string" - } - } - }, - "errutil.InternalError": { - "type": "object" - }, - "errutil.UserError": { - "type": "object" - }, "evaluators.BulkDeleteEvaluatorFailedItem": { "type": "object", "properties": { @@ -78084,6 +73988,10 @@ "id": { "type": "string" }, + "is_managed": { + "description": "IsManaged marks a LangChain-managed evaluator (currently the managed\nPerceived Error judge). NULL in the DB is read as false via COALESCE.", + "type": "boolean" + }, "llm_evaluator": { "description": "Embedded child evaluator (populated based on type)", "allOf": [ @@ -78101,16 +74009,9 @@ "$ref": "#/components/schemas/evaluators.EvaluatorRunRule" } }, - "spend_usd": { - "description": "Sum of LLM-as-judge run rule spend for the requested period (omitted when feature is disabled).", - "type": "number" - }, "tenant_id": { "type": "string" }, - "trace_count": { - "type": "integer" - }, "type": { "$ref": "#/components/schemas/evaluators.EvaluatorType" }, @@ -78146,6 +74047,21 @@ "session_name": { "type": "string" }, + "spend_limit": { + "description": "SpendLimit is the effective spend-cap limit for this rule (nil when unconfigured).", + "allOf": [ + { + "$ref": "#/components/schemas/evaluators.SpendLimit" + } + ] + }, + "spend_usd": { + "description": "Per-rule usage for the current ISO week (omitted when feature is disabled).\nLLM-evaluator rules are initialized to 0; code-evaluator rules include trace counts only.", + "type": "number" + }, + "trace_count": { + "type": "integer" + }, "use_corrections_dataset": { "type": "boolean" } @@ -78570,6 +74486,7 @@ "type": "string" }, "disabled_models": { + "description": "DisabledModels is the effective disabled set for the feature: the union of\nthis workspace's own disabled providers/models and the org-wide disabled\nproviders. Every consumer (pickers, Fleet catalog) hides these.", "type": "array", "items": { "type": "string" @@ -78577,6 +74494,13 @@ }, "feature": { "type": "string" + }, + "org_disabled_providers": { + "description": "OrgDisabledProviders is the subset of DisabledModels that is enforced at the\norganization level. The workspace settings UI renders these locked so a\nworkspace admin cannot re-enable them.", + "type": "array", + "items": { + "type": "string" + } } } }, @@ -78678,6 +74602,23 @@ } } }, + "gateway_policies.SearchGatewayPoliciesRequest": { + "type": "object", + "properties": { + "policy_type": { + "type": "string" + }, + "subject_matcher_key": { + "type": "string" + }, + "subject_matcher_values": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, "gateway_policies.SubjectMatcher": { "type": "object", "properties": { @@ -78731,143 +74672,23 @@ } } }, - "github_app.ErrorResponse": { - "type": "object", - "properties": { - "error": { - "type": "string" - } - } - }, - "github_app.InstallLinkResponse": { - "type": "object", - "properties": { - "install_url": { - "type": "string" - } - } - }, - "github_app.Installation": { - "type": "object", - "properties": { - "account_login": { - "type": "string" - }, - "created_at": { - "type": "string" - }, - "id": { - "type": "string" - }, - "installation_id": { - "type": "string" - }, - "metadata": { - "type": "object" - }, - "organization_id": { - "type": "string" - }, - "provider": { - "type": "string" - }, - "updated_at": { - "type": "string" - }, - "user_id": { - "type": "string" - } - } - }, - "github_app.Repository": { + "httperr.ErrorResponse": { "type": "object", "properties": { - "default_branch": { - "type": "string" - }, - "full_name": { + "code": { "type": "string" }, - "html_url": { + "detail": { "type": "string" }, - "id": { + "status": { "type": "integer" }, - "name": { - "type": "string" - }, - "private": { - "type": "boolean" - } - } - }, - "github_app.TokenRequest": { - "type": "object", - "properties": { - "repository": { - "type": "string" - }, "type": { "type": "string" } } }, - "github_app.UpdateUserConnectionRequest": { - "type": "object", - "properties": { - "actor_preference": { - "type": "string" - } - } - }, - "github_app.UserAuthLinkResponse": { - "type": "object", - "properties": { - "auth_url": { - "type": "string" - } - } - }, - "github_app.UserConnectionMetadata": { - "type": "object", - "properties": { - "github_username": { - "type": "string" - } - } - }, - "github_app.UserConnectionStatus": { - "type": "object", - "properties": { - "actor_preference": { - "type": "string" - }, - "is_connected": { - "type": "boolean" - }, - "metadata": { - "$ref": "#/components/schemas/github_app.UserConnectionMetadata" - }, - "type": { - "type": "string" - } - } - }, - "github_app.UserTokenResponse": { - "type": "object", - "properties": { - "expires_at": { - "type": "string" - }, - "token": { - "type": "string" - }, - "token_type": { - "type": "string" - } - } - }, "hub_environments.CreateEnvironmentsRequest": { "type": "object", "required": [ @@ -78968,120 +74789,6 @@ } } }, - "integrations.AuthMethod": { - "type": "object", - "properties": { - "provider_match": { - "$ref": "#/components/schemas/integrations.ProviderMatch" - }, - "type": { - "$ref": "#/components/schemas/integrations.AuthType" - } - } - }, - "integrations.AuthType": { - "type": "string", - "enum": [ - "oauth2", - "headers", - "api_key", - "none" - ], - "x-enum-varnames": [ - "AuthTypeOAuth2", - "AuthTypeHeaders", - "AuthTypeAPIKey", - "AuthTypeNone" - ] - }, - "integrations.CreateRequest": { - "type": "object", - "required": [ - "name", - "url" - ], - "properties": { - "category": { - "type": "string" - }, - "description": { - "type": "string" - }, - "icon_url": { - "type": "string" - }, - "name": { - "type": "string" - }, - "source": { - "type": "string" - }, - "url": { - "type": "string" - } - } - }, - "integrations.ErrorResponse": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - }, - "status": { - "type": "integer" - }, - "type": { - "type": "string" - } - } - }, - "integrations.Integration": { - "type": "object", - "properties": { - "auth_methods": { - "type": "array", - "items": { - "$ref": "#/components/schemas/integrations.AuthMethod" - } - }, - "category": { - "type": "string" - }, - "created_at": { - "type": "string" - }, - "description": { - "type": "string" - }, - "enabled": { - "type": "boolean" - }, - "icon_url": { - "type": "string" - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "source": { - "type": "string" - }, - "transport": { - "$ref": "#/components/schemas/integrations.Transport" - }, - "updated_at": { - "type": "string" - }, - "url": { - "type": "string" - } - } - }, "integrations.IntegrationCatalogEntry": { "type": "object", "properties": { @@ -79121,82 +74828,6 @@ } } }, - "integrations.ListResponse": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/integrations.Integration" - } - }, - "next_cursor": { - "type": "string" - } - } - }, - "integrations.MatchBy": { - "type": "string", - "enum": [ - "kind", - "id" - ], - "x-enum-varnames": [ - "MatchByKind", - "MatchByID" - ] - }, - "integrations.ProviderMatch": { - "type": "object", - "properties": { - "by": { - "$ref": "#/components/schemas/integrations.MatchBy" - }, - "value": { - "type": "string" - } - } - }, - "integrations.ReplaceAuthMethodsRequest": { - "type": "object", - "properties": { - "auth_methods": { - "type": "array", - "items": { - "$ref": "#/components/schemas/integrations.AuthMethod" - } - } - } - }, - "integrations.Transport": { - "type": "string", - "enum": [ - "mcp_http" - ], - "x-enum-varnames": [ - "TransportMCPHTTP" - ] - }, - "integrations.UpdateRequest": { - "type": "object", - "properties": { - "category": { - "type": "string" - }, - "description": { - "type": "string" - }, - "enabled": { - "type": "boolean" - }, - "icon_url": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, "issues_agent_usage.LCUSpendErrorResponse": { "type": "object", "properties": { @@ -79214,186 +74845,44 @@ "lcu_unpriced_row_count": { "type": "integer" }, - "tenant_id": { - "type": "string" - } - } - }, - "issues_agent_usage.LCUSpendResponse": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/issues_agent_usage.LCUSpendItem" - } - }, - "organization_id": { - "type": "string" - }, - "period_end": { - "type": "string" - }, - "period_start": { - "type": "string" - } - } - }, - "langchain_com_smith_fleet_mcp_servers.AuthType": { - "type": "string", - "enum": [ - "headers", - "oauth" - ], - "x-enum-varnames": [ - "AuthTypeHeaders", - "AuthTypeOAuth" - ] - }, - "langchain_com_smith_fleet_mcp_servers.CreateMcpServerPayload": { - "type": "object", - "required": [ - "name", - "url" - ], - "properties": { - "auth_type": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.AuthType" - }, - "external_system_id": { - "type": "string" - }, - "headers": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "name": { - "type": "string" - }, - "oauth_mode": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.OAuthMode" - }, - "oauth_provider_id": { - "type": "string" - }, - "url": { - "type": "string" - }, - "vendor_id": { - "type": "string" - } - } - }, - "langchain_com_smith_fleet_mcp_servers.McpServer": { - "type": "object", - "properties": { - "auth_type": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.AuthType" - }, - "can_invoke": { - "type": "boolean" - }, - "created_at": { - "type": "string" - }, - "external_system_id": { - "type": "string" - }, - "headers": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "id": { - "type": "string" - }, - "mcp_vendor_id": { - "type": "string" - }, - "name": { + "session_id": { "type": "string" }, - "oauth_mode": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.OAuthMode" - }, - "oauth_provider_id": { + "session_name": { "type": "string" }, "tenant_id": { "type": "string" }, - "updated_at": { - "type": "string" - }, - "url": { - "type": "string" - }, - "vendor_id": { + "tenant_name": { "type": "string" } } }, - "langchain_com_smith_fleet_mcp_servers.OAuthMode": { - "type": "string", - "enum": [ - "legacy_shared_provider", - "per_user_dynamic_client" - ], - "x-enum-varnames": [ - "OAuthModeLegacySharedProvider", - "OAuthModePerUserDynamicClient" - ] - }, - "langchain_com_smith_fleet_mcp_servers.RegisterOAuthProviderPayload": { - "type": "object", - "properties": { - "ls_user_id": { - "description": "Deprecated: user identity is inferred from the authenticated request when available.", - "type": "string" - } - } - }, - "langchain_com_smith_fleet_mcp_servers.RegisterOAuthProviderResponse": { + "issues_agent_usage.LCUSpendResponse": { "type": "object", "properties": { - "oauth_provider_id": { + "default_monthly_spend_limit_lcu": { + "description": "DefaultMonthlySpendLimitLCU is the org-admin default applied when the admin limit\nis unset (NULL) — what the UI shows as \"using the default\". Lets the UI label the\ndefault without hardcoding it. Serialized as a string for NUMERIC precision.", "type": "string" - } - } - }, - "langchain_com_smith_fleet_mcp_servers.UpdateMcpServerPayload": { - "type": "object", - "properties": { - "auth_type": { - "$ref": "#/components/schemas/langchain_com_smith_fleet_mcp_servers.AuthType" }, - "headers": { + "items": { "type": "array", "items": { - "type": "object", - "additionalProperties": true + "$ref": "#/components/schemas/issues_agent_usage.LCUSpendItem" } }, - "oauth_provider_id": { + "organization_id": { "type": "string" }, - "url": { + "period_end": { "type": "string" - } - } - }, - "mcp_servers.McpServerAPIError": { - "type": "object", - "properties": { - "detail": { + }, + "period_start": { "type": "string" }, - "error": { + "resolved_monthly_spend_limit_lcu": { + "description": "ResolvedMonthlySpendLimitLCU is the effective monthly LCU spend limit enforced for\nthis org — the minimum of the finance, plan, and admin layers — or null when\nunlimited. Surfaced so the UI can render spend against the true enforced limit\nrather than the admin layer alone. Serialized as a string for NUMERIC precision.", "type": "string" } } @@ -79662,140 +75151,6 @@ } } }, - "mcptools.ErrorResponse": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - }, - "status": { - "type": "integer" - }, - "type": { - "type": "string" - } - } - }, - "mcptools.ListToolsResponse": { - "type": "object", - "properties": { - "cached": { - "type": "boolean" - }, - "fetched_at": { - "type": "string" - }, - "tools": { - "type": "array", - "items": { - "$ref": "#/components/schemas/mcptools.Tool" - } - } - } - }, - "mcptools.MCPErrorCode": { - "type": "string", - "enum": [ - "auth_failed", - "unreachable", - "invalid_response" - ], - "x-enum-varnames": [ - "MCPErrorCodeAuthFailed", - "MCPErrorCodeUnreachable", - "MCPErrorCodeInvalidResponse" - ] - }, - "mcptools.Tool": { - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": {} - }, - "description": { - "type": "string" - }, - "inputSchema": { - "type": "object", - "additionalProperties": {} - }, - "name": { - "type": "string" - } - } - }, - "models.ErrorResponse": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - }, - "status": { - "type": "integer" - }, - "type": { - "type": "string" - } - } - }, - "models.FleetModel": { - "type": "object", - "properties": { - "display_name": { - "type": "string" - }, - "id": { - "type": "string" - }, - "is_default": { - "type": "boolean" - }, - "playground_settings_id": { - "type": "string" - }, - "provider": { - "type": "string" - }, - "required_secrets": { - "type": "array", - "items": { - "type": "string" - } - }, - "source": { - "type": "string" - } - } - }, - "models.ListModelsResponse": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/models.FleetModel" - } - } - } - }, - "nps.SubmitResponseRequest": { - "type": "object", - "properties": { - "comment": { - "type": "string" - }, - "score": { - "type": "integer" - } - } - }, "oauth.AuthorizationServerMetadata": { "type": "object", "properties": { @@ -79861,18 +75216,50 @@ } } }, + "oauth.ClientPublicMetadata": { + "type": "object", + "properties": { + "client_id": { + "type": "string" + }, + "client_name": { + "type": "string" + }, + "client_uri": { + "type": "string" + }, + "logo_uri": { + "type": "string" + }, + "policy_uri": { + "type": "string" + }, + "tos_uri": { + "type": "string" + } + } + }, "oauth.ClientRegistrationRequest": { "type": "object", "properties": { "client_name": { "type": "string" }, + "client_uri": { + "type": "string" + }, "grant_types": { "type": "array", "items": { "type": "string" } }, + "logo_uri": { + "type": "string" + }, + "policy_uri": { + "type": "string" + }, "redirect_uris": { "type": "array", "items": { @@ -79890,6 +75277,9 @@ }, "token_endpoint_auth_method": { "type": "string" + }, + "tos_uri": { + "type": "string" } } }, @@ -79905,12 +75295,21 @@ "client_name": { "type": "string" }, + "client_uri": { + "type": "string" + }, "grant_types": { "type": "array", "items": { "type": "string" } }, + "logo_uri": { + "type": "string" + }, + "policy_uri": { + "type": "string" + }, "redirect_uris": { "type": "array", "items": { @@ -79925,6 +75324,9 @@ }, "token_endpoint_auth_method": { "type": "string" + }, + "tos_uri": { + "type": "string" } } }, @@ -79991,6 +75393,34 @@ } } }, + "orgs.ListOrgsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/orgs.Org" + } + }, + "next_cursor": { + "type": "string" + } + } + }, + "orgs.Org": { + "type": "object", + "properties": { + "display_name": { + "type": "string" + }, + "id": { + "type": "string" + }, + "is_personal": { + "type": "boolean" + } + } + }, "orgs.OrgMemberEnriched": { "type": "object", "properties": { @@ -80054,6 +75484,9 @@ "orgs.OrganizationInfo": { "type": "object", "properties": { + "byoc_create_saas_workspace_enabled": { + "type": "boolean" + }, "can_export_usage_backfill": { "type": "boolean" }, @@ -80066,18 +75499,20 @@ "disabled": { "type": "boolean" }, + "disabled_model_providers": { + "type": "array", + "items": { + "type": "string" + } + }, "display_name": { "type": "string" }, "engine_enabled": { "type": "boolean" }, - "engine_show_trial_modal": { - "description": "EngineShowTrialModal is true when Engine is enabled, no user has acknowledged\nthe trial end notice, and the org has not opted out.", - "type": "boolean" - }, - "engine_trial_modal_seen_at": { - "description": "EngineTrialModalSeenAt is the first time any admin in the org rendered\nthe trial modal. The frontend reads it to skip the mark_seen POST when\nalready set, and the backend's read-time cutoff uses it to treat the\norg as \"notified\" (Engine stays on past June 1).", + "engine_lcu_spend_limit_monthly": { + "description": "EngineLCUSpendLimitMonthly is the org admin (Layer 3) monthly Engine LCU spend\nlimit; null means the admin set no limit. The effective enforced limit is the\nminimum of this and the finance/plan limits carried on Config.", "type": "string" }, "id": { @@ -80113,6 +75548,14 @@ "llm_auth_proxy_jwt_audience": { "type": "string" }, + "managed_eval_terms_accepted_at": { + "description": "ManagedEvalTermsAcceptedAt is the raw ISO 8601 timestamp string from the\nconfig JSONB of when an org admin accepted the managed evaluator terms;\nnull if never accepted. Returned verbatim so the value is byte-identical\nto the smith-backend implementation under weighted routing.", + "type": "string" + }, + "managed_evals_enabled": { + "description": "ManagedEvalsEnabled is the org-level consent flag for managed evaluators\n(evaluators that spend a LangChain-held provider key).", + "type": "boolean" + }, "marketplace_payouts_enabled": { "type": "boolean" }, @@ -80191,18 +75634,73 @@ } } }, + "query.PublicSharedTraceRunsRequestBody": { + "type": "object", + "properties": { + "selects": { + "description": "`selects` lists which public run properties to include on each returned run.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "ID", + "NAME", + "RUN_TYPE", + "STATUS", + "START_TIME", + "END_TIME", + "LATENCY_SECONDS", + "FIRST_TOKEN_TIME", + "ERROR", + "ERROR_PREVIEW", + "EXTRA", + "METADATA", + "INPUTS_PREVIEW", + "OUTPUTS_PREVIEW", + "PARENT_RUN_ID", + "PARENT_RUN_IDS", + "PROJECT_ID", + "TRACE_ID", + "THREAD_ID", + "DOTTED_ORDER", + "IS_ROOT", + "REFERENCE_DATASET_ID", + "TOTAL_TOKENS", + "PROMPT_TOKENS", + "COMPLETION_TOKENS", + "TOTAL_COST", + "PROMPT_COST", + "COMPLETION_COST", + "PROMPT_TOKEN_DETAILS", + "COMPLETION_TOKEN_DETAILS", + "PROMPT_COST_DETAILS", + "COMPLETION_COST_DETAILS", + "PRICE_MODEL_ID", + "TAGS", + "THREAD_EVALUATION_TIME" + ] + }, + "example": [ + "ID", + "NAME", + "PROJECT_ID", + "START_TIME", + "RUN_TYPE", + "STATUS", + "INPUTS_PREVIEW", + "OUTPUTS_PREVIEW", + "METADATA" + ] + } + } + }, "query.QueryRunsRequestBody": { "type": "object", "properties": { - "ai_query": { - "description": "`ai_query` is a natural-language query to filter runs using AI.", - "type": "string", - "example": "runs that used tool calls" - }, "cursor": { - "description": "`cursor` is the opaque string from a previous response's `next_cursor`.", + "description": "`cursor` is the opaque string from a previous response's `next_cursor`. Treat it as opaque and pass it back unmodified.", "type": "string", - "example": "eyJsYXN0X2lkIjoiMDE4ZTRjN2UtYTlmYi03ZWYwLWE1YjYtNmVhM2E4MmU5MzI3In0=" + "example": "eyJ2IjoxLCJhIjoicnVucy5xdWVyeSIsImsiOiJwYXNzIiwiYiI6InNkYiIsInQiOiJsdChjdXJzb3IsICcyMDI1LTEyLTEyIDE5OjAzOjI4LjQ4MTI1NTAxOWIxM2YyJykifQ" }, "filter": { "description": "`filter` narrows results to runs matching this LangSmith filter expression, evaluated against each individual run.\nFor example: and(eq(run_type, \"llm\"), gt(latency, 5)) or eq(status, \"error\").\nSee https://docs.langchain.com/langsmith/trace-query-syntax#filter-query-language for syntax.", @@ -80305,16 +75803,6 @@ "STATUS" ] }, - "sort_order": { - "description": "`sort_order` is the sort direction for `start_time` (`ASC` or `DESC`). Defaults to `DESC` when omitted. Maps to the SmithDB proto `Order` field.", - "default": "DESC", - "allOf": [ - { - "$ref": "#/components/schemas/query.SortOrder" - } - ], - "example": "DESC" - }, "trace_filter": { "description": "`trace_filter` narrows results to runs whose root trace matches this LangSmith filter expression.\nUse this to filter by properties of the trace's root run — for example eq(status, \"success\") to include only traces that completed without error.\nSee https://docs.langchain.com/langsmith/trace-query-syntax#filter-query-language for syntax.", "type": "string", @@ -80337,16 +75825,16 @@ "type": "object", "properties": { "items": { - "description": "`items` is the page of runs, sorted by `start_time` in the direction given by the request `sort_order`.", + "description": "`items` is the page of runs, sorted by `start_time` descending.", "type": "array", "items": { "$ref": "#/components/schemas/query.RunResponse" } }, "next_cursor": { - "description": "`next_cursor` is the opaque cursor to pass as `cursor` on the next request. Omitted on the final page.", + "description": "`next_cursor` is the opaque cursor to pass as `cursor` on the next request. Null on the final page.", "type": "string", - "example": "eyJsYXN0X2lkIjoiMDE4ZTRjN2UtYTlmYi03ZWYwLWE1YjYtNmVhM2E4MmU5MzI3In0=" + "example": "eyJ2IjoxLCJhIjoicnVucy5xdWVyeSIsImsiOiJwYXNzIiwiYiI6InNkYiIsInQiOiJsdChjdXJzb3IsICcyMDI1LTEyLTEyIDE5OjAzOjI4LjQ4MTI1NTAxOWIxM2YyJykifQ" } } }, @@ -80362,6 +75850,91 @@ } } }, + "query.QueryTracesRequestBody": { + "type": "object", + "properties": { + "cursor": { + "description": "`cursor` is the opaque string returned in a previous response's `next_cursor`.", + "type": "string" + }, + "max_start_time": { + "description": "`max_start_time` is the exclusive upper bound for the root-run start time scan (RFC3339). Defaults to the request time when omitted.", + "type": "string", + "format": "date-time", + "example": "2024-12-31T23:59:59Z" + }, + "min_start_time": { + "description": "`min_start_time` is the inclusive lower bound for the root-run start time scan (RFC3339). Defaults to 24 hours before the request when omitted.", + "type": "string", + "format": "date-time", + "example": "2024-01-01T00:00:00Z" + }, + "page_size": { + "description": "`page_size` is the maximum number of traces to return per page. Defaults to 20; must be between 1 and 100 when set.", + "type": "integer", + "default": 20, + "maximum": 100, + "minimum": 1, + "example": 20 + }, + "project_id": { + "description": "`project_id` is the UUID of the tracing project that owns the traces. Required.", + "type": "string", + "format": "uuid", + "example": "018e4c7e-a9fb-7ef0-a5b6-6ea3a82e9327" + }, + "selects": { + "description": "`selects` lists which properties to include on each returned trace. Properties listed here are routed to the appropriate sub-object on each item: `total_tokens`, `total_cost`, and `first_token_time` appear under `trace_aggregates`; everything else appears under `root_run`. If omitted, only `id` is returned on `root_run`.", + "type": "array", + "items": { + "$ref": "#/components/schemas/query.RunSelectField" + }, + "example": [ + "ID", + "NAME", + "START_TIME", + "STATUS", + "TOTAL_TOKENS", + "TOTAL_COST", + "FIRST_TOKEN_TIME" + ] + }, + "trace_filter": { + "description": "`trace_filter` narrows results to traces whose root run matches this LangSmith filter expression. This filter targets root runs only — `is_root = true` is implied.\nSee https://docs.langchain.com/langsmith/trace-query-syntax#filter-query-language for syntax.", + "type": "string", + "example": "eq(status, \"error\")" + }, + "trace_ids": { + "description": "`trace_ids` is an optional fast-path restriction to a known set of trace UUIDs. Equivalent in result to including each UUID in a `trace_filter`, but more efficient at scale.", + "type": "array", + "items": { + "type": "string", + "format": "uuid" + } + }, + "tree_filter": { + "description": "`tree_filter` narrows results to traces containing at least one run anywhere in the run tree (root or descendant) that matches this LangSmith filter expression.", + "type": "string", + "example": "has(tags, \"production\")" + } + } + }, + "query.QueryTracesResponseBody": { + "type": "object", + "properties": { + "items": { + "description": "`items` is the page of traces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/query.Trace" + } + }, + "next_cursor": { + "description": "`next_cursor` is the opaque cursor for the next page. Null on the final page.", + "type": "string" + } + } + }, "query.RunAttachmentURLs": { "type": "object", "additionalProperties": { @@ -80911,16 +76484,44 @@ "RunTypeParser" ] }, - "query.SortOrder": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ], - "x-enum-varnames": [ - "SortOrderAsc", - "SortOrderDesc" - ] + "query.Trace": { + "type": "object", + "properties": { + "root_run": { + "description": "`root_run` is the trace's root run. Which properties are populated is controlled by `selects` in the request.", + "allOf": [ + { + "$ref": "#/components/schemas/query.RunResponse" + } + ] + }, + "trace_aggregates": { + "description": "`trace_aggregates` carries trace-wide aggregate metrics. Omitted when no aggregate field was selected, or `null` (then later filled) on the streaming wire while the aggregate values are still being computed.", + "allOf": [ + { + "$ref": "#/components/schemas/query.TraceAggregates" + } + ] + } + } + }, + "query.TraceAggregates": { + "type": "object", + "properties": { + "first_token_time": { + "description": "`first_token_time` is when the first output token was produced anywhere in the trace (RFC3339), when recorded.", + "type": "string", + "format": "date-time" + }, + "total_cost": { + "description": "`total_cost` is total estimated USD cost across every run in the trace.", + "type": "number" + }, + "total_tokens": { + "description": "`total_tokens` is prompt plus completion tokens summed across every run in the trace.", + "type": "integer" + } + } }, "runs.ErrorResponse": { "type": "object", @@ -81007,22 +76608,243 @@ "session_id": { "type": "string" }, - "session_name": { + "session_name": { + "type": "string" + }, + "start_time": { + "type": "string" + }, + "status": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "trace_id": { + "type": "string" + } + } + }, + "sandboxapi.ContextHubMountSpec": { + "type": "object", + "required": [ + "repo" + ], + "properties": { + "initial_pull_only": { + "description": "InitialPullOnly syncs the repo once at startup instead of polling for\nupdates for the sandbox's lifetime.", + "type": "boolean" + }, + "repo": { + "description": "Repo is the Context Hub repository to sync, as \"owner/repo\"\n(e.g. \"-/my-agent\", where \"-\" is the current workspace). The repo's\nlatest commit tree is mirrored into the mount path.", + "type": "string" + } + } + }, + "sandboxapi.FileInfo": { + "type": "object", + "properties": { + "is_dir": { + "type": "boolean" + }, + "modified_at": { + "type": "string" + }, + "path": { + "type": "string" + }, + "size_bytes": { + "type": "integer" + } + } + }, + "sandboxapi.GCSMountSpec": { + "type": "object", + "required": [ + "bucket" + ], + "properties": { + "bucket": { + "type": "string" + }, + "prefix": { + "type": "string" + } + } + }, + "sandboxapi.GitMountRefSpec": { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "branch", + "tag" + ] + } + } + }, + "sandboxapi.GitMountSpec": { + "type": "object", + "required": [ + "remote_url" + ], + "properties": { + "ref": { + "$ref": "#/components/schemas/sandboxapi.GitMountRefSpec" + }, + "refresh_interval_seconds": { + "type": "integer", + "minimum": 1 + }, + "remote_url": { + "type": "string" + } + } + }, + "sandboxapi.GrepMatch": { + "type": "object", + "properties": { + "line": { + "type": "integer" + }, + "path": { + "type": "string" + }, + "text": { + "type": "string" + } + } + }, + "sandboxapi.MountCacheSpec": { + "type": "object", + "properties": { + "max_size_bytes": { + "type": "integer", + "minimum": 0 + }, + "writeback_seconds": { + "type": "integer", + "minimum": 0 + } + } + }, + "sandboxapi.MountKind": { + "type": "string", + "enum": [ + "s3", + "gcs", + "git", + "contexthub" + ], + "x-enum-varnames": [ + "MountKindS3", + "MountKindGCS", + "MountKindGit", + "MountKindContextHub" + ] + }, + "sandboxapi.MountSpec": { + "type": "object", + "required": [ + "id", + "mount_path", + "type" + ], + "properties": { + "cache": { + "$ref": "#/components/schemas/sandboxapi.MountCacheSpec" + }, + "contexthub": { + "$ref": "#/components/schemas/sandboxapi.ContextHubMountSpec" + }, + "gcs": { + "$ref": "#/components/schemas/sandboxapi.GCSMountSpec" + }, + "git": { + "$ref": "#/components/schemas/sandboxapi.GitMountSpec" + }, + "id": { + "type": "string", + "maxLength": 64 + }, + "mount_path": { + "type": "string" + }, + "read_only": { + "type": "boolean" + }, + "s3": { + "$ref": "#/components/schemas/sandboxapi.S3MountSpec" + }, + "type": { + "enum": [ + "s3", + "gcs", + "git", + "contexthub" + ], + "allOf": [ + { + "$ref": "#/components/schemas/sandboxapi.MountKind" + } + ] + } + }, + "discriminator": { + "mapping": { + "s3": "#/components/schemas/sandboxapi.S3BucketMountSpec", + "gcs": "#/components/schemas/sandboxapi.GCSBucketMountSpec", + "git": "#/components/schemas/sandboxapi.GitRepoMountSpec", + "contexthub": "#/components/schemas/sandboxapi.ContextHubRepoMountSpec" + }, + "propertyName": "type" + }, + "oneOf": [ + { + "$ref": "#/components/schemas/sandboxapi.S3BucketMountSpec" + }, + { + "$ref": "#/components/schemas/sandboxapi.GCSBucketMountSpec" + }, + { + "$ref": "#/components/schemas/sandboxapi.GitRepoMountSpec" + }, + { + "$ref": "#/components/schemas/sandboxapi.ContextHubRepoMountSpec" + } + ] + }, + "sandboxapi.S3MountSpec": { + "type": "object", + "required": [ + "bucket", + "region" + ], + "properties": { + "bucket": { + "type": "string" + }, + "endpoint_url": { "type": "string" }, - "start_time": { - "type": "string" + "path_style": { + "type": "boolean" }, - "status": { + "prefix": { "type": "string" }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "trace_id": { + "region": { "type": "string" } } @@ -81144,12 +76966,45 @@ } } }, + "sandboxes.CreateRegistryPayload": { + "type": "object", + "required": [ + "name", + "password", + "url", + "username" + ], + "properties": { + "name": { + "type": "string" + }, + "password": { + "type": "string" + }, + "url": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, "sandboxes.CreateSandboxPayload": { "type": "object", "properties": { + "cpu_millicores": { + "description": "CPUMillicores optionally requests CPU at millicore granularity (e.g. 500 = 0.5 vCPU); takes precedence over VCPUs. Fractional (sub-vCPU) values are not available for every sandbox.", + "type": "integer" + }, "delete_after_stop_seconds": { "type": "integer" }, + "env_vars": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, "fs_capacity_bytes": { "type": "integer" }, @@ -81159,14 +77014,21 @@ "mem_bytes": { "type": "integer" }, + "mount_config": { + "$ref": "#/components/schemas/sandboxes.SandboxMountConfig" + }, "name": { "type": "string" }, + "preserve_memory_on_stop": { + "description": "PreserveMemoryOnStop, when true, suspends the sandbox's memory on a\nvoluntary stop (idle timeout or explicit stop) so the next start resumes\nfrom where it left off. Default false discards memory and keeps only the\nfilesystem, so the next start is a cold boot. Restarts triggered by\ninfrastructure maintenance always preserve memory regardless of this setting.", + "type": "boolean" + }, "proxy_config": { "$ref": "#/components/schemas/sandboxes.ProxyConfig" }, "restore_memory": { - "description": "RestoreMemory, when non-nil, overrides the server default for\nwhether to resume the sandbox from its captured memory snapshot.\n\n true → resume from the memory snapshot if it exists; cold-boot\n the sandbox otherwise.\n false → always cold-boot, even if a memory snapshot exists.\n nil → use the server default.\n\nApplies to this request only; a later stop+start of the same\nsandbox reverts to the server default.", + "description": "RestoreMemory selects how the sandbox handles a snapshot's captured memory:\n\n nil → if-present: resume from memory when the snapshot has it, else cold-boot (default).\n true → always: resume from memory; rejected if the snapshot has none.\n false → never: always cold-boot.\n\nApplies to this request only.", "type": "boolean" }, "snapshot_id": { @@ -81227,6 +77089,106 @@ } } }, + "sandboxes.ExecRequest": { + "type": "object", + "properties": { + "command": { + "description": "Command accepts either a shell command string or an argv string array.", + "type": "array", + "items": { + "type": "string" + } + }, + "cwd": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "shell": { + "type": "string" + }, + "timeout_seconds": { + "type": "integer" + } + } + }, + "sandboxes.ExecResponse": { + "type": "object", + "properties": { + "exit_code": { + "type": "integer" + }, + "stderr": { + "type": "string" + }, + "stdout": { + "type": "string" + } + } + }, + "sandboxes.GlobRequest": { + "type": "object", + "properties": { + "limit": { + "type": "integer" + }, + "path": { + "type": "string" + }, + "pattern": { + "type": "string" + } + } + }, + "sandboxes.GlobResponse": { + "type": "object", + "properties": { + "matches": { + "type": "array", + "items": { + "$ref": "#/components/schemas/sandboxapi.FileInfo" + } + }, + "truncated": { + "type": "boolean" + } + } + }, + "sandboxes.GrepRequest": { + "type": "object", + "properties": { + "glob": { + "type": "string" + }, + "limit": { + "type": "integer" + }, + "path": { + "type": "string" + }, + "pattern": { + "type": "string" + } + } + }, + "sandboxes.GrepResponse": { + "type": "object", + "properties": { + "matches": { + "type": "array", + "items": { + "$ref": "#/components/schemas/sandboxapi.GrepMatch" + } + }, + "truncated": { + "type": "boolean" + } + } + }, "sandboxes.HeaderType": { "type": "string", "enum": [ @@ -81240,6 +77202,21 @@ "HeaderTypeWorkspaceSecret" ] }, + "sandboxes.ProxyAWSConfig": { + "type": "object", + "required": [ + "access_key_id", + "secret_access_key" + ], + "properties": { + "access_key_id": { + "$ref": "#/components/schemas/sandboxes.ProxySecretValue" + }, + "secret_access_key": { + "$ref": "#/components/schemas/sandboxes.ProxySecretValue" + } + } + }, "sandboxes.ProxyConfig": { "type": "object", "properties": { @@ -81266,6 +77243,25 @@ } } }, + "sandboxes.ProxyGCPConfig": { + "type": "object", + "required": [ + "scopes", + "service_account_json" + ], + "properties": { + "scopes": { + "type": "array", + "minItems": 1, + "items": { + "type": "string" + } + }, + "service_account_json": { + "$ref": "#/components/schemas/sandboxes.ProxySecretValue" + } + } + }, "sandboxes.ProxyHeader": { "type": "object", "required": [ @@ -81299,13 +77295,18 @@ "sandboxes.ProxyRule": { "type": "object", "required": [ - "match_hosts", "name" ], "properties": { + "aws": { + "$ref": "#/components/schemas/sandboxes.ProxyAWSConfig" + }, "enabled": { "type": "boolean" }, + "gcp": { + "$ref": "#/components/schemas/sandboxes.ProxyGCPConfig" + }, "headers": { "type": "array", "items": { @@ -81313,8 +77314,8 @@ } }, "match_hosts": { + "description": "MatchHosts is only accepted for header injection rules. Provider auth\nrules use built-in host matching.", "type": "array", - "minItems": 1, "items": { "type": "string" } @@ -81327,6 +77328,101 @@ }, "name": { "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "sandboxes.ProxySecretValue": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "is_set": { + "type": "boolean" + }, + "type": { + "enum": [ + "plaintext", + "opaque", + "workspace_secret" + ], + "allOf": [ + { + "$ref": "#/components/schemas/sandboxes.HeaderType" + } + ] + }, + "value": { + "type": "string" + } + } + }, + "sandboxes.RegistryListResponse": { + "type": "object", + "properties": { + "offset": { + "type": "integer" + }, + "registries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/sandboxes.RegistryResponse" + } + } + } + }, + "sandboxes.RegistryResponse": { + "type": "object", + "properties": { + "created_at": { + "type": "string" + }, + "created_by": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "updated_by": { + "type": "string" + }, + "url": { + "type": "string" + } + } + }, + "sandboxes.SandboxAWSMountAuthConfig": { + "type": "object", + "required": [ + "access_key_id", + "secret_access_key" + ], + "properties": { + "access_key_id": { + "$ref": "#/components/schemas/sandboxes.ProxySecretValue" + }, + "secret_access_key": { + "$ref": "#/components/schemas/sandboxes.ProxySecretValue" + } + } + }, + "sandboxes.SandboxGCPMountAuthConfig": { + "type": "object", + "required": [ + "service_account_json" + ], + "properties": { + "service_account_json": { + "$ref": "#/components/schemas/sandboxes.ProxySecretValue" } } }, @@ -81344,9 +77440,37 @@ } } }, + "sandboxes.SandboxMountAuthConfig": { + "type": "object", + "properties": { + "aws": { + "$ref": "#/components/schemas/sandboxes.SandboxAWSMountAuthConfig" + }, + "gcp": { + "$ref": "#/components/schemas/sandboxes.SandboxGCPMountAuthConfig" + } + } + }, + "sandboxes.SandboxMountConfig": { + "type": "object", + "properties": { + "auth": { + "$ref": "#/components/schemas/sandboxes.SandboxMountAuthConfig" + }, + "mounts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/sandboxapi.MountSpec" + } + } + } + }, "sandboxes.SandboxResponse": { "type": "object", "properties": { + "cpu_millicores": { + "type": "integer" + }, "created_at": { "type": "string" }, @@ -81371,9 +77495,15 @@ "mem_bytes": { "type": "integer" }, + "mount_config": { + "$ref": "#/components/schemas/sandboxes.SandboxMountConfig" + }, "name": { "type": "string" }, + "preserve_memory_on_stop": { + "type": "boolean" + }, "proxy_config": { "$ref": "#/components/schemas/sandboxes.ProxyConfig" }, @@ -81504,9 +77634,29 @@ } } }, + "sandboxes.UpdateRegistryPayload": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "password": { + "type": "string" + }, + "url": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, "sandboxes.UpdateSandboxPayload": { "type": "object", "properties": { + "cpu_millicores": { + "type": "integer" + }, "delete_after_stop_seconds": { "type": "integer" }, @@ -81536,6 +77686,17 @@ } } }, + "sandboxes.UploadResponse": { + "type": "object", + "properties": { + "path": { + "type": "string" + }, + "written": { + "type": "integer" + } + } + }, "sandboxes.UsageResponse": { "type": "object", "properties": { @@ -81658,164 +77819,133 @@ } } }, - "shared.ProblemDetails": { - "description": "RFC 7807 problem details returned on V2 API errors.", + "secrets.ErrorResponse": { "type": "object", "properties": { - "detail": { - "type": "string" - }, - "instance": { + "code": { "type": "string" }, - "remedy": { - "description": "Remedy is a LangSmith extension for user-recoverable errors.", + "detail": { "type": "string" }, "status": { "type": "integer" }, - "title": { - "type": "string" - }, "type": { "type": "string" } } }, - "skills.CreateSkillRequest": { + "secrets.ListResponse": { "type": "object", - "required": [ - "files", - "name" - ], "properties": { - "files": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/skills.FileEntry" + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/secrets.SecretItem" } }, + "next_cursor": { + "type": "string" + } + } + }, + "secrets.SecretItem": { + "type": "object", + "properties": { "name": { "type": "string", - "maxLength": 64 + "example": "OPENAI_API_KEY" + }, + "set": { + "description": "Set is always true for items returned by the list endpoint — a key only\nappears when it has a value. It lets a client diff this list against a\nmodel's required_secrets to find which required keys are still missing.", + "type": "boolean", + "example": true } } }, - "skills.ErrorResponse": { + "secrets.bulkUpsertItem": { "type": "object", "properties": { - "code": { - "type": "string" - }, - "detail": { + "key": { "type": "string" }, - "status": { - "type": "integer" - }, - "type": { + "value": { "type": "string" } } }, - "skills.FileEntry": { + "secrets.putRequest": { "type": "object", "properties": { - "content": { - "type": "string" - }, - "type": { + "value": { "type": "string" } } }, - "skills.ListSkillsResponse": { + "share.CreateShareTokenRequestBody": { "type": "object", "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/skills.Skill" - } + "session_id": { + "description": "session_id is the tracing project UUID containing the trace.", + "type": "string", + "format": "uuid", + "example": "018e4c7e-a9fb-7ef0-a5b6-6ea3a82e9327" }, - "next_cursor": { - "type": "string" + "trace_id": { + "description": "trace_id is the root trace UUID to share.", + "type": "string", + "format": "uuid", + "example": "018e4c7e-a9fb-7ef0-a5b6-6ea3a82e9327" } } }, - "skills.Skill": { + "share.CreateShareTokenResponseBody": { "type": "object", "properties": { - "commit_hash": { - "type": "string" - }, - "commit_id": { - "type": "string" - }, - "created_at": { - "type": "string" - }, - "files": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/skills.FileEntry" - } - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "owners": { - "type": "array", - "items": { - "$ref": "#/components/schemas/skills.SkillOwner" - } - }, - "updated_at": { - "type": "string" - }, - "visibility": { - "type": "string" + "share_token": { + "type": "string", + "format": "uuid", + "example": "018e4c7e-a9fb-7ef0-a5b6-6ea3a82e9327" } } }, - "skills.SkillOwner": { + "share.DeleteShareTokenRequestBody": { "type": "object", "properties": { - "created_at": { + "session_id": { + "description": "session_id is the tracing project UUID containing the trace.", + "type": "string", + "format": "uuid", + "example": "018e4c7e-a9fb-7ef0-a5b6-6ea3a82e9327" + } + } + }, + "shared.ProblemDetails": { + "description": "RFC 7807 problem details returned on V2 API errors.", + "type": "object", + "properties": { + "detail": { "type": "string" }, - "email": { + "instance": { "type": "string" }, - "full_name": { + "remedy": { + "description": "Remedy is a LangSmith extension for user-recoverable errors.", "type": "string" }, - "identity_id": { + "status": { + "type": "integer" + }, + "title": { "type": "string" }, - "ls_user_id": { + "type": { "type": "string" } } }, - "skills.UpdateSkillRequest": { - "type": "object", - "required": [ - "files" - ], - "properties": { - "files": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/skills.FileEntry" - } - } - } - }, "tag_transitions.ErrorResponse": { "type": "object", "properties": { @@ -81873,137 +78003,7 @@ } } }, - "threads.BulkUpdateThreadResult": { - "type": "object", - "properties": { - "error_code": { - "type": "string" - }, - "id": { - "type": "string", - "format": "uuid" - }, - "message": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "success", - "failure" - ] - } - } - }, - "threads.BulkUpdateThreadsRequest": { - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/threads.UpdateThreadRequest" - }, - "thread_ids": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "threads.BulkUpdateThreadsResponse": { - "type": "object", - "properties": { - "results": { - "type": "array", - "items": { - "$ref": "#/components/schemas/threads.BulkUpdateThreadResult" - } - } - } - }, - "threads.CountResponse": { - "type": "object", - "properties": { - "attention_count": { - "type": "integer" - } - } - }, - "threads.CreateThreadAndRunRequest": { - "type": "object", - "properties": { - "agent_id": { - "type": "string", - "example": "11111111-1111-1111-1111-111111111111" - }, - "thread": { - "$ref": "#/components/schemas/threads.CreateThreadAndRunThread" - } - } - }, - "threads.CreateThreadAndRunThread": { - "type": "object", - "properties": { - "if_exists": { - "type": "string", - "enum": [ - "do_nothing", - "raise" - ] - }, - "metadata": { - "type": "object", - "additionalProperties": {} - }, - "options": { - "$ref": "#/components/schemas/threads.CreateThreadOptions" - }, - "thread_id": { - "type": "string", - "format": "uuid" - } - } - }, - "threads.CreateThreadOptions": { - "type": "object", - "properties": { - "skip_memory_write_protection": { - "description": "SkipMemoryWriteProtection lets runs on this thread bypass the default\nlong-term-memory write protection.", - "type": "boolean" - }, - "test_run": { - "description": "TestRun marks the thread as a test run; filtered out of usage and analytics.", - "type": "boolean" - } - } - }, - "threads.CreateThreadRequest": { - "type": "object", - "properties": { - "agent_id": { - "type": "string", - "example": "11111111-1111-1111-1111-111111111111" - }, - "if_exists": { - "type": "string", - "enum": [ - "do_nothing", - "raise" - ] - }, - "metadata": { - "type": "object", - "additionalProperties": {} - }, - "options": { - "$ref": "#/components/schemas/threads.CreateThreadOptions" - }, - "thread_id": { - "type": "string", - "format": "uuid" - } - } - }, - "threads.ErrorResponse": { + "tenants.ErrorResponse": { "type": "object", "properties": { "code": { @@ -82020,43 +78020,48 @@ } } }, - "threads.Message": { + "tenants.ListTenantsResponse": { "type": "object", "properties": { - "content": { - "type": "string", - "example": "what is your name?" + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/tenants.Tenant" + } }, - "role": { - "type": "string", - "enum": [ - "user", - "assistant", - "system", - "tool" - ], - "example": "user" + "next_cursor": { + "type": "string" } } }, - "threads.OptionalField-bool": { + "tenants.Tenant": { "type": "object", "properties": { - "set": { - "type": "boolean" + "created_at": { + "type": "string" }, - "value": { - "type": "boolean" - } - } - }, - "threads.OptionalField-string": { - "type": "object", - "properties": { - "set": { + "data_plane_url": { + "type": "string" + }, + "id": { + "type": "string" + }, + "is_personal": { "type": "boolean" }, - "value": { + "name": { + "type": "string" + }, + "organization_id": { + "type": "string" + }, + "permissions": { + "type": "array", + "items": { + "type": "string" + } + }, + "tenant_handle": { "type": "string" } } @@ -82088,6 +78093,14 @@ "description": "`completion_tokens` is the sum of per-trace completion token counts across the thread. Populated when `COMPLETION_TOKENS` is selected.", "type": "integer" }, + "feedback_stats": { + "description": "`feedback_stats` aggregates run-level feedback across the thread's traces, keyed by feedback key. Populated when `FEEDBACK_STATS` is selected.", + "allOf": [ + { + "$ref": "#/components/schemas/query.RunFeedbackStats" + } + ] + }, "first_start_time": { "description": "`first_start_time` is the earliest trace start time in the thread (RFC3339). Populated when `FIRST_START_TIME` is selected.", "type": "string", @@ -82160,7 +78173,7 @@ } }, "next_cursor": { - "description": "`next_cursor` is the opaque cursor to pass as `cursor` on the next request. Omitted on the final page.", + "description": "`next_cursor` is the opaque cursor to pass as `cursor` on the next request. Null on the final page.", "type": "string", "example": "eyJydW5zX2N1cnNvciI6Imx0KGN1cnNvciwiLi4uIikifQ==" } @@ -82178,17 +78191,17 @@ "type": "string" }, "max_start_time": { - "description": "`max_start_time` is the inclusive upper bound on thread activity (RFC3339 date-time).", + "description": "`max_start_time` is the exclusive upper bound on thread activity (RFC3339 date-time). Defaults to now (UTC) when omitted.", "type": "string", "format": "date-time" }, "min_start_time": { - "description": "`min_start_time` is the inclusive lower bound on thread activity (RFC3339 date-time).", + "description": "`min_start_time` is the inclusive lower bound on thread activity (RFC3339 date-time). Defaults to 1 day before now (UTC) when omitted.", "type": "string", "format": "date-time" }, "page_size": { - "description": "`page_size` is the maximum number of threads to return in this response. Defaults to 20 when omitted; must be between 1 and 100 inclusive when set. The response may contain fewer threads than `page_size` even when `next_cursor` is present.", + "description": "`page_size` is the maximum number of threads to return in this response. Defaults to 20 when omitted; must be between 1 and 100 inclusive when set. The response may contain fewer threads than `page_size` even when `next_cursor` is non-null.", "type": "integer", "default": 20, "maximum": 100, @@ -82214,7 +78227,7 @@ } }, "next_cursor": { - "description": "`next_cursor` is the opaque cursor to pass as `cursor` on the next request. Omitted on the final page.", + "description": "`next_cursor` is the opaque cursor to pass as `cursor` on the next request. Null on the final page.", "type": "string", "example": "eyJydW5zX2N1cnNvciI6Imx0KGN1cnNvciwiLi4uIikifQ==" } @@ -82238,7 +78251,8 @@ "PROMPT_TOKEN_DETAILS", "COMPLETION_TOKEN_DETAILS", "PROMPT_COST_DETAILS", - "COMPLETION_COST_DETAILS" + "COMPLETION_COST_DETAILS", + "FEEDBACK_STATS" ], "x-enum-varnames": [ "SingleThreadStatsSelectTurns", @@ -82256,70 +78270,10 @@ "SingleThreadStatsSelectPromptTokenDetails", "SingleThreadStatsSelectCompletionTokenDetails", "SingleThreadStatsSelectPromptCostDetails", - "SingleThreadStatsSelectCompletionCostDetails" + "SingleThreadStatsSelectCompletionCostDetails", + "SingleThreadStatsSelectFeedbackStats" ] }, - "threads.StreamRunRequest": { - "type": "object", - "properties": { - "agent_id": { - "type": "string", - "format": "uuid" - }, - "messages": { - "type": "array", - "items": { - "$ref": "#/components/schemas/threads.Message" - } - }, - "stream_mode": { - "type": "array", - "items": { - "type": "string" - } - }, - "stream_subgraphs": { - "type": "boolean" - }, - "user_timezone": { - "type": "string" - } - } - }, - "threads.Thread": { - "type": "object", - "properties": { - "agent_id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "id": { - "type": "string", - "format": "uuid" - }, - "metadata": { - "type": "object", - "additionalProperties": {} - }, - "status": { - "type": "string", - "enum": [ - "idle", - "busy", - "interrupted", - "error" - ] - }, - "updated_at": { - "type": "string", - "format": "date-time" - } - } - }, "threads.ThreadListItem": { "type": "object", "properties": { @@ -82466,6 +78420,11 @@ "format": "date-time", "example": "2025-01-15T12:00:01.500Z" }, + "error": { + "description": "`error` is the full root run error message when the run failed. Omitted unless included in `selects`.", + "type": "string", + "example": "context deadline exceeded" + }, "error_preview": { "description": "`error_preview` is a short error summary when the run failed. Omitted unless included in `selects`.", "type": "string" @@ -82476,6 +78435,10 @@ "format": "date-time", "example": "2024-01-15T10:30:00.312Z" }, + "inputs": { + "description": "`inputs` is the full root run input payload. Omitted unless included in `selects`.", + "type": "object" + }, "inputs_preview": { "description": "`inputs_preview` is a truncated text preview of inputs. Omitted unless included in `selects`.", "type": "string" @@ -82492,6 +78455,10 @@ "description": "`op` is a numeric code identifying the root run's `run_type` (for example LLM vs. tool vs. chain). Encoded as a number for compatibility with legacy clients; prefer the string `run_type` on `RunResponse` when available. Omitted unless included in `selects`.", "type": "number" }, + "outputs": { + "description": "`outputs` is the full root run output payload. Omitted unless included in `selects`.", + "type": "object" + }, "outputs_preview": { "description": "`outputs_preview` is a truncated text preview of outputs. Omitted unless included in `selects`.", "type": "string" @@ -82563,6 +78530,9 @@ "FIRST_TOKEN_TIME", "INPUTS_PREVIEW", "OUTPUTS_PREVIEW", + "INPUTS", + "OUTPUTS", + "ERROR", "PROMPT_COST", "COMPLETION_COST", "TOTAL_COST", @@ -82586,6 +78556,9 @@ "ThreadTraceSelectFirstTokenTime", "ThreadTraceSelectInputsPreview", "ThreadTraceSelectOutputsPreview", + "ThreadTraceSelectInputs", + "ThreadTraceSelectOutputs", + "ThreadTraceSelectError", "ThreadTraceSelectPromptCost", "ThreadTraceSelectCompletionCost", "ThreadTraceSelectTotalCost", @@ -82597,69 +78570,6 @@ "ThreadTraceSelectErrorPreview" ] }, - "threads.UpdateThreadMetadata": { - "type": "object", - "properties": { - "is_pinned": { - "$ref": "#/components/schemas/threads.OptionalField-bool" - }, - "is_test_run": { - "$ref": "#/components/schemas/threads.OptionalField-bool" - }, - "read_status": { - "$ref": "#/components/schemas/threads.OptionalField-bool" - }, - "sandbox_recreated_at": { - "format": "date-time", - "allOf": [ - { - "$ref": "#/components/schemas/threads.OptionalField-string" - } - ] - }, - "skip_memory_write_protection": { - "$ref": "#/components/schemas/threads.OptionalField-bool" - } - } - }, - "threads.UpdateThreadRequest": { - "type": "object", - "properties": { - "metadata": { - "$ref": "#/components/schemas/threads.UpdateThreadMetadata" - }, - "title": { - "$ref": "#/components/schemas/threads.OptionalField-string" - } - } - }, - "threads.UpdateThreadResponse": { - "type": "object", - "properties": { - "agent_id": { - "type": "string", - "format": "uuid" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "id": { - "type": "string", - "format": "uuid" - }, - "metadata": { - "$ref": "#/components/schemas/threads.UpdateThreadMetadata" - }, - "title": { - "type": "string" - }, - "updated_at": { - "type": "string", - "format": "date-time" - } - } - }, "tools.CreateToolPayload": { "type": "object", "required": [ @@ -82796,6 +78706,62 @@ } } }, + "tracer_session_issues.FixVerification": { + "type": "object", + "properties": { + "attempt": { + "type": "integer" + }, + "commit_sha": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "deadline_at": { + "type": "string" + }, + "detail": { + "type": "object" + }, + "fix_branch": { + "type": "string" + }, + "id": { + "type": "string" + }, + "issue_id": { + "type": "string" + }, + "pr_number": { + "type": "integer" + }, + "preview_url": { + "type": "string" + }, + "ready_check": { + "type": "string" + }, + "run_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "status": { + "type": "string" + }, + "tenant_id": { + "type": "string" + }, + "thread_id": { + "type": "string" + }, + "updated_at": { + "type": "string" + } + } + }, "tracer_session_issues.Issue": { "type": "object", "properties": { @@ -82823,6 +78789,9 @@ "fix_prompt": { "type": "string" }, + "fix_verification": { + "type": "object" + }, "id": { "type": "string" }, @@ -82853,6 +78822,10 @@ "type": "object" } }, + "recurrences_since_watching": { + "description": "RecurrencesSinceWatching counts linked traces whose run start_time is after\nwatching_since — i.e. recurrences observed during the current watch period.", + "type": "integer" + }, "session_id": { "type": "string" }, @@ -82876,6 +78849,9 @@ }, "updated_at": { "type": "string" + }, + "watching_since": { + "type": "string" } } }, @@ -82890,6 +78866,17 @@ } } }, + "tracer_session_issues.RecordFixVerdictRequest": { + "type": "object", + "properties": { + "detail": { + "type": "object" + }, + "status": { + "type": "string" + } + } + }, "tracer_session_issues.Severity": { "type": "integer", "enum": [ @@ -82905,15 +78892,44 @@ "SeverityLow" ] }, + "tracer_session_issues.StartPreviewRequest": { + "type": "object", + "properties": { + "commit_sha": { + "type": "string" + }, + "run_id": { + "type": "string" + }, + "thread_id": { + "type": "string" + } + } + }, + "tracer_session_issues.StartPreviewResponse": { + "type": "object", + "properties": { + "pr_number": { + "type": "integer" + }, + "preview_url": { + "type": "string" + } + } + }, "tracer_session_issues.Status": { "type": "string", "enum": [ "open", + "fixing", + "watching", "completed", "ignored" ], "x-enum-varnames": [ "StatusOpen", + "StatusFixing", + "StatusWatching", "StatusCompleted", "StatusIgnored" ] @@ -82949,6 +78965,10 @@ "items": { "type": "string" } + }, + "run_filter": { + "description": "Runs-filter-DSL trace scope; omit/null/empty for no scope.", + "type": "string" } } }, @@ -82990,6 +79010,9 @@ "id": { "type": "string" }, + "issue_count": { + "type": "integer" + }, "latest_run_id": { "type": "string" }, @@ -82997,18 +79020,30 @@ "description": "IDs of the latest run on LangSmith Deployments; NULL until first trigger.", "type": "string" }, + "preview_verify_enabled": { + "description": "PreviewVerifyEnabled lets this board's fix runs use preview deployments\nwhen the deployment-wide preview verification kill switch is also on.", + "type": "boolean" + }, "priorities": { "type": "array", "items": { "type": "string" } }, + "run_filter": { + "description": "RunFilter is a runs-filter-DSL string scoping which traces Engine analyzes\n(prompt guidance, not an enforced query). NULL = no scope. Clamped by\nvalidateRunFilter.", + "type": "string" + }, "session_agent_overview_repo_id": { "type": "string" }, "session_id": { "type": "string" }, + "session_lcu_spend_limit_monthly": { + "description": "SessionLCUSpendLimitMonthly is the per-project monthly Engine LCU spend\nlimit: NULL/negative = no limit; 0 or positive = monthly cap (spend is\nnever negative, so a cap of 0 always reads as reached). Enforced in\naddition to (and independently of) the org-level limit. Serialized as a\nstring to preserve NUMERIC(28,6) precision.", + "type": "string" + }, "session_name": { "description": "JOINed from tracer_session", "type": "string" @@ -83016,8 +79051,16 @@ "tenant_id": { "type": "string" }, + "tenant_name": { + "description": "JOINed from tenants (workspace label); resolved server-side so the org-admin list can label rows across workspaces the caller isn't a member of", + "type": "string" + }, "updated_at": { "type": "string" + }, + "user_instructions": { + "description": "User-owned freeform preferences. Engine reads this as authoritative\ncontext and reconciles it into the Agent Overview on the next scan, but\nnever edits it. NULL when the user hasn't set any.", + "type": "string" } } }, @@ -83061,124 +79104,95 @@ "github_repo_url": { "type": "string" }, + "preview_verify_enabled": { + "type": "boolean" + }, "priorities": { "type": "array", "items": { "type": "string" } }, + "run_filter": { + "description": "Trace-scope DSL. nil = don't change; \"\" clears it.", + "type": "string" + }, "session_agent_overview_repo_id": { "type": "string" - } - } - }, - "tracer_sessions.AgentVersionResponse": { - "type": "object", - "properties": { - "commit_sha": { + }, + "session_lcu_spend_limit_monthly": { + "description": "SessionLCUSpendLimitMonthly sets the per-project monthly LCU spend limit.\nTri-state: absent (nil) = don't change; 0 or positive = monthly cap (a cap\nof 0 is always reached, blocking new runs); negative clears it (stored as\nNULL = no limit). The frontend sends a negative number to clear rather\nthan null, since null is indistinguishable from \"absent\". Serialized as a\nstring to preserve NUMERIC precision.", "type": "string" }, - "first_seen_at": { + "user_instructions": { + "description": "Freeform user preferences. Send \"\" to clear (the frontend must not send null).", "type": "string" } } }, - "triggers.CreateTriggerRequest": { + "tracer_session_issues_agent_webhooks.IssuesAgentWebhook": { "type": "object", "properties": { - "agent_id": { + "created_at": { "type": "string" }, - "config": { - "type": "object", - "additionalProperties": {} - }, - "name": { - "type": "string" + "event_types": { + "type": "array", + "items": { + "type": "string" + } }, - "registration_id": { - "type": "string" + "headers": { + "type": "object" }, - "status": { + "id": { "type": "string" }, - "template_id": { - "type": "string" - } - } - }, - "triggers.ErrorResponse": { - "type": "object", - "properties": { - "code": { - "type": "string" + "issue_statuses": { + "description": "IssueStatuses scopes delivery to issues in one of these statuses. Nil/empty\n(the default) fires for every status.", + "type": "array", + "items": { + "type": "string" + } }, - "detail": { + "organization_id": { + "description": "OrganizationID is derived from the tenant on fetch (no stored column); the\nrow carries it so Slack delivery can address the org-scoped install.", "type": "string" }, - "status": { - "type": "integer" - }, - "type": { - "type": "string" - } - } - }, - "triggers.Trigger": { - "type": "object", - "properties": { - "agent_id": { + "session_id": { "type": "string" }, - "config": { - "type": "object", - "additionalProperties": {} - }, - "created_at": { - "type": "string" + "severity_threshold": { + "$ref": "#/components/schemas/tracer_session_issues.Severity" }, - "id": { + "signing_secret": { "type": "string" }, - "name": { + "slack_channel_id": { + "description": "Delivery target is either a URL or a Slack channel. SlackTeamID is the\nchannel's workspace (which install to send through).", "type": "string" }, - "status": { + "slack_team_id": { "type": "string" }, - "template_id": { + "tenant_id": { "type": "string" }, "updated_at": { "type": "string" - } - } - }, - "triggers.TriggerListResponse": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/triggers.Trigger" - } }, - "next_cursor": { + "url": { "type": "string" } } }, - "triggers.UpdateTriggerRequest": { + "tracer_sessions.AgentVersionResponse": { "type": "object", "properties": { - "config": { - "type": "object", - "additionalProperties": {} - }, - "name": { + "commit_sha": { "type": "string" }, - "status": { + "first_seen_at": { "type": "string" } } @@ -83205,140 +79219,269 @@ } } }, - "usage.AgentUsage": { + "users.ErrorResponse": { "type": "object", "properties": { - "agent_name": { - "type": "string" - }, - "assistant_id": { - "type": "string" - }, - "first_used": { + "code": { "type": "string" }, - "last_used": { + "detail": { "type": "string" }, - "model_name": { - "type": "string" + "status": { + "type": "integer" }, - "owner_email": { + "type": { "type": "string" + } + } + }, + "users.User": { + "type": "object", + "properties": { + "email": { + "type": "string", + "example": "ada@example.com" }, - "run_count": { - "type": "integer" + "id": { + "type": "string", + "format": "uuid" }, - "total_cost": { - "type": "number" + "name": { + "type": "string", + "example": "Ada Lovelace" } } }, - "usage.AgentUsageResponse": { + "users.UserRef": { "type": "object", "properties": { - "agents": { - "type": "array", - "items": { - "$ref": "#/components/schemas/usage.AgentUsage" - } + "id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string", + "example": "Ada Lovelace" } } }, - "usage.ModelUsage": { + "sandboxapi.S3BucketMountSpec": { "type": "object", + "required": [ + "id", + "mount_path", + "type", + "s3" + ], "properties": { - "last_used": { - "type": "string" + "cache": { + "$ref": "#/components/schemas/sandboxapi.MountCacheSpec" + }, + "id": { + "type": "string", + "maxLength": 64 }, - "model_name": { + "mount_path": { "type": "string" }, - "run_count": { - "type": "integer" + "read_only": { + "type": "boolean" }, - "total_cost": { - "type": "number" + "s3": { + "$ref": "#/components/schemas/sandboxapi.S3MountSpec" + }, + "type": { + "enum": [ + "s3" + ], + "allOf": [ + { + "$ref": "#/components/schemas/sandboxapi.MountKind" + } + ] } - } - }, - "usage.ModelUsageResponse": { - "type": "object", - "properties": { - "models": { - "type": "array", - "items": { - "$ref": "#/components/schemas/usage.ModelUsage" + }, + "not": { + "anyOf": [ + { + "required": [ + "gcs" + ] + }, + { + "required": [ + "git" + ] + }, + { + "required": [ + "contexthub" + ] } - } + ] } }, - "usage.ToolUsage": { + "sandboxapi.GCSBucketMountSpec": { "type": "object", + "required": [ + "id", + "mount_path", + "type", + "gcs" + ], "properties": { - "agent_count": { - "type": "integer" + "cache": { + "$ref": "#/components/schemas/sandboxapi.MountCacheSpec" }, - "avg_latency_ms": { - "type": "number" + "gcs": { + "$ref": "#/components/schemas/sandboxapi.GCSMountSpec" }, - "last_used": { + "id": { + "type": "string", + "maxLength": 64 + }, + "mount_path": { "type": "string" }, - "run_count": { - "type": "integer" + "read_only": { + "type": "boolean" }, - "tool_name": { - "type": "string" + "type": { + "enum": [ + "gcs" + ], + "allOf": [ + { + "$ref": "#/components/schemas/sandboxapi.MountKind" + } + ] } - } - }, - "usage.ToolUsageResponse": { - "type": "object", - "properties": { - "tools": { - "type": "array", - "items": { - "$ref": "#/components/schemas/usage.ToolUsage" + }, + "not": { + "anyOf": [ + { + "required": [ + "s3" + ] + }, + { + "required": [ + "git" + ] + }, + { + "required": [ + "contexthub" + ] } - } + ] } }, - "usage.UserUsage": { + "sandboxapi.GitRepoMountSpec": { "type": "object", + "required": [ + "id", + "mount_path", + "type", + "git" + ], "properties": { - "agent_count": { - "type": "integer" - }, - "first_used": { - "type": "string" + "git": { + "$ref": "#/components/schemas/sandboxapi.GitMountSpec" }, - "last_used": { - "type": "string" - }, - "ls_user_id": { - "type": "string" + "id": { + "type": "string", + "maxLength": 64 }, - "owner_email": { + "mount_path": { "type": "string" }, - "run_count": { - "type": "integer" + "read_only": { + "type": "boolean" }, - "total_cost": { - "type": "number" + "type": { + "enum": [ + "git" + ], + "allOf": [ + { + "$ref": "#/components/schemas/sandboxapi.MountKind" + } + ] } + }, + "not": { + "anyOf": [ + { + "required": [ + "s3" + ] + }, + { + "required": [ + "gcs" + ] + }, + { + "required": [ + "contexthub" + ] + } + ] } }, - "usage.UserUsageResponse": { + "sandboxapi.ContextHubRepoMountSpec": { "type": "object", + "required": [ + "id", + "mount_path", + "type", + "contexthub" + ], "properties": { - "users": { - "type": "array", - "items": { - "$ref": "#/components/schemas/usage.UserUsage" - } + "contexthub": { + "$ref": "#/components/schemas/sandboxapi.ContextHubMountSpec" + }, + "id": { + "type": "string", + "maxLength": 64 + }, + "mount_path": { + "type": "string" + }, + "read_only": { + "type": "boolean" + }, + "type": { + "enum": [ + "contexthub" + ], + "allOf": [ + { + "$ref": "#/components/schemas/sandboxapi.MountKind" + } + ] } + }, + "not": { + "anyOf": [ + { + "required": [ + "s3" + ] + }, + { + "required": [ + "gcs" + ] + }, + { + "required": [ + "git" + ] + } + ] } } }, @@ -83620,81 +79763,16 @@ "x-group": "System" }, { - "name": "agents", - "x-hidden": true - }, - { - "name": "beacon", - "x-hidden": true - }, - { - "name": "engine-trial" - }, - { - "name": "fleet" - }, - { - "name": "fleet auth", - "x-hidden": true - }, - { - "name": "fleet credentials", - "x-hidden": true - }, - { - "name": "fleet github-app", - "x-hidden": true - }, - { - "name": "fleet integrations", - "x-hidden": true - }, - { - "name": "fleet mcp", - "x-hidden": true - }, - { - "name": "fleet threads", - "x-hidden": true - }, - { - "name": "fleet trigger-templates", - "x-hidden": true - }, - { - "name": "fleet triggers", - "x-hidden": true - }, - { - "name": "fleet usage", - "x-hidden": true - }, - { - "name": "fleet_webhooks", - "x-hidden": true - }, - { - "name": "health" - }, - { - "name": "internal", - "x-hidden": true - }, - { - "name": "metrics", - "x-hidden": true + "name": "fleet orgs" }, { - "name": "nps", - "x-hidden": true + "name": "fleet secrets" }, { - "name": "sandboxes-internal", - "x-hidden": true + "name": "fleet tenants" }, { - "name": "skills", - "x-hidden": true + "name": "fleet users" } ] }