From e484b71edb71ed1f8fd93522a44af2b624ae84f5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 28 Jul 2026 12:00:16 +0000 Subject: [PATCH] chore: refresh LangSmith platform OpenAPI spec Automated refresh from api.smith.langchain.com with fleet and internal endpoints filtered for public documentation. --- src/langsmith/langsmith-platform-openapi.json | 5499 ++++++++++++++--- 1 file changed, 4506 insertions(+), 993 deletions(-) diff --git a/src/langsmith/langsmith-platform-openapi.json b/src/langsmith/langsmith-platform-openapi.json index 9ba5e761a6..1d1b027542 100644 --- a/src/langsmith/langsmith-platform-openapi.json +++ b/src/langsmith/langsmith-platform-openapi.json @@ -6,29 +6,6 @@ "version": "0.1.0" }, "paths": { - "/api/v1/info": { - "get": { - "tags": [ - "info" - ], - "summary": "Get Server Info", - "description": "Get information about the current deployment of LangSmith.", - "operationId": "get_server_info_api_v1_info_get", - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/InfoGetResponse" - } - } - } - } - }, - "x-public": true - } - }, "/api/v1/info/health": { "get": { "tags": [ @@ -9723,8 +9700,9 @@ "feedback" ], "summary": "Create Feedback Formula Ep", - "description": "Create a new feedback formula", + "description": "Create a new feedback formula\n\nDeprecated: use POST /api/v1/feedback/composite-evaluators instead to create a code evaluator from the feedback formula.", "operationId": "create_feedback_formula_ep_api_v1_feedback_formulas_post", + "deprecated": true, "security": [ { "API Key": [] @@ -9775,8 +9753,9 @@ "feedback" ], "summary": "List Feedback Formula Ep", - "description": "List feedback formulas for a given dataset or tracing project", + "description": "List feedback formulas for a given dataset or tracing project\n\nDeprecated: superseded by composite-feedback v2, where composites are code evaluators with run rules.", "operationId": "list_feedback_formula_ep_api_v1_feedback_formulas_get", + "deprecated": true, "security": [ { "API Key": [] @@ -9879,8 +9858,9 @@ "feedback" ], "summary": "Get Feedback Formula Ep", - "description": "Get a feedback formula by id", + "description": "Get a feedback formula by id\n\nDeprecated: superseded by composite-feedback v2, where composites are code evaluators with run rules", "operationId": "get_feedback_formula_ep_api_v1_feedback_formulas__feedback_formula_id__get", + "deprecated": true, "security": [ { "API Key": [] @@ -9933,8 +9913,9 @@ "feedback" ], "summary": "Update Feedback Formula Ep", - "description": "Update a feedback formula", + "description": "Update a feedback formula\n\nDeprecated: superseded by composite-feedback v2, where composites are code evaluators with run rules", "operationId": "update_feedback_formula_ep_api_v1_feedback_formulas__feedback_formula_id__put", + "deprecated": true, "security": [ { "API Key": [] @@ -9997,8 +9978,9 @@ "feedback" ], "summary": "Delete Feedback Formula Endpoint", - "description": "Delete a feedback formula by id", + "description": "Delete a feedback formula by id\n\nDeprecated: superseded by composite-feedback v2, where composites are run\nrules (see DELETE /api/v1/runs/rules/{rule_id}). Tenants on v2 receive HTTP 410.", "operationId": "delete_feedback_formula_endpoint_api_v1_feedback_formulas__feedback_formula_id__delete", + "deprecated": true, "security": [ { "API Key": [] @@ -10464,6 +10446,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", @@ -10585,7 +10583,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": { @@ -10619,6 +10617,7 @@ } } }, + "deprecated": true, "security": [ { "API Key": [] @@ -11836,6 +11835,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", @@ -11869,6 +11884,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", @@ -13197,7 +13274,7 @@ "required": false, "schema": { "type": "boolean", - "default": true, + "default": false, "title": "Extend Trace Retention" } } @@ -13430,7 +13507,7 @@ "required": false, "schema": { "type": "boolean", - "default": true, + "default": false, "title": "Extend Trace Retention" } } @@ -15271,16 +15348,93 @@ ], "summary": "Read Model Price Map", "operationId": "read_model_price_map_api_v1_model_price_map_get", + "security": [ + { + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "parameters": [ + { + "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": "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" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } } } } }, + "x-public": true + }, + "post": { + "tags": [ + "model-price-map" + ], + "summary": "Create New Model Price", + "operationId": "create_new_model_price_api_v1_model_price_map_post", "security": [ { "API Key": [] @@ -15292,97 +15446,78 @@ "Bearer Auth": [] } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelPriceMapCreateSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, "x-public": true - }, - "post": { + } + }, + "/api/v1/model-price-map/{id}": { + "put": { "tags": [ "model-price-map" ], - "summary": "Create New Model Price", - "operationId": "create_new_model_price_api_v1_model_price_map_post", + "summary": "Update Model Price", + "operationId": "update_model_price_api_v1_model_price_map__id__put", + "security": [ + { + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "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/ModelPriceMapCreateSchema" + "$ref": "#/components/schemas/ModelPriceMapUpdateSchema" } } - }, - "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/model-price-map/{id}": { - "put": { - "tags": [ - "model-price-map" - ], - "summary": "Update Model Price", - "operationId": "update_model_price_api_v1_model_price_map__id__put", - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "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" - } - } - } + } }, "responses": { "200": { @@ -16511,13 +16646,33 @@ "charts" ], "summary": "Create Chart", - "description": "Create a new chart.", + "description": "Create a chart or dashboard text block.", "operationId": "create_chart_api_v1_charts_create_post", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomChartCreate" + "oneOf": [ + { + "$ref": "#/components/schemas/CustomChartCreate" + }, + { + "$ref": "#/components/schemas/CustomTextBlockCreate" + } + ], + "title": "Chart", + "discriminator": { + "propertyName": "chart_type", + "mapping": { + "line": "#/components/schemas/CustomChartCreate", + "bar": "#/components/schemas/CustomChartCreate", + "table": "#/components/schemas/CustomChartCreate", + "kpi": "#/components/schemas/CustomChartCreate", + "top-k": "#/components/schemas/CustomChartCreate", + "pie": "#/components/schemas/CustomChartCreate", + "text": "#/components/schemas/CustomTextBlockCreate" + } + } } } }, @@ -16529,7 +16684,27 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomChartResponse" + "oneOf": [ + { + "$ref": "#/components/schemas/CustomChartResponse" + }, + { + "$ref": "#/components/schemas/CustomTextBlockResponse" + } + ], + "title": "Response Create Chart Api V1 Charts Create Post", + "discriminator": { + "propertyName": "chart_type", + "mapping": { + "line": "#/components/schemas/CustomChartResponse", + "bar": "#/components/schemas/CustomChartResponse", + "table": "#/components/schemas/CustomChartResponse", + "kpi": "#/components/schemas/CustomChartResponse", + "top-k": "#/components/schemas/CustomChartResponse", + "pie": "#/components/schemas/CustomChartResponse", + "text": "#/components/schemas/CustomTextBlockResponse" + } + } } } } @@ -16565,7 +16740,7 @@ "charts" ], "summary": "Read Single Chart", - "description": "Get a single chart by ID.", + "description": "Get a single chart or text block by ID.", "operationId": "read_single_chart_api_v1_charts__chart_id__post", "security": [ { @@ -16606,7 +16781,27 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SingleCustomChartResponse" + "oneOf": [ + { + "$ref": "#/components/schemas/SingleCustomChartResponse" + }, + { + "$ref": "#/components/schemas/CustomTextBlockResponse" + } + ], + "discriminator": { + "propertyName": "chart_type", + "mapping": { + "line": "#/components/schemas/SingleCustomChartResponse", + "bar": "#/components/schemas/SingleCustomChartResponse", + "table": "#/components/schemas/SingleCustomChartResponse", + "kpi": "#/components/schemas/SingleCustomChartResponse", + "top-k": "#/components/schemas/SingleCustomChartResponse", + "pie": "#/components/schemas/SingleCustomChartResponse", + "text": "#/components/schemas/CustomTextBlockResponse" + } + }, + "title": "Response Read Single Chart Api V1 Charts Chart Id Post" } } } @@ -16629,7 +16824,7 @@ "charts" ], "summary": "Update Chart", - "description": "Update a chart.", + "description": "Update a chart or text block.", "operationId": "update_chart_api_v1_charts__chart_id__patch", "security": [ { @@ -16670,7 +16865,27 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomChartResponse" + "oneOf": [ + { + "$ref": "#/components/schemas/CustomChartResponse" + }, + { + "$ref": "#/components/schemas/CustomTextBlockResponse" + } + ], + "discriminator": { + "propertyName": "chart_type", + "mapping": { + "line": "#/components/schemas/CustomChartResponse", + "bar": "#/components/schemas/CustomChartResponse", + "table": "#/components/schemas/CustomChartResponse", + "kpi": "#/components/schemas/CustomChartResponse", + "top-k": "#/components/schemas/CustomChartResponse", + "pie": "#/components/schemas/CustomChartResponse", + "text": "#/components/schemas/CustomTextBlockResponse" + } + }, + "title": "Response Update Chart Api V1 Charts Chart Id Patch" } } } @@ -19692,7 +19907,7 @@ "orgs" ], "summary": "Get Granular Usage", - "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.", + "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. When omitted, all\nworkspaces the user can read are included (avoids enumerating every\nworkspace id in the URL, which can exceed proxy header limits).", "operationId": "get_granular_usage_api_v1_orgs_current_billing_granular_usage_get", "security": [ { @@ -19729,13 +19944,20 @@ { "name": "workspace_ids", "in": "query", - "required": true, + "required": false, "schema": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - }, + "anyOf": [ + { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + } + }, + { + "type": "null" + } + ], "title": "Workspace Ids" } }, @@ -19842,13 +20064,20 @@ { "name": "workspace_ids", "in": "query", - "required": true, + "required": false, "schema": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - }, + "anyOf": [ + { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + } + }, + { + "type": "null" + } + ], "title": "Workspace Ids" } }, @@ -25296,6 +25525,801 @@ "parameters": [] } }, + "/.well-known/openid-configuration": { + "get": { + "description": "Returns the OpenID Connect discovery document (OpenID Connect Discovery 1.0), advertising the authorization, token, userinfo, and JWKS endpoints plus supported scopes, response types, and signing algorithms.", + "tags": [ + "oauth" + ], + "summary": "Get OpenID Connect provider configuration", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oauth.OIDCProviderMetadata" + } + } + } + } + }, + "x-public": true, + "parameters": [] + } + }, + "/api/v1/annotation-queues/items/{queue_item_id}/status": { + "post": { + "security": [ + { + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "description": "Log the caller's reviewer status for a RUN or THREAD annotation queue item. A null status re-shows the item for this reviewer.", + "tags": [ + "annotation_queues" + ], + "summary": "Create annotation queue item status", + "parameters": [ + { + "description": "Annotation queue membership ID", + "name": "queue_item_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/annotationqueues.CreateAnnotationQueueItemStatusResponse" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + } + }, + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/annotationqueues.CreateAnnotationQueueItemStatusRequest" + } + } + } + } + } + }, + "/api/v1/annotation-queues/{queue_id}/items": { + "get": { + "security": [ + { + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "description": "List RUN and THREAD items in a single annotation queue for one review status section, with opaque cursor pagination. Optional item_type=RUN|THREAD filters the page. direction=backward returns items before the supplied cursor. Response is membership metadata only (no nested run/thread store payloads). status=archived returns items in annotation_queue_runs_archive (queue completion rule met), not merely items the caller personally marked completed.", + "tags": [ + "annotation_queues" + ], + "summary": "List annotation queue items", + "parameters": [ + { + "description": "Annotation queue ID", + "name": "queue_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Review section: needs_my_review, needs_others_review, or archived", + "name": "status", + "in": "query", + "required": true, + "schema": { + "type": "string", + "enum": [ + "needs_my_review", + "needs_others_review", + "archived" + ], + "title": "Status" + } + }, + { + "description": "Page size (max 100)", + "name": "page_size", + "in": "query", + "schema": { + "type": "integer", + "default": 20, + "title": "Page Size" + } + }, + { + "description": "Opaque pagination cursor", + "name": "cursor", + "in": "query", + "schema": { + "type": "string", + "title": "Cursor" + } + }, + { + "description": "Filter to RUN or THREAD", + "name": "item_type", + "in": "query", + "schema": { + "type": "string", + "enum": [ + "RUN", + "THREAD" + ], + "title": "Item Type" + } + }, + { + "description": "Pagination direction. backward requires cursor", + "name": "direction", + "in": "query", + "schema": { + "type": "string", + "enum": [ + "forward", + "backward" + ], + "default": "forward", + "title": "Direction" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/annotationqueues.ListAnnotationQueueItemsResponse" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + } + }, + "x-public": true + }, + "post": { + "security": [ + { + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "description": "Add RUN or THREAD items to a single annotation queue. THREAD items require thread_id and session_id; RUN items require run_id, or source_proposed_example_id with lookup coordinates when applicable.", + "tags": [ + "annotation_queues" + ], + "summary": "Add annotation queue items", + "parameters": [ + { + "description": "Annotation queue ID", + "name": "queue_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Extend trace retention for added run items", + "name": "extend_trace_retention", + "in": "query", + "schema": { + "type": "boolean", + "title": "Extend Trace Retention" + } + } + ], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/annotationqueues.AddAnnotationQueueItemsResponse" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + } + }, + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/annotationqueues.AddAnnotationQueueItemsRequest" + } + } + } + } + } + }, + "/api/v1/annotation-queues/{queue_id}/items/count": { + "get": { + "security": [ + { + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "description": "Returns the number of annotation queue items for the requested reviewer-specific or archived bucket.", + "tags": [ + "annotation_queues" + ], + "summary": "Get the annotation queue item count", + "parameters": [ + { + "description": "Queue ID", + "name": "queue_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Count bucket: all, needs_my_review, needs_others_review, or archived.", + "name": "status", + "in": "query", + "required": true, + "schema": { + "type": "string", + "title": "Status" + } + }, + { + "description": "Exclusive lower bound for archived item timestamp", + "name": "start_time", + "in": "query", + "schema": { + "type": "string", + "title": "Start Time" + } + }, + { + "description": "Exclusive upper bound for archived item timestamp", + "name": "end_time", + "in": "query", + "schema": { + "type": "string", + "title": "End Time" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/annotationqueues.AnnotationQueueItemCountResponse" + } + } + } + }, + "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": "Not Found", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + } + }, + "x-public": true + } + }, + "/api/v1/annotation-queues/{queue_id}/items/delete": { + "post": { + "security": [ + { + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "description": "Remove RUN or THREAD items from a single annotation queue by membership ID.", + "tags": [ + "annotation_queues" + ], + "summary": "Delete annotation queue items", + "parameters": [ + { + "description": "Annotation queue ID", + "name": "queue_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + } + }, + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/annotationqueues.DeleteAnnotationQueueItemsRequest" + } + } + } + } + } + }, + "/api/v1/annotation-queues/{queue_id}/items/{item_id}": { + "patch": { + "security": [ + { + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "description": "Partially update membership fields (added_at, last_reviewed_time) for a single annotation queue item by membership id. Works for RUN and THREAD rows. Omit a field (or pass JSON null) to leave it unchanged.", + "tags": [ + "annotation_queues" + ], + "summary": "Update an annotation queue item", + "parameters": [ + { + "description": "Annotation queue ID", + "name": "queue_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Annotation queue membership ID (annotation_queue_runs.id)", + "name": "item_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/annotationqueues.AnnotationQueueItem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + } + }, + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/annotationqueues.PatchAnnotationQueueItemRequest" + } + } + } + } + } + }, + "/api/v1/annotation-queues/{queue_id}/items/{item_id}/placement": { + "get": { + "security": [ + { + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "description": "Resolve a RUN or THREAD item to its current review section and zero-based position for deep linking.", + "tags": [ + "annotation_queues" + ], + "summary": "Get annotation queue item placement", + "parameters": [ + { + "description": "Annotation queue ID", + "name": "queue_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Annotation queue membership ID", + "name": "item_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/annotationqueues.AnnotationQueueItemPlacementResponse" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + } + }, + "x-public": true + } + }, "/api/v1/hub/environments": { "get": { "security": [ @@ -25591,7 +26615,7 @@ } } }, - "/auth/public": { + "/api/v1/info": { "get": { "security": [ { @@ -25604,18 +26628,18 @@ "Bearer Auth": [] } ], - "description": "Returns public authentication information for the current workspace-level session.", + "description": "Returns information about the current LangSmith deployment: version,\ninstance feature flags, batch-ingest limits, and max SDK versions.\nUnauthenticated by default; set FF_INFO_ENDPOINT_AUTH_REQUIRED=true to require auth.", "tags": [ - "auth" + "info" ], - "summary": "Get public auth info", + "summary": "Get server info", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/authn.PublicAuthInfo" + "$ref": "#/components/schemas/info.InfoGetResponse" } } } @@ -25625,7 +26649,7 @@ "parameters": [] } }, - "/auth/sandbox-access": { + "/auth/public": { "get": { "security": [ { @@ -25638,33 +26662,11 @@ "Bearer Auth": [] } ], - "description": "Combines authn + per-sandbox authz for runtime access. Returns the caller's PublicAuthInfo on allow (HTTP 200) or a 403 with the deny reason on deny.", + "description": "Returns public authentication information for the current workspace-level session.", "tags": [ - "sandboxes" - ], - "summary": "Get sandbox access decision", - "parameters": [ - { - "description": "Sandbox UUID", - "name": "sandbox_id", - "in": "query", - "required": true, - "schema": { - "type": "string", - "title": "Sandbox Id" - } - }, - { - "description": "Runtime action: exec | file | tunnel | proxy", - "name": "action", - "in": "query", - "required": true, - "schema": { - "type": "string", - "title": "Action" - } - } + "auth" ], + "summary": "Get public auth info", "responses": { "200": { "description": "OK", @@ -25675,59 +26677,10 @@ } } } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" - } - } - } - }, - "403": { - "description": "sandbox access denied: ", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "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-public": true + "x-public": true, + "parameters": [] } }, "/aws-marketplace/register": { @@ -25798,7 +26751,7 @@ "Bearer Auth": [] } ], - "description": "Lists all commits for a repository with pagination support.\nThis endpoint supports both authenticated and unauthenticated access.\nAuthenticated users can access private repos, while unauthenticated users can only access public repos.\nThe include_stats parameter controls whether download and view statistics are computed (defaults to true).", + "description": "List commits for a repository, with pagination support.\nThis endpoint supports both authenticated and unauthenticated access.\nAuthenticated users can access private repositories; unauthenticated users can only access public repositories.\nThe include_stats parameter controls whether download and view statistics are computed (defaults to true).", "tags": [ "commits" ], @@ -25837,10 +26790,10 @@ "name": "limit", "in": "query", "schema": { - "minimum": 1, "type": "integer", "maximum": 100, "default": 20, + "minimum": 1, "title": "Limit" } }, @@ -25849,9 +26802,9 @@ "name": "offset", "in": "query", "schema": { - "minimum": 0, "type": "integer", "default": 0, + "minimum": 0, "title": "Offset" } }, @@ -26465,215 +27418,95 @@ } } }, - "500": { - "description": "Internal server error\" example({\"error\":\"internal server error\"})", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - } - }, - "x-public": true - }, - "delete": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Permanently deletes an experiment view override configuration for a dataset.\nThis operation removes all column override settings including color gradients,\nprecision configurations, and visibility settings.\n\nAfter deletion, the experiment view will revert to default column display settings.\nThis action cannot be undone - you will need to recreate the override configuration\nif you want to restore custom column settings.\n\nBoth the dataset and override must exist and be accessible by the authenticated user.\nThe operation will fail if the override doesn't exist or if the user doesn't have\nappropriate permissions for the dataset.", - "tags": [ - "experiment-view-overrides" - ], - "summary": "Delete experiment view override configuration", - "parameters": [ - { - "example": "\"550e8400-e29b-41d4-a716-446655440000\"", - "description": "Dataset ID", - "name": "dataset_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "example": "\"123e4567-e89b-12d3-a456-426614174000\"", - "description": "Experiment view override ID", - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - } - ], - "responses": { - "204": { - "description": "Successfully deleted experiment view override (no content returned)" - }, - "400": { - "description": "Invalid ID format\" example({\"error\":\"invalid experiment view override ID format\"})", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "401": { - "description": "Unauthorized access\" example({\"error\":\"Unauthorized\"})", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "404": { - "description": "Override not found\" example({\"error\":\"experiment view override not found\"})", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "500": { - "description": "Internal server error\" example({\"error\":\"internal server error\"})", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - } - }, - "x-public": true - }, - "patch": { - "security": [ - { - "API Key": [] - }, - { - "Tenant ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Updates an existing experiment view override configuration by completely replacing\nthe column overrides for the specified dataset and override ID.\n\nThis endpoint performs a complete replacement of the column overrides configuration.\nAll existing column overrides will be replaced with the new configuration provided\nin the request body. To add or modify individual columns, include the complete\ndesired configuration in the request.\n\nThe request format is identical to the create endpoint:\n- column_overrides: Required array with at least one override configuration\n- Each override can specify color gradients, precision, and visibility\n\nExample request body:\n{\n\"column_overrides\": [\n{\n\"column\": \"metrics.f1_score\",\n\"color_gradient\": [[0.0, \"#ff4444\"], [0.8, \"#44ff44\"]],\n\"precision\": 4\n},\n{\n\"column\": \"feedback.rating\",\n\"hide\": false\n}\n]\n}\n\nBoth the dataset and override must exist and be accessible by the authenticated user.", - "tags": [ - "experiment-view-overrides" - ], - "summary": "Update existing experiment view override configuration", - "parameters": [ - { - "example": "\"550e8400-e29b-41d4-a716-446655440000\"", - "description": "Dataset ID", - "name": "dataset_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "example": "\"123e4567-e89b-12d3-a456-426614174000\"", - "description": "Experiment view override ID", - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - } - ], - "responses": { - "200": { - "description": "Successfully updated experiment view override", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/experiment_view_overrides.ExperimentViewOverride" - } - } - } - }, - "400": { - "description": "Invalid request data\" example({\"error\":\"invalid experiment view override ID format\"})", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "401": { - "description": "Unauthorized access\" example({\"error\":\"Unauthorized\"})", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "404": { - "description": "Override not found\" example({\"error\":\"experiment view override not found\"})", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "422": { - "description": "Validation error\" example({\"error\":\"'precision' must be between 1 and 6 for column at index 0\"})", + "500": { + "description": "Internal server error\" example({\"error\":\"internal server error\"})", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + } + }, + "x-public": true + }, + "delete": { + "security": [ + { + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "description": "Permanently deletes an experiment view override configuration for a dataset.\nThis operation removes all column override settings including color gradients,\nprecision configurations, and visibility settings.\n\nAfter deletion, the experiment view will revert to default column display settings.\nThis action cannot be undone - you will need to recreate the override configuration\nif you want to restore custom column settings.\n\nBoth the dataset and override must exist and be accessible by the authenticated user.\nThe operation will fail if the override doesn't exist or if the user doesn't have\nappropriate permissions for the dataset.", + "tags": [ + "experiment-view-overrides" + ], + "summary": "Delete experiment view override configuration", + "parameters": [ + { + "example": "\"550e8400-e29b-41d4-a716-446655440000\"", + "description": "Dataset ID", + "name": "dataset_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "example": "\"123e4567-e89b-12d3-a456-426614174000\"", + "description": "Experiment view override ID", + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "responses": { + "204": { + "description": "Successfully deleted experiment view override (no content returned)" + }, + "400": { + "description": "Invalid ID format\" example({\"error\":\"invalid experiment view override ID format\"})", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + }, + "401": { + "description": "Unauthorized access\" example({\"error\":\"Unauthorized\"})", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + }, + "404": { + "description": "Override not found\" example({\"error\":\"experiment view override not found\"})", "content": { "application/json": { "schema": { @@ -26699,21 +27532,9 @@ } } }, - "x-public": true, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/experiment_view_overrides.ExperimentViewOverridePatchRequest" - } - } - } - } - } - }, - "/issues-agent/lcu-spend": { - "get": { + "x-public": true + }, + "patch": { "security": [ { "API Key": [] @@ -26725,74 +27546,123 @@ "Bearer Auth": [] } ], - "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.", + "description": "Updates an existing experiment view override configuration by completely replacing\nthe column overrides for the specified dataset and override ID.\n\nThis endpoint performs a complete replacement of the column overrides configuration.\nAll existing column overrides will be replaced with the new configuration provided\nin the request body. To add or modify individual columns, include the complete\ndesired configuration in the request.\n\nThe request format is identical to the create endpoint:\n- column_overrides: Required array with at least one override configuration\n- Each override can specify color gradients, precision, and visibility\n\nExample request body:\n{\n\"column_overrides\": [\n{\n\"column\": \"metrics.f1_score\",\n\"color_gradient\": [[0.0, \"#ff4444\"], [0.8, \"#44ff44\"]],\n\"precision\": 4\n},\n{\n\"column\": \"feedback.rating\",\n\"hide\": false\n}\n]\n}\n\nBoth the dataset and override must exist and be accessible by the authenticated user.", "tags": [ - "issues-agent" + "experiment-view-overrides" ], - "summary": "Get issues-agent (Engine) LCU spend per project for the calling org", + "summary": "Update existing experiment view override configuration", "parameters": [ { - "description": "Inclusive window start, RFC 3339. Defaults to first instant of current calendar month (UTC).", - "name": "start", - "in": "query", + "example": "\"550e8400-e29b-41d4-a716-446655440000\"", + "description": "Dataset ID", + "name": "dataset_id", + "in": "path", + "required": true, "schema": { "type": "string", - "title": "Start" + "format": "uuid" } }, { - "description": "Exclusive window end, RFC 3339. Defaults to first instant of next calendar month (UTC).", - "name": "end", - "in": "query", + "example": "\"123e4567-e89b-12d3-a456-426614174000\"", + "description": "Experiment view override ID", + "name": "id", + "in": "path", + "required": true, "schema": { "type": "string", - "title": "End" + "format": "uuid" } } ], "responses": { "200": { - "description": "OK", + "description": "Successfully updated experiment view override", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/issues_agent_usage.LCUSpendResponse" + "$ref": "#/components/schemas/experiment_view_overrides.ExperimentViewOverride" } } } }, "400": { - "description": "Bad Request", + "description": "Invalid request data\" example({\"error\":\"invalid experiment view override ID format\"})", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/issues_agent_usage.LCUSpendErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } }, - "403": { - "description": "Forbidden", + "401": { + "description": "Unauthorized access\" example({\"error\":\"Unauthorized\"})", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + }, + "404": { + "description": "Override not found\" example({\"error\":\"experiment view override not found\"})", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + }, + "422": { + "description": "Validation error\" example({\"error\":\"'precision' must be between 1 and 6 for column at index 0\"})", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/issues_agent_usage.LCUSpendErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } }, "500": { - "description": "Internal Server Error", + "description": "Internal server error\" example({\"error\":\"internal server error\"})", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/issues_agent_usage.LCUSpendErrorResponse" + "type": "object", + "additionalProperties": { + "type": "string" + } } } } } }, - "x-public": true + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/experiment_view_overrides.ExperimentViewOverridePatchRequest" + } + } + } + } } }, "/me/providers/{providerType}": { @@ -27585,92 +28455,7 @@ } }, "403": { - "description": "BYOC not enabled for this organization", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "500": { - "description": "Internal server error", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - } - }, - "x-public": true, - "parameters": [] - }, - "post": { - "security": [ - { - "API Key": [] - }, - { - "Organization ID": [] - }, - { - "Bearer Auth": [] - } - ], - "description": "Creates a new data plane object. Persists the rendered data plane spec, and returns 202 with the data plane in status=requested. Requires BYOC enabled org and org admin.", - "tags": [ - "data_planes" - ], - "summary": "Create a new data plane", - "parameters": [], - "responses": { - "202": { - "description": "Data plane requested", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/data_planes.PublicDataPlane" - } - } - } - }, - "400": { - "description": "Invalid input", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "403": { - "description": "BYOC not enabled or insufficient permissions", + "description": "BYOC not enabled for this organization", "content": { "application/json": { "schema": { @@ -27682,8 +28467,8 @@ } } }, - "409": { - "description": "Name already exists for this organization", + "500": { + "description": "Internal server error", "content": { "application/json": { "schema": { @@ -27694,16 +28479,86 @@ } } } + } + }, + "x-public": true, + "parameters": [] + }, + "post": { + "security": [ + { + "API Key": [] + }, + { + "Organization ID": [] + }, + { + "Bearer Auth": [] + } + ], + "description": "Creates a new data plane object. Persists the rendered data plane spec, and returns 202 with the data plane in status=requested. Requires BYOC enabled org and org admin.", + "tags": [ + "data_planes" + ], + "summary": "Create a new data plane", + "parameters": [], + "responses": { + "202": { + "description": "Data plane requested", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/data_planes.PublicDataPlane" + } + } + } + }, + "400": { + "description": "Invalid input", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/data_planes.ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/data_planes.ErrorResponse" + } + } + } + }, + "403": { + "description": "BYOC not enabled or insufficient permissions", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/data_planes.ErrorResponse" + } + } + } + }, + "409": { + "description": "Name already exists for this organization", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/data_planes.ErrorResponse" + } + } + } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "$ref": "#/components/schemas/data_planes.ErrorResponse" } } } @@ -27722,6 +28577,125 @@ } } }, + "/orgs/current/data-planes/{id}": { + "delete": { + "security": [ + { + "API Key": [] + }, + { + "Organization ID": [] + }, + { + "Bearer Auth": [] + } + ], + "description": "Verifies that the stored customer AWS role has delete permissions, removes linked workspaces, and starts asynchronous deprovisioning for a data plane owned by the caller's organization. Requires BYOC to be enabled for the org and org admin permissions.", + "tags": [ + "data_planes" + ], + "summary": "Delete a data plane", + "parameters": [ + { + "description": "Data plane ID", + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "202": { + "description": "Data plane deprovisioning started", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/data_planes.PublicDataPlane" + } + } + } + }, + "400": { + "description": "Invalid data plane ID or confirmed missing delete permissions", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/data_planes.ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + }, + "403": { + "description": "BYOC not enabled or insufficient permissions", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + }, + "404": { + "description": "Data plane not found", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + }, + "409": { + "description": "Data plane is already in a terminal status", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + }, + "500": { + "description": "Internal server error", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + } + }, + "x-public": true + } + }, "/repos/{owner}/{repo}/tags/{tag_name}/history": { "get": { "security": [ @@ -27772,10 +28746,10 @@ "name": "limit", "in": "query", "schema": { - "minimum": 1, "type": "integer", "maximum": 100, "default": 50, + "minimum": 1, "title": "Limit" } }, @@ -27783,9 +28757,9 @@ "name": "offset", "in": "query", "schema": { - "minimum": 0, "type": "integer", "default": 0, + "minimum": 0, "title": "Offset" } } @@ -28346,6 +29320,44 @@ } } }, + "/userinfo": { + "get": { + "security": [ + { + "Bearer Auth": [] + } + ], + "description": "Returns identity claims for the user represented by a LangSmith access token whose audience is the identity resource or the API resource. The token is passed as a Bearer credential in the Authorization header (OpenID Connect Core 1.0 §5.3).", + "tags": [ + "oauth" + ], + "summary": "Get OpenID Connect userinfo", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oauth.UserinfoResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oauth.TokenErrorResponse" + } + } + } + } + }, + "x-public": true, + "parameters": [] + } + }, "/v1/agent-builder/integrations": { "get": { "security": [ @@ -30271,10 +31283,10 @@ "style": "form", "explode": false, "schema": { + "type": "array", "items": { "type": "string" }, - "type": "array", "title": "Tag Value Id" } }, @@ -30294,10 +31306,10 @@ "style": "form", "explode": false, "schema": { + "type": "array", "items": { "type": "string" }, - "type": "array", "title": "Resource Id" } }, @@ -30502,10 +31514,10 @@ "style": "form", "explode": false, "schema": { + "type": "array", "items": { "type": "string" }, - "type": "array", "title": "Evaluator Ids" } }, @@ -30636,10 +31648,10 @@ "style": "form", "explode": false, "schema": { + "type": "array", "items": { "type": "string" }, - "type": "array", "title": "Resource Id" } }, @@ -31439,7 +32451,7 @@ "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.\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.", + "description": "Returns every gateway policy in the current organization.\nThe response includes both admin-created policies and\nruntime-materialized children of `default_spend_cap` and\n`default_rate_limit` policies (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`, `route_config`, `rate_limit`, or `default_rate_limit`\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": [ "gateway-policies" ], @@ -31529,7 +32541,7 @@ "Bearer Auth": [] } ], - "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.", + "description": "Creates a gateway policy for the calling organization.\n\n**policy_type** is one of `spend_cap`, `default_spend_cap`,\n`guard`, `route_config`, `rate_limit`, or `default_rate_limit`.\nThe 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- `rate_limit` / `default_rate_limit`:\n`{\"version\": 1, \"limits\": [{\"metric\": \"requests\"|\"tokens\", \"window\": \"minute\"|\"hour\", \"value\": }]}`\n`limits` must be non-empty; each `metric`/`window` pair may appear at most once. `value` is 1..1000000000000000.\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` or `default_rate_limit` uses `{key, value: \"\"}`\nso the runtime materializes a per-subject child for every distinct\nsubject of 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; rate limits reject with\n429 (with a `Retry-After` hint) when a limit is exceeded; guard\npolicies redact matched content in-place before forwarding upstream.\n\n**Upsert by matchers:** for `spend_cap`, `default_spend_cap`,\n`rate_limit`, `default_rate_limit`, and `guard`, if a policy with\nthe same `subject_matchers` already exists in this organization,\nthe existing policy is updated in place instead of a duplicate\nbeing created. `id` is preserved. `route_config` does not upsert\nby matchers — name must be unique per organization (409 on\nconflict). Returns 201 either way.", "tags": [ "gateway-policies" ], @@ -31547,7 +32559,7 @@ } }, "400": { - "description": "validation failure (bad matchers, unknown policy_type, missing required field)", + "description": "validation error", "content": { "application/json": { "schema": { @@ -31658,7 +32670,7 @@ } }, "400": { - "description": "Bad Request", + "description": "validation error", "content": { "application/json": { "schema": { @@ -31749,6 +32761,16 @@ } } }, + "400": { + "description": "validation error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/gateway_policies.errorResponse" + } + } + } + }, "401": { "description": "Unauthorized", "content": { @@ -31801,7 +32823,7 @@ "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": "Deletes a gateway policy. Subsequent reads return 404.\n\n**default cascade:** deleting a `default_spend_cap` or\n`default_rate_limit` also deletes every child policy\nmaterialized from it.", "tags": [ "gateway-policies" ], @@ -31822,6 +32844,16 @@ "204": { "description": "No Content" }, + "400": { + "description": "validation error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/gateway_policies.errorResponse" + } + } + } + }, "401": { "description": "Unauthorized", "content": { @@ -31874,7 +32906,7 @@ "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\": , \"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.", + "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\"}`\n- rate-limit: `{\"version\": 1, \"limits\": [{\"metric\": \"requests\"|\"tokens\", \"window\": \"minute\"|\"hour\", \"value\": }]}`\nMismatched shapes are rejected with 400.\n\n**default cascade:** editing a `default_spend_cap` or\n`default_rate_limit` updates the config/action/enabled/priority\non every attached child policy so the template stays the source\nof truth across rollouts.", "tags": [ "gateway-policies" ], @@ -31903,7 +32935,7 @@ } }, "400": { - "description": "validation failure", + "description": "validation error", "content": { "application/json": { "schema": { @@ -31973,6 +33005,11 @@ "label": "guard", "lang": "json", "source": "{\n \"config\": {\"version\": 1, \"detect\": {\"pii\": true, \"secrets\": true}, \"timeout_seconds\": 5},\n \"enabled\": true\n}" + }, + { + "label": "rate_limit", + "lang": "json", + "source": "{\n \"config\": {\"version\": 1, \"limits\": [{\"metric\": \"requests\", \"window\": \"minute\", \"value\": 100}]},\n \"enabled\": true\n}" } ], "x-public": true, @@ -33423,19 +34460,334 @@ } } }, - "x-public": true, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ArcadeSettingsRequest" + "x-public": true, + "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" + } + } + } + } + }, + "x-public": true, + "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" + } + } + } + } + }, + "x-public": true + } + }, + "/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" + } + } + } + } + }, + "x-public": true + } + }, + "/v1/platform/oauth/authorized-apps": { + "get": { + "security": [ + { + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "description": "Lists the third-party applications the authenticated user has authorized to sign in with LangSmith.", + "tags": [ + "oauth" + ], + "summary": "List authorized applications", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/oauth.AuthorizedAppView" + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oauth.TokenErrorResponse" + } } } } - } - }, - "post": { + }, + "x-public": true, + "parameters": [] + } + }, + "/v1/platform/oauth/authorized-apps/{clientID}": { + "delete": { "security": [ { "API Key": [] @@ -33447,15 +34799,15 @@ "Bearer Auth": [] } ], - "description": "Initializes vendor settings.", + "description": "Revokes the authenticated user's authorization for an application and invalidates that application's active tokens for the user.", "tags": [ - "mcp_vendors" + "oauth" ], - "summary": "Create vendor settings", + "summary": "Revoke an authorized application", "parameters": [ { - "description": "Vendor slug (e.g. arcade)", - "name": "vendor_slug", + "description": "OAuth client ID", + "name": "clientID", "in": "path", "required": true, "schema": { @@ -33464,62 +34816,111 @@ } ], "responses": { - "201": { - "description": "Created", + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_vendors.ArcadeSettingsResponse" + "$ref": "#/components/schemas/oauth.TokenErrorResponse" } } } }, - "400": { - "description": "Bad Request", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" + "$ref": "#/components/schemas/errutil.UserError" } } } + } + }, + "x-public": true + } + }, + "/v1/platform/oauth/clients": { + "get": { + "security": [ + { + "API Key": [] }, - "401": { - "description": "Unauthorized", + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "description": "Lists the OAuth clients owned by the caller's organization.", + "tags": [ + "oauth" + ], + "summary": "List OAuth clients", + "responses": { + "200": { + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" + "$ref": "#/components/schemas/oauth.OAuthClientListResponse" } } } + } + }, + "x-public": true, + "parameters": [] + }, + "post": { + "security": [ + { + "API Key": [] }, - "403": { - "description": "Forbidden", + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "description": "Registers a new OAuth 2.0 / OIDC client owned by the caller's organization. For confidential clients the response includes a client_secret that is shown only once.", + "tags": [ + "oauth" + ], + "summary": "Create an OAuth client", + "parameters": [], + "responses": { + "201": { + "description": "Created", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" + "$ref": "#/components/schemas/oauth.OAuthClientCredentialsResponse" } } } }, - "404": { - "description": "Not Found", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" + "$ref": "#/components/schemas/errutil.UserError" } } } }, - "409": { - "description": "Conflict", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" + "$ref": "#/components/schemas/errutil.UserError" } } } @@ -33531,13 +34932,15 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_vendors.ArcadeSettingsRequest" + "$ref": "#/components/schemas/oauth.CreateOAuthClientRequest" } } } } - }, - "delete": { + } + }, + "/v1/platform/oauth/clients/{id}": { + "get": { "security": [ { "API Key": [] @@ -33549,15 +34952,14 @@ "Bearer Auth": [] } ], - "description": "Removes vendor settings.", "tags": [ - "mcp_vendors" + "oauth" ], - "summary": "Delete vendor settings", + "summary": "Get an OAuth client", "parameters": [ { - "description": "Vendor slug (e.g. arcade)", - "name": "vendor_slug", + "description": "Client UUID", + "name": "id", "in": "path", "required": true, "schema": { @@ -33571,47 +34973,69 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_vendors.ArcadeSettingsResponse" + "$ref": "#/components/schemas/oauth.OAuthClientView" } } } }, - "401": { - "description": "Unauthorized", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" + "$ref": "#/components/schemas/errutil.UserError" } } } + } + }, + "x-public": true + }, + "delete": { + "security": [ + { + "API Key": [] }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" - } - } + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "tags": [ + "oauth" + ], + "summary": "Delete an OAuth client", + "parameters": [ + { + "description": "Client UUID", + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" } + } + ], + "responses": { + "204": { + "description": "No Content" }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" + "$ref": "#/components/schemas/errutil.UserError" } } } } }, "x-public": true - } - }, - "/v1/platform/mcp-vendors/{vendor_slug}/tools": { - "get": { + }, + "patch": { "security": [ { "API Key": [] @@ -33623,38 +35047,19 @@ "Bearer Auth": [] } ], - "description": "Returns the tool catalog for this vendor.", "tags": [ - "mcp_vendors" + "oauth" ], - "summary": "List tools for a vendor", + "summary": "Update an OAuth client", "parameters": [ { - "description": "Vendor slug (e.g. arcade)", - "name": "vendor_slug", + "description": "Client UUID", + "name": "id", "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": { @@ -33663,27 +35068,91 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_vendors.ListVendorToolsResponse" + "$ref": "#/components/schemas/oauth.OAuthClientView" } } } }, - "401": { - "description": "Unauthorized", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" + "$ref": "#/components/schemas/errutil.UserError" } } } }, - "403": { - "description": "Forbidden", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" + "$ref": "#/components/schemas/errutil.UserError" + } + } + } + } + }, + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oauth.UpdateOAuthClientRequest" + } + } + } + } + } + }, + "/v1/platform/oauth/clients/{id}/rotate-secret": { + "post": { + "security": [ + { + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "description": "Generates a new client secret for a confidential client, invalidating the previous one. The new secret is shown only once.", + "tags": [ + "oauth" + ], + "summary": "Rotate an OAuth client secret", + "parameters": [ + { + "description": "Client UUID", + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oauth.OAuthClientCredentialsResponse" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errutil.UserError" } } } @@ -33693,7 +35162,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/mcp_vendors.ErrorResponse" + "$ref": "#/components/schemas/errutil.UserError" } } } @@ -34358,10 +35827,10 @@ "style": "form", "explode": true, "schema": { + "type": "array", "items": { "type": "string" }, - "type": "array", "title": "Name Like" } }, @@ -34372,10 +35841,10 @@ "style": "form", "explode": true, "schema": { + "type": "array", "items": { "type": "string" }, - "type": "array", "title": "Email Like" } }, @@ -34386,10 +35855,10 @@ "style": "form", "explode": true, "schema": { + "type": "array", "items": { "type": "string" }, - "type": "array", "title": "Workspace Name Like" } }, @@ -34400,10 +35869,10 @@ "style": "form", "explode": true, "schema": { + "type": "array", "items": { "type": "string" }, - "type": "array", "title": "Organization Role Like" } }, @@ -34414,10 +35883,10 @@ "style": "form", "explode": true, "schema": { + "type": "array", "items": { "type": "string" }, - "type": "array", "title": "Workspace Role Like" } } @@ -36718,10 +38187,10 @@ "style": "form", "explode": true, "schema": { + "type": "array", "items": { "type": "string" }, - "type": "array", "title": "Selects" } } @@ -36767,6 +38236,16 @@ } } }, + "501": { + "description": "no V2 backend configured and no V1 proxy fallback", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + }, "503": { "description": "service unavailable", "content": { @@ -36867,6 +38346,16 @@ } } }, + "501": { + "description": "no V2 backend configured and no V1 proxy fallback", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + }, "503": { "description": "service unavailable", "content": { @@ -37053,7 +38542,7 @@ "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.", + "description": "**Alpha:** The request and response contract may change;\nReturns one run by ID for the given session. Use the `selects` query parameter (repeatable) to select fields to return.", "tags": [ "runs" ], @@ -37095,6 +38584,7 @@ "style": "form", "explode": true, "schema": { + "type": "array", "items": { "enum": [ "ID", @@ -37139,20 +38629,19 @@ "ATTACHMENTS", "THREAD_EVALUATION_TIME", "IS_IN_DATASET", + "LAST_QUEUED_AT", "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.", + "description": "`start_time` is the run's `start_time` (RFC3339 date-time). Providing it speeds up retrieval.", "name": "start_time", "in": "query", - "required": true, "schema": { "type": "string", "format": "date-time", @@ -37231,6 +38720,16 @@ } } }, + "501": { + "description": "not implemented", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + }, "503": { "description": "service unavailable", "content": { @@ -37370,6 +38869,217 @@ } } }, + "/v2/runs/{run_id}/url": { + "get": { + "security": [ + { + "API Key": [], + "Tenant ID": [] + }, + { + "Bearer Auth": [], + "Tenant ID": [] + } + ], + "description": "Returns the URL to view a specific run in the LangSmith UI. The caller must supply the\nrun's project_id and trace_id as query parameters; start_time is optional.", + "tags": [ + "runs" + ], + "summary": "Get the LangSmith UI URL for a run", + "parameters": [ + { + "description": "Run UUID", + "name": "run_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "description": "Project (session) UUID", + "name": "project_id", + "in": "query", + "required": true, + "schema": { + "type": "string", + "title": "Project Id" + } + }, + { + "description": "Trace UUID", + "name": "trace_id", + "in": "query", + "required": true, + "schema": { + "type": "string", + "title": "Trace Id" + } + }, + { + "description": "Run start time in RFC3339 format; omit if unknown", + "name": "start_time", + "in": "query", + "schema": { + "type": "string", + "title": "Start Time" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/query.RunURLResponse" + } + } + } + }, + "400": { + "description": "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", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + }, + "404": { + "description": "project not found or does not belong to this workspace", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + } + }, + "x-public": true + } + }, + "/v2/runs/{trace_id}/share": { + "delete": { + "security": [ + { + "API Key": [] + }, + { + "Tenant ID": [] + }, + { + "Bearer Auth": [] + } + ], + "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": [ + "runs" + ], + "summary": "Unshare a run", + "parameters": [ + { + "description": "Trace root UUID", + "name": "trace_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + }, + "413": { + "description": "Request Entity Too Large", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/shared.ProblemDetails" + } + } + } + } + }, + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/share.DeleteShareTokenRequestBody" + } + } + } + } + } + }, "/v2/sandboxes/boxes": { "get": { "security": [ @@ -37439,6 +39149,20 @@ "title": "Created By" } }, + { + "description": "Filter by label. Repeatable; all must match. Use 'key' to match on key presence or 'key=value' for equality.", + "name": "label", + "in": "query", + "style": "form", + "explode": true, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Label" + } + }, { "description": "Sort column (name, status, created_at)", "name": "sort_by", @@ -38821,6 +40545,20 @@ "title": "Created By" } }, + { + "description": "Filter by label. Repeatable; all must match. Use 'key' to match on key presence or 'key=value' for equality.", + "name": "label", + "in": "query", + "style": "form", + "explode": true, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Label" + } + }, { "description": "Sort column (name, status, created_at)", "name": "sort_by", @@ -38885,8 +40623,241 @@ } }, "x-public": true - }, - "post": { + }, + "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", + "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.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" + } + } + } + } + }, + "x-public": true + }, + "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" + } + } + } + } + }, + "x-public": true + } + }, + "/v2/sandboxes/usage": { + "get": { "security": [ { "API Key": [] @@ -38896,41 +40867,23 @@ }, { "Bearer Auth": [] + }, + { + "X-Service-Key": [] } ], - "description": "Create a snapshot from a Docker image (async build).", + "description": "Get current sandbox resource usage and quota limits for the workspace", "tags": [ "sandboxes" ], - "summary": "Create a snapshot", - "parameters": [], + "summary": "Get sandbox resource usage", "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", + "200": { + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/sandboxes.ErrorResponse" + "$ref": "#/components/schemas/sandboxes.UsageResponse" } } } @@ -38947,19 +40900,10 @@ } }, "x-public": true, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.CreateSnapshotPayload" - } - } - } - } + "parameters": [] } }, - "/v2/sandboxes/snapshots/{snapshot_id}": { + "/v2/sandboxes/{sandbox_id}/download": { "get": { "security": [ { @@ -38972,32 +40916,35 @@ "Bearer Auth": [] } ], - "description": "Get a sandbox snapshot by ID.", + "description": "Download file contents from a sandbox filesystem path.", "tags": [ "sandboxes" ], - "summary": "Get a snapshot", + "summary": "Download a sandbox file", "parameters": [ { - "description": "Snapshot UUID", - "name": "snapshot_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", + "title": "Path" + } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/sandboxes.SnapshotResponse" - } - } - } + "description": "File content" }, "400": { "description": "Bad Request", @@ -39041,8 +40988,10 @@ } }, "x-public": true - }, - "delete": { + } + }, + "/v2/sandboxes/{sandbox_id}/execute": { + "post": { "security": [ { "API Key": [] @@ -39054,15 +41003,15 @@ "Bearer Auth": [] } ], - "description": "Delete a snapshot by ID. The underlying storage is reclaimed asynchronously.", + "description": "Execute a command inside a sandbox and return stdout, stderr, and exit code.", "tags": [ "sandboxes" ], - "summary": "Delete a snapshot", + "summary": "Execute a sandbox command", "parameters": [ { - "description": "Snapshot UUID", - "name": "snapshot_id", + "description": "Sandbox ID or name", + "name": "sandbox_id", "in": "path", "required": true, "schema": { @@ -39071,8 +41020,15 @@ } ], "responses": { - "204": { - "description": "Snapshot deleted" + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.ExecResponse" + } + } + } }, "400": { "description": "Bad Request", @@ -39115,57 +41071,20 @@ } } }, - "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" - } - } - } - }, - "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.ExecRequest" } } } - }, - "x-public": true, - "parameters": [] + } } }, - "/v2/sandboxes/{sandbox_id}/download": { + "/v2/sandboxes/{sandbox_id}/execute/ws": { "get": { "security": [ { @@ -39178,11 +41097,11 @@ "Bearer Auth": [] } ], - "description": "Download file contents from a sandbox filesystem path.", + "description": "Open a WebSocket connection for streaming command execution inside a sandbox.", "tags": [ "sandboxes" ], - "summary": "Download a sandbox file", + "summary": "Execute a sandbox command over WebSocket", "parameters": [ { "description": "Sandbox ID or name", @@ -39192,21 +41111,11 @@ "schema": { "type": "string" } - }, - { - "description": "File path to download", - "name": "path", - "in": "query", - "required": true, - "schema": { - "type": "string", - "title": "Path" - } } ], "responses": { - "200": { - "description": "File content" + "101": { + "description": "WebSocket upgrade" }, "400": { "description": "Bad Request", @@ -39252,7 +41161,7 @@ "x-public": true } }, - "/v2/sandboxes/{sandbox_id}/execute": { + "/v2/sandboxes/{sandbox_id}/glob": { "post": { "security": [ { @@ -39265,11 +41174,11 @@ "Bearer Auth": [] } ], - "description": "Execute a command inside a sandbox and return stdout, stderr, and exit code.", + "description": "Find files under a root path matching a glob pattern (supports **). Entries are returned in lexical order by path.", "tags": [ "sandboxes" ], - "summary": "Execute a sandbox command", + "summary": "Glob a sandbox filesystem", "parameters": [ { "description": "Sandbox ID or name", @@ -39287,7 +41196,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/sandboxes.ExecResponse" + "$ref": "#/components/schemas/sandboxes.GlobResponse" } } } @@ -39339,15 +41248,15 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/sandboxes.ExecRequest" + "$ref": "#/components/schemas/sandboxes.GlobRequest" } } } } } }, - "/v2/sandboxes/{sandbox_id}/execute/ws": { - "get": { + "/v2/sandboxes/{sandbox_id}/grep": { + "post": { "security": [ { "API Key": [] @@ -39359,11 +41268,11 @@ "Bearer Auth": [] } ], - "description": "Open a WebSocket connection for streaming command execution inside a sandbox.", + "description": "Search files under a root path for a literal text pattern (not a regex).", "tags": [ "sandboxes" ], - "summary": "Execute a sandbox command over WebSocket", + "summary": "Grep a sandbox filesystem", "parameters": [ { "description": "Sandbox ID or name", @@ -39376,8 +41285,15 @@ } ], "responses": { - "101": { - "description": "WebSocket upgrade" + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.GrepResponse" + } + } + } }, "400": { "description": "Bad Request", @@ -39420,7 +41336,17 @@ } } }, - "x-public": true + "x-public": true, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sandboxes.GrepRequest" + } + } + } + } } }, "/v2/sandboxes/{sandbox_id}/tunnel": { @@ -39793,6 +41719,7 @@ "style": "form", "explode": true, "schema": { + "type": "array", "items": { "enum": [ "TURNS", @@ -39815,7 +41742,6 @@ ], "type": "string" }, - "type": "array", "title": "Selects" } }, @@ -39977,10 +41903,10 @@ "name": "page_size", "in": "query", "schema": { - "minimum": 1, "type": "integer", "maximum": 100, "default": 20, + "minimum": 1, "title": "Page Size" } }, @@ -40006,6 +41932,7 @@ "style": "form", "explode": true, "schema": { + "type": "array", "items": { "enum": [ "THREAD_ID", @@ -40020,6 +41947,9 @@ "FIRST_TOKEN_TIME", "INPUTS_PREVIEW", "OUTPUTS_PREVIEW", + "INPUTS", + "OUTPUTS", + "ERROR", "PROMPT_COST", "COMPLETION_COST", "TOTAL_COST", @@ -40032,7 +41962,6 @@ ], "type": "string" }, - "type": "array", "title": "Selects" } } @@ -40347,6 +42276,7 @@ "style": "form", "explode": true, "schema": { + "type": "array", "items": { "enum": [ "ID", @@ -40391,12 +42321,12 @@ "ATTACHMENTS", "THREAD_EVALUATION_TIME", "IS_IN_DATASET", + "LAST_QUEUED_AT", "SHARE_URL", "FEEDBACK_STATS" ], "type": "string" }, - "type": "array", "title": "Selects" } } @@ -42794,6 +44724,7 @@ "delete_tracer_sessions", "delete_runs", "share_run", + "unshare_run", "create_dataset", "create_csv_dataset", "create_experiment_via_upload", @@ -42882,6 +44813,10 @@ "trigger_forge_configuration", "add_annotation_queue_reviewer", "remove_annotation_queue_reviewer", + "add_items_to_annotation_queue", + "delete_annotation_queue_item", + "update_annotation_queue_item", + "get_annotation_queue_items", "submit_nps_response", "create_mcp_server", "update_mcp_server", @@ -42916,6 +44851,7 @@ "update_gateway_policy", "delete_gateway_policy", "invoke_gateway", + "purchase_prepaid_gateway_provider_credits", "create_sandbox_proxy_profile", "update_sandbox_proxy_profile", "delete_sandbox_proxy_profile", @@ -42943,6 +44879,7 @@ "update_sandbox_registry", "delete_sandbox_registry", "create_data_plane", + "delete_data_plane", "create_annotation_queue", "populate_annotation_queue", "delete_annotation_queue", @@ -42954,6 +44891,7 @@ "delete_annotation_queue_run", "delete_annotation_queue_runs", "create_annotation_queue_run_status", + "create_annotation_queue_item_status", "login", "send_sso_email_confirmation", "confirm_sso_user_email", @@ -43086,8 +45024,10 @@ "stream_feedback_delta", "read_comparative_experiments", "stream_grouped_experiments", + "get_run_url", "query_run", "query_runs", + "batch_query_runs", "query_trace", "query_traces", "query_trace_messages", @@ -43115,10 +45055,16 @@ "get_self_hosted_customer", "get_provisioned_saas_org", "update_provisioned_saas_org", + "create_oauth_client", + "update_oauth_client", + "delete_oauth_client", + "rotate_oauth_client_secret", + "revoke_oauth_grant", "test_op_generic" ], "title": "AuditLogOperation", - "description": "Operations that are logged in audit_logs database table." + "description": "Operations that are logged in audit_logs database table.", + "x-extensible-enum": true }, "AuthProvider": { "type": "string", @@ -43307,43 +45253,6 @@ "type": "object", "title": "BasicAuthUserPatch" }, - "BatchIngestConfig": { - "properties": { - "use_multipart_endpoint": { - "type": "boolean", - "title": "Use Multipart Endpoint", - "default": true - }, - "scale_up_qsize_trigger": { - "type": "integer", - "title": "Scale Up Qsize Trigger", - "default": 1000 - }, - "scale_up_nthreads_limit": { - "type": "integer", - "title": "Scale Up Nthreads Limit", - "default": 16 - }, - "scale_down_nempty_trigger": { - "type": "integer", - "title": "Scale Down Nempty Trigger", - "default": 4 - }, - "size_limit": { - "type": "integer", - "title": "Size Limit", - "default": 100 - }, - "size_limit_bytes": { - "type": "integer", - "title": "Size Limit Bytes", - "default": 20971520 - } - }, - "type": "object", - "title": "BatchIngestConfig", - "description": "Batch ingest config." - }, "BodyParamsForRunSchema": { "properties": { "id": { @@ -45177,14 +47086,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." @@ -46450,7 +48362,16 @@ "title": "Index" }, "chart_type": { - "$ref": "#/components/schemas/CustomChartType" + "type": "string", + "enum": [ + "line", + "bar", + "table", + "kpi", + "top-k", + "pie" + ], + "title": "Chart Type" }, "series": { "items": { @@ -46528,6 +48449,66 @@ ], "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": { @@ -46733,7 +48714,8 @@ "completion_tokens", "total_cost", "prompt_cost", - "completion_cost" + "completion_cost", + "feedback_score" ], "title": "CustomChartMetricField" }, @@ -46797,6 +48779,9 @@ { "$ref": "#/components/schemas/CustomChartMetricCount" }, + { + "$ref": "#/components/schemas/CustomChartFeedbackScoreMetricScalar" + }, { "$ref": "#/components/schemas/CustomChartMetricScalar" }, @@ -46811,6 +48796,9 @@ { "$ref": "#/components/schemas/CustomChartMetricCount" }, + { + "$ref": "#/components/schemas/CustomChartFeedbackScoreMetricScalar" + }, { "$ref": "#/components/schemas/CustomChartMetricScalar" }, @@ -46841,6 +48829,9 @@ { "$ref": "#/components/schemas/CustomChartMetricCount" }, + { + "$ref": "#/components/schemas/CustomChartFeedbackScoreMetricScalar" + }, { "$ref": "#/components/schemas/CustomChartMetricScalar" }, @@ -46855,6 +48846,9 @@ { "$ref": "#/components/schemas/CustomChartMetricCount" }, + { + "$ref": "#/components/schemas/CustomChartFeedbackScoreMetricScalar" + }, { "$ref": "#/components/schemas/CustomChartMetricScalar" }, @@ -46961,7 +48955,16 @@ "title": "Index" }, "chart_type": { - "$ref": "#/components/schemas/CustomChartType" + "type": "string", + "enum": [ + "line", + "bar", + "table", + "kpi", + "top-k", + "pie" + ], + "title": "Chart Type" }, "section_id": { "type": "string", @@ -47012,6 +49015,18 @@ "type": "string", "title": "Name" }, + "metadata": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, "filters": { "anyOf": [ { @@ -47070,6 +49085,9 @@ { "$ref": "#/components/schemas/CustomChartMetricCount" }, + { + "$ref": "#/components/schemas/CustomChartFeedbackScoreMetricScalar" + }, { "$ref": "#/components/schemas/CustomChartMetricScalar" }, @@ -47156,6 +49174,18 @@ "type": "string", "title": "Name" }, + "metadata": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, "filters": { "anyOf": [ { @@ -47214,6 +49244,9 @@ { "$ref": "#/components/schemas/CustomChartMetricCount" }, + { + "$ref": "#/components/schemas/CustomChartFeedbackScoreMetricScalar" + }, { "$ref": "#/components/schemas/CustomChartMetricScalar" }, @@ -47300,6 +49333,18 @@ "type": "string", "title": "Name" }, + "metadata": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, "filters": { "anyOf": [ { @@ -47358,6 +49403,9 @@ { "$ref": "#/components/schemas/CustomChartMetricCount" }, + { + "$ref": "#/components/schemas/CustomChartFeedbackScoreMetricScalar" + }, { "$ref": "#/components/schemas/CustomChartMetricScalar" }, @@ -47485,6 +49533,18 @@ "type": "string", "title": "Name" }, + "metadata": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, "filters": { "anyOf": [ { @@ -47543,6 +49603,9 @@ { "$ref": "#/components/schemas/CustomChartMetricCount" }, + { + "$ref": "#/components/schemas/CustomChartFeedbackScoreMetricScalar" + }, { "$ref": "#/components/schemas/CustomChartMetricScalar" }, @@ -47630,7 +49693,8 @@ "table", "kpi", "top-k", - "pie" + "pie", + "text" ], "title": "CustomChartType", "description": "Enum for custom chart types." @@ -47764,6 +49828,20 @@ "default": { "__missing__": "__missing__" } + }, + "markdown": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/Missing" + } + ], + "title": "Markdown", + "default": { + "__missing__": "__missing__" + } } }, "type": "object", @@ -48010,7 +50088,26 @@ }, "charts": { "items": { - "$ref": "#/components/schemas/SingleCustomChartResponse" + "oneOf": [ + { + "$ref": "#/components/schemas/SingleCustomChartResponse" + }, + { + "$ref": "#/components/schemas/CustomTextBlock" + } + ], + "discriminator": { + "propertyName": "chart_type", + "mapping": { + "bar": "#/components/schemas/SingleCustomChartResponse", + "kpi": "#/components/schemas/SingleCustomChartResponse", + "line": "#/components/schemas/SingleCustomChartResponse", + "pie": "#/components/schemas/SingleCustomChartResponse", + "table": "#/components/schemas/SingleCustomChartResponse", + "text": "#/components/schemas/CustomTextBlock", + "top-k": "#/components/schemas/SingleCustomChartResponse" + } + } }, "type": "array", "title": "Charts" @@ -48028,6 +50125,16 @@ } ], "title": "Sub Sections" + }, + "layout": { + "anyOf": [ + { + "$ref": "#/components/schemas/DashboardLayout-Output" + }, + { + "type": "null" + } + ] } }, "type": "object", @@ -48253,6 +50360,23 @@ "default": { "__missing__": "__missing__" } + }, + "layout": { + "anyOf": [ + { + "$ref": "#/components/schemas/DashboardLayout-Input" + }, + { + "$ref": "#/components/schemas/Missing" + }, + { + "type": "null" + } + ], + "title": "Layout", + "default": { + "__missing__": "__missing__" + } } }, "type": "object", @@ -48288,24 +50412,146 @@ "type": "object", "title": "CustomChartsSectionsCloneRequest" }, - "CustomerInfo": { + "CustomTextBlock": { "properties": { - "customer_id": { + "id": { "type": "string", - "title": "Customer Id" + "format": "uuid", + "title": "Id" }, - "customer_name": { + "chart_type": { "type": "string", - "title": "Customer Name" + "const": "text", + "title": "Chart Type" + }, + "markdown": { + "type": "string", + "title": "Markdown" + }, + "index": { + "type": "integer", + "title": "Index" + }, + "metadata": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" } }, "type": "object", "required": [ - "customer_id", - "customer_name" + "id", + "chart_type", + "markdown", + "index" + ], + "title": "CustomTextBlock" + }, + "CustomTextBlockCreate": { + "properties": { + "index": { + "anyOf": [ + { + "type": "integer", + "maximum": 100.0, + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Index" + }, + "chart_type": { + "type": "string", + "const": "text", + "title": "Chart Type" + }, + "section_id": { + "type": "string", + "format": "uuid", + "title": "Section Id" + }, + "metadata": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, + "markdown": { + "type": "string", + "title": "Markdown" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "chart_type", + "section_id", + "markdown" + ], + "title": "CustomTextBlockCreate" + }, + "CustomTextBlockResponse": { + "properties": { + "id": { + "type": "string", + "format": "uuid", + "title": "Id" + }, + "chart_type": { + "type": "string", + "const": "text", + "title": "Chart Type" + }, + "markdown": { + "type": "string", + "title": "Markdown" + }, + "index": { + "type": "integer", + "title": "Index" + }, + "metadata": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, + "section_id": { + "type": "string", + "format": "uuid", + "title": "Section Id" + } + }, + "type": "object", + "required": [ + "id", + "chart_type", + "markdown", + "index", + "section_id" ], - "title": "CustomerInfo", - "description": "Customer info." + "title": "CustomTextBlockResponse" }, "CustomerVisiblePlanInfo": { "properties": { @@ -48338,6 +50584,148 @@ "title": "CustomerVisiblePlanInfo", "description": "Customer visible plan information." }, + "DashboardBreakpointLayout-Input": { + "properties": { + "rows": { + "items": { + "$ref": "#/components/schemas/DashboardLayoutRow" + }, + "type": "array", + "title": "Rows" + } + }, + "type": "object", + "required": [ + "rows" + ], + "title": "DashboardBreakpointLayout" + }, + "DashboardBreakpointLayout-Output": { + "properties": { + "rows": { + "items": { + "$ref": "#/components/schemas/DashboardLayoutRow" + }, + "type": "array", + "title": "Rows" + } + }, + "type": "object", + "required": [ + "rows" + ], + "title": "DashboardBreakpointLayout" + }, + "DashboardLayout-Input": { + "properties": { + "version": { + "type": "integer", + "const": 1, + "title": "Version" + }, + "breakpoints": { + "$ref": "#/components/schemas/DashboardLayoutBreakpoints-Input" + } + }, + "type": "object", + "required": [ + "version", + "breakpoints" + ], + "title": "DashboardLayout" + }, + "DashboardLayout-Output": { + "properties": { + "version": { + "type": "integer", + "const": 1, + "title": "Version" + }, + "breakpoints": { + "$ref": "#/components/schemas/DashboardLayoutBreakpoints-Output" + } + }, + "type": "object", + "required": [ + "version", + "breakpoints" + ], + "title": "DashboardLayout" + }, + "DashboardLayoutBreakpoints-Input": { + "properties": { + "sm": { + "$ref": "#/components/schemas/DashboardBreakpointLayout-Input" + }, + "md": { + "$ref": "#/components/schemas/DashboardBreakpointLayout-Input" + } + }, + "type": "object", + "required": [ + "sm", + "md" + ], + "title": "DashboardLayoutBreakpoints" + }, + "DashboardLayoutBreakpoints-Output": { + "properties": { + "sm": { + "$ref": "#/components/schemas/DashboardBreakpointLayout-Output" + }, + "md": { + "$ref": "#/components/schemas/DashboardBreakpointLayout-Output" + } + }, + "type": "object", + "required": [ + "sm", + "md" + ], + "title": "DashboardLayoutBreakpoints" + }, + "DashboardLayoutItem": { + "properties": { + "chart_id": { + "type": "string", + "format": "uuid", + "title": "Chart Id" + }, + "width_units": { + "type": "integer", + "minimum": 20.0, + "title": "Width Units" + } + }, + "type": "object", + "required": [ + "chart_id", + "width_units" + ], + "title": "DashboardLayoutItem" + }, + "DashboardLayoutRow": { + "properties": { + "height_units": { + "type": "integer", + "title": "Height Units" + }, + "items": { + "items": { + "$ref": "#/components/schemas/DashboardLayoutItem" + }, + "type": "array", + "minItems": 1, + "title": "Items" + } + }, + "type": "object", + "required": [ + "height_units", + "items" + ], + "title": "DashboardLayoutRow" + }, "DataType": { "type": "string", "enum": [ @@ -50953,6 +53341,17 @@ ], "title": "Start Time" }, + "feedback_thread_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Feedback Thread Id" + }, "extend_trace_retention": { "type": "boolean", "title": "Extend Trace Retention", @@ -53548,7 +55947,8 @@ "lg_run_count", "responses_per_second", "error_responses_per_second", - "p95_latency" + "p95_latency", + "run_queue_wait_time" ], "title": "HostProjectChartMetric", "description": "LGP Metrics you can chart." @@ -53901,69 +56301,6 @@ ], "title": "IdentityPatch" }, - "InfoGetResponse": { - "properties": { - "version": { - "type": "string", - "title": "Version" - }, - "git_sha": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Git Sha" - }, - "license_expiration_time": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } - ], - "title": "License Expiration Time" - }, - "batch_ingest_config": { - "$ref": "#/components/schemas/BatchIngestConfig", - "default": { - "use_multipart_endpoint": true, - "scale_up_qsize_trigger": 1000, - "scale_up_nthreads_limit": 16, - "scale_down_nempty_trigger": 4, - "size_limit": 100, - "size_limit_bytes": 20971520 - } - }, - "instance_flags": { - "additionalProperties": true, - "type": "object", - "title": "Instance Flags" - }, - "customer_info": { - "anyOf": [ - { - "$ref": "#/components/schemas/CustomerInfo" - }, - { - "type": "null" - } - ] - } - }, - "type": "object", - "required": [ - "version" - ], - "title": "InfoGetResponse", - "description": "The LangSmith server info." - }, "InputTokenDetails": { "properties": { "audio": { @@ -54796,6 +57133,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": { @@ -54947,8 +57395,7 @@ "OCSFApi": { "properties": { "operation": { - "$ref": "#/components/schemas/AuditLogOperation", - "x-extensible-enum": true + "$ref": "#/components/schemas/AuditLogOperation" } }, "type": "object", @@ -56438,6 +58885,22 @@ "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", @@ -57460,6 +59923,7 @@ "no_plan", "developer", "developer_01_2026", + "developer_07_2026", "plus", "plus_01_2026", "plus_07_2026", @@ -57467,9 +59931,11 @@ "developer_legacy", "plus_legacy", "free", + "free_07_2026", "enterprise_legacy", "startup", "startup_v0", + "startup_07_2026", "partner", "premier" ], @@ -58608,7 +61074,7 @@ "extend_trace_retention": { "type": "boolean", "title": "Extend Trace Retention", - "default": true + "default": false } }, "type": "object", @@ -61080,6 +63546,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", @@ -62935,6 +65413,11 @@ "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", @@ -63433,6 +65916,11 @@ "title": "Is Managed Evaluator", "default": false }, + "is_tracing_disabled": { + "type": "boolean", + "title": "Is Tracing Disabled", + "default": false + }, "extend_evaluator_trace_retention": { "anyOf": [ { @@ -63758,6 +66246,17 @@ "title": "Extend Only", "default": false }, + "is_tracing_disabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Tracing Disabled" + }, "extend_evaluator_trace_retention": { "anyOf": [ { @@ -64060,6 +66559,11 @@ "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", @@ -66772,6 +69276,18 @@ ], "title": "Select" }, + "reference_dataset_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Reference Dataset Id" + }, "include_details": { "type": "boolean", "title": "Include Details", @@ -67825,7 +70341,16 @@ "title": "Index" }, "chart_type": { - "$ref": "#/components/schemas/CustomChartType" + "type": "string", + "enum": [ + "line", + "bar", + "table", + "kpi", + "top-k", + "pie" + ], + "title": "Chart Type" }, "series": { "items": { @@ -69568,6 +72093,10 @@ "evaluator_count": { "type": "integer", "title": "Evaluator Count" + }, + "custom_app_count": { + "type": "integer", + "title": "Custom App Count" } }, "type": "object", @@ -69579,7 +72108,8 @@ "annotation_queue_count", "deployment_count", "dashboards_count", - "evaluator_count" + "evaluator_count", + "custom_app_count" ], "title": "TenantStats", "description": "Stats for a tenant." @@ -71957,6 +74487,29 @@ } } }, + "annotationqueues.AddAnnotationQueueItemsRequest": { + "type": "object", + "properties": { + "items": { + "type": "array", + "maxItems": 100, + "items": { + "$ref": "#/components/schemas/annotationqueues.AnnotationQueueItemInput" + } + } + } + }, + "annotationqueues.AddAnnotationQueueItemsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/annotationqueues.AnnotationQueueItem" + } + } + } + }, "annotationqueues.AddReviewerRequest": { "type": "object", "required": [ @@ -71976,6 +74529,250 @@ } } }, + "annotationqueues.AnnotationQueueItem": { + "type": "object", + "properties": { + "added_at": { + "type": "string" + }, + "id": { + "type": "string" + }, + "item_type": { + "$ref": "#/components/schemas/annotationqueues.AnnotationQueueItemType" + }, + "last_reviewed_time": { + "description": "LastReviewedTime is always present on the wire (null until reviewed).", + "type": "string" + }, + "queue_id": { + "type": "string" + }, + "run_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "source_proposed_example_id": { + "type": "string" + }, + "start_time": { + "type": "string" + }, + "thread_id": { + "type": "string" + } + } + }, + "annotationqueues.AnnotationQueueItemCountResponse": { + "type": "object", + "properties": { + "count": { + "type": "integer" + } + } + }, + "annotationqueues.AnnotationQueueItemInput": { + "type": "object", + "properties": { + "item_type": { + "$ref": "#/components/schemas/annotationqueues.AnnotationQueueItemType" + }, + "run_id": { + "description": "RUN fields", + "type": "string" + }, + "session_id": { + "description": "Shared optional SmithDB lookup coords. StartTime uses FlexTime because\nsmith-backend and ClickHouse emit naive UTC timestamps (no timezone\nsuffix) that strict *time.Time JSON unmarshaling rejects.", + "type": "string" + }, + "source_proposed_example_id": { + "description": "SourceProposedExampleID is usually unset. When Issues Board / Engine\nsuggested examples are added to a queue, the UI sets this to the\ntracer_session_issue_proposed_examples row so the queue item can point\nback at that suggestion.", + "type": "string" + }, + "start_time": { + "type": "string", + "format": "date-time" + }, + "thread_id": { + "description": "THREAD fields (thread_id + session_id required)", + "type": "string" + } + } + }, + "annotationqueues.AnnotationQueueItemListStatus": { + "type": "string", + "enum": [ + "needs_my_review", + "needs_others_review", + "archived" + ], + "x-enum-varnames": [ + "AnnotationQueueItemStatusNeedsMyReview", + "AnnotationQueueItemStatusNeedsOthersReview", + "AnnotationQueueItemStatusArchived" + ] + }, + "annotationqueues.AnnotationQueueItemPlacementResponse": { + "type": "object", + "properties": { + "cursor": { + "type": "string" + }, + "item_type": { + "$ref": "#/components/schemas/annotationqueues.AnnotationQueueItemType" + }, + "position": { + "type": "integer" + }, + "section": { + "$ref": "#/components/schemas/annotationqueues.AnnotationQueueItemListStatus" + } + } + }, + "annotationqueues.AnnotationQueueItemType": { + "type": "string", + "enum": [ + "RUN", + "THREAD" + ], + "x-enum-varnames": [ + "AnnotationQueueItemTypeRun", + "AnnotationQueueItemTypeThread" + ] + }, + "annotationqueues.AnnotationQueueListItem": { + "type": "object", + "properties": { + "added_at": { + "type": "string" + }, + "completed_by": { + "type": "array", + "items": { + "type": "string" + } + }, + "effective_added_at": { + "type": "string" + }, + "id": { + "type": "string" + }, + "item_type": { + "$ref": "#/components/schemas/annotationqueues.AnnotationQueueItemType" + }, + "last_reviewed_time": { + "description": "LastReviewedTime is always present on the wire (null until reviewed).", + "type": "string" + }, + "queue_id": { + "type": "string" + }, + "reserved_by": { + "type": "array", + "items": { + "type": "string" + } + }, + "run_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "source_proposed_example_id": { + "type": "string" + }, + "start_time": { + "type": "string" + }, + "thread_id": { + "type": "string" + } + } + }, + "annotationqueues.AnnotationQueueReviewStatus": { + "type": "string", + "enum": [ + "viewed", + "completed" + ], + "x-enum-varnames": [ + "AnnotationQueueReviewStatusViewed", + "AnnotationQueueReviewStatusCompleted" + ] + }, + "annotationqueues.CreateAnnotationQueueItemStatusRequest": { + "type": "object", + "properties": { + "override_added_at": { + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/annotationqueues.AnnotationQueueReviewStatus" + } + } + }, + "annotationqueues.CreateAnnotationQueueItemStatusResponse": { + "type": "object", + "properties": { + "is_archived": { + "type": "boolean" + }, + "override_added_at": { + "type": "string" + }, + "queue_item_id": { + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/annotationqueues.AnnotationQueueReviewStatus" + } + } + }, + "annotationqueues.DeleteAnnotationQueueItemsRequest": { + "type": "object", + "properties": { + "item_ids": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "annotationqueues.ListAnnotationQueueItemsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/annotationqueues.AnnotationQueueListItem" + } + }, + "next_cursor": { + "type": "string" + }, + "previous_cursor": { + "type": "string" + } + } + }, + "annotationqueues.PatchAnnotationQueueItemRequest": { + "type": "object", + "properties": { + "added_at": { + "type": "string", + "format": "date-time" + }, + "last_reviewed_time": { + "type": "string", + "format": "date-time" + } + } + }, "authn.OrganizationConfig": { "type": "object", "properties": { @@ -72055,6 +74852,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" @@ -72115,6 +74916,10 @@ "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" @@ -72127,6 +74932,10 @@ "description": "KvDatasetMessageSupport indicates whether to use the new messages experience for KV datasets.", "type": "boolean" }, + "langchain_provider_spend_limit_monthly": { + "description": "LangChainProviderSpendLimitMonthly caps monthly at-cost Connect via LangSmith\nspend (USD). nil means unset, -1 means unlimited, and any other non-positive\nvalue blocks usage.", + "type": "number" + }, "langgraph_deploy_own_cloud_enabled": { "description": "LangGraphDeployOwnCloudEnabled indicates whether the org can deploy LangGraph cloud to their own cloud.", "type": "boolean" @@ -72179,7 +74988,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": { @@ -72198,6 +75007,10 @@ "description": "MaxWorkspaces is the maximum number of workspaces allowed in this org. -1 means no limit.", "type": "integer" }, + "models_connect_via_langsmith_enabled": { + "description": "ModelsConnectViaLangSmithEnabled indicates whether the org can use Connect via\nLangSmith for /langchain gateway model requests. Defaults false.", + "type": "boolean" + }, "new_rule_evaluator_creation_version": { "description": "New Evaluator Version", "type": "integer" @@ -72802,6 +75615,23 @@ } } }, + "data_planes.ErrorResponse": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "error": { + "type": "string" + }, + "missing_permissions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/data_planes.MissingPermission" + } + } + } + }, "data_planes.ListPublicDataPlanesResponse": { "type": "object", "properties": { @@ -72813,6 +75643,20 @@ } } }, + "data_planes.MissingPermission": { + "type": "object", + "properties": { + "action": { + "type": "string" + }, + "decision": { + "type": "string" + }, + "resource_arn": { + "type": "string" + } + } + }, "data_planes.PublicDataPlane": { "type": "object", "properties": { @@ -73055,6 +75899,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" } } }, @@ -73073,6 +75921,9 @@ } } }, + "errutil.UserError": { + "type": "object" + }, "evaluators.BulkDeleteEvaluatorFailedItem": { "type": "object", "properties": { @@ -73159,6 +76010,10 @@ "commit_hash_or_tag": { "type": "string" }, + "playground_settings_id": { + "description": "Model Configuration ID", + "type": "string" + }, "prompt_repo_handle": { "type": "string" }, @@ -73197,6 +76052,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": [ @@ -73468,6 +76327,10 @@ "num_few_shot_examples": { "type": "integer" }, + "playground_settings_id": { + "description": "Model Configuration ID", + "type": "string" + }, "prompt_repo_handle": { "type": "string" }, @@ -73768,6 +76631,13 @@ "description": "CurrentSpendUSD is the spend in the policy's current window. Set for\nany spend_cap policy regardless of enabled state — disabled policies\nstill surface usage so users can see what would have been counted.\nNil for non-spend_cap policies or when the spend lookup failed.", "type": "number" }, + "current_usage": { + "description": "CurrentUsage is the consumed units in each configured limit's current\nwindow. Set for any rate_limit policy regardless of enabled state, one\nentry per limit in the config. Nil for non-rate_limit policies or when\nthe usage lookup failed.", + "type": "array", + "items": { + "$ref": "#/components/schemas/gateway_policies.RateLimitUsage" + } + }, "description": { "type": "string" }, @@ -73787,7 +76657,7 @@ "type": "string" }, "parent_policy_id": { - "description": "ParentPolicyID is set on materialized children of a default_spend_cap\nto the default's id, and cleared (NULL) only when an admin Create\nwith the same matchers takes over the materialized row. Update on a\nchild preserves the link; Delete on the parent cascade-soft-deletes\nevery child rather than detaching them.", + "description": "ParentPolicyID is set on materialized children of a default_spend_cap\nto the default's id. An explicit Update or a Create with the same\nmatchers clears the link and takes ownership of the materialized row.\nDelete on the parent cascade-soft-deletes children still attached.", "type": "string" }, "policy_type": { @@ -73807,6 +76677,53 @@ } } }, + "gateway_policies.RateLimitMetric": { + "type": "string", + "enum": [ + "requests", + "tokens" + ], + "x-enum-varnames": [ + "RateLimitMetricRequests", + "RateLimitMetricTokens" + ] + }, + "gateway_policies.RateLimitUsage": { + "type": "object", + "properties": { + "metric": { + "description": "Metric is the counted usage dimension: requests or tokens.", + "allOf": [ + { + "$ref": "#/components/schemas/gateway_policies.RateLimitMetric" + } + ] + }, + "value": { + "description": "Value is the units consumed so far in the current window.", + "type": "integer" + }, + "window": { + "description": "Window is the time window the usage is measured over.", + "allOf": [ + { + "$ref": "#/components/schemas/gateway_policies.RateLimitWindow" + } + ] + } + } + }, + "gateway_policies.RateLimitWindow": { + "type": "string", + "enum": [ + "minute", + "hour" + ], + "x-enum-varnames": [ + "RateLimitWindowMinute", + "RateLimitWindowHour" + ] + }, "gateway_policies.SearchGatewayPoliciesRequest": { "type": "object", "properties": { @@ -73960,6 +76877,84 @@ } } }, + "info.BatchIngestConfig": { + "type": "object", + "properties": { + "scale_down_nempty_trigger": { + "type": "integer" + }, + "scale_up_nthreads_limit": { + "type": "integer" + }, + "scale_up_qsize_trigger": { + "type": "integer" + }, + "size_limit": { + "type": "integer" + }, + "size_limit_bytes": { + "type": "integer" + }, + "use_multipart_endpoint": { + "type": "boolean" + } + } + }, + "info.CustomerInfo": { + "type": "object", + "properties": { + "customer_id": { + "type": "string" + }, + "customer_name": { + "type": "string" + } + } + }, + "info.InfoGetResponse": { + "type": "object", + "properties": { + "batch_ingest_config": { + "$ref": "#/components/schemas/info.BatchIngestConfig" + }, + "customer_info": { + "$ref": "#/components/schemas/info.CustomerInfo" + }, + "git_sha": { + "type": "string" + }, + "instance_flags": { + "type": "object", + "additionalProperties": {} + }, + "license_expiration_time": { + "type": "string" + }, + "sdk_versions": { + "$ref": "#/components/schemas/info.SDKVersions" + }, + "version": { + "type": "string" + } + } + }, + "info.SDKVersions": { + "type": "object", + "properties": { + "max_go_sdk_version": { + "type": "string" + }, + "max_java_sdk_version": { + "type": "string" + }, + "max_js_sdk_version": { + "type": "string" + }, + "max_python_sdk_version": { + "type": "string" + } + } + }, "integrations.AgentBuilderIntegrationsPayload": { "type": "object", "properties": { @@ -74033,65 +77028,6 @@ } } }, - "issues_agent_usage.LCUSpendErrorResponse": { - "type": "object", - "properties": { - "error": { - "type": "string" - } - } - }, - "issues_agent_usage.LCUSpendItem": { - "type": "object", - "properties": { - "lcu_total": { - "type": "string" - }, - "lcu_unpriced_row_count": { - "type": "integer" - }, - "session_id": { - "type": "string" - }, - "session_name": { - "type": "string" - }, - "tenant_id": { - "type": "string" - }, - "tenant_name": { - "type": "string" - } - } - }, - "issues_agent_usage.LCUSpendResponse": { - "type": "object", - "properties": { - "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" - }, - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/issues_agent_usage.LCUSpendItem" - } - }, - "organization_id": { - "type": "string" - }, - "period_end": { - "type": "string" - }, - "period_start": { - "type": "string" - }, - "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" - } - } - }, "mcp_vendors.ArcadeAccountOrg": { "type": "object", "properties": { @@ -74421,6 +77357,32 @@ } } }, + "oauth.AuthorizedAppView": { + "type": "object", + "properties": { + "authorized_at": { + "type": "string" + }, + "client_id": { + "type": "string" + }, + "client_name": { + "type": "string" + }, + "client_uri": { + "type": "string" + }, + "logo_uri": { + "type": "string" + }, + "scopes": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, "oauth.ClientPublicMetadata": { "type": "object", "properties": { @@ -74535,6 +77497,48 @@ } } }, + "oauth.CreateOAuthClientRequest": { + "type": "object", + "properties": { + "allowed_scopes": { + "type": "array", + "items": { + "type": "string" + } + }, + "client_name": { + "type": "string" + }, + "client_type": { + "description": "\"public\" or \"confidential\"", + "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": { + "type": "string" + } + }, + "tos_uri": { + "type": "string" + } + } + }, "oauth.DeviceCodeResponse": { "type": "object", "properties": { @@ -74555,6 +77559,152 @@ } } }, + "oauth.OAuthClientCredentialsResponse": { + "type": "object", + "properties": { + "client": { + "$ref": "#/components/schemas/oauth.OAuthClientView" + }, + "client_secret": { + "type": "string" + } + } + }, + "oauth.OAuthClientListResponse": { + "type": "object", + "properties": { + "clients": { + "type": "array", + "items": { + "$ref": "#/components/schemas/oauth.OAuthClientView" + } + } + } + }, + "oauth.OAuthClientView": { + "type": "object", + "properties": { + "allowed_scopes": { + "type": "array", + "items": { + "type": "string" + } + }, + "client_id": { + "type": "string" + }, + "client_name": { + "type": "string" + }, + "client_type": { + "type": "string" + }, + "client_uri": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "disabled": { + "type": "boolean" + }, + "grant_types": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "string" + }, + "logo_uri": { + "type": "string" + }, + "policy_uri": { + "type": "string" + }, + "redirect_uris": { + "type": "array", + "items": { + "type": "string" + } + }, + "tos_uri": { + "type": "string" + }, + "updated_at": { + "type": "string" + } + } + }, + "oauth.OIDCProviderMetadata": { + "type": "object", + "properties": { + "authorization_endpoint": { + "type": "string" + }, + "claims_supported": { + "type": "array", + "items": { + "type": "string" + } + }, + "code_challenge_methods_supported": { + "type": "array", + "items": { + "type": "string" + } + }, + "grant_types_supported": { + "type": "array", + "items": { + "type": "string" + } + }, + "id_token_signing_alg_values_supported": { + "type": "array", + "items": { + "type": "string" + } + }, + "issuer": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "response_types_supported": { + "type": "array", + "items": { + "type": "string" + } + }, + "scopes_supported": { + "type": "array", + "items": { + "type": "string" + } + }, + "subject_types_supported": { + "type": "array", + "items": { + "type": "string" + } + }, + "token_endpoint": { + "type": "string" + }, + "token_endpoint_auth_methods_supported": { + "type": "array", + "items": { + "type": "string" + } + }, + "userinfo_endpoint": { + "type": "string" + } + } + }, "oauth.TokenErrorResponse": { "type": "object", "properties": { @@ -74575,6 +77725,9 @@ "expires_in": { "type": "integer" }, + "id_token": { + "type": "string" + }, "refresh_token": { "type": "string" }, @@ -74586,6 +77739,67 @@ } } }, + "oauth.UpdateOAuthClientRequest": { + "type": "object", + "properties": { + "allowed_scopes": { + "type": "array", + "items": { + "type": "string" + } + }, + "client_name": { + "type": "string" + }, + "client_uri": { + "type": "string" + }, + "disabled": { + "type": "boolean" + }, + "logo_uri": { + "type": "string" + }, + "policy_uri": { + "type": "string" + }, + "redirect_uris": { + "type": "array", + "items": { + "type": "string" + } + }, + "tos_uri": { + "type": "string" + } + } + }, + "oauth.UserinfoResponse": { + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "email_verified": { + "type": "boolean" + }, + "ls_org_id": { + "type": "string" + }, + "ls_org_name": { + "type": "string" + }, + "name": { + "type": "string" + }, + "picture": { + "type": "string" + }, + "sub": { + "type": "string" + } + } + }, "orgs.LinkedLoginMethod": { "type": "object", "properties": { @@ -74882,7 +78096,8 @@ "COMPLETION_COST_DETAILS", "PRICE_MODEL_ID", "TAGS", - "THREAD_EVALUATION_TIME" + "THREAD_EVALUATION_TIME", + "FEEDBACK_STATS" ] }, "example": [ @@ -75403,6 +78618,12 @@ "type": "boolean", "example": true }, + "last_queued_at": { + "description": "`last_queued_at` is the most recent time this run was added to an annotation queue.", + "type": "string", + "format": "date-time", + "example": "2024-01-15T10:31:00Z" + }, "latency_seconds": { "description": "`latency_seconds` is wall-clock duration from start to end in seconds.", "type": "number", @@ -75605,6 +78826,7 @@ "ATTACHMENTS", "THREAD_EVALUATION_TIME", "IS_IN_DATASET", + "LAST_QUEUED_AT", "SHARE_URL", "FEEDBACK_STATS" ], @@ -75651,6 +78873,7 @@ "RunSelectAttachments", "RunSelectThreadEvaluationTime", "RunSelectIsInDataset", + "RunSelectLastQueuedAt", "RunSelectShareURL", "RunSelectFeedbackStats" ] @@ -75689,6 +78912,14 @@ "RunTypeParser" ] }, + "query.RunURLResponse": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + } + }, "query.Trace": { "type": "object", "properties": { @@ -75833,6 +79064,39 @@ } } }, + "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": [ @@ -75884,6 +79148,20 @@ } } }, + "sandboxapi.GrepMatch": { + "type": "object", + "properties": { + "line": { + "type": "integer" + }, + "path": { + "type": "string" + }, + "text": { + "type": "string" + } + } + }, "sandboxapi.MountCacheSpec": { "type": "object", "properties": { @@ -75902,12 +79180,14 @@ "enum": [ "s3", "gcs", - "git" + "git", + "contexthub" ], "x-enum-varnames": [ "MountKindS3", "MountKindGCS", - "MountKindGit" + "MountKindGit", + "MountKindContextHub" ] }, "sandboxapi.MountSpec": { @@ -75921,6 +79201,9 @@ "cache": { "$ref": "#/components/schemas/sandboxapi.MountCacheSpec" }, + "contexthub": { + "$ref": "#/components/schemas/sandboxapi.ContextHubMountSpec" + }, "gcs": { "$ref": "#/components/schemas/sandboxapi.GCSMountSpec" }, @@ -75944,7 +79227,8 @@ "enum": [ "s3", "gcs", - "git" + "git", + "contexthub" ], "allOf": [ { @@ -75957,7 +79241,8 @@ "mapping": { "s3": "#/components/schemas/sandboxapi.S3BucketMountSpec", "gcs": "#/components/schemas/sandboxapi.GCSBucketMountSpec", - "git": "#/components/schemas/sandboxapi.GitRepoMountSpec" + "git": "#/components/schemas/sandboxapi.GitRepoMountSpec", + "contexthub": "#/components/schemas/sandboxapi.ContextHubRepoMountSpec" }, "propertyName": "type" }, @@ -75970,6 +79255,9 @@ }, { "$ref": "#/components/schemas/sandboxapi.GitRepoMountSpec" + }, + { + "$ref": "#/components/schemas/sandboxapi.ContextHubRepoMountSpec" } ] }, @@ -76109,6 +79397,14 @@ "description": "IncludeMemory, when true, captures a full VM memory snapshot\nalongside the filesystem clone. Only honored when the sandbox is running\nAND Checkpoint is omitted (i.e. a fresh in-VM checkpoint is requested).\nDefaults to false to keep snapshots small unless memory restore is\nexplicitly desired.", "type": "boolean" }, + "labels": { + "description": "Labels seed the captured snapshot's labels.", + "allOf": [ + { + "$ref": "#/components/schemas/sandboxes.Labels" + } + ] + }, "name": { "type": "string" } @@ -76159,6 +79455,14 @@ "idle_ttl_seconds": { "type": "integer" }, + "labels": { + "description": "Labels are free-form key/value metadata persisted with the sandbox and returned on reads. Labels from the source snapshot are inherited unless overridden here.", + "allOf": [ + { + "$ref": "#/components/schemas/sandboxes.Labels" + } + ] + }, "mem_bytes": { "type": "integer" }, @@ -76168,6 +79472,10 @@ "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" }, @@ -76206,6 +79514,14 @@ "fs_capacity_bytes": { "type": "integer" }, + "labels": { + "description": "Labels seed the snapshot's labels, overriding any label of the same key derived from the Docker image.", + "allOf": [ + { + "$ref": "#/components/schemas/sandboxes.Labels" + } + ] + }, "name": { "type": "string" }, @@ -76274,6 +79590,65 @@ } } }, + "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": [ @@ -76287,6 +79662,12 @@ "HeaderTypeWorkspaceSecret" ] }, + "sandboxes.Labels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, "sandboxes.ProxyAWSConfig": { "type": "object", "required": [ @@ -76389,6 +79770,13 @@ "enabled": { "type": "boolean" }, + "env_vars": { + "description": "EnvVars are plaintext env vars set for every command in the sandbox while this rule is enabled. Use them for tools that refuse to run unless a credential env var is present (e.g. gh needs GH_TOKEN) even though this rule injects the real credential on the wire — set a dummy value here so the command starts. Explicit per-sandbox env_vars win over these, and provider-managed (AWS/GCP) vars win over both.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, "gcp": { "$ref": "#/components/schemas/sandboxes.ProxyGCPConfig" }, @@ -76577,6 +79965,9 @@ "idle_ttl_seconds": { "type": "integer" }, + "labels": { + "$ref": "#/components/schemas/sandboxes.Labels" + }, "mem_bytes": { "type": "integer" }, @@ -76586,6 +79977,9 @@ "name": { "type": "string" }, + "preserve_memory_on_stop": { + "type": "boolean" + }, "proxy_config": { "$ref": "#/components/schemas/sandboxes.ProxyConfig" }, @@ -76692,6 +80086,9 @@ "image_digest": { "type": "string" }, + "labels": { + "$ref": "#/components/schemas/sandboxes.Labels" + }, "memory_snapshot_size_bytes": { "description": "MemorySnapshotSizeBytes is non-nil iff the snapshot was captured with\nVM memory state. A non-nil value is the canonical signal that this\nsnapshot can warm-restore from memory; nil means rootfs only.", "type": "integer" @@ -76992,6 +80389,17 @@ } } }, + "share.DeleteShareTokenRequestBody": { + "type": "object", + "properties": { + "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", @@ -77262,12 +80670,12 @@ "type": "string" }, "max_start_time": { - "description": "`max_start_time` is the exclusive 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" }, @@ -77491,6 +80899,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" @@ -77501,6 +80914,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" @@ -77517,6 +80934,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" @@ -77566,7 +80987,7 @@ "type": "integer" }, "trace_id": { - "description": "`trace_id` is the UUID of this trace (the root run). Always present.", + "description": "`trace_id` is the UUID of this trace (the root run). Returned when `TRACE_ID` is in `selects`,\nor when `selects` is omitted entirely (sole fallback field).", "type": "string", "format": "uuid", "example": "018e4c7e-a9fb-7ef0-a5b6-6ea3a82e9327" @@ -77588,6 +81009,9 @@ "FIRST_TOKEN_TIME", "INPUTS_PREVIEW", "OUTPUTS_PREVIEW", + "INPUTS", + "OUTPUTS", + "ERROR", "PROMPT_COST", "COMPLETION_COST", "TOTAL_COST", @@ -77611,6 +81035,9 @@ "ThreadTraceSelectFirstTokenTime", "ThreadTraceSelectInputsPreview", "ThreadTraceSelectOutputsPreview", + "ThreadTraceSelectInputs", + "ThreadTraceSelectOutputs", + "ThreadTraceSelectError", "ThreadTraceSelectPromptCost", "ThreadTraceSelectCompletionCost", "ThreadTraceSelectTotalCost", @@ -77874,6 +81301,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" }, @@ -77897,6 +81328,9 @@ }, "updated_at": { "type": "string" + }, + "watching_since": { + "type": "string" } } }, @@ -77966,11 +81400,15 @@ "type": "string", "enum": [ "open", + "fixing", + "watching", "completed", "ignored" ], "x-enum-varnames": [ "StatusOpen", + "StatusFixing", + "StatusWatching", "StatusCompleted", "StatusIgnored" ] @@ -78189,6 +81627,13 @@ "id": { "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" + } + }, "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" @@ -78347,6 +81792,11 @@ "required": [ "git" ] + }, + { + "required": [ + "contexthub" + ] } ] } @@ -78398,6 +81848,11 @@ "required": [ "git" ] + }, + { + "required": [ + "contexthub" + ] } ] } @@ -78446,6 +81901,64 @@ "required": [ "gcs" ] + }, + { + "required": [ + "contexthub" + ] + } + ] + } + }, + "sandboxapi.ContextHubRepoMountSpec": { + "type": "object", + "required": [ + "id", + "mount_path", + "type", + "contexthub" + ], + "properties": { + "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" + ] } ] }