Files
wehub-resource-sync 5a558eb09e
TypeScript SDK Compatibility V1.x E2E Tests / Select Node version matrix (push) Has been cancelled
TypeScript SDK Compatibility V1.x E2E Tests / TypeScript SDK Compatibility V1.x E2E Tests Node ${{matrix.node_version}} (push) Has been cancelled
TypeScript SDK E2E Tests / TypeScript SDK E2E Tests Node ${{matrix.node_version}} (push) Has been cancelled
Opik Optimizer - E2E Tests / build-opik (push) Has been cancelled
TypeScript SDK Compatibility V1.x E2E Tests / build-opik (push) Has been cancelled
Python SDK E2E Tests / Select Python version matrix (push) Has been cancelled
Python SDK E2E Tests / Python SDK E2E Tests ${{matrix.python_version}} (push) Has been cancelled
Python SDK E2E Tests / build-opik (push) Has been cancelled
Python SDK Compatibility V1.x E2E Tests / Select Python version matrix (push) Has been cancelled
Python SDK Compatibility V1.x E2E Tests / Python SDK Compatibility V1.x E2E Tests ${{matrix.python_version}} (push) Has been cancelled
Python SDK Compatibility V1.x E2E Tests / build-opik (push) Has been cancelled
TypeScript SDK E2E Tests / Select Node version matrix (push) Has been cancelled
TypeScript SDK E2E Tests / build-opik (push) Has been cancelled
Opik Optimizer - E2E Tests / Opik Optimizer E2E Tests Python ${{matrix.python_version}} (push) Has been cancelled
Opik Optimizer - E2E Tests / Opik Optimizer Integration Smoke Tests (push) Has been cancelled
🐙 Code Quality / detect (push) Has been cancelled
🐙 Code Quality / lint (${{ matrix.leg.name }}) (push) Has been cancelled
🐙 Code Quality / summary (push) Has been cancelled
TypeScript SDK Library Integration Tests / Check Secrets (push) Has been cancelled
TypeScript SDK Library Integration Tests / opik-vercel (Vercel AI SDK / eve) (push) Has been cancelled
SDK Library Integration Tests Runner / Check Secrets (push) Has been cancelled
SDK Library Integration Tests Runner / Missed OpenAI API Key Warning (push) Has been cancelled
SDK Library Integration Tests Runner / Build (push) Has been cancelled
SDK Library Integration Tests Runner / openai_tests (push) Has been cancelled
SDK Library Integration Tests Runner / langchain_tests (push) Has been cancelled
SDK Library Integration Tests Runner / langchain_legacy_tests (push) Has been cancelled
SDK Library Integration Tests Runner / llama_index_tests (push) Has been cancelled
SDK Library Integration Tests Runner / anthropic_tests (push) Has been cancelled
SDK Library Integration Tests Runner / mistral_tests (push) Has been cancelled
SDK Library Integration Tests Runner / groq_tests (push) Has been cancelled
SDK Library Integration Tests Runner / aisuite_tests (push) Has been cancelled
SDK Library Integration Tests Runner / haystack_tests (push) Has been cancelled
SDK Library Integration Tests Runner / dspy_tests (push) Has been cancelled
SDK Library Integration Tests Runner / crewai_v0_tests (push) Has been cancelled
SDK Library Integration Tests Runner / crewai_v1_tests (push) Has been cancelled
SDK Library Integration Tests Runner / genai_tests (push) Has been cancelled
SDK Library Integration Tests Runner / adk_tests (push) Has been cancelled
SDK Library Integration Tests Runner / adk_legacy_1_3_0_tests (push) Has been cancelled
SDK Library Integration Tests Runner / evaluation_metrics_tests (push) Has been cancelled
SDK Library Integration Tests Runner / bedrock_tests (push) Has been cancelled
SDK Library Integration Tests Runner / litellm_tests (push) Has been cancelled
SDK Library Integration Tests Runner / harbor_tests (push) Has been cancelled
SDK Library Integration Tests Runner / Slack Notification (push) Has been cancelled
Lint Opik Helm Chart / render-equality (push) Has been cancelled
Opik Optimizer - Unit Tests / Opik Optimizer Unit Tests Python ${{matrix.python_version}} (push) Has been cancelled
Python BE E2E Tests / Python BE E2E (push) Has been cancelled
Python Backend Tests / run-python-backend-tests (push) Has been cancelled
Python SDK Unit Tests / Python SDK Unit Tests ${{matrix.python_version}} (push) Has been cancelled
Release Drafter / update_release_draft (push) Has been cancelled
SDK E2E Libraries Integration Tests / Check Secrets (push) Has been cancelled
SDK E2E Libraries Integration Tests / Missed OpenAI API Key Warning (push) Has been cancelled
SDK E2E Libraries Integration Tests / build-opik (push) Has been cancelled
SDK E2E Libraries Integration Tests / E2E Lib Integration Python ${{matrix.python_version}} (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-gemini) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-langchain) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-openai) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-otel) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-vercel) (push) Has been cancelled
TypeScript SDK Build & Publish / build-and-publish (push) Has been cancelled
TypeScript SDK Unit Tests / Test on Node ${{ matrix.node-version }} (push) Has been cancelled
Backend Tests / discover-tests (push) Has been cancelled
Backend Tests / ${{ matrix.name }} (push) Has been cancelled
Build and Publish SDK / build-and-publish (push) Has been cancelled
Build Opik Docker Images / set-version (push) Has been cancelled
Build Opik Docker Images / build-backend (push) Has been cancelled
Build Opik Docker Images / build-sandbox-executor-python (push) Has been cancelled
Build Opik Docker Images / build-python-backend (push) Has been cancelled
Build Opik Docker Images / build-frontend (push) Has been cancelled
Build Opik Docker Images / create-git-tag (push) Has been cancelled
ClickHouse Migration Cluster Check / validate-clickhouse-migrations (push) Has been cancelled
Docs - Publish / run (push) Has been cancelled
E2E Tests - Post Merge (v2) / 🧪 E2E v2 Tests (${{ github.event.inputs.tier || 't1' }}) (push) Has been cancelled
E2E Tests - Post Merge (v2) / 📢 Slack Notification (push) Has been cancelled
Frontend Unit Tests / Test on Node 20 (push) Has been cancelled
Guardrails E2E Tests / Select Python version matrix (push) Has been cancelled
Guardrails E2E Tests / Guardrails E2E Tests ${{matrix.python_version}} (push) Has been cancelled
Guardrails E2E Tests / 📢 Slack Notification (push) Has been cancelled
Guardrails Backend Unit Tests / Guardrails Backend Unit Tests (push) Has been cancelled
Guardrails Backend Unit Tests / 📢 Slack Notification (push) Has been cancelled
Lint Opik Helm Chart / lint-helm-chart (Helm v3.21.0) (push) Has been cancelled
Lint Opik Helm Chart / lint-helm-chart (Helm v4.2.0) (push) Has been cancelled
Lint Opik Helm Chart / unittest-helm-chart (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:25:44 +08:00

22428 lines
583 KiB
YAML

openapi: 3.1.0
info:
title: Opik REST API
description: "The Opik REST API is currently in beta and subject to change. If you\
\ have any questions or feedback about the APIs, please reach out on GitHub: https://github.com/comet-ml/opik.\n\
\nAll of the methods listed in this documentation are used by either the SDK or\
\ the UI to interact with the Opik server. As a result,\nthe methods have been\
\ optimized for these use-cases in mind. If you are looking for a method that\
\ is not listed above, please create\nand issue on GitHub or raise a PR!\n\nOpik\
\ includes two main deployment options that results in slightly different API\
\ usage:\n\n- **Self-hosted Opik instance:** You will simply need to specify the\
\ URL as `http://localhost:5173/api/<endpoint_path>` or similar. This is the default\
\ option for the docs.\n- **Opik Cloud:** You will need to specify the Opik API\
\ Key and Opik Workspace in the header. The format of the header should be:\n\n\
\ ```\n {\n \"Comet-Workspace\": \"your-workspace-name\",\n \"authorization\"\
: \"your-api-key\"\n }\n ```\n\n The full payload would therefore look like:\n\
\ \n ```\n curl -X GET 'https://www.comet.com/opik/api/v1/private/projects'\
\ \\\n -H 'Accept: application/json' \\\n -H 'Comet-Workspace: <your-workspace-name>'\
\ \\\n -H 'authorization: <your-api-key>'\n ```\n\n Do take note here that\
\ the authorization header value does not include the `Bearer ` prefix. To switch\
\ to using the Opik Cloud in the documentation, you can\n click on the edit button\
\ displayed when hovering over the `Base URL` displayed on the right hand side\
\ of the docs.\n"
contact:
name: Github Repository
url: https://github.com/comet-ml/opik
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
version: 1.0.0
servers:
- url: http://localhost:5173/api
description: Local server
- url: https://www.comet.com/opik/api
description: Opik Cloud
tags:
- name: MCP OAuth
description: MCP OAuth 2.1 Authorization Server resources
- name: System analytics queries
description: Internal endpoint to run Agent Insights free-form SQL
- name: System usage
description: System usage related resource
- name: Agent Configs
description: Agent configuration management
- name: Agent Insights Jobs
description: "Per-(workspace, project) Agent Insights report configuration"
- name: Agent Insights
description: Agent Insights report results
- name: Alerts
description: Alert resources
- name: Annotation Queues
description: Private annotation queue operations
- name: Assertion Results
description: Assertion result related resources
- name: Attachments
description: Attachments related resources
- name: Check
description: Access check resources
- name: Automation rule evaluators
description: Automation rule evaluators resource
- name: Chat Completions
description: Chat Completions related resources
- name: Dashboards
description: Workspace Dashboard resources
- name: Datasets
description: Dataset resources
- name: Environments
description: Environment related resources
- name: Experiments
description: Experiment resources
- name: Feedback-definitions
description: Feedback definitions related resources
- name: Guardrails
description: Guardrails related resources
- name: Insights Views
description: Insights View resources
- name: LLM Models
description: LLM model registry resources
- name: LlmProviderKey
description: LLM Provider Key
- name: Runners
description: Local runner management endpoints
- name: Manual Evaluation
description: "Manual evaluation resources for traces, threads, and spans"
- name: Ollama
description: Ollama provider configuration endpoints with OpenAI-compatible API
support.
- name: Ollie State
description: Ollie pod state persistence
- name: OpenTelemetry Ingestion
description: Resource to ingest Traces and Spans via OpenTelemetry
- name: Optimizations
description: Optimization resources
- name: Pairing
description: Pairing sessions for the `opik connect` and `opik endpoint` CLI commands
- name: Projects
description: Project related resources
- name: Prompts
description: Prompt resources
- name: Report Failures
description: Generic failure log for reports/jobs
- name: Reports
description: Ollie daily report management
- name: Retention Rules
description: Data retention rule management
- name: Service Toggles
description: Service Toggles resources
- name: Spans
description: Span related resources
- name: Traces
description: Trace related resources
- name: Welcome Wizard
description: Welcome wizard tracking resources
- name: Workspace permissions
description: Workspace permissions related resources
- name: Workspaces
description: Workspace related resources
- name: Redirect
description: Redirects for SDK generated links
paths:
/oauth/authorize:
get:
tags:
- MCP OAuth
summary: OAuth Authorization Endpoint
description: "OAuth 2.1 authorization endpoint (RFC 6749 §3.1). Validates the\
\ client and PKCE parameters, then redirects to the login or consent page"
operationId: authorize
parameters:
- name: client_id
in: query
required: true
schema:
minLength: 1
type: string
- name: redirect_uri
in: query
required: true
schema:
minLength: 1
type: string
- name: response_type
in: query
schema:
type: string
- name: code_challenge
in: query
schema:
type: string
- name: code_challenge_method
in: query
schema:
type: string
- name: resource
in: query
schema:
type: string
- name: state
in: query
schema:
type: string
responses:
"302":
description: "Redirect to login, consent, or client redirect_uri with an\
\ error"
post:
tags:
- MCP OAuth
summary: Submit Authorization Consent
description: "Submit the user's consent, issue an authorization code, and return\
\ the client redirect target"
operationId: consent
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ConsentRequest"
required: true
responses:
"200":
description: Consent response with the client redirect target
content:
application/json:
schema:
$ref: "#/components/schemas/ConsentResponse"
/oauth/authorize/context:
get:
tags:
- MCP OAuth
summary: Get Authorization Consent Context
description: "Get the client details, eligible workspaces, and a CSRF token\
\ used to render the consent screen"
operationId: getAuthorizeContext
parameters:
- name: client_id
in: query
required: true
schema:
minLength: 1
type: string
- name: redirect_uri
in: query
required: true
schema:
minLength: 1
type: string
responses:
"200":
description: Authorization consent context
content:
application/json:
schema:
$ref: "#/components/schemas/AuthorizeContext"
/.well-known/oauth-authorization-server:
get:
tags:
- MCP OAuth
summary: Get OAuth Authorization Server Metadata
description: Get OAuth 2.1 Authorization Server Metadata (RFC 8414)
operationId: getOAuthAuthorizationServerMetadata
responses:
"200":
description: Authorization Server Metadata
content:
application/json:
schema:
$ref: "#/components/schemas/AuthorizationServerMetadata"
/oauth/register:
post:
tags:
- MCP OAuth
summary: OAuth Dynamic Client Registration Endpoint
description: OAuth 2.0 Dynamic Client Registration (RFC 7591). Registers a public
client for the MCP OAuth flow; throttled per source IP
operationId: registerOAuthClient
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ClientRegistrationRequest"
required: true
responses:
"201":
description: Registered client metadata
content:
application/json:
schema:
$ref: "#/components/schemas/ClientRegistrationResponse"
"429":
description: Registration rate limit exceeded
/oauth/revoke:
post:
tags:
- MCP OAuth
summary: OAuth Token Revocation Endpoint
description: "OAuth 2.0 token revocation endpoint (RFC 7009). Always returns\
\ 200, whether the token was revoked, never existed, or was invalid"
operationId: revoke
requestBody:
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
token:
type: string
client_id:
type: string
responses:
"200":
description: Revocation acknowledged
/oauth/token:
post:
tags:
- MCP OAuth
summary: OAuth Token Endpoint
description: "OAuth 2.1 token endpoint (RFC 6749 §4.1.3, §6). Exchanges an authorization\
\ code with PKCE or a refresh token for an access/refresh token pair"
operationId: token
requestBody:
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
grant_type:
type: string
code:
type: string
redirect_uri:
type: string
client_id:
type: string
code_verifier:
type: string
refresh_token:
type: string
responses:
"200":
description: Token response
content:
application/json:
schema:
$ref: "#/components/schemas/TokenResponse"
"400":
description: OAuth error (RFC 6749 §5.2)
content:
application/json:
schema:
$ref: "#/components/schemas/OAuthError"
/opik/auth-oauth:
post:
tags:
- MCP OAuth
summary: Validate OAuth Access Token
description: Introspects a bearer access token and returns the identity it resolves
to
operationId: validateOAuthToken
parameters:
- name: Authorization
in: header
schema:
type: string
responses:
"200":
description: Validated token identity
content:
application/json:
schema:
$ref: "#/components/schemas/ValidatedToken"
"401":
description: "Missing, malformed, or unknown access token"
/v1/internal/analytics-queries/projects/{projectId}:
post:
tags:
- System analytics queries
summary: Execute Agent Insights free-form SQL
description: Runs Ollie-generated read-only SQL bounded to the caller's workspace
and the requested project. Returns 501 when the Agent Insights toggle is off.
operationId: executeAnalyticsQuery
parameters:
- name: projectId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AnalyticsQueryRequest"
responses:
"200":
description: Query results
content:
application/json:
schema:
$ref: "#/components/schemas/AnalyticsQueryResponse"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"422":
description: Unprocessable Content
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"501":
description: Agent Insights queries are not enabled
/v1/internal/usage/bi-datasets:
get:
tags:
- System usage
summary: Get datasets information for BI events
description: Get datasets information for BI events per user per workspace
operationId: getDatasetBiInfo
responses:
"200":
description: Datasets BiInformationResponse resource
content:
application/json:
schema:
$ref: "#/components/schemas/BiInformationResponse"
/v1/internal/usage/bi-experiments:
get:
tags:
- System usage
summary: Get experiments information for BI events
description: Get experiments information for BI events per user per workspace
operationId: getExperimentBiInfo
responses:
"200":
description: Experiments BiInformationResponse resource
content:
application/json:
schema:
$ref: "#/components/schemas/BiInformationResponse"
/v1/internal/usage/bi-spans:
get:
tags:
- System usage
summary: Get spans information for BI events
description: Get spans information for BI events per user per workspace
operationId: getSpansBiInfo
responses:
"200":
description: Spans BiInformationResponse resource
content:
application/json:
schema:
$ref: "#/components/schemas/BiInformationResponse"
/v1/internal/usage/workspace-span-counts-breakdown:
get:
tags:
- System usage
summary: "Get spans count on previous day grouped by workspace, project and\
\ user"
description: "Get spans count on previous day grouped by workspace, project\
\ and user"
operationId: getSpansCountBreakdownForWorkspaces
responses:
"200":
description: UsageByWorkspaceProjectUserResponse resource
content:
application/json:
schema:
$ref: "#/components/schemas/UsageByWorkspaceProjectUserResponse"
/v1/internal/usage/workspace-span-counts:
get:
tags:
- System usage
summary: Get spans count on previous day for all available workspaces
description: Get spans count on previous day for all available workspaces
operationId: getSpansCountForWorkspaces
responses:
"200":
description: SpanCountResponse resource
content:
application/json:
schema:
$ref: "#/components/schemas/SpansCountResponse"
/v1/internal/usage/bi-traces:
get:
tags:
- System usage
summary: Get traces information for BI events
description: Get traces information for BI events per user per workspace
operationId: getTracesBiInfo
responses:
"200":
description: Traces BiInformationResponse resource
content:
application/json:
schema:
$ref: "#/components/schemas/BiInformationResponse"
/v1/internal/usage/workspace-trace-counts:
get:
tags:
- System usage
summary: Get traces count on previous day for all available workspaces
description: Get traces count on previous day for all available workspaces
operationId: getTracesCountForWorkspaces
responses:
"200":
description: TraceCountResponse resource
content:
application/json:
schema:
$ref: "#/components/schemas/TraceCountResponse"
/v1/private/agent-configs/blueprints:
post:
tags:
- Agent Configs
summary: Create optimizer config with initial blueprint
description: Creates a new optimizer config with initial blueprint. Fails if
the project already has a config.
operationId: createAgentConfig
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AgentConfigCreate_Write"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/agent-configs/blueprints/{blueprint_id}"
"400":
description: Bad Request (e.g. MASK type not allowed)
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Write"
"409":
description: Conflict (config already exists)
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Write"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Write"
patch:
tags:
- Agent Configs
summary: Add blueprint to existing config
description: Adds a new blueprint to an existing optimizer config. Fails if
the project has no config yet.
operationId: updateAgentConfig
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AgentConfigCreate_Write"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/agent-configs/blueprints/{blueprint_id}"
"404":
description: Not Found (no config for project)
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Write"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Write"
/v1/private/agent-configs/blueprints/projects/{project_id}/masks/{mask_id}:
post:
tags:
- Agent Configs
summary: Create blueprint from mask
description: Creates a new blueprint by applying a mask's changes on top of
the latest blueprint for the project.
operationId: createBlueprintFromMask
parameters:
- name: project_id
in: path
required: true
schema:
type: string
format: uuid
- name: mask_id
in: path
required: true
schema:
type: string
format: uuid
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/agent-configs/blueprints/{blueprint_id}"
"404":
description: Not Found (no config or mask not found)
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Write"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Write"
/v1/private/agent-configs/blueprints/environments:
post:
tags:
- Agent Configs
summary: Create or update environments
description: Creates or updates environment-to-blueprint mappings
operationId: createOrUpdateEnvs
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AgentConfigEnvUpdate"
responses:
"204":
description: Environments updated
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/agent-configs/blueprints/environments/{env_name}/projects/{project_id}:
get:
tags:
- Agent Configs
summary: Retrieve blueprint by environment
description: Retrieves the blueprint associated with a specific environment
operationId: getBlueprintByEnv
parameters:
- name: env_name
in: path
required: true
schema:
type: string
- name: project_id
in: path
required: true
schema:
type: string
format: uuid
- name: mask_id
in: query
schema:
type: string
format: uuid
responses:
"200":
description: Blueprint retrieved
content:
application/json:
schema:
$ref: "#/components/schemas/AgentBlueprint_Public"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
put:
tags:
- Agent Configs
summary: Set environment by blueprint name
description: Sets an environment to point to a blueprint identified by name
operationId: setEnvByBlueprintName
parameters:
- name: env_name
in: path
required: true
schema:
type: string
- name: project_id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AgentConfigEnvSetByName"
responses:
"204":
description: Environment updated
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
delete:
tags:
- Agent Configs
summary: Delete environment
description: Soft-deletes an environment by setting its ended_at timestamp
operationId: deleteEnv
parameters:
- name: env_name
in: path
required: true
schema:
type: string
- name: project_id
in: path
required: true
schema:
type: string
format: uuid
responses:
"204":
description: Environment deleted
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/agent-configs/blueprints/{blueprint_id}:
get:
tags:
- Agent Configs
summary: Retrieve blueprint by ID
description: Retrieves a specific blueprint by its ID
operationId: getBlueprintById
parameters:
- name: blueprint_id
in: path
required: true
schema:
type: string
format: uuid
- name: mask_id
in: query
schema:
type: string
format: uuid
responses:
"200":
description: Blueprint retrieved
content:
application/json:
schema:
$ref: "#/components/schemas/AgentBlueprint_Public"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
/v1/private/agent-configs/blueprints/projects/{project_id}/names/{name}:
get:
tags:
- Agent Configs
summary: Retrieve blueprint by name
description: Retrieves a specific blueprint by its name within a project
operationId: getBlueprintByName
parameters:
- name: name
in: path
required: true
schema:
type: string
- name: project_id
in: path
required: true
schema:
type: string
format: uuid
- name: mask_id
in: query
schema:
type: string
format: uuid
responses:
"200":
description: Blueprint retrieved
content:
application/json:
schema:
$ref: "#/components/schemas/AgentBlueprint_Public"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
/v1/private/agent-configs/blueprints/history/projects/{project_id}:
get:
tags:
- Agent Configs
summary: Get blueprint history
description: Retrieves paginated blueprint history for a project
operationId: getBlueprintHistory
parameters:
- name: project_id
in: path
required: true
schema:
type: string
format: uuid
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
responses:
"200":
description: History retrieved
content:
application/json:
schema:
$ref: "#/components/schemas/BlueprintPage_History"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_History"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_History"
/v1/private/agent-configs/blueprints/{blueprint_id}/deltas:
get:
tags:
- Agent Configs
summary: Retrieve delta by blueprint ID
description: Retrieves only the changes (delta) introduced in a specific blueprint
operationId: getDeltaById
parameters:
- name: blueprint_id
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Delta retrieved
content:
application/json:
schema:
$ref: "#/components/schemas/AgentBlueprint_Public"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
/v1/private/agent-configs/blueprints/latest/projects/{project_id}:
get:
tags:
- Agent Configs
summary: Retrieve latest blueprint
description: Retrieves the latest blueprint for a project
operationId: getLatestBlueprint
parameters:
- name: project_id
in: path
required: true
schema:
type: string
format: uuid
- name: mask_id
in: query
schema:
type: string
format: uuid
responses:
"200":
description: Blueprint retrieved
content:
application/json:
schema:
$ref: "#/components/schemas/AgentBlueprint_Public"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
/v1/private/agent-configs/blueprints/remove-keys:
post:
tags:
- Agent Configs
summary: Remove configuration parameters
description: Removes configuration parameters by creating a new blueprint that
closes the specified keys. Returns 204 if no changes were needed (idempotent).
operationId: removeConfigKeys
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AgentConfigRemoveValues"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/agent-configs/blueprints/{blueprint_id}"
"204":
description: No changes needed (no config or keys already removed)
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/agent-insights/jobs/{projectId}:
get:
tags:
- Agent Insights Jobs
summary: Get Agent Insights job
description: "Returns the Agent Insights job for the (workspace, project), or\
\ 404 if none exists."
operationId: getAgentInsightsJob
parameters:
- name: projectId
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Job
content:
application/json:
schema:
$ref: "#/components/schemas/AgentInsightsJob"
"404":
description: Job not found
post:
tags:
- Agent Insights Jobs
summary: Create Agent Insights job
description: Creates the Agent Insights job for a project. 409 if one already
exists.
operationId: createAgentInsightsJob
parameters:
- name: projectId
in: path
required: true
schema:
type: string
format: uuid
responses:
"201":
description: Job created
headers:
Location:
description: URI of the created job
style: simple
schema:
type: string
content:
application/json:
schema:
$ref: "#/components/schemas/AgentInsightsJob"
"404":
description: Project not found
"409":
description: Job already exists
patch:
tags:
- Agent Insights Jobs
summary: Update Agent Insights job
description: "Partially updates the Agent Insights job for a project (e.g. status;\
\ never deletes). Returns the updated job, or 404 if none exists."
operationId: updateAgentInsightsJob
parameters:
- name: projectId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AgentInsightsJobUpdate"
required: true
responses:
"200":
description: Job updated
content:
application/json:
schema:
$ref: "#/components/schemas/AgentInsightsJob"
"404":
description: Job not found
/v1/private/agent-insights/jobs/{projectId}/trigger:
post:
tags:
- Agent Insights Jobs
summary: Trigger Agent Insights job
description: Triggers an immediate report run for an existing job (over the
last 24h). Fire-and-forget; returns 202. 404 if none exists.
operationId: triggerAgentInsightsJob
parameters:
- name: projectId
in: path
required: true
schema:
type: string
format: uuid
responses:
"202":
description: Run accepted
"404":
description: Job not found
/v1/private/agent-insights/issues:
get:
tags:
- Agent Insights
summary: Find agent insights issues
description: "Returns a paginated list of issues that have at least one detail\
\ row within the requested time window, with metrics aggregated over the window"
operationId: findAgentInsightsIssues
parameters:
- name: project_id
in: query
required: true
schema:
type: string
format: uuid
- name: from_date
in: query
schema:
type: string
format: date
- name: to_date
in: query
schema:
type: string
format: date
- name: status
in: query
schema:
type: string
enum:
- open
- resolved
- closed
- name: severity
in: query
schema:
type: string
enum:
- critical
- high
- medium
- low
- name: sorting
in: query
schema:
type: string
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
maximum: 100
minimum: 1
type: integer
format: int32
default: 10
responses:
"200":
description: Issues page
content:
application/json:
schema:
$ref: "#/components/schemas/AgentInsightsIssuePage"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
post:
tags:
- Agent Insights
summary: Store agent insights report results
description: Upserts the detected issues and their per-day metrics for the given
report day in a single transaction. Issue status is never modified by this
endpoint.
operationId: reportAgentInsightsIssues
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AgentInsightsReport"
responses:
"204":
description: Report stored
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"404":
description: Project not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/agent-insights/issues/{issue_id}:
get:
tags:
- Agent Insights
summary: Get agent insights issue by id
description: Returns the issue together with its per-day breakdown within the
requested time window
operationId: getAgentInsightsIssueById
parameters:
- name: issue_id
in: path
required: true
schema:
type: string
format: uuid
- name: project_id
in: query
required: true
schema:
type: string
format: uuid
- name: from_date
in: query
schema:
type: string
format: date
- name: to_date
in: query
schema:
type: string
format: date
responses:
"200":
description: Issue with details
content:
application/json:
schema:
$ref: "#/components/schemas/AgentInsightsIssueWithDetails"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
patch:
tags:
- Agent Insights
summary: Update agent insights issue status
description: "Moves an issue through its lifecycle: open, resolved or closed"
operationId: updateAgentInsightsIssue
parameters:
- name: issue_id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AgentInsightsIssueUpdate"
responses:
"204":
description: Issue updated
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/alerts:
get:
tags:
- Alerts
summary: Find alerts
description: Find alerts
operationId: findAlerts
parameters:
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: sorting
in: query
schema:
type: string
- name: filters
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AlertPage_Public"
post:
tags:
- Alerts
summary: Create alert
description: Create alert
operationId: createAlert
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Alert_Write"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/alerts/{alertId}"
"422":
description: Unprocessable Content
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"409":
description: Conflict
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/alerts/delete:
post:
tags:
- Alerts
summary: Delete alert batch
description: Delete multiple alerts by their IDs
operationId: deleteAlertBatch
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BatchDelete"
responses:
"204":
description: No Content
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/alerts/{id}:
get:
tags:
- Alerts
summary: Get Alert by id
description: Get Alert by id
operationId: getAlertById
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Alert resource
content:
application/json:
schema:
$ref: "#/components/schemas/Alert_Public"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
put:
tags:
- Alerts
summary: Update alert
description: Update alert
operationId: updateAlert
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Alert_Write"
responses:
"204":
description: No Content
"422":
description: Unprocessable Content
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"409":
description: Conflict
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/alerts/webhooks/examples:
get:
tags:
- Alerts
summary: Get webhook payload examples
description: "Get webhook payload examples for all alert event types, optionally\
\ filtered by alert type"
operationId: getWebhookExamples
parameters:
- name: alert_type
in: query
schema:
type: string
enum:
- general
- slack
- pagerduty
responses:
"200":
description: Webhook examples
content:
application/json:
schema:
$ref: "#/components/schemas/WebhookExamples"
/v1/private/alerts/webhooks/tests:
post:
tags:
- Alerts
summary: Test alert webhook
description: Test alert webhook
operationId: testWebhook
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Alert_Write"
responses:
"200":
description: Webhook test
content:
application/json:
schema:
$ref: "#/components/schemas/WebhookTestResult"
"422":
description: Unprocessable Content
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/annotation-queues/{id}/items/add:
post:
tags:
- Annotation Queues
summary: Add items to annotation queue
description: Add traces or threads to annotation queue
operationId: addItemsToAnnotationQueue
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AnnotationQueueItemIds"
responses:
"204":
description: No content
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/annotation-queues:
get:
tags:
- Annotation Queues
summary: Find annotation queues
description: Find annotation queues with filtering and sorting
operationId: findAnnotationQueues
parameters:
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: name
in: query
schema:
type: string
description: "Filter annotation queues by name (partial match, case insensitive)"
- name: filters
in: query
schema:
type: string
- name: sorting
in: query
schema:
type: string
responses:
"200":
description: Annotation queues page
content:
application/json:
schema:
$ref: "#/components/schemas/AnnotationQueuePage_Public"
post:
tags:
- Annotation Queues
summary: Create annotation queue
description: Create annotation queue for human annotation workflows
operationId: createAnnotationQueue
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AnnotationQueue_Write"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/traces/{annotationId}"
"422":
description: Unprocessable Content
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/annotation-queues/batch:
post:
tags:
- Annotation Queues
summary: Create annotation queue batch
description: Create multiple annotation queues for human annotation workflows
operationId: createAnnotationQueueBatch
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AnnotationQueueBatch_Write"
responses:
"204":
description: No Content
"422":
description: Unprocessable Content
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"409":
description: Conflict
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/annotation-queues/delete:
post:
tags:
- Annotation Queues
summary: Delete annotation queue batch
description: Delete multiple annotation queues by their IDs
operationId: deleteAnnotationQueueBatch
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BatchDelete"
responses:
"204":
description: No Content
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/annotation-queues/{id}:
get:
tags:
- Annotation Queues
summary: Get annotation queue by id
description: Get annotation queue by id
operationId: getAnnotationQueueById
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Annotation queue resource
content:
application/json:
schema:
$ref: "#/components/schemas/AnnotationQueue_Public"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
patch:
tags:
- Annotation Queues
summary: Update annotation queue
description: Update annotation queue by id
operationId: updateAnnotationQueue
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AnnotationQueueUpdate"
responses:
"204":
description: No Content
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/annotation-queues/{queueId}/locks:
get:
tags:
- Annotation Queues
summary: Get all active locks for an annotation queue
description: Returns lock status for all actively locked items in the queue
operationId: getAnnotationQueueLocks
parameters:
- name: queueId
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Queue locks
content:
application/json:
schema:
$ref: "#/components/schemas/LocksResponse"
/v1/private/annotation-queues/{queueId}/items/{itemId}/lock:
put:
tags:
- Annotation Queues
summary: Create or extend annotation queue item lock
description: "Claim an annotation queue item for the current user, or extend\
\ an existing lock"
operationId: lockAnnotationQueueItem
parameters:
- name: queueId
in: path
required: true
schema:
type: string
format: uuid
- name: itemId
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Lock result
content:
application/json:
schema:
$ref: "#/components/schemas/LockResponse"
/v1/private/annotation-queues/{id}/items/delete:
post:
tags:
- Annotation Queues
summary: Remove items from annotation queue
description: Remove items from annotation queue
operationId: removeItemsFromAnnotationQueue
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AnnotationQueueItemIds"
responses:
"204":
description: No content
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/assertion-results:
put:
tags:
- Assertion Results
summary: Batch ingestion of assertion results
description: Batch ingestion of assertion results for traces or spans
operationId: storeAssertionsBatch
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AssertionResultBatch"
responses:
"204":
description: No Content
/v1/private/attachment/list:
get:
tags:
- Attachments
summary: Attachments list for entity
description: Attachments list for entity
operationId: attachmentList
parameters:
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 100
- name: project_id
in: query
required: true
schema:
type: string
format: uuid
- name: entity_type
in: query
required: true
schema:
type: string
enum:
- trace
- span
- name: entity_id
in: query
required: true
schema:
type: string
format: uuid
- name: path
in: query
required: true
schema:
minLength: 1
type: string
responses:
"200":
description: Attachment Resource
content:
application/json:
schema:
$ref: "#/components/schemas/AttachmentPage"
"401":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"403":
description: Access forbidden
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/attachment/upload-complete:
post:
tags:
- Attachments
summary: Complete multipart attachment upload
description: Complete multipart attachment upload
operationId: completeMultiPartUpload
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CompleteMultipartUploadRequest"
responses:
"204":
description: No content
"401":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"403":
description: Access forbidden
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/attachment/delete:
post:
tags:
- Attachments
summary: Delete attachments
description: Delete attachments
operationId: deleteAttachments
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CompleteMultipartUploadRequest"
responses:
"204":
description: No content
"401":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"403":
description: Access forbidden
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/attachment/download:
get:
tags:
- Attachments
summary: Download attachment from MinIO
description: Download attachment from MinIO
operationId: downloadAttachment
parameters:
- name: workspace_name
in: query
schema:
type: string
- name: container_id
in: query
required: true
schema:
type: string
format: uuid
- name: entity_type
in: query
required: true
schema:
type: string
enum:
- trace
- span
- name: entity_id
in: query
required: true
schema:
type: string
format: uuid
- name: file_name
in: query
required: true
schema:
minLength: 1
type: string
- name: mime_type
in: query
required: true
schema:
minLength: 1
type: string
responses:
"200":
description: Attachment Resource
content:
'*/*':
schema:
type: string
format: binary
"401":
description: Bad Request
content:
'*/*':
schema:
$ref: "#/components/schemas/ErrorMessage"
"403":
description: Access forbidden
content:
'*/*':
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/attachment/upload-start:
post:
tags:
- Attachments
summary: Start multipart attachment upload
description: Start multipart attachment upload
operationId: startMultiPartUpload
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/StartMultipartUploadRequest"
responses:
"200":
description: MultipartUploadResponse
content:
application/json:
schema:
$ref: "#/components/schemas/StartMultipartUploadResponse"
"401":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"403":
description: Access forbidden
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/attachment/upload:
put:
tags:
- Attachments
summary: Upload attachment to MinIO
description: Upload attachment to MinIO
operationId: uploadAttachment
parameters:
- name: file_name
in: query
required: true
schema:
type: string
- name: project_name
in: query
schema:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "If null, the default project is used"
- name: mime_type
in: query
schema:
type: string
- name: entity_type
in: query
required: true
schema:
type: string
enum:
- trace
- span
- name: entity_id
in: query
required: true
schema:
type: string
format: uuid
requestBody:
content:
'*/*':
schema:
type: object
responses:
"204":
description: No content
"401":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"403":
description: Access forbidden
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/auth:
post:
tags:
- Check
summary: Check user access to workspace
description: Check user access to workspace
operationId: checkAccess
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AuthDetailsHolder"
responses:
"204":
description: No Content
"401":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"403":
description: Access forbidden
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/auth/workspace:
get:
tags:
- Check
summary: User's default workspace name
description: User's default workspace name
operationId: getWorkspaceName
responses:
"200":
description: Authentication resource
content:
application/json:
schema:
$ref: "#/components/schemas/WorkspaceNameHolder"
"401":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"403":
description: Access forbidden
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/automations/evaluators:
get:
tags:
- Automation rule evaluators
summary: Find project Evaluators
description: Find project Evaluators
operationId: findEvaluators
parameters:
- name: project_id
in: query
schema:
type: string
format: uuid
- name: id
in: query
schema:
type: string
description: "Filter automation rules with rule ID containing this value\
\ (partial match, like %id%)"
- name: name
in: query
schema:
type: string
description: "Filter automation rule evaluators by name (partial match,\
\ case insensitive)"
- name: filters
in: query
schema:
type: string
- name: sorting
in: query
schema:
type: string
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
responses:
"200":
description: Evaluators resource
content:
application/json:
schema:
$ref: "#/components/schemas/AutomationRuleEvaluatorPage_Public"
post:
tags:
- Automation rule evaluators
summary: Create automation rule evaluator
description: Create automation rule evaluator
operationId: createAutomationRuleEvaluator
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AutomationRuleEvaluator_Write"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/automations/evaluators/{evaluatorId}"
/v1/private/automations/evaluators/delete:
post:
tags:
- Automation rule evaluators
summary: Delete automation rule evaluators
description: Delete automation rule evaluators batch
operationId: deleteAutomationRuleEvaluatorBatch
parameters:
- name: project_id
in: query
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BatchDelete"
responses:
"204":
description: No Content
/v1/private/automations/evaluators/{id}:
get:
tags:
- Automation rule evaluators
summary: Get automation rule evaluator by id
description: Get automation rule by id
operationId: getEvaluatorById
parameters:
- name: project_id
in: query
schema:
type: string
format: uuid
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Automation Rule resource
content:
application/json:
schema:
$ref: "#/components/schemas/AutomationRuleEvaluator_Public"
patch:
tags:
- Automation rule evaluators
summary: Update Automation Rule Evaluator by id
description: Update Automation Rule Evaluator by id
operationId: updateAutomationRuleEvaluator
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AutomationRuleEvaluatorUpdate"
responses:
"204":
description: No content
/v1/private/automations/evaluators/{id}/logs:
get:
tags:
- Automation rule evaluators
summary: Get automation rule evaluator logs by id
description: Get automation rule evaluator logs by id
operationId: getEvaluatorLogsById
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1000
responses:
"200":
description: Automation rule evaluator logs resource
content:
application/json:
schema:
$ref: "#/components/schemas/LogPage"
/v1/private/chat/completions:
post:
tags:
- Chat Completions
summary: Create chat completions
description: Create chat completions
operationId: createChatCompletions
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ChatCompletionRequest"
responses:
"200":
description: Chat completions response
content:
text/event-stream:
schema:
type: array
items:
type: object
anyOf:
- $ref: "#/components/schemas/ChatCompletionResponse"
- $ref: "#/components/schemas/ErrorMessage"
application/json:
schema:
$ref: "#/components/schemas/ChatCompletionResponse"
/v1/private/dashboards:
get:
tags:
- Dashboards
summary: Find dashboards
description: Find dashboards in a workspace
operationId: findDashboards
parameters:
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: name
in: query
schema:
type: string
description: "Filter dashboards by name (partial match, case insensitive)"
- name: project_id
in: query
schema:
type: string
format: uuid
- name: sorting
in: query
schema:
type: string
- name: filters
in: query
schema:
type: string
responses:
"200":
description: Dashboard page
content:
application/json:
schema:
$ref: "#/components/schemas/DashboardPage_Public"
post:
tags:
- Dashboards
summary: Create dashboard
description: Create a new dashboard in a workspace
operationId: createDashboard
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Dashboard_Write"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/dashboards/{dashboardId}"
content:
application/json:
schema:
$ref: "#/components/schemas/Dashboard_Public"
/v1/private/dashboards/{dashboardId}:
get:
tags:
- Dashboards
summary: Get dashboard by id
description: Get dashboard by id
operationId: getDashboardById
parameters:
- name: dashboardId
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Dashboard resource
content:
application/json:
schema:
$ref: "#/components/schemas/Dashboard_Public"
"404":
description: Dashboard not found
delete:
tags:
- Dashboards
summary: Delete dashboard
description: Delete dashboard by id
operationId: deleteDashboard
parameters:
- name: dashboardId
in: path
required: true
schema:
type: string
format: uuid
responses:
"204":
description: No content
patch:
tags:
- Dashboards
summary: Update dashboard
description: Update dashboard by id. Partial updates are supported - only provided
fields will be updated.
operationId: updateDashboard
parameters:
- name: dashboardId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DashboardUpdate_Public"
responses:
"200":
description: Updated dashboard
content:
application/json:
schema:
$ref: "#/components/schemas/Dashboard_Public"
"404":
description: Dashboard not found
"409":
description: Conflict - dashboard with this name already exists
/v1/private/dashboards/delete-batch:
post:
tags:
- Dashboards
summary: Delete dashboards
description: Delete dashboards batch
operationId: deleteDashboardsBatch
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BatchDelete"
responses:
"204":
description: No content
/v1/private/datasets/{id}/items/changes:
post:
tags:
- Datasets
summary: Apply changes to dataset items
description: |
Apply delta changes (add, edit, delete) to a dataset version with conflict detection.
This endpoint:
- Creates a new version with the applied changes
- Validates that baseVersion matches the latest version (unless override=true)
- Returns 409 Conflict if baseVersion is stale and override is not set
Use `override=true` query parameter to force version creation even with stale baseVersion.
Set 'copy_from_dataset_id' and 'copy_from_version_id' together on the request body to read
carry-forward rows from the supplied (dataset, version) pair instead of the destination's
prior version. When the fields are null, carry-forward rows are read from the destination's
prior version.
operationId: applyDatasetItemChanges
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: override
in: query
schema:
type: boolean
default: false
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetItemChanges_Public"
responses:
"201":
description: Version created successfully
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetVersion_Public"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
"404":
description: Dataset or version not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
"409":
description: Version conflict - baseVersion is not the latest
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
/v1/private/datasets/items/batch:
patch:
tags:
- Datasets
summary: Batch update dataset items
description: Update multiple dataset items
operationId: batchUpdateDatasetItems
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetItemBatchUpdate"
responses:
"204":
description: No Content
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/datasets:
get:
tags:
- Datasets
summary: Find datasets
description: Find datasets
operationId: findDatasets
parameters:
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: with_experiments_only
in: query
schema:
type: boolean
- name: with_optimizations_only
in: query
schema:
type: boolean
- name: prompt_id
in: query
schema:
type: string
format: uuid
- name: project_id
in: query
schema:
type: string
format: uuid
- name: name
in: query
schema:
type: string
description: "Filter datasets by name (partial match, case insensitive)"
- name: sorting
in: query
schema:
type: string
- name: filters
in: query
schema:
type: string
responses:
"200":
description: Dataset resource
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetPage_Public"
post:
tags:
- Datasets
summary: Create dataset
description: Create dataset
operationId: createDataset
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Dataset_Write"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/api/v1/private/datasets/{id}"
/v1/private/datasets/items:
put:
tags:
- Datasets
summary: Create/update dataset items
description: |-
Create/update dataset items based on dataset item id.
Each item's 'id' field is the stable identifier and upsert key.
Provide it to update an existing item, or omit it to create a new one.
Set 'copy_from_dataset_id' and 'copy_from_version_id' together to read carry-forward rows
from the supplied (dataset, version) pair instead of the destination's prior version. When
the fields are null, carry-forward rows are read from the destination's prior version.
operationId: createOrUpdateDatasetItems
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetItemBatch_Write"
responses:
"204":
description: No content
/v1/private/datasets/items/from-csv:
post:
tags:
- Datasets
summary: Create dataset items from CSV file
description: Create dataset items from uploaded CSV file. CSV should have headers
in the first row. Processing happens asynchronously in batches.
operationId: createDatasetItemsFromCsv
requestBody:
content:
multipart/form-data:
schema:
required:
- dataset_id
- file
type: object
properties:
file:
type: object
dataset_id:
type: string
format: uuid
responses:
"202":
description: Accepted - CSV processing started
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/datasets/items/from-json:
post:
tags:
- Datasets
summary: Create dataset items from JSON file
description: |-
Create dataset items from an uploaded JSON or JSONL file. JSON files must contain a top-level array of objects.
JSONL files contain one JSON object per non-blank line; multi-line JSON objects are not supported.
Reserved keys (id, source, description, tags, evaluators, execution_policy) are extracted into the
corresponding DatasetItem fields; all remaining keys form the item's data map and preserve their JSON types.
To link dataset items to specific traces or spans use the dedicated /items/from-traces or /items/from-spans endpoints.
Processing happens asynchronously in batches. With dataset versioning enabled, a supplied id acts as an upsert key.
operationId: createDatasetItemsFromJson
requestBody:
content:
multipart/form-data:
schema:
required:
- dataset_id
- file
- format
type: object
properties:
file:
type: object
dataset_id:
type: string
format: uuid
format:
type: string
enum:
- json
- jsonl
responses:
"202":
description: Accepted - JSON processing started
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/datasets/{dataset_id}/items/from-spans:
post:
tags:
- Datasets
summary: Create dataset items from spans
description: Create dataset items from spans with enriched metadata
operationId: createDatasetItemsFromSpans
parameters:
- name: dataset_id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateDatasetItemsFromSpansRequest"
responses:
"204":
description: No content
/v1/private/datasets/{dataset_id}/items/from-traces:
post:
tags:
- Datasets
summary: Create dataset items from traces
description: Create dataset items from traces with enriched metadata
operationId: createDatasetItemsFromTraces
parameters:
- name: dataset_id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateDatasetItemsFromTracesRequest"
responses:
"204":
description: No content
/v1/private/datasets/{id}:
get:
tags:
- Datasets
summary: Get dataset by id
description: Get dataset by id
operationId: getDatasetById
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Dataset resource
content:
application/json:
schema:
$ref: "#/components/schemas/Dataset_Public"
put:
tags:
- Datasets
summary: Update dataset by id
description: Update dataset by id
operationId: updateDataset
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetUpdate"
responses:
"204":
description: No content
delete:
tags:
- Datasets
summary: Delete dataset by id
description: Delete dataset by id
operationId: deleteDataset
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"204":
description: No content
/v1/private/datasets/delete:
post:
tags:
- Datasets
summary: Delete dataset by name
description: Delete dataset by name
operationId: deleteDatasetByName
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetIdentifier"
responses:
"204":
description: No content
/v1/private/datasets/items/delete:
post:
tags:
- Datasets
summary: Delete dataset items
description: |
Delete dataset items using one of two modes:
1. **Delete by IDs**: Provide 'item_ids' to delete specific items by their IDs
2. **Delete by filters**: Provide 'dataset_id' with optional 'filters' to delete items matching criteria
When using filters, an empty 'filters' array will delete all items in the specified dataset.
operationId: deleteDatasetItems
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetItemsDelete"
responses:
"204":
description: No content
"400":
description: Bad request - invalid parameters or conflicting fields
/v1/private/datasets/delete-batch:
post:
tags:
- Datasets
summary: Delete datasets
description: Delete datasets batch
operationId: deleteDatasetsBatch
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BatchDelete"
responses:
"204":
description: No content
/v1/private/datasets/export-jobs/{jobId}/download:
get:
tags:
- Datasets
summary: Download dataset export file
description: Downloads the exported CSV file for a completed export job. This
endpoint proxies the file download to avoid exposing internal storage URLs.
operationId: downloadDatasetExport
parameters:
- name: jobId
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: CSV file content
content:
text/csv:
schema:
type: string
format: binary
"400":
description: Export job is not ready for download
"404":
description: Export job not found
/v1/private/datasets/{id}/expansions:
post:
tags:
- Datasets
summary: Expand dataset with synthetic samples
description: Generate synthetic dataset samples using LLM based on existing
data patterns
operationId: expandDataset
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetExpansion_Write"
responses:
"200":
description: Generated synthetic samples
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetExpansionResponse"
/v1/private/datasets/{id}/items/experiments/items:
get:
tags:
- Datasets
summary: Find dataset items with experiment items
description: Find dataset items with experiment items
operationId: findDatasetItemsWithExperimentItems
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: experiment_ids
in: query
required: true
schema:
type: string
- name: filters
in: query
schema:
type: string
- name: sorting
in: query
schema:
type: string
- name: search
in: query
schema:
type: string
- name: truncate
in: query
schema:
type: boolean
description: "Truncate image included in either input, output or metadata"
responses:
"200":
description: Dataset item resource
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetItemPage_Compare"
/v1/private/datasets/retrieve:
post:
tags:
- Datasets
summary: Get dataset by name
description: Get dataset by name
operationId: getDatasetByIdentifier
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetIdentifier_Public"
responses:
"200":
description: Dataset resource
content:
application/json:
schema:
$ref: "#/components/schemas/Dataset_Public"
/v1/private/datasets/{id}/items/experiments/items/stats:
get:
tags:
- Datasets
summary: Get experiment items stats for dataset
description: Get experiment items stats for dataset
operationId: getDatasetExperimentItemsStats
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: experiment_ids
in: query
required: true
schema:
type: string
- name: filters
in: query
schema:
type: string
responses:
"200":
description: Experiment items stats resource
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectStats_Public"
/v1/private/datasets/export-jobs/{jobId}:
get:
tags:
- Datasets
summary: Get dataset export job status
description: Retrieves the current status of a dataset export job
operationId: getDatasetExportJob
parameters:
- name: jobId
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Export job details
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetExportJob_Public"
"404":
description: Export job not found
/v1/private/datasets/export-jobs:
get:
tags:
- Datasets
summary: Get all dataset export jobs
description: Retrieves all export jobs for the workspace. This is used to restore
the export panel state after page refresh.
operationId: getDatasetExportJobs
responses:
"200":
description: List of export jobs
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/DatasetExportJob_Public"
/v1/private/datasets/items/{itemId}:
get:
tags:
- Datasets
summary: Get dataset item by id
description: Get dataset item by id
operationId: getDatasetItemById
parameters:
- name: itemId
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Dataset item resource
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetItem_Public"
patch:
tags:
- Datasets
summary: Partially update dataset item by id
description: Partially update dataset item by id. Only provided fields will
be updated.
operationId: patchDatasetItem
parameters:
- name: itemId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetItem_Write"
responses:
"204":
description: No content
"404":
description: Dataset item not found
/v1/private/datasets/{id}/items:
get:
tags:
- Datasets
summary: Get dataset items
description: Get dataset items
operationId: getDatasetItems
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: version
in: query
schema:
type: string
description: Version hash or tag to fetch specific dataset version
- name: filters
in: query
schema:
type: string
- name: truncate
in: query
schema:
type: boolean
description: "Truncate image included in either input, output or metadata"
responses:
"200":
description: Dataset items resource
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetItemPage_Public"
/v1/private/datasets/{id}/items/experiments/items/output/columns:
get:
tags:
- Datasets
summary: Get dataset items output columns
description: Get dataset items output columns
operationId: getDatasetItemsOutputColumns
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: experiment_ids
in: query
schema:
type: string
responses:
"200":
description: Dataset item output columns
content:
application/json:
schema:
$ref: "#/components/schemas/PageColumns"
/v1/private/datasets/export-jobs/{jobId}/mark-viewed:
put:
tags:
- Datasets
summary: Mark dataset export job as viewed
description: Marks a dataset export job as viewed by setting the viewed_at timestamp.
This is used to track that a user has seen a failed job's error message. This
operation is idempotent.
operationId: markDatasetExportJobViewed
parameters:
- name: jobId
in: path
required: true
schema:
type: string
format: uuid
responses:
"204":
description: Job marked as viewed
"404":
description: Export job not found
/v1/private/datasets/{id}/export:
post:
tags:
- Datasets
summary: Start dataset CSV export
description: Initiates an asynchronous CSV export job for the dataset. Returns
immediately with job details for polling.
operationId: startDatasetExport
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"202":
description: Export job created
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetExportJob_Public"
"200":
description: Existing export job in progress
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetExportJob_Public"
/v1/private/datasets/items/stream:
post:
tags:
- Datasets
summary: Stream dataset items
description: Stream dataset items
operationId: streamDatasetItems
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetItemStreamRequest"
responses:
"200":
description: Dataset items stream or error during process
content:
application/octet-stream:
schema:
maxItems: 2000
type: array
items:
type: string
anyOf:
- $ref: "#/components/schemas/DatasetItem"
- $ref: "#/components/schemas/ErrorMessage"
/v1/private/datasets/{id}/versions/diff:
get:
tags:
- Datasets
summary: Compare latest version with draft
description: "Compare the latest committed dataset version with the current\
\ draft state. This endpoint provides insights into changes made since the\
\ last version was committed. The comparison calculates additions, modifications,\
\ deletions, and unchanged items between the latest version snapshot and current\
\ draft."
operationId: compareDatasetVersions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Diff computed successfully
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetVersionDiff"
"404":
description: Version not found
/v1/private/datasets/{id}/versions/hash/{versionHash}/tags:
post:
tags:
- Datasets
summary: Create version tag
description: "Add a tag to a specific dataset version for easy reference (e.g.,\
\ 'baseline', 'v1.0', 'production')"
operationId: createVersionTag
parameters:
- name: versionHash
in: path
required: true
schema:
type: string
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetVersionTag"
responses:
"204":
description: Tag created successfully
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"404":
description: Not Found - Version not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"409":
description: Conflict - Tag already exists
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/datasets/{id}/versions/{versionHash}/tags/{tag}:
delete:
tags:
- Datasets
summary: Delete version tag
description: "Remove a tag from a dataset version. The version itself is not\
\ deleted, only the tag reference."
operationId: deleteVersionTag
parameters:
- name: versionHash
in: path
required: true
schema:
type: string
- name: tag
in: path
required: true
schema:
type: string
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"204":
description: Tag deleted successfully
/v1/private/datasets/{id}/versions:
get:
tags:
- Datasets
summary: List dataset versions
description: "Get paginated list of versions for a dataset, ordered by creation\
\ time (newest first)"
operationId: listDatasetVersions
parameters:
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Dataset versions
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetVersionPage_Public"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
/v1/private/datasets/{id}/versions/restore:
post:
tags:
- Datasets
summary: Restore dataset to a previous version
description: "Restores the dataset to a previous version state by creating a\
\ new version with items copied from the specified version. If the version\
\ is already the latest, returns it as-is (no-op)."
operationId: restoreDatasetVersion
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetVersionRestore_Public"
responses:
"200":
description: Version restored successfully
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetVersion_Public"
"404":
description: Version not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
/v1/private/datasets/{id}/versions/retrieve:
post:
tags:
- Datasets
summary: Retrieve dataset version by name
description: "Get a specific version by its version name (e.g., 'v1', 'v373').\
\ This is more efficient than paginating through all versions for large datasets."
operationId: retrieveDatasetVersion
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetVersionRetrieveRequest_Public"
responses:
"200":
description: Dataset version
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetVersion_Public"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
"404":
description: Version not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
/v1/private/datasets/{id}/versions/hash/{versionHash}:
patch:
tags:
- Datasets
summary: Update dataset version
description: Update a dataset version's change_description and/or add new tags
operationId: updateDatasetVersion
parameters:
- name: versionHash
in: path
required: true
schema:
type: string
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetVersionUpdate_Public"
responses:
"200":
description: Version updated successfully
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetVersion_Public"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
"404":
description: Not Found - Version not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
"409":
description: Conflict - Tag already exists
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
/v1/private/environments:
get:
tags:
- Environments
summary: Find environments
description: Find environments for the workspace. Capped at the workspace limit
(default 20).
operationId: findEnvironments
responses:
"200":
description: Environments page
content:
application/json:
schema:
$ref: "#/components/schemas/EnvironmentPage_Public"
post:
tags:
- Environments
summary: Create environment
description: Create environment
operationId: createEnvironment
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Environment_Write"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/environments/{environmentId}"
"409":
description: Conflict
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/environments/delete:
post:
tags:
- Environments
summary: Delete environments
description: Delete environments batch. Idempotent — missing ids are silently
ignored.
operationId: deleteEnvironmentsBatch
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BatchDelete"
responses:
"204":
description: No Content
/v1/private/environments/{id}:
get:
tags:
- Environments
summary: Get environment by id
description: Get environment by id
operationId: getEnvironmentById
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Environment
content:
application/json:
schema:
$ref: "#/components/schemas/Environment_Public"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
patch:
tags:
- Environments
summary: Update environment by id
description: Update environment by id
operationId: updateEnvironment
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/EnvironmentUpdate"
responses:
"204":
description: No Content
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"409":
description: Conflict
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/experiments/batch:
patch:
tags:
- Experiments
summary: Batch update experiments
description: Update multiple experiments
operationId: batchUpdateExperiments
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ExperimentBatchUpdate"
responses:
"204":
description: No Content
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/experiments:
get:
tags:
- Experiments
summary: Find experiments
description: Find experiments
operationId: findExperiments
parameters:
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: datasetId
in: query
schema:
type: string
format: uuid
- name: optimization_id
in: query
schema:
type: string
format: uuid
- name: types
in: query
schema:
type: string
- name: name
in: query
schema:
type: string
description: "Filter experiments by name (partial match, case insensitive)"
- name: dataset_deleted
in: query
schema:
type: boolean
- name: prompt_id
in: query
schema:
type: string
format: uuid
- name: project_id
in: query
schema:
type: string
format: uuid
- name: project_deleted
in: query
schema:
type: boolean
- name: sorting
in: query
schema:
type: string
- name: filters
in: query
schema:
type: string
- name: experiment_ids
in: query
schema:
type: string
description: Filter experiments by a list of experiment IDs
- name: force_sorting
in: query
schema:
type: boolean
description: Force sorting even when exceeding the endpoint result set limit.
May result in slower queries
default: false
responses:
"200":
description: Experiments resource
content:
application/json:
schema:
$ref: "#/components/schemas/ExperimentPage_Public"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
post:
tags:
- Experiments
summary: Create experiment
description: Create experiment
operationId: createExperiment
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Experiment_Write"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/experiments/{id}"
/v1/private/experiments/items:
post:
tags:
- Experiments
summary: Create experiment items
description: Create experiment items
operationId: createExperimentItems
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ExperimentItemsBatch"
responses:
"204":
description: No content
/v1/private/experiments/items/delete:
post:
tags:
- Experiments
summary: Delete experiment items
description: Delete experiment items
operationId: deleteExperimentItems
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ExperimentItemsDelete"
responses:
"204":
description: No content
/v1/private/experiments/delete:
post:
tags:
- Experiments
summary: Delete experiments by id
description: Delete experiments by id
operationId: deleteExperimentsById
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DeleteIdsHolder"
responses:
"204":
description: No content
/v1/private/experiments/execute:
post:
tags:
- Experiments
summary: Create and execute experiment
description: Creates experiments for each prompt variant and asynchronously
processes all dataset items
operationId: executeExperiment
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ExperimentExecutionRequest"
required: true
responses:
"202":
description: Experiments created and processing started
content:
application/json:
schema:
$ref: "#/components/schemas/ExperimentExecutionResponse"
/v1/private/experiments/items/bulk:
put:
tags:
- Experiments
summary: Record experiment items in bulk
description: "Record experiment items in bulk with traces, spans, and feedback\
\ scores. Maximum request size is 4MB."
operationId: experimentItemsBulk
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ExperimentItemBulkUpload_ExperimentItemBulkWriteView"
responses:
"204":
description: No content
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"409":
description: Conflict
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"422":
description: Unprocessable Content
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/experiments/feedback-scores/names:
get:
tags:
- Experiments
summary: Find Feedback Score names
description: Find Feedback Score names
operationId: findFeedbackScoreNames
parameters:
- name: experiment_ids
in: query
schema:
type: string
- name: project_id
in: query
schema:
type: string
format: uuid
responses:
"200":
description: Feedback Scores resource
content:
application/json:
schema:
$ref: "#/components/schemas/FeedbackScoreNames_Public"
/v1/private/experiments/groups:
get:
tags:
- Experiments
summary: Find experiment groups
description: Find experiments grouped by specified fields
operationId: findExperimentGroups
parameters:
- name: groups
in: query
schema:
type: string
- name: types
in: query
schema:
type: string
- name: name
in: query
schema:
type: string
description: "Filter experiments by name (partial match, case insensitive)"
- name: project_id
in: query
schema:
type: string
format: uuid
- name: project_deleted
in: query
schema:
type: boolean
- name: filters
in: query
schema:
type: string
responses:
"200":
description: Experiment groups
content:
application/json:
schema:
$ref: "#/components/schemas/ExperimentGroupResponse"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/experiments/groups/aggregations:
get:
tags:
- Experiments
summary: Find experiment groups with aggregations
description: Find experiments grouped by specified fields with aggregation metrics
operationId: findExperimentGroupsAggregations
parameters:
- name: groups
in: query
schema:
type: string
- name: types
in: query
schema:
type: string
- name: name
in: query
schema:
type: string
description: "Filter experiments by name (partial match, case insensitive)"
- name: project_id
in: query
schema:
type: string
format: uuid
- name: project_deleted
in: query
schema:
type: boolean
description: Filter experiments by deleted projects
- name: filters
in: query
schema:
type: string
responses:
"200":
description: Experiment groups with aggregations
content:
application/json:
schema:
$ref: "#/components/schemas/ExperimentGroupAggregationsResponse"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/experiments/finish:
post:
tags:
- Experiments
summary: Finish experiments
description: Finish experiments and trigger alert events
operationId: finishExperiments
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DeleteIdsHolder"
responses:
"204":
description: No content
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/experiments/{id}:
get:
tags:
- Experiments
summary: Get experiment by id
description: Get experiment by id
operationId: getExperimentById
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Experiment resource
content:
application/json:
schema:
$ref: "#/components/schemas/Experiment_Public"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
patch:
tags:
- Experiments
summary: Update experiment by id
description: Update experiment by id
operationId: updateExperiment
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ExperimentUpdate"
responses:
"204":
description: No Content
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/experiments/items/{id}:
get:
tags:
- Experiments
summary: Get experiment item by id
description: Get experiment item by id
operationId: getExperimentItemById
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Experiment item resource
content:
application/json:
schema:
$ref: "#/components/schemas/ExperimentItem_Public"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
/v1/private/experiments/items/stream:
post:
tags:
- Experiments
summary: Stream experiment items
description: Stream experiment items
operationId: streamExperimentItems
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ExperimentItemStreamRequest"
responses:
"200":
description: Experiment items stream or error during process
content:
application/octet-stream:
schema:
maxItems: 2000
type: array
items:
type: string
anyOf:
- $ref: "#/components/schemas/ExperimentItem"
- $ref: "#/components/schemas/ErrorMessage"
/v1/private/experiments/stream:
post:
tags:
- Experiments
summary: Stream experiments
description: Stream experiments
operationId: streamExperiments
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ExperimentStreamRequest_Public"
responses:
"200":
description: Experiments stream or error during process
content:
application/octet-stream:
schema:
maxItems: 2000
type: array
items:
type: string
anyOf:
- $ref: "#/components/schemas/Experiment_Public"
- $ref: "#/components/schemas/ErrorMessage_Public"
/v1/private/feedback-definitions:
get:
tags:
- Feedback-definitions
summary: Find Feedback definitions
description: Find Feedback definitions
operationId: findFeedbackDefinitions
parameters:
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: name
in: query
schema:
type: string
description: "Filter feedback definitions by name (partial match, case insensitive)"
- name: type
in: query
schema:
type: string
enum:
- numerical
- categorical
- boolean
responses:
"200":
description: Feedback definitions resource
content:
application/json:
schema:
$ref: "#/components/schemas/FeedbackDefinitionPage_Public"
post:
tags:
- Feedback-definitions
summary: Create feedback definition
description: Get feedback definition
operationId: createFeedbackDefinition
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Feedback_Create"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/feedback-definitions/{feedbackId}"
/v1/private/feedback-definitions/{id}:
get:
tags:
- Feedback-definitions
summary: Get feedback definition by id
description: Get feedback definition by id
operationId: getFeedbackDefinitionById
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Feedback definition resource
content:
application/json:
schema:
$ref: "#/components/schemas/Feedback_Public"
put:
tags:
- Feedback-definitions
summary: Update feedback definition by id
description: Update feedback definition by id
operationId: updateFeedbackDefinition
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Feedback_Update"
responses:
"204":
description: No Content
delete:
tags:
- Feedback-definitions
summary: Delete feedback definition by id
description: Delete feedback definition by id
operationId: deleteFeedbackDefinitionById
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"204":
description: No Content
"409":
description: Conflict
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/feedback-definitions/delete:
post:
tags:
- Feedback-definitions
summary: Delete feedback definitions
description: Delete feedback definitions batch
operationId: deleteFeedbackDefinitionsBatch
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BatchDelete"
responses:
"204":
description: No Content
"409":
description: Conflict
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/guardrails:
post:
tags:
- Guardrails
summary: Create guardrails for traces in a batch
description: Batch guardrails for traces
operationId: createGuardrails
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/GuardrailBatch_Write"
responses:
"204":
description: No Content
/v1/private/insights-views:
get:
tags:
- Insights Views
summary: Find insights views
description: Find insights views in a workspace
operationId: findInsightsViews
parameters:
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: name
in: query
schema:
type: string
description: "Filter insights views by name (partial match, case insensitive)"
- name: project_id
in: query
schema:
type: string
format: uuid
- name: sorting
in: query
schema:
type: string
- name: filters
in: query
schema:
type: string
responses:
"200":
description: Insights view page
content:
application/json:
schema:
$ref: "#/components/schemas/DashboardPage_Public"
post:
tags:
- Insights Views
summary: Create insights view
description: Create a new insights view in a workspace
operationId: createInsightsView
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Dashboard_Write"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/insights-views/{insightsViewId}"
content:
application/json:
schema:
$ref: "#/components/schemas/Dashboard_Public"
/v1/private/insights-views/{insightsViewId}:
get:
tags:
- Insights Views
summary: Get insights view by id
description: Get insights view by id
operationId: getInsightsViewById
parameters:
- name: insightsViewId
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Insights view resource
content:
application/json:
schema:
$ref: "#/components/schemas/Dashboard_Public"
"404":
description: Insights view not found
delete:
tags:
- Insights Views
summary: Delete insights view
description: Delete insights view by id
operationId: deleteInsightsView
parameters:
- name: insightsViewId
in: path
required: true
schema:
type: string
format: uuid
responses:
"204":
description: No content
patch:
tags:
- Insights Views
summary: Update insights view
description: Update insights view by id. Partial updates are supported - only
provided fields will be updated.
operationId: updateInsightsView
parameters:
- name: insightsViewId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DashboardUpdate_Public"
responses:
"200":
description: Updated insights view
content:
application/json:
schema:
$ref: "#/components/schemas/Dashboard_Public"
"404":
description: Insights view not found
"409":
description: Conflict - insights view with this name already exists
/v1/private/insights-views/delete-batch:
post:
tags:
- Insights Views
summary: Delete insights views
description: Delete insights views batch
operationId: deleteInsightsViewsBatch
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BatchDelete"
responses:
"204":
description: No content
/v1/private/llm/models:
get:
tags:
- LLM Models
summary: Get LLM models
description: Get the list of supported LLM models grouped by provider
operationId: getLlmModels
responses:
"200":
description: LLM models by provider
content:
application/json:
schema:
type: string
/v1/private/llm-provider-key/delete:
post:
tags:
- LlmProviderKey
summary: Delete LLM Provider's ApiKeys
description: Delete LLM Provider's ApiKeys batch
operationId: deleteLlmProviderApiKeysBatch
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BatchDelete"
responses:
"204":
description: No Content
/v1/private/llm-provider-key:
get:
tags:
- LlmProviderKey
summary: Find LLM Provider's ApiKeys
description: Find LLM Provider's ApiKeys
operationId: findLlmProviderKeys
responses:
"200":
description: LLMProviderApiKey resource
content:
application/json:
schema:
$ref: "#/components/schemas/ProviderApiKeyPage_Public"
post:
tags:
- LlmProviderKey
summary: Store LLM Provider's ApiKey
description: Store LLM Provider's ApiKey
operationId: storeLlmProviderApiKey
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ProviderApiKey_Write"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/proxy/api_key/{apiKeyId}"
"401":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"403":
description: Access forbidden
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/llm-provider-key/{id}:
get:
tags:
- LlmProviderKey
summary: Get LLM Provider's ApiKey by id
description: Get LLM Provider's ApiKey by id
operationId: getLlmProviderApiKeyById
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: LLMProviderApiKey resource
content:
application/json:
schema:
$ref: "#/components/schemas/ProviderApiKey_Public"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
patch:
tags:
- LlmProviderKey
summary: Update LLM Provider's ApiKey
description: Update LLM Provider's ApiKey
operationId: updateLlmProviderApiKey
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ProviderApiKeyUpdate"
responses:
"204":
description: No Content
"401":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"403":
description: Access forbidden
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/local-runners/jobs/{jobId}/logs:
get:
tags:
- Runners
summary: Get local runner job logs
description: Get log entries for a local runner job
operationId: getJobLogs
parameters:
- name: jobId
in: path
required: true
schema:
type: string
format: uuid
- name: offset
in: query
schema:
minimum: 0
type: integer
format: int32
default: 0
responses:
"200":
description: Log entries
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/LocalRunnerLogEntry"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
post:
tags:
- Runners
summary: Append local runner job logs
description: Append log entries for a running local runner job
operationId: appendJobLogs
parameters:
- name: jobId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/LocalRunnerLogEntry"
responses:
"204":
description: No content
"400":
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/local-runners/jobs/{jobId}/cancel:
post:
tags:
- Runners
summary: Cancel local runner job
description: Cancel a pending or running local runner job
operationId: cancelJob
parameters:
- name: jobId
in: path
required: true
schema:
type: string
format: uuid
responses:
"204":
description: No content
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/local-runners/{runnerId}/bridge/commands:
post:
tags:
- Runners
summary: Submit bridge command
description: Submit a bridge command for execution by the local daemon
operationId: createBridgeCommand
parameters:
- name: runnerId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BridgeCommandSubmitRequest"
responses:
"201":
description: Command submitted
headers:
Location:
description: URI of the command
style: simple
content:
application/json:
schema:
$ref: "#/components/schemas/BridgeCommandSubmitResponse"
"404":
description: Runner not found or not connected
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"409":
description: Runner does not support bridge
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"429":
description: Too many requests
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/local-runners/jobs:
post:
tags:
- Runners
summary: Create local runner job
description: Create a local runner job and enqueue it for execution
operationId: createJob
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateLocalRunnerJobRequest"
responses:
"201":
description: Job created
headers:
Location:
description: URI of the job
style: simple
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"409":
description: Conflict
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/local-runners/{runnerId}:
get:
tags:
- Runners
summary: Get local runner
description: Get a single local runner with its registered agents
operationId: getRunner
parameters:
- name: runnerId
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Runner details
content:
application/json:
schema:
$ref: "#/components/schemas/LocalRunner"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
delete:
tags:
- Runners
summary: Disconnect local runner
description: "Disconnect a local runner, terminating its connection and failing\
\ any pending jobs"
operationId: disconnectRunner
parameters:
- name: runnerId
in: path
required: true
schema:
type: string
format: uuid
responses:
"204":
description: No content
/v1/private/local-runners/{runnerId}/bridge/commands/{commandId}:
get:
tags:
- Runners
summary: Get bridge command
description: "Get bridge command status, optionally long-polling for completion"
operationId: getBridgeCommand
parameters:
- name: runnerId
in: path
required: true
schema:
type: string
format: uuid
- name: commandId
in: path
required: true
schema:
type: string
format: uuid
- name: wait
in: query
schema:
type: boolean
default: false
- name: timeout
in: query
schema:
type: integer
format: int32
default: 30
responses:
"200":
description: Command state
content:
application/json:
schema:
$ref: "#/components/schemas/BridgeCommand"
"404":
description: Command not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/local-runners/jobs/{jobId}:
get:
tags:
- Runners
summary: Get local runner job
description: Get a single local runner job's status and results
operationId: getJob
parameters:
- name: jobId
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Job details
content:
application/json:
schema:
$ref: "#/components/schemas/LocalRunnerJob"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/local-runners/{runnerId}/heartbeats:
post:
tags:
- Runners
summary: Local runner heartbeat
description: Refresh local runner heartbeat
operationId: heartbeat
parameters:
- name: runnerId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/LocalRunnerHeartbeatRequest"
responses:
"200":
description: Heartbeat response
content:
application/json:
schema:
$ref: "#/components/schemas/LocalRunnerHeartbeatResponse"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"410":
description: Gone
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/local-runners/{runnerId}/jobs:
get:
tags:
- Runners
summary: List local runner jobs
description: List jobs for a local runner
operationId: listJobs
parameters:
- name: runnerId
in: path
required: true
schema:
type: string
format: uuid
- name: project_id
in: query
schema:
type: string
format: uuid
- name: page
in: query
schema:
minimum: 0
type: integer
format: int32
default: 0
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 25
responses:
"200":
description: Jobs list
content:
application/json:
schema:
$ref: "#/components/schemas/LocalRunnerJobPage"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/local-runners:
get:
tags:
- Runners
summary: List local runners
description: List local runners owned by the current user in the workspace
operationId: listRunners
parameters:
- name: project_id
in: query
required: true
schema:
type: string
format: uuid
- name: status
in: query
schema:
type: string
enum:
- pairing
- connected
- disconnected
- name: page
in: query
schema:
minimum: 0
type: integer
format: int32
default: 0
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 25
responses:
"200":
description: Runners list
content:
application/json:
schema:
$ref: "#/components/schemas/LocalRunnerPage"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/local-runners/{runnerId}/bridge/commands/next:
post:
tags:
- Runners
summary: Poll next bridge commands
description: Long-poll for pending bridge commands (batch)
operationId: nextBridgeCommands
parameters:
- name: runnerId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BridgeCommandNextRequest"
responses:
"200":
description: Commands batch
content:
application/json:
schema:
$ref: "#/components/schemas/BridgeCommandBatchResponse"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/local-runners/{runnerId}/jobs/next:
post:
tags:
- Runners
summary: Next local runner job
description: Long-poll for the next pending local runner job
operationId: nextJob
parameters:
- name: runnerId
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: "Job available, or null if no pending jobs"
content:
application/json:
schema:
nullable: true
allOf:
- $ref: "#/components/schemas/LocalRunnerJob"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/local-runners/{runnerId}/checklist:
patch:
tags:
- Runners
summary: Patch runner checklist
description: Partial update of the runner's checklist (deep merge)
operationId: patchChecklist
parameters:
- name: runnerId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
type: object
responses:
"204":
description: No content
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/local-runners/{runnerId}/agents:
put:
tags:
- Runners
summary: Register local runner agents
description: Register or update the local runner's agent list
operationId: registerAgents
parameters:
- name: runnerId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
description: Map of agent name to agent definition
content:
application/json:
schema:
type: object
responses:
"204":
description: No content
"400":
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/local-runners/{runnerId}/bridge/commands/{commandId}/results:
post:
tags:
- Runners
summary: Report bridge command result
description: Report bridge command completion or failure
operationId: reportBridgeResult
parameters:
- name: runnerId
in: path
required: true
schema:
type: string
format: uuid
- name: commandId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BridgeCommandResultRequest"
responses:
"204":
description: Result accepted
"404":
description: Command not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"409":
description: Already completed
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/local-runners/jobs/{jobId}/results:
post:
tags:
- Runners
summary: Report local runner job result
description: Report local runner job completion or failure
operationId: reportJobResult
parameters:
- name: jobId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/LocalRunnerJobResultRequest"
responses:
"204":
description: No content
"400":
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/manual-evaluation/spans:
post:
tags:
- Manual Evaluation
summary: Manually evaluate spans
description: Manually trigger evaluation rules on selected spans. Bypasses sampling
and enqueues all specified spans for evaluation.
operationId: evaluateSpans
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ManualEvaluationRequest"
responses:
"202":
description: Accepted - Evaluation request queued successfully
content:
application/json:
schema:
$ref: "#/components/schemas/ManualEvaluationResponse"
"400":
description: Bad Request - Invalid request or missing automation rules
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"404":
description: Not Found - Project not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/manual-evaluation/threads:
post:
tags:
- Manual Evaluation
summary: Manually evaluate threads
description: Manually trigger evaluation rules on selected threads. Bypasses
sampling and enqueues all specified threads for evaluation.
operationId: evaluateThreads
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ManualEvaluationRequest"
responses:
"202":
description: Accepted - Evaluation request queued successfully
content:
application/json:
schema:
$ref: "#/components/schemas/ManualEvaluationResponse"
"400":
description: Bad Request - Invalid request or missing automation rules
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"404":
description: Not Found - Project not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/manual-evaluation/traces:
post:
tags:
- Manual Evaluation
summary: Manually evaluate traces
description: Manually trigger evaluation rules on selected traces. Bypasses
sampling and enqueues all specified traces for evaluation.
operationId: evaluateTraces
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ManualEvaluationRequest"
responses:
"202":
description: Accepted - Evaluation request queued successfully
content:
application/json:
schema:
$ref: "#/components/schemas/ManualEvaluationResponse"
"400":
description: Bad Request - Invalid request or missing automation rules
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"404":
description: Not Found - Project not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/ollama/models:
post:
tags:
- Ollama
summary: List available Ollama models
description: "Fetches the list of models available from the Ollama instance.\
\ URL may be provided with or without /v1 suffix (e.g., http://localhost:11434\
\ or http://localhost:11434/v1). The /v1 suffix will be automatically removed\
\ for model discovery. For actual LLM inference, use the URL with /v1 suffix\
\ for OpenAI-compatible endpoints."
operationId: listModels
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/OllamaInstanceBaseUrlRequest"
required: true
responses:
"200":
description: Models retrieved successfully
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/OllamaModel"
"422":
description: Unprocessable Content - Invalid URL format
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"500":
description: Failed to fetch models
"503":
description: Ollama provider is disabled
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/ollama/test-connection:
post:
tags:
- Ollama
summary: Test connection to Ollama instance
description: "Validates that the provided Ollama URL is reachable. URL may be\
\ provided with or without /v1 suffix (e.g., http://localhost:11434 or http://localhost:11434/v1).\
\ The /v1 suffix will be automatically removed for connection testing. For\
\ inference, use the URL with /v1 suffix."
operationId: testConnection
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/OllamaInstanceBaseUrlRequest"
required: true
responses:
"200":
description: Connection test successful
content:
application/json:
schema:
$ref: "#/components/schemas/OllamaConnectionTestResponse"
"422":
description: Unprocessable Content - Invalid URL format
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"502":
description: Connection test failed - Ollama instance unreachable
content:
application/json:
schema:
$ref: "#/components/schemas/OllamaConnectionTestResponse"
"503":
description: Ollama provider is disabled
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/ollie/state:
get:
tags:
- Ollie State
summary: Download ollie state
description: Download stored ollie state file
operationId: downloadOllieState
responses:
"200":
description: Ollie state file
content:
application/gzip:
schema:
type: string
format: binary
"401":
description: Unauthorized
content:
application/gzip:
schema:
$ref: "#/components/schemas/ErrorMessage"
"404":
description: Not found
content:
application/gzip:
schema:
$ref: "#/components/schemas/ErrorMessage"
put:
tags:
- Ollie State
summary: Replace ollie state
description: "Upload gzip-compressed SQLite DB file, replacing any existing\
\ state"
operationId: replaceOllieState
parameters:
- name: Content-Length
in: header
schema:
type: integer
format: int64
requestBody:
content:
application/gzip:
schema:
type: object
responses:
"204":
description: No content
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"429":
description: Rate limit exceeded
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
delete:
tags:
- Ollie State
summary: Delete ollie state
description: Clear stored ollie state
operationId: deleteOllieState
responses:
"204":
description: No content
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/otel/v1/traces:
post:
tags:
- OpenTelemetry Ingestion
operationId: receiveProtobufTraces
requestBody:
content:
application/x-protobuf:
schema:
$ref: "#/components/schemas/JsonNode"
responses:
default:
description: default response
content:
'*/*': {}
/v1/private/optimizations/studio/{id}/cancel:
get:
tags:
- Optimizations
summary: Cancel Studio optimizations
description: Cancel Studio optimizations by id
operationId: cancelStudioOptimizations
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"501":
description: Not Implemented
/v1/private/optimizations:
get:
tags:
- Optimizations
summary: Find optimizations
description: Find optimizations
operationId: findOptimizations
parameters:
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: dataset_id
in: query
schema:
type: string
format: uuid
- name: name
in: query
schema:
type: string
description: "Filter optimizations by name (partial match, case insensitive)"
- name: dataset_name
in: query
schema:
type: string
description: Filter optimizations by dataset name (partial match)
- name: dataset_deleted
in: query
schema:
type: boolean
- name: project_id
in: query
schema:
type: string
format: uuid
- name: filters
in: query
schema:
type: string
responses:
"200":
description: Optimizations resource
content:
application/json:
schema:
$ref: "#/components/schemas/OptimizationPage_Public"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
put:
tags:
- Optimizations
summary: Upsert optimization
description: Upsert optimization
operationId: upsertOptimization
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Optimization_Write"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/optimizations/{id}"
post:
tags:
- Optimizations
summary: Create optimization
description: Create optimization
operationId: createOptimization
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Optimization_Write"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/optimizations/{id}"
/v1/private/optimizations/delete:
post:
tags:
- Optimizations
summary: Delete optimizations by id
description: Delete optimizations by id
operationId: deleteOptimizationsById
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DeleteIdsHolder"
responses:
"204":
description: No content
/v1/private/optimizations/{id}:
get:
tags:
- Optimizations
summary: Get optimization by id
description: Get optimization by id
operationId: getOptimizationById
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Optimization resource
content:
application/json:
schema:
$ref: "#/components/schemas/Optimization_Public"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
put:
tags:
- Optimizations
summary: Update optimization by id
description: Update optimization by id
operationId: updateOptimizationsById
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/OptimizationUpdate"
responses:
"204":
description: No content
/v1/private/optimizations/studio/{id}/logs:
get:
tags:
- Optimizations
summary: Get Studio optimization logs
description: Get presigned S3 URL for downloading optimization logs
operationId: getStudioOptimizationLogs
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Logs response
content:
application/json:
schema:
$ref: "#/components/schemas/OptimizationStudioLog"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/pairing/sessions/{sessionId}/activate:
post:
tags:
- Pairing
summary: Activate a pairing session
description: Verify the activation HMAC and flip the runner row to CONNECTED
operationId: activatePairingSession
parameters:
- name: sessionId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ActivateRequest"
responses:
"201":
description: Session activated
headers:
Location:
description: URI of the runner
style: simple
"403":
description: Invalid HMAC
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"404":
description: Session not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"409":
description: Session already activated
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"422":
description: Unprocessable entity
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"429":
description: Too many requests
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/pairing/sessions:
post:
tags:
- Pairing
summary: Create a pairing session
description: Register a short-lived pairing session that a local daemon will
later activate via HMAC
operationId: createPairingSession
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateSessionRequest"
responses:
"201":
description: Session created
content:
application/json:
schema:
$ref: "#/components/schemas/CreateSessionResponse"
"400":
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"404":
description: Project not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"422":
description: Unprocessable entity
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"429":
description: Too many requests
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/projects/{projectId}/alerts:
get:
tags:
- Projects
summary: Find alerts by project
description: Find alerts scoped to a project
operationId: findAlertsByProject
parameters:
- name: projectId
in: path
required: true
schema:
type: string
format: uuid
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: sorting
in: query
schema:
type: string
- name: filters
in: query
schema:
type: string
responses:
"200":
description: Alerts page
content:
application/json:
schema:
$ref: "#/components/schemas/AlertPage_Public"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
/v1/private/projects/{projectId}/dashboards:
get:
tags:
- Projects
summary: Find dashboards by project
description: Find dashboards scoped to a project
operationId: findDashboardsByProject
parameters:
- name: projectId
in: path
required: true
schema:
type: string
format: uuid
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: name
in: query
schema:
type: string
description: "Filter dashboards by name (partial match, case insensitive)"
- name: sorting
in: query
schema:
type: string
- name: filters
in: query
schema:
type: string
responses:
"200":
description: Dashboard page
content:
application/json:
schema:
$ref: "#/components/schemas/DashboardPage_Public"
/v1/private/projects/{projectId}/datasets:
get:
tags:
- Projects
summary: Find datasets by project
description: Find datasets scoped to a project
operationId: findDatasetsByProject
parameters:
- name: projectId
in: path
required: true
schema:
type: string
format: uuid
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: with_experiments_only
in: query
schema:
type: boolean
- name: with_optimizations_only
in: query
schema:
type: boolean
- name: name
in: query
schema:
type: string
description: "Filter datasets by name (partial match, case insensitive)"
- name: sorting
in: query
schema:
type: string
- name: filters
in: query
schema:
type: string
responses:
"200":
description: Dataset page
content:
application/json:
schema:
$ref: "#/components/schemas/DatasetPage_Public"
/v1/private/projects/{projectId}/experiments:
get:
tags:
- Projects
summary: Find experiments by project
description: Find experiments scoped to a project
operationId: findExperimentsByProject
parameters:
- name: projectId
in: path
required: true
schema:
type: string
format: uuid
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: datasetId
in: query
schema:
type: string
format: uuid
- name: optimization_id
in: query
schema:
type: string
format: uuid
- name: types
in: query
schema:
type: string
- name: name
in: query
schema:
type: string
description: "Filter experiments by name (partial match, case insensitive)"
- name: dataset_deleted
in: query
schema:
type: boolean
- name: sorting
in: query
schema:
type: string
- name: filters
in: query
schema:
type: string
- name: experiment_ids
in: query
schema:
type: string
description: Filter experiments by a list of experiment IDs
- name: force_sorting
in: query
schema:
type: boolean
description: Force sorting even when exceeding the endpoint result set limit.
May result in slower queries
default: false
responses:
"200":
description: Experiments page
content:
application/json:
schema:
$ref: "#/components/schemas/ExperimentPage_Public"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
/v1/private/projects/{projectId}/optimizations:
get:
tags:
- Projects
summary: Find optimizations by project
description: Find optimizations scoped to a project
operationId: findOptimizationsByProject
parameters:
- name: projectId
in: path
required: true
schema:
type: string
format: uuid
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: dataset_id
in: query
schema:
type: string
format: uuid
- name: dataset_name
in: query
schema:
type: string
- name: name
in: query
schema:
type: string
description: "Filter optimizations by name (partial match, case insensitive)"
- name: dataset_deleted
in: query
schema:
type: boolean
- name: filters
in: query
schema:
type: string
responses:
"200":
description: Optimizations page
content:
application/json:
schema:
$ref: "#/components/schemas/OptimizationPage_Public"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
/v1/private/projects/{projectId}/prompts:
get:
tags:
- Projects
summary: Get prompts by project
description: Get prompts scoped to a project
operationId: getPromptsByProject
parameters:
- name: projectId
in: path
required: true
schema:
type: string
format: uuid
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: name
in: query
schema:
type: string
description: "Filter prompts by name (partial match, case insensitive)"
- name: sorting
in: query
schema:
type: string
- name: filters
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PromptPage_Public"
/v1/private/projects:
get:
tags:
- Projects
summary: Find projects
description: Find projects
operationId: findProjects
parameters:
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: name
in: query
schema:
type: string
description: "Filter projects by name (partial match, case insensitive)"
- name: sorting
in: query
schema:
type: string
responses:
"200":
description: Project resource
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectPage_Public"
post:
tags:
- Projects
summary: Create project
description: Create project
operationId: createProject
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Project_Write"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/projects/{projectId}"
"422":
description: Unprocessable Content
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/projects/{id}:
get:
tags:
- Projects
summary: Get project by id
description: Get project by id
operationId: getProjectById
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Project resource
content:
application/json:
schema:
$ref: "#/components/schemas/Project_Public"
delete:
tags:
- Projects
summary: Delete project by id
description: Delete project by id
operationId: deleteProjectById
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"204":
description: No Content
"409":
description: Conflict
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
patch:
tags:
- Projects
summary: Update project by id
description: Update project by id
operationId: updateProject
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectUpdate"
responses:
"204":
description: No Content
"422":
description: Unprocessable Content
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/projects/delete:
post:
tags:
- Projects
summary: Delete projects
description: Delete projects batch
operationId: deleteProjectsBatch
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BatchDelete"
responses:
"204":
description: No Content
/v1/private/projects/feedback-scores/names:
get:
tags:
- Projects
summary: Find Feedback Score names By Project Ids
description: Find Feedback Score names By Project Ids
operationId: findFeedbackScoreNamesByProjectIds
parameters:
- name: project_ids
in: query
schema:
type: string
responses:
"200":
description: Feedback Scores resource
content:
application/json:
schema:
$ref: "#/components/schemas/FeedbackScoreNames"
/v1/private/projects/{id}/token-usage/names:
get:
tags:
- Projects
summary: Find Token Usage names
description: Find Token Usage names
operationId: findTokenUsageNames
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Token Usage names resource
content:
application/json:
schema:
$ref: "#/components/schemas/TokenUsageNames"
/v1/private/projects/{id}/kpi-cards:
post:
tags:
- Projects
summary: Get Project KPI Cards
description: Gets KPI card metrics for a project
operationId: getProjectKpiCards
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/KpiCardRequest"
responses:
"200":
description: KPI Card Metrics
content:
application/json:
schema:
$ref: "#/components/schemas/KpiCardResponse"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/projects/{id}/metrics:
post:
tags:
- Projects
summary: Get Project Metrics
description: Gets specified metrics for a project
operationId: getProjectMetrics
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectMetricRequest_Public"
responses:
"200":
description: Project Metrics
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectMetricResponse_Public"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
/v1/private/projects/stats:
get:
tags:
- Projects
summary: Get Project Stats
description: Get Project Stats
operationId: getProjectStats
parameters:
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: name
in: query
schema:
type: string
description: "Filter projects by name (partial match, case insensitive)"
- name: filters
in: query
schema:
type: string
- name: sorting
in: query
schema:
type: string
responses:
"200":
description: Project Stats
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectStatsSummary"
/v1/private/projects/retrieve:
post:
tags:
- Projects
summary: Retrieve project
description: Retrieve project
operationId: retrieveProject
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectRetrieve_Detailed"
responses:
"200":
description: Project resource
content:
application/json:
schema:
$ref: "#/components/schemas/Project_Detailed"
"422":
description: Unprocessable Content
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Detailed"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Detailed"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Detailed"
/v1/private/prompts:
get:
tags:
- Prompts
summary: Get prompts
description: Get prompts
operationId: getPrompts
parameters:
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: name
in: query
schema:
type: string
description: "Filter prompts by name (partial match, case insensitive)"
- name: project_id
in: query
schema:
type: string
format: uuid
- name: sorting
in: query
schema:
type: string
- name: filters
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PromptPage_Public"
post:
tags:
- Prompts
summary: Create prompt
description: Create prompt
operationId: createPrompt
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Prompt_Write"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/prompts/{promptId}"
"422":
description: Unprocessable Content
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"409":
description: Conflict
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/prompts/versions:
post:
tags:
- Prompts
summary: Create prompt version
description: Create prompt version
operationId: createPromptVersion
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreatePromptVersion_Detail"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PromptVersion_Detail"
"422":
description: Unprocessable Content
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Detail"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Detail"
"409":
description: Conflict
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Detail"
patch:
tags:
- Prompts
summary: Update prompt versions
description: |
Update one or more prompt versions.
Note: Prompt versions are immutable by design.
Only organizational properties, such as tags etc., can be updated.
Core properties like template and metadata cannot be modified after creation.
PATCH semantics:
- non-empty values update the field
- null values preserve existing field values (no change)
- empty values explicitly clear the field
operationId: updatePromptVersions
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/PromptVersionBatchUpdate"
responses:
"204":
description: No Content
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/prompts/{id}:
get:
tags:
- Prompts
summary: Get prompt by id
description: "Get prompt by id; when mask_id or environment is provided, requestedVersion\
\ is populated with the resolved version. mask_id and environment are mutually\
\ exclusive."
operationId: getPromptById
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: mask_id
in: query
description: "Optional mask version id; when set, requestedVersion is the\
\ mask row for that id"
schema:
type: string
format: uuid
- name: environment
in: query
description: "Optional environment name; when set, requestedVersion is the\
\ version mapped to that environment for the prompt"
schema:
maxLength: 150
minLength: 0
pattern: "^[A-Za-z0-9_-]+$"
type: string
responses:
"200":
description: Prompt resource
content:
application/json:
schema:
$ref: "#/components/schemas/Prompt_Detail"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Detail"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Detail"
put:
tags:
- Prompts
summary: Update prompt
description: Update prompt
operationId: updatePrompt
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Prompt_Updatable"
responses:
"204":
description: No content
"422":
description: Unprocessable Content
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"409":
description: Conflict
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
delete:
tags:
- Prompts
summary: Delete prompt
description: Delete prompt
operationId: deletePrompt
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"204":
description: No content
/v1/private/prompts/delete:
post:
tags:
- Prompts
summary: Delete prompts
description: Delete prompts batch
operationId: deletePromptsBatch
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BatchDelete"
responses:
"204":
description: No Content
/v1/private/prompts/by-commit/{commit}:
get:
tags:
- Prompts
summary: Get prompt by commit
description: Get prompt by commit
operationId: getPromptByCommit
parameters:
- name: commit
in: path
required: true
schema:
pattern: "^[a-zA-Z0-9]{8}$"
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Prompt_Detail"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Detail"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Detail"
"409":
description: Conflict
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Detail"
/v1/private/prompts/versions/{versionId}:
get:
tags:
- Prompts
summary: Get prompt version by id
description: Get prompt version by id
operationId: getPromptVersionById
parameters:
- name: versionId
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Prompt version resource
content:
application/json:
schema:
$ref: "#/components/schemas/PromptVersion_Detail"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Detail"
/v1/private/prompts/{promptId}/versions/by-number/{versionNumber}:
get:
tags:
- Prompts
summary: Get prompt version by sequential number
description: Get a prompt version by its sequential v<N> number for the given
prompt.
operationId: getPromptVersionByNumber
parameters:
- name: promptId
in: path
required: true
schema:
type: string
format: uuid
- name: versionNumber
in: path
required: true
schema:
maxLength: 10
minLength: 0
pattern: v\d+
type: string
responses:
"200":
description: Prompt version resource
content:
application/json:
schema:
$ref: "#/components/schemas/PromptVersion_Detail"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Detail"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Detail"
/v1/private/prompts/{id}/versions:
get:
tags:
- Prompts
summary: Get prompt versions
description: Get prompt versions
operationId: getPromptVersions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: search
in: query
description: Search text to find in template or change description fields
schema:
type: string
- name: sorting
in: query
schema:
type: string
- name: filters
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PromptVersionPage_Public"
/v1/private/prompts/retrieve-by-commits:
post:
tags:
- Prompts
summary: Get prompts by commits
description: Get prompts by prompt version commits
operationId: getPromptsByCommits
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/PromptVersionCommitsRequest_Public"
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PromptVersionLink_Public"
/v1/private/prompts/{promptId}/versions/{versionId}/restore:
post:
tags:
- Prompts
summary: Restore prompt version
description: Restore a prompt version by creating a new version with the content
from the specified version
operationId: restorePromptVersion
parameters:
- name: promptId
in: path
required: true
schema:
type: string
format: uuid
- name: versionId
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PromptVersion_Detail"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Detail"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Detail"
/v1/private/prompts/versions/retrieve:
post:
tags:
- Prompts
summary: Retrieve prompt version
description: Retrieve prompt version
operationId: retrievePromptVersion
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/PromptVersionRetrieve_Detail"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PromptVersion_Detail"
"422":
description: Unprocessable Content
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Detail"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Detail"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Detail"
/v1/private/prompts/versions/retrieve-by-ids:
post:
tags:
- Prompts
summary: Retrieve prompt versions by ids
description: Retrieve a batch of prompt versions by their ids. Typically used
by the UI to resolve mask overlays.
operationId: retrievePromptVersionsByIds
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/PromptVersionIdsRequest_Detail"
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PromptVersion_Detail"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Detail"
/v1/private/prompts/versions/{versionId}/environments:
patch:
tags:
- Prompts
summary: Set prompt version environment
description: |
Set or clear the environment owned by a prompt version.
Setting a non-null environment moves ownership atomically: any previous owner of that
environment for the same prompt has its environment cleared in the same transaction.
Setting null clears the environment from the version.
The environment must already exist in the workspace registry; unknown names return 404.
operationId: setPromptVersionEnvironment
parameters:
- name: versionId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/PromptVersionEnvironmentUpdate"
responses:
"204":
description: No Content
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/projects/{projectId}/activities:
get:
tags:
- Projects
summary: Get recent activity for a project
description: "Returns the most recent activity items across all entity types\
\ for a project, sorted by date descending."
operationId: getRecentActivity
parameters:
- name: projectId
in: path
required: true
schema:
type: string
format: uuid
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
maximum: 100
minimum: 1
type: integer
format: int32
default: 10
responses:
"200":
description: Recent activity page
content:
application/json:
schema:
$ref: "#/components/schemas/RecentActivityPage_Public"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
/v1/private/report-failures:
get:
tags:
- Report Failures
summary: List failures for a project
description: "Returns failures for the given project id and type, most recent\
\ first."
operationId: findReportFailures
parameters:
- name: type
in: query
required: true
schema:
type: string
enum:
- agent_insights
- name: project_id
in: query
required: true
schema:
type: string
format: uuid
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
maximum: 100
minimum: 1
type: integer
format: int32
default: 10
responses:
"200":
description: Failures page
content:
application/json:
schema:
$ref: "#/components/schemas/ReportFailurePage"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
post:
tags:
- Report Failures
summary: Record a report/job failure
description: "Appends a failure row keyed by (project_id, type). Append-only\
\ — never overwrites earlier failures."
operationId: createReportFailure
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ReportFailure"
responses:
"201":
description: Created
headers:
Location:
style: simple
schema:
type: string
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/projects/{projectId}/reports/{reportId}/complete:
post:
tags:
- Reports
summary: Complete report generation
description: Callback from Ollie to update report status and content after generation.
operationId: completeReport
parameters:
- name: projectId
in: path
required: true
schema:
type: string
format: uuid
- name: reportId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ReportCompleteRequest"
responses:
"204":
description: Report updated
"404":
description: Report not found
/v1/private/projects/{projectId}/reports/generate:
post:
tags:
- Reports
summary: Trigger report generation
description: Creates a pending report and triggers asynchronous generation via
the orchestrator.
operationId: generateReport
parameters:
- name: projectId
in: path
required: true
schema:
type: string
format: uuid
responses:
"202":
description: Report generation triggered
content:
application/json:
schema:
$ref: "#/components/schemas/GenerateReportResponse"
"401":
description: Unauthorized
"403":
description: Forbidden
/v1/private/projects/{projectId}/reports/preferences:
get:
tags:
- Reports
summary: Get report preferences
description: "Returns report preferences for a project, or null if none have\
\ been set."
operationId: getReportPreference
parameters:
- name: projectId
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Report preferences or null
content:
application/json:
schema:
$ref: "#/components/schemas/ReportPreference"
put:
tags:
- Reports
summary: Update report preferences
description: Enable or disable daily report generation for a project.
operationId: updateReportPreference
parameters:
- name: projectId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ReportPreference"
responses:
"200":
description: Updated preferences
content:
application/json:
schema:
$ref: "#/components/schemas/ReportPreference"
/v1/private/projects/{projectId}/reports:
get:
tags:
- Reports
summary: Get reports for a project
description: "Returns a paginated list of reports, newest first."
operationId: getReports
parameters:
- name: projectId
in: path
required: true
schema:
type: string
format: uuid
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
maximum: 100
minimum: 1
type: integer
format: int32
default: 10
responses:
"200":
description: Reports page
content:
application/json:
schema:
$ref: "#/components/schemas/OllieReportPage"
/v1/private/retention/rules:
get:
tags:
- Retention Rules
summary: Find retention rules
description: List retention rules for the caller's workspace. Defaults to active
only.
operationId: findRetentionRules
parameters:
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: include_inactive
in: query
schema:
type: boolean
default: false
responses:
"200":
description: Retention rules page
content:
application/json:
schema:
$ref: "#/components/schemas/RetentionRulePage_Public"
post:
tags:
- Retention Rules
summary: Create retention rule
description: Create a new retention rule. Auto-deactivates any existing active
rule for the same scope.
operationId: createRetentionRule
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/RetentionRule_Write"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/retention/rules/{ruleId}"
content:
application/json:
schema:
$ref: "#/components/schemas/RetentionRule_Public"
/v1/private/retention/rules/{ruleId}:
get:
tags:
- Retention Rules
summary: Get retention rule by id
description: Get a specific retention rule by id
operationId: getRetentionRuleById
parameters:
- name: ruleId
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Retention rule
content:
application/json:
schema:
$ref: "#/components/schemas/RetentionRule_Public"
"404":
description: Retention rule not found
delete:
tags:
- Retention Rules
summary: Deactivate retention rule
description: Soft-deactivate a retention rule (sets enabled=false). Rules are
never hard-deleted for audit trail.
operationId: deactivateRetentionRule
parameters:
- name: ruleId
in: path
required: true
schema:
type: string
format: uuid
responses:
"204":
description: No content
"404":
description: Retention rule not found
/v1/private/toggles:
get:
tags:
- Service Toggles
summary: Get Service Toggles
description: Get Service Toggles
operationId: getServiceToggles
responses:
"200":
description: Service Toggles
content:
application/json:
schema:
$ref: "#/components/schemas/ServiceTogglesConfig"
/v1/private/spans/{id}/comments:
post:
tags:
- Spans
summary: Add span comment
description: Add span comment
operationId: addSpanComment
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Comment"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/spans/{spanId}/comments/{commentId}"
/v1/private/spans/{id}/feedback-scores:
put:
tags:
- Spans
summary: Add span feedback score
description: Add span feedback score
operationId: addSpanFeedbackScore
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/FeedbackScore"
responses:
"204":
description: No Content
/v1/private/spans/batch:
post:
tags:
- Spans
summary: Create spans
description: Create spans
operationId: createSpans
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/SpanBatch_Write"
responses:
"204":
description: No Content
patch:
tags:
- Spans
summary: Batch update spans
description: Update multiple spans
operationId: batchUpdateSpans
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/SpanBatchUpdate"
responses:
"204":
description: No Content
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/spans:
get:
tags:
- Spans
summary: Get spans by project_name or project_id and optionally by trace_id
and/or type
description: Get spans by project_name or project_id and optionally by trace_id
and/or type
operationId: getSpansByProject
parameters:
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: project_name
in: query
schema:
type: string
- name: project_id
in: query
schema:
type: string
format: uuid
- name: trace_id
in: query
schema:
type: string
format: uuid
- name: type
in: query
schema:
type: string
enum:
- general
- tool
- llm
- guardrail
- name: filters
in: query
schema:
type: string
- name: truncate
in: query
schema:
type: boolean
description: "Truncate input, output and metadata to slim payloads"
default: false
- name: strip_attachments
in: query
schema:
type: boolean
description: "If true, returns attachment references like [file.png]; if\
\ false, downloads and reinjects stripped attachments"
default: false
- name: sorting
in: query
schema:
type: string
- name: exclude
in: query
schema:
type: string
- name: search
in: query
schema:
type: string
description: Full-text search across span fields
- name: from_time
in: query
schema:
type: string
description: Filter spans created from this time (ISO-8601 format).
format: date-time
- name: to_time
in: query
schema:
type: string
description: "Filter spans created up to this time (ISO-8601 format). If\
\ not provided, defaults to current time. Must be after 'from_time'."
format: date-time
responses:
"200":
description: Spans resource
content:
application/json:
schema:
$ref: "#/components/schemas/SpanPage_Public"
post:
tags:
- Spans
summary: Create span
description: Create span
operationId: createSpan
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Span_Write"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/spans/{spanId}"
"409":
description: Conflict
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/spans/{id}:
get:
tags:
- Spans
summary: Get span by id
description: Get span by id
operationId: getSpanById
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: strip_attachments
in: query
schema:
type: boolean
description: "If true, returns attachment references like [file.png]; if\
\ false, downloads and reinjects attachment content from S3 (default:\
\ false for backward compatibility)"
default: false
responses:
"200":
description: Span resource
content:
application/json:
schema:
$ref: "#/components/schemas/Span_Public"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/Span_Public"
delete:
tags:
- Spans
summary: Delete span by id
description: Delete span by id
operationId: deleteSpanById
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"501":
description: Not implemented
"204":
description: No Content
patch:
tags:
- Spans
summary: Update span by id
description: Update span by id
operationId: updateSpan
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/SpanUpdate"
responses:
"204":
description: No Content
"404":
description: Not found
/v1/private/spans/comments/delete:
post:
tags:
- Spans
summary: Delete span comments
description: Delete span comments
operationId: deleteSpanComments
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BatchDelete"
responses:
"204":
description: No Content
/v1/private/spans/{id}/feedback-scores/delete:
post:
tags:
- Spans
summary: Delete span feedback score
description: Delete span feedback score
operationId: deleteSpanFeedbackScore
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DeleteFeedbackScore"
responses:
"204":
description: No Content
/v1/private/spans/feedback-scores/names:
get:
tags:
- Spans
summary: Find Feedback Score names
description: Find Feedback Score names
operationId: findFeedbackScoreNames_1
parameters:
- name: project_id
in: query
schema:
type: string
format: uuid
- name: type
in: query
schema:
type: string
enum:
- general
- tool
- llm
- guardrail
responses:
"200":
description: Feedback Scores resource
content:
application/json:
schema:
$ref: "#/components/schemas/FeedbackScoreNames_Public"
/v1/private/spans/{spanId}/comments/{commentId}:
get:
tags:
- Spans
summary: Get span comment
description: Get span comment
operationId: getSpanComment
parameters:
- name: commentId
in: path
required: true
schema:
type: string
format: uuid
- name: spanId
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Comment resource
content:
application/json:
schema:
$ref: "#/components/schemas/Comment"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/spans/stats:
get:
tags:
- Spans
summary: Get span stats
description: Get span stats
operationId: getSpanStats
parameters:
- name: project_id
in: query
schema:
type: string
format: uuid
- name: project_name
in: query
schema:
type: string
- name: trace_id
in: query
schema:
type: string
format: uuid
- name: type
in: query
schema:
type: string
enum:
- general
- tool
- llm
- guardrail
- name: filters
in: query
schema:
type: string
- name: search
in: query
schema:
type: string
description: Full-text search across span fields
- name: from_time
in: query
schema:
type: string
description: Filter spans created from this time (ISO-8601 format).
format: date-time
- name: to_time
in: query
schema:
type: string
description: "Filter spans created up to this time (ISO-8601 format). If\
\ not provided, defaults to current time. Must be after 'from_time'."
format: date-time
responses:
"200":
description: Span stats resource
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectStats_Public"
/v1/private/spans/feedback-scores:
put:
tags:
- Spans
summary: Batch feedback scoring for spans
description: Batch feedback scoring for spans
operationId: scoreBatchOfSpans
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/FeedbackScoreBatch"
responses:
"204":
description: No Content
/v1/private/spans/search:
post:
tags:
- Spans
summary: Search spans
description: Search spans
operationId: searchSpans
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/SpanSearchStreamRequest_Public"
responses:
"200":
description: Spans stream or error during process
content:
application/octet-stream:
schema:
maxItems: 2000
type: array
items:
type: string
anyOf:
- $ref: "#/components/schemas/Span_Public"
- $ref: "#/components/schemas/ErrorMessage_Public"
"400":
description: Bad Request
content:
application/octet-stream:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
/v1/private/spans/exists:
get:
tags:
- Spans
summary: Check whether a project has spans
description: Returns whether the project has at least one span matching the
given scope. Cheap existence probe (LIMIT 1) used to drive empty-state decisions
without scanning or aggregating the whole project.
operationId: spansExist
parameters:
- name: project_id
in: query
schema:
type: string
format: uuid
- name: project_name
in: query
schema:
type: string
- name: source
in: query
schema:
type: string
description: "Restrict the probe to a single ingestion source (e.g. 'sdk'\
\ for the Logs empty state), matching the rendered list's logs-source\
\ scope. Omit to probe any source."
responses:
"200":
description: Span existence
content:
application/json:
schema:
$ref: "#/components/schemas/ExistenceResponse"
/v1/private/spans/comments/{commentId}:
patch:
tags:
- Spans
summary: Update span comment by id
description: Update span comment by id
operationId: updateSpanComment
parameters:
- name: commentId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Comment"
responses:
"204":
description: No Content
"404":
description: Not found
/v1/private/traces/threads/{id}/comments:
post:
tags:
- Traces
summary: Add thread comment
description: Add thread comment
operationId: addThreadComment
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Comment"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/traces/threads/{threadId}/comments/{commentId}"
/v1/private/traces/{id}/comments:
post:
tags:
- Traces
summary: Add trace comment
description: Add trace comment
operationId: addTraceComment
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Comment"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/traces/{traceId}/comments/{commentId}"
/v1/private/traces/{id}/feedback-scores:
put:
tags:
- Traces
summary: Add trace feedback score
description: Add trace feedback score
operationId: addTraceFeedbackScore
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/FeedbackScore"
responses:
"204":
description: No Content
/v1/private/traces/batch:
post:
tags:
- Traces
summary: Create traces
description: Create traces
operationId: createTraces
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/TraceBatch_Write"
responses:
"204":
description: No Content
patch:
tags:
- Traces
summary: Batch update traces
description: Update multiple traces
operationId: batchUpdateTraces
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/TraceBatchUpdate"
responses:
"204":
description: No Content
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/traces/threads/batch:
patch:
tags:
- Traces
summary: Batch update threads
description: Update multiple threads
operationId: batchUpdateThreads
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/TraceThreadBatchUpdate"
responses:
"204":
description: No Content
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/traces/threads/close:
put:
tags:
- Traces
summary: Close trace thread(s)
description: Close one or multiple trace threads. Supports both single thread_id
and multiple thread_ids for batch operations.
operationId: closeTraceThread
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/TraceThreadBatchIdentifier"
responses:
"204":
description: No Content
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/traces:
get:
tags:
- Traces
summary: Get traces by project_name or project_id
description: Get traces by project_name or project_id
operationId: getTracesByProject
parameters:
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: project_name
in: query
schema:
type: string
- name: project_id
in: query
schema:
type: string
format: uuid
- name: filters
in: query
schema:
type: string
- name: truncate
in: query
schema:
type: boolean
description: "Truncate input, output and metadata to slim payloads"
default: false
- name: strip_attachments
in: query
schema:
type: boolean
description: "If true, returns attachment references like [file.png]; if\
\ false, downloads and reinjects stripped attachments"
default: false
- name: sorting
in: query
schema:
type: string
- name: exclude
in: query
schema:
type: string
- name: search
in: query
schema:
type: string
description: Full-text search across trace fields
- name: from_time
in: query
schema:
type: string
description: Filter traces created from this time (ISO-8601 format).
format: date-time
- name: to_time
in: query
schema:
type: string
description: "Filter traces created up to this time (ISO-8601 format). If\
\ not provided, defaults to current time. Must be after 'from_time'."
format: date-time
- name: annotation_queue_id
in: query
schema:
type: string
description: Filter traces belonging to this annotation queue and scope
feedback scores/comments to it
format: uuid
responses:
"200":
description: Trace resource
content:
application/json:
schema:
$ref: "#/components/schemas/TracePage_Public"
post:
tags:
- Traces
summary: Create trace
description: Get trace
operationId: createTrace
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Trace_Write"
responses:
"201":
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: "${basePath}/v1/private/traces/{traceId}"
/v1/private/traces/{id}:
get:
tags:
- Traces
summary: Get trace by id
description: Get trace by id
operationId: getTraceById
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: strip_attachments
in: query
schema:
type: boolean
description: "If true, returns attachment references like [file.png]; if\
\ false, downloads and reinjects attachment content from S3 (default:\
\ false for backward compatibility)"
default: false
responses:
"200":
description: Trace resource
content:
application/json:
schema:
$ref: "#/components/schemas/Trace_Public"
delete:
tags:
- Traces
summary: Delete trace by id
description: Delete trace by id
operationId: deleteTraceById
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"204":
description: No Content
patch:
tags:
- Traces
summary: Update trace by id
description: Update trace by id
operationId: updateTrace
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/TraceUpdate"
responses:
"204":
description: No Content
/v1/private/traces/threads/comments/delete:
post:
tags:
- Traces
summary: Delete thread comments
description: Delete thread comments
operationId: deleteThreadComments
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BatchDelete"
responses:
"204":
description: No Content
/v1/private/traces/threads/feedback-scores/delete:
post:
tags:
- Traces
summary: Delete thread feedback scores
description: Delete thread feedback scores
operationId: deleteThreadFeedbackScores
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DeleteThreadFeedbackScores"
responses:
"204":
description: No Content
/v1/private/traces/comments/delete:
post:
tags:
- Traces
summary: Delete trace comments
description: Delete trace comments
operationId: deleteTraceComments
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BatchDelete"
responses:
"204":
description: No Content
/v1/private/traces/{id}/feedback-scores/delete:
post:
tags:
- Traces
summary: Delete trace feedback score
description: Delete trace feedback score
operationId: deleteTraceFeedbackScore
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DeleteFeedbackScore"
responses:
"204":
description: No Content
/v1/private/traces/threads/delete:
post:
tags:
- Traces
summary: Delete trace threads
description: Delete trace threads
operationId: deleteTraceThreads
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DeleteTraceThreads"
responses:
"204":
description: No Content
/v1/private/traces/delete:
post:
tags:
- Traces
summary: Delete traces
description: Delete traces
operationId: deleteTraces
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BatchDelete"
responses:
"204":
description: No Content
/v1/private/traces/feedback-scores/names:
get:
tags:
- Traces
summary: Find Feedback Score names
description: Find Feedback Score names
operationId: findFeedbackScoreNames_2
parameters:
- name: project_id
in: query
schema:
type: string
format: uuid
responses:
"200":
description: Feedback Scores resource
content:
application/json:
schema:
$ref: "#/components/schemas/FeedbackScoreNames_Public"
/v1/private/traces/threads/feedback-scores/names:
get:
tags:
- Traces
summary: Find Trace Threads Feedback Score names
description: Find Trace Threads Feedback Score names
operationId: findTraceThreadsFeedbackScoreNames
parameters:
- name: project_id
in: query
schema:
type: string
format: uuid
responses:
"200":
description: Find Trace Threads Feedback Score names
content:
application/json:
schema:
$ref: "#/components/schemas/FeedbackScoreNames_Public"
/v1/private/traces/stats:
get:
tags:
- Traces
summary: Get trace stats
description: Get trace stats
operationId: getTraceStats
parameters:
- name: project_id
in: query
schema:
type: string
format: uuid
- name: project_name
in: query
schema:
type: string
- name: filters
in: query
schema:
type: string
- name: search
in: query
schema:
type: string
description: Full-text search across trace fields
- name: from_time
in: query
schema:
type: string
description: Filter traces created from this time (ISO-8601 format).
format: date-time
- name: to_time
in: query
schema:
type: string
description: "Filter traces created up to this time (ISO-8601 format). If\
\ not provided, defaults to current time. Must be after 'from_time'."
format: date-time
responses:
"200":
description: Trace stats resource
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectStats_Public"
/v1/private/traces/threads/{threadId}/comments/{commentId}:
get:
tags:
- Traces
summary: Get thread comment
description: Get thread comment
operationId: getThreadComment
parameters:
- name: commentId
in: path
required: true
schema:
type: string
format: uuid
- name: threadId
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Comment resource
content:
application/json:
schema:
$ref: "#/components/schemas/Comment"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/traces/threads/stats:
get:
tags:
- Traces
summary: Get trace thread stats
description: Get trace thread stats
operationId: getTraceThreadStats
parameters:
- name: project_id
in: query
schema:
type: string
format: uuid
- name: project_name
in: query
schema:
type: string
- name: filters
in: query
schema:
type: string
- name: search
in: query
schema:
type: string
description: Full-text search across thread fields
- name: from_time
in: query
schema:
type: string
description: Filter trace threads created from this time (ISO-8601 format).
format: date-time
- name: to_time
in: query
schema:
type: string
description: "Filter trace threads created up to this time (ISO-8601 format).\
\ If not provided, defaults to current time. Must be after 'from_time'."
format: date-time
responses:
"200":
description: Trace thread stats resource
content:
application/json:
schema:
$ref: "#/components/schemas/ProjectStats_Public"
/v1/private/traces/{traceId}/comments/{commentId}:
get:
tags:
- Traces
summary: Get trace comment
description: Get trace comment
operationId: getTraceComment
parameters:
- name: commentId
in: path
required: true
schema:
type: string
format: uuid
- name: traceId
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: Comment resource
content:
application/json:
schema:
$ref: "#/components/schemas/Comment"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/traces/threads/retrieve:
post:
tags:
- Traces
summary: Get trace thread
description: Get trace thread
operationId: getTraceThread
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/TraceThreadIdentifier"
responses:
"200":
description: Trace thread resource
content:
application/json:
schema:
$ref: "#/components/schemas/TraceThread"
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/traces/threads:
get:
tags:
- Traces
summary: Get trace threads
description: Get trace threads
operationId: getTraceThreads
parameters:
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: project_name
in: query
schema:
type: string
- name: project_id
in: query
schema:
type: string
format: uuid
- name: truncate
in: query
schema:
type: boolean
description: "Truncate input, output and metadata to slim payloads"
default: false
- name: strip_attachments
in: query
schema:
type: boolean
description: "If true, returns attachment references like [file.png]; if\
\ false, downloads and reinjects stripped attachments"
default: false
- name: filters
in: query
schema:
type: string
- name: sorting
in: query
schema:
type: string
- name: search
in: query
schema:
type: string
description: Full-text search across thread fields
- name: from_time
in: query
schema:
type: string
description: Filter trace threads created from this time (ISO-8601 format).
format: date-time
- name: to_time
in: query
schema:
type: string
description: "Filter trace threads created up to this time (ISO-8601 format).\
\ If not provided, defaults to current time. Must be after 'from_time'."
format: date-time
- name: annotation_queue_id
in: query
schema:
type: string
description: Filter threads belonging to this annotation queue and scope
feedback scores/comments to it
format: uuid
responses:
"200":
description: Trace threads resource
content:
application/json:
schema:
$ref: "#/components/schemas/TraceThreadPage"
/v1/private/traces/threads/open:
put:
tags:
- Traces
summary: Open trace thread
description: Open trace thread
operationId: openTraceThread
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/TraceThreadIdentifier"
responses:
"204":
description: No Content
/v1/private/traces/threads/feedback-scores:
put:
tags:
- Traces
summary: Batch feedback scoring for threads
description: Batch feedback scoring for threads
operationId: scoreBatchOfThreads
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/FeedbackScoreBatchThread"
responses:
"204":
description: No Content
/v1/private/traces/feedback-scores:
put:
tags:
- Traces
summary: Batch feedback scoring for traces
description: Batch feedback scoring for traces
operationId: scoreBatchOfTraces
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/FeedbackScoreBatch"
responses:
"204":
description: No Content
/v1/private/traces/threads/search:
post:
tags:
- Traces
summary: Search trace threads
description: Search trace threads
operationId: searchTraceThreads
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/TraceThreadSearchStreamRequest"
responses:
"200":
description: Trace threads stream or error during process
content:
application/octet-stream:
schema:
maxItems: 2000
type: array
items:
type: string
anyOf:
- $ref: "#/components/schemas/TraceThread"
- $ref: "#/components/schemas/ErrorMessage"
"400":
description: Bad Request
content:
application/octet-stream:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/traces/search:
post:
tags:
- Traces
summary: Search traces
description: Search traces
operationId: searchTraces
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/TraceSearchStreamRequest_Public"
responses:
"200":
description: Traces stream or error during process
content:
application/octet-stream:
schema:
maxItems: 2000
type: array
items:
type: string
anyOf:
- $ref: "#/components/schemas/Trace_Public"
- $ref: "#/components/schemas/ErrorMessage_Public"
"400":
description: Bad Request
content:
application/octet-stream:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
"401":
description: Unauthorized
content:
application/octet-stream:
schema:
$ref: "#/components/schemas/ErrorMessage_Public"
/v1/private/traces/exists:
get:
tags:
- Traces
summary: Check whether a project has traces
description: Returns whether the project has at least one trace matching the
given scope. Cheap existence probe (LIMIT 1) used to drive empty-state decisions
without scanning or aggregating the whole project.
operationId: tracesExist
parameters:
- name: project_id
in: query
schema:
type: string
format: uuid
- name: project_name
in: query
schema:
type: string
- name: source
in: query
schema:
type: string
description: "Restrict the probe to a single ingestion source (e.g. 'sdk'\
\ for the Logs empty state), matching the rendered list's logs-source\
\ scope. Omit to probe any source."
- name: thread_only
in: query
schema:
type: boolean
description: "When true, only considers traces that belong to a thread (thread_id\
\ is set) — used by the Threads empty state."
default: false
responses:
"200":
description: Trace existence
content:
application/json:
schema:
$ref: "#/components/schemas/ExistenceResponse"
/v1/private/traces/threads/{threadModelId}:
patch:
tags:
- Traces
summary: Update thread
description: Update thread
operationId: updateThread
parameters:
- name: threadModelId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/TraceThreadUpdate"
responses:
"204":
description: No Content
"404":
description: Not found
/v1/private/traces/threads/comments/{commentId}:
patch:
tags:
- Traces
summary: Update thread comment by id
description: Update thread comment by id
operationId: updateThreadComment
parameters:
- name: commentId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Comment"
responses:
"204":
description: No Content
"404":
description: Not found
/v1/private/traces/comments/{commentId}:
patch:
tags:
- Traces
summary: Update trace comment by id
description: Update trace comment by id
operationId: updateTraceComment
parameters:
- name: commentId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Comment"
responses:
"204":
description: No Content
"404":
description: Not found
/v1/private/welcome-wizard:
get:
tags:
- Welcome Wizard
summary: Get welcome wizard tracking status
description: Get welcome wizard tracking status for the current workspace
operationId: getWelcomeWizardStatus
responses:
"200":
description: Welcome wizard tracking status
content:
application/json:
schema:
$ref: "#/components/schemas/WelcomeWizardTracking"
post:
tags:
- Welcome Wizard
summary: Submit welcome wizard
description: Submit welcome wizard with user information
operationId: submitWelcomeWizard
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/WelcomeWizardSubmission"
responses:
"204":
description: Welcome wizard submitted successfully
/v1/private/workspace-permissions:
get:
tags:
- Workspace permissions
summary: Get workspace permissions for the authenticated user
description: Get workspace permissions for the authenticated user
operationId: getWorkspaceUserPermissions
responses:
"200":
description: Workspace Permissions
content:
application/json:
schema:
$ref: "#/components/schemas/WorkspaceUserPermissions"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/workspaces/costs/summaries:
post:
tags:
- Workspaces
summary: Get costs summary
description: Get costs summary
operationId: costsSummary
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/WorkspaceMetricsSummaryRequest"
responses:
"200":
description: Workspace Metrics
content:
application/json:
schema:
$ref: "#/components/schemas/Result"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/workspaces/configurations:
get:
tags:
- Workspaces
summary: Get workspace configuration
description: Get workspace configuration
operationId: getWorkspaceConfiguration
responses:
"200":
description: Workspace Configuration
content:
application/json:
schema:
$ref: "#/components/schemas/WorkspaceConfiguration"
"404":
description: Configuration Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
put:
tags:
- Workspaces
summary: Upsert workspace configuration
description: Upsert workspace configuration
operationId: upsertWorkspaceConfiguration
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/WorkspaceConfiguration"
responses:
"200":
description: Configuration Updated
content:
application/json:
schema:
$ref: "#/components/schemas/WorkspaceConfiguration"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
"422":
description: Unprocessable Content
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
delete:
tags:
- Workspaces
summary: Delete workspace configuration
description: Delete workspace configuration
operationId: deleteWorkspaceConfiguration
responses:
"204":
description: Configuration Deleted
"404":
description: Configuration Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/workspaces/costs:
post:
tags:
- Workspaces
summary: Get cost daily data
description: Get cost daily data
operationId: getCost
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/WorkspaceMetricsSummaryRequest"
responses:
"200":
description: Workspace cost data by days
content:
application/json:
schema:
$ref: "#/components/schemas/WorkspaceMetricResponse"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/private/workspaces/metrics:
post:
tags:
- Workspaces
summary: Get metric daily data
description: Get metric daily data
operationId: getMetric
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/WorkspaceMetricsSummaryRequest"
responses:
"200":
description: Workspace metric data by days
content:
application/json:
schema:
$ref: "#/components/schemas/WorkspaceMetricResponse"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
deprecated: true
/v1/private/workspaces/versions:
get:
tags:
- Workspaces
summary: Get workspace version
description: |-
Determines whether the workspace should use Opik V1 (legacy workspace-scoped)
or Opik V2 (project-first) navigation. The backend is the single authority for this
determination, clients must never derive the version themselves.
Determination logic (priority order):
1) V2 workspace allowlist (TOGGLE_V2_WORKSPACE_ALLOWLIST)
2) Feature flag override (TOGGLE_FORCE_WORKSPACE_VERSION)
3) Auth one-way V2 gate (authenticated mode only)
4) Version 1 entity check (entities without project_id)
5) Fallback on failure
In unauthenticated mode (authentication.enabled=false), auth steps are skipped.
Called by the frontend on workspace load.
operationId: getWorkspaceVersion
responses:
"200":
description: Workspace version
content:
application/json:
schema:
$ref: "#/components/schemas/WorkspaceVersion"
/v1/private/workspaces/metrics/summaries:
post:
tags:
- Workspaces
summary: Get metrics summary
description: Get metrics summary
operationId: metricsSummary
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/WorkspaceMetricsSummaryRequest"
responses:
"200":
description: Workspace Metrics
content:
application/json:
schema:
$ref: "#/components/schemas/WorkspaceMetricsSummaryResponse"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMessage"
deprecated: true
/v1/session/redirect/datasets:
get:
tags:
- Redirect
summary: Create dataset redirect url
description: Create dataset redirect url
operationId: datasetsRedirect
parameters:
- name: dataset_id
in: query
required: true
schema:
type: string
format: uuid
- name: workspace_name
in: query
schema:
type: string
- name: path
in: query
required: true
schema:
type: string
responses:
"303":
description: Redirect
"400":
description: Bad Request
content:
'*/*':
schema:
$ref: "#/components/schemas/ErrorMessage"
"404":
description: Not Found
content:
'*/*':
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/session/redirect/experiments:
get:
tags:
- Redirect
summary: Create experiment redirect url
description: Create experiment redirect url
operationId: experimentsRedirect
parameters:
- name: dataset_id
in: query
required: true
schema:
type: string
format: uuid
- name: experiment_id
in: query
required: true
schema:
type: string
format: uuid
- name: workspace_name
in: query
schema:
type: string
- name: path
in: query
required: true
schema:
type: string
responses:
"303":
description: Redirect
"400":
description: Bad Request
content:
'*/*':
schema:
$ref: "#/components/schemas/ErrorMessage"
"404":
description: Not Found
content:
'*/*':
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/session/redirect/optimizations:
get:
tags:
- Redirect
summary: Create optimization redirect url
description: Create optimization redirect url
operationId: optimizationsRedirect
parameters:
- name: dataset_id
in: query
required: true
schema:
type: string
format: uuid
- name: optimization_id
in: query
required: true
schema:
type: string
format: uuid
- name: workspace_name
in: query
schema:
type: string
- name: path
in: query
required: true
schema:
type: string
responses:
"303":
description: Redirect
"400":
description: Bad Request
content:
'*/*':
schema:
$ref: "#/components/schemas/ErrorMessage"
"404":
description: Not Found
content:
'*/*':
schema:
$ref: "#/components/schemas/ErrorMessage"
/v1/session/redirect/projects:
get:
tags:
- Redirect
summary: Create project redirect url
description: Create project redirect url
operationId: projectsRedirect
parameters:
- name: trace_id
in: query
required: true
schema:
type: string
format: uuid
- name: workspace_name
in: query
schema:
type: string
- name: path
in: query
required: true
schema:
type: string
responses:
"303":
description: Redirect
"400":
description: Bad Request
content:
'*/*':
schema:
$ref: "#/components/schemas/ErrorMessage"
"404":
description: Not Found
content:
'*/*':
schema:
$ref: "#/components/schemas/ErrorMessage"
/is-alive/ping:
get:
operationId: isAlive
responses:
default:
description: default response
content:
application/json: {}
/is-alive/ver:
get:
operationId: version
responses:
default:
description: default response
content:
application/json: {}
components:
schemas:
ConsentResponse:
type: object
properties:
redirect_to:
type: string
ConsentRequest:
required:
- client_id
- code_challenge
- code_challenge_method
- redirect_uri
- resource
type: object
properties:
client_id:
minLength: 1
type: string
redirect_uri:
minLength: 1
type: string
code_challenge:
minLength: 1
type: string
code_challenge_method:
minLength: 1
pattern: S256
type: string
resource:
minLength: 1
type: string
state:
type: string
workspace_id:
type: string
workspace_name:
type: string
csrf:
type: string
AuthorizeContext:
type: object
properties:
client_name:
type: string
client_logo_uri:
type: string
workspaces:
type: array
items:
$ref: "#/components/schemas/WorkspaceInfo"
csrf_token:
type: string
WorkspaceInfo:
type: object
properties:
id:
type: string
name:
type: string
AuthorizationServerMetadata:
type: object
properties:
issuer:
type: string
authorization_endpoint:
type: string
token_endpoint:
type: string
revocation_endpoint:
type: string
registration_endpoint:
type: string
response_types_supported:
type: array
items:
type: string
grant_types_supported:
type: array
items:
type: string
code_challenge_methods_supported:
type: array
items:
type: string
token_endpoint_auth_methods_supported:
type: array
items:
type: string
ClientRegistrationResponse:
type: object
properties:
client_id:
type: string
client_id_issued_at:
type: integer
format: int64
client_name:
type: string
logo_uri:
type: string
redirect_uris:
uniqueItems: true
type: array
items:
type: string
token_endpoint_auth_method:
type: string
grant_types:
type: array
items:
type: string
response_types:
type: array
items:
type: string
ClientRegistrationRequest:
required:
- client_name
- redirect_uris
type: object
properties:
client_name:
maxLength: 255
minLength: 0
type: string
redirect_uris:
maxItems: 10
minItems: 0
uniqueItems: true
type: array
items:
maxLength: 2048
minLength: 0
type: string
logo_uri:
maxLength: 2048
minLength: 0
type: string
TokenResponse:
type: object
properties:
access_token:
type: string
refresh_token:
type: string
token_type:
type: string
expires_in:
type: integer
format: int64
workspace_id:
type: string
workspace_name:
type: string
OAuthError:
type: object
properties:
error:
type: string
error_description:
type: string
ValidatedToken:
type: object
properties:
user_name:
type: string
workspace_id:
type: string
workspace_name:
type: string
resource:
type: string
AnalyticsQueryResponse:
type: object
properties:
results:
type: array
items:
$ref: "#/components/schemas/JsonNode"
JsonNode:
type: object
ErrorMessage:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
details:
type: string
AnalyticsQueryRequest:
required:
- query
type: object
properties:
query:
minLength: 1
type: string
description: Read-only ClickHouse SQL. Must return exactly one column named
`result` produced via toJSONString(...)
BiInformation:
type: object
properties:
workspace_id:
type: string
user:
type: string
count:
type: integer
format: int64
BiInformationResponse:
type: object
properties:
bi_information:
type: array
items:
$ref: "#/components/schemas/BiInformation"
UsageByWorkspaceProjectUserResponse:
type: object
properties:
breakdown:
type: array
items:
$ref: "#/components/schemas/WorkspaceProjectUserCount"
WorkspaceProjectUserCount:
type: object
properties:
workspace_id:
type: string
project_id:
type: string
format: uuid
user:
type: string
count:
type: integer
format: int64
SpansCountResponse:
type: object
properties:
workspaces_spans_count:
type: array
items:
$ref: "#/components/schemas/WorkspaceSpansCount"
WorkspaceSpansCount:
type: object
properties:
workspace:
type: string
span_count:
type: integer
format: int32
TraceCountResponse:
type: object
properties:
workspaces_traces_count:
type: array
items:
$ref: "#/components/schemas/WorkspaceTraceCount"
WorkspaceTraceCount:
type: object
properties:
workspace:
type: string
trace_count:
type: integer
format: int32
ErrorMessage_Write:
type: object
properties:
errors:
type: array
items:
type: string
AgentBlueprint_Write:
required:
- type
- values
type: object
properties:
id:
type: string
format: uuid
type:
type: string
enum:
- blueprint
- mask
description:
maxLength: 255
minLength: 0
type: string
values:
maxItems: 250
minItems: 1
type: array
items:
$ref: "#/components/schemas/AgentConfigValue_Write"
AgentConfigCreate_Write:
required:
- blueprint
type: object
properties:
project_id:
type: string
description: Project ID. Either project_id or project_name must be provided
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: Project name. Either project_id or project_name must be provided
id:
type: string
description: Agent config ID. Generated automatically if not provided
format: uuid
blueprint:
$ref: "#/components/schemas/AgentBlueprint_Write"
AgentConfigValue_Write:
required:
- key
- type
type: object
properties:
key:
maxLength: 255
minLength: 0
type: string
value:
type: string
type:
type: string
enum:
- string
- integer
- float
- boolean
- prompt
- prompt_commit
description:
type: string
AgentConfigEnv:
required:
- blueprint_id
- env_name
type: object
properties:
id:
type: string
format: uuid
readOnly: true
project_id:
type: string
format: uuid
readOnly: true
env_name:
maxLength: 50
minLength: 0
type: string
blueprint_id:
type: string
format: uuid
created_by:
type: string
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
ended_at:
type: string
format: date-time
readOnly: true
AgentConfigEnvUpdate:
required:
- envs
- project_id
type: object
properties:
project_id:
type: string
format: uuid
envs:
maxItems: 100
minItems: 1
type: array
items:
$ref: "#/components/schemas/AgentConfigEnv"
AgentBlueprint_Public:
required:
- type
- values
type: object
properties:
id:
type: string
format: uuid
name:
type: string
readOnly: true
type:
type: string
enum:
- blueprint
- mask
description:
maxLength: 255
minLength: 0
type: string
envs:
type: array
readOnly: true
items:
type: string
readOnly: true
created_by:
type: string
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
values:
maxItems: 250
minItems: 1
type: array
items:
$ref: "#/components/schemas/AgentConfigValue_Public"
AgentConfigValue_Public:
required:
- key
- type
type: object
properties:
key:
maxLength: 255
minLength: 0
type: string
value:
type: string
type:
type: string
enum:
- string
- integer
- float
- boolean
- prompt
- prompt_commit
description:
type: string
ErrorMessage_Public:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
details:
type: string
AgentBlueprint_History:
required:
- type
- values
type: object
properties:
id:
type: string
format: uuid
name:
type: string
readOnly: true
type:
type: string
enum:
- blueprint
- mask
description:
maxLength: 255
minLength: 0
type: string
envs:
type: array
readOnly: true
items:
type: string
readOnly: true
created_by:
type: string
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
values:
maxItems: 250
minItems: 1
type: array
items:
$ref: "#/components/schemas/AgentConfigValue_History"
AgentConfigValue_History:
required:
- key
- type
type: object
properties:
key:
maxLength: 255
minLength: 0
type: string
value:
type: string
type:
type: string
enum:
- string
- integer
- float
- boolean
- prompt
- prompt_commit
description:
type: string
BlueprintPage_History:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/AgentBlueprint_History"
ErrorMessage_History:
type: object
properties:
errors:
type: array
items:
type: string
AgentConfigRemoveValues:
required:
- keys
type: object
properties:
project_id:
type: string
description: Project ID. Either project_id or project_name must be provided
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: Project name. Either project_id or project_name must be provided
keys:
maxItems: 250
minItems: 0
uniqueItems: true
type: array
items:
minLength: 1
type: string
AgentConfigEnvSetByName:
required:
- blueprint_name
type: object
properties:
blueprint_name:
type: string
AgentInsightsJob:
required:
- project_id
type: object
properties:
id:
type: string
format: uuid
readOnly: true
project_id:
type: string
format: uuid
readOnly: true
status:
type: string
readOnly: true
enum:
- enabled
- disabled
last_scan_at:
type: string
format: date-time
readOnly: true
last_failure_reason:
type: string
readOnly: true
last_failure_detail:
type: string
readOnly: true
last_failed_at:
type: string
format: date-time
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
AgentInsightsJobUpdate:
required:
- status
type: object
properties:
status:
type: string
description: New status for the job
enum:
- enabled
- disabled
AgentInsightsIssue:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
description:
type: string
cause:
type: string
suggested_fix:
type: string
status:
type: string
enum:
- open
- resolved
- closed
severity:
type: string
enum:
- critical
- high
- medium
- low
traces_query:
type: string
total_occurrences:
type: integer
description: SUM(count) over the requested window
format: int64
latest_count:
type: integer
description: "Occurrences on the latest report day in the window only. The\
\ issue's description/cause narrate that most recent run, so this is the\
\ count consistent with them; totalOccurrences instead sums every day\
\ in the window."
format: int64
total:
type: integer
description: SUM(total_count) over the requested window
format: int64
users_impacted:
type: integer
description: SUM(users_impacted) over the requested window
format: int64
total_users:
type: integer
description: SUM(total_users) over the requested window
format: int64
first_seen:
type: string
description: MIN(report_day) in the requested window
format: date
last_seen:
type: string
description: MAX(report_day) in the requested window
format: date
days_reported:
type: integer
description: COUNT(DISTINCT report_day) in the requested window
format: int64
created_by:
type: string
created_at:
type: string
format: date-time
last_updated_by:
type: string
last_updated_at:
type: string
format: date-time
AgentInsightsIssuePage:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/AgentInsightsIssue"
AgentInsightsIssueDetail:
type: object
properties:
report_day:
type: string
format: date
count:
type: integer
format: int64
total_count:
type: integer
format: int64
users_impacted:
type: integer
format: int64
total_users:
type: integer
format: int64
metadata:
$ref: "#/components/schemas/JsonNode"
description: "Per-day breakdown within the requested window, ordered by report_day\
\ ascending"
AgentInsightsIssueWithDetails:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
description:
type: string
cause:
type: string
suggested_fix:
type: string
status:
type: string
enum:
- open
- resolved
- closed
severity:
type: string
enum:
- critical
- high
- medium
- low
traces_query:
type: string
created_by:
type: string
created_at:
type: string
format: date-time
last_updated_by:
type: string
last_updated_at:
type: string
format: date-time
details:
type: array
description: "Per-day breakdown within the requested window, ordered by\
\ report_day ascending"
items:
$ref: "#/components/schemas/AgentInsightsIssueDetail"
AgentInsightsReport:
required:
- issues
- project_id
- report_day
type: object
properties:
project_id:
type: string
format: uuid
report_day:
type: string
format: date
issues:
type: array
items:
$ref: "#/components/schemas/ReportedIssue"
ReportedIssue:
required:
- count
- name
- severity
- total_count
- total_users
- users_impacted
type: object
properties:
id:
type: string
format: uuid
name:
maxLength: 255
minLength: 0
type: string
description:
type: string
cause:
type: string
suggested_fix:
type: string
traces_query:
type: string
severity:
type: string
enum:
- critical
- high
- medium
- low
count:
type: integer
format: int64
total_count:
type: integer
format: int64
users_impacted:
type: integer
format: int64
total_users:
type: integer
format: int64
metadata:
$ref: "#/components/schemas/JsonNode"
AgentInsightsIssueUpdate:
required:
- project_id
- status
type: object
properties:
project_id:
type: string
format: uuid
status:
type: string
enum:
- open
- resolved
- closed
Alert:
required:
- webhook
type: object
properties:
id:
type: string
format: uuid
name:
maxLength: 255
minLength: 0
type: string
enabled:
type: boolean
alert_type:
type: string
enum:
- general
- slack
- pagerduty
metadata:
type: object
additionalProperties:
type: string
webhook:
$ref: "#/components/schemas/Webhook"
triggers:
type: array
items:
$ref: "#/components/schemas/AlertTrigger"
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
project_id:
type: string
description: "Optional project scope for this alert. When set, the alert\
\ is scoped to the specified project. Do NOT also provide a 'scope:project'\
\ trigger config — the system will create it automatically from this field.\
\ Sending both project_id and a scope:project trigger config will result\
\ in an error."
format: uuid
AlertTrigger:
required:
- event_type
type: object
properties:
id:
type: string
format: uuid
alert_id:
type: string
format: uuid
readOnly: true
event_type:
type: string
enum:
- trace:errors
- trace:feedback_score
- trace_thread:feedback_score
- prompt:created
- prompt:committed
- trace:guardrails_triggered
- prompt:deleted
- experiment:finished
- trace:cost
- trace:latency
trigger_configs:
type: array
items:
$ref: "#/components/schemas/AlertTriggerConfig"
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
AlertTriggerConfig:
required:
- type
type: object
properties:
id:
type: string
format: uuid
alert_trigger_id:
type: string
format: uuid
readOnly: true
type:
type: string
enum:
- scope:project
- threshold:feedback_score
- threshold:cost
- threshold:latency
- threshold:errors
config_value:
type: object
additionalProperties:
type: string
group_index:
type: integer
description: "Groups configs within a trigger: same group_index means AND\
\ between configs, different group_index means OR between groups. Null\
\ means a legacy/singleton group of one config. Always null for scope:project\
\ configs."
format: int32
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
Webhook:
required:
- url
type: object
properties:
id:
type: string
format: uuid
name:
type: string
url:
minLength: 1
type: string
secret_token:
maxLength: 250
minLength: 0
type: string
headers:
type: object
additionalProperties:
type: string
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
AlertTriggerConfig_Write:
required:
- type
type: object
properties:
id:
type: string
format: uuid
type:
type: string
enum:
- scope:project
- threshold:feedback_score
- threshold:cost
- threshold:latency
- threshold:errors
config_value:
type: object
additionalProperties:
type: string
group_index:
type: integer
description: "Groups configs within a trigger: same group_index means AND\
\ between configs, different group_index means OR between groups. Null\
\ means a legacy/singleton group of one config. Always null for scope:project\
\ configs."
format: int32
AlertTrigger_Write:
required:
- event_type
type: object
properties:
id:
type: string
format: uuid
event_type:
type: string
enum:
- trace:errors
- trace:feedback_score
- trace_thread:feedback_score
- prompt:created
- prompt:committed
- trace:guardrails_triggered
- prompt:deleted
- experiment:finished
- trace:cost
- trace:latency
trigger_configs:
type: array
items:
$ref: "#/components/schemas/AlertTriggerConfig_Write"
Alert_Write:
required:
- webhook
type: object
properties:
id:
type: string
format: uuid
name:
maxLength: 255
minLength: 0
type: string
enabled:
type: boolean
alert_type:
type: string
enum:
- general
- slack
- pagerduty
metadata:
type: object
additionalProperties:
type: string
webhook:
$ref: "#/components/schemas/Webhook_Write"
triggers:
type: array
items:
$ref: "#/components/schemas/AlertTrigger_Write"
project_id:
type: string
description: "Optional project scope for this alert. When set, the alert\
\ is scoped to the specified project. Do NOT also provide a 'scope:project'\
\ trigger config — the system will create it automatically from this field.\
\ Sending both project_id and a scope:project trigger config will result\
\ in an error."
format: uuid
Webhook_Write:
required:
- url
type: object
properties:
id:
type: string
format: uuid
name:
type: string
url:
minLength: 1
type: string
secret_token:
maxLength: 250
minLength: 0
type: string
headers:
type: object
additionalProperties:
type: string
BatchDelete:
required:
- ids
type: object
properties:
ids:
maxItems: 1000
minItems: 1
uniqueItems: true
type: array
items:
type: string
format: uuid
AlertPage_Public:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/Alert_Public"
sortable_by:
type: array
items:
type: string
AlertTriggerConfig_Public:
required:
- type
type: object
properties:
id:
type: string
format: uuid
alert_trigger_id:
type: string
format: uuid
readOnly: true
type:
type: string
enum:
- scope:project
- threshold:feedback_score
- threshold:cost
- threshold:latency
- threshold:errors
config_value:
type: object
additionalProperties:
type: string
group_index:
type: integer
description: "Groups configs within a trigger: same group_index means AND\
\ between configs, different group_index means OR between groups. Null\
\ means a legacy/singleton group of one config. Always null for scope:project\
\ configs."
format: int32
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
AlertTrigger_Public:
required:
- event_type
type: object
properties:
id:
type: string
format: uuid
alert_id:
type: string
format: uuid
readOnly: true
event_type:
type: string
enum:
- trace:errors
- trace:feedback_score
- trace_thread:feedback_score
- prompt:created
- prompt:committed
- trace:guardrails_triggered
- prompt:deleted
- experiment:finished
- trace:cost
- trace:latency
trigger_configs:
type: array
items:
$ref: "#/components/schemas/AlertTriggerConfig_Public"
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
Alert_Public:
required:
- webhook
type: object
properties:
id:
type: string
format: uuid
name:
maxLength: 255
minLength: 0
type: string
enabled:
type: boolean
alert_type:
type: string
enum:
- general
- slack
- pagerduty
metadata:
type: object
additionalProperties:
type: string
webhook:
$ref: "#/components/schemas/Webhook_Public"
triggers:
type: array
items:
$ref: "#/components/schemas/AlertTrigger_Public"
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
project_id:
type: string
description: "Optional project scope for this alert. When set, the alert\
\ is scoped to the specified project. Do NOT also provide a 'scope:project'\
\ trigger config — the system will create it automatically from this field.\
\ Sending both project_id and a scope:project trigger config will result\
\ in an error."
format: uuid
Webhook_Public:
required:
- url
type: object
properties:
id:
type: string
format: uuid
name:
type: string
url:
minLength: 1
type: string
secret_token:
maxLength: 250
minLength: 0
type: string
headers:
type: object
additionalProperties:
type: string
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
WebhookExamples:
type: object
properties:
response_examples:
type: object
additionalProperties:
type: object
WebhookTestResult:
type: object
properties:
status:
type: string
enum:
- success
- failure
status_code:
type: integer
format: int32
request_body:
type: string
error_message:
type: string
AnnotationQueueItemIds:
required:
- ids
type: object
properties:
ids:
maxItems: 1000
minItems: 1
uniqueItems: true
type: array
items:
type: string
format: uuid
AnnotationQueue:
required:
- name
- project_id
- scope
type: object
properties:
id:
type: string
format: uuid
project_id:
type: string
format: uuid
project_name:
type: string
readOnly: true
name:
minLength: 1
type: string
description:
type: string
instructions:
type: string
scope:
type: string
enum:
- trace
- thread
comments_enabled:
type: boolean
feedback_definition_names:
type: array
items:
type: string
annotators_per_item:
maximum: 1000
minimum: 1
type: integer
format: int32
lock_timeout_seconds:
maximum: 3600
minimum: 1
type: integer
format: int32
reviewers:
type: array
readOnly: true
items:
$ref: "#/components/schemas/AnnotationQueueReviewer"
feedback_scores:
type: array
readOnly: true
items:
$ref: "#/components/schemas/FeedbackScoreAverage"
items_count:
type: integer
format: int64
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
description: List of annotation queues to create
AnnotationQueueReviewer:
type: object
properties:
username:
type: string
status:
type: integer
format: int64
readOnly: true
FeedbackScoreAverage:
required:
- name
- value
type: object
properties:
name:
minLength: 1
type: string
value:
type: number
AnnotationQueue_Write:
required:
- name
- project_id
- scope
type: object
properties:
id:
type: string
format: uuid
project_id:
type: string
format: uuid
name:
minLength: 1
type: string
description:
type: string
instructions:
type: string
scope:
type: string
enum:
- trace
- thread
comments_enabled:
type: boolean
feedback_definition_names:
type: array
items:
type: string
annotators_per_item:
maximum: 1000
minimum: 1
type: integer
format: int32
lock_timeout_seconds:
maximum: 3600
minimum: 1
type: integer
format: int32
description: List of annotation queues to create
AnnotationQueueBatch:
required:
- annotation_queues
type: object
properties:
annotation_queues:
maxItems: 1000
minItems: 1
uniqueItems: true
type: array
description: List of annotation queues to create
items:
$ref: "#/components/schemas/AnnotationQueue"
description: Batch of annotation queues to create
AnnotationQueueBatch_Write:
required:
- annotation_queues
type: object
properties:
annotation_queues:
maxItems: 1000
minItems: 1
uniqueItems: true
type: array
description: List of annotation queues to create
items:
$ref: "#/components/schemas/AnnotationQueue_Write"
description: Batch of annotation queues to create
AnnotationQueuePage_Public:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/AnnotationQueue_Public"
sortableBy:
type: array
items:
type: string
AnnotationQueueReviewer_Public:
type: object
properties:
username:
type: string
status:
type: integer
format: int64
readOnly: true
AnnotationQueue_Public:
required:
- name
- project_id
- scope
type: object
properties:
id:
type: string
format: uuid
project_id:
type: string
format: uuid
project_name:
type: string
readOnly: true
name:
minLength: 1
type: string
description:
type: string
instructions:
type: string
scope:
type: string
enum:
- trace
- thread
comments_enabled:
type: boolean
feedback_definition_names:
type: array
items:
type: string
annotators_per_item:
maximum: 1000
minimum: 1
type: integer
format: int32
lock_timeout_seconds:
maximum: 3600
minimum: 1
type: integer
format: int32
reviewers:
type: array
readOnly: true
items:
$ref: "#/components/schemas/AnnotationQueueReviewer_Public"
feedback_scores:
type: array
readOnly: true
items:
$ref: "#/components/schemas/FeedbackScoreAverage_Public"
items_count:
type: integer
format: int64
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
FeedbackScoreAverage_Public:
required:
- name
- value
type: object
properties:
name:
minLength: 1
type: string
value:
type: number
readOnly: true
ItemLockInfo:
type: object
properties:
active_locks:
type: integer
format: int32
locked_by:
type: array
items:
type: string
LocksResponse:
type: object
properties:
locks:
type: object
additionalProperties:
$ref: "#/components/schemas/ItemLockInfo"
LockResponse:
type: object
properties:
acquired:
type: boolean
item_id:
type: string
format: uuid
locked_by:
type: string
expires_at:
type: string
format: date-time
AnnotationQueueUpdate:
type: object
properties:
name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description:
type: string
instructions:
type: string
comments_enabled:
type: boolean
feedback_definition_names:
type: array
items:
minLength: 1
type: string
annotators_per_item:
maximum: 1000
minimum: 1
type: integer
format: int32
lock_timeout_seconds:
maximum: 3600
minimum: 1
type: integer
format: int32
AssertionResultBatch:
required:
- assertion_results
- entity_type
type: object
properties:
entity_type:
type: string
enum:
- TRACE
- SPAN
- THREAD
assertion_results:
maxItems: 1000
minItems: 1
type: array
items:
$ref: "#/components/schemas/AssertionResultBatchItem"
AssertionResultBatchItem:
required:
- entity_id
- name
- source
- status
type: object
properties:
entity_id:
type: string
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "If null, the default project is used"
project_id:
type: string
format: uuid
name:
minLength: 1
type: string
status:
type: string
enum:
- passed
- failed
reason:
type: string
source:
type: string
enum:
- ui
- sdk
- online_scoring
Attachment:
required:
- file_name
- file_size
- mime_type
type: object
properties:
link:
type: string
file_name:
type: string
file_size:
type: integer
format: int64
mime_type:
type: string
AttachmentPage:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/Attachment"
sortableBy:
type: array
items:
type: string
CompleteMultipartUploadRequest:
required:
- entity_id
- entity_type
- file_name
- file_size
- upload_id
- uploaded_file_parts
type: object
properties:
file_name:
minLength: 1
type: string
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "If null, the default project is used"
entity_type:
type: string
enum:
- trace
- span
entity_id:
type: string
format: uuid
container_id:
type: string
format: uuid
readOnly: true
file_size:
type: integer
format: int64
mime_type:
type: string
upload_id:
minLength: 1
type: string
uploaded_file_parts:
type: array
items:
$ref: "#/components/schemas/MultipartUploadPart"
MultipartUploadPart:
required:
- e_tag
- part_number
type: object
properties:
e_tag:
minLength: 1
type: string
part_number:
type: integer
format: int32
DeleteAttachmentsRequest:
required:
- container_id
- entity_id
- entity_type
- file_names
type: object
properties:
file_names:
uniqueItems: true
type: array
items:
type: string
entity_type:
type: string
enum:
- trace
- span
entity_id:
type: string
format: uuid
container_id:
type: string
format: uuid
StartMultipartUploadResponse:
required:
- pre_sign_urls
- upload_id
type: object
properties:
upload_id:
minLength: 1
type: string
pre_sign_urls:
type: array
items:
type: string
StartMultipartUploadRequest:
required:
- entity_id
- entity_type
- file_name
- num_of_file_parts
- path
type: object
properties:
file_name:
minLength: 1
type: string
num_of_file_parts:
type: integer
format: int32
mime_type:
type: string
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "If null, the default project is used"
entity_type:
type: string
enum:
- trace
- span
entity_id:
type: string
format: uuid
container_id:
type: string
format: uuid
readOnly: true
path:
minLength: 1
type: string
AuthDetailsHolder:
type: object
WorkspaceNameHolder:
type: object
properties:
workspace_name:
type: string
AudioUrl:
required:
- url
type: object
properties:
url:
type: string
AutomationRuleEvaluator:
required:
- action
- name
- type
type: object
properties:
id:
type: string
format: uuid
readOnly: true
project_id:
type: string
description: Primary project ID (legacy field for backwards compatibility)
format: uuid
project_name:
type: string
description: Primary project name (legacy field for backwards compatibility)
readOnly: true
projects:
uniqueItems: true
type: array
description: "Projects assigned to this rule (unique, sorted alphabetically\
\ by name)"
readOnly: true
items:
$ref: "#/components/schemas/ProjectReference"
project_ids:
uniqueItems: true
type: array
description: Project IDs for write operations (used when creating/updating
rules)
items:
type: string
description: Project IDs for write operations (used when creating/updating
rules)
format: uuid
name:
minLength: 1
type: string
sampling_rate:
type: number
format: float
enabled:
type: boolean
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
type:
type: string
enum:
- llm_as_judge
- user_defined_metric_python
- trace_thread_llm_as_judge
- trace_thread_user_defined_metric_python
- span_llm_as_judge
- span_user_defined_metric_python
action:
type: string
enum:
- evaluator
discriminator:
propertyName: type
mapping:
llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorLlmAsJudge"
user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorUserDefinedMetricPython"
trace_thread_llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorTraceThreadLlmAsJudge"
trace_thread_user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorTraceThreadUserDefinedMetricPython"
span_llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorSpanLlmAsJudge"
span_user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorSpanUserDefinedMetricPython"
AutomationRuleEvaluatorLlmAsJudge:
required:
- action
- code
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluator"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/TraceFilter"
code:
$ref: "#/components/schemas/LlmAsJudgeCode"
AutomationRuleEvaluatorSpanLlmAsJudge:
required:
- action
- code
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluator"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/SpanFilter"
code:
$ref: "#/components/schemas/SpanLlmAsJudgeCode"
AutomationRuleEvaluatorSpanUserDefinedMetricPython:
required:
- action
- code
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluator"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/SpanFilter"
code:
$ref: "#/components/schemas/SpanUserDefinedMetricPythonCode"
AutomationRuleEvaluatorTraceThreadLlmAsJudge:
required:
- action
- code
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluator"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/TraceThreadFilter"
code:
$ref: "#/components/schemas/TraceThreadLlmAsJudgeCode"
AutomationRuleEvaluatorTraceThreadUserDefinedMetricPython:
required:
- action
- code
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluator"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/TraceThreadFilter"
code:
$ref: "#/components/schemas/TraceThreadUserDefinedMetricPythonCode"
AutomationRuleEvaluatorUserDefinedMetricPython:
required:
- action
- code
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluator"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/TraceFilter"
code:
$ref: "#/components/schemas/UserDefinedMetricPythonCode"
ImageUrl:
required:
- url
type: object
properties:
url:
type: string
detail:
type: string
LlmAsJudgeCode:
required:
- messages
- model
- schema
- variables
type: object
properties:
model:
$ref: "#/components/schemas/LlmAsJudgeModelParameters"
messages:
type: array
items:
$ref: "#/components/schemas/LlmAsJudgeMessage"
variables:
type: object
additionalProperties:
type: string
schema:
type: array
items:
$ref: "#/components/schemas/LlmAsJudgeOutputSchema"
LlmAsJudgeMessage:
required:
- role
type: object
properties:
role:
type: string
enum:
- SYSTEM
- USER
- AI
- TOOL_EXECUTION_RESULT
- CUSTOM
content:
type: string
content_array:
type: array
items:
$ref: "#/components/schemas/LlmAsJudgeMessageContent"
string_content:
type: boolean
structured_content:
type: boolean
LlmAsJudgeMessageContent:
required:
- type
type: object
properties:
type:
type: string
text:
type: string
image_url:
$ref: "#/components/schemas/ImageUrl"
video_url:
$ref: "#/components/schemas/VideoUrl"
audio_url:
$ref: "#/components/schemas/AudioUrl"
LlmAsJudgeModelParameters:
required:
- name
type: object
properties:
name:
type: string
temperature:
type: number
format: double
seed:
type: integer
format: int32
custom_parameters:
$ref: "#/components/schemas/JsonNode"
LlmAsJudgeOutputSchema:
required:
- description
- name
- type
type: object
properties:
name:
type: string
type:
type: string
enum:
- BOOLEAN
- INTEGER
- DOUBLE
description:
type: string
ProjectReference:
required:
- project_id
- project_name
type: object
properties:
project_id:
type: string
description: Project ID
format: uuid
project_name:
type: string
description: Project name
description: Project reference with ID and name
readOnly: true
SpanFilter:
type: object
properties:
field:
type: string
operator:
type: string
enum:
- contains
- not_contains
- starts_with
- ends_with
- =
- '!='
- '>'
- '>='
- <
- <=
- is_empty
- is_not_empty
- in
- not_in
key:
type: string
value:
type: string
SpanLlmAsJudgeCode:
required:
- messages
- model
- schema
- variables
type: object
properties:
model:
$ref: "#/components/schemas/LlmAsJudgeModelParameters"
messages:
type: array
items:
$ref: "#/components/schemas/LlmAsJudgeMessage"
variables:
type: object
additionalProperties:
type: string
schema:
type: array
items:
$ref: "#/components/schemas/LlmAsJudgeOutputSchema"
SpanUserDefinedMetricPythonCode:
required:
- arguments
- metric
type: object
properties:
metric:
type: string
arguments:
minProperties: 1
type: object
additionalProperties:
type: string
TraceFilter:
type: object
properties:
field:
type: string
operator:
type: string
enum:
- contains
- not_contains
- starts_with
- ends_with
- =
- '!='
- '>'
- '>='
- <
- <=
- is_empty
- is_not_empty
- in
- not_in
key:
type: string
value:
type: string
TraceThreadFilter:
type: object
properties:
field:
type: string
operator:
type: string
enum:
- contains
- not_contains
- starts_with
- ends_with
- =
- '!='
- '>'
- '>='
- <
- <=
- is_empty
- is_not_empty
- in
- not_in
key:
type: string
value:
type: string
TraceThreadLlmAsJudgeCode:
required:
- messages
- model
- schema
type: object
properties:
model:
$ref: "#/components/schemas/LlmAsJudgeModelParameters"
messages:
type: array
items:
$ref: "#/components/schemas/LlmAsJudgeMessage"
schema:
type: array
items:
$ref: "#/components/schemas/LlmAsJudgeOutputSchema"
TraceThreadUserDefinedMetricPythonCode:
required:
- metric
type: object
properties:
metric:
type: string
UserDefinedMetricPythonCode:
required:
- arguments
- metric
type: object
properties:
metric:
type: string
arguments:
minProperties: 1
type: object
additionalProperties:
type: string
VideoUrl:
required:
- url
type: object
properties:
url:
type: string
AudioUrl_Write:
required:
- url
type: object
properties:
url:
type: string
AutomationRuleEvaluatorLlmAsJudge_Write:
required:
- action
- code
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluator_Write"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/TraceFilter_Write"
code:
$ref: "#/components/schemas/LlmAsJudgeCode_Write"
AutomationRuleEvaluatorSpanLlmAsJudge_Write:
required:
- action
- code
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluator_Write"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/SpanFilter_Write"
code:
$ref: "#/components/schemas/SpanLlmAsJudgeCode_Write"
AutomationRuleEvaluatorSpanUserDefinedMetricPython_Write:
required:
- action
- code
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluator_Write"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/SpanFilter_Write"
code:
$ref: "#/components/schemas/SpanUserDefinedMetricPythonCode_Write"
AutomationRuleEvaluatorTraceThreadLlmAsJudge_Write:
required:
- action
- code
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluator_Write"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/TraceThreadFilter_Write"
code:
$ref: "#/components/schemas/TraceThreadLlmAsJudgeCode_Write"
AutomationRuleEvaluatorTraceThreadUserDefinedMetricPython_Write:
required:
- action
- code
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluator_Write"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/TraceThreadFilter_Write"
code:
$ref: "#/components/schemas/TraceThreadUserDefinedMetricPythonCode_Write"
AutomationRuleEvaluatorUserDefinedMetricPython_Write:
required:
- action
- code
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluator_Write"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/TraceFilter_Write"
code:
$ref: "#/components/schemas/UserDefinedMetricPythonCode_Write"
AutomationRuleEvaluator_Write:
required:
- action
- name
- type
type: object
properties:
project_id:
type: string
description: Primary project ID (legacy field for backwards compatibility)
format: uuid
project_ids:
uniqueItems: true
type: array
description: Project IDs for write operations (used when creating/updating
rules)
items:
type: string
description: Project IDs for write operations (used when creating/updating
rules)
format: uuid
name:
minLength: 1
type: string
sampling_rate:
type: number
format: float
enabled:
type: boolean
type:
type: string
enum:
- llm_as_judge
- user_defined_metric_python
- trace_thread_llm_as_judge
- trace_thread_user_defined_metric_python
- span_llm_as_judge
- span_user_defined_metric_python
action:
type: string
enum:
- evaluator
discriminator:
propertyName: type
mapping:
llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorLlmAsJudge_Write"
user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorUserDefinedMetricPython_Write"
trace_thread_llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorTraceThreadLlmAsJudge_Write"
trace_thread_user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorTraceThreadUserDefinedMetricPython_Write"
span_llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorSpanLlmAsJudge_Write"
span_user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorSpanUserDefinedMetricPython_Write"
ImageUrl_Write:
required:
- url
type: object
properties:
url:
type: string
detail:
type: string
JsonNode_Write:
type: object
LlmAsJudgeCode_Write:
required:
- messages
- model
- schema
- variables
type: object
properties:
model:
$ref: "#/components/schemas/LlmAsJudgeModelParameters_Write"
messages:
type: array
items:
$ref: "#/components/schemas/LlmAsJudgeMessage_Write"
variables:
type: object
additionalProperties:
type: string
schema:
type: array
items:
$ref: "#/components/schemas/LlmAsJudgeOutputSchema_Write"
LlmAsJudgeMessageContent_Write:
required:
- type
type: object
properties:
type:
type: string
text:
type: string
image_url:
$ref: "#/components/schemas/ImageUrl_Write"
video_url:
$ref: "#/components/schemas/VideoUrl_Write"
audio_url:
$ref: "#/components/schemas/AudioUrl_Write"
LlmAsJudgeMessage_Write:
required:
- role
type: object
properties:
role:
type: string
enum:
- SYSTEM
- USER
- AI
- TOOL_EXECUTION_RESULT
- CUSTOM
content:
type: string
content_array:
type: array
items:
$ref: "#/components/schemas/LlmAsJudgeMessageContent_Write"
string_content:
type: boolean
structured_content:
type: boolean
LlmAsJudgeModelParameters_Write:
required:
- name
type: object
properties:
name:
type: string
temperature:
type: number
format: double
seed:
type: integer
format: int32
custom_parameters:
$ref: "#/components/schemas/JsonNode_Write"
LlmAsJudgeOutputSchema_Write:
required:
- description
- name
- type
type: object
properties:
name:
type: string
type:
type: string
enum:
- BOOLEAN
- INTEGER
- DOUBLE
description:
type: string
SpanFilter_Write:
type: object
properties:
field:
type: string
operator:
type: string
enum:
- contains
- not_contains
- starts_with
- ends_with
- =
- '!='
- '>'
- '>='
- <
- <=
- is_empty
- is_not_empty
- in
- not_in
key:
type: string
value:
type: string
SpanLlmAsJudgeCode_Write:
required:
- messages
- model
- schema
- variables
type: object
properties:
model:
$ref: "#/components/schemas/LlmAsJudgeModelParameters_Write"
messages:
type: array
items:
$ref: "#/components/schemas/LlmAsJudgeMessage_Write"
variables:
type: object
additionalProperties:
type: string
schema:
type: array
items:
$ref: "#/components/schemas/LlmAsJudgeOutputSchema_Write"
SpanUserDefinedMetricPythonCode_Write:
required:
- arguments
- metric
type: object
properties:
metric:
type: string
arguments:
minProperties: 1
type: object
additionalProperties:
type: string
TraceFilter_Write:
type: object
properties:
field:
type: string
operator:
type: string
enum:
- contains
- not_contains
- starts_with
- ends_with
- =
- '!='
- '>'
- '>='
- <
- <=
- is_empty
- is_not_empty
- in
- not_in
key:
type: string
value:
type: string
TraceThreadFilter_Write:
type: object
properties:
field:
type: string
operator:
type: string
enum:
- contains
- not_contains
- starts_with
- ends_with
- =
- '!='
- '>'
- '>='
- <
- <=
- is_empty
- is_not_empty
- in
- not_in
key:
type: string
value:
type: string
TraceThreadLlmAsJudgeCode_Write:
required:
- messages
- model
- schema
type: object
properties:
model:
$ref: "#/components/schemas/LlmAsJudgeModelParameters_Write"
messages:
type: array
items:
$ref: "#/components/schemas/LlmAsJudgeMessage_Write"
schema:
type: array
items:
$ref: "#/components/schemas/LlmAsJudgeOutputSchema_Write"
TraceThreadUserDefinedMetricPythonCode_Write:
required:
- metric
type: object
properties:
metric:
type: string
UserDefinedMetricPythonCode_Write:
required:
- arguments
- metric
type: object
properties:
metric:
type: string
arguments:
minProperties: 1
type: object
additionalProperties:
type: string
VideoUrl_Write:
required:
- url
type: object
properties:
url:
type: string
AudioUrl_Public:
required:
- url
type: object
properties:
url:
type: string
AutomationRuleEvaluatorLlmAsJudge_Public:
required:
- action
- code
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluator_Public"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/TraceFilter_Public"
code:
$ref: "#/components/schemas/LlmAsJudgeCode_Public"
AutomationRuleEvaluatorObjectObject_Public:
required:
- action
- name
- type
type: object
properties:
id:
type: string
format: uuid
readOnly: true
project_id:
type: string
description: Primary project ID (legacy field for backwards compatibility)
format: uuid
project_name:
type: string
description: Primary project name (legacy field for backwards compatibility)
readOnly: true
projects:
uniqueItems: true
type: array
description: "Projects assigned to this rule (unique, sorted alphabetically\
\ by name)"
readOnly: true
items:
$ref: "#/components/schemas/ProjectReference_Public"
name:
minLength: 1
type: string
sampling_rate:
type: number
format: float
enabled:
type: boolean
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
type:
type: string
enum:
- llm_as_judge
- user_defined_metric_python
- trace_thread_llm_as_judge
- trace_thread_user_defined_metric_python
- span_llm_as_judge
- span_user_defined_metric_python
action:
type: string
enum:
- evaluator
discriminator:
propertyName: type
mapping:
llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorLlmAsJudge_Public"
user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorUserDefinedMetricPython_Public"
trace_thread_llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorTraceThreadLlmAsJudge_Public"
trace_thread_user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorTraceThreadUserDefinedMetricPython_Public"
span_llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorSpanLlmAsJudge_Public"
span_user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorSpanUserDefinedMetricPython_Public"
AutomationRuleEvaluatorPage_Public:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/AutomationRuleEvaluatorObjectObject_Public"
sortable_by:
type: array
items:
type: string
AutomationRuleEvaluatorSpanLlmAsJudge_Public:
required:
- action
- code
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluator_Public"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/SpanFilter_Public"
code:
$ref: "#/components/schemas/SpanLlmAsJudgeCode_Public"
AutomationRuleEvaluatorSpanUserDefinedMetricPython_Public:
required:
- action
- code
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluator_Public"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/SpanFilter_Public"
code:
$ref: "#/components/schemas/SpanUserDefinedMetricPythonCode_Public"
AutomationRuleEvaluatorTraceThreadLlmAsJudge_Public:
required:
- action
- code
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluator_Public"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/TraceThreadFilter_Public"
code:
$ref: "#/components/schemas/TraceThreadLlmAsJudgeCode_Public"
AutomationRuleEvaluatorTraceThreadUserDefinedMetricPython_Public:
required:
- action
- code
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluator_Public"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/TraceThreadFilter_Public"
code:
$ref: "#/components/schemas/TraceThreadUserDefinedMetricPythonCode_Public"
AutomationRuleEvaluatorUserDefinedMetricPython_Public:
required:
- action
- code
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluator_Public"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/TraceFilter_Public"
code:
$ref: "#/components/schemas/UserDefinedMetricPythonCode_Public"
ImageUrl_Public:
required:
- url
type: object
properties:
url:
type: string
detail:
type: string
JsonNode_Public:
type: object
LlmAsJudgeCode_Public:
required:
- messages
- model
- schema
- variables
type: object
properties:
model:
$ref: "#/components/schemas/LlmAsJudgeModelParameters_Public"
messages:
type: array
items:
$ref: "#/components/schemas/LlmAsJudgeMessage_Public"
variables:
type: object
additionalProperties:
type: string
schema:
type: array
items:
$ref: "#/components/schemas/LlmAsJudgeOutputSchema_Public"
LlmAsJudgeMessageContent_Public:
required:
- type
type: object
properties:
type:
type: string
text:
type: string
image_url:
$ref: "#/components/schemas/ImageUrl_Public"
video_url:
$ref: "#/components/schemas/VideoUrl_Public"
audio_url:
$ref: "#/components/schemas/AudioUrl_Public"
LlmAsJudgeMessage_Public:
required:
- role
type: object
properties:
role:
type: string
enum:
- SYSTEM
- USER
- AI
- TOOL_EXECUTION_RESULT
- CUSTOM
content:
type: string
content_array:
type: array
items:
$ref: "#/components/schemas/LlmAsJudgeMessageContent_Public"
string_content:
type: boolean
structured_content:
type: boolean
LlmAsJudgeModelParameters_Public:
required:
- name
type: object
properties:
name:
type: string
temperature:
type: number
format: double
seed:
type: integer
format: int32
custom_parameters:
$ref: "#/components/schemas/JsonNode_Public"
LlmAsJudgeOutputSchema_Public:
required:
- description
- name
- type
type: object
properties:
name:
type: string
type:
type: string
enum:
- BOOLEAN
- INTEGER
- DOUBLE
description:
type: string
ProjectReference_Public:
required:
- project_id
- project_name
type: object
properties:
project_id:
type: string
description: Project ID
format: uuid
project_name:
type: string
description: Project name
description: Project reference with ID and name
readOnly: true
SpanFilter_Public:
type: object
properties:
field:
type: string
operator:
type: string
enum:
- contains
- not_contains
- starts_with
- ends_with
- =
- '!='
- '>'
- '>='
- <
- <=
- is_empty
- is_not_empty
- in
- not_in
key:
type: string
value:
type: string
SpanLlmAsJudgeCode_Public:
required:
- messages
- model
- schema
- variables
type: object
properties:
model:
$ref: "#/components/schemas/LlmAsJudgeModelParameters_Public"
messages:
type: array
items:
$ref: "#/components/schemas/LlmAsJudgeMessage_Public"
variables:
type: object
additionalProperties:
type: string
schema:
type: array
items:
$ref: "#/components/schemas/LlmAsJudgeOutputSchema_Public"
SpanUserDefinedMetricPythonCode_Public:
required:
- arguments
- metric
type: object
properties:
metric:
type: string
arguments:
minProperties: 1
type: object
additionalProperties:
type: string
TraceFilter_Public:
type: object
properties:
field:
type: string
operator:
type: string
enum:
- contains
- not_contains
- starts_with
- ends_with
- =
- '!='
- '>'
- '>='
- <
- <=
- is_empty
- is_not_empty
- in
- not_in
key:
type: string
value:
type: string
TraceThreadFilter_Public:
type: object
properties:
field:
type: string
operator:
type: string
enum:
- contains
- not_contains
- starts_with
- ends_with
- =
- '!='
- '>'
- '>='
- <
- <=
- is_empty
- is_not_empty
- in
- not_in
key:
type: string
value:
type: string
TraceThreadLlmAsJudgeCode_Public:
required:
- messages
- model
- schema
type: object
properties:
model:
$ref: "#/components/schemas/LlmAsJudgeModelParameters_Public"
messages:
type: array
items:
$ref: "#/components/schemas/LlmAsJudgeMessage_Public"
schema:
type: array
items:
$ref: "#/components/schemas/LlmAsJudgeOutputSchema_Public"
TraceThreadUserDefinedMetricPythonCode_Public:
required:
- metric
type: object
properties:
metric:
type: string
UserDefinedMetricPythonCode_Public:
required:
- arguments
- metric
type: object
properties:
metric:
type: string
arguments:
minProperties: 1
type: object
additionalProperties:
type: string
VideoUrl_Public:
required:
- url
type: object
properties:
url:
type: string
AutomationRuleEvaluator_Public:
required:
- action
- name
- type
type: object
properties:
id:
type: string
format: uuid
readOnly: true
project_id:
type: string
description: Primary project ID (legacy field for backwards compatibility)
format: uuid
project_name:
type: string
description: Primary project name (legacy field for backwards compatibility)
readOnly: true
projects:
uniqueItems: true
type: array
description: "Projects assigned to this rule (unique, sorted alphabetically\
\ by name)"
readOnly: true
items:
$ref: "#/components/schemas/ProjectReference_Public"
name:
minLength: 1
type: string
sampling_rate:
type: number
format: float
enabled:
type: boolean
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
type:
type: string
enum:
- llm_as_judge
- user_defined_metric_python
- trace_thread_llm_as_judge
- trace_thread_user_defined_metric_python
- span_llm_as_judge
- span_user_defined_metric_python
action:
type: string
enum:
- evaluator
discriminator:
propertyName: type
mapping:
llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorLlmAsJudge_Public"
user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorUserDefinedMetricPython_Public"
trace_thread_llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorTraceThreadLlmAsJudge_Public"
trace_thread_user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorTraceThreadUserDefinedMetricPython_Public"
span_llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorSpanLlmAsJudge_Public"
span_user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorSpanUserDefinedMetricPython_Public"
LogItem:
type: object
properties:
timestamp:
type: string
format: date-time
readOnly: true
rule_id:
type: string
format: uuid
readOnly: true
level:
type: string
readOnly: true
enum:
- INFO
- WARN
- ERROR
- DEBUG
- TRACE
message:
type: string
readOnly: true
markers:
type: object
additionalProperties:
type: string
readOnly: true
readOnly: true
LogPage:
type: object
properties:
content:
type: array
items:
$ref: "#/components/schemas/LogItem"
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
AutomationRuleEvaluatorUpdate:
required:
- action
- name
type: object
properties:
name:
minLength: 1
type: string
sampling_rate:
type: number
format: float
enabled:
type: boolean
project_id:
type: string
description: "Primary project ID (legacy field, maintained for backwards\
\ compatibility)"
format: uuid
project_ids:
uniqueItems: true
type: array
description: Multiple project IDs (new field for multi-project support)
items:
type: string
description: Multiple project IDs (new field for multi-project support)
format: uuid
type:
type: string
enum:
- llm_as_judge
- user_defined_metric_python
- trace_thread_llm_as_judge
- trace_thread_user_defined_metric_python
- span_llm_as_judge
- span_user_defined_metric_python
action:
type: string
enum:
- evaluator
discriminator:
propertyName: type
mapping:
llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorUpdateLlmAsJudge"
user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorUpdateUserDefinedMetricPython"
trace_thread_llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorUpdateTraceThreadLlmAsJudge"
trace_thread_user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorUpdateTraceThreadUserDefinedMetricPython"
span_llm_as_judge: "#/components/schemas/AutomationRuleEvaluatorUpdateSpanLlmAsJudge"
span_user_defined_metric_python: "#/components/schemas/AutomationRuleEvaluatorUpdateSpanUserDefinedMetricPython"
AutomationRuleEvaluatorUpdateLlmAsJudge:
required:
- action
- code
- name
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluatorUpdate"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/TraceFilter"
code:
$ref: "#/components/schemas/LlmAsJudgeCode"
AutomationRuleEvaluatorUpdateSpanLlmAsJudge:
required:
- action
- code
- name
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluatorUpdate"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/SpanFilter"
code:
$ref: "#/components/schemas/SpanLlmAsJudgeCode"
AutomationRuleEvaluatorUpdateSpanUserDefinedMetricPython:
required:
- action
- code
- name
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluatorUpdate"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/SpanFilter"
code:
$ref: "#/components/schemas/SpanUserDefinedMetricPythonCode"
AutomationRuleEvaluatorUpdateTraceThreadLlmAsJudge:
required:
- action
- code
- name
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluatorUpdate"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/TraceThreadFilter"
code:
$ref: "#/components/schemas/TraceThreadLlmAsJudgeCode"
AutomationRuleEvaluatorUpdateTraceThreadUserDefinedMetricPython:
required:
- action
- code
- name
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluatorUpdate"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/TraceThreadFilter"
code:
$ref: "#/components/schemas/TraceThreadUserDefinedMetricPythonCode"
AutomationRuleEvaluatorUpdateUserDefinedMetricPython:
required:
- action
- code
- name
type: object
allOf:
- $ref: "#/components/schemas/AutomationRuleEvaluatorUpdate"
- type: object
properties:
filters:
type: array
items:
$ref: "#/components/schemas/TraceFilter"
code:
$ref: "#/components/schemas/UserDefinedMetricPythonCode"
AssistantMessage:
type: object
properties:
role:
type: string
enum:
- system
- user
- assistant
- tool
- function
content:
type: string
reasoning_content:
type: string
name:
type: string
tool_calls:
type: array
items:
$ref: "#/components/schemas/ToolCall"
refusal:
type: string
function_call:
$ref: "#/components/schemas/FunctionCall"
ChatCompletionChoice:
type: object
properties:
index:
type: integer
format: int32
message:
$ref: "#/components/schemas/AssistantMessage"
delta:
$ref: "#/components/schemas/Delta"
finish_reason:
type: string
logprobs:
$ref: "#/components/schemas/LogProbs"
ChatCompletionResponse:
type: object
properties:
id:
type: string
created:
type: integer
format: int64
model:
type: string
choices:
type: array
items:
$ref: "#/components/schemas/ChatCompletionChoice"
usage:
$ref: "#/components/schemas/Usage"
system_fingerprint:
type: string
service_tier:
type: string
CompletionTokensDetails:
type: object
properties:
reasoning_tokens:
type: integer
format: int32
Delta:
type: object
properties:
role:
type: string
content:
type: string
reasoning_content:
type: string
tool_calls:
type: array
items:
$ref: "#/components/schemas/ToolCall"
function_call:
$ref: "#/components/schemas/FunctionCall"
FunctionCall:
type: object
properties:
name:
type: string
arguments:
type: string
LogProb:
type: object
properties:
token:
type: string
logprob:
type: number
format: double
bytes:
type: array
items:
type: integer
format: int32
LogProbs:
type: object
properties:
content:
type: array
items:
$ref: "#/components/schemas/LogProb"
PromptTokensDetails:
type: object
properties:
cached_tokens:
type: integer
format: int32
ToolCall:
type: object
properties:
id:
type: string
index:
type: integer
format: int32
type:
type: string
enum:
- function
function:
$ref: "#/components/schemas/FunctionCall"
Usage:
type: object
properties:
total_tokens:
type: integer
format: int32
prompt_tokens:
type: integer
format: int32
prompt_tokens_details:
$ref: "#/components/schemas/PromptTokensDetails"
completion_tokens:
type: integer
format: int32
completion_tokens_details:
$ref: "#/components/schemas/CompletionTokensDetails"
ChatCompletionRequest:
type: object
properties:
model:
type: string
messages:
type: array
items:
$ref: "#/components/schemas/Message"
temperature:
type: number
format: double
top_p:
type: number
format: double
"n":
type: integer
format: int32
stream:
type: boolean
stream_options:
$ref: "#/components/schemas/StreamOptions"
stop:
type: array
items:
type: string
max_tokens:
type: integer
format: int32
max_completion_tokens:
type: integer
format: int32
presence_penalty:
type: number
format: double
frequency_penalty:
type: number
format: double
logit_bias:
type: object
additionalProperties:
type: integer
format: int32
user:
type: string
response_format:
$ref: "#/components/schemas/ResponseFormat"
seed:
type: integer
format: int32
tools:
type: array
items:
$ref: "#/components/schemas/Tool"
tool_choice:
type: object
parallel_tool_calls:
type: boolean
store:
type: boolean
metadata:
type: object
additionalProperties:
type: string
reasoning_effort:
type: string
service_tier:
type: string
logprobs:
type: boolean
top_logprobs:
type: integer
format: int32
functions:
type: array
items:
$ref: "#/components/schemas/Function"
function_call:
$ref: "#/components/schemas/FunctionCall"
Function:
type: object
properties:
name:
type: string
description:
type: string
strict:
type: boolean
parameters:
type: object
additionalProperties:
type: object
JsonSchema:
type: object
properties:
name:
type: string
strict:
type: boolean
schema:
type: object
additionalProperties:
type: object
Message:
required:
- content
- role
type: object
properties:
role:
minLength: 1
type: string
content:
$ref: "#/components/schemas/JsonNode"
ResponseFormat:
type: object
properties:
type:
type: string
enum:
- text
- json_object
- json_schema
json_schema:
$ref: "#/components/schemas/JsonSchema"
StreamOptions:
type: object
properties:
include_usage:
type: boolean
Tool:
type: object
properties:
type:
type: string
enum:
- function
function:
$ref: "#/components/schemas/Function"
Dashboard_Public:
required:
- config
- name
type: object
properties:
id:
type: string
format: uuid
readOnly: true
workspace_id:
type: string
readOnly: true
project_id:
type: string
description: Project ID. Takes precedence over project_name when both are
provided.
format: uuid
name:
maxLength: 120
minLength: 1
type: string
slug:
type: string
readOnly: true
type:
type: string
enum:
- multi_project
- experiments
scope:
type: string
readOnly: true
enum:
- workspace
- insights
description:
maxLength: 1000
minLength: 0
type: string
config:
$ref: "#/components/schemas/JsonNode_Public"
created_by:
type: string
readOnly: true
last_updated_by:
type: string
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
Dashboard_Write:
required:
- config
- name
type: object
properties:
project_id:
type: string
description: Project ID. Takes precedence over project_name when both are
provided.
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "For project scope, specify either project_id or project_name.\
\ If project_name is provided and the project does not exist, it will\
\ be created. Ignored when project_id is provided. If neither is provided,\
\ the dashboard is created at workspace level."
name:
maxLength: 120
minLength: 1
type: string
type:
type: string
enum:
- multi_project
- experiments
description:
maxLength: 1000
minLength: 0
type: string
config:
$ref: "#/components/schemas/JsonNode_Write"
DashboardPage_Public:
type: object
properties:
content:
type: array
items:
$ref: "#/components/schemas/Dashboard_Public"
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
sortable_by:
type: array
items:
type: string
DashboardUpdate_Public:
type: object
properties:
name:
maxLength: 120
minLength: 1
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
type:
type: string
enum:
- multi_project
- experiments
description:
maxLength: 1000
minLength: 0
type: string
config:
$ref: "#/components/schemas/JsonNode_Public"
DatasetVersion_Public:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
dataset_id:
type: string
format: uuid
readOnly: true
version_hash:
type: string
readOnly: true
tags:
uniqueItems: true
type: array
readOnly: true
items:
type: string
readOnly: true
is_latest:
type: boolean
description: Indicates whether this is the latest version of the dataset
readOnly: true
version_name:
type: string
description: "Sequential version name formatted as 'v1', 'v2', etc."
readOnly: true
items_total:
type: integer
description: Total number of items in this version
format: int32
readOnly: true
items_added:
type: integer
description: Number of items added since last version
format: int32
readOnly: true
items_modified:
type: integer
description: Number of items modified since last version
format: int32
readOnly: true
items_deleted:
type: integer
description: Number of items deleted since last version
format: int32
readOnly: true
change_description:
type: string
readOnly: true
metadata:
type: object
additionalProperties:
type: string
readOnly: true
readOnly: true
evaluators:
type: array
description: Default evaluators for items in this version
readOnly: true
items:
$ref: "#/components/schemas/EvaluatorItem_Public"
execution_policy:
$ref: "#/components/schemas/ExecutionPolicy_Public"
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
EvaluatorItem_Public:
required:
- config
- name
- type
type: object
properties:
name:
minLength: 1
type: string
type:
type: string
enum:
- llm_judge
- code_metric
config:
$ref: "#/components/schemas/JsonNode_Public"
description: Default evaluators for items in this version
readOnly: true
ExecutionPolicy_Public:
type: object
properties:
runs_per_item:
maximum: 100
minimum: 1
type: integer
format: int32
pass_threshold:
maximum: 100
minimum: 1
type: integer
format: int32
description: Default execution policy for items in this version
readOnly: true
DatasetItemChanges_Public:
type: object
DatasetItemBatchUpdate:
required:
- update
type: object
properties:
ids:
maxItems: 1000
minItems: 1
uniqueItems: true
type: array
description: List of dataset item IDs to update (max 1000). Mutually exclusive
with 'filters'.
items:
type: string
description: List of dataset item IDs to update (max 1000). Mutually exclusive
with 'filters'.
format: uuid
filters:
type: array
items:
$ref: "#/components/schemas/DatasetItemFilter"
dataset_id:
type: string
description: "Dataset ID. Required when using 'filters', optional when using\
\ 'ids'."
format: uuid
update:
$ref: "#/components/schemas/DatasetItemUpdate"
merge_tags:
type: boolean
description: "If true, merge tags with existing tags instead of replacing\
\ them. Default: false. When using 'filters', this is automatically set\
\ to true."
description: Request to batch update multiple dataset items
DatasetItemFilter:
type: object
properties:
field:
type: string
operator:
type: string
enum:
- contains
- not_contains
- starts_with
- ends_with
- =
- '!='
- '>'
- '>='
- <
- <=
- is_empty
- is_not_empty
- in
- not_in
key:
type: string
value:
type: string
description: Filters to select dataset items to delete within the specified
dataset. Must be used with 'dataset_id'. Mutually exclusive with 'item_ids'.
Empty array means 'delete all items in the dataset'.
DatasetItemUpdate:
type: object
properties:
input:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: Dataset item input
expected_output:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: Dataset item expected output
metadata:
$ref: "#/components/schemas/JsonNode"
data:
$ref: "#/components/schemas/JsonNode"
description:
type: string
description: Dataset item description
tags:
maxItems: 50
minItems: 0
uniqueItems: true
type: array
description: Tags
items:
maxLength: 100
minLength: 0
type: string
description: Tags
tags_to_add:
maxItems: 50
minItems: 0
uniqueItems: true
type: array
description: Tags to add
items:
maxLength: 100
minLength: 0
type: string
description: Tags to add
tags_to_remove:
maxItems: 50
minItems: 0
uniqueItems: true
type: array
description: Tags to remove
items:
maxLength: 100
minLength: 0
type: string
description: Tags to remove
evaluators:
type: array
description: Evaluators
items:
$ref: "#/components/schemas/EvaluatorItem"
execution_policy:
$ref: "#/components/schemas/ExecutionPolicy"
clear_execution_policy:
type: boolean
description: "When true, clears the item-level execution policy (falls back\
\ to dataset-level)"
description: Dataset item update request
EvaluatorItem:
required:
- config
- name
- type
type: object
properties:
name:
minLength: 1
type: string
type:
type: string
enum:
- llm_judge
- code_metric
config:
$ref: "#/components/schemas/JsonNode"
ExecutionPolicy:
type: object
properties:
runs_per_item:
maximum: 100
minimum: 1
type: integer
format: int32
pass_threshold:
maximum: 100
minimum: 1
type: integer
format: int32
readOnly: true
Dataset:
required:
- name
type: object
properties:
id:
type: string
format: uuid
name:
minLength: 1
type: string
project_id:
type: string
description: Project ID. Takes precedence over project_name when both are
provided.
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "For project scope, specify either project_id or project_name.\
\ If project_name is provided and the project does not exist, it will\
\ be created. Ignored when project_id is provided. If neither is provided,\
\ the dataset is created at workspace level."
type:
type: string
enum:
- dataset
- evaluation_suite
visibility:
type: string
enum:
- private
- public
tags:
uniqueItems: true
type: array
items:
type: string
description:
maxLength: 255
minLength: 0
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
experiment_count:
type: integer
format: int64
readOnly: true
dataset_items_count:
type: integer
format: int64
readOnly: true
optimization_count:
type: integer
format: int64
readOnly: true
most_recent_experiment_at:
type: string
format: date-time
readOnly: true
last_created_experiment_at:
type: string
format: date-time
readOnly: true
most_recent_optimization_at:
type: string
format: date-time
readOnly: true
last_created_optimization_at:
type: string
format: date-time
readOnly: true
status:
type: string
readOnly: true
enum:
- unknown
- processing
- completed
- failed
latest_version:
$ref: "#/components/schemas/DatasetVersionSummary"
DatasetVersionSummary:
type: object
properties:
id:
type: string
description: Unique identifier of the version
format: uuid
version_hash:
type: string
description: Hash of the version content
version_name:
type: string
description: "Sequential version name formatted as 'v1', 'v2', etc."
change_description:
type: string
description: Description of changes in this version
tags:
uniqueItems: true
type: array
description: Tags associated with this version
items:
type: string
description: Tags associated with this version
description: Summary of the latest dataset version
readOnly: true
Dataset_Write:
required:
- name
type: object
properties:
id:
type: string
format: uuid
name:
minLength: 1
type: string
project_id:
type: string
description: Project ID. Takes precedence over project_name when both are
provided.
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "For project scope, specify either project_id or project_name.\
\ If project_name is provided and the project does not exist, it will\
\ be created. Ignored when project_id is provided. If neither is provided,\
\ the dataset is created at workspace level."
type:
type: string
enum:
- dataset
- evaluation_suite
visibility:
type: string
enum:
- private
- public
tags:
uniqueItems: true
type: array
items:
type: string
description:
maxLength: 255
minLength: 0
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
AssertionResult:
type: object
properties:
value:
type: string
passed:
type: boolean
reason:
type: string
readOnly: true
Comment:
required:
- text
type: object
properties:
id:
type: string
format: uuid
readOnly: true
text:
minLength: 1
type: string
source_queue_id:
type: string
format: uuid
created_at:
type: string
format: date-time
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_by:
type: string
readOnly: true
DatasetItem:
required:
- data
- source
type: object
properties:
id:
type: string
description: |
Stable item identifier.
On write, used as the upsert key.
If omitted, a new ID is generated.
Remains the same across dataset versions
format: uuid
dataset_item_id:
type: string
description: |
Deprecated.
Always equals 'id'.
Retained for backward compatibility and will be removed in a future version
format: uuid
readOnly: true
trace_id:
type: string
format: uuid
span_id:
type: string
format: uuid
source:
type: string
enum:
- manual
- trace
- span
- sdk
data:
$ref: "#/components/schemas/JsonNode"
description:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
tags:
uniqueItems: true
type: array
items:
type: string
evaluators:
type: array
items:
$ref: "#/components/schemas/EvaluatorItem"
execution_policy:
$ref: "#/components/schemas/ExecutionPolicy"
experiment_items:
type: array
readOnly: true
items:
$ref: "#/components/schemas/ExperimentItem"
run_summaries_by_experiment:
type: object
additionalProperties:
$ref: "#/components/schemas/ExperimentRunSummary"
readOnly: true
dataset_id:
type: string
format: uuid
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_by:
type: string
readOnly: true
DatasetItemBatch:
required:
- items
type: object
properties:
dataset_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "If null, dataset_id must be provided"
dataset_id:
type: string
description: "If null, dataset_name must be provided"
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: Optional. Associates the batch with a project by name. Ignored
if project_id is provided.
project_id:
type: string
description: Optional. Associates the batch with a project by ID. Takes
precedence over project_name.
format: uuid
items:
maxItems: 1000
minItems: 1
type: array
items:
$ref: "#/components/schemas/DatasetItem"
batch_group_id:
type: string
description: "Optional batch group ID to group multiple batches into a single\
\ dataset version. If null, mutates the latest version instead of creating\
\ a new one."
format: uuid
copy_from_dataset_id:
type: string
description: "Optional. Dataset to read carry-forward rows from when materializing\
\ the new version. Required together with copy_from_version_id. When null,\
\ carry-forward rows are read from the destination dataset's prior version."
format: uuid
copy_from_version_id:
type: string
description: Optional. Version within copy_from_dataset_id to read carry-forward
rows from. Required together with copy_from_dataset_id.
format: uuid
ExperimentItem:
required:
- dataset_item_id
- experiment_id
- trace_id
type: object
properties:
id:
type: string
format: uuid
experiment_id:
type: string
format: uuid
dataset_item_id:
type: string
format: uuid
trace_id:
type: string
format: uuid
project_id:
type: string
format: uuid
readOnly: true
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
input:
$ref: "#/components/schemas/JsonListString"
output:
$ref: "#/components/schemas/JsonListString"
trace_metadata:
$ref: "#/components/schemas/JsonListString"
feedback_scores:
type: array
readOnly: true
items:
$ref: "#/components/schemas/FeedbackScore"
comments:
type: array
readOnly: true
items:
$ref: "#/components/schemas/Comment"
total_estimated_cost:
type: number
readOnly: true
duration:
type: number
format: double
readOnly: true
usage:
type: object
additionalProperties:
type: integer
format: int64
readOnly: true
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_by:
type: string
readOnly: true
trace_visibility_mode:
type: string
readOnly: true
enum:
- default
- hidden
description:
type: string
readOnly: true
execution_policy:
$ref: "#/components/schemas/ExecutionPolicy"
assertion_results:
type: array
readOnly: true
items:
$ref: "#/components/schemas/AssertionResult"
status:
type: string
readOnly: true
enum:
- passed
- failed
ExperimentRunSummary:
type: object
properties:
passed_runs:
type: integer
format: int32
total_runs:
type: integer
format: int32
status:
type: string
enum:
- passed
- failed
readOnly: true
FeedbackScore:
required:
- name
- source
- value
type: object
properties:
name:
minLength: 1
type: string
category_name:
type: string
value:
maximum: 999999999.999999999
exclusiveMaximum: false
minimum: -999999999.999999999
exclusiveMinimum: false
type: number
reason:
type: string
source:
type: string
enum:
- ui
- sdk
- online_scoring
source_queue_id:
type: string
format: uuid
created_at:
type: string
format: date-time
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_by:
type: string
readOnly: true
value_by_author:
type: object
additionalProperties:
$ref: "#/components/schemas/ValueEntry"
readOnly: true
JsonListString:
type: object
anyOf:
- type: object
- type: array
items:
type: object
- type: string
ValueEntry:
type: object
properties:
value:
type: number
reason:
type: string
category_name:
type: string
source:
type: string
enum:
- ui
- sdk
- online_scoring
last_updated_at:
type: string
format: date-time
span_type:
type: string
span_id:
type: string
source_queue_id:
type: string
author:
type: string
readOnly: true
DatasetItemBatch_Write:
required:
- items
type: object
properties:
dataset_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "If null, dataset_id must be provided"
dataset_id:
type: string
description: "If null, dataset_name must be provided"
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: Optional. Associates the batch with a project by name. Ignored
if project_id is provided.
project_id:
type: string
description: Optional. Associates the batch with a project by ID. Takes
precedence over project_name.
format: uuid
items:
maxItems: 1000
minItems: 1
type: array
items:
$ref: "#/components/schemas/DatasetItem_Write"
batch_group_id:
type: string
description: "Optional batch group ID to group multiple batches into a single\
\ dataset version. If null, mutates the latest version instead of creating\
\ a new one."
format: uuid
copy_from_dataset_id:
type: string
description: "Optional. Dataset to read carry-forward rows from when materializing\
\ the new version. Required together with copy_from_version_id. When null,\
\ carry-forward rows are read from the destination dataset's prior version."
format: uuid
copy_from_version_id:
type: string
description: Optional. Version within copy_from_dataset_id to read carry-forward
rows from. Required together with copy_from_dataset_id.
format: uuid
DatasetItem_Write:
required:
- data
- source
type: object
properties:
id:
type: string
description: |
Stable item identifier.
On write, used as the upsert key.
If omitted, a new ID is generated.
Remains the same across dataset versions
format: uuid
trace_id:
type: string
format: uuid
span_id:
type: string
format: uuid
source:
type: string
enum:
- manual
- trace
- span
- sdk
data:
$ref: "#/components/schemas/JsonNode"
description:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
tags:
uniqueItems: true
type: array
items:
type: string
evaluators:
type: array
items:
$ref: "#/components/schemas/EvaluatorItem_Write"
execution_policy:
$ref: "#/components/schemas/ExecutionPolicy_Write"
EvaluatorItem_Write:
required:
- config
- name
- type
type: object
properties:
name:
minLength: 1
type: string
type:
type: string
enum:
- llm_judge
- code_metric
config:
$ref: "#/components/schemas/JsonNode_Write"
ExecutionPolicy_Write:
type: object
properties:
runs_per_item:
maximum: 100
minimum: 1
type: integer
format: int32
pass_threshold:
maximum: 100
minimum: 1
type: integer
format: int32
CreateDatasetItemsFromSpansRequest:
required:
- enrichment_options
- span_ids
type: object
properties:
span_ids:
minItems: 1
uniqueItems: true
type: array
description: Set of span IDs to add to the dataset
items:
type: string
description: Set of span IDs to add to the dataset
format: uuid
enrichment_options:
$ref: "#/components/schemas/SpanEnrichmentOptions"
evaluators:
type: array
description: Optional evaluators to apply to the created items
items:
$ref: "#/components/schemas/EvaluatorItem"
execution_policy:
$ref: "#/components/schemas/ExecutionPolicy"
SpanEnrichmentOptions:
type: object
properties:
includeTags:
type: boolean
includeFeedbackScores:
type: boolean
includeComments:
type: boolean
includeUsage:
type: boolean
includeMetadata:
type: boolean
description: Options for enriching span data
CreateDatasetItemsFromTracesRequest:
required:
- enrichment_options
- trace_ids
type: object
properties:
trace_ids:
minItems: 1
uniqueItems: true
type: array
description: Set of trace IDs to add to the dataset
items:
type: string
description: Set of trace IDs to add to the dataset
format: uuid
enrichment_options:
$ref: "#/components/schemas/TraceEnrichmentOptions"
evaluators:
type: array
description: Optional evaluators to apply to the created items
items:
$ref: "#/components/schemas/EvaluatorItem"
execution_policy:
$ref: "#/components/schemas/ExecutionPolicy"
TraceEnrichmentOptions:
type: object
properties:
includeSpans:
type: boolean
includeTags:
type: boolean
includeFeedbackScores:
type: boolean
includeComments:
type: boolean
includeUsage:
type: boolean
includeMetadata:
type: boolean
description: Options for enriching trace data
DatasetIdentifier:
required:
- dataset_name
type: object
properties:
dataset_name:
minLength: 1
type: string
project_name:
type: string
DatasetItemsDelete:
type: object
properties:
item_ids:
maxItems: 1000
minItems: 1
uniqueItems: true
type: array
description: List of dataset item IDs to delete (max 1000). Use this to
delete specific items by their IDs. Mutually exclusive with 'dataset_id'
and 'filters'.
items:
type: string
description: List of dataset item IDs to delete (max 1000). Use this to
delete specific items by their IDs. Mutually exclusive with 'dataset_id'
and 'filters'.
format: uuid
dataset_id:
type: string
description: Dataset ID to scope the deletion. Required when using 'filters'.
Mutually exclusive with 'item_ids'.
format: uuid
filters:
type: array
description: Filters to select dataset items to delete within the specified
dataset. Must be used with 'dataset_id'. Mutually exclusive with 'item_ids'.
Empty array means 'delete all items in the dataset'.
items:
$ref: "#/components/schemas/DatasetItemFilter"
batch_group_id:
type: string
description: "Optional batch group ID to group multiple delete operations\
\ into a single dataset version. If null, mutates the latest version instead\
\ of creating a new one."
format: uuid
description: Request to delete multiple dataset items
DatasetExpansionResponse:
type: object
properties:
generated_samples:
type: array
description: List of generated synthetic dataset items
items:
$ref: "#/components/schemas/DatasetItem"
model:
type: string
description: Model used for generation
example: gpt-4
total_generated:
type: integer
description: Total number of samples generated
format: int32
example: 10
generation_time:
type: string
description: Generation timestamp
format: date-time
readOnly: true
DatasetExpansion:
required:
- model
type: object
properties:
model:
minLength: 1
type: string
description: The model to use for synthetic data generation
example: gpt-4
sample_count:
maximum: 200
minimum: 1
type: integer
description: Number of synthetic samples to generate
format: int32
example: 10
preserve_fields:
type: array
description: Fields to preserve patterns from original data
example:
- input
- expected_output
items:
type: string
description: Fields to preserve patterns from original data
example: "[\"input\",\"expected_output\"]"
variation_instructions:
type: string
description: Additional instructions for data variation
example: Create variations that test edge cases
custom_prompt:
type: string
description: Custom prompt to use for generation instead of auto-generated
one
max_completion_tokens:
minimum: 100
type: integer
description: "Maximum number of tokens for the LLM response. Required by\
\ Anthropic, used as maxOutputTokens for Gemini. If not provided, defaults\
\ to 4000 for Anthropic models only."
format: int32
DatasetExpansion_Write:
required:
- model
type: object
properties:
model:
minLength: 1
type: string
description: The model to use for synthetic data generation
example: gpt-4
sample_count:
maximum: 200
minimum: 1
type: integer
description: Number of synthetic samples to generate
format: int32
example: 10
preserve_fields:
type: array
description: Fields to preserve patterns from original data
example:
- input
- expected_output
items:
type: string
description: Fields to preserve patterns from original data
example: "[\"input\",\"expected_output\"]"
variation_instructions:
type: string
description: Additional instructions for data variation
example: Create variations that test edge cases
custom_prompt:
type: string
description: Custom prompt to use for generation instead of auto-generated
one
max_completion_tokens:
minimum: 100
type: integer
description: "Maximum number of tokens for the LLM response. Required by\
\ Anthropic, used as maxOutputTokens for Gemini. If not provided, defaults\
\ to 4000 for Anthropic models only."
format: int32
AssertionResult_Compare:
type: object
properties:
value:
type: string
passed:
type: boolean
reason:
type: string
readOnly: true
Column_Compare:
type: object
properties:
name:
type: string
types:
uniqueItems: true
type: array
items:
type: string
enum:
- string
- number
- object
- boolean
- array
- "null"
filter_field_prefix:
type: string
filterField:
type: string
description: The field to use for filtering
readOnly: true
Comment_Compare:
required:
- text
type: object
properties:
id:
type: string
format: uuid
readOnly: true
text:
minLength: 1
type: string
source_queue_id:
type: string
format: uuid
created_at:
type: string
format: date-time
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_by:
type: string
readOnly: true
readOnly: true
DatasetItemPage_Compare:
type: object
properties:
content:
type: array
items:
$ref: "#/components/schemas/DatasetItem_Compare"
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
columns:
uniqueItems: true
type: array
items:
$ref: "#/components/schemas/Column_Compare"
sortableBy:
type: array
items:
type: string
DatasetItem_Compare:
required:
- data
- source
type: object
properties:
id:
type: string
description: |
Stable item identifier.
On write, used as the upsert key.
If omitted, a new ID is generated.
Remains the same across dataset versions
format: uuid
dataset_item_id:
type: string
description: |
Deprecated.
Always equals 'id'.
Retained for backward compatibility and will be removed in a future version
format: uuid
readOnly: true
trace_id:
type: string
format: uuid
span_id:
type: string
format: uuid
source:
type: string
enum:
- manual
- trace
- span
- sdk
data:
$ref: "#/components/schemas/JsonNode"
description:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
tags:
uniqueItems: true
type: array
items:
type: string
evaluators:
type: array
items:
$ref: "#/components/schemas/EvaluatorItem_Compare"
execution_policy:
$ref: "#/components/schemas/ExecutionPolicy_Compare"
experiment_items:
type: array
readOnly: true
items:
$ref: "#/components/schemas/ExperimentItem_Compare"
run_summaries_by_experiment:
type: object
additionalProperties:
$ref: "#/components/schemas/ExperimentRunSummary_Compare"
readOnly: true
dataset_id:
type: string
format: uuid
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_by:
type: string
readOnly: true
EvaluatorItem_Compare:
required:
- config
- name
- type
type: object
properties:
name:
minLength: 1
type: string
type:
type: string
enum:
- llm_judge
- code_metric
config:
$ref: "#/components/schemas/JsonNode_Compare"
ExecutionPolicy_Compare:
type: object
properties:
runs_per_item:
maximum: 100
minimum: 1
type: integer
format: int32
pass_threshold:
maximum: 100
minimum: 1
type: integer
format: int32
readOnly: true
ExperimentItem_Compare:
required:
- dataset_item_id
- experiment_id
- trace_id
type: object
properties:
id:
type: string
format: uuid
experiment_id:
type: string
format: uuid
dataset_item_id:
type: string
format: uuid
trace_id:
type: string
format: uuid
project_id:
type: string
format: uuid
readOnly: true
input:
$ref: "#/components/schemas/JsonListString_Compare"
output:
$ref: "#/components/schemas/JsonListString_Compare"
trace_metadata:
$ref: "#/components/schemas/JsonListString_Compare"
feedback_scores:
type: array
readOnly: true
items:
$ref: "#/components/schemas/FeedbackScore_Compare"
comments:
type: array
readOnly: true
items:
$ref: "#/components/schemas/Comment_Compare"
total_estimated_cost:
type: number
readOnly: true
duration:
type: number
format: double
readOnly: true
usage:
type: object
additionalProperties:
type: integer
format: int64
readOnly: true
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_by:
type: string
readOnly: true
trace_visibility_mode:
type: string
readOnly: true
enum:
- default
- hidden
description:
type: string
readOnly: true
execution_policy:
$ref: "#/components/schemas/ExecutionPolicy_Compare"
assertion_results:
type: array
readOnly: true
items:
$ref: "#/components/schemas/AssertionResult_Compare"
status:
type: string
readOnly: true
enum:
- passed
- failed
readOnly: true
ExperimentRunSummary_Compare:
type: object
properties:
passed_runs:
type: integer
format: int32
total_runs:
type: integer
format: int32
status:
type: string
enum:
- passed
- failed
readOnly: true
FeedbackScore_Compare:
required:
- name
- source
- value
type: object
properties:
name:
minLength: 1
type: string
category_name:
type: string
value:
maximum: 999999999.999999999
exclusiveMaximum: false
minimum: -999999999.999999999
exclusiveMinimum: false
type: number
reason:
type: string
source:
type: string
enum:
- ui
- sdk
- online_scoring
source_queue_id:
type: string
format: uuid
created_at:
type: string
format: date-time
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_by:
type: string
readOnly: true
value_by_author:
type: object
additionalProperties:
$ref: "#/components/schemas/ValueEntry_Compare"
readOnly: true
readOnly: true
JsonListString_Compare:
type: object
readOnly: true
anyOf:
- type: object
- type: array
items:
type: object
- type: string
JsonNode_Compare:
type: object
ValueEntry_Compare:
type: object
properties:
value:
type: number
reason:
type: string
category_name:
type: string
source:
type: string
enum:
- ui
- sdk
- online_scoring
last_updated_at:
type: string
format: date-time
span_type:
type: string
span_id:
type: string
source_queue_id:
type: string
author:
type: string
readOnly: true
DatasetPage_Public:
type: object
properties:
content:
type: array
items:
$ref: "#/components/schemas/Dataset_Public"
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
sortableBy:
type: array
items:
type: string
DatasetVersionSummary_Public:
type: object
properties:
id:
type: string
description: Unique identifier of the version
format: uuid
version_hash:
type: string
description: Hash of the version content
version_name:
type: string
description: "Sequential version name formatted as 'v1', 'v2', etc."
change_description:
type: string
description: Description of changes in this version
tags:
uniqueItems: true
type: array
description: Tags associated with this version
items:
type: string
description: Tags associated with this version
description: Summary of the latest dataset version
readOnly: true
Dataset_Public:
required:
- name
type: object
properties:
id:
type: string
format: uuid
name:
minLength: 1
type: string
project_id:
type: string
description: Project ID. Takes precedence over project_name when both are
provided.
format: uuid
type:
type: string
enum:
- dataset
- evaluation_suite
visibility:
type: string
enum:
- private
- public
tags:
uniqueItems: true
type: array
items:
type: string
description:
maxLength: 255
minLength: 0
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
experiment_count:
type: integer
format: int64
readOnly: true
dataset_items_count:
type: integer
format: int64
readOnly: true
optimization_count:
type: integer
format: int64
readOnly: true
most_recent_experiment_at:
type: string
format: date-time
readOnly: true
last_created_experiment_at:
type: string
format: date-time
readOnly: true
most_recent_optimization_at:
type: string
format: date-time
readOnly: true
last_created_optimization_at:
type: string
format: date-time
readOnly: true
status:
type: string
readOnly: true
enum:
- unknown
- processing
- completed
- failed
latest_version:
$ref: "#/components/schemas/DatasetVersionSummary_Public"
DatasetIdentifier_Public:
required:
- dataset_name
type: object
properties:
dataset_name:
minLength: 1
type: string
project_name:
type: string
AvgValueStat_Public:
type: object
allOf:
- $ref: "#/components/schemas/ProjectStatItemObject_Public"
- type: object
properties:
value:
type: number
format: double
CountValueStat_Public:
type: object
allOf:
- $ref: "#/components/schemas/ProjectStatItemObject_Public"
- type: object
properties:
value:
type: integer
format: int64
PercentageValueStat_Public:
type: object
allOf:
- $ref: "#/components/schemas/ProjectStatItemObject_Public"
- type: object
properties:
value:
$ref: "#/components/schemas/PercentageValues_Public"
PercentageValues_Public:
type: object
properties:
p50:
type: number
p90:
type: number
p99:
type: number
ProjectStatItemObject_Public:
type: object
properties:
name:
type: string
type:
type: string
enum:
- COUNT
- PERCENTAGE
- AVG
discriminator:
propertyName: type
mapping:
PERCENTAGE: "#/components/schemas/PercentageValueStat_Public"
COUNT: "#/components/schemas/CountValueStat_Public"
AVG: "#/components/schemas/AvgValueStat_Public"
ProjectStats_Public:
type: object
properties:
stats:
type: array
items:
$ref: "#/components/schemas/ProjectStatItemObject_Public"
DatasetExportJob_Public:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
dataset_id:
type: string
format: uuid
readOnly: true
dataset_name:
type: string
readOnly: true
status:
type: string
readOnly: true
enum:
- PENDING
- PROCESSING
- COMPLETED
- FAILED
file_path:
type: string
readOnly: true
error_message:
type: string
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
expires_at:
type: string
format: date-time
readOnly: true
viewed_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_by:
type: string
readOnly: true
DatasetItem_Public:
required:
- data
- source
type: object
properties:
id:
type: string
description: |
Stable item identifier.
On write, used as the upsert key.
If omitted, a new ID is generated.
Remains the same across dataset versions
format: uuid
dataset_item_id:
type: string
description: |
Deprecated.
Always equals 'id'.
Retained for backward compatibility and will be removed in a future version
format: uuid
readOnly: true
trace_id:
type: string
format: uuid
span_id:
type: string
format: uuid
source:
type: string
enum:
- manual
- trace
- span
- sdk
data:
$ref: "#/components/schemas/JsonNode"
description:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
tags:
uniqueItems: true
type: array
items:
type: string
evaluators:
type: array
items:
$ref: "#/components/schemas/EvaluatorItem_Public"
execution_policy:
$ref: "#/components/schemas/ExecutionPolicy_Public"
experiment_items:
type: array
readOnly: true
items:
$ref: "#/components/schemas/ExperimentItem_Public"
run_summaries_by_experiment:
type: object
additionalProperties:
$ref: "#/components/schemas/ExperimentRunSummary_Public"
readOnly: true
dataset_id:
type: string
format: uuid
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_by:
type: string
readOnly: true
ExperimentItem_Public:
required:
- dataset_item_id
- experiment_id
- trace_id
type: object
properties:
id:
type: string
format: uuid
experiment_id:
type: string
format: uuid
dataset_item_id:
type: string
format: uuid
trace_id:
type: string
format: uuid
project_id:
type: string
format: uuid
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_by:
type: string
readOnly: true
trace_visibility_mode:
type: string
readOnly: true
enum:
- default
- hidden
ExperimentRunSummary_Public:
type: object
properties:
passed_runs:
type: integer
format: int32
total_runs:
type: integer
format: int32
status:
type: string
enum:
- passed
- failed
readOnly: true
Column_Public:
type: object
properties:
name:
type: string
types:
uniqueItems: true
type: array
items:
type: string
enum:
- string
- number
- object
- boolean
- array
- "null"
filter_field_prefix:
type: string
filterField:
type: string
description: The field to use for filtering
readOnly: true
DatasetItemPage_Public:
type: object
properties:
content:
type: array
items:
$ref: "#/components/schemas/DatasetItem_Public"
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
columns:
uniqueItems: true
type: array
items:
$ref: "#/components/schemas/Column_Public"
sortableBy:
type: array
items:
type: string
Column:
type: object
properties:
name:
type: string
types:
uniqueItems: true
type: array
items:
type: string
enum:
- string
- number
- object
- boolean
- array
- "null"
filter_field_prefix:
type: string
filterField:
type: string
description: The field to use for filtering
readOnly: true
PageColumns:
type: object
properties:
columns:
type: array
items:
$ref: "#/components/schemas/Column"
ChunkedOutputJsonNode:
type: object
properties:
type:
type: object
properties:
typeName:
type: string
closed:
type: boolean
DatasetItemStreamRequest:
required:
- dataset_name
type: object
properties:
dataset_name:
minLength: 1
type: string
last_retrieved_id:
type: string
format: uuid
steam_limit:
maximum: 2000
minimum: 1
type: integer
format: int32
dataset_version:
type: string
project_name:
type: string
filters:
type: string
DatasetUpdate:
required:
- name
type: object
properties:
name:
minLength: 1
type: string
description:
maxLength: 255
minLength: 0
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
visibility:
type: string
enum:
- private
- public
tags:
uniqueItems: true
type: array
items:
type: string
DatasetVersionDiff:
type: object
properties:
from_version:
type: string
to_version:
type: string
statistics:
$ref: "#/components/schemas/DatasetVersionDiffStats"
DatasetVersionDiffStats:
type: object
properties:
itemsAdded:
type: integer
format: int32
itemsModified:
type: integer
format: int32
itemsDeleted:
type: integer
format: int32
itemsUnchanged:
type: integer
format: int32
DatasetVersionTag:
required:
- tag
type: object
properties:
tag:
maxLength: 100
minLength: 0
type: string
DatasetVersionPage_Public:
type: object
properties:
content:
type: array
items:
$ref: "#/components/schemas/DatasetVersion_Public"
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
DatasetVersionRestore_Public:
required:
- version_ref
type: object
properties:
version_ref:
minLength: 1
type: string
description: Version hash or tag to restore from
DatasetVersionRetrieveRequest_Public:
required:
- version_name
type: object
properties:
version_name:
minLength: 1
pattern: ^v\d+$
type: string
description: "Version name in format 'vN' (e.g., 'v1', 'v373')"
example: v1
DatasetVersionUpdate_Public:
type: object
properties:
change_description:
type: string
description: Optional description of changes in this version
example: Updated baseline version
tags_to_add:
maxItems: 100
minItems: 0
type: array
description: Optional list of tags to add to this version
example:
- production
- reviewed
items:
maxLength: 100
minLength: 0
type: string
description: Optional list of tags to add to this version
example: "[\"production\",\"reviewed\"]"
Environment:
required:
- name
type: object
properties:
id:
type: string
format: uuid
name:
maxLength: 150
minLength: 0
pattern: "^[A-Za-z0-9_-]+$"
type: string
description:
maxLength: 500
minLength: 0
type: string
color:
maxLength: 20
minLength: 0
type: string
position:
type: integer
format: int32
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
Environment_Write:
required:
- name
type: object
properties:
id:
type: string
format: uuid
name:
maxLength: 150
minLength: 0
pattern: "^[A-Za-z0-9_-]+$"
type: string
description:
maxLength: 500
minLength: 0
type: string
color:
maxLength: 20
minLength: 0
type: string
position:
type: integer
format: int32
EnvironmentPage_Public:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/Environment_Public"
sortableBy:
type: array
items:
type: string
Environment_Public:
required:
- name
type: object
properties:
id:
type: string
format: uuid
name:
maxLength: 150
minLength: 0
pattern: "^[A-Za-z0-9_-]+$"
type: string
description:
maxLength: 500
minLength: 0
type: string
color:
maxLength: 20
minLength: 0
type: string
position:
type: integer
format: int32
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
EnvironmentUpdate:
type: object
properties:
name:
maxLength: 150
minLength: 0
pattern: "^[A-Za-z0-9_-]+$"
type: string
description:
maxLength: 500
minLength: 0
type: string
color:
maxLength: 20
minLength: 0
type: string
position:
type: integer
format: int32
ExperimentBatchUpdate:
required:
- ids
- update
type: object
properties:
ids:
maxItems: 1000
minItems: 1
uniqueItems: true
type: array
description: List of experiment IDs to update (max 1000)
items:
type: string
description: List of experiment IDs to update (max 1000)
format: uuid
update:
$ref: "#/components/schemas/ExperimentUpdate"
merge_tags:
type: boolean
description: "If true, merge tags with existing tags instead of replacing\
\ them. Default: false"
description: Request to batch update multiple experiments
ExperimentScore:
required:
- name
- value
type: object
properties:
name:
minLength: 1
type: string
value:
type: number
ExperimentUpdate:
type: object
properties:
name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
metadata:
$ref: "#/components/schemas/JsonNode"
tags:
maxItems: 50
minItems: 0
uniqueItems: true
type: array
description: Tags
items:
maxLength: 100
minLength: 0
type: string
description: Tags
tags_to_add:
maxItems: 50
minItems: 0
uniqueItems: true
type: array
description: Tags to add
items:
maxLength: 100
minLength: 0
type: string
description: Tags to add
tags_to_remove:
maxItems: 50
minItems: 0
uniqueItems: true
type: array
description: Tags to remove
items:
maxLength: 100
minLength: 0
type: string
description: Tags to remove
type:
type: string
enum:
- regular
- trial
- mini-batch
- mutation
status:
type: string
description: The status of the experiment
enum:
- running
- completed
- cancelled
experiment_scores:
type: array
items:
$ref: "#/components/schemas/ExperimentScore"
AssertionScoreAverage:
required:
- name
- value
type: object
properties:
name:
minLength: 1
type: string
value:
type: number
description: Per-assertion average pass rates for test suite experiments. Null
for regular experiments.
readOnly: true
Experiment:
required:
- dataset_name
type: object
properties:
id:
type: string
format: uuid
dataset_name:
minLength: 1
type: string
nullable: true
dataset_id:
type: string
format: uuid
readOnly: true
project_id:
type: string
description: Project ID. Takes precedence over project_name when both are
provided.
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: Project name. Creates project if it doesn't exist. Ignored
when project_id is provided.
name:
type: string
metadata:
$ref: "#/components/schemas/JsonListString"
tags:
maxItems: 50
minItems: 0
uniqueItems: true
type: array
items:
maxLength: 100
minLength: 0
type: string
type:
type: string
enum:
- regular
- trial
- mini-batch
- mutation
evaluation_method:
type: string
enum:
- dataset
- evaluation_suite
optimization_id:
type: string
format: uuid
feedback_scores:
type: array
readOnly: true
items:
$ref: "#/components/schemas/FeedbackScoreAverage"
comments:
type: array
readOnly: true
items:
$ref: "#/components/schemas/Comment"
trace_count:
type: integer
format: int64
readOnly: true
dataset_item_count:
type: integer
format: int64
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
duration:
$ref: "#/components/schemas/PercentageValues"
total_estimated_cost:
type: number
readOnly: true
total_estimated_cost_avg:
type: number
readOnly: true
usage:
type: object
additionalProperties:
type: number
format: double
readOnly: true
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_by:
type: string
readOnly: true
status:
type: string
enum:
- running
- completed
- cancelled
experiment_scores:
type: array
items:
$ref: "#/components/schemas/ExperimentScore"
prompt_version:
$ref: "#/components/schemas/PromptVersionLink"
prompt_versions:
type: array
items:
$ref: "#/components/schemas/PromptVersionLink"
dataset_version_id:
type: string
description: "ID of the dataset version this experiment is linked to. If\
\ not provided at creation, experiment will be automatically linked to\
\ the latest version."
format: uuid
dataset_version_summary:
$ref: "#/components/schemas/DatasetVersionSummary"
pass_rate:
type: number
description: Pass rate for test suite experiments (0.0-1.0). Null for regular
experiments.
readOnly: true
passed_count:
type: integer
description: Number of items that passed for test suite experiments. Null
for regular experiments.
format: int64
readOnly: true
total_count:
type: integer
description: Total number of items for test suite experiments. Null for
regular experiments.
format: int64
readOnly: true
assertion_scores:
type: array
description: Per-assertion average pass rates for test suite experiments.
Null for regular experiments.
readOnly: true
items:
$ref: "#/components/schemas/AssertionScoreAverage"
PercentageValues:
type: object
properties:
p50:
type: number
p90:
type: number
p99:
type: number
PromptVersionLink:
required:
- id
type: object
properties:
id:
type: string
format: uuid
commit:
type: string
readOnly: true
version_number:
type: string
description: sequential version number in the format v<N>; null for masks
readOnly: true
prompt_id:
type: string
format: uuid
readOnly: true
prompt_name:
type: string
readOnly: true
ExperimentScore_Write:
required:
- name
- value
type: object
properties:
name:
minLength: 1
type: string
value:
type: number
Experiment_Write:
required:
- dataset_name
type: object
properties:
id:
type: string
format: uuid
dataset_name:
minLength: 1
type: string
nullable: true
project_id:
type: string
description: Project ID. Takes precedence over project_name when both are
provided.
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: Project name. Creates project if it doesn't exist. Ignored
when project_id is provided.
name:
type: string
metadata:
$ref: "#/components/schemas/JsonListString_Write"
tags:
maxItems: 50
minItems: 0
uniqueItems: true
type: array
items:
maxLength: 100
minLength: 0
type: string
type:
type: string
enum:
- regular
- trial
- mini-batch
- mutation
evaluation_method:
type: string
enum:
- dataset
- evaluation_suite
optimization_id:
type: string
format: uuid
status:
type: string
enum:
- running
- completed
- cancelled
experiment_scores:
type: array
items:
$ref: "#/components/schemas/ExperimentScore_Write"
prompt_version:
$ref: "#/components/schemas/PromptVersionLink_Write"
prompt_versions:
type: array
items:
$ref: "#/components/schemas/PromptVersionLink_Write"
dataset_version_id:
type: string
description: "ID of the dataset version this experiment is linked to. If\
\ not provided at creation, experiment will be automatically linked to\
\ the latest version."
format: uuid
JsonListString_Write:
type: object
anyOf:
- type: object
- type: array
items:
type: object
- type: string
PromptVersionLink_Write:
required:
- id
type: object
properties:
id:
type: string
format: uuid
ExperimentItemsBatch:
required:
- experiment_items
type: object
properties:
experiment_items:
maxItems: 1000
minItems: 1
uniqueItems: true
type: array
items:
$ref: "#/components/schemas/ExperimentItem"
ExperimentItemsDelete:
required:
- ids
type: object
properties:
ids:
maxItems: 1000
minItems: 1
uniqueItems: true
type: array
items:
type: string
format: uuid
DeleteIdsHolder:
required:
- ids
type: object
properties:
ids:
maxItems: 1000
minItems: 1
uniqueItems: true
type: array
items:
type: string
format: uuid
ExperimentExecutionResponse:
type: object
properties:
experiments:
type: array
items:
$ref: "#/components/schemas/ExperimentInfo"
total_items:
type: integer
format: int32
ExperimentInfo:
type: object
properties:
experiment_id:
type: string
format: uuid
prompt_index:
type: integer
format: int32
ExperimentExecutionRequest:
required:
- dataset_id
- dataset_name
- prompts
type: object
properties:
dataset_name:
minLength: 1
type: string
dataset_version_id:
type: string
format: uuid
prompts:
minItems: 1
type: array
items:
$ref: "#/components/schemas/PromptVariant"
project_name:
type: string
dataset_id:
type: string
format: uuid
version_hash:
type: string
prompt_versions:
type: array
items:
$ref: "#/components/schemas/PromptVersionLink"
PromptVariant:
required:
- messages
- model
type: object
properties:
model:
minLength: 1
type: string
messages:
minItems: 1
type: array
items:
$ref: "#/components/schemas/Message"
configs:
type: object
additionalProperties:
$ref: "#/components/schemas/JsonNode"
prompt_versions:
type: array
items:
$ref: "#/components/schemas/PromptVersionLink"
Check:
type: object
properties:
name:
type: string
enum:
- TOPIC
- PII
result:
type: string
enum:
- passed
- failed
ErrorInfo:
required:
- exception_type
- traceback
type: object
properties:
exception_type:
minLength: 1
type: string
message:
type: string
traceback:
minLength: 1
type: string
ExperimentItemBulkRecord:
required:
- dataset_item_id
type: object
properties:
dataset_item_id:
type: string
format: uuid
evaluate_task_result:
$ref: "#/components/schemas/JsonListString"
trace:
$ref: "#/components/schemas/Trace"
spans:
maxItems: 100
minItems: 0
type: array
items:
$ref: "#/components/schemas/Span"
feedback_scores:
maxItems: 100
minItems: 0
type: array
items:
$ref: "#/components/schemas/FeedbackScore"
ExperimentItemBulkUpload:
required:
- dataset_name
- experiment_name
- items
type: object
properties:
experiment_name:
minLength: 1
type: string
dataset_name:
minLength: 1
type: string
experiment_id:
type: string
description: "Optional experiment ID. If provided, items will be added to\
\ the existing experiment and experimentName will be ignored. If not provided\
\ or experiment with that ID doesn't exist, a new experiment will be created\
\ with the given experimentName"
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "Project for traces auto-created from items that provide evaluate_task_result\
\ (i.e. without an explicit trace). If null, the default project is used;\
\ relying on this fallback is deprecated, please provide project_name\
\ explicitly."
items:
maxItems: 1000
minItems: 1
type: array
items:
$ref: "#/components/schemas/ExperimentItemBulkRecord"
ExperimentItemReference:
required:
- dataset_id
- dataset_item_id
- id
- name
type: object
properties:
id:
type: string
description: Experiment ID
format: uuid
name:
type: string
description: Experiment name
dataset_id:
type: string
description: Dataset ID
format: uuid
dataset_item_id:
type: string
description: Dataset Item ID
format: uuid
description: "Experiment reference with ID, name, dataset ID, and dataset item\
\ ID"
readOnly: true
GuardrailsValidation:
type: object
properties:
span_id:
type: string
format: uuid
checks:
type: array
items:
$ref: "#/components/schemas/Check"
readOnly: true
Span:
required:
- start_time
type: object
properties:
id:
type: string
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "If null, the default project is used"
project_id:
type: string
format: uuid
readOnly: true
trace_id:
type: string
format: uuid
parent_span_id:
type: string
format: uuid
name:
type: string
type:
type: string
enum:
- general
- tool
- llm
- guardrail
start_time:
type: string
format: date-time
end_time:
type: string
format: date-time
input:
$ref: "#/components/schemas/JsonListString"
output:
$ref: "#/components/schemas/JsonListString"
metadata:
$ref: "#/components/schemas/JsonListString"
model:
type: string
provider:
type: string
tags:
uniqueItems: true
type: array
items:
type: string
usage:
type: object
additionalProperties:
type: integer
format: int32
error_info:
$ref: "#/components/schemas/ErrorInfo"
created_at:
type: string
format: date-time
readOnly: true
last_updated_at:
type: string
format: date-time
created_by:
type: string
readOnly: true
last_updated_by:
type: string
readOnly: true
feedback_scores:
type: array
readOnly: true
items:
$ref: "#/components/schemas/FeedbackScore"
comments:
type: array
readOnly: true
items:
$ref: "#/components/schemas/Comment"
total_estimated_cost:
minimum: 0.0
exclusiveMinimum: false
type: number
total_estimated_cost_version:
type: string
duration:
type: number
description: Duration in milliseconds as a decimal number to support sub-millisecond
precision
format: double
readOnly: true
ttft:
type: number
description: Time to first token in milliseconds
format: double
source:
type: string
enum:
- sdk
- experiment
- playground
- optimization
- evaluator
environment:
maxLength: 150
minLength: 0
type: string
Trace:
required:
- start_time
type: object
properties:
id:
type: string
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "If null, the default project is used"
project_id:
type: string
format: uuid
readOnly: true
name:
type: string
start_time:
type: string
format: date-time
end_time:
type: string
format: date-time
input:
$ref: "#/components/schemas/JsonListString"
output:
$ref: "#/components/schemas/JsonListString"
metadata:
$ref: "#/components/schemas/JsonListString"
tags:
uniqueItems: true
type: array
items:
type: string
error_info:
$ref: "#/components/schemas/ErrorInfo"
usage:
type: object
additionalProperties:
type: integer
format: int64
readOnly: true
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
last_updated_at:
type: string
format: date-time
created_by:
type: string
readOnly: true
last_updated_by:
type: string
readOnly: true
feedback_scores:
type: array
readOnly: true
items:
$ref: "#/components/schemas/FeedbackScore"
span_feedback_scores:
type: array
description: "Aggregated feedback scores from all spans in this trace, averaged\
\ by score name"
readOnly: true
items:
$ref: "#/components/schemas/FeedbackScore"
comments:
type: array
readOnly: true
items:
$ref: "#/components/schemas/Comment"
guardrails_validations:
type: array
readOnly: true
items:
$ref: "#/components/schemas/GuardrailsValidation"
total_estimated_cost:
type: number
readOnly: true
span_count:
type: integer
format: int32
readOnly: true
duration:
type: number
description: Duration in milliseconds as a decimal number to support sub-millisecond
precision
format: double
readOnly: true
ttft:
type: number
description: Time to first token in milliseconds
format: double
thread_id:
type: string
visibility_mode:
type: string
readOnly: true
enum:
- default
- hidden
llm_span_count:
type: integer
format: int32
readOnly: true
has_tool_spans:
type: boolean
readOnly: true
providers:
type: array
description: "List of unique provider names from all spans in this trace,\
\ sorted alphabetically"
readOnly: true
items:
type: string
description: "List of unique provider names from all spans in this trace,\
\ sorted alphabetically"
readOnly: true
experiment:
$ref: "#/components/schemas/ExperimentItemReference"
source:
type: string
enum:
- sdk
- experiment
- playground
- optimization
- evaluator
environment:
maxLength: 150
minLength: 0
type: string
ErrorInfo_ExperimentItemBulkWriteView:
required:
- exception_type
- traceback
type: object
properties:
exception_type:
minLength: 1
type: string
message:
type: string
traceback:
minLength: 1
type: string
ExperimentItemBulkRecord_ExperimentItemBulkWriteView:
required:
- dataset_item_id
type: object
properties:
dataset_item_id:
type: string
format: uuid
evaluate_task_result:
$ref: "#/components/schemas/JsonListString_ExperimentItemBulkWriteView"
trace:
$ref: "#/components/schemas/Trace_ExperimentItemBulkWriteView"
spans:
maxItems: 100
minItems: 0
type: array
items:
$ref: "#/components/schemas/Span_ExperimentItemBulkWriteView"
feedback_scores:
maxItems: 100
minItems: 0
type: array
items:
$ref: "#/components/schemas/FeedbackScore_ExperimentItemBulkWriteView"
ExperimentItemBulkUpload_ExperimentItemBulkWriteView:
required:
- dataset_name
- experiment_name
- items
type: object
properties:
experiment_name:
minLength: 1
type: string
dataset_name:
minLength: 1
type: string
experiment_id:
type: string
description: "Optional experiment ID. If provided, items will be added to\
\ the existing experiment and experimentName will be ignored. If not provided\
\ or experiment with that ID doesn't exist, a new experiment will be created\
\ with the given experimentName"
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "Project for traces auto-created from items that provide evaluate_task_result\
\ (i.e. without an explicit trace). If null, the default project is used;\
\ relying on this fallback is deprecated, please provide project_name\
\ explicitly."
items:
maxItems: 1000
minItems: 1
type: array
items:
$ref: "#/components/schemas/ExperimentItemBulkRecord_ExperimentItemBulkWriteView"
FeedbackScore_ExperimentItemBulkWriteView:
required:
- name
- source
- value
type: object
properties:
name:
minLength: 1
type: string
category_name:
type: string
value:
maximum: 999999999.999999999
exclusiveMaximum: false
minimum: -999999999.999999999
exclusiveMinimum: false
type: number
reason:
type: string
source:
type: string
enum:
- ui
- sdk
- online_scoring
source_queue_id:
type: string
format: uuid
created_at:
type: string
format: date-time
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_by:
type: string
readOnly: true
value_by_author:
type: object
additionalProperties:
$ref: "#/components/schemas/ValueEntry_ExperimentItemBulkWriteView"
readOnly: true
JsonListString_ExperimentItemBulkWriteView:
type: object
anyOf:
- type: object
- type: array
items:
type: object
- type: string
Span_ExperimentItemBulkWriteView:
required:
- start_time
type: object
properties:
id:
type: string
format: uuid
parent_span_id:
type: string
format: uuid
name:
type: string
type:
type: string
enum:
- general
- tool
- llm
- guardrail
start_time:
type: string
format: date-time
end_time:
type: string
format: date-time
input:
$ref: "#/components/schemas/JsonListString_ExperimentItemBulkWriteView"
output:
$ref: "#/components/schemas/JsonListString_ExperimentItemBulkWriteView"
metadata:
$ref: "#/components/schemas/JsonListString_ExperimentItemBulkWriteView"
model:
type: string
provider:
type: string
tags:
uniqueItems: true
type: array
items:
type: string
usage:
type: object
additionalProperties:
type: integer
format: int32
error_info:
$ref: "#/components/schemas/ErrorInfo_ExperimentItemBulkWriteView"
last_updated_at:
type: string
format: date-time
total_estimated_cost:
minimum: 0.0
exclusiveMinimum: false
type: number
total_estimated_cost_version:
type: string
ttft:
type: number
description: Time to first token in milliseconds
format: double
source:
type: string
enum:
- sdk
- experiment
- playground
- optimization
- evaluator
environment:
maxLength: 150
minLength: 0
type: string
Trace_ExperimentItemBulkWriteView:
required:
- start_time
type: object
properties:
id:
type: string
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "If null, the default project is used"
name:
type: string
start_time:
type: string
format: date-time
end_time:
type: string
format: date-time
input:
$ref: "#/components/schemas/JsonListString_ExperimentItemBulkWriteView"
output:
$ref: "#/components/schemas/JsonListString_ExperimentItemBulkWriteView"
metadata:
$ref: "#/components/schemas/JsonListString_ExperimentItemBulkWriteView"
tags:
uniqueItems: true
type: array
items:
type: string
error_info:
$ref: "#/components/schemas/ErrorInfo_ExperimentItemBulkWriteView"
last_updated_at:
type: string
format: date-time
ttft:
type: number
description: Time to first token in milliseconds
format: double
thread_id:
type: string
source:
type: string
enum:
- sdk
- experiment
- playground
- optimization
- evaluator
environment:
maxLength: 150
minLength: 0
type: string
description: "Please provide either none, only one of evaluate_task_result or\
\ trace, but never both"
ValueEntry_ExperimentItemBulkWriteView:
type: object
properties:
value:
type: number
reason:
type: string
category_name:
type: string
source:
type: string
enum:
- ui
- sdk
- online_scoring
last_updated_at:
type: string
format: date-time
span_type:
type: string
span_id:
type: string
source_queue_id:
type: string
author:
type: string
readOnly: true
AssertionScoreAverage_Public:
required:
- name
- value
type: object
properties:
name:
minLength: 1
type: string
value:
type: number
description: Per-assertion average pass rates for test suite experiments. Null
for regular experiments.
readOnly: true
Comment_Public:
required:
- text
type: object
properties:
id:
type: string
format: uuid
readOnly: true
text:
minLength: 1
type: string
source_queue_id:
type: string
format: uuid
created_at:
type: string
format: date-time
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_by:
type: string
readOnly: true
readOnly: true
ExperimentPage_Public:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/Experiment_Public"
sortableBy:
type: array
items:
type: string
ExperimentScore_Public:
required:
- name
- value
type: object
properties:
name:
minLength: 1
type: string
value:
type: number
Experiment_Public:
required:
- dataset_name
type: object
properties:
id:
type: string
format: uuid
dataset_name:
minLength: 1
type: string
nullable: true
dataset_id:
type: string
format: uuid
readOnly: true
project_id:
type: string
description: Project ID. Takes precedence over project_name when both are
provided.
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: Project name. Creates project if it doesn't exist. Ignored
when project_id is provided.
name:
type: string
metadata:
$ref: "#/components/schemas/JsonListString_Public"
tags:
maxItems: 50
minItems: 0
uniqueItems: true
type: array
items:
maxLength: 100
minLength: 0
type: string
type:
type: string
enum:
- regular
- trial
- mini-batch
- mutation
evaluation_method:
type: string
enum:
- dataset
- evaluation_suite
optimization_id:
type: string
format: uuid
feedback_scores:
type: array
readOnly: true
items:
$ref: "#/components/schemas/FeedbackScoreAverage_Public"
comments:
type: array
readOnly: true
items:
$ref: "#/components/schemas/Comment_Public"
trace_count:
type: integer
format: int64
readOnly: true
dataset_item_count:
type: integer
format: int64
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
duration:
$ref: "#/components/schemas/PercentageValues_Public"
total_estimated_cost:
type: number
readOnly: true
total_estimated_cost_avg:
type: number
readOnly: true
usage:
type: object
additionalProperties:
type: number
format: double
readOnly: true
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_by:
type: string
readOnly: true
status:
type: string
enum:
- running
- completed
- cancelled
experiment_scores:
type: array
items:
$ref: "#/components/schemas/ExperimentScore_Public"
prompt_version:
$ref: "#/components/schemas/PromptVersionLink_Public"
prompt_versions:
type: array
items:
$ref: "#/components/schemas/PromptVersionLink_Public"
dataset_version_id:
type: string
description: "ID of the dataset version this experiment is linked to. If\
\ not provided at creation, experiment will be automatically linked to\
\ the latest version."
format: uuid
dataset_version_summary:
$ref: "#/components/schemas/DatasetVersionSummary_Public"
pass_rate:
type: number
description: Pass rate for test suite experiments (0.0-1.0). Null for regular
experiments.
readOnly: true
passed_count:
type: integer
description: Number of items that passed for test suite experiments. Null
for regular experiments.
format: int64
readOnly: true
total_count:
type: integer
description: Total number of items for test suite experiments. Null for
regular experiments.
format: int64
readOnly: true
assertion_scores:
type: array
description: Per-assertion average pass rates for test suite experiments.
Null for regular experiments.
readOnly: true
items:
$ref: "#/components/schemas/AssertionScoreAverage_Public"
JsonListString_Public:
type: object
anyOf:
- type: object
- type: array
items:
type: object
- type: string
PromptVersionLink_Public:
type: object
properties:
prompt_version_id:
type: string
format: uuid
commit:
type: string
prompt_id:
type: string
format: uuid
prompt_name:
type: string
FeedbackScoreNames_Public:
type: object
properties:
scores:
type: array
items:
$ref: "#/components/schemas/ScoreName_Public"
ScoreName_Public:
type: object
properties:
name:
type: string
type:
type: string
ExperimentGroupResponse:
type: object
properties:
content:
type: object
additionalProperties:
$ref: "#/components/schemas/GroupContent"
details:
$ref: "#/components/schemas/GroupDetails"
GroupContent:
type: object
properties:
label:
type: string
GroupDetail:
type: object
properties:
group_sorting:
type: array
items:
type: string
GroupDetails:
type: object
properties:
groups_details:
type: array
items:
$ref: "#/components/schemas/GroupDetail"
AggregationData:
type: object
properties:
experiment_count:
type: integer
format: int64
trace_count:
type: integer
format: int64
total_estimated_cost:
type: number
total_estimated_cost_avg:
type: number
duration:
$ref: "#/components/schemas/PercentageValues"
feedback_scores:
type: array
items:
$ref: "#/components/schemas/FeedbackScoreAverage"
experiment_scores:
type: array
items:
$ref: "#/components/schemas/FeedbackScoreAverage"
pass_rate_avg:
type: number
passed_count_sum:
type: integer
format: int64
total_count_sum:
type: integer
format: int64
ExperimentGroupAggregationsResponse:
type: object
properties:
content:
type: object
additionalProperties:
$ref: "#/components/schemas/GroupContentWithAggregations"
GroupContentWithAggregations:
type: object
properties:
label:
type: string
aggregations:
$ref: "#/components/schemas/AggregationData"
IdsHolder:
required:
- ids
type: object
properties:
ids:
maxItems: 1000
minItems: 1
uniqueItems: true
type: array
items:
type: string
format: uuid
ExperimentItemStreamRequest:
required:
- experiment_name
type: object
properties:
experiment_name:
minLength: 1
type: string
limit:
maximum: 2000
minimum: 1
type: integer
format: int32
last_retrieved_id:
type: string
format: uuid
truncate:
type: boolean
description: "Truncate image included in either input, output or metadata"
default: true
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
ChunkedOutputJsonNode_Public:
type: object
properties:
type:
type: object
properties:
typeName:
type: string
closed:
type: boolean
ExperimentStreamRequest_Public:
required:
- name
type: object
properties:
name:
minLength: 1
type: string
limit:
maximum: 2000
minimum: 1
type: integer
format: int32
last_retrieved_id:
type: string
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
BooleanFeedbackDefinition:
required:
- details
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/Feedback"
- type: object
properties:
details:
$ref: "#/components/schemas/BooleanFeedbackDetail"
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
BooleanFeedbackDetail:
required:
- falseLabel
- trueLabel
type: object
properties:
trueLabel:
minLength: 1
type: string
description: Label for true/1 value
example: Pass
falseLabel:
minLength: 1
type: string
description: Label for false/0 value
example: Fail
CategoricalFeedbackDefinition:
required:
- details
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/Feedback"
- type: object
properties:
details:
$ref: "#/components/schemas/CategoricalFeedbackDetail"
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
CategoricalFeedbackDetail:
required:
- categories
type: object
properties:
categories:
type: object
additionalProperties:
type: number
format: double
Feedback:
required:
- name
- type
type: object
properties:
id:
type: string
format: uuid
readOnly: true
name:
minLength: 1
type: string
description:
maxLength: 255
minLength: 0
type: string
description: Optional description for the feedback definition
example: This feedback definition is used to rate response quality
createdAt:
type: string
format: date-time
readOnly: true
createdBy:
type: string
readOnly: true
lastUpdatedAt:
type: string
format: date-time
readOnly: true
lastUpdatedBy:
type: string
readOnly: true
type:
type: string
enum:
- numerical
- categorical
- boolean
discriminator:
propertyName: type
mapping:
numerical: "#/components/schemas/NumericalFeedbackDefinition"
categorical: "#/components/schemas/CategoricalFeedbackDefinition"
boolean: "#/components/schemas/BooleanFeedbackDefinition"
NumericalFeedbackDefinition:
required:
- details
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/Feedback"
- type: object
properties:
details:
$ref: "#/components/schemas/NumericalFeedbackDetail"
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
NumericalFeedbackDetail:
required:
- max
- min
type: object
properties:
max:
type: number
min:
type: number
BooleanFeedbackDefinition_Create:
required:
- details
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/Feedback_Create"
- type: object
properties:
details:
$ref: "#/components/schemas/BooleanFeedbackDetail_Create"
BooleanFeedbackDetail_Create:
required:
- falseLabel
- trueLabel
type: object
properties:
trueLabel:
minLength: 1
type: string
description: Label for true/1 value
example: Pass
falseLabel:
minLength: 1
type: string
description: Label for false/0 value
example: Fail
CategoricalFeedbackDefinition_Create:
required:
- details
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/Feedback_Create"
- type: object
properties:
details:
$ref: "#/components/schemas/CategoricalFeedbackDetail_Create"
CategoricalFeedbackDetail_Create:
required:
- categories
type: object
properties:
categories:
type: object
additionalProperties:
type: number
format: double
Feedback_Create:
required:
- name
- type
type: object
properties:
id:
type: string
format: uuid
readOnly: true
name:
minLength: 1
type: string
description:
maxLength: 255
minLength: 0
type: string
description: Optional description for the feedback definition
example: This feedback definition is used to rate response quality
type:
type: string
enum:
- numerical
- categorical
- boolean
discriminator:
propertyName: type
mapping:
numerical: "#/components/schemas/NumericalFeedbackDefinition_Create"
categorical: "#/components/schemas/CategoricalFeedbackDefinition_Create"
boolean: "#/components/schemas/BooleanFeedbackDefinition_Create"
NumericalFeedbackDefinition_Create:
required:
- details
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/Feedback_Create"
- type: object
properties:
details:
$ref: "#/components/schemas/NumericalFeedbackDetail_Create"
NumericalFeedbackDetail_Create:
required:
- max
- min
type: object
properties:
max:
type: number
min:
type: number
BooleanFeedbackDefinition_Public:
required:
- details
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/Feedback_Public"
- type: object
properties:
details:
$ref: "#/components/schemas/BooleanFeedbackDetail_Public"
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
BooleanFeedbackDetail_Public:
required:
- falseLabel
- trueLabel
type: object
properties:
trueLabel:
minLength: 1
type: string
description: Label for true/1 value
example: Pass
falseLabel:
minLength: 1
type: string
description: Label for false/0 value
example: Fail
CategoricalFeedbackDefinition_Public:
required:
- details
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/Feedback_Public"
- type: object
properties:
details:
$ref: "#/components/schemas/CategoricalFeedbackDetail_Public"
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
CategoricalFeedbackDetail_Public:
required:
- categories
type: object
properties:
categories:
type: object
additionalProperties:
type: number
format: double
FeedbackDefinitionPage_Public:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/FeedbackObject_Public"
FeedbackObject_Public:
required:
- name
- type
type: object
properties:
id:
type: string
format: uuid
readOnly: true
name:
minLength: 1
type: string
description:
maxLength: 255
minLength: 0
type: string
description: Optional description for the feedback definition
example: This feedback definition is used to rate response quality
createdAt:
type: string
format: date-time
readOnly: true
createdBy:
type: string
readOnly: true
lastUpdatedAt:
type: string
format: date-time
readOnly: true
lastUpdatedBy:
type: string
readOnly: true
type:
type: string
enum:
- numerical
- categorical
- boolean
discriminator:
propertyName: type
mapping:
numerical: "#/components/schemas/NumericalFeedbackDefinition_Public"
categorical: "#/components/schemas/CategoricalFeedbackDefinition_Public"
boolean: "#/components/schemas/BooleanFeedbackDefinition_Public"
NumericalFeedbackDefinition_Public:
required:
- details
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/Feedback_Public"
- type: object
properties:
details:
$ref: "#/components/schemas/NumericalFeedbackDetail_Public"
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
NumericalFeedbackDetail_Public:
required:
- max
- min
type: object
properties:
max:
type: number
min:
type: number
Feedback_Public:
required:
- name
- type
type: object
properties:
id:
type: string
format: uuid
readOnly: true
name:
minLength: 1
type: string
description:
maxLength: 255
minLength: 0
type: string
description: Optional description for the feedback definition
example: This feedback definition is used to rate response quality
createdAt:
type: string
format: date-time
readOnly: true
createdBy:
type: string
readOnly: true
lastUpdatedAt:
type: string
format: date-time
readOnly: true
lastUpdatedBy:
type: string
readOnly: true
type:
type: string
enum:
- numerical
- categorical
- boolean
discriminator:
propertyName: type
mapping:
numerical: "#/components/schemas/NumericalFeedbackDefinition_Public"
categorical: "#/components/schemas/CategoricalFeedbackDefinition_Public"
boolean: "#/components/schemas/BooleanFeedbackDefinition_Public"
BooleanFeedbackDefinition_Update:
required:
- details
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/Feedback_Update"
- type: object
properties:
details:
$ref: "#/components/schemas/BooleanFeedbackDetail_Update"
BooleanFeedbackDetail_Update:
required:
- falseLabel
- trueLabel
type: object
properties:
trueLabel:
minLength: 1
type: string
description: Label for true/1 value
example: Pass
falseLabel:
minLength: 1
type: string
description: Label for false/0 value
example: Fail
CategoricalFeedbackDefinition_Update:
required:
- details
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/Feedback_Update"
- type: object
properties:
details:
$ref: "#/components/schemas/CategoricalFeedbackDetail_Update"
CategoricalFeedbackDetail_Update:
required:
- categories
type: object
properties:
categories:
type: object
additionalProperties:
type: number
format: double
Feedback_Update:
required:
- name
- type
type: object
properties:
id:
type: string
format: uuid
readOnly: true
name:
minLength: 1
type: string
description:
maxLength: 255
minLength: 0
type: string
description: Optional description for the feedback definition
example: This feedback definition is used to rate response quality
type:
type: string
enum:
- numerical
- categorical
- boolean
discriminator:
propertyName: type
mapping:
numerical: "#/components/schemas/NumericalFeedbackDefinition_Update"
categorical: "#/components/schemas/CategoricalFeedbackDefinition_Update"
boolean: "#/components/schemas/BooleanFeedbackDefinition_Update"
NumericalFeedbackDefinition_Update:
required:
- details
- name
- type
type: object
allOf:
- $ref: "#/components/schemas/Feedback_Update"
- type: object
properties:
details:
$ref: "#/components/schemas/NumericalFeedbackDetail_Update"
NumericalFeedbackDetail_Update:
required:
- max
- min
type: object
properties:
max:
type: number
min:
type: number
Guardrail:
required:
- config
- details
- entity_id
- name
- result
- secondary_id
type: object
properties:
id:
type: string
format: uuid
readOnly: true
entity_id:
type: string
format: uuid
secondary_id:
type: string
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "If null, the default project is used"
project_id:
type: string
format: uuid
name:
type: string
enum:
- TOPIC
- PII
result:
type: string
enum:
- passed
- failed
config:
$ref: "#/components/schemas/JsonNode"
details:
$ref: "#/components/schemas/JsonNode"
GuardrailBatch:
required:
- guardrails
type: object
properties:
guardrails:
maxItems: 1000
minItems: 1
type: array
items:
$ref: "#/components/schemas/Guardrail"
GuardrailBatch_Write:
required:
- guardrails
type: object
properties:
guardrails:
maxItems: 1000
minItems: 1
type: array
items:
$ref: "#/components/schemas/Guardrail_Write"
Guardrail_Write:
required:
- config
- details
- entity_id
- name
- result
- secondary_id
type: object
properties:
entity_id:
type: string
format: uuid
secondary_id:
type: string
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "If null, the default project is used"
project_id:
type: string
format: uuid
name:
type: string
enum:
- TOPIC
- PII
result:
type: string
enum:
- passed
- failed
config:
$ref: "#/components/schemas/JsonNode"
details:
$ref: "#/components/schemas/JsonNode"
ProviderApiKeyPage_Public:
type: object
properties:
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/ProviderApiKey_Public"
sortableBy:
type: array
items:
type: string
ProviderApiKey_Public:
required:
- provider
type: object
properties:
id:
type: string
format: uuid
readOnly: true
provider:
type: string
enum:
- openai
- anthropic
- gemini
- openrouter
- vertex-ai
- bedrock
- ollama
- custom-llm
- opik-free
api_key:
type: string
name:
maxLength: 150
minLength: 0
type: string
provider_name:
maxLength: 150
minLength: 0
type: string
description: "Provider name - required for custom LLM and Bedrock providers\
\ to uniquely identify them (e.g., 'ollama', 'vllm', 'Bedrock us-east-1').\
\ Must not be blank for custom and Bedrock providers. Should not be set\
\ for standard providers (OpenAI, Anthropic, etc.). This requirement is\
\ conditional and validation is enforced programmatically."
example: ollama
headers:
type: object
additionalProperties:
type: string
configuration:
type: object
additionalProperties:
type: string
base_url:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
read_only:
type: boolean
description: "If true, this provider is system-managed and cannot be edited\
\ or deleted"
readOnly: true
ProviderApiKey:
required:
- provider
type: object
properties:
id:
type: string
format: uuid
readOnly: true
provider:
type: string
enum:
- openai
- anthropic
- gemini
- openrouter
- vertex-ai
- bedrock
- ollama
- custom-llm
- opik-free
api_key:
type: string
name:
maxLength: 150
minLength: 0
type: string
provider_name:
maxLength: 150
minLength: 0
type: string
description: "Provider name - required for custom LLM and Bedrock providers\
\ to uniquely identify them (e.g., 'ollama', 'vllm', 'Bedrock us-east-1').\
\ Must not be blank for custom and Bedrock providers. Should not be set\
\ for standard providers (OpenAI, Anthropic, etc.). This requirement is\
\ conditional and validation is enforced programmatically."
example: ollama
headers:
type: object
additionalProperties:
type: string
configuration:
type: object
additionalProperties:
type: string
base_url:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
read_only:
type: boolean
description: "If true, this provider is system-managed and cannot be edited\
\ or deleted"
readOnly: true
ProviderApiKey_Write:
required:
- provider
type: object
properties:
provider:
type: string
enum:
- openai
- anthropic
- gemini
- openrouter
- vertex-ai
- bedrock
- ollama
- custom-llm
- opik-free
api_key:
type: string
name:
maxLength: 150
minLength: 0
type: string
provider_name:
maxLength: 150
minLength: 0
type: string
description: "Provider name - required for custom LLM and Bedrock providers\
\ to uniquely identify them (e.g., 'ollama', 'vllm', 'Bedrock us-east-1').\
\ Must not be blank for custom and Bedrock providers. Should not be set\
\ for standard providers (OpenAI, Anthropic, etc.). This requirement is\
\ conditional and validation is enforced programmatically."
example: ollama
headers:
type: object
additionalProperties:
type: string
configuration:
type: object
additionalProperties:
type: string
base_url:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
ProviderApiKeyUpdate:
type: object
properties:
api_key:
type: string
name:
maxLength: 150
minLength: 0
type: string
provider_name:
maxLength: 150
minLength: 0
type: string
description: "Provider name - can be set to migrate legacy custom LLM or\
\ Bedrock providers to the new multi-provider format. Once set, it cannot\
\ be changed. Should only be set for custom LLM and Bedrock providers."
example: ollama
headers:
type: object
additionalProperties:
type: string
configuration:
type: object
additionalProperties:
type: string
base_url:
type: string
LocalRunnerLogEntry:
required:
- stream
- text
type: object
properties:
stream:
minLength: 1
type: string
text:
minLength: 1
type: string
BridgeCommandSubmitResponse:
type: object
properties:
command_id:
type: string
format: uuid
BridgeCommandSubmitRequest:
required:
- args
- type
type: object
properties:
type:
type: string
enum:
- ReadFile
- WriteFile
- EditFile
- ListFiles
- SearchFiles
- Exec
args:
$ref: "#/components/schemas/JsonNode"
timeout_seconds:
type: integer
format: int32
CreateLocalRunnerJobRequest:
required:
- agent_name
- project_id
type: object
properties:
agent_name:
minLength: 1
type: string
inputs:
$ref: "#/components/schemas/JsonNode"
project_id:
type: string
format: uuid
mask_id:
type: string
description: Deprecated. Use prompt_masks to pass one or more mask overlays
keyed by prompt id.
format: uuid
deprecated: true
prompt_masks:
type: object
additionalProperties:
type: string
description: "Mask overlays to apply during agent execution, keyed by\
\ prompt id."
format: uuid
description: "Mask overlays to apply during agent execution, keyed by prompt\
\ id."
blueprint_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
metadata:
$ref: "#/components/schemas/LocalRunnerJobMetadata"
LocalRunnerJobMetadata:
type: object
properties:
dataset_id:
type: string
format: uuid
dataset_version_id:
type: string
format: uuid
dataset_item_version_id:
type: string
format: uuid
dataset_item_id:
type: string
format: uuid
BridgeCommand:
type: object
properties:
command_id:
type: string
format: uuid
runner_id:
type: string
format: uuid
type:
type: string
enum:
- ReadFile
- WriteFile
- EditFile
- ListFiles
- SearchFiles
- Exec
status:
type: string
enum:
- pending
- picked_up
- completed
- failed
- timed_out
args:
$ref: "#/components/schemas/JsonNode"
result:
$ref: "#/components/schemas/JsonNode"
error:
$ref: "#/components/schemas/JsonNode"
timeout_seconds:
type: integer
format: int32
submitted_at:
type: string
format: date-time
picked_up_at:
type: string
format: date-time
completed_at:
type: string
format: date-time
duration_ms:
type: integer
format: int64
LocalRunnerJob:
type: object
properties:
id:
type: string
format: uuid
runner_id:
type: string
format: uuid
agent_name:
type: string
status:
type: string
enum:
- pending
- running
- completed
- failed
- cancelled
inputs:
$ref: "#/components/schemas/JsonNode"
result:
$ref: "#/components/schemas/JsonNode"
error:
type: string
project_id:
type: string
format: uuid
trace_id:
type: string
format: uuid
mask_id:
type: string
description: Deprecated. Use prompt_masks to read one or more mask overlays
keyed by prompt id.
format: uuid
deprecated: true
prompt_masks:
type: object
additionalProperties:
type: string
description: "Mask overlays to apply during agent execution, keyed by\
\ prompt id."
format: uuid
description: "Mask overlays to apply during agent execution, keyed by prompt\
\ id."
blueprint_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
metadata:
$ref: "#/components/schemas/LocalRunnerJobMetadata"
timeout:
type: integer
format: int32
created_at:
type: string
format: date-time
started_at:
type: string
format: date-time
completed_at:
type: string
format: date-time
Agent:
type: object
properties:
name:
type: string
description:
type: string
language:
type: string
executable:
type: string
source_file:
type: string
params:
type: array
items:
$ref: "#/components/schemas/Param"
timeout:
type: integer
format: int32
LocalRunner:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
project_id:
type: string
format: uuid
status:
type: string
enum:
- pairing
- connected
- disconnected
connected_at:
type: string
format: date-time
agents:
type: array
items:
$ref: "#/components/schemas/Agent"
capabilities:
type: array
items:
type: string
checklist:
$ref: "#/components/schemas/JsonNode"
type:
type: string
enum:
- connect
- endpoint
Param:
required:
- name
- type
type: object
properties:
name:
minLength: 1
type: string
type:
minLength: 1
type: string
presence:
type: string
enum:
- required
- optional
LocalRunnerHeartbeatResponse:
type: object
properties:
cancelled_job_ids:
type: array
items:
type: string
format: uuid
LocalRunnerHeartbeatRequest:
type: object
properties:
capabilities:
type: array
items:
type: string
LocalRunnerJobPage:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/LocalRunnerJob"
LocalRunnerPage:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/LocalRunner"
BridgeCommandBatchResponse:
type: object
properties:
commands:
type: array
items:
$ref: "#/components/schemas/BridgeCommandItem"
BridgeCommandItem:
type: object
properties:
command_id:
type: string
format: uuid
type:
type: string
enum:
- ReadFile
- WriteFile
- EditFile
- ListFiles
- SearchFiles
- Exec
args:
$ref: "#/components/schemas/JsonNode"
timeout_seconds:
type: integer
format: int32
submitted_at:
type: string
format: date-time
BridgeCommandNextRequest:
type: object
properties:
max_commands:
type: integer
format: int32
BridgeCommandResultRequest:
required:
- status
type: object
properties:
status:
type: string
enum:
- pending
- picked_up
- completed
- failed
- timed_out
result:
$ref: "#/components/schemas/JsonNode"
error:
$ref: "#/components/schemas/JsonNode"
duration_ms:
type: integer
format: int64
LocalRunnerJobResultRequest:
required:
- status
type: object
properties:
status:
type: string
enum:
- pending
- running
- completed
- failed
- cancelled
result:
$ref: "#/components/schemas/JsonNode"
error:
type: string
trace_id:
type: string
format: uuid
ManualEvaluationResponse:
type: object
properties:
entities_queued:
type: integer
description: Number of entities queued for evaluation
format: int32
example: 5
rules_applied:
type: integer
description: Number of rules that will be applied
format: int32
example: 2
ManualEvaluationRequest:
required:
- entity_ids
- entity_type
- project_id
- rule_ids
type: object
properties:
project_id:
type: string
description: Project ID
format: uuid
example: 550e8400-e29b-41d4-a716-446655440000
entity_ids:
minItems: 1
type: array
description: List of entity IDs (trace IDs or thread IDs) to evaluate
example:
- 550e8400-e29b-41d4-a716-446655440000
- 550e8400-e29b-41d4-a716-446655440001
items:
type: string
description: List of entity IDs (trace IDs or thread IDs) to evaluate
format: uuid
rule_ids:
minItems: 1
type: array
description: List of automation rule IDs to apply
example:
- 660e8400-e29b-41d4-a716-446655440000
items:
type: string
description: List of automation rule IDs to apply
format: uuid
entity_type:
type: string
description: Type of entity to evaluate (trace or thread)
example: trace
enum:
- trace
- thread
- span
OllamaModel:
required:
- name
type: object
properties:
name:
minLength: 1
type: string
description: Model name
example: llama2
size:
type: integer
description: Model size in bytes
format: int64
digest:
type: string
description: Model digest/hash
modified_at:
type: string
description: Model modification date
format: date-time
description: Ollama model information
OllamaInstanceBaseUrlRequest:
required:
- base_url
type: object
properties:
base_url:
minLength: 1
type: string
description: "Base URL of the Ollama instance. May include /v1 suffix which\
\ will be automatically removed for connection testing. For inference,\
\ use the URL with /v1 suffix for OpenAI-compatible endpoints."
example: http://localhost:11434/v1
api_key:
type: string
description: "Optional API key for authenticated Ollama instances. If provided,\
\ will be sent as Bearer token in Authorization header."
description: Request with Ollama instance base URL for connection testing or
model discovery.
OllamaConnectionTestResponse:
type: object
properties:
connected:
type: boolean
description: Whether the connection was successful
version:
type: string
description: Server version (returned even if connection failed or version
is incompatible)
error_message:
type: string
description: Error message if connection failed
description: Response from Ollama connection test.
ExportTraceServiceRequest:
$ref: "#/components/schemas/JsonNode"
Optimization:
required:
- dataset_name
- objective_name
- status
type: object
properties:
id:
type: string
format: uuid
name:
type: string
dataset_name:
minLength: 1
type: string
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: Project name. Creates project if it doesn't exist. Ignored
when project_id is provided.
project_id:
type: string
description: Project ID. Takes precedence over project_name when both are
provided.
format: uuid
objective_name:
minLength: 1
type: string
status:
type: string
enum:
- running
- completed
- cancelled
- initialized
- error
metadata:
$ref: "#/components/schemas/JsonListString"
studio_config:
$ref: "#/components/schemas/OptimizationStudioConfig"
dataset_id:
type: string
format: uuid
readOnly: true
num_trials:
type: integer
format: int64
readOnly: true
feedback_scores:
type: array
readOnly: true
items:
$ref: "#/components/schemas/FeedbackScoreAverage"
experiment_scores:
type: array
readOnly: true
items:
$ref: "#/components/schemas/FeedbackScoreAverage"
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
last_updated_by:
type: string
readOnly: true
baseline_objective_score:
type: number
readOnly: true
best_objective_score:
type: number
readOnly: true
baseline_duration:
type: number
readOnly: true
best_duration:
type: number
readOnly: true
baseline_cost:
type: number
readOnly: true
best_cost:
type: number
readOnly: true
total_optimization_cost:
type: number
readOnly: true
OptimizationStudioConfig:
required:
- dataset_name
- evaluation
- llm_model
- optimizer
- prompt
type: object
properties:
dataset_name:
minLength: 1
type: string
prompt:
$ref: "#/components/schemas/StudioPrompt"
llm_model:
$ref: "#/components/schemas/StudioLlmModel"
evaluation:
$ref: "#/components/schemas/StudioEvaluation"
optimizer:
$ref: "#/components/schemas/StudioOptimizer"
StudioEvaluation:
required:
- metrics
type: object
properties:
metrics:
minItems: 1
type: array
items:
$ref: "#/components/schemas/StudioMetric"
StudioLlmModel:
required:
- model
type: object
properties:
model:
minLength: 1
type: string
parameters:
$ref: "#/components/schemas/JsonNode"
StudioMessage:
required:
- content
- role
type: object
properties:
role:
minLength: 1
type: string
content:
minLength: 1
type: string
StudioMetric:
required:
- type
type: object
properties:
type:
minLength: 1
type: string
parameters:
$ref: "#/components/schemas/JsonNode"
StudioOptimizer:
required:
- type
type: object
properties:
type:
minLength: 1
type: string
parameters:
$ref: "#/components/schemas/JsonNode"
StudioPrompt:
required:
- messages
type: object
properties:
messages:
minItems: 1
type: array
items:
$ref: "#/components/schemas/StudioMessage"
OptimizationStudioConfig_Write:
required:
- dataset_name
- evaluation
- llm_model
- optimizer
- prompt
type: object
properties:
dataset_name:
minLength: 1
type: string
prompt:
$ref: "#/components/schemas/StudioPrompt_Write"
llm_model:
$ref: "#/components/schemas/StudioLlmModel_Write"
evaluation:
$ref: "#/components/schemas/StudioEvaluation_Write"
optimizer:
$ref: "#/components/schemas/StudioOptimizer_Write"
Optimization_Write:
required:
- dataset_name
- objective_name
- status
type: object
properties:
id:
type: string
format: uuid
name:
type: string
dataset_name:
minLength: 1
type: string
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: Project name. Creates project if it doesn't exist. Ignored
when project_id is provided.
project_id:
type: string
description: Project ID. Takes precedence over project_name when both are
provided.
format: uuid
objective_name:
minLength: 1
type: string
status:
type: string
enum:
- running
- completed
- cancelled
- initialized
- error
metadata:
$ref: "#/components/schemas/JsonListString_Write"
studio_config:
$ref: "#/components/schemas/OptimizationStudioConfig_Write"
last_updated_at:
type: string
format: date-time
StudioEvaluation_Write:
required:
- metrics
type: object
properties:
metrics:
minItems: 1
type: array
items:
$ref: "#/components/schemas/StudioMetric_Write"
StudioLlmModel_Write:
required:
- model
type: object
properties:
model:
minLength: 1
type: string
parameters:
$ref: "#/components/schemas/JsonNode_Write"
StudioMessage_Write:
required:
- content
- role
type: object
properties:
role:
minLength: 1
type: string
content:
minLength: 1
type: string
StudioMetric_Write:
required:
- type
type: object
properties:
type:
minLength: 1
type: string
parameters:
$ref: "#/components/schemas/JsonNode_Write"
StudioOptimizer_Write:
required:
- type
type: object
properties:
type:
minLength: 1
type: string
parameters:
$ref: "#/components/schemas/JsonNode_Write"
StudioPrompt_Write:
required:
- messages
type: object
properties:
messages:
minItems: 1
type: array
items:
$ref: "#/components/schemas/StudioMessage_Write"
OptimizationPage_Public:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/Optimization_Public"
sortableBy:
type: array
items:
type: string
OptimizationStudioConfig_Public:
required:
- dataset_name
- evaluation
- llm_model
- optimizer
- prompt
type: object
properties:
dataset_name:
minLength: 1
type: string
prompt:
$ref: "#/components/schemas/StudioPrompt_Public"
llm_model:
$ref: "#/components/schemas/StudioLlmModel_Public"
evaluation:
$ref: "#/components/schemas/StudioEvaluation_Public"
optimizer:
$ref: "#/components/schemas/StudioOptimizer_Public"
Optimization_Public:
required:
- dataset_name
- objective_name
- status
type: object
properties:
id:
type: string
format: uuid
name:
type: string
dataset_name:
minLength: 1
type: string
project_id:
type: string
description: Project ID. Takes precedence over project_name when both are
provided.
format: uuid
objective_name:
minLength: 1
type: string
status:
type: string
enum:
- running
- completed
- cancelled
- initialized
- error
metadata:
$ref: "#/components/schemas/JsonListString_Public"
studio_config:
$ref: "#/components/schemas/OptimizationStudioConfig_Public"
dataset_id:
type: string
format: uuid
readOnly: true
num_trials:
type: integer
format: int64
readOnly: true
feedback_scores:
type: array
readOnly: true
items:
$ref: "#/components/schemas/FeedbackScoreAverage_Public"
experiment_scores:
type: array
readOnly: true
items:
$ref: "#/components/schemas/FeedbackScoreAverage_Public"
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
last_updated_by:
type: string
readOnly: true
baseline_objective_score:
type: number
readOnly: true
best_objective_score:
type: number
readOnly: true
baseline_duration:
type: number
readOnly: true
best_duration:
type: number
readOnly: true
baseline_cost:
type: number
readOnly: true
best_cost:
type: number
readOnly: true
total_optimization_cost:
type: number
readOnly: true
StudioEvaluation_Public:
required:
- metrics
type: object
properties:
metrics:
minItems: 1
type: array
items:
$ref: "#/components/schemas/StudioMetric_Public"
StudioLlmModel_Public:
required:
- model
type: object
properties:
model:
minLength: 1
type: string
parameters:
$ref: "#/components/schemas/JsonNode_Public"
StudioMessage_Public:
required:
- content
- role
type: object
properties:
role:
minLength: 1
type: string
content:
minLength: 1
type: string
StudioMetric_Public:
required:
- type
type: object
properties:
type:
minLength: 1
type: string
parameters:
$ref: "#/components/schemas/JsonNode_Public"
StudioOptimizer_Public:
required:
- type
type: object
properties:
type:
minLength: 1
type: string
parameters:
$ref: "#/components/schemas/JsonNode_Public"
StudioPrompt_Public:
required:
- messages
type: object
properties:
messages:
minItems: 1
type: array
items:
$ref: "#/components/schemas/StudioMessage_Public"
OptimizationStudioLog:
type: object
properties:
url:
type: string
last_modified:
type: string
format: date-time
expires_at:
type: string
format: date-time
OptimizationUpdate:
type: object
properties:
name:
type: string
status:
type: string
enum:
- running
- completed
- cancelled
- initialized
- error
ActivateRequest:
required:
- hmac
- runner_name
type: object
properties:
runner_name:
maxLength: 128
minLength: 0
type: string
hmac:
maxLength: 44
minLength: 43
type: string
CreateSessionResponse:
type: object
properties:
session_id:
type: string
format: uuid
runner_id:
type: string
format: uuid
CreateSessionRequest:
required:
- activation_key
- project_id
- type
type: object
properties:
project_id:
type: string
format: uuid
activation_key:
maxLength: 44
minLength: 43
type: string
ttl_seconds:
maximum: 600
minimum: 60
type: integer
format: int32
type:
type: string
enum:
- connect
- endpoint
PromptPage_Public:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/Prompt_Public"
sortableBy:
type: array
items:
type: string
Prompt_Public:
required:
- name
type: object
properties:
id:
type: string
format: uuid
name:
minLength: 1
type: string
project_id:
type: string
description: Project ID. Takes precedence over project_name when both are
provided.
format: uuid
description:
maxLength: 255
minLength: 0
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
template_structure:
type: string
description: "Template structure type: 'text' or 'chat'. Immutable after\
\ creation."
default: text
enum:
- text
- chat
tags:
uniqueItems: true
type: array
items:
type: string
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
version_count:
type: integer
format: int64
readOnly: true
ErrorCountWithDeviation:
type: object
properties:
count:
type: integer
format: int64
deviation:
type: integer
format: int64
deviation_percentage:
type: integer
format: int64
Project:
required:
- name
type: object
properties:
id:
type: string
format: uuid
readOnly: true
name:
minLength: 1
type: string
visibility:
type: string
enum:
- private
- public
description:
maxLength: 255
minLength: 0
type: string
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
last_updated_trace_at:
type: string
format: date-time
readOnly: true
feedback_scores:
type: array
readOnly: true
items:
$ref: "#/components/schemas/FeedbackScoreAverage"
duration:
$ref: "#/components/schemas/PercentageValues"
total_estimated_cost:
type: number
format: double
readOnly: true
total_estimated_cost_sum:
type: number
format: double
readOnly: true
usage:
type: object
additionalProperties:
type: number
format: double
readOnly: true
readOnly: true
trace_count:
type: integer
format: int64
readOnly: true
thread_count:
type: integer
format: int64
readOnly: true
guardrails_failed_count:
type: integer
format: int64
readOnly: true
error_count:
$ref: "#/components/schemas/ErrorCountWithDeviation"
Project_Write:
required:
- name
type: object
properties:
name:
minLength: 1
type: string
visibility:
type: string
enum:
- private
- public
description:
maxLength: 255
minLength: 0
type: string
ProjectPage_Public:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/Project_Public"
sortableBy:
type: array
items:
type: string
Project_Public:
required:
- name
type: object
properties:
id:
type: string
format: uuid
readOnly: true
name:
minLength: 1
type: string
visibility:
type: string
enum:
- private
- public
description:
maxLength: 255
minLength: 0
type: string
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
last_updated_trace_at:
type: string
format: date-time
readOnly: true
FeedbackScoreNames:
type: object
properties:
scores:
type: array
items:
$ref: "#/components/schemas/ScoreName"
ScoreName:
type: object
properties:
name:
type: string
type:
type: string
TokenUsageNames:
type: object
properties:
names:
type: array
items:
type: string
KpiCardResponse:
type: object
properties:
stats:
type: array
items:
$ref: "#/components/schemas/KpiMetric"
KpiMetric:
type: object
properties:
type:
type: string
enum:
- count
- errors
- avg_duration
- total_cost
current_value:
type: number
description: "Metric value for the current period. Unit depends on `type`:\
\ `count` is an integer count; `errors` is a percentage in [0, 100]; `avg_duration`\
\ is milliseconds; `total_cost` is in USD."
format: double
previous_value:
type: number
description: Metric value for the immediately preceding period of equal
length. Same unit as `current_value`.
format: double
KpiCardRequest:
required:
- entity_type
- interval_start
type: object
properties:
entity_type:
type: string
enum:
- traces
- spans
- threads
filters:
type: string
interval_start:
type: string
format: date-time
interval_end:
type: string
format: date-time
DataPointNumber_Public:
required:
- time
type: object
properties:
time:
type: string
format: date-time
value:
type: number
ProjectMetricResponse_Public:
type: object
properties:
project_id:
type: string
format: uuid
metric_type:
type: string
enum:
- FEEDBACK_SCORES
- TRACE_COUNT
- TOKEN_USAGE
- DURATION
- COST
- GUARDRAILS_FAILED_COUNT
- THREAD_COUNT
- THREAD_DURATION
- THREAD_FEEDBACK_SCORES
- SPAN_FEEDBACK_SCORES
- SPAN_COUNT
- SPAN_DURATION
- SPAN_TOKEN_USAGE
- TRACE_AVERAGE_DURATION
- TRACE_ERROR_RATE
- SPAN_AVERAGE_DURATION
- SPAN_COST
- SPAN_ERROR_RATE
- THREAD_AVERAGE_DURATION
- THREAD_COST
interval:
type: string
enum:
- HOURLY
- DAILY
- WEEKLY
- TOTAL
results:
type: array
items:
$ref: "#/components/schemas/ResultsNumber_Public"
ResultsNumber_Public:
type: object
properties:
name:
type: string
data:
type: array
items:
$ref: "#/components/schemas/DataPointNumber_Public"
BreakdownConfig_Public:
type: object
properties:
field:
type: string
enum:
- none
- tags
- metadata
- name
- error_info
- error_type
- model
- provider
- type
metadata_key:
type: string
sub_metric:
type: string
ProjectMetricRequest_Public:
type: object
properties:
metric_type:
type: string
enum:
- FEEDBACK_SCORES
- TRACE_COUNT
- TOKEN_USAGE
- DURATION
- COST
- GUARDRAILS_FAILED_COUNT
- THREAD_COUNT
- THREAD_DURATION
- THREAD_FEEDBACK_SCORES
- SPAN_FEEDBACK_SCORES
- SPAN_COUNT
- SPAN_DURATION
- SPAN_TOKEN_USAGE
- TRACE_AVERAGE_DURATION
- TRACE_ERROR_RATE
- SPAN_AVERAGE_DURATION
- SPAN_COST
- SPAN_ERROR_RATE
- THREAD_AVERAGE_DURATION
- THREAD_COST
interval:
type: string
enum:
- HOURLY
- DAILY
- WEEKLY
- TOTAL
interval_start:
type: string
format: date-time
interval_end:
type: string
format: date-time
span_filters:
type: array
items:
$ref: "#/components/schemas/SpanFilter_Public"
trace_filters:
type: array
items:
$ref: "#/components/schemas/TraceFilter_Public"
thread_filters:
type: array
items:
$ref: "#/components/schemas/TraceThreadFilter_Public"
breakdown:
$ref: "#/components/schemas/BreakdownConfig_Public"
ProjectStatsSummary:
type: object
properties:
content:
type: array
items:
$ref: "#/components/schemas/ProjectStatsSummaryItem"
ProjectStatsSummaryItem:
type: object
properties:
project_id:
type: string
format: uuid
feedback_scores:
type: array
items:
$ref: "#/components/schemas/FeedbackScoreAverage"
duration:
$ref: "#/components/schemas/PercentageValues"
total_estimated_cost:
type: number
format: double
total_estimated_cost_sum:
type: number
format: double
usage:
type: object
additionalProperties:
type: number
format: double
trace_count:
type: integer
format: int64
thread_count:
type: integer
format: int64
guardrails_failed_count:
type: integer
format: int64
error_count:
$ref: "#/components/schemas/ErrorCountWithDeviation"
ErrorCountWithDeviation_Detailed:
type: object
properties:
count:
type: integer
format: int64
deviation:
type: integer
format: int64
deviation_percentage:
type: integer
format: int64
readOnly: true
FeedbackScoreAverage_Detailed:
required:
- name
- value
type: object
properties:
name:
minLength: 1
type: string
value:
type: number
readOnly: true
PercentageValues_Detailed:
type: object
properties:
p50:
type: number
p90:
type: number
p99:
type: number
readOnly: true
Project_Detailed:
required:
- name
type: object
properties:
id:
type: string
format: uuid
readOnly: true
name:
minLength: 1
type: string
visibility:
type: string
enum:
- private
- public
description:
maxLength: 255
minLength: 0
type: string
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
last_updated_trace_at:
type: string
format: date-time
readOnly: true
feedback_scores:
type: array
readOnly: true
items:
$ref: "#/components/schemas/FeedbackScoreAverage_Detailed"
duration:
$ref: "#/components/schemas/PercentageValues_Detailed"
total_estimated_cost:
type: number
format: double
readOnly: true
total_estimated_cost_sum:
type: number
format: double
readOnly: true
usage:
type: object
additionalProperties:
type: number
format: double
readOnly: true
readOnly: true
trace_count:
type: integer
format: int64
readOnly: true
thread_count:
type: integer
format: int64
readOnly: true
guardrails_failed_count:
type: integer
format: int64
readOnly: true
error_count:
$ref: "#/components/schemas/ErrorCountWithDeviation_Detailed"
ErrorMessage_Detailed:
type: object
properties:
errors:
type: array
items:
type: string
ProjectRetrieve_Detailed:
required:
- name
type: object
properties:
name:
minLength: 1
type: string
includeStats:
type: boolean
ProjectUpdate:
type: object
properties:
name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description:
maxLength: 255
minLength: 0
type: string
visibility:
type: string
enum:
- private
- public
Prompt:
required:
- name
type: object
properties:
id:
type: string
format: uuid
name:
minLength: 1
type: string
project_id:
type: string
description: Project ID. Takes precedence over project_name when both are
provided.
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "For project scope, specify either project_id or project_name.\
\ If project_name is provided and the project does not exist, it will\
\ be created. Ignored when project_id is provided. If neither is provided,\
\ the prompt is created at workspace level."
description:
maxLength: 255
minLength: 0
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
template:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
metadata:
$ref: "#/components/schemas/JsonNode"
change_description:
type: string
type:
type: string
enum:
- mustache
- jinja2
- python
template_structure:
type: string
description: "Template structure type: 'text' or 'chat'. Immutable after\
\ creation."
default: text
enum:
- text
- chat
tags:
uniqueItems: true
type: array
items:
type: string
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
version_count:
type: integer
format: int64
readOnly: true
latest_version:
$ref: "#/components/schemas/PromptVersion"
requested_version:
$ref: "#/components/schemas/PromptVersion"
PromptVersion:
required:
- template
type: object
properties:
id:
type: string
description: "version unique identifier, generated if absent"
format: uuid
prompt_id:
type: string
format: uuid
readOnly: true
commit:
pattern: "^[a-zA-Z0-9]{8}$"
type: string
description: "version short unique identifier, generated if absent. it must\
\ be 8 characters long"
version_number:
type: string
description: sequential version number in the format v<N>; null for masks
readOnly: true
template:
minLength: 1
type: string
metadata:
$ref: "#/components/schemas/JsonNode"
type:
type: string
enum:
- mustache
- jinja2
- python
version_type:
type: string
description: version type discriminator; defaults to prompt_version
enum:
- prompt_version
- mask
environment:
maxLength: 150
minLength: 0
pattern: "^[A-Za-z0-9_-]+$"
type: string
description: "Deprecated: use 'environments' instead"
deprecated: true
environments:
maxItems: 100
minItems: 0
uniqueItems: true
type: array
items:
maxLength: 150
minLength: 0
pattern: "^[A-Za-z0-9_-]+$"
type: string
change_description:
type: string
tags:
uniqueItems: true
type: array
items:
minLength: 1
type: string
variables:
uniqueItems: true
type: array
readOnly: true
items:
type: string
readOnly: true
template_structure:
type: string
readOnly: true
enum:
- text
- chat
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
readOnly: true
Prompt_Write:
required:
- name
type: object
properties:
id:
type: string
format: uuid
name:
minLength: 1
type: string
project_id:
type: string
description: Project ID. Takes precedence over project_name when both are
provided.
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "For project scope, specify either project_id or project_name.\
\ If project_name is provided and the project does not exist, it will\
\ be created. Ignored when project_id is provided. If neither is provided,\
\ the prompt is created at workspace level."
description:
maxLength: 255
minLength: 0
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
template:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
metadata:
$ref: "#/components/schemas/JsonNode_Write"
change_description:
type: string
type:
type: string
enum:
- mustache
- jinja2
- python
template_structure:
type: string
description: "Template structure type: 'text' or 'chat'. Immutable after\
\ creation."
default: text
enum:
- text
- chat
tags:
uniqueItems: true
type: array
items:
type: string
JsonNode_Detail:
type: object
PromptVersion_Detail:
required:
- template
type: object
properties:
id:
type: string
description: "version unique identifier, generated if absent"
format: uuid
prompt_id:
type: string
format: uuid
readOnly: true
commit:
pattern: "^[a-zA-Z0-9]{8}$"
type: string
description: "version short unique identifier, generated if absent. it must\
\ be 8 characters long"
version_number:
type: string
description: sequential version number in the format v<N>; null for masks
readOnly: true
template:
minLength: 1
type: string
metadata:
$ref: "#/components/schemas/JsonNode_Detail"
type:
type: string
enum:
- mustache
- jinja2
- python
version_type:
type: string
description: version type discriminator; defaults to prompt_version
enum:
- prompt_version
- mask
environment:
maxLength: 150
minLength: 0
pattern: "^[A-Za-z0-9_-]+$"
type: string
description: "Deprecated: use 'environments' instead"
deprecated: true
environments:
maxItems: 100
minItems: 0
uniqueItems: true
type: array
items:
maxLength: 150
minLength: 0
pattern: "^[A-Za-z0-9_-]+$"
type: string
change_description:
type: string
tags:
uniqueItems: true
type: array
items:
minLength: 1
type: string
variables:
uniqueItems: true
type: array
readOnly: true
items:
type: string
readOnly: true
template_structure:
type: string
readOnly: true
enum:
- text
- chat
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
ErrorMessage_Detail:
type: object
properties:
errors:
type: array
items:
type: string
CreatePromptVersion_Detail:
required:
- name
- version
type: object
properties:
name:
minLength: 1
type: string
version:
$ref: "#/components/schemas/PromptVersion_Detail"
template_structure:
type: string
description: "Template structure for the prompt: 'text' or 'chat'. Note:\
\ This field is only used when creating a new prompt. If a prompt with\
\ the given name already exists, this field is ignored and the existing\
\ prompt's template structure is used. Template structure is immutable\
\ after prompt creation."
default: text
enum:
- text
- chat
project_id:
type: string
description: Project ID. Takes precedence over project_name when both are
provided.
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "If provided, scopes the prompt to the specified project. Ignored\
\ when project_id is provided."
Prompt_Detail:
required:
- name
type: object
properties:
id:
type: string
format: uuid
name:
minLength: 1
type: string
project_id:
type: string
description: Project ID. Takes precedence over project_name when both are
provided.
format: uuid
description:
maxLength: 255
minLength: 0
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
template_structure:
type: string
description: "Template structure type: 'text' or 'chat'. Immutable after\
\ creation."
default: text
enum:
- text
- chat
tags:
uniqueItems: true
type: array
items:
type: string
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
version_count:
type: integer
format: int64
readOnly: true
latest_version:
$ref: "#/components/schemas/PromptVersion_Detail"
requested_version:
$ref: "#/components/schemas/PromptVersion_Detail"
PromptVersionPage_Public:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/PromptVersion_Public"
sortableBy:
type: array
items:
type: string
PromptVersion_Public:
required:
- template
type: object
properties:
id:
type: string
description: "version unique identifier, generated if absent"
format: uuid
prompt_id:
type: string
format: uuid
readOnly: true
commit:
pattern: "^[a-zA-Z0-9]{8}$"
type: string
description: "version short unique identifier, generated if absent. it must\
\ be 8 characters long"
version_number:
type: string
description: sequential version number in the format v<N>; null for masks
readOnly: true
template:
minLength: 1
type: string
metadata:
$ref: "#/components/schemas/JsonNode_Public"
type:
type: string
enum:
- mustache
- jinja2
- python
version_type:
type: string
description: version type discriminator; defaults to prompt_version
enum:
- prompt_version
- mask
environment:
maxLength: 150
minLength: 0
pattern: "^[A-Za-z0-9_-]+$"
type: string
description: "Deprecated: use 'environments' instead"
deprecated: true
environments:
maxItems: 100
minItems: 0
uniqueItems: true
type: array
items:
maxLength: 150
minLength: 0
pattern: "^[A-Za-z0-9_-]+$"
type: string
change_description:
type: string
tags:
uniqueItems: true
type: array
items:
minLength: 1
type: string
template_structure:
type: string
readOnly: true
enum:
- text
- chat
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
PromptVersionCommitsRequest_Public:
required:
- commits
type: object
properties:
commits:
maxItems: 1000
minItems: 1
type: array
items:
minLength: 1
type: string
PromptVersionRetrieve_Detail:
required:
- name
type: object
properties:
name:
minLength: 1
type: string
commit:
type: string
environment:
maxLength: 150
minLength: 0
pattern: "^[A-Za-z0-9_-]+$"
type: string
description: "If provided, resolves to the version mapped to this environment\
\ for the prompt; mutually exclusive with commit and version_number"
version_number:
maxLength: 10
minLength: 0
pattern: v\d+
type: string
description: "If provided, resolves to the version with this sequential\
\ number (e.g. v3); mutually exclusive with commit and environment"
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "If provided, scopes the search to the specified project"
PromptVersionIdsRequest_Detail:
required:
- ids
type: object
properties:
ids:
maxItems: 1000
minItems: 1
type: array
items:
type: string
format: uuid
PromptVersionEnvironmentUpdate:
required:
- environments
type: object
properties:
environments:
maxItems: 100
minItems: 0
uniqueItems: true
type: array
items:
maxLength: 150
minLength: 0
pattern: "^[A-Za-z0-9_-]+$"
type: string
description: |
Replace the full set of environments assigned to a prompt version.
The provided set becomes the new complete set of environments for this version.
- Non-empty set: assigns each environment to this version; if another version of the same prompt currently owns any of those environments, ownership is moved atomically.
- Empty set: clears all environments from this version.
All environments must already exist in the workspace registry; unknown names return 404.
Prompt_Updatable:
required:
- name
type: object
properties:
name:
minLength: 1
type: string
description:
maxLength: 255
minLength: 0
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
tags:
uniqueItems: true
type: array
items:
type: string
PromptVersionBatchUpdate:
required:
- ids
- update
type: object
properties:
ids:
maxItems: 1000
minItems: 1
uniqueItems: true
type: array
description: IDs of prompt versions to update
items:
type: string
description: IDs of prompt versions to update
format: uuid
update:
$ref: "#/components/schemas/PromptVersionUpdate"
merge_tags:
type: boolean
description: |
Tag merge behavior:
- true: Add new tags to existing tags (union)
- false: Replace all existing tags with new tags (default behaviour if not provided)
default: false
description: |
Request to update one or more prompt versions.
Note: Prompt versions are immutable by design - only organizational properties (such as tags etc.) can be updated.
PromptVersionUpdate:
type: object
properties:
tags:
maxItems: 50
minItems: 0
uniqueItems: true
type: array
description: |
Tags to set or merge with existing tags. Follows PATCH semantics:
- If merge_tags is true, these tags will be added to existing tags.
- If merge_tags is false, these tags will replace all existing tags.
- null: preserve existing tags (no change).
- empty set: clear all tags when merge_tags is false.
items:
maxLength: 100
minLength: 0
type: string
description: |
Tags to set or merge with existing tags. Follows PATCH semantics:
- If merge_tags is true, these tags will be added to existing tags.
- If merge_tags is false, these tags will replace all existing tags.
- null: preserve existing tags (no change).
- empty set: clear all tags when merge_tags is false.
description: |
Update to apply to prompt versions.
Note: Prompt versions are immutable by design.
Only organizational properties (such as tags etc.) can be updated.
Core properties like template, metadata etc. cannot be modified after creation.
RecentActivityItem_Public:
type: object
properties:
type:
type: string
enum:
- trace_daily
- experiment
- dataset_version
- test_suite_version
- alert_event
- optimization
- prompt_version
id:
type: string
format: uuid
name:
type: string
resource_id:
type: string
format: uuid
created_by:
type: string
created_at:
type: string
format: date-time
RecentActivityPage_Public:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/RecentActivityItem_Public"
ReportFailure:
required:
- project_id
- reason
- type
type: object
properties:
id:
type: string
format: uuid
readOnly: true
type:
type: string
enum:
- agent_insights
project_id:
type: string
format: uuid
reason:
maxLength: 255
minLength: 0
type: string
detail:
type: string
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
ReportFailurePage:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/ReportFailure"
ReportCompleteRequest:
required:
- status
type: object
properties:
content:
type: string
status:
type: string
enum:
- pending
- completed
- failed
session_id:
type: string
recommended_actions:
$ref: "#/components/schemas/JsonNode"
GenerateReportResponse:
type: object
properties:
reportId:
type: string
format: uuid
description: Response for report generation trigger
ReportPreference:
type: object
properties:
project_id:
type: string
format: uuid
enabled:
type: boolean
schedule_time:
pattern: "\\d{2}:\\d{2}:\\d{2}"
type: string
custom_prompt:
maxLength: 5000
minLength: 0
type: string
created_at:
type: string
format: date-time
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
OllieReport:
type: object
properties:
id:
type: string
format: uuid
project_id:
type: string
format: uuid
session_id:
type: string
content:
type: string
recommended_actions:
$ref: "#/components/schemas/JsonNode"
status:
type: string
enum:
- pending
- completed
- failed
created_at:
type: string
format: date-time
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
OllieReportPage:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/OllieReport"
RetentionRule_Public:
required:
- retention
type: object
properties:
id:
type: string
format: uuid
readOnly: true
workspace_id:
type: string
readOnly: true
project_id:
type: string
format: uuid
level:
type: string
description: Computed from projectId and organizationLevel
readOnly: true
enum:
- organization
- workspace
- project
retention:
type: string
enum:
- short_14d
- base_60d
- extended_400d
- unlimited
apply_to_past:
type: boolean
enabled:
type: boolean
readOnly: true
created_by:
type: string
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
catch_up_cursor:
type: string
description: Current position of historical data cleanup
format: uuid
readOnly: true
catch_up_done:
type: boolean
description: Whether historical catch-up is complete
readOnly: true
RetentionRule_Write:
required:
- retention
type: object
properties:
project_id:
type: string
format: uuid
organization_level:
type: boolean
description: Set to true to create an organization-level rule
writeOnly: true
retention:
type: string
enum:
- short_14d
- base_60d
- extended_400d
- unlimited
apply_to_past:
type: boolean
RetentionRulePage_Public:
type: object
properties:
content:
type: array
items:
$ref: "#/components/schemas/RetentionRule_Public"
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
ServiceTogglesConfig:
required:
- agentInsightsEnabled
- agenticToolsEnabled
- alertsEnabled
- anthropicProviderEnabled
- bedrockProviderEnabled
- costIntelligenceEnabled
- customllmProviderEnabled
- datasetExportEnabled
- datasetVersioningEnabled
- demoDataEnabled
- exportEnabled
- forceWorkspaceVersion
- geminiProviderEnabled
- guardrailsEnabled
- ollamaProviderEnabled
- ollieEnabled
- onlineScoringTracingEnabled
- openaiProviderEnabled
- openrouterProviderEnabled
- opikAIEnabled
- projectHomepageEnabled
- pythonEvaluatorEnabled
- spanLlmAsJudgeEnabled
- spanUserDefinedMetricPythonEnabled
- traceThreadPythonEvaluatorEnabled
- v1WorkspaceAllowlistIds
- v2WorkspaceAllowlistIds
- vertexaiProviderEnabled
- welcomeWizardEnabled
type: object
properties:
pythonEvaluatorEnabled:
type: boolean
traceThreadPythonEvaluatorEnabled:
type: boolean
spanLlmAsJudgeEnabled:
type: boolean
spanUserDefinedMetricPythonEnabled:
type: boolean
guardrailsEnabled:
type: boolean
opikAIEnabled:
type: boolean
alertsEnabled:
type: boolean
welcomeWizardEnabled:
type: boolean
exportEnabled:
type: boolean
costIntelligenceEnabled:
type: boolean
datasetVersioningEnabled:
type: boolean
datasetExportEnabled:
type: boolean
demoDataEnabled:
type: boolean
openaiProviderEnabled:
type: boolean
anthropicProviderEnabled:
type: boolean
geminiProviderEnabled:
type: boolean
openrouterProviderEnabled:
type: boolean
vertexaiProviderEnabled:
type: boolean
bedrockProviderEnabled:
type: boolean
customllmProviderEnabled:
type: boolean
ollamaProviderEnabled:
type: boolean
ollieEnabled:
type: boolean
projectHomepageEnabled:
type: boolean
agenticToolsEnabled:
type: boolean
agentInsightsEnabled:
type: boolean
onlineScoringTracingEnabled:
type: boolean
v2WorkspaceAllowlistIds:
uniqueItems: true
type: array
items:
minLength: 1
type: string
v1WorkspaceAllowlistIds:
uniqueItems: true
type: array
items:
minLength: 1
type: string
forceWorkspaceVersion:
minLength: 1
type: string
defaultPageSize:
maximum: 100
minimum: 5
type: integer
format: int32
v2WorkspaceAllowlist:
type: string
writeOnly: true
v1WorkspaceAllowlist:
type: string
writeOnly: true
SpanBatchUpdate:
required:
- ids
- update
type: object
properties:
ids:
maxItems: 1000
minItems: 1
uniqueItems: true
type: array
description: List of span IDs to update (max 1000)
items:
type: string
description: List of span IDs to update (max 1000)
format: uuid
update:
$ref: "#/components/schemas/SpanUpdate"
merge_tags:
type: boolean
description: "If true, merge tags with existing tags instead of replacing\
\ them. Default: false"
description: Request to batch update multiple spans
SpanUpdate:
required:
- trace_id
type: object
properties:
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "If null and project_id not specified, Default Project is assumed"
project_id:
type: string
description: "If null and project_name not specified, Default Project is\
\ assumed"
format: uuid
trace_id:
type: string
format: uuid
parent_span_id:
type: string
format: uuid
name:
type: string
type:
type: string
enum:
- general
- tool
- llm
- guardrail
end_time:
type: string
format: date-time
input:
$ref: "#/components/schemas/JsonListString"
output:
$ref: "#/components/schemas/JsonListString"
metadata:
$ref: "#/components/schemas/JsonListString"
model:
type: string
provider:
type: string
tags:
maxItems: 50
minItems: 0
uniqueItems: true
type: array
description: Tags
items:
maxLength: 100
minLength: 0
type: string
description: Tags
tags_to_add:
maxItems: 50
minItems: 0
uniqueItems: true
type: array
description: Tags to add
items:
maxLength: 100
minLength: 0
type: string
description: Tags to add
tags_to_remove:
maxItems: 50
minItems: 0
uniqueItems: true
type: array
description: Tags to remove
items:
maxLength: 100
minLength: 0
type: string
description: Tags to remove
usage:
type: object
additionalProperties:
type: integer
format: int32
total_estimated_cost:
minimum: 0.0
exclusiveMinimum: false
type: number
error_info:
$ref: "#/components/schemas/ErrorInfo"
ttft:
type: number
format: double
source:
type: string
enum:
- sdk
- experiment
- playground
- optimization
- evaluator
environment:
maxLength: 150
minLength: 0
type: string
ErrorInfo_Write:
required:
- exception_type
- traceback
type: object
properties:
exception_type:
minLength: 1
type: string
message:
type: string
traceback:
minLength: 1
type: string
Span_Write:
required:
- start_time
type: object
properties:
id:
type: string
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "If null, the default project is used"
trace_id:
type: string
format: uuid
parent_span_id:
type: string
format: uuid
name:
type: string
type:
type: string
enum:
- general
- tool
- llm
- guardrail
start_time:
type: string
format: date-time
end_time:
type: string
format: date-time
input:
$ref: "#/components/schemas/JsonListString_Write"
output:
$ref: "#/components/schemas/JsonListString_Write"
metadata:
$ref: "#/components/schemas/JsonListString_Write"
model:
type: string
provider:
type: string
tags:
uniqueItems: true
type: array
items:
type: string
usage:
type: object
additionalProperties:
type: integer
format: int32
error_info:
$ref: "#/components/schemas/ErrorInfo_Write"
last_updated_at:
type: string
format: date-time
total_estimated_cost:
minimum: 0.0
exclusiveMinimum: false
type: number
total_estimated_cost_version:
type: string
ttft:
type: number
description: Time to first token in milliseconds
format: double
source:
type: string
enum:
- sdk
- experiment
- playground
- optimization
- evaluator
environment:
maxLength: 150
minLength: 0
type: string
SpanBatch:
required:
- spans
type: object
properties:
spans:
maxItems: 1000
minItems: 1
type: array
items:
$ref: "#/components/schemas/Span"
SpanBatch_Write:
required:
- spans
type: object
properties:
spans:
maxItems: 1000
minItems: 1
type: array
items:
$ref: "#/components/schemas/Span_Write"
DeleteFeedbackScore:
required:
- name
type: object
properties:
name:
minLength: 1
type: string
author:
type: string
source_queue_id:
type: string
format: uuid
ErrorInfo_Public:
required:
- exception_type
- traceback
type: object
properties:
exception_type:
minLength: 1
type: string
message:
type: string
traceback:
minLength: 1
type: string
FeedbackScore_Public:
required:
- name
- source
- value
type: object
properties:
name:
minLength: 1
type: string
category_name:
type: string
value:
maximum: 999999999.999999999
exclusiveMaximum: false
minimum: -999999999.999999999
exclusiveMinimum: false
type: number
reason:
type: string
source:
type: string
enum:
- ui
- sdk
- online_scoring
source_queue_id:
type: string
format: uuid
created_at:
type: string
format: date-time
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_by:
type: string
readOnly: true
value_by_author:
type: object
additionalProperties:
$ref: "#/components/schemas/ValueEntry_Public"
readOnly: true
description: "Aggregated feedback scores from all spans in this trace, averaged\
\ by score name"
readOnly: true
Span_Public:
required:
- start_time
type: object
properties:
id:
type: string
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "If null, the default project is used"
project_id:
type: string
format: uuid
readOnly: true
trace_id:
type: string
format: uuid
parent_span_id:
type: string
format: uuid
name:
type: string
type:
type: string
enum:
- general
- tool
- llm
- guardrail
start_time:
type: string
format: date-time
end_time:
type: string
format: date-time
input:
$ref: "#/components/schemas/JsonListString_Public"
output:
$ref: "#/components/schemas/JsonListString_Public"
metadata:
$ref: "#/components/schemas/JsonListString_Public"
model:
type: string
provider:
type: string
tags:
uniqueItems: true
type: array
items:
type: string
usage:
type: object
additionalProperties:
type: integer
format: int32
error_info:
$ref: "#/components/schemas/ErrorInfo_Public"
created_at:
type: string
format: date-time
readOnly: true
last_updated_at:
type: string
format: date-time
created_by:
type: string
readOnly: true
last_updated_by:
type: string
readOnly: true
feedback_scores:
type: array
readOnly: true
items:
$ref: "#/components/schemas/FeedbackScore_Public"
comments:
type: array
readOnly: true
items:
$ref: "#/components/schemas/Comment_Public"
total_estimated_cost:
minimum: 0.0
exclusiveMinimum: false
type: number
total_estimated_cost_version:
type: string
duration:
type: number
description: Duration in milliseconds as a decimal number to support sub-millisecond
precision
format: double
readOnly: true
ttft:
type: number
description: Time to first token in milliseconds
format: double
source:
type: string
enum:
- sdk
- experiment
- playground
- optimization
- evaluator
environment:
maxLength: 150
minLength: 0
type: string
ValueEntry_Public:
type: object
properties:
value:
type: number
reason:
type: string
category_name:
type: string
source:
type: string
enum:
- ui
- sdk
- online_scoring
last_updated_at:
type: string
format: date-time
span_type:
type: string
span_id:
type: string
source_queue_id:
type: string
author:
type: string
readOnly: true
SpanPage_Public:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/Span_Public"
sortableBy:
type: array
items:
type: string
FeedbackScoreBatch:
required:
- scores
type: object
properties:
scores:
maxItems: 1000
minItems: 1
type: array
items:
$ref: "#/components/schemas/FeedbackScoreBatchItem"
FeedbackScoreBatchItem:
required:
- id
- name
- source
- value
type: object
properties:
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "If null, the default project is used"
project_id:
type: string
format: uuid
name:
minLength: 1
type: string
category_name:
type: string
value:
maximum: 999999999.999999999
exclusiveMaximum: false
minimum: -999999999.999999999
exclusiveMinimum: false
type: number
reason:
type: string
source:
type: string
enum:
- ui
- sdk
- online_scoring
author:
type: string
source_queue_id:
type: string
format: uuid
id:
type: string
format: uuid
SpanSearchStreamRequest_Public:
type: object
properties:
trace_id:
type: string
format: uuid
project_name:
type: string
project_id:
type: string
format: uuid
type:
type: string
enum:
- general
- tool
- llm
- guardrail
filters:
type: array
items:
$ref: "#/components/schemas/SpanFilter_Public"
limit:
maximum: 2000
minimum: 1
type: integer
description: Max number of spans to be streamed
format: int32
default: 500
last_retrieved_id:
type: string
format: uuid
truncate:
type: boolean
description: "Truncate image included in either input, output or metadata"
default: true
exclude:
uniqueItems: true
type: array
description: Fields to exclude from the response
items:
type: string
description: Fields to exclude from the response
enum:
- name
- type
- start_time
- end_time
- input
- output
- metadata
- model
- provider
- tags
- usage
- error_info
- created_at
- created_by
- last_updated_by
- feedback_scores
- comments
- total_estimated_cost
- total_estimated_cost_version
- duration
- ttft
- source
- environment
from_time:
type: string
description: Filter spans created from this time (ISO-8601 format).
format: date-time
to_time:
type: string
description: "Filter spans created up to this time (ISO-8601 format). If\
\ not provided, defaults to current time. Must be after 'from_time'."
format: date-time
ExistenceResponse:
type: object
properties:
exists:
type: boolean
description: Whether the project has at least one matching entity for the
given scope
TraceBatchUpdate:
required:
- ids
- update
type: object
properties:
ids:
maxItems: 1000
minItems: 1
uniqueItems: true
type: array
description: List of trace IDs to update (max 1000)
items:
type: string
description: List of trace IDs to update (max 1000)
format: uuid
update:
$ref: "#/components/schemas/TraceUpdate"
merge_tags:
type: boolean
description: "If true, merge tags with existing tags instead of replacing\
\ them. Default: false"
description: Request to batch update multiple traces
TraceUpdate:
type: object
properties:
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "If null and project_id not specified, Default Project is assumed"
project_id:
type: string
description: "If null and project_name not specified, Default Project is\
\ assumed"
format: uuid
name:
type: string
end_time:
type: string
format: date-time
input:
$ref: "#/components/schemas/JsonListString"
output:
$ref: "#/components/schemas/JsonListString"
metadata:
$ref: "#/components/schemas/JsonListString"
tags:
maxItems: 50
minItems: 0
uniqueItems: true
type: array
description: Tags
items:
maxLength: 100
minLength: 0
type: string
description: Tags
tags_to_add:
maxItems: 50
minItems: 0
uniqueItems: true
type: array
description: Tags to add
items:
maxLength: 100
minLength: 0
type: string
description: Tags to add
tags_to_remove:
maxItems: 50
minItems: 0
uniqueItems: true
type: array
description: Tags to remove
items:
maxLength: 100
minLength: 0
type: string
description: Tags to remove
error_info:
$ref: "#/components/schemas/ErrorInfo"
thread_id:
type: string
ttft:
type: number
format: double
source:
type: string
enum:
- sdk
- experiment
- playground
- optimization
- evaluator
environment:
maxLength: 150
minLength: 0
type: string
TraceThreadBatchUpdate:
required:
- ids
- update
type: object
properties:
ids:
maxItems: 1000
minItems: 1
uniqueItems: true
type: array
description: List of thread model IDs to update (max 1000)
items:
type: string
description: List of thread model IDs to update (max 1000)
format: uuid
update:
$ref: "#/components/schemas/TraceThreadUpdate"
merge_tags:
type: boolean
description: "If true, merge tags with existing tags instead of replacing\
\ them. Default: false"
description: Request to batch update multiple trace threads
TraceThreadUpdate:
type: object
properties:
tags:
maxItems: 50
minItems: 0
uniqueItems: true
type: array
items:
maxLength: 100
minLength: 0
type: string
tags_to_add:
maxItems: 50
minItems: 0
uniqueItems: true
type: array
items:
maxLength: 100
minLength: 0
type: string
tags_to_remove:
maxItems: 50
minItems: 0
uniqueItems: true
type: array
items:
maxLength: 100
minLength: 0
type: string
TraceThreadBatchIdentifier:
type: object
properties:
project_name:
type: string
project_id:
type: string
format: uuid
thread_id:
type: string
thread_ids:
maxItems: 1000
minItems: 1
uniqueItems: true
type: array
items:
minLength: 1
type: string
Trace_Write:
required:
- start_time
type: object
properties:
id:
type: string
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "If null, the default project is used"
name:
type: string
start_time:
type: string
format: date-time
end_time:
type: string
format: date-time
input:
$ref: "#/components/schemas/JsonListString_Write"
output:
$ref: "#/components/schemas/JsonListString_Write"
metadata:
$ref: "#/components/schemas/JsonListString_Write"
tags:
uniqueItems: true
type: array
items:
type: string
error_info:
$ref: "#/components/schemas/ErrorInfo_Write"
last_updated_at:
type: string
format: date-time
ttft:
type: number
description: Time to first token in milliseconds
format: double
thread_id:
type: string
source:
type: string
enum:
- sdk
- experiment
- playground
- optimization
- evaluator
environment:
maxLength: 150
minLength: 0
type: string
TraceBatch:
required:
- traces
type: object
properties:
traces:
maxItems: 1000
minItems: 1
type: array
items:
$ref: "#/components/schemas/Trace"
TraceBatch_Write:
required:
- traces
type: object
properties:
traces:
maxItems: 1000
minItems: 1
type: array
items:
$ref: "#/components/schemas/Trace_Write"
DeleteThreadFeedbackScores:
required:
- names
- project_name
- thread_id
type: object
properties:
project_name:
minLength: 1
type: string
thread_id:
minLength: 1
type: string
names:
maxItems: 1000
minItems: 1
uniqueItems: true
type: array
items:
minLength: 1
type: string
author:
type: string
source_queue_id:
type: string
format: uuid
DeleteTraceThreads:
required:
- thread_ids
type: object
properties:
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "If null, project_id must be provided"
project_id:
type: string
description: "If null, project_name must be provided"
format: uuid
thread_ids:
maxItems: 1000
minItems: 1
type: array
items:
minLength: 1
type: string
BatchDeleteByProject:
required:
- ids
type: object
properties:
ids:
maxItems: 1000
minItems: 1
uniqueItems: true
type: array
items:
type: string
format: uuid
project_id:
type: string
format: uuid
Check_Public:
type: object
properties:
name:
type: string
enum:
- TOPIC
- PII
result:
type: string
enum:
- passed
- failed
ExperimentItemReference_Public:
required:
- dataset_id
- dataset_item_id
- id
- name
type: object
properties:
id:
type: string
description: Experiment ID
format: uuid
name:
type: string
description: Experiment name
dataset_id:
type: string
description: Dataset ID
format: uuid
dataset_item_id:
type: string
description: Dataset Item ID
format: uuid
description: "Experiment reference with ID, name, dataset ID, and dataset item\
\ ID"
readOnly: true
GuardrailsValidation_Public:
type: object
properties:
span_id:
type: string
format: uuid
checks:
type: array
items:
$ref: "#/components/schemas/Check_Public"
readOnly: true
Trace_Public:
required:
- start_time
type: object
properties:
id:
type: string
format: uuid
project_id:
type: string
format: uuid
readOnly: true
name:
type: string
start_time:
type: string
format: date-time
end_time:
type: string
format: date-time
input:
$ref: "#/components/schemas/JsonListString_Public"
output:
$ref: "#/components/schemas/JsonListString_Public"
metadata:
$ref: "#/components/schemas/JsonListString_Public"
tags:
uniqueItems: true
type: array
items:
type: string
error_info:
$ref: "#/components/schemas/ErrorInfo_Public"
usage:
type: object
additionalProperties:
type: integer
format: int64
readOnly: true
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
last_updated_at:
type: string
format: date-time
created_by:
type: string
readOnly: true
last_updated_by:
type: string
readOnly: true
feedback_scores:
type: array
readOnly: true
items:
$ref: "#/components/schemas/FeedbackScore_Public"
span_feedback_scores:
type: array
description: "Aggregated feedback scores from all spans in this trace, averaged\
\ by score name"
readOnly: true
items:
$ref: "#/components/schemas/FeedbackScore_Public"
comments:
type: array
readOnly: true
items:
$ref: "#/components/schemas/Comment_Public"
guardrails_validations:
type: array
readOnly: true
items:
$ref: "#/components/schemas/GuardrailsValidation_Public"
total_estimated_cost:
type: number
readOnly: true
span_count:
type: integer
format: int32
readOnly: true
duration:
type: number
description: Duration in milliseconds as a decimal number to support sub-millisecond
precision
format: double
readOnly: true
ttft:
type: number
description: Time to first token in milliseconds
format: double
thread_id:
type: string
visibility_mode:
type: string
readOnly: true
enum:
- default
- hidden
llm_span_count:
type: integer
format: int32
readOnly: true
has_tool_spans:
type: boolean
readOnly: true
providers:
type: array
description: "List of unique provider names from all spans in this trace,\
\ sorted alphabetically"
readOnly: true
items:
type: string
description: "List of unique provider names from all spans in this trace,\
\ sorted alphabetically"
readOnly: true
experiment:
$ref: "#/components/schemas/ExperimentItemReference_Public"
source:
type: string
enum:
- sdk
- experiment
- playground
- optimization
- evaluator
environment:
maxLength: 150
minLength: 0
type: string
TraceThread:
type: object
properties:
id:
type: string
project_id:
type: string
format: uuid
thread_model_id:
type: string
format: uuid
start_time:
type: string
format: date-time
end_time:
type: string
format: date-time
duration:
type: number
format: double
first_message:
$ref: "#/components/schemas/JsonListString"
last_message:
$ref: "#/components/schemas/JsonListString"
feedback_scores:
type: array
items:
$ref: "#/components/schemas/FeedbackScore"
status:
type: string
enum:
- active
- inactive
number_of_messages:
type: integer
format: int64
total_estimated_cost:
type: number
usage:
type: object
additionalProperties:
type: integer
format: int64
comments:
type: array
items:
$ref: "#/components/schemas/Comment"
tags:
uniqueItems: true
type: array
items:
type: string
last_updated_at:
type: string
format: date-time
last_updated_by:
type: string
created_by:
type: string
created_at:
type: string
format: date-time
environment:
type: string
TraceThreadIdentifier:
required:
- thread_id
type: object
properties:
project_name:
type: string
project_id:
type: string
format: uuid
thread_id:
minLength: 1
type: string
truncate:
type: boolean
TraceThreadPage:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/TraceThread"
sortableBy:
type: array
items:
type: string
TracePage_Public:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: "#/components/schemas/Trace_Public"
sortableBy:
type: array
items:
type: string
FeedbackScoreBatchItemThread:
required:
- name
- source
- thread_id
- value
type: object
properties:
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: "If null, the default project is used"
project_id:
type: string
format: uuid
name:
minLength: 1
type: string
category_name:
type: string
value:
maximum: 999999999.999999999
exclusiveMaximum: false
minimum: -999999999.999999999
exclusiveMinimum: false
type: number
reason:
type: string
source:
type: string
enum:
- ui
- sdk
- online_scoring
author:
type: string
source_queue_id:
type: string
format: uuid
thread_id:
minLength: 1
type: string
FeedbackScoreBatchThread:
required:
- scores
type: object
properties:
scores:
maxItems: 1000
minItems: 1
type: array
items:
$ref: "#/components/schemas/FeedbackScoreBatchItemThread"
TraceThreadSearchStreamRequest:
type: object
properties:
project_name:
type: string
project_id:
type: string
format: uuid
filters:
type: array
items:
$ref: "#/components/schemas/TraceThreadFilter"
last_retrieved_thread_model_id:
type: string
format: uuid
limit:
maximum: 2000
minimum: 1
type: integer
description: Max number of trace thread to be streamed
format: int32
default: 500
truncate:
type: boolean
description: "Truncate input, output and metadata to slim payloads"
default: true
strip_attachments:
type: boolean
description: "If true, returns attachment references like [file.png]; if\
\ false, downloads and reinjects stripped attachments"
default: false
from_time:
type: string
description: Filter trace threads created from this time (ISO-8601 format).
format: date-time
to_time:
type: string
description: "Filter trace threads created up to this time (ISO-8601 format).\
\ If not provided, defaults to current time. Must be after 'from_time'."
format: date-time
TraceSearchStreamRequest_Public:
type: object
properties:
project_name:
type: string
project_id:
type: string
format: uuid
filters:
type: array
items:
$ref: "#/components/schemas/TraceFilter_Public"
last_retrieved_id:
type: string
format: uuid
limit:
maximum: 2000
minimum: 1
type: integer
description: Max number of traces to be streamed
format: int32
default: 500
truncate:
type: boolean
description: "Truncate input, output and metadata to slim payloads"
default: true
strip_attachments:
type: boolean
description: "If true, returns attachment references like [file.png]; if\
\ false, downloads and reinjects stripped attachments"
default: false
exclude:
uniqueItems: true
type: array
description: Fields to exclude from the response
items:
type: string
description: Fields to exclude from the response
enum:
- name
- start_time
- end_time
- input
- output
- metadata
- tags
- error_info
- usage
- created_at
- created_by
- last_updated_by
- feedback_scores
- span_feedback_scores
- comments
- guardrails_validations
- total_estimated_cost
- span_count
- llm_span_count
- has_tool_spans
- duration
- ttft
- thread_id
- visibility_mode
- providers
- experiment
- source
- environment
from_time:
type: string
description: Filter traces created from this time (ISO-8601 format).
format: date-time
to_time:
type: string
description: "Filter traces created up to this time (ISO-8601 format). If\
\ not provided, defaults to current time. Must be after 'from_time'."
format: date-time
WelcomeWizardTracking:
type: object
properties:
completed:
type: boolean
description: Whether the welcome wizard has been completed
WelcomeWizardSubmission:
type: object
properties:
role:
maxLength: 100
minLength: 0
type: string
description: Optional user role
integrations:
type: array
description: List of integrations the user selected
items:
type: string
description: List of integrations the user selected
email:
maxLength: 255
minLength: 0
type: string
description: Optional user email
format: email
join_beta_program:
type: boolean
description: Whether user wants to join beta programs
Permission:
type: object
properties:
permissionName:
type: string
permissionValue:
type: string
WorkspaceUserPermissions:
type: object
properties:
userName:
type: string
workspaceName:
type: string
permissions:
type: array
items:
$ref: "#/components/schemas/Permission"
Result:
type: object
properties:
name:
type: string
current:
type: number
format: double
previous:
type: number
format: double
WorkspaceMetricsSummaryRequest:
required:
- interval_end
- interval_start
type: object
properties:
project_ids:
uniqueItems: true
type: array
items:
type: string
format: uuid
interval_start:
type: string
format: date-time
interval_end:
type: string
format: date-time
start_before_end:
type: boolean
DataPointDouble:
required:
- time
type: object
properties:
time:
type: string
format: date-time
value:
type: number
format: double
WorkspaceMetricResponse:
type: object
properties:
results:
type: array
items:
$ref: "#/components/schemas/Result"
WorkspaceMetricRequest:
required:
- interval_end
- interval_start
type: object
properties:
project_ids:
uniqueItems: true
type: array
items:
type: string
format: uuid
name:
type: string
interval_start:
type: string
format: date-time
interval_end:
type: string
format: date-time
start_before_end:
type: boolean
WorkspaceConfiguration:
type: object
properties:
timeout_to_mark_thread_as_inactive:
type: string
description: "Duration in ISO-8601 format (e.g., PT30M for 30 minutes, PT2H\
\ for 2 hours, P1D for 1 day). Minimum precision supported is seconds,\
\ please use a duration with seconds precision or higher. Also, the max\
\ duration allowed is 7 days."
truncation_on_tables:
type: boolean
description: "Enable or disable data truncation in table views. When disabled,\
\ the frontend will limit pagination to prevent performance issues. Default:\
\ true (truncation enabled)."
example: true
color_map:
type: object
additionalProperties:
type: string
description: "Workspace-level color map. Maps label names to hex color\
\ values (e.g. #FF0000). Max 10000 entries."
description: "Workspace-level color map. Maps label names to hex color values\
\ (e.g. #FF0000). Max 10000 entries."
WorkspaceVersion:
type: object
properties:
opik_version:
type: string
description: |-
The determined Opik navigation version for this workspace.
'version_1' = legacy workspace-scoped navigation,
'version_2' = new project-first navigation.
enum:
- version_1
- version_2
description: |-
Workspace version response.
The opik_version field indicates which navigation mode the frontend should render:
'version_1' (legacy workspace-scoped) or 'version_2' (project-first).
WorkspaceMetricsSummaryResponse:
type: object
properties:
results:
type: array
items:
$ref: "#/components/schemas/Result"