{"components":{"schemas":{"ActivateRequest":{"properties":{"hmac":{"maxLength":44,"minLength":43,"type":"string"},"runner_name":{"maxLength":128,"minLength":0,"type":"string"}},"required":["hmac","runner_name"],"type":"object"},"Agent":{"properties":{"description":{"type":"string"},"executable":{"type":"string"},"language":{"type":"string"},"name":{"type":"string"},"params":{"items":{"$ref":"#/components/schemas/Param"},"type":"array"},"source_file":{"type":"string"},"timeout":{"format":"int32","type":"integer"}},"type":"object"},"AgentBlueprint_History":{"properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"description":{"maxLength":255,"minLength":0,"type":"string"},"envs":{"items":{"readOnly":true,"type":"string"},"readOnly":true,"type":"array"},"id":{"format":"uuid","type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"name":{"readOnly":true,"type":"string"},"type":{"enum":["blueprint","mask"],"type":"string"},"values":{"items":{"$ref":"#/components/schemas/AgentConfigValue_History"},"maxItems":250,"minItems":1,"type":"array"}},"required":["type","values"],"type":"object"},"AgentBlueprint_Public":{"properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"description":{"maxLength":255,"minLength":0,"type":"string"},"envs":{"items":{"readOnly":true,"type":"string"},"readOnly":true,"type":"array"},"id":{"format":"uuid","type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"name":{"readOnly":true,"type":"string"},"type":{"enum":["blueprint","mask"],"type":"string"},"values":{"items":{"$ref":"#/components/schemas/AgentConfigValue_Public"},"maxItems":250,"minItems":1,"type":"array"}},"required":["type","values"],"type":"object"},"AgentBlueprint_Write":{"properties":{"description":{"maxLength":255,"minLength":0,"type":"string"},"id":{"format":"uuid","type":"string"},"type":{"enum":["blueprint","mask"],"type":"string"},"values":{"items":{"$ref":"#/components/schemas/AgentConfigValue_Write"},"maxItems":250,"minItems":1,"type":"array"}},"required":["type","values"],"type":"object"},"AgentConfigCreate_Write":{"properties":{"blueprint":{"$ref":"#/components/schemas/AgentBlueprint_Write"},"id":{"description":"Agent config ID. Generated automatically if not provided","format":"uuid","type":"string"},"project_id":{"description":"Project ID. Either project_id or project_name must be provided","format":"uuid","type":"string"},"project_name":{"description":"Project name. Either project_id or project_name must be provided","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"}},"required":["blueprint"],"type":"object"},"AgentConfigEnv":{"properties":{"blueprint_id":{"format":"uuid","type":"string"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"ended_at":{"format":"date-time","readOnly":true,"type":"string"},"env_name":{"maxLength":50,"minLength":0,"type":"string"},"id":{"format":"uuid","readOnly":true,"type":"string"},"project_id":{"format":"uuid","readOnly":true,"type":"string"}},"required":["blueprint_id","env_name"],"type":"object"},"AgentConfigEnvSetByName":{"properties":{"blueprint_name":{"type":"string"}},"required":["blueprint_name"],"type":"object"},"AgentConfigEnvUpdate":{"properties":{"envs":{"items":{"$ref":"#/components/schemas/AgentConfigEnv"},"maxItems":100,"minItems":1,"type":"array"},"project_id":{"format":"uuid","type":"string"}},"required":["envs","project_id"],"type":"object"},"AgentConfigRemoveValues":{"properties":{"keys":{"items":{"minLength":1,"type":"string"},"maxItems":250,"minItems":0,"type":"array","uniqueItems":true},"project_id":{"description":"Project ID. Either project_id or project_name must be provided","format":"uuid","type":"string"},"project_name":{"description":"Project name. Either project_id or project_name must be provided","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"}},"required":["keys"],"type":"object"},"AgentConfigValue_History":{"properties":{"description":{"type":"string"},"key":{"maxLength":255,"minLength":0,"type":"string"},"type":{"enum":["string","integer","float","boolean","prompt","prompt_commit"],"type":"string"},"value":{"type":"string"}},"required":["key","type"],"type":"object"},"AgentConfigValue_Public":{"properties":{"description":{"type":"string"},"key":{"maxLength":255,"minLength":0,"type":"string"},"type":{"enum":["string","integer","float","boolean","prompt","prompt_commit"],"type":"string"},"value":{"type":"string"}},"required":["key","type"],"type":"object"},"AgentConfigValue_Write":{"properties":{"description":{"type":"string"},"key":{"maxLength":255,"minLength":0,"type":"string"},"type":{"enum":["string","integer","float","boolean","prompt","prompt_commit"],"type":"string"},"value":{"type":"string"}},"required":["key","type"],"type":"object"},"AgentInsightsIssue":{"properties":{"cause":{"type":"string"},"created_at":{"format":"date-time","type":"string"},"created_by":{"type":"string"},"days_reported":{"description":"COUNT(DISTINCT report_day) in the requested window","format":"int64","type":"integer"},"description":{"type":"string"},"first_seen":{"description":"MIN(report_day) in the requested window","format":"date","type":"string"},"id":{"format":"uuid","type":"string"},"last_seen":{"description":"MAX(report_day) in the requested window","format":"date","type":"string"},"last_updated_at":{"format":"date-time","type":"string"},"last_updated_by":{"type":"string"},"latest_count":{"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","type":"integer"},"name":{"type":"string"},"severity":{"enum":["critical","high","medium","low"],"type":"string"},"status":{"enum":["open","resolved","closed"],"type":"string"},"suggested_fix":{"type":"string"},"total":{"description":"SUM(total_count) over the requested window","format":"int64","type":"integer"},"total_occurrences":{"description":"SUM(count) over the requested window","format":"int64","type":"integer"},"total_users":{"description":"SUM(total_users) over the requested window","format":"int64","type":"integer"},"traces_query":{"type":"string"},"users_impacted":{"description":"SUM(users_impacted) over the requested window","format":"int64","type":"integer"}},"type":"object"},"AgentInsightsIssueDetail":{"description":"Per-day breakdown within the requested window, ordered by report_day ascending","properties":{"count":{"format":"int64","type":"integer"},"metadata":{"$ref":"#/components/schemas/JsonNode"},"report_day":{"format":"date","type":"string"},"total_count":{"format":"int64","type":"integer"},"total_users":{"format":"int64","type":"integer"},"users_impacted":{"format":"int64","type":"integer"}},"type":"object"},"AgentInsightsIssuePage":{"properties":{"content":{"items":{"$ref":"#/components/schemas/AgentInsightsIssue"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"total":{"format":"int64","type":"integer"}},"type":"object"},"AgentInsightsIssueUpdate":{"properties":{"project_id":{"format":"uuid","type":"string"},"status":{"enum":["open","resolved","closed"],"type":"string"}},"required":["project_id","status"],"type":"object"},"AgentInsightsIssueWithDetails":{"properties":{"cause":{"type":"string"},"created_at":{"format":"date-time","type":"string"},"created_by":{"type":"string"},"description":{"type":"string"},"details":{"description":"Per-day breakdown within the requested window, ordered by report_day ascending","items":{"$ref":"#/components/schemas/AgentInsightsIssueDetail"},"type":"array"},"id":{"format":"uuid","type":"string"},"last_updated_at":{"format":"date-time","type":"string"},"last_updated_by":{"type":"string"},"name":{"type":"string"},"severity":{"enum":["critical","high","medium","low"],"type":"string"},"status":{"enum":["open","resolved","closed"],"type":"string"},"suggested_fix":{"type":"string"},"traces_query":{"type":"string"}},"type":"object"},"AgentInsightsJob":{"properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"id":{"format":"uuid","readOnly":true,"type":"string"},"last_failed_at":{"format":"date-time","readOnly":true,"type":"string"},"last_failure_detail":{"readOnly":true,"type":"string"},"last_failure_reason":{"readOnly":true,"type":"string"},"last_scan_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"project_id":{"format":"uuid","readOnly":true,"type":"string"},"status":{"enum":["enabled","disabled"],"readOnly":true,"type":"string"}},"required":["project_id"],"type":"object"},"AgentInsightsJobUpdate":{"properties":{"status":{"description":"New status for the job","enum":["enabled","disabled"],"type":"string"}},"required":["status"],"type":"object"},"AgentInsightsReport":{"properties":{"issues":{"items":{"$ref":"#/components/schemas/ReportedIssue"},"type":"array"},"project_id":{"format":"uuid","type":"string"},"report_day":{"format":"date","type":"string"}},"required":["issues","project_id","report_day"],"type":"object"},"AggregationData":{"properties":{"duration":{"$ref":"#/components/schemas/PercentageValues"},"experiment_count":{"format":"int64","type":"integer"},"experiment_scores":{"items":{"$ref":"#/components/schemas/FeedbackScoreAverage"},"type":"array"},"feedback_scores":{"items":{"$ref":"#/components/schemas/FeedbackScoreAverage"},"type":"array"},"pass_rate_avg":{"type":"number"},"passed_count_sum":{"format":"int64","type":"integer"},"total_count_sum":{"format":"int64","type":"integer"},"total_estimated_cost":{"type":"number"},"total_estimated_cost_avg":{"type":"number"},"trace_count":{"format":"int64","type":"integer"}},"type":"object"},"AlertPage_Public":{"properties":{"content":{"items":{"$ref":"#/components/schemas/Alert_Public"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"sortable_by":{"items":{"type":"string"},"type":"array"},"total":{"format":"int64","type":"integer"}},"type":"object"},"AlertTriggerConfig_Public":{"properties":{"alert_trigger_id":{"format":"uuid","readOnly":true,"type":"string"},"config_value":{"additionalProperties":{"type":"string"},"type":"object"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"group_index":{"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","type":"integer"},"id":{"format":"uuid","type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"type":{"enum":["scope:project","threshold:feedback_score","threshold:cost","threshold:latency","threshold:errors","filter:guardrail_type"],"type":"string"}},"required":["type"],"type":"object"},"AlertTriggerConfig_Write":{"properties":{"config_value":{"additionalProperties":{"type":"string"},"type":"object"},"group_index":{"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","type":"integer"},"id":{"format":"uuid","type":"string"},"type":{"enum":["scope:project","threshold:feedback_score","threshold:cost","threshold:latency","threshold:errors","filter:guardrail_type"],"type":"string"}},"required":["type"],"type":"object"},"AlertTrigger_Public":{"properties":{"alert_id":{"format":"uuid","readOnly":true,"type":"string"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"event_type":{"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"],"type":"string"},"id":{"format":"uuid","type":"string"},"trigger_configs":{"items":{"$ref":"#/components/schemas/AlertTriggerConfig_Public"},"type":"array"}},"required":["event_type"],"type":"object"},"AlertTrigger_Write":{"properties":{"event_type":{"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"],"type":"string"},"id":{"format":"uuid","type":"string"},"trigger_configs":{"items":{"$ref":"#/components/schemas/AlertTriggerConfig_Write"},"type":"array"}},"required":["event_type"],"type":"object"},"Alert_Public":{"properties":{"alert_type":{"enum":["general","slack","pagerduty"],"type":"string"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"enabled":{"type":"boolean"},"id":{"format":"uuid","type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"metadata":{"additionalProperties":{"type":"string"},"type":"object"},"name":{"maxLength":255,"minLength":0,"type":"string"},"project_id":{"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","type":"string"},"triggers":{"items":{"$ref":"#/components/schemas/AlertTrigger_Public"},"type":"array"},"webhook":{"$ref":"#/components/schemas/Webhook_Public"}},"required":["webhook"],"type":"object"},"Alert_Write":{"properties":{"alert_type":{"enum":["general","slack","pagerduty"],"type":"string"},"enabled":{"type":"boolean"},"id":{"format":"uuid","type":"string"},"metadata":{"additionalProperties":{"type":"string"},"type":"object"},"name":{"maxLength":255,"minLength":0,"type":"string"},"project_id":{"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","type":"string"},"triggers":{"items":{"$ref":"#/components/schemas/AlertTrigger_Write"},"type":"array"},"webhook":{"$ref":"#/components/schemas/Webhook_Write"}},"required":["webhook"],"type":"object"},"AnalyticsQueryRequest":{"properties":{"query":{"description":"Read-only ClickHouse SQL. Must return exactly one column named `result` produced via toJSONString(...)","minLength":1,"type":"string"}},"required":["query"],"type":"object"},"AnalyticsQueryResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/JsonNode"},"type":"array"}},"type":"object"},"AnnotationQueueAutomation":{"properties":{"conditions":{"$ref":"#/components/schemas/Conditions"},"enabled":{"type":"boolean"},"max_items_in_queue":{"format":"int32","type":"integer"}},"type":"object"},"AnnotationQueueAutomation_Public":{"properties":{"conditions":{"$ref":"#/components/schemas/Conditions_Public"},"enabled":{"type":"boolean"},"max_items_in_queue":{"format":"int32","type":"integer"}},"type":"object"},"AnnotationQueueAutomation_Write":{"properties":{"conditions":{"$ref":"#/components/schemas/Conditions_Write"},"enabled":{"type":"boolean"},"max_items_in_queue":{"format":"int32","type":"integer"}},"type":"object"},"AnnotationQueueBatch_Write":{"description":"Batch of annotation queues to create","properties":{"annotation_queues":{"description":"List of annotation queues to create","items":{"$ref":"#/components/schemas/AnnotationQueue_Write"},"maxItems":1000,"minItems":1,"type":"array","uniqueItems":true}},"required":["annotation_queues"],"type":"object"},"AnnotationQueueItemIds":{"properties":{"ids":{"items":{"format":"uuid","type":"string"},"maxItems":1000,"minItems":1,"type":"array","uniqueItems":true}},"required":["ids"],"type":"object"},"AnnotationQueueItemIds_Public":{"properties":{"ids":{"items":{"format":"uuid","type":"string"},"maxItems":1000,"minItems":1,"type":"array","uniqueItems":true}},"required":["ids"],"type":"object"},"AnnotationQueueItem_Public":{"properties":{"id":{"format":"uuid","type":"string"},"source":{"enum":["manual","automated"],"type":"string"}},"type":"object"},"AnnotationQueueItems_Public":{"properties":{"content":{"items":{"$ref":"#/components/schemas/AnnotationQueueItem_Public"},"type":"array"}},"type":"object"},"AnnotationQueuePage_Public":{"properties":{"content":{"items":{"$ref":"#/components/schemas/AnnotationQueue_Public"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"sortableBy":{"items":{"type":"string"},"type":"array"},"total":{"format":"int64","type":"integer"}},"type":"object"},"AnnotationQueueReviewer_Public":{"properties":{"status":{"format":"int64","type":"integer"},"username":{"type":"string"}},"readOnly":true,"type":"object"},"AnnotationQueueUpdate":{"properties":{"annotators_per_item":{"format":"int32","maximum":1000,"minimum":1,"type":"integer"},"automation":{"$ref":"#/components/schemas/AnnotationQueueAutomation"},"comments_enabled":{"type":"boolean"},"description":{"type":"string"},"feedback_definition_names":{"items":{"minLength":1,"type":"string"},"type":"array"},"instructions":{"type":"string"},"lock_timeout_seconds":{"format":"int32","maximum":3600,"minimum":1,"type":"integer"},"name":{"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"}},"type":"object"},"AnnotationQueue_Public":{"properties":{"annotators_per_item":{"format":"int32","maximum":1000,"minimum":1,"type":"integer"},"automation":{"$ref":"#/components/schemas/AnnotationQueueAutomation_Public"},"comments_enabled":{"type":"boolean"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"description":{"type":"string"},"feedback_definition_names":{"items":{"type":"string"},"type":"array"},"feedback_scores":{"items":{"$ref":"#/components/schemas/FeedbackScoreAverage_Public"},"readOnly":true,"type":"array"},"id":{"format":"uuid","type":"string"},"instructions":{"type":"string"},"items_count":{"format":"int64","readOnly":true,"type":"integer"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"lock_timeout_seconds":{"format":"int32","maximum":3600,"minimum":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"project_id":{"format":"uuid","type":"string"},"project_name":{"readOnly":true,"type":"string"},"reviewers":{"items":{"$ref":"#/components/schemas/AnnotationQueueReviewer_Public"},"readOnly":true,"type":"array"},"scope":{"enum":["trace","thread"],"type":"string"}},"required":["name","project_id","scope"],"type":"object"},"AnnotationQueue_Write":{"description":"List of annotation queues to create","properties":{"annotators_per_item":{"format":"int32","maximum":1000,"minimum":1,"type":"integer"},"automation":{"$ref":"#/components/schemas/AnnotationQueueAutomation_Write"},"comments_enabled":{"type":"boolean"},"description":{"type":"string"},"feedback_definition_names":{"items":{"type":"string"},"type":"array"},"id":{"format":"uuid","type":"string"},"instructions":{"type":"string"},"lock_timeout_seconds":{"format":"int32","maximum":3600,"minimum":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"project_id":{"format":"uuid","type":"string"},"scope":{"enum":["trace","thread"],"type":"string"}},"required":["name","project_id","scope"],"type":"object"},"AssertionResult":{"properties":{"passed":{"type":"boolean"},"reason":{"type":"string"},"value":{"type":"string"}},"readOnly":true,"type":"object"},"AssertionResultBatch":{"properties":{"assertion_results":{"items":{"$ref":"#/components/schemas/AssertionResultBatchItem"},"maxItems":1000,"minItems":1,"type":"array"},"entity_type":{"enum":["TRACE","SPAN","THREAD"],"type":"string"}},"required":["assertion_results","entity_type"],"type":"object"},"AssertionResultBatchItem":{"properties":{"entity_id":{"format":"uuid","type":"string"},"name":{"minLength":1,"type":"string"},"project_id":{"format":"uuid","type":"string"},"project_name":{"description":"If null, the default project is used","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"reason":{"type":"string"},"source":{"enum":["ui","sdk","online_scoring"],"type":"string"},"status":{"enum":["passed","failed"],"type":"string"}},"required":["entity_id","name","source","status"],"type":"object"},"AssertionResult_Compare":{"properties":{"passed":{"type":"boolean"},"reason":{"type":"string"},"value":{"type":"string"}},"readOnly":true,"type":"object"},"AssertionScoreAverage_Public":{"description":"Per-assertion average pass rates for test suite experiments. Null for regular experiments.","properties":{"name":{"minLength":1,"type":"string"},"value":{"type":"number"}},"readOnly":true,"required":["name","value"],"type":"object"},"AssistantMessage":{"properties":{"content":{"type":"string"},"functionCall":{"$ref":"#/components/schemas/FunctionCall"},"name":{"type":"string"},"reasoningContent":{"type":"string"},"refusal":{"type":"string"},"role":{"enum":["system","user","assistant","tool","function"],"type":"string"},"toolCalls":{"items":{"$ref":"#/components/schemas/ToolCall"},"type":"array"}},"type":"object"},"Attachment":{"properties":{"file_name":{"type":"string"},"file_size":{"format":"int64","type":"integer"},"link":{"type":"string"},"mime_type":{"type":"string"}},"required":["file_name","file_size","mime_type"],"type":"object"},"AttachmentPage":{"properties":{"content":{"items":{"$ref":"#/components/schemas/Attachment"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"sortableBy":{"items":{"type":"string"},"type":"array"},"total":{"format":"int64","type":"integer"}},"type":"object"},"AuthDetailsHolder":{"type":"object"},"AuthorizationServerMetadata":{"properties":{"authorization_endpoint":{"type":"string"},"code_challenge_methods_supported":{"items":{"type":"string"},"type":"array"},"grant_types_supported":{"items":{"type":"string"},"type":"array"},"issuer":{"type":"string"},"registration_endpoint":{"type":"string"},"response_types_supported":{"items":{"type":"string"},"type":"array"},"revocation_endpoint":{"type":"string"},"token_endpoint":{"type":"string"},"token_endpoint_auth_methods_supported":{"items":{"type":"string"},"type":"array"}},"type":"object"},"AuthorizeContext":{"properties":{"client_logo_uri":{"type":"string"},"client_name":{"type":"string"},"csrf_token":{"type":"string"},"workspaces":{"items":{"$ref":"#/components/schemas/WorkspaceInfo"},"type":"array"}},"type":"object"},"AutomationRuleEvaluatorObjectObject_Public":{"discriminator":{"mapping":{"llm_as_judge":"#/components/schemas/AutomationRuleEvaluatorLlmAsJudge_Public","span_llm_as_judge":"#/components/schemas/AutomationRuleEvaluatorSpanLlmAsJudge_Public","span_user_defined_metric_python":"#/components/schemas/AutomationRuleEvaluatorSpanUserDefinedMetricPython_Public","trace_thread_llm_as_judge":"#/components/schemas/AutomationRuleEvaluatorTraceThreadLlmAsJudge_Public","trace_thread_user_defined_metric_python":"#/components/schemas/AutomationRuleEvaluatorTraceThreadUserDefinedMetricPython_Public","user_defined_metric_python":"#/components/schemas/AutomationRuleEvaluatorUserDefinedMetricPython_Public"},"propertyName":"type"},"properties":{"action":{"enum":["evaluator","annotation_queue_router"],"type":"string"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"enabled":{"type":"boolean"},"id":{"format":"uuid","readOnly":true,"type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"name":{"maxLength":150,"minLength":0,"type":"string"},"project_id":{"description":"Primary project ID (legacy field for backwards compatibility)","format":"uuid","type":"string"},"project_name":{"description":"Primary project name (legacy field for backwards compatibility)","readOnly":true,"type":"string"},"projects":{"description":"Projects assigned to this rule (unique, sorted alphabetically by name)","items":{"$ref":"#/components/schemas/ProjectReference_Public"},"readOnly":true,"type":"array","uniqueItems":true},"sampling_rate":{"description":"Fraction of production (SDK-logged) items this rule scores, from 0 to 1. Trace rules ignore this value for experiment, playground and optimization traces and score them in full; span and thread rules only ever evaluate SDK-logged data.","exclusiveMaximum":false,"exclusiveMinimum":false,"format":"float","maximum":1,"minimum":0,"type":"number"},"trigger_scope":{"description":"Controls whether the rule fires on production traces, experiment traces, or both. Defaults to 'production' if omitted.","enum":["production","experiment","both"],"type":"string"},"type":{"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"],"type":"string"}},"required":["action","name","type"],"type":"object"},"AutomationRuleEvaluatorPage_Public":{"properties":{"content":{"items":{"$ref":"#/components/schemas/AutomationRuleEvaluatorObjectObject_Public"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"sortable_by":{"items":{"type":"string"},"type":"array"},"total":{"format":"int64","type":"integer"}},"type":"object"},"AutomationRuleEvaluatorUpdate":{"discriminator":{"mapping":{"llm_as_judge":"#/components/schemas/AutomationRuleEvaluatorUpdateLlmAsJudge","span_llm_as_judge":"#/components/schemas/AutomationRuleEvaluatorUpdateSpanLlmAsJudge","span_user_defined_metric_python":"#/components/schemas/AutomationRuleEvaluatorUpdateSpanUserDefinedMetricPython","trace_thread_llm_as_judge":"#/components/schemas/AutomationRuleEvaluatorUpdateTraceThreadLlmAsJudge","trace_thread_user_defined_metric_python":"#/components/schemas/AutomationRuleEvaluatorUpdateTraceThreadUserDefinedMetricPython","user_defined_metric_python":"#/components/schemas/AutomationRuleEvaluatorUpdateUserDefinedMetricPython"},"propertyName":"type"},"properties":{"action":{"enum":["evaluator","annotation_queue_router"],"type":"string"},"enabled":{"type":"boolean"},"name":{"maxLength":150,"minLength":0,"type":"string"},"project_id":{"description":"Primary project ID (legacy field, maintained for backwards compatibility)","format":"uuid","type":"string"},"project_ids":{"description":"Multiple project IDs (new field for multi-project support)","items":{"description":"Multiple project IDs (new field for multi-project support)","format":"uuid","type":"string"},"type":"array","uniqueItems":true},"sampling_rate":{"description":"Fraction of production (SDK-logged) items this rule scores, from 0 to 1. Trace rules ignore this value for experiment, playground and optimization traces and score them in full; span and thread rules only ever evaluate SDK-logged data.","exclusiveMaximum":false,"exclusiveMinimum":false,"format":"float","maximum":1,"minimum":0,"type":"number"},"trigger_scope":{"enum":["production","experiment","both"],"type":"string"},"type":{"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"],"type":"string"}},"required":["action","name"],"type":"object"},"AutomationRuleEvaluator_Public":{"discriminator":{"mapping":{"llm_as_judge":"#/components/schemas/AutomationRuleEvaluatorLlmAsJudge_Public","span_llm_as_judge":"#/components/schemas/AutomationRuleEvaluatorSpanLlmAsJudge_Public","span_user_defined_metric_python":"#/components/schemas/AutomationRuleEvaluatorSpanUserDefinedMetricPython_Public","trace_thread_llm_as_judge":"#/components/schemas/AutomationRuleEvaluatorTraceThreadLlmAsJudge_Public","trace_thread_user_defined_metric_python":"#/components/schemas/AutomationRuleEvaluatorTraceThreadUserDefinedMetricPython_Public","user_defined_metric_python":"#/components/schemas/AutomationRuleEvaluatorUserDefinedMetricPython_Public"},"propertyName":"type"},"properties":{"action":{"enum":["evaluator","annotation_queue_router"],"type":"string"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"enabled":{"type":"boolean"},"id":{"format":"uuid","readOnly":true,"type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"name":{"maxLength":150,"minLength":0,"type":"string"},"project_id":{"description":"Primary project ID (legacy field for backwards compatibility)","format":"uuid","type":"string"},"project_name":{"description":"Primary project name (legacy field for backwards compatibility)","readOnly":true,"type":"string"},"projects":{"description":"Projects assigned to this rule (unique, sorted alphabetically by name)","items":{"$ref":"#/components/schemas/ProjectReference_Public"},"readOnly":true,"type":"array","uniqueItems":true},"sampling_rate":{"description":"Fraction of production (SDK-logged) items this rule scores, from 0 to 1. Trace rules ignore this value for experiment, playground and optimization traces and score them in full; span and thread rules only ever evaluate SDK-logged data.","exclusiveMaximum":false,"exclusiveMinimum":false,"format":"float","maximum":1,"minimum":0,"type":"number"},"trigger_scope":{"description":"Controls whether the rule fires on production traces, experiment traces, or both. Defaults to 'production' if omitted.","enum":["production","experiment","both"],"type":"string"},"type":{"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"],"type":"string"}},"required":["action","name","type"],"type":"object"},"AutomationRuleEvaluator_Write":{"discriminator":{"mapping":{"llm_as_judge":"#/components/schemas/AutomationRuleEvaluatorLlmAsJudge_Write","span_llm_as_judge":"#/components/schemas/AutomationRuleEvaluatorSpanLlmAsJudge_Write","span_user_defined_metric_python":"#/components/schemas/AutomationRuleEvaluatorSpanUserDefinedMetricPython_Write","trace_thread_llm_as_judge":"#/components/schemas/AutomationRuleEvaluatorTraceThreadLlmAsJudge_Write","trace_thread_user_defined_metric_python":"#/components/schemas/AutomationRuleEvaluatorTraceThreadUserDefinedMetricPython_Write","user_defined_metric_python":"#/components/schemas/AutomationRuleEvaluatorUserDefinedMetricPython_Write"},"propertyName":"type"},"properties":{"action":{"enum":["evaluator","annotation_queue_router"],"type":"string"},"enabled":{"type":"boolean"},"name":{"maxLength":150,"minLength":0,"type":"string"},"project_id":{"description":"Primary project ID (legacy field for backwards compatibility)","format":"uuid","type":"string"},"project_ids":{"description":"Project IDs for write operations (used when creating/updating rules)","items":{"description":"Project IDs for write operations (used when creating/updating rules)","format":"uuid","type":"string"},"type":"array","uniqueItems":true},"sampling_rate":{"description":"Fraction of production (SDK-logged) items this rule scores, from 0 to 1. Trace rules ignore this value for experiment, playground and optimization traces and score them in full; span and thread rules only ever evaluate SDK-logged data.","exclusiveMaximum":false,"exclusiveMinimum":false,"format":"float","maximum":1,"minimum":0,"type":"number"},"trigger_scope":{"description":"Controls whether the rule fires on production traces, experiment traces, or both. Defaults to 'production' if omitted.","enum":["production","experiment","both"],"type":"string"},"type":{"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"],"type":"string"}},"required":["action","name","type"],"type":"object"},"BatchDelete":{"properties":{"ids":{"items":{"format":"uuid","type":"string"},"maxItems":1000,"minItems":1,"type":"array","uniqueItems":true}},"required":["ids"],"type":"object"},"BatchDeleteByProject":{"properties":{"ids":{"description":"Ids of the traces to delete","items":{"description":"Ids of the traces to delete","format":"uuid","type":"string"},"maxItems":1000,"minItems":1,"type":"array","uniqueItems":true},"project_id":{"description":"Optional. Scopes the deletion to this project. When omitted, each trace's owning project is resolved automatically and the trace is deleted under its full key, so a trace can be deleted without knowing its project.","format":"uuid","type":"string"}},"required":["ids"],"type":"object"},"BiInformation":{"properties":{"count":{"format":"int64","type":"integer"},"user":{"type":"string"},"workspace_id":{"type":"string"}},"type":"object"},"BiInformationResponse":{"properties":{"bi_information":{"items":{"$ref":"#/components/schemas/BiInformation"},"type":"array"}},"type":"object"},"BlueprintPage_History":{"properties":{"content":{"items":{"$ref":"#/components/schemas/AgentBlueprint_History"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"total":{"format":"int64","type":"integer"}},"type":"object"},"BreakdownConfig":{"properties":{"field":{"enum":["none","tags","metadata","name","error_info","error_type","model","provider","type","guardrail_name"],"type":"string"},"metadata_key":{"type":"string"},"sub_metric":{"type":"string"}},"type":"object"},"BreakdownConfig_Public":{"properties":{"field":{"enum":["none","tags","metadata","name","error_info","error_type","model","provider","type","guardrail_name"],"type":"string"},"metadata_key":{"type":"string"},"sub_metric":{"type":"string"}},"type":"object"},"BridgeCommand":{"properties":{"args":{"$ref":"#/components/schemas/JsonNode"},"command_id":{"format":"uuid","type":"string"},"completed_at":{"format":"date-time","type":"string"},"duration_ms":{"format":"int64","type":"integer"},"error":{"$ref":"#/components/schemas/JsonNode"},"picked_up_at":{"format":"date-time","type":"string"},"result":{"$ref":"#/components/schemas/JsonNode"},"runner_id":{"format":"uuid","type":"string"},"status":{"enum":["pending","picked_up","completed","failed","timed_out"],"type":"string"},"submitted_at":{"format":"date-time","type":"string"},"timeout_seconds":{"format":"int32","type":"integer"},"type":{"enum":["ReadFile","WriteFile","EditFile","ListFiles","SearchFiles","Exec"],"type":"string"}},"type":"object"},"BridgeCommandBatchResponse":{"properties":{"commands":{"items":{"$ref":"#/components/schemas/BridgeCommandItem"},"type":"array"}},"type":"object"},"BridgeCommandItem":{"properties":{"args":{"$ref":"#/components/schemas/JsonNode"},"command_id":{"format":"uuid","type":"string"},"submitted_at":{"format":"date-time","type":"string"},"timeout_seconds":{"format":"int32","type":"integer"},"type":{"enum":["ReadFile","WriteFile","EditFile","ListFiles","SearchFiles","Exec"],"type":"string"}},"type":"object"},"BridgeCommandNextRequest":{"properties":{"max_commands":{"format":"int32","type":"integer"}},"type":"object"},"BridgeCommandResultRequest":{"properties":{"duration_ms":{"format":"int64","type":"integer"},"error":{"$ref":"#/components/schemas/JsonNode"},"result":{"$ref":"#/components/schemas/JsonNode"},"status":{"enum":["pending","picked_up","completed","failed","timed_out"],"type":"string"}},"required":["status"],"type":"object"},"BridgeCommandSubmitRequest":{"properties":{"args":{"$ref":"#/components/schemas/JsonNode"},"timeout_seconds":{"format":"int32","type":"integer"},"type":{"enum":["ReadFile","WriteFile","EditFile","ListFiles","SearchFiles","Exec"],"type":"string"}},"required":["args","type"],"type":"object"},"BridgeCommandSubmitResponse":{"properties":{"command_id":{"format":"uuid","type":"string"}},"type":"object"},"ChatCompletionChoice":{"properties":{"delta":{"$ref":"#/components/schemas/Delta"},"finishReason":{"type":"string"},"index":{"format":"int32","type":"integer"},"logprobs":{"$ref":"#/components/schemas/LogProbs"},"message":{"$ref":"#/components/schemas/AssistantMessage"}},"type":"object"},"ChatCompletionRequest":{"properties":{"frequencyPenalty":{"format":"double","type":"number"},"functionCall":{"$ref":"#/components/schemas/FunctionCall"},"functions":{"items":{"$ref":"#/components/schemas/Function"},"type":"array"},"logitBias":{"additionalProperties":{"format":"int32","type":"integer"},"type":"object"},"logprobs":{"type":"boolean"},"maxCompletionTokens":{"format":"int32","type":"integer"},"maxTokens":{"format":"int32","type":"integer"},"messages":{"items":{"$ref":"#/components/schemas/Message"},"type":"array"},"metadata":{"additionalProperties":{"type":"string"},"type":"object"},"model":{"type":"string"},"n":{"format":"int32","type":"integer"},"parallelToolCalls":{"type":"boolean"},"presencePenalty":{"format":"double","type":"number"},"reasoningEffort":{"type":"string"},"responseFormat":{"$ref":"#/components/schemas/ResponseFormat"},"seed":{"format":"int32","type":"integer"},"serviceTier":{"type":"string"},"stop":{"items":{"type":"string"},"type":"array"},"store":{"type":"boolean"},"stream":{"type":"boolean"},"streamOptions":{"$ref":"#/components/schemas/StreamOptions"},"temperature":{"format":"double","type":"number"},"toolChoice":{"type":"object"},"tools":{"items":{"$ref":"#/components/schemas/Tool"},"type":"array"},"topLogprobs":{"format":"int32","type":"integer"},"topP":{"format":"double","type":"number"},"user":{"type":"string"}},"type":"object"},"ChatCompletionResponse":{"properties":{"choices":{"items":{"$ref":"#/components/schemas/ChatCompletionChoice"},"type":"array"},"created":{"format":"int64","type":"integer"},"id":{"type":"string"},"model":{"type":"string"},"serviceTier":{"type":"string"},"systemFingerprint":{"type":"string"},"usage":{"$ref":"#/components/schemas/Usage"}},"type":"object"},"Check_Public":{"properties":{"name":{"enum":["TOPIC","PII","LLM_JUDGE","PROMPT_INJECTION","CUSTOM_CLASSIFIER"],"type":"string"},"result":{"enum":["passed","failed"],"type":"string"}},"type":"object"},"ClientRegistrationRequest":{"properties":{"client_name":{"maxLength":255,"minLength":0,"type":"string"},"client_uri":{"type":"string"},"logo_uri":{"type":"string"},"redirect_uris":{"items":{"maxLength":2048,"minLength":0,"type":"string"},"maxItems":10,"minItems":0,"type":"array","uniqueItems":true},"software_id":{"type":"string"},"software_version":{"type":"string"}},"required":["client_name","redirect_uris"],"type":"object"},"ClientRegistrationResponse":{"properties":{"client_id":{"type":"string"},"client_id_issued_at":{"format":"int64","type":"integer"},"client_name":{"type":"string"},"client_uri":{"type":"string"},"grant_types":{"items":{"type":"string"},"type":"array"},"logo_uri":{"type":"string"},"redirect_uris":{"items":{"type":"string"},"type":"array","uniqueItems":true},"response_types":{"items":{"type":"string"},"type":"array"},"software_id":{"type":"string"},"software_version":{"type":"string"},"token_endpoint_auth_method":{"type":"string"}},"type":"object"},"Column":{"properties":{"filterField":{"description":"The field to use for filtering","readOnly":true,"type":"string"},"filter_field_prefix":{"type":"string"},"name":{"type":"string"},"types":{"items":{"enum":["string","number","object","boolean","array","null"],"type":"string"},"type":"array","uniqueItems":true}},"type":"object"},"Column_Compare":{"properties":{"filterField":{"description":"The field to use for filtering","readOnly":true,"type":"string"},"filter_field_prefix":{"type":"string"},"name":{"type":"string"},"types":{"items":{"enum":["string","number","object","boolean","array","null"],"type":"string"},"type":"array","uniqueItems":true}},"type":"object"},"Column_Public":{"properties":{"filterField":{"description":"The field to use for filtering","readOnly":true,"type":"string"},"filter_field_prefix":{"type":"string"},"name":{"type":"string"},"types":{"items":{"enum":["string","number","object","boolean","array","null"],"type":"string"},"type":"array","uniqueItems":true}},"type":"object"},"Comment":{"properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"id":{"format":"uuid","readOnly":true,"type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"source_queue_id":{"format":"uuid","type":"string"},"text":{"minLength":1,"type":"string"}},"required":["text"],"type":"object"},"Comment_Compare":{"properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"id":{"format":"uuid","readOnly":true,"type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"source_queue_id":{"format":"uuid","type":"string"},"text":{"minLength":1,"type":"string"}},"readOnly":true,"required":["text"],"type":"object"},"Comment_Public":{"properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"id":{"format":"uuid","readOnly":true,"type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"source_queue_id":{"format":"uuid","type":"string"},"text":{"minLength":1,"type":"string"}},"readOnly":true,"required":["text"],"type":"object"},"CompleteMultipartUploadRequest":{"properties":{"container_id":{"format":"uuid","readOnly":true,"type":"string"},"entity_id":{"format":"uuid","type":"string"},"entity_type":{"enum":["trace","span"],"type":"string"},"file_name":{"minLength":1,"type":"string"},"file_size":{"format":"int64","type":"integer"},"mime_type":{"type":"string"},"project_name":{"description":"If null, the default project is used","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"upload_id":{"minLength":1,"type":"string"},"uploaded_file_parts":{"items":{"$ref":"#/components/schemas/MultipartUploadPart"},"type":"array"}},"required":["entity_id","entity_type","file_name","file_size","upload_id","uploaded_file_parts"],"type":"object"},"CompletionTokensDetails":{"properties":{"reasoningTokens":{"format":"int32","type":"integer"}},"type":"object"},"ConditionGroup":{"properties":{"conditions":{"items":{"$ref":"#/components/schemas/ScoreCondition"},"maxItems":5,"minItems":0,"type":"array"}},"required":["conditions"],"type":"object"},"ConditionGroup_Public":{"properties":{"conditions":{"items":{"$ref":"#/components/schemas/ScoreCondition_Public"},"maxItems":5,"minItems":0,"type":"array"}},"required":["conditions"],"type":"object"},"ConditionGroup_Write":{"properties":{"conditions":{"items":{"$ref":"#/components/schemas/ScoreCondition_Write"},"maxItems":5,"minItems":0,"type":"array"}},"required":["conditions"],"type":"object"},"Conditions":{"properties":{"groups":{"items":{"$ref":"#/components/schemas/ConditionGroup"},"maxItems":5,"minItems":0,"type":"array"}},"required":["groups"],"type":"object"},"Conditions_Public":{"properties":{"groups":{"items":{"$ref":"#/components/schemas/ConditionGroup_Public"},"maxItems":5,"minItems":0,"type":"array"}},"required":["groups"],"type":"object"},"Conditions_Write":{"properties":{"groups":{"items":{"$ref":"#/components/schemas/ConditionGroup_Write"},"maxItems":5,"minItems":0,"type":"array"}},"required":["groups"],"type":"object"},"ConsentRequest":{"properties":{"client_id":{"minLength":1,"type":"string"},"code_challenge":{"minLength":1,"type":"string"},"code_challenge_method":{"minLength":1,"pattern":"S256","type":"string"},"csrf":{"type":"string"},"redirect_uri":{"minLength":1,"type":"string"},"resource":{"minLength":1,"type":"string"},"state":{"type":"string"},"workspace_id":{"type":"string"},"workspace_name":{"type":"string"}},"required":["client_id","code_challenge","code_challenge_method","redirect_uri","resource"],"type":"object"},"ConsentResponse":{"properties":{"redirect_to":{"type":"string"}},"type":"object"},"CreateDatasetItemsFromSpansRequest":{"properties":{"enrichment_options":{"$ref":"#/components/schemas/SpanEnrichmentOptions"},"evaluators":{"description":"Optional evaluators to apply to the created items","items":{"$ref":"#/components/schemas/EvaluatorItem"},"type":"array"},"execution_policy":{"$ref":"#/components/schemas/ExecutionPolicy"},"field_mappings":{"additionalProperties":{"description":"Optional mapping of dataset item field name to a path into the span, e.g. 'input.input_text'. Takes precedence over the fields produced by enrichment_options. Ignored for test suite datasets.","type":"string"},"description":"Optional mapping of dataset item field name to a path into the span, e.g. 'input.input_text'. Takes precedence over the fields produced by enrichment_options. Ignored for test suite datasets.","type":"object"},"span_ids":{"description":"Set of span IDs to add to the dataset","items":{"description":"Set of span IDs to add to the dataset","format":"uuid","type":"string"},"minItems":1,"type":"array","uniqueItems":true}},"required":["enrichment_options","span_ids"],"type":"object"},"CreateDatasetItemsFromTracesRequest":{"properties":{"enrichment_options":{"$ref":"#/components/schemas/TraceEnrichmentOptions"},"evaluators":{"description":"Optional evaluators to apply to the created items","items":{"$ref":"#/components/schemas/EvaluatorItem"},"type":"array"},"execution_policy":{"$ref":"#/components/schemas/ExecutionPolicy"},"field_mappings":{"additionalProperties":{"description":"Optional mapping of dataset item field name to a path into the trace, e.g. 'input.input_text'. Takes precedence over the fields produced by enrichment_options. Ignored for test suite datasets.","type":"string"},"description":"Optional mapping of dataset item field name to a path into the trace, e.g. 'input.input_text'. Takes precedence over the fields produced by enrichment_options. Ignored for test suite datasets.","type":"object"},"trace_ids":{"description":"Set of trace IDs to add to the dataset","items":{"description":"Set of trace IDs to add to the dataset","format":"uuid","type":"string"},"minItems":1,"type":"array","uniqueItems":true}},"required":["enrichment_options","trace_ids"],"type":"object"},"CreateLocalRunnerJobRequest":{"properties":{"agent_name":{"minLength":1,"type":"string"},"blueprint_name":{"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"inputs":{"$ref":"#/components/schemas/JsonNode"},"mask_id":{"deprecated":true,"description":"Deprecated. Use prompt_masks to pass one or more mask overlays keyed by prompt id.","format":"uuid","type":"string"},"metadata":{"$ref":"#/components/schemas/LocalRunnerJobMetadata"},"project_id":{"format":"uuid","type":"string"},"prompt_masks":{"additionalProperties":{"description":"Mask overlays to apply during agent execution, keyed by prompt id.","format":"uuid","type":"string"},"description":"Mask overlays to apply during agent execution, keyed by prompt id.","type":"object"}},"required":["agent_name","project_id"],"type":"object"},"CreatePromptVersion_Detail":{"properties":{"name":{"minLength":1,"type":"string"},"project_id":{"description":"Project ID. Takes precedence over project_name when both are provided.","format":"uuid","type":"string"},"project_name":{"description":"If provided, scopes the prompt to the specified project. Ignored when project_id is provided.","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"template_structure":{"default":"text","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.","enum":["text","chat"],"type":"string"},"version":{"$ref":"#/components/schemas/PromptVersion_Detail"}},"required":["name","version"],"type":"object"},"CreateSessionRequest":{"properties":{"activation_key":{"maxLength":44,"minLength":43,"type":"string"},"project_id":{"format":"uuid","type":"string"},"ttl_seconds":{"format":"int32","maximum":600,"minimum":60,"type":"integer"},"type":{"enum":["connect","endpoint"],"type":"string"}},"required":["activation_key","project_id","type"],"type":"object"},"CreateSessionResponse":{"properties":{"runner_id":{"format":"uuid","type":"string"},"session_id":{"format":"uuid","type":"string"}},"type":"object"},"Credential":{"description":"Fields sent to the token URL. Values flagged as secret are write-only: they read back as the '__SECRET__' sentinel","properties":{"key":{"maxLength":250,"minLength":0,"type":"string"},"secret":{"description":"Secret values are encrypted at rest and never read back; once true it cannot be unset","type":"boolean"},"value":{"maxLength":2000,"minLength":0,"type":"string"}},"required":["key"],"type":"object"},"Credential_Public":{"description":"Fields sent to the token URL. Values flagged as secret are write-only: they read back as the '__SECRET__' sentinel","properties":{"key":{"maxLength":250,"minLength":0,"type":"string"},"secret":{"description":"Secret values are encrypted at rest and never read back; once true it cannot be unset","type":"boolean"},"value":{"maxLength":2000,"minLength":0,"type":"string"}},"required":["key"],"type":"object"},"Credential_Write":{"description":"Fields sent to the token URL. Values flagged as secret are write-only: they read back as the '__SECRET__' sentinel","properties":{"key":{"maxLength":250,"minLength":0,"type":"string"},"secret":{"description":"Secret values are encrypted at rest and never read back; once true it cannot be unset","type":"boolean"},"value":{"maxLength":2000,"minLength":0,"type":"string"}},"required":["key"],"type":"object"},"DashboardPage_Public":{"properties":{"content":{"items":{"$ref":"#/components/schemas/Dashboard_Public"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"sortable_by":{"items":{"type":"string"},"type":"array"},"total":{"format":"int64","type":"integer"}},"type":"object"},"DashboardUpdate_Public":{"properties":{"config":{"$ref":"#/components/schemas/JsonNode_Public"},"description":{"maxLength":1000,"minLength":0,"type":"string"},"name":{"maxLength":120,"minLength":1,"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"type":{"enum":["multi_project","experiments"],"type":"string"}},"type":"object"},"Dashboard_Public":{"properties":{"config":{"$ref":"#/components/schemas/JsonNode_Public"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"description":{"maxLength":1000,"minLength":0,"type":"string"},"id":{"format":"uuid","readOnly":true,"type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"name":{"maxLength":120,"minLength":1,"type":"string"},"project_id":{"description":"Project ID. Takes precedence over project_name when both are provided.","format":"uuid","type":"string"},"scope":{"enum":["workspace","insights"],"readOnly":true,"type":"string"},"slug":{"readOnly":true,"type":"string"},"type":{"enum":["multi_project","experiments"],"type":"string"},"workspace_id":{"readOnly":true,"type":"string"}},"required":["config","name"],"type":"object"},"Dashboard_Write":{"properties":{"config":{"$ref":"#/components/schemas/JsonNode_Write"},"description":{"maxLength":1000,"minLength":0,"type":"string"},"name":{"maxLength":120,"minLength":1,"type":"string"},"project_id":{"description":"Project ID. Takes precedence over project_name when both are provided.","format":"uuid","type":"string"},"project_name":{"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.","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"type":{"enum":["multi_project","experiments"],"type":"string"}},"required":["config","name"],"type":"object"},"DataPointNumber_Public":{"properties":{"time":{"format":"date-time","type":"string"},"value":{"type":"number"}},"required":["time"],"type":"object"},"DatasetExpansionResponse":{"properties":{"generated_samples":{"description":"List of generated synthetic dataset items","items":{"$ref":"#/components/schemas/DatasetItem"},"type":"array"},"generation_time":{"description":"Generation timestamp","format":"date-time","readOnly":true,"type":"string"},"model":{"description":"Model used for generation","example":"gpt-4","type":"string"},"total_generated":{"description":"Total number of samples generated","example":10,"format":"int32","type":"integer"}},"type":"object"},"DatasetExpansion_Write":{"properties":{"custom_prompt":{"description":"Custom prompt to use for generation instead of auto-generated one","type":"string"},"max_completion_tokens":{"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","minimum":100,"type":"integer"},"model":{"description":"The model to use for synthetic data generation","example":"gpt-4","minLength":1,"type":"string"},"preserve_fields":{"description":"Fields to preserve patterns from original data","example":["input","expected_output"],"items":{"description":"Fields to preserve patterns from original data","example":"[\"input\",\"expected_output\"]","type":"string"},"type":"array"},"sample_count":{"description":"Number of synthetic samples to generate","example":10,"format":"int32","maximum":200,"minimum":1,"type":"integer"},"variation_instructions":{"description":"Additional instructions for data variation","example":"Create variations that test edge cases","type":"string"}},"required":["model"],"type":"object"},"DatasetExportJob_Public":{"properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"dataset_id":{"format":"uuid","readOnly":true,"type":"string"},"dataset_name":{"readOnly":true,"type":"string"},"error_message":{"readOnly":true,"type":"string"},"expires_at":{"format":"date-time","readOnly":true,"type":"string"},"file_path":{"readOnly":true,"type":"string"},"id":{"format":"uuid","readOnly":true,"type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"status":{"enum":["PENDING","PROCESSING","COMPLETED","FAILED"],"readOnly":true,"type":"string"},"viewed_at":{"format":"date-time","readOnly":true,"type":"string"}},"type":"object"},"DatasetIdentifier":{"properties":{"dataset_name":{"minLength":1,"type":"string"},"project_name":{"type":"string"}},"required":["dataset_name"],"type":"object"},"DatasetIdentifier_Public":{"properties":{"dataset_name":{"minLength":1,"type":"string"},"project_name":{"type":"string"}},"required":["dataset_name"],"type":"object"},"DatasetItem":{"properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"data":{"$ref":"#/components/schemas/JsonNode"},"dataset_id":{"format":"uuid","readOnly":true,"type":"string"},"dataset_item_id":{"description":"Deprecated.\nAlways equals 'id'.\nRetained for backward compatibility and will be removed in a future version\n","format":"uuid","readOnly":true,"type":"string"},"description":{"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"evaluators":{"items":{"$ref":"#/components/schemas/EvaluatorItem"},"type":"array"},"execution_policy":{"$ref":"#/components/schemas/ExecutionPolicy"},"experiment_items":{"items":{"$ref":"#/components/schemas/ExperimentItem"},"readOnly":true,"type":"array"},"id":{"description":"Stable item identifier.\nOn write, used as the upsert key.\nIf omitted, a new ID is generated.\nRemains the same across dataset versions\n","format":"uuid","type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"run_summaries_by_experiment":{"additionalProperties":{"$ref":"#/components/schemas/ExperimentRunSummary"},"readOnly":true,"type":"object"},"source":{"enum":["manual","trace","span","sdk"],"type":"string"},"span_id":{"format":"uuid","type":"string"},"tags":{"items":{"type":"string"},"type":"array","uniqueItems":true},"trace_id":{"format":"uuid","type":"string"}},"required":["data","source"],"type":"object"},"DatasetItemBatchUpdate":{"description":"Request to batch update multiple dataset items","properties":{"dataset_id":{"description":"Dataset ID. Required when using 'filters', optional when using 'ids'.","format":"uuid","type":"string"},"filters":{"items":{"$ref":"#/components/schemas/DatasetItemFilter"},"type":"array"},"ids":{"description":"List of dataset item IDs to update (max 1000). Mutually exclusive with 'filters'.","items":{"description":"List of dataset item IDs to update (max 1000). Mutually exclusive with 'filters'.","format":"uuid","type":"string"},"maxItems":1000,"minItems":1,"type":"array","uniqueItems":true},"merge_tags":{"description":"If true, merge tags with existing tags instead of replacing them. Default: false. When using 'filters', this is automatically set to true.","type":"boolean"},"update":{"$ref":"#/components/schemas/DatasetItemUpdate"}},"required":["update"],"type":"object"},"DatasetItemBatch_Write":{"properties":{"batch_group_id":{"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","type":"string"},"copy_from_dataset_id":{"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","type":"string"},"copy_from_version_id":{"description":"Optional. Version within copy_from_dataset_id to read carry-forward rows from. Required together with copy_from_dataset_id.","format":"uuid","type":"string"},"dataset_id":{"description":"If null, dataset_name must be provided","format":"uuid","type":"string"},"dataset_name":{"description":"If null, dataset_id must be provided","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"items":{"items":{"$ref":"#/components/schemas/DatasetItem_Write"},"maxItems":1000,"minItems":1,"type":"array"},"project_id":{"description":"Optional. Associates the batch with a project by ID. Takes precedence over project_name.","format":"uuid","type":"string"},"project_name":{"description":"Optional. Associates the batch with a project by name. Ignored if project_id is provided.","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"}},"required":["items"],"type":"object"},"DatasetItemChanges_Public":{"type":"object"},"DatasetItemFilter":{"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'.","properties":{"field":{"type":"string"},"key":{"type":"string"},"operator":{"enum":["contains","not_contains","starts_with","ends_with","=","!=",">",">=","<","<=","is_empty","is_not_empty","in","not_in"],"type":"string"},"value":{"type":"string"}},"type":"object"},"DatasetItemPage_Compare":{"properties":{"columns":{"items":{"$ref":"#/components/schemas/Column_Compare"},"type":"array","uniqueItems":true},"content":{"items":{"$ref":"#/components/schemas/DatasetItem_Compare"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"sortableBy":{"items":{"type":"string"},"type":"array"},"total":{"format":"int64","type":"integer"}},"type":"object"},"DatasetItemPage_Public":{"properties":{"columns":{"items":{"$ref":"#/components/schemas/Column_Public"},"type":"array","uniqueItems":true},"content":{"items":{"$ref":"#/components/schemas/DatasetItem_Public"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"sortableBy":{"items":{"type":"string"},"type":"array"},"total":{"format":"int64","type":"integer"}},"type":"object"},"DatasetItemStreamRequest":{"properties":{"dataset_name":{"minLength":1,"type":"string"},"dataset_version":{"type":"string"},"filters":{"type":"string"},"last_retrieved_id":{"format":"uuid","type":"string"},"project_name":{"type":"string"},"steam_limit":{"format":"int32","maximum":2000,"minimum":1,"type":"integer"}},"required":["dataset_name"],"type":"object"},"DatasetItemUpdate":{"description":"Dataset item update request","properties":{"clear_execution_policy":{"description":"When true, clears the item-level execution policy (falls back to dataset-level)","type":"boolean"},"data":{"$ref":"#/components/schemas/JsonNode"},"description":{"description":"Dataset item description","type":"string"},"evaluators":{"description":"Evaluators","items":{"$ref":"#/components/schemas/EvaluatorItem"},"type":"array"},"execution_policy":{"$ref":"#/components/schemas/ExecutionPolicy"},"expected_output":{"description":"Dataset item expected output","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"input":{"description":"Dataset item input","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"metadata":{"$ref":"#/components/schemas/JsonNode"},"tags":{"description":"Tags","items":{"description":"Tags","maxLength":100,"minLength":0,"type":"string"},"maxItems":50,"minItems":0,"type":"array","uniqueItems":true},"tags_to_add":{"description":"Tags to add","items":{"description":"Tags to add","maxLength":100,"minLength":0,"type":"string"},"maxItems":50,"minItems":0,"type":"array","uniqueItems":true},"tags_to_remove":{"description":"Tags to remove","items":{"description":"Tags to remove","maxLength":100,"minLength":0,"type":"string"},"maxItems":50,"minItems":0,"type":"array","uniqueItems":true}},"type":"object"},"DatasetItem_Compare":{"properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"data":{"$ref":"#/components/schemas/JsonNode"},"dataset_id":{"format":"uuid","readOnly":true,"type":"string"},"dataset_item_id":{"description":"Deprecated.\nAlways equals 'id'.\nRetained for backward compatibility and will be removed in a future version\n","format":"uuid","readOnly":true,"type":"string"},"description":{"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"evaluators":{"items":{"$ref":"#/components/schemas/EvaluatorItem_Compare"},"type":"array"},"execution_policy":{"$ref":"#/components/schemas/ExecutionPolicy_Compare"},"experiment_items":{"items":{"$ref":"#/components/schemas/ExperimentItem_Compare"},"readOnly":true,"type":"array"},"id":{"description":"Stable item identifier.\nOn write, used as the upsert key.\nIf omitted, a new ID is generated.\nRemains the same across dataset versions\n","format":"uuid","type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"run_summaries_by_experiment":{"additionalProperties":{"$ref":"#/components/schemas/ExperimentRunSummary_Compare"},"readOnly":true,"type":"object"},"source":{"enum":["manual","trace","span","sdk"],"type":"string"},"span_id":{"format":"uuid","type":"string"},"tags":{"items":{"type":"string"},"type":"array","uniqueItems":true},"trace_id":{"format":"uuid","type":"string"}},"required":["data","source"],"type":"object"},"DatasetItem_Public":{"properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"data":{"$ref":"#/components/schemas/JsonNode"},"dataset_id":{"format":"uuid","readOnly":true,"type":"string"},"dataset_item_id":{"description":"Deprecated.\nAlways equals 'id'.\nRetained for backward compatibility and will be removed in a future version\n","format":"uuid","readOnly":true,"type":"string"},"description":{"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"evaluators":{"items":{"$ref":"#/components/schemas/EvaluatorItem_Public"},"type":"array"},"execution_policy":{"$ref":"#/components/schemas/ExecutionPolicy_Public"},"experiment_items":{"items":{"$ref":"#/components/schemas/ExperimentItem_Public"},"readOnly":true,"type":"array"},"id":{"description":"Stable item identifier.\nOn write, used as the upsert key.\nIf omitted, a new ID is generated.\nRemains the same across dataset versions\n","format":"uuid","type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"run_summaries_by_experiment":{"additionalProperties":{"$ref":"#/components/schemas/ExperimentRunSummary_Public"},"readOnly":true,"type":"object"},"source":{"enum":["manual","trace","span","sdk"],"type":"string"},"span_id":{"format":"uuid","type":"string"},"tags":{"items":{"type":"string"},"type":"array","uniqueItems":true},"trace_id":{"format":"uuid","type":"string"}},"required":["data","source"],"type":"object"},"DatasetItem_Write":{"properties":{"data":{"$ref":"#/components/schemas/JsonNode"},"description":{"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"evaluators":{"items":{"$ref":"#/components/schemas/EvaluatorItem_Write"},"type":"array"},"execution_policy":{"$ref":"#/components/schemas/ExecutionPolicy_Write"},"id":{"description":"Stable item identifier.\nOn write, used as the upsert key.\nIf omitted, a new ID is generated.\nRemains the same across dataset versions\n","format":"uuid","type":"string"},"source":{"enum":["manual","trace","span","sdk"],"type":"string"},"span_id":{"format":"uuid","type":"string"},"tags":{"items":{"type":"string"},"type":"array","uniqueItems":true},"trace_id":{"format":"uuid","type":"string"}},"required":["data","source"],"type":"object"},"DatasetItemsDelete":{"description":"Request to delete multiple dataset items","properties":{"batch_group_id":{"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","type":"string"},"dataset_id":{"description":"Dataset ID to scope the deletion. Required when using 'filters'. Mutually exclusive with 'item_ids'.","format":"uuid","type":"string"},"filters":{"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"},"type":"array"},"item_ids":{"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":{"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","type":"string"},"maxItems":1000,"minItems":1,"type":"array","uniqueItems":true}},"type":"object"},"DatasetPage_Public":{"properties":{"content":{"items":{"$ref":"#/components/schemas/Dataset_Public"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"sortableBy":{"items":{"type":"string"},"type":"array"},"total":{"format":"int64","type":"integer"}},"type":"object"},"DatasetUpdate":{"properties":{"description":{"maxLength":255,"minLength":0,"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"name":{"minLength":1,"type":"string"},"tags":{"items":{"type":"string"},"type":"array","uniqueItems":true},"visibility":{"enum":["private","public"],"type":"string"}},"required":["name"],"type":"object"},"DatasetVersionDiff":{"properties":{"from_version":{"type":"string"},"statistics":{"$ref":"#/components/schemas/DatasetVersionDiffStats"},"to_version":{"type":"string"}},"type":"object"},"DatasetVersionDiffStats":{"properties":{"itemsAdded":{"format":"int32","type":"integer"},"itemsDeleted":{"format":"int32","type":"integer"},"itemsModified":{"format":"int32","type":"integer"},"itemsUnchanged":{"format":"int32","type":"integer"}},"type":"object"},"DatasetVersionPage_Public":{"properties":{"content":{"items":{"$ref":"#/components/schemas/DatasetVersion_Public"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"total":{"format":"int64","type":"integer"}},"type":"object"},"DatasetVersionRestore_Public":{"properties":{"version_ref":{"description":"Version hash or tag to restore from","minLength":1,"type":"string"}},"required":["version_ref"],"type":"object"},"DatasetVersionRetrieveRequest_Public":{"properties":{"version_name":{"description":"Version name in format 'vN' (e.g., 'v1', 'v373')","example":"v1","minLength":1,"pattern":"^v\\d+$","type":"string"}},"required":["version_name"],"type":"object"},"DatasetVersionSummary_Public":{"description":"Summary of the latest dataset version","properties":{"change_description":{"description":"Description of changes in this version","type":"string"},"id":{"description":"Unique identifier of the version","format":"uuid","type":"string"},"tags":{"description":"Tags associated with this version","items":{"description":"Tags associated with this version","type":"string"},"type":"array","uniqueItems":true},"version_hash":{"description":"Hash of the version content","type":"string"},"version_name":{"description":"Sequential version name formatted as 'v1', 'v2', etc.","type":"string"}},"readOnly":true,"type":"object"},"DatasetVersionTag":{"properties":{"tag":{"maxLength":100,"minLength":0,"type":"string"}},"required":["tag"],"type":"object"},"DatasetVersionUpdate_Public":{"properties":{"change_description":{"description":"Optional description of changes in this version","example":"Updated baseline version","type":"string"},"tags_to_add":{"description":"Optional list of tags to add to this version","example":["production","reviewed"],"items":{"description":"Optional list of tags to add to this version","example":"[\"production\",\"reviewed\"]","maxLength":100,"minLength":0,"type":"string"},"maxItems":100,"minItems":0,"type":"array"}},"type":"object"},"DatasetVersion_Public":{"properties":{"change_description":{"readOnly":true,"type":"string"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"dataset_id":{"format":"uuid","readOnly":true,"type":"string"},"evaluators":{"description":"Default evaluators for items in this version","items":{"$ref":"#/components/schemas/EvaluatorItem_Public"},"readOnly":true,"type":"array"},"execution_policy":{"$ref":"#/components/schemas/ExecutionPolicy_Public"},"id":{"format":"uuid","readOnly":true,"type":"string"},"is_latest":{"description":"Indicates whether this is the latest version of the dataset","readOnly":true,"type":"boolean"},"items_added":{"description":"Number of items added since last version","format":"int32","readOnly":true,"type":"integer"},"items_deleted":{"description":"Number of items deleted since last version","format":"int32","readOnly":true,"type":"integer"},"items_modified":{"description":"Number of items modified since last version","format":"int32","readOnly":true,"type":"integer"},"items_total":{"description":"Total number of items in this version","format":"int32","readOnly":true,"type":"integer"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"metadata":{"additionalProperties":{"readOnly":true,"type":"string"},"readOnly":true,"type":"object"},"tags":{"items":{"readOnly":true,"type":"string"},"readOnly":true,"type":"array","uniqueItems":true},"version_hash":{"readOnly":true,"type":"string"},"version_name":{"description":"Sequential version name formatted as 'v1', 'v2', etc.","readOnly":true,"type":"string"}},"type":"object"},"Dataset_Public":{"properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"dataset_items_count":{"format":"int64","readOnly":true,"type":"integer"},"description":{"maxLength":255,"minLength":0,"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"experiment_count":{"format":"int64","readOnly":true,"type":"integer"},"id":{"format":"uuid","type":"string"},"last_created_experiment_at":{"format":"date-time","readOnly":true,"type":"string"},"last_created_optimization_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"latest_version":{"$ref":"#/components/schemas/DatasetVersionSummary_Public"},"most_recent_experiment_at":{"format":"date-time","readOnly":true,"type":"string"},"most_recent_optimization_at":{"format":"date-time","readOnly":true,"type":"string"},"name":{"minLength":1,"type":"string"},"optimization_count":{"format":"int64","readOnly":true,"type":"integer"},"project_id":{"description":"Project ID. Takes precedence over project_name when both are provided.","format":"uuid","type":"string"},"status":{"enum":["unknown","processing","completed","failed"],"readOnly":true,"type":"string"},"tags":{"items":{"type":"string"},"type":"array","uniqueItems":true},"type":{"enum":["dataset","evaluation_suite"],"type":"string"},"visibility":{"enum":["private","public"],"type":"string"}},"required":["name"],"type":"object"},"Dataset_Write":{"properties":{"description":{"maxLength":255,"minLength":0,"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"id":{"format":"uuid","type":"string"},"name":{"minLength":1,"type":"string"},"project_id":{"description":"Project ID. Takes precedence over project_name when both are provided.","format":"uuid","type":"string"},"project_name":{"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.","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"tags":{"items":{"type":"string"},"type":"array","uniqueItems":true},"type":{"enum":["dataset","evaluation_suite"],"type":"string"},"visibility":{"enum":["private","public"],"type":"string"}},"required":["name"],"type":"object"},"DeleteFeedbackScore":{"properties":{"author":{"type":"string"},"name":{"minLength":1,"type":"string"},"source_queue_id":{"format":"uuid","type":"string"}},"required":["name"],"type":"object"},"DeleteIdsHolder":{"properties":{"ids":{"items":{"format":"uuid","type":"string"},"maxItems":1000,"minItems":1,"type":"array","uniqueItems":true}},"required":["ids"],"type":"object"},"DeleteThreadFeedbackScores":{"properties":{"author":{"type":"string"},"names":{"items":{"minLength":1,"type":"string"},"maxItems":1000,"minItems":1,"type":"array","uniqueItems":true},"project_name":{"minLength":1,"type":"string"},"source_queue_id":{"format":"uuid","type":"string"},"thread_id":{"minLength":1,"type":"string"}},"required":["names","project_name","thread_id"],"type":"object"},"DeleteTraceThreads":{"properties":{"project_id":{"description":"If null, project_name must be provided","format":"uuid","type":"string"},"project_name":{"description":"If null, project_id must be provided","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"thread_ids":{"items":{"minLength":1,"type":"string"},"maxItems":1000,"minItems":1,"type":"array"}},"required":["thread_ids"],"type":"object"},"Delta":{"properties":{"content":{"type":"string"},"functionCall":{"$ref":"#/components/schemas/FunctionCall"},"reasoningContent":{"type":"string"},"role":{"type":"string"},"toolCalls":{"items":{"$ref":"#/components/schemas/ToolCall"},"type":"array"}},"type":"object"},"EnvironmentPage_Public":{"properties":{"content":{"items":{"$ref":"#/components/schemas/Environment_Public"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"sortableBy":{"items":{"type":"string"},"type":"array"},"total":{"format":"int64","type":"integer"}},"type":"object"},"EnvironmentUpdate":{"properties":{"color":{"maxLength":20,"minLength":0,"type":"string"},"description":{"maxLength":500,"minLength":0,"type":"string"},"name":{"maxLength":150,"minLength":0,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"position":{"format":"int32","type":"integer"}},"type":"object"},"Environment_Public":{"properties":{"color":{"maxLength":20,"minLength":0,"type":"string"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"description":{"maxLength":500,"minLength":0,"type":"string"},"id":{"format":"uuid","type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"name":{"maxLength":150,"minLength":0,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"position":{"format":"int32","type":"integer"}},"required":["name"],"type":"object"},"Environment_Write":{"properties":{"color":{"maxLength":20,"minLength":0,"type":"string"},"description":{"maxLength":500,"minLength":0,"type":"string"},"id":{"format":"uuid","type":"string"},"name":{"maxLength":150,"minLength":0,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"position":{"format":"int32","type":"integer"}},"required":["name"],"type":"object"},"ErrorCountWithDeviation":{"properties":{"count":{"format":"int64","type":"integer"},"deviation":{"format":"int64","type":"integer"},"deviation_percentage":{"format":"int64","type":"integer"}},"type":"object"},"ErrorCountWithDeviation_Detailed":{"properties":{"count":{"format":"int64","type":"integer"},"deviation":{"format":"int64","type":"integer"},"deviation_percentage":{"format":"int64","type":"integer"}},"readOnly":true,"type":"object"},"ErrorInfo":{"properties":{"exception_type":{"minLength":1,"type":"string"},"message":{"type":"string"},"traceback":{"minLength":1,"type":"string"}},"required":["exception_type","traceback"],"type":"object"},"ErrorInfo_ExperimentItemBulkWriteView":{"properties":{"exception_type":{"minLength":1,"type":"string"},"message":{"type":"string"},"traceback":{"minLength":1,"type":"string"}},"required":["exception_type","traceback"],"type":"object"},"ErrorInfo_Public":{"properties":{"exception_type":{"minLength":1,"type":"string"},"message":{"type":"string"},"traceback":{"minLength":1,"type":"string"}},"required":["exception_type","traceback"],"type":"object"},"ErrorInfo_Write":{"properties":{"exception_type":{"minLength":1,"type":"string"},"message":{"type":"string"},"traceback":{"minLength":1,"type":"string"}},"required":["exception_type","traceback"],"type":"object"},"ErrorMessage":{"properties":{"code":{"format":"int32","type":"integer"},"details":{"type":"string"},"message":{"type":"string"}},"type":"object"},"ErrorMessage_Detail":{"properties":{"errors":{"items":{"type":"string"},"type":"array"}},"type":"object"},"ErrorMessage_Detailed":{"properties":{"errors":{"items":{"type":"string"},"type":"array"}},"type":"object"},"ErrorMessage_History":{"properties":{"errors":{"items":{"type":"string"},"type":"array"}},"type":"object"},"ErrorMessage_Public":{"properties":{"code":{"format":"int32","type":"integer"},"details":{"type":"string"},"message":{"type":"string"}},"type":"object"},"ErrorMessage_Write":{"properties":{"errors":{"items":{"type":"string"},"type":"array"}},"type":"object"},"EvaluatorItem":{"properties":{"config":{"$ref":"#/components/schemas/JsonNode"},"name":{"minLength":1,"type":"string"},"type":{"enum":["llm_judge","code_metric"],"type":"string"}},"required":["config","name","type"],"type":"object"},"EvaluatorItem_Compare":{"properties":{"config":{"$ref":"#/components/schemas/JsonNode_Compare"},"name":{"minLength":1,"type":"string"},"type":{"enum":["llm_judge","code_metric"],"type":"string"}},"required":["config","name","type"],"type":"object"},"EvaluatorItem_Public":{"description":"Default evaluators for items in this version","properties":{"config":{"$ref":"#/components/schemas/JsonNode_Public"},"name":{"minLength":1,"type":"string"},"type":{"enum":["llm_judge","code_metric"],"type":"string"}},"readOnly":true,"required":["config","name","type"],"type":"object"},"EvaluatorItem_Write":{"properties":{"config":{"$ref":"#/components/schemas/JsonNode_Write"},"name":{"minLength":1,"type":"string"},"type":{"enum":["llm_judge","code_metric"],"type":"string"}},"required":["config","name","type"],"type":"object"},"ExecutionPolicy":{"properties":{"pass_threshold":{"format":"int32","maximum":100,"minimum":1,"type":"integer"},"runs_per_item":{"format":"int32","maximum":100,"minimum":1,"type":"integer"}},"readOnly":true,"type":"object"},"ExecutionPolicy_Compare":{"properties":{"pass_threshold":{"format":"int32","maximum":100,"minimum":1,"type":"integer"},"runs_per_item":{"format":"int32","maximum":100,"minimum":1,"type":"integer"}},"readOnly":true,"type":"object"},"ExecutionPolicy_Public":{"description":"Default execution policy for items in this version","properties":{"pass_threshold":{"format":"int32","maximum":100,"minimum":1,"type":"integer"},"runs_per_item":{"format":"int32","maximum":100,"minimum":1,"type":"integer"}},"readOnly":true,"type":"object"},"ExecutionPolicy_Write":{"properties":{"pass_threshold":{"format":"int32","maximum":100,"minimum":1,"type":"integer"},"runs_per_item":{"format":"int32","maximum":100,"minimum":1,"type":"integer"}},"type":"object"},"ExistenceResponse":{"properties":{"exists":{"description":"Whether the project has at least one matching entity for the given scope","type":"boolean"}},"type":"object"},"ExperimentBatchUpdate":{"description":"Request to batch update multiple experiments","properties":{"ids":{"description":"List of experiment IDs to update (max 1000)","items":{"description":"List of experiment IDs to update (max 1000)","format":"uuid","type":"string"},"maxItems":1000,"minItems":1,"type":"array","uniqueItems":true},"merge_tags":{"description":"If true, merge tags with existing tags instead of replacing them. Default: false","type":"boolean"},"update":{"$ref":"#/components/schemas/ExperimentUpdate"}},"required":["ids","update"],"type":"object"},"ExperimentExecutionRequest":{"properties":{"dataset_id":{"format":"uuid","type":"string"},"dataset_name":{"minLength":1,"type":"string"},"dataset_version_id":{"format":"uuid","type":"string"},"project_name":{"type":"string"},"prompt_versions":{"items":{"$ref":"#/components/schemas/PromptVersionLink"},"type":"array"},"prompts":{"items":{"$ref":"#/components/schemas/PromptVariant"},"minItems":1,"type":"array"},"version_hash":{"type":"string"}},"required":["dataset_id","dataset_name","prompts"],"type":"object"},"ExperimentExecutionResponse":{"properties":{"experiments":{"items":{"$ref":"#/components/schemas/ExperimentInfo"},"type":"array"},"total_items":{"format":"int32","type":"integer"}},"type":"object"},"ExperimentGroupAggregationsResponse":{"properties":{"content":{"additionalProperties":{"$ref":"#/components/schemas/GroupContentWithAggregations"},"type":"object"}},"type":"object"},"ExperimentGroupResponse":{"properties":{"content":{"additionalProperties":{"$ref":"#/components/schemas/GroupContent"},"type":"object"},"details":{"$ref":"#/components/schemas/GroupDetails"}},"type":"object"},"ExperimentInfo":{"properties":{"experiment_id":{"format":"uuid","type":"string"},"prompt_index":{"format":"int32","type":"integer"}},"type":"object"},"ExperimentItem":{"properties":{"assertion_results":{"items":{"$ref":"#/components/schemas/AssertionResult"},"readOnly":true,"type":"array"},"comments":{"items":{"$ref":"#/components/schemas/Comment"},"readOnly":true,"type":"array"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"dataset_item_id":{"format":"uuid","type":"string"},"description":{"readOnly":true,"type":"string"},"duration":{"format":"double","readOnly":true,"type":"number"},"execution_policy":{"$ref":"#/components/schemas/ExecutionPolicy"},"experiment_id":{"format":"uuid","type":"string"},"feedback_scores":{"items":{"$ref":"#/components/schemas/FeedbackScore"},"readOnly":true,"type":"array"},"id":{"format":"uuid","type":"string"},"input":{"$ref":"#/components/schemas/JsonListString"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"output":{"$ref":"#/components/schemas/JsonListString"},"project_id":{"format":"uuid","readOnly":true,"type":"string"},"project_name":{"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"status":{"enum":["passed","failed"],"readOnly":true,"type":"string"},"total_estimated_cost":{"readOnly":true,"type":"number"},"trace_id":{"format":"uuid","type":"string"},"trace_metadata":{"$ref":"#/components/schemas/JsonListString"},"trace_visibility_mode":{"enum":["default","hidden"],"readOnly":true,"type":"string"},"usage":{"additionalProperties":{"format":"int64","readOnly":true,"type":"integer"},"readOnly":true,"type":"object"}},"required":["dataset_item_id","experiment_id","trace_id"],"type":"object"},"ExperimentItemBulkRecord_ExperimentItemBulkWriteView":{"properties":{"dataset_item_id":{"format":"uuid","type":"string"},"evaluate_task_result":{"$ref":"#/components/schemas/JsonListString_ExperimentItemBulkWriteView"},"feedback_scores":{"items":{"$ref":"#/components/schemas/FeedbackScore_ExperimentItemBulkWriteView"},"maxItems":100,"minItems":0,"type":"array"},"spans":{"items":{"$ref":"#/components/schemas/Span_ExperimentItemBulkWriteView"},"maxItems":100,"minItems":0,"type":"array"},"trace":{"$ref":"#/components/schemas/Trace_ExperimentItemBulkWriteView"}},"required":["dataset_item_id"],"type":"object"},"ExperimentItemBulkUpload_ExperimentItemBulkWriteView":{"properties":{"dataset_name":{"minLength":1,"type":"string"},"experiment_id":{"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","type":"string"},"experiment_name":{"minLength":1,"type":"string"},"items":{"items":{"$ref":"#/components/schemas/ExperimentItemBulkRecord_ExperimentItemBulkWriteView"},"maxItems":1000,"minItems":1,"type":"array"},"project_name":{"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.","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"}},"required":["dataset_name","experiment_name","items"],"type":"object"},"ExperimentItemReference_Public":{"description":"Experiment reference with ID, name, dataset ID, and dataset item ID","properties":{"dataset_id":{"description":"Dataset ID","format":"uuid","type":"string"},"dataset_item_id":{"description":"Dataset Item ID","format":"uuid","type":"string"},"id":{"description":"Experiment ID","format":"uuid","type":"string"},"name":{"description":"Experiment name","type":"string"}},"readOnly":true,"required":["dataset_id","dataset_item_id","id","name"],"type":"object"},"ExperimentItemStreamRequest":{"properties":{"experiment_name":{"minLength":1,"type":"string"},"last_retrieved_id":{"format":"uuid","type":"string"},"limit":{"format":"int32","maximum":2000,"minimum":1,"type":"integer"},"project_name":{"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"truncate":{"default":true,"description":"Truncate image included in either input, output or metadata","type":"boolean"}},"required":["experiment_name"],"type":"object"},"ExperimentItem_Compare":{"properties":{"assertion_results":{"items":{"$ref":"#/components/schemas/AssertionResult_Compare"},"readOnly":true,"type":"array"},"comments":{"items":{"$ref":"#/components/schemas/Comment_Compare"},"readOnly":true,"type":"array"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"dataset_item_id":{"format":"uuid","type":"string"},"description":{"readOnly":true,"type":"string"},"duration":{"format":"double","readOnly":true,"type":"number"},"execution_policy":{"$ref":"#/components/schemas/ExecutionPolicy_Compare"},"experiment_id":{"format":"uuid","type":"string"},"feedback_scores":{"items":{"$ref":"#/components/schemas/FeedbackScore_Compare"},"readOnly":true,"type":"array"},"id":{"format":"uuid","type":"string"},"input":{"$ref":"#/components/schemas/JsonListString_Compare"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"output":{"$ref":"#/components/schemas/JsonListString_Compare"},"project_id":{"format":"uuid","readOnly":true,"type":"string"},"status":{"enum":["passed","failed"],"readOnly":true,"type":"string"},"total_estimated_cost":{"readOnly":true,"type":"number"},"trace_id":{"format":"uuid","type":"string"},"trace_metadata":{"$ref":"#/components/schemas/JsonListString_Compare"},"trace_visibility_mode":{"enum":["default","hidden"],"readOnly":true,"type":"string"},"usage":{"additionalProperties":{"format":"int64","readOnly":true,"type":"integer"},"readOnly":true,"type":"object"}},"readOnly":true,"required":["dataset_item_id","experiment_id","trace_id"],"type":"object"},"ExperimentItem_Public":{"properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"dataset_item_id":{"format":"uuid","type":"string"},"experiment_id":{"format":"uuid","type":"string"},"id":{"format":"uuid","type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"project_id":{"format":"uuid","readOnly":true,"type":"string"},"trace_id":{"format":"uuid","type":"string"},"trace_visibility_mode":{"enum":["default","hidden"],"readOnly":true,"type":"string"}},"required":["dataset_item_id","experiment_id","trace_id"],"type":"object"},"ExperimentItemsBatch":{"properties":{"experiment_items":{"items":{"$ref":"#/components/schemas/ExperimentItem"},"maxItems":1000,"minItems":1,"type":"array","uniqueItems":true}},"required":["experiment_items"],"type":"object"},"ExperimentItemsDelete":{"properties":{"ids":{"items":{"format":"uuid","type":"string"},"maxItems":1000,"minItems":1,"type":"array","uniqueItems":true}},"required":["ids"],"type":"object"},"ExperimentPage_Public":{"properties":{"content":{"items":{"$ref":"#/components/schemas/Experiment_Public"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"sortableBy":{"items":{"type":"string"},"type":"array"},"total":{"format":"int64","type":"integer"}},"type":"object"},"ExperimentRunSummary":{"properties":{"passed_runs":{"format":"int32","type":"integer"},"status":{"enum":["passed","failed"],"type":"string"},"total_runs":{"format":"int32","type":"integer"}},"readOnly":true,"type":"object"},"ExperimentRunSummary_Compare":{"properties":{"passed_runs":{"format":"int32","type":"integer"},"status":{"enum":["passed","failed"],"type":"string"},"total_runs":{"format":"int32","type":"integer"}},"readOnly":true,"type":"object"},"ExperimentRunSummary_Public":{"properties":{"passed_runs":{"format":"int32","type":"integer"},"status":{"enum":["passed","failed"],"type":"string"},"total_runs":{"format":"int32","type":"integer"}},"readOnly":true,"type":"object"},"ExperimentScore":{"properties":{"name":{"minLength":1,"type":"string"},"value":{"type":"number"}},"required":["name","value"],"type":"object"},"ExperimentScore_Public":{"properties":{"name":{"minLength":1,"type":"string"},"value":{"type":"number"}},"required":["name","value"],"type":"object"},"ExperimentScore_Write":{"properties":{"name":{"minLength":1,"type":"string"},"value":{"type":"number"}},"required":["name","value"],"type":"object"},"ExperimentStreamRequest_Public":{"properties":{"last_retrieved_id":{"format":"uuid","type":"string"},"limit":{"format":"int32","maximum":2000,"minimum":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"project_name":{"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"}},"required":["name"],"type":"object"},"ExperimentUpdate":{"properties":{"experiment_scores":{"items":{"$ref":"#/components/schemas/ExperimentScore"},"type":"array"},"metadata":{"$ref":"#/components/schemas/JsonNode"},"name":{"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"status":{"description":"The status of the experiment","enum":["running","completed","cancelled"],"type":"string"},"tags":{"description":"Tags","items":{"description":"Tags","maxLength":100,"minLength":0,"type":"string"},"maxItems":50,"minItems":0,"type":"array","uniqueItems":true},"tags_to_add":{"description":"Tags to add","items":{"description":"Tags to add","maxLength":100,"minLength":0,"type":"string"},"maxItems":50,"minItems":0,"type":"array","uniqueItems":true},"tags_to_remove":{"description":"Tags to remove","items":{"description":"Tags to remove","maxLength":100,"minLength":0,"type":"string"},"maxItems":50,"minItems":0,"type":"array","uniqueItems":true},"type":{"enum":["regular","trial","mini-batch","mutation"],"type":"string"}},"type":"object"},"Experiment_Public":{"properties":{"assertion_scores":{"description":"Per-assertion average pass rates for test suite experiments. Null for regular experiments.","items":{"$ref":"#/components/schemas/AssertionScoreAverage_Public"},"readOnly":true,"type":"array"},"comments":{"items":{"$ref":"#/components/schemas/Comment_Public"},"readOnly":true,"type":"array"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"dataset_id":{"format":"uuid","readOnly":true,"type":"string"},"dataset_item_count":{"format":"int64","readOnly":true,"type":"integer"},"dataset_name":{"minLength":1,"type":["null","string"]},"dataset_version_id":{"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","type":"string"},"dataset_version_summary":{"$ref":"#/components/schemas/DatasetVersionSummary_Public"},"duration":{"$ref":"#/components/schemas/PercentageValues_Public"},"evaluation_method":{"enum":["dataset","evaluation_suite"],"type":"string"},"experiment_scores":{"items":{"$ref":"#/components/schemas/ExperimentScore_Public"},"type":"array"},"feedback_scores":{"items":{"$ref":"#/components/schemas/FeedbackScoreAverage_Public"},"readOnly":true,"type":"array"},"id":{"format":"uuid","type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"metadata":{"$ref":"#/components/schemas/JsonListString_Public"},"name":{"type":"string"},"optimization_id":{"format":"uuid","type":"string"},"pass_rate":{"description":"Pass rate for test suite experiments (0.0-1.0). Null for regular experiments.","readOnly":true,"type":"number"},"passed_count":{"description":"Number of items that passed for test suite experiments. Null for regular experiments.","format":"int64","readOnly":true,"type":"integer"},"project_id":{"description":"Project ID. Takes precedence over project_name when both are provided.","format":"uuid","type":"string"},"project_name":{"description":"Project name. Creates project if it doesn't exist. Ignored when project_id is provided.","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"prompt_version":{"$ref":"#/components/schemas/PromptVersionLink_Public"},"prompt_versions":{"items":{"$ref":"#/components/schemas/PromptVersionLink_Public"},"type":"array"},"status":{"enum":["running","completed","cancelled"],"type":"string"},"tags":{"items":{"maxLength":100,"minLength":0,"type":"string"},"maxItems":50,"minItems":0,"type":"array","uniqueItems":true},"total_count":{"description":"Total number of items for test suite experiments. Null for regular experiments.","format":"int64","readOnly":true,"type":"integer"},"total_estimated_cost":{"readOnly":true,"type":"number"},"total_estimated_cost_avg":{"readOnly":true,"type":"number"},"trace_count":{"format":"int64","readOnly":true,"type":"integer"},"type":{"enum":["regular","trial","mini-batch","mutation"],"type":"string"},"usage":{"additionalProperties":{"format":"double","readOnly":true,"type":"number"},"readOnly":true,"type":"object"}},"required":["dataset_name"],"type":"object"},"Experiment_Write":{"properties":{"dataset_name":{"minLength":1,"type":["null","string"]},"dataset_version_id":{"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","type":"string"},"evaluation_method":{"enum":["dataset","evaluation_suite"],"type":"string"},"experiment_scores":{"items":{"$ref":"#/components/schemas/ExperimentScore_Write"},"type":"array"},"id":{"format":"uuid","type":"string"},"metadata":{"$ref":"#/components/schemas/JsonListString_Write"},"name":{"type":"string"},"optimization_id":{"format":"uuid","type":"string"},"project_id":{"description":"Project ID. Takes precedence over project_name when both are provided.","format":"uuid","type":"string"},"project_name":{"description":"Project name. Creates project if it doesn't exist. Ignored when project_id is provided.","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"prompt_version":{"$ref":"#/components/schemas/PromptVersionLink_Write"},"prompt_versions":{"items":{"$ref":"#/components/schemas/PromptVersionLink_Write"},"type":"array"},"status":{"enum":["running","completed","cancelled"],"type":"string"},"tags":{"items":{"maxLength":100,"minLength":0,"type":"string"},"maxItems":50,"minItems":0,"type":"array","uniqueItems":true},"type":{"enum":["regular","trial","mini-batch","mutation"],"type":"string"}},"required":["dataset_name"],"type":"object"},"FeedbackDefinitionPage_Public":{"properties":{"content":{"items":{"$ref":"#/components/schemas/FeedbackObject_Public"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"total":{"format":"int64","type":"integer"}},"type":"object"},"FeedbackObject_Public":{"discriminator":{"mapping":{"boolean":"#/components/schemas/BooleanFeedbackDefinition_Public","categorical":"#/components/schemas/CategoricalFeedbackDefinition_Public","numerical":"#/components/schemas/NumericalFeedbackDefinition_Public"},"propertyName":"type"},"properties":{"createdAt":{"format":"date-time","readOnly":true,"type":"string"},"createdBy":{"readOnly":true,"type":"string"},"description":{"description":"Optional description for the feedback definition","example":"This feedback definition is used to rate response quality","maxLength":255,"minLength":0,"type":"string"},"id":{"format":"uuid","readOnly":true,"type":"string"},"lastUpdatedAt":{"format":"date-time","readOnly":true,"type":"string"},"lastUpdatedBy":{"readOnly":true,"type":"string"},"name":{"minLength":1,"type":"string"},"type":{"enum":["numerical","categorical","boolean"],"type":"string"}},"required":["name","type"],"type":"object"},"FeedbackScore":{"properties":{"category_name":{"type":"string"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"name":{"minLength":1,"type":"string"},"reason":{"type":"string"},"source":{"enum":["ui","sdk","online_scoring"],"type":"string"},"source_queue_id":{"format":"uuid","type":"string"},"value":{"exclusiveMaximum":false,"exclusiveMinimum":false,"maximum":1000000000,"minimum":-1000000000,"type":"number"},"value_by_author":{"additionalProperties":{"$ref":"#/components/schemas/ValueEntry"},"readOnly":true,"type":"object"}},"required":["name","source","value"],"type":"object"},"FeedbackScoreAverage":{"properties":{"name":{"minLength":1,"type":"string"},"value":{"type":"number"}},"required":["name","value"],"type":"object"},"FeedbackScoreAverage_Detailed":{"properties":{"name":{"minLength":1,"type":"string"},"value":{"type":"number"}},"readOnly":true,"required":["name","value"],"type":"object"},"FeedbackScoreAverage_Public":{"properties":{"name":{"minLength":1,"type":"string"},"value":{"type":"number"}},"readOnly":true,"required":["name","value"],"type":"object"},"FeedbackScoreBatch":{"properties":{"scores":{"items":{"$ref":"#/components/schemas/FeedbackScoreBatchItem"},"maxItems":1000,"minItems":1,"type":"array"}},"required":["scores"],"type":"object"},"FeedbackScoreBatchItem":{"properties":{"author":{"type":"string"},"category_name":{"type":"string"},"id":{"format":"uuid","type":"string"},"name":{"minLength":1,"type":"string"},"project_id":{"format":"uuid","type":"string"},"project_name":{"description":"If null, the default project is used","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"reason":{"type":"string"},"source":{"enum":["ui","sdk","online_scoring"],"type":"string"},"source_queue_id":{"format":"uuid","type":"string"},"value":{"exclusiveMaximum":false,"exclusiveMinimum":false,"maximum":1000000000,"minimum":-1000000000,"type":"number"}},"required":["id","name","source","value"],"type":"object"},"FeedbackScoreBatchItemThread":{"properties":{"author":{"type":"string"},"category_name":{"type":"string"},"name":{"minLength":1,"type":"string"},"project_id":{"format":"uuid","type":"string"},"project_name":{"description":"If null, the default project is used","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"reason":{"type":"string"},"source":{"enum":["ui","sdk","online_scoring"],"type":"string"},"source_queue_id":{"format":"uuid","type":"string"},"thread_id":{"minLength":1,"type":"string"},"value":{"exclusiveMaximum":false,"exclusiveMinimum":false,"maximum":1000000000,"minimum":-1000000000,"type":"number"}},"required":["name","source","thread_id","value"],"type":"object"},"FeedbackScoreBatchThread":{"properties":{"scores":{"items":{"$ref":"#/components/schemas/FeedbackScoreBatchItemThread"},"maxItems":1000,"minItems":1,"type":"array"}},"required":["scores"],"type":"object"},"FeedbackScoreNames":{"properties":{"scores":{"items":{"$ref":"#/components/schemas/ScoreName"},"type":"array"}},"type":"object"},"FeedbackScoreNames_Public":{"properties":{"scores":{"items":{"$ref":"#/components/schemas/ScoreName_Public"},"type":"array"}},"type":"object"},"FeedbackScore_Compare":{"properties":{"category_name":{"type":"string"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"name":{"minLength":1,"type":"string"},"reason":{"type":"string"},"source":{"enum":["ui","sdk","online_scoring"],"type":"string"},"source_queue_id":{"format":"uuid","type":"string"},"value":{"exclusiveMaximum":false,"exclusiveMinimum":false,"maximum":1000000000,"minimum":-1000000000,"type":"number"},"value_by_author":{"additionalProperties":{"$ref":"#/components/schemas/ValueEntry_Compare"},"readOnly":true,"type":"object"}},"readOnly":true,"required":["name","source","value"],"type":"object"},"FeedbackScore_ExperimentItemBulkWriteView":{"properties":{"category_name":{"type":"string"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"name":{"minLength":1,"type":"string"},"reason":{"type":"string"},"source":{"enum":["ui","sdk","online_scoring"],"type":"string"},"source_queue_id":{"format":"uuid","type":"string"},"value":{"exclusiveMaximum":false,"exclusiveMinimum":false,"maximum":1000000000,"minimum":-1000000000,"type":"number"},"value_by_author":{"additionalProperties":{"$ref":"#/components/schemas/ValueEntry_ExperimentItemBulkWriteView"},"readOnly":true,"type":"object"}},"required":["name","source","value"],"type":"object"},"FeedbackScore_Public":{"description":"Aggregated feedback scores from all spans in this trace, averaged by score name","properties":{"category_name":{"type":"string"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"name":{"minLength":1,"type":"string"},"reason":{"type":"string"},"source":{"enum":["ui","sdk","online_scoring"],"type":"string"},"source_queue_id":{"format":"uuid","type":"string"},"value":{"exclusiveMaximum":false,"exclusiveMinimum":false,"maximum":1000000000,"minimum":-1000000000,"type":"number"},"value_by_author":{"additionalProperties":{"$ref":"#/components/schemas/ValueEntry_Public"},"readOnly":true,"type":"object"}},"readOnly":true,"required":["name","source","value"],"type":"object"},"Feedback_Create":{"discriminator":{"mapping":{"boolean":"#/components/schemas/BooleanFeedbackDefinition_Create","categorical":"#/components/schemas/CategoricalFeedbackDefinition_Create","numerical":"#/components/schemas/NumericalFeedbackDefinition_Create"},"propertyName":"type"},"properties":{"description":{"description":"Optional description for the feedback definition","example":"This feedback definition is used to rate response quality","maxLength":255,"minLength":0,"type":"string"},"id":{"format":"uuid","readOnly":true,"type":"string"},"name":{"minLength":1,"type":"string"},"type":{"enum":["numerical","categorical","boolean"],"type":"string"}},"required":["name","type"],"type":"object"},"Feedback_Public":{"discriminator":{"mapping":{"boolean":"#/components/schemas/BooleanFeedbackDefinition_Public","categorical":"#/components/schemas/CategoricalFeedbackDefinition_Public","numerical":"#/components/schemas/NumericalFeedbackDefinition_Public"},"propertyName":"type"},"properties":{"createdAt":{"format":"date-time","readOnly":true,"type":"string"},"createdBy":{"readOnly":true,"type":"string"},"description":{"description":"Optional description for the feedback definition","example":"This feedback definition is used to rate response quality","maxLength":255,"minLength":0,"type":"string"},"id":{"format":"uuid","readOnly":true,"type":"string"},"lastUpdatedAt":{"format":"date-time","readOnly":true,"type":"string"},"lastUpdatedBy":{"readOnly":true,"type":"string"},"name":{"minLength":1,"type":"string"},"type":{"enum":["numerical","categorical","boolean"],"type":"string"}},"required":["name","type"],"type":"object"},"Feedback_Update":{"discriminator":{"mapping":{"boolean":"#/components/schemas/BooleanFeedbackDefinition_Update","categorical":"#/components/schemas/CategoricalFeedbackDefinition_Update","numerical":"#/components/schemas/NumericalFeedbackDefinition_Update"},"propertyName":"type"},"properties":{"description":{"description":"Optional description for the feedback definition","example":"This feedback definition is used to rate response quality","maxLength":255,"minLength":0,"type":"string"},"id":{"format":"uuid","readOnly":true,"type":"string"},"name":{"minLength":1,"type":"string"},"type":{"enum":["numerical","categorical","boolean"],"type":"string"}},"required":["name","type"],"type":"object"},"Function":{"properties":{"description":{"type":"string"},"name":{"type":"string"},"parameters":{"additionalProperties":{"type":"object"},"type":"object"},"strict":{"type":"boolean"}},"type":"object"},"FunctionCall":{"properties":{"arguments":{"type":"string"},"name":{"type":"string"}},"type":"object"},"GenerateReportResponse":{"description":"Response for report generation trigger","properties":{"reportId":{"format":"uuid","type":"string"}},"type":"object"},"GroupContent":{"properties":{"label":{"type":"string"}},"type":"object"},"GroupContentWithAggregations":{"properties":{"aggregations":{"$ref":"#/components/schemas/AggregationData"},"label":{"type":"string"}},"type":"object"},"GroupDetail":{"properties":{"group_sorting":{"items":{"type":"string"},"type":"array"}},"type":"object"},"GroupDetails":{"properties":{"groups_details":{"items":{"$ref":"#/components/schemas/GroupDetail"},"type":"array"}},"type":"object"},"GuardrailBatch_Write":{"properties":{"guardrails":{"items":{"$ref":"#/components/schemas/Guardrail_Write"},"maxItems":1000,"minItems":1,"type":"array"}},"required":["guardrails"],"type":"object"},"Guardrail_Write":{"properties":{"config":{"$ref":"#/components/schemas/JsonNode"},"details":{"$ref":"#/components/schemas/JsonNode"},"entity_id":{"format":"uuid","type":"string"},"name":{"enum":["TOPIC","PII","LLM_JUDGE","PROMPT_INJECTION","CUSTOM_CLASSIFIER"],"type":"string"},"project_id":{"format":"uuid","type":"string"},"project_name":{"description":"If null, the default project is used","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"result":{"enum":["passed","failed"],"type":"string"},"secondary_id":{"format":"uuid","type":"string"}},"required":["config","details","entity_id","name","result","secondary_id"],"type":"object"},"GuardrailsValidation_Public":{"properties":{"checks":{"items":{"$ref":"#/components/schemas/Check_Public"},"type":"array"},"span_id":{"format":"uuid","type":"string"}},"readOnly":true,"type":"object"},"ItemLockInfo":{"properties":{"active_locks":{"format":"int32","type":"integer"},"locked_by":{"items":{"type":"string"},"type":"array"}},"type":"object"},"JsonListString":{"anyOf":[{"type":"object"},{"items":{"type":"object"},"type":"array"},{"type":"string"}],"type":"object"},"JsonListString_Compare":{"anyOf":[{"type":"object"},{"items":{"type":"object"},"type":"array"},{"type":"string"}],"readOnly":true,"type":"object"},"JsonListString_ExperimentItemBulkWriteView":{"anyOf":[{"type":"object"},{"items":{"type":"object"},"type":"array"},{"type":"string"}],"type":"object"},"JsonListString_Public":{"anyOf":[{"type":"object"},{"items":{"type":"object"},"type":"array"},{"type":"string"}],"type":"object"},"JsonListString_Write":{"anyOf":[{"type":"object"},{"items":{"type":"object"},"type":"array"},{"type":"string"}],"type":"object"},"JsonNode":{"type":"object"},"JsonNode_Compare":{"type":"object"},"JsonNode_Detail":{"type":"object"},"JsonNode_Public":{"type":"object"},"JsonNode_Write":{"type":"object"},"JsonSchema":{"properties":{"name":{"type":"string"},"schema":{"additionalProperties":{"type":"object"},"type":"object"},"strict":{"type":"boolean"}},"type":"object"},"KpiCardRequest":{"properties":{"entity_type":{"enum":["traces","spans","threads"],"type":"string"},"filters":{"type":"string"},"interval_end":{"format":"date-time","type":"string"},"interval_start":{"format":"date-time","type":"string"}},"required":["entity_type","interval_start"],"type":"object"},"KpiCardResponse":{"properties":{"stats":{"items":{"$ref":"#/components/schemas/KpiMetric"},"type":"array"}},"type":"object"},"KpiMetric":{"properties":{"current_value":{"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","type":"number"},"previous_value":{"description":"Metric value for the immediately preceding period of equal length. Same unit as `current_value`.","format":"double","type":"number"},"type":{"enum":["count","errors","avg_duration","total_cost"],"type":"string"}},"type":"object"},"LocalRunner":{"properties":{"agents":{"items":{"$ref":"#/components/schemas/Agent"},"type":"array"},"capabilities":{"items":{"type":"string"},"type":"array"},"checklist":{"$ref":"#/components/schemas/JsonNode"},"connected_at":{"format":"date-time","type":"string"},"id":{"format":"uuid","type":"string"},"name":{"type":"string"},"project_id":{"format":"uuid","type":"string"},"status":{"enum":["pairing","connected","disconnected"],"type":"string"},"type":{"enum":["connect","endpoint"],"type":"string"}},"type":"object"},"LocalRunnerHeartbeatRequest":{"properties":{"capabilities":{"items":{"type":"string"},"type":"array"}},"type":"object"},"LocalRunnerHeartbeatResponse":{"properties":{"cancelled_job_ids":{"items":{"format":"uuid","type":"string"},"type":"array"}},"type":"object"},"LocalRunnerJob":{"properties":{"agent_name":{"type":"string"},"blueprint_name":{"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"completed_at":{"format":"date-time","type":"string"},"created_at":{"format":"date-time","type":"string"},"error":{"type":"string"},"id":{"format":"uuid","type":"string"},"inputs":{"$ref":"#/components/schemas/JsonNode"},"mask_id":{"deprecated":true,"description":"Deprecated. Use prompt_masks to read one or more mask overlays keyed by prompt id.","format":"uuid","type":"string"},"metadata":{"$ref":"#/components/schemas/LocalRunnerJobMetadata"},"project_id":{"format":"uuid","type":"string"},"prompt_masks":{"additionalProperties":{"description":"Mask overlays to apply during agent execution, keyed by prompt id.","format":"uuid","type":"string"},"description":"Mask overlays to apply during agent execution, keyed by prompt id.","type":"object"},"result":{"$ref":"#/components/schemas/JsonNode"},"runner_id":{"format":"uuid","type":"string"},"started_at":{"format":"date-time","type":"string"},"status":{"enum":["pending","running","completed","failed","cancelled"],"type":"string"},"timeout":{"format":"int32","type":"integer"},"trace_id":{"format":"uuid","type":"string"}},"type":"object"},"LocalRunnerJobMetadata":{"properties":{"dataset_id":{"format":"uuid","type":"string"},"dataset_item_id":{"format":"uuid","type":"string"},"dataset_item_version_id":{"format":"uuid","type":"string"},"dataset_version_id":{"format":"uuid","type":"string"}},"type":"object"},"LocalRunnerJobPage":{"properties":{"content":{"items":{"$ref":"#/components/schemas/LocalRunnerJob"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"total":{"format":"int64","type":"integer"}},"type":"object"},"LocalRunnerJobResultRequest":{"properties":{"error":{"type":"string"},"result":{"$ref":"#/components/schemas/JsonNode"},"status":{"enum":["pending","running","completed","failed","cancelled"],"type":"string"},"trace_id":{"format":"uuid","type":"string"}},"required":["status"],"type":"object"},"LocalRunnerLogEntry":{"properties":{"stream":{"minLength":1,"type":"string"},"text":{"minLength":1,"type":"string"}},"required":["stream","text"],"type":"object"},"LocalRunnerPage":{"properties":{"content":{"items":{"$ref":"#/components/schemas/LocalRunner"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"total":{"format":"int64","type":"integer"}},"type":"object"},"LockResponse":{"properties":{"acquired":{"type":"boolean"},"expires_at":{"format":"date-time","type":"string"},"item_id":{"format":"uuid","type":"string"},"locked_by":{"type":"string"}},"type":"object"},"LocksResponse":{"properties":{"locks":{"additionalProperties":{"$ref":"#/components/schemas/ItemLockInfo"},"type":"object"}},"type":"object"},"LogItem":{"properties":{"level":{"enum":["INFO","WARN","ERROR","DEBUG","TRACE"],"readOnly":true,"type":"string"},"markers":{"additionalProperties":{"readOnly":true,"type":"string"},"readOnly":true,"type":"object"},"message":{"readOnly":true,"type":"string"},"rule_id":{"format":"uuid","readOnly":true,"type":"string"},"timestamp":{"format":"date-time","readOnly":true,"type":"string"}},"type":"object"},"LogPage":{"properties":{"content":{"items":{"$ref":"#/components/schemas/LogItem"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"total":{"format":"int64","type":"integer"}},"type":"object"},"LogProb":{"properties":{"bytes":{"items":{"format":"int32","type":"integer"},"type":"array"},"logprob":{"format":"double","type":"number"},"token":{"type":"string"}},"type":"object"},"LogProbs":{"properties":{"content":{"items":{"$ref":"#/components/schemas/LogProb"},"type":"array"}},"type":"object"},"ManualEvaluationRequest":{"properties":{"entity_ids":{"description":"List of entity IDs (trace IDs or thread IDs) to evaluate","example":["550e8400-e29b-41d4-a716-446655440000","550e8400-e29b-41d4-a716-446655440001"],"items":{"description":"List of entity IDs (trace IDs or thread IDs) to evaluate","format":"uuid","type":"string"},"minItems":1,"type":"array"},"entity_type":{"description":"Type of entity to evaluate (trace or thread)","enum":["trace","thread","span"],"example":"trace","type":"string"},"project_id":{"description":"Project ID","example":"550e8400-e29b-41d4-a716-446655440000","format":"uuid","type":"string"},"rule_ids":{"description":"List of automation rule IDs to apply","example":["660e8400-e29b-41d4-a716-446655440000"],"items":{"description":"List of automation rule IDs to apply","format":"uuid","type":"string"},"minItems":1,"type":"array"}},"required":["entity_ids","entity_type","project_id","rule_ids"],"type":"object"},"ManualEvaluationResponse":{"properties":{"entities_queued":{"description":"Number of entities queued for evaluation","example":5,"format":"int32","type":"integer"},"rules_applied":{"description":"Number of rules that will be applied","example":2,"format":"int32","type":"integer"}},"type":"object"},"Message":{"properties":{"content":{"$ref":"#/components/schemas/JsonNode"},"role":{"minLength":1,"type":"string"}},"required":["content","role"],"type":"object"},"MultipartUploadPart":{"properties":{"e_tag":{"minLength":1,"type":"string"},"part_number":{"format":"int32","type":"integer"}},"required":["e_tag","part_number"],"type":"object"},"OAuthError":{"properties":{"error":{"type":"string"},"error_description":{"type":"string"}},"type":"object"},"OllamaConnectionTestResponse":{"description":"Response from Ollama connection test.","properties":{"connected":{"description":"Whether the connection was successful","type":"boolean"},"error_message":{"description":"Error message if connection failed","type":"string"},"version":{"description":"Server version (returned even if connection failed or version is incompatible)","type":"string"}},"type":"object"},"OllamaInstanceBaseUrlRequest":{"description":"Request with Ollama instance base URL for connection testing or model discovery.","properties":{"api_key":{"description":"Optional API key for authenticated Ollama instances. If provided, will be sent as Bearer token in Authorization header.","type":"string"},"base_url":{"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","minLength":1,"type":"string"}},"required":["base_url"],"type":"object"},"OllamaModel":{"description":"Ollama model information","properties":{"digest":{"description":"Model digest/hash","type":"string"},"modified_at":{"description":"Model modification date","format":"date-time","type":"string"},"name":{"description":"Model name","example":"llama2","minLength":1,"type":"string"},"size":{"description":"Model size in bytes","format":"int64","type":"integer"}},"required":["name"],"type":"object"},"OllieReport":{"properties":{"content":{"type":"string"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"failure_reason":{"type":"string"},"id":{"format":"uuid","type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"project_id":{"format":"uuid","type":"string"},"recommended_actions":{"$ref":"#/components/schemas/JsonNode"},"session_id":{"type":"string"},"status":{"enum":["pending","completed","failed"],"type":"string"}},"type":"object"},"OllieReportPage":{"properties":{"content":{"items":{"$ref":"#/components/schemas/OllieReport"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"total":{"format":"int64","type":"integer"}},"type":"object"},"OptimizationPage_Public":{"properties":{"content":{"items":{"$ref":"#/components/schemas/Optimization_Public"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"sortableBy":{"items":{"type":"string"},"type":"array"},"total":{"format":"int64","type":"integer"}},"type":"object"},"OptimizationStudioConfig_Public":{"properties":{"dataset_name":{"minLength":1,"type":"string"},"evaluation":{"$ref":"#/components/schemas/StudioEvaluation_Public"},"llm_model":{"$ref":"#/components/schemas/StudioLlmModel_Public"},"optimizer":{"$ref":"#/components/schemas/StudioOptimizer_Public"},"prompt":{"$ref":"#/components/schemas/StudioPrompt_Public"}},"required":["dataset_name","evaluation","llm_model","optimizer","prompt"],"type":"object"},"OptimizationStudioConfig_Write":{"properties":{"dataset_name":{"minLength":1,"type":"string"},"evaluation":{"$ref":"#/components/schemas/StudioEvaluation_Write"},"llm_model":{"$ref":"#/components/schemas/StudioLlmModel_Write"},"optimizer":{"$ref":"#/components/schemas/StudioOptimizer_Write"},"prompt":{"$ref":"#/components/schemas/StudioPrompt_Write"}},"required":["dataset_name","evaluation","llm_model","optimizer","prompt"],"type":"object"},"OptimizationStudioLog":{"properties":{"expires_at":{"format":"date-time","type":"string"},"last_modified":{"format":"date-time","type":"string"},"url":{"type":"string"}},"type":"object"},"OptimizationUpdate":{"properties":{"error_info":{"$ref":"#/components/schemas/ErrorInfo"},"metadata":{"$ref":"#/components/schemas/JsonListString"},"name":{"type":"string"},"status":{"enum":["running","completed","cancelled","initialized","error"],"type":"string"}},"type":"object"},"Optimization_Public":{"properties":{"baseline_cost":{"readOnly":true,"type":"number"},"baseline_duration":{"readOnly":true,"type":"number"},"baseline_objective_score":{"readOnly":true,"type":"number"},"best_cost":{"readOnly":true,"type":"number"},"best_duration":{"readOnly":true,"type":"number"},"best_objective_score":{"readOnly":true,"type":"number"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"dataset_id":{"format":"uuid","readOnly":true,"type":"string"},"dataset_name":{"minLength":1,"type":"string"},"error_info":{"$ref":"#/components/schemas/ErrorInfo_Public"},"experiment_scores":{"items":{"$ref":"#/components/schemas/FeedbackScoreAverage_Public"},"readOnly":true,"type":"array"},"feedback_scores":{"items":{"$ref":"#/components/schemas/FeedbackScoreAverage_Public"},"readOnly":true,"type":"array"},"id":{"format":"uuid","type":"string"},"last_updated_at":{"format":"date-time","type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"metadata":{"$ref":"#/components/schemas/JsonListString_Public"},"name":{"type":"string"},"num_trials":{"format":"int64","readOnly":true,"type":"integer"},"objective_name":{"minLength":1,"type":"string"},"project_id":{"description":"Project ID. Takes precedence over project_name when both are provided.","format":"uuid","type":"string"},"status":{"enum":["running","completed","cancelled","initialized","error"],"type":"string"},"studio_config":{"$ref":"#/components/schemas/OptimizationStudioConfig_Public"},"total_optimization_cost":{"readOnly":true,"type":"number"}},"required":["dataset_name","objective_name","status"],"type":"object"},"Optimization_Write":{"properties":{"dataset_name":{"minLength":1,"type":"string"},"error_info":{"$ref":"#/components/schemas/ErrorInfo_Write"},"id":{"format":"uuid","type":"string"},"last_updated_at":{"format":"date-time","type":"string"},"metadata":{"$ref":"#/components/schemas/JsonListString_Write"},"name":{"type":"string"},"objective_name":{"minLength":1,"type":"string"},"project_id":{"description":"Project ID. Takes precedence over project_name when both are provided.","format":"uuid","type":"string"},"project_name":{"description":"Project name. Creates project if it doesn't exist. Ignored when project_id is provided.","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"status":{"enum":["running","completed","cancelled","initialized","error"],"type":"string"},"studio_config":{"$ref":"#/components/schemas/OptimizationStudioConfig_Write"}},"required":["dataset_name","objective_name","status"],"type":"object"},"PageColumns":{"properties":{"columns":{"items":{"$ref":"#/components/schemas/Column"},"type":"array"}},"type":"object"},"Param":{"properties":{"name":{"minLength":1,"type":"string"},"presence":{"enum":["required","optional"],"type":"string"},"type":{"minLength":1,"type":"string"}},"required":["name","type"],"type":"object"},"PercentageValues":{"properties":{"p50":{"type":"number"},"p90":{"type":"number"},"p99":{"type":"number"}},"type":"object"},"PercentageValues_Detailed":{"properties":{"p50":{"type":"number"},"p90":{"type":"number"},"p99":{"type":"number"}},"readOnly":true,"type":"object"},"PercentageValues_Public":{"properties":{"p50":{"type":"number"},"p90":{"type":"number"},"p99":{"type":"number"}},"type":"object"},"Permission":{"properties":{"permissionName":{"type":"string"},"permissionValue":{"type":"string"}},"type":"object"},"ProjectMetricRequest_Public":{"properties":{"breakdown":{"$ref":"#/components/schemas/BreakdownConfig_Public"},"interval":{"enum":["HOURLY","DAILY","WEEKLY","TOTAL"],"type":"string"},"interval_end":{"format":"date-time","type":"string"},"interval_start":{"format":"date-time","type":"string"},"metric_type":{"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"],"type":"string"},"span_filters":{"items":{"$ref":"#/components/schemas/SpanFilter_Public"},"type":"array"},"thread_filters":{"items":{"$ref":"#/components/schemas/TraceThreadFilter_Public"},"type":"array"},"trace_filters":{"items":{"$ref":"#/components/schemas/TraceFilter_Public"},"type":"array"}},"type":"object"},"ProjectMetricResponse_Public":{"properties":{"interval":{"enum":["HOURLY","DAILY","WEEKLY","TOTAL"],"type":"string"},"metric_type":{"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"],"type":"string"},"project_id":{"format":"uuid","type":"string"},"results":{"items":{"$ref":"#/components/schemas/ResultsNumber_Public"},"type":"array"}},"type":"object"},"ProjectPage_Public":{"properties":{"content":{"items":{"$ref":"#/components/schemas/Project_Public"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"sortableBy":{"items":{"type":"string"},"type":"array"},"total":{"format":"int64","type":"integer"}},"type":"object"},"ProjectReference_Public":{"description":"Project reference with ID and name","properties":{"project_id":{"description":"Project ID","format":"uuid","type":"string"},"project_name":{"description":"Project name","type":"string"}},"readOnly":true,"required":["project_id","project_name"],"type":"object"},"ProjectRetrieve_Detailed":{"properties":{"includeStats":{"type":"boolean"},"name":{"minLength":1,"type":"string"}},"required":["name"],"type":"object"},"ProjectStatItemObject_Public":{"discriminator":{"mapping":{"AVG":"#/components/schemas/AvgValueStat_Public","COUNT":"#/components/schemas/CountValueStat_Public","PERCENTAGE":"#/components/schemas/PercentageValueStat_Public"},"propertyName":"type"},"properties":{"name":{"type":"string"},"type":{"enum":["COUNT","PERCENTAGE","AVG"],"type":"string"}},"type":"object"},"ProjectStatsSummary":{"properties":{"content":{"items":{"$ref":"#/components/schemas/ProjectStatsSummaryItem"},"type":"array"}},"type":"object"},"ProjectStatsSummaryItem":{"properties":{"duration":{"$ref":"#/components/schemas/PercentageValues"},"error_count":{"$ref":"#/components/schemas/ErrorCountWithDeviation"},"feedback_scores":{"items":{"$ref":"#/components/schemas/FeedbackScoreAverage"},"type":"array"},"guardrails_failed_count":{"format":"int64","type":"integer"},"project_id":{"format":"uuid","type":"string"},"thread_count":{"format":"int64","type":"integer"},"total_estimated_cost":{"format":"double","type":"number"},"total_estimated_cost_sum":{"format":"double","type":"number"},"trace_count":{"format":"int64","type":"integer"},"usage":{"additionalProperties":{"format":"double","type":"number"},"type":"object"}},"type":"object"},"ProjectStats_Public":{"properties":{"stats":{"items":{"$ref":"#/components/schemas/ProjectStatItemObject_Public"},"type":"array"}},"type":"object"},"ProjectUpdate":{"properties":{"description":{"maxLength":255,"minLength":0,"type":"string"},"name":{"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"visibility":{"enum":["private","public"],"type":"string"}},"type":"object"},"Project_Detailed":{"properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"description":{"maxLength":255,"minLength":0,"type":"string"},"duration":{"$ref":"#/components/schemas/PercentageValues_Detailed"},"error_count":{"$ref":"#/components/schemas/ErrorCountWithDeviation_Detailed"},"feedback_scores":{"items":{"$ref":"#/components/schemas/FeedbackScoreAverage_Detailed"},"readOnly":true,"type":"array"},"guardrails_failed_count":{"format":"int64","readOnly":true,"type":"integer"},"id":{"format":"uuid","readOnly":true,"type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"last_updated_trace_at":{"format":"date-time","readOnly":true,"type":"string"},"name":{"minLength":1,"type":"string"},"thread_count":{"format":"int64","readOnly":true,"type":"integer"},"total_estimated_cost":{"format":"double","readOnly":true,"type":"number"},"total_estimated_cost_sum":{"format":"double","readOnly":true,"type":"number"},"trace_count":{"format":"int64","readOnly":true,"type":"integer"},"usage":{"additionalProperties":{"format":"double","readOnly":true,"type":"number"},"readOnly":true,"type":"object"},"visibility":{"enum":["private","public"],"type":"string"}},"required":["name"],"type":"object"},"Project_Public":{"properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"description":{"maxLength":255,"minLength":0,"type":"string"},"id":{"format":"uuid","readOnly":true,"type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"last_updated_trace_at":{"format":"date-time","readOnly":true,"type":"string"},"name":{"minLength":1,"type":"string"},"visibility":{"enum":["private","public"],"type":"string"}},"required":["name"],"type":"object"},"Project_Write":{"properties":{"description":{"maxLength":255,"minLength":0,"type":"string"},"name":{"minLength":1,"type":"string"},"visibility":{"enum":["private","public"],"type":"string"}},"required":["name"],"type":"object"},"PromptPage_Public":{"properties":{"content":{"items":{"$ref":"#/components/schemas/Prompt_Public"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"sortableBy":{"items":{"type":"string"},"type":"array"},"total":{"format":"int64","type":"integer"}},"type":"object"},"PromptTokensDetails":{"properties":{"cachedTokens":{"format":"int32","type":"integer"}},"type":"object"},"PromptVariant":{"properties":{"configs":{"additionalProperties":{"$ref":"#/components/schemas/JsonNode"},"type":"object"},"experiment_name":{"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"messages":{"items":{"$ref":"#/components/schemas/Message"},"minItems":1,"type":"array"},"model":{"minLength":1,"type":"string"},"prompt_versions":{"items":{"$ref":"#/components/schemas/PromptVersionLink"},"type":"array"}},"required":["messages","model"],"type":"object"},"PromptVersionBatchUpdate":{"description":"Request to update one or more prompt versions.\nNote: Prompt versions are immutable by design - only organizational properties (such as tags etc.) can be updated.\n","properties":{"ids":{"description":"IDs of prompt versions to update","items":{"description":"IDs of prompt versions to update","format":"uuid","type":"string"},"maxItems":1000,"minItems":1,"type":"array","uniqueItems":true},"merge_tags":{"default":false,"description":"Tag merge behavior:\n- true: Add new tags to existing tags (union)\n- false: Replace all existing tags with new tags (default behaviour if not provided)\n","type":"boolean"},"update":{"$ref":"#/components/schemas/PromptVersionUpdate"}},"required":["ids","update"],"type":"object"},"PromptVersionCommitsRequest_Public":{"properties":{"commits":{"items":{"minLength":1,"type":"string"},"maxItems":1000,"minItems":1,"type":"array"}},"required":["commits"],"type":"object"},"PromptVersionEnvironmentUpdate":{"description":"Replace the full set of environments assigned to a prompt version.\nThe provided set becomes the new complete set of environments for this version.\n- 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.\n- Empty set: clears all environments from this version.\nAll environments must already exist in the workspace registry; unknown names return 404.\n","properties":{"environments":{"items":{"maxLength":150,"minLength":0,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"maxItems":100,"minItems":0,"type":"array","uniqueItems":true}},"required":["environments"],"type":"object"},"PromptVersionIdsRequest_Detail":{"properties":{"ids":{"items":{"format":"uuid","type":"string"},"maxItems":1000,"minItems":1,"type":"array"}},"required":["ids"],"type":"object"},"PromptVersionLink":{"properties":{"commit":{"readOnly":true,"type":"string"},"id":{"format":"uuid","type":"string"},"prompt_id":{"format":"uuid","readOnly":true,"type":"string"},"prompt_name":{"readOnly":true,"type":"string"},"version_number":{"description":"sequential version number in the format v<N>; null for masks","readOnly":true,"type":"string"}},"required":["id"],"type":"object"},"PromptVersionLink_Public":{"properties":{"commit":{"type":"string"},"prompt_id":{"format":"uuid","type":"string"},"prompt_name":{"type":"string"},"prompt_version_id":{"format":"uuid","type":"string"}},"type":"object"},"PromptVersionLink_Write":{"properties":{"id":{"format":"uuid","type":"string"}},"required":["id"],"type":"object"},"PromptVersionPage_Public":{"properties":{"content":{"items":{"$ref":"#/components/schemas/PromptVersion_Public"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"sortableBy":{"items":{"type":"string"},"type":"array"},"total":{"format":"int64","type":"integer"}},"type":"object"},"PromptVersionRetrieve_Detail":{"properties":{"commit":{"type":"string"},"environment":{"description":"If provided, resolves to the version mapped to this environment for the prompt; mutually exclusive with commit and version_number","maxLength":150,"minLength":0,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"name":{"minLength":1,"type":"string"},"project_name":{"description":"If provided, scopes the search to the specified project; prompts belonging to other projects are never matched, and an unknown project name returns 404. Legacy prompts that are not scoped to any project are still matched as a deprecated fallback, signalled by the X-Opik-Deprecation response header.","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"version_number":{"description":"If provided, resolves to the version with this sequential number (e.g. v3); mutually exclusive with commit and environment","maxLength":10,"minLength":0,"pattern":"v\\d+","type":"string"}},"required":["name"],"type":"object"},"PromptVersionUpdate":{"description":"Update to apply to prompt versions.\nNote: Prompt versions are immutable by design.\nOnly organizational properties (such as tags etc.) can be updated.\nCore properties like template, metadata etc. cannot be modified after creation.\n","properties":{"tags":{"description":"Tags to set or merge with existing tags. Follows PATCH semantics:\n- If merge_tags is true, these tags will be added to existing tags.\n- If merge_tags is false, these tags will replace all existing tags.\n- null: preserve existing tags (no change).\n- empty set: clear all tags when merge_tags is false.\n","items":{"description":"Tags to set or merge with existing tags. Follows PATCH semantics:\n- If merge_tags is true, these tags will be added to existing tags.\n- If merge_tags is false, these tags will replace all existing tags.\n- null: preserve existing tags (no change).\n- empty set: clear all tags when merge_tags is false.\n","maxLength":100,"minLength":0,"type":"string"},"maxItems":50,"minItems":0,"type":"array","uniqueItems":true}},"type":"object"},"PromptVersion_Detail":{"properties":{"change_description":{"type":"string"},"commit":{"description":"version short unique identifier, generated if absent. it must be 8 characters long","pattern":"^[a-zA-Z0-9]{8}$","type":"string"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"environment":{"deprecated":true,"description":"Deprecated: use 'environments' instead","maxLength":150,"minLength":0,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"environments":{"items":{"maxLength":150,"minLength":0,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"maxItems":100,"minItems":0,"type":"array","uniqueItems":true},"id":{"description":"version unique identifier, generated if absent","format":"uuid","type":"string"},"metadata":{"$ref":"#/components/schemas/JsonNode_Detail"},"prompt_id":{"format":"uuid","readOnly":true,"type":"string"},"tags":{"items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"template":{"minLength":1,"type":"string"},"template_structure":{"enum":["text","chat"],"readOnly":true,"type":"string"},"type":{"enum":["mustache","jinja2","python"],"type":"string"},"variables":{"items":{"readOnly":true,"type":"string"},"readOnly":true,"type":"array","uniqueItems":true},"version_number":{"description":"sequential version number in the format v<N>; null for masks","readOnly":true,"type":"string"},"version_type":{"description":"version type discriminator; defaults to prompt_version","enum":["prompt_version","mask"],"type":"string"}},"required":["template"],"type":"object"},"PromptVersion_Public":{"properties":{"change_description":{"type":"string"},"commit":{"description":"version short unique identifier, generated if absent. it must be 8 characters long","pattern":"^[a-zA-Z0-9]{8}$","type":"string"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"environment":{"deprecated":true,"description":"Deprecated: use 'environments' instead","maxLength":150,"minLength":0,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"environments":{"items":{"maxLength":150,"minLength":0,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"maxItems":100,"minItems":0,"type":"array","uniqueItems":true},"id":{"description":"version unique identifier, generated if absent","format":"uuid","type":"string"},"metadata":{"$ref":"#/components/schemas/JsonNode_Public"},"prompt_id":{"format":"uuid","readOnly":true,"type":"string"},"tags":{"items":{"minLength":1,"type":"string"},"type":"array","uniqueItems":true},"template":{"minLength":1,"type":"string"},"template_structure":{"enum":["text","chat"],"readOnly":true,"type":"string"},"type":{"enum":["mustache","jinja2","python"],"type":"string"},"version_number":{"description":"sequential version number in the format v<N>; null for masks","readOnly":true,"type":"string"},"version_type":{"description":"version type discriminator; defaults to prompt_version","enum":["prompt_version","mask"],"type":"string"}},"required":["template"],"type":"object"},"Prompt_Detail":{"properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"description":{"maxLength":255,"minLength":0,"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"id":{"format":"uuid","type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"latest_version":{"$ref":"#/components/schemas/PromptVersion_Detail"},"name":{"minLength":1,"type":"string"},"project_id":{"description":"Project ID. Takes precedence over project_name when both are provided.","format":"uuid","type":"string"},"requested_version":{"$ref":"#/components/schemas/PromptVersion_Detail"},"tags":{"items":{"type":"string"},"type":"array","uniqueItems":true},"template_structure":{"default":"text","description":"Template structure type: 'text' or 'chat'. Immutable after creation.","enum":["text","chat"],"type":"string"},"version_count":{"format":"int64","readOnly":true,"type":"integer"}},"required":["name"],"type":"object"},"Prompt_Public":{"properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"description":{"maxLength":255,"minLength":0,"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"id":{"format":"uuid","type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"name":{"minLength":1,"type":"string"},"project_id":{"description":"Project ID. Takes precedence over project_name when both are provided.","format":"uuid","type":"string"},"tags":{"items":{"type":"string"},"type":"array","uniqueItems":true},"template_structure":{"default":"text","description":"Template structure type: 'text' or 'chat'. Immutable after creation.","enum":["text","chat"],"type":"string"},"version_count":{"format":"int64","readOnly":true,"type":"integer"}},"required":["name"],"type":"object"},"Prompt_Updatable":{"properties":{"description":{"maxLength":255,"minLength":0,"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"name":{"minLength":1,"type":"string"},"tags":{"items":{"type":"string"},"type":"array","uniqueItems":true}},"required":["name"],"type":"object"},"Prompt_Write":{"properties":{"change_description":{"type":"string"},"description":{"maxLength":255,"minLength":0,"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"id":{"format":"uuid","type":"string"},"metadata":{"$ref":"#/components/schemas/JsonNode_Write"},"name":{"minLength":1,"type":"string"},"project_id":{"description":"Project ID. Takes precedence over project_name when both are provided.","format":"uuid","type":"string"},"project_name":{"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.","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"tags":{"items":{"type":"string"},"type":"array","uniqueItems":true},"template":{"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"template_structure":{"default":"text","description":"Template structure type: 'text' or 'chat'. Immutable after creation.","enum":["text","chat"],"type":"string"},"type":{"enum":["mustache","jinja2","python"],"type":"string"}},"required":["name"],"type":"object"},"ProviderApiKeyPage_Public":{"properties":{"content":{"items":{"$ref":"#/components/schemas/ProviderApiKey_Public"},"type":"array"},"size":{"format":"int32","type":"integer"},"sortableBy":{"items":{"type":"string"},"type":"array"},"total":{"format":"int64","type":"integer"}},"type":"object"},"ProviderApiKeyUpdate":{"properties":{"api_key":{"type":"string"},"auth_config":{"$ref":"#/components/schemas/ProviderAuthConfig"},"base_url":{"type":"string"},"configuration":{"additionalProperties":{"type":"string"},"type":"object"},"headers":{"additionalProperties":{"type":"string"},"type":"object"},"name":{"maxLength":150,"minLength":0,"type":"string"},"provider_name":{"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","maxLength":150,"minLength":0,"type":"string"}},"type":"object"},"ProviderApiKey_Public":{"properties":{"api_key":{"type":"string"},"auth_config":{"$ref":"#/components/schemas/ProviderAuthConfig_Public"},"base_url":{"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"configuration":{"additionalProperties":{"type":"string"},"type":"object"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"type":"object"},"id":{"format":"uuid","readOnly":true,"type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"name":{"maxLength":150,"minLength":0,"type":"string"},"provider":{"enum":["openai","anthropic","gemini","openrouter","vertex-ai","bedrock","ollama","custom-llm","opik-free"],"type":"string"},"provider_name":{"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","maxLength":150,"minLength":0,"type":"string"},"read_only":{"description":"If true, this provider is system-managed and cannot be edited or deleted","readOnly":true,"type":"boolean"}},"required":["provider"],"type":"object"},"ProviderApiKey_Write":{"properties":{"api_key":{"type":"string"},"auth_config":{"$ref":"#/components/schemas/ProviderAuthConfig_Write"},"base_url":{"pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"configuration":{"additionalProperties":{"type":"string"},"type":"object"},"headers":{"additionalProperties":{"type":"string"},"type":"object"},"name":{"maxLength":150,"minLength":0,"type":"string"},"provider":{"enum":["openai","anthropic","gemini","openrouter","vertex-ai","bedrock","ollama","custom-llm","opik-free"],"type":"string"},"provider_name":{"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","maxLength":150,"minLength":0,"type":"string"}},"required":["provider"],"type":"object"},"ProviderAuthCheck":{"properties":{"auth_config":{"$ref":"#/components/schemas/ProviderAuthConfig"},"provider_id":{"description":"Test the stored auth config of this provider; also the sentinel-resolution target when auth_config is sent","format":"uuid","type":"string"}},"type":"object"},"ProviderAuthConfig":{"description":"Dynamic token auth recipe. Send the '__SECRET__' sentinel as a credential value to keep the stored secret; send an empty object to clear the auth config.","properties":{"credentials":{"description":"Fields sent to the token URL. Values flagged as secret are write-only: they read back as the '__SECRET__' sentinel","items":{"$ref":"#/components/schemas/Credential"},"maxItems":20,"minItems":0,"type":"array"},"expires_field":{"description":"Field holding the token lifetime in seconds in the reply; dot-path for nested replies","example":"expires_in","maxLength":250,"minLength":0,"type":"string"},"fallback_ttl_seconds":{"description":"Lifetime in seconds assumed when the reply doesn't state one, capped at one year; 0 disables caching for such replies. A reply-stated lifetime always wins","format":"int64","maximum":31536000,"minimum":0,"type":"integer"},"send_as":{"description":"How credentials are sent: form body (default), JSON body, or basic auth (id/secret in an HTTP Basic header, remaining fields in the form body)","enum":["form","json","basic"],"type":"string"},"token_field":{"description":"Field holding the token in the reply; dot-path for nested replies","example":"access_token","maxLength":250,"minLength":0,"type":"string"},"token_url":{"description":"Auth service URL the credentials are sent to","example":"https://developer.api.example.com/authentication/v1/token","type":"string"}},"type":"object"},"ProviderAuthConfig_Public":{"description":"Dynamic token auth recipe. When set, Opik fetches a short-lived bearer from the configured auth service instead of using a static api_key. Only supported for custom providers. Secret credential values read back masked.","properties":{"credentials":{"description":"Fields sent to the token URL. Values flagged as secret are write-only: they read back as the '__SECRET__' sentinel","items":{"$ref":"#/components/schemas/Credential_Public"},"maxItems":20,"minItems":0,"type":"array"},"expires_field":{"description":"Field holding the token lifetime in seconds in the reply; dot-path for nested replies","example":"expires_in","maxLength":250,"minLength":0,"type":"string"},"fallback_ttl_seconds":{"description":"Lifetime in seconds assumed when the reply doesn't state one, capped at one year; 0 disables caching for such replies. A reply-stated lifetime always wins","format":"int64","maximum":31536000,"minimum":0,"type":"integer"},"send_as":{"description":"How credentials are sent: form body (default), JSON body, or basic auth (id/secret in an HTTP Basic header, remaining fields in the form body)","enum":["form","json","basic"],"type":"string"},"token_field":{"description":"Field holding the token in the reply; dot-path for nested replies","example":"access_token","maxLength":250,"minLength":0,"type":"string"},"token_url":{"description":"Auth service URL the credentials are sent to","example":"https://developer.api.example.com/authentication/v1/token","type":"string"}},"type":"object"},"ProviderAuthConfig_Write":{"description":"Dynamic token auth recipe. When set, Opik fetches a short-lived bearer from the configured auth service instead of using a static api_key. Only supported for custom providers. Secret credential values read back masked.","properties":{"credentials":{"description":"Fields sent to the token URL. Values flagged as secret are write-only: they read back as the '__SECRET__' sentinel","items":{"$ref":"#/components/schemas/Credential_Write"},"maxItems":20,"minItems":0,"type":"array"},"expires_field":{"description":"Field holding the token lifetime in seconds in the reply; dot-path for nested replies","example":"expires_in","maxLength":250,"minLength":0,"type":"string"},"fallback_ttl_seconds":{"description":"Lifetime in seconds assumed when the reply doesn't state one, capped at one year; 0 disables caching for such replies. A reply-stated lifetime always wins","format":"int64","maximum":31536000,"minimum":0,"type":"integer"},"send_as":{"description":"How credentials are sent: form body (default), JSON body, or basic auth (id/secret in an HTTP Basic header, remaining fields in the form body)","enum":["form","json","basic"],"type":"string"},"token_field":{"description":"Field holding the token in the reply; dot-path for nested replies","example":"access_token","maxLength":250,"minLength":0,"type":"string"},"token_url":{"description":"Auth service URL the credentials are sent to","example":"https://developer.api.example.com/authentication/v1/token","type":"string"}},"type":"object"},"RecentActivityItem_Public":{"properties":{"created_at":{"format":"date-time","type":"string"},"created_by":{"type":"string"},"id":{"format":"uuid","type":"string"},"name":{"type":"string"},"resource_id":{"format":"uuid","type":"string"},"type":{"enum":["trace_daily","experiment","dataset_version","test_suite_version","alert_event","optimization","prompt_version"],"type":"string"}},"type":"object"},"RecentActivityPage_Public":{"properties":{"content":{"items":{"$ref":"#/components/schemas/RecentActivityItem_Public"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"total":{"format":"int64","type":"integer"}},"type":"object"},"ReportCompleteRequest":{"properties":{"content":{"type":"string"},"failure_reason":{"description":"Why the report failed. Only 'out_of_credits' is acted on; any other value is recorded but renders as a generic failure.","maxLength":64,"minLength":0,"type":"string"},"recommended_actions":{"$ref":"#/components/schemas/JsonNode"},"session_id":{"type":"string"},"status":{"enum":["pending","completed","failed"],"type":"string"}},"required":["status"],"type":"object"},"ReportFailure":{"properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"detail":{"type":"string"},"id":{"format":"uuid","readOnly":true,"type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"project_id":{"format":"uuid","type":"string"},"reason":{"maxLength":255,"minLength":0,"type":"string"},"type":{"enum":["agent_insights"],"type":"string"}},"required":["project_id","reason","type"],"type":"object"},"ReportFailurePage":{"properties":{"content":{"items":{"$ref":"#/components/schemas/ReportFailure"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"total":{"format":"int64","type":"integer"}},"type":"object"},"ReportPreference":{"properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"custom_prompt":{"maxLength":5000,"minLength":0,"type":"string"},"enabled":{"type":"boolean"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"project_id":{"format":"uuid","type":"string"},"schedule_time":{"pattern":"\\d{2}:\\d{2}:\\d{2}","type":"string"}},"type":"object"},"ReportedIssue":{"properties":{"cause":{"type":"string"},"count":{"format":"int64","type":"integer"},"description":{"type":"string"},"id":{"format":"uuid","type":"string"},"metadata":{"$ref":"#/components/schemas/JsonNode"},"name":{"maxLength":255,"minLength":0,"type":"string"},"severity":{"enum":["critical","high","medium","low"],"type":"string"},"suggested_fix":{"type":"string"},"total_count":{"format":"int64","type":"integer"},"total_users":{"format":"int64","type":"integer"},"traces_query":{"type":"string"},"users_impacted":{"format":"int64","type":"integer"}},"required":["count","name","severity","total_count","total_users","users_impacted"],"type":"object"},"ResponseFormat":{"properties":{"jsonSchema":{"$ref":"#/components/schemas/JsonSchema"},"type":{"enum":["text","json_object","json_schema"],"type":"string"}},"type":"object"},"Result":{"properties":{"current":{"format":"double","type":"number"},"name":{"type":"string"},"previous":{"format":"double","type":"number"}},"type":"object"},"ResultsNumber_Public":{"properties":{"data":{"items":{"$ref":"#/components/schemas/DataPointNumber_Public"},"type":"array"},"name":{"type":"string"}},"type":"object"},"RetentionRulePage_Public":{"properties":{"content":{"items":{"$ref":"#/components/schemas/RetentionRule_Public"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"total":{"format":"int64","type":"integer"}},"type":"object"},"RetentionRule_Public":{"properties":{"apply_to_past":{"type":"boolean"},"catch_up_cursor":{"description":"Current position of historical data cleanup","format":"uuid","readOnly":true,"type":"string"},"catch_up_done":{"description":"Whether historical catch-up is complete","readOnly":true,"type":"boolean"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"enabled":{"readOnly":true,"type":"boolean"},"id":{"format":"uuid","readOnly":true,"type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"level":{"description":"Computed from projectId and organizationLevel","enum":["organization","workspace","project"],"readOnly":true,"type":"string"},"project_id":{"format":"uuid","type":"string"},"retention":{"enum":["short_14d","base_60d","extended_400d","unlimited"],"type":"string"},"workspace_id":{"readOnly":true,"type":"string"}},"required":["retention"],"type":"object"},"RetentionRule_Write":{"properties":{"apply_to_past":{"type":"boolean"},"organization_level":{"description":"Set to true to create an organization-level rule","type":"boolean","writeOnly":true},"project_id":{"format":"uuid","type":"string"},"retention":{"enum":["short_14d","base_60d","extended_400d","unlimited"],"type":"string"}},"required":["retention"],"type":"object"},"ScoreCondition":{"properties":{"operator":{"enum":[">","<","="],"type":"string"},"score_name":{"maxLength":255,"minLength":0,"type":"string"},"value":{"format":"double","type":"number"}},"required":["operator","score_name","value"],"type":"object"},"ScoreCondition_Public":{"properties":{"operator":{"enum":[">","<","="],"type":"string"},"score_name":{"maxLength":255,"minLength":0,"type":"string"},"value":{"format":"double","type":"number"}},"required":["operator","score_name","value"],"type":"object"},"ScoreCondition_Write":{"properties":{"operator":{"enum":[">","<","="],"type":"string"},"score_name":{"maxLength":255,"minLength":0,"type":"string"},"value":{"format":"double","type":"number"}},"required":["operator","score_name","value"],"type":"object"},"ScoreName":{"properties":{"name":{"type":"string"},"type":{"type":"string"}},"type":"object"},"ScoreName_Public":{"properties":{"name":{"type":"string"},"type":{"type":"string"}},"type":"object"},"ServiceTogglesConfig":{"properties":{"alertsEnabled":{"type":"boolean"},"anthropicProviderEnabled":{"type":"boolean"},"bedrockProviderEnabled":{"type":"boolean"},"costIntelligenceEnabled":{"type":"boolean"},"customllmProviderEnabled":{"type":"boolean"},"datasetExportEnabled":{"type":"boolean"},"datasetVersioningEnabled":{"type":"boolean"},"defaultPageSize":{"format":"int32","maximum":100,"minimum":5,"type":"integer"},"demoDataEnabled":{"type":"boolean"},"exportEnabled":{"type":"boolean"},"geminiProviderEnabled":{"type":"boolean"},"guardrailsEnabled":{"type":"boolean"},"ollamaProviderEnabled":{"type":"boolean"},"ollieEnabled":{"type":"boolean"},"onlineScoringTracingEnabled":{"type":"boolean"},"openaiProviderEnabled":{"type":"boolean"},"openrouterProviderEnabled":{"type":"boolean"},"opikAIEnabled":{"type":"boolean"},"projectHomepageEnabled":{"type":"boolean"},"pythonEvaluatorEnabled":{"type":"boolean"},"spanLlmAsJudgeEnabled":{"type":"boolean"},"spanUserDefinedMetricPythonEnabled":{"type":"boolean"},"traceThreadPythonEvaluatorEnabled":{"type":"boolean"},"vertexaiProviderEnabled":{"type":"boolean"},"welcomeWizardEnabled":{"type":"boolean"}},"required":["alertsEnabled","anthropicProviderEnabled","bedrockProviderEnabled","costIntelligenceEnabled","customllmProviderEnabled","datasetExportEnabled","datasetVersioningEnabled","demoDataEnabled","exportEnabled","geminiProviderEnabled","guardrailsEnabled","ollamaProviderEnabled","ollieEnabled","onlineScoringTracingEnabled","openaiProviderEnabled","openrouterProviderEnabled","opikAIEnabled","projectHomepageEnabled","pythonEvaluatorEnabled","spanLlmAsJudgeEnabled","spanUserDefinedMetricPythonEnabled","traceThreadPythonEvaluatorEnabled","vertexaiProviderEnabled","welcomeWizardEnabled"],"type":"object"},"SpanBatchUpdate":{"description":"Request to batch update multiple spans","properties":{"ids":{"description":"List of span IDs to update (max 1000)","items":{"description":"List of span IDs to update (max 1000)","format":"uuid","type":"string"},"maxItems":1000,"minItems":1,"type":"array","uniqueItems":true},"merge_tags":{"description":"If true, merge tags with existing tags instead of replacing them. Default: false","type":"boolean"},"update":{"$ref":"#/components/schemas/SpanUpdate"}},"required":["ids","update"],"type":"object"},"SpanBatch_Write":{"properties":{"spans":{"items":{"$ref":"#/components/schemas/Span_Write"},"maxItems":1000,"minItems":1,"type":"array"}},"required":["spans"],"type":"object"},"SpanEnrichmentOptions":{"description":"Options for enriching span data","properties":{"includeComments":{"type":"boolean"},"includeFeedbackScores":{"type":"boolean"},"includeMetadata":{"type":"boolean"},"includeTags":{"type":"boolean"},"includeUsage":{"type":"boolean"}},"type":"object"},"SpanFilter":{"properties":{"field":{"type":"string"},"key":{"type":"string"},"operator":{"enum":["contains","not_contains","starts_with","ends_with","=","!=",">",">=","<","<=","is_empty","is_not_empty","in","not_in"],"type":"string"},"value":{"type":"string"}},"type":"object"},"SpanFilter_Public":{"properties":{"field":{"type":"string"},"key":{"type":"string"},"operator":{"enum":["contains","not_contains","starts_with","ends_with","=","!=",">",">=","<","<=","is_empty","is_not_empty","in","not_in"],"type":"string"},"value":{"type":"string"}},"type":"object"},"SpanPage_Public":{"properties":{"content":{"items":{"$ref":"#/components/schemas/Span_Public"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"sortableBy":{"items":{"type":"string"},"type":"array"},"total":{"format":"int64","type":"integer"}},"type":"object"},"SpanSearchStreamRequest_Public":{"properties":{"exclude":{"description":"Fields to exclude from the response","items":{"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"],"type":"string"},"type":"array","uniqueItems":true},"filters":{"items":{"$ref":"#/components/schemas/SpanFilter_Public"},"type":"array"},"from_time":{"description":"Filter spans created from this time (ISO-8601 format).","format":"date-time","type":"string"},"last_retrieved_id":{"format":"uuid","type":"string"},"limit":{"default":500,"description":"Max number of spans to be streamed","format":"int32","maximum":2000,"minimum":1,"type":"integer"},"project_id":{"format":"uuid","type":"string"},"project_name":{"type":"string"},"to_time":{"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","type":"string"},"trace_id":{"format":"uuid","type":"string"},"truncate":{"default":true,"description":"Truncate image included in either input, output or metadata","type":"boolean"},"type":{"enum":["general","tool","llm","guardrail"],"type":"string"}},"type":"object"},"SpanUpdate":{"properties":{"end_time":{"format":"date-time","type":"string"},"environment":{"maxLength":150,"minLength":0,"type":"string"},"error_info":{"$ref":"#/components/schemas/ErrorInfo"},"input":{"$ref":"#/components/schemas/JsonListString"},"metadata":{"$ref":"#/components/schemas/JsonListString"},"model":{"type":"string"},"name":{"type":"string"},"output":{"$ref":"#/components/schemas/JsonListString"},"parent_span_id":{"format":"uuid","type":"string"},"project_id":{"description":"If null and project_name not specified, Default Project is assumed","format":"uuid","type":"string"},"project_name":{"description":"If null and project_id not specified, Default Project is assumed","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"provider":{"type":"string"},"source":{"enum":["sdk","experiment","playground","optimization","evaluator"],"type":"string"},"tags":{"description":"Tags","items":{"description":"Tags","maxLength":100,"minLength":0,"type":"string"},"maxItems":50,"minItems":0,"type":"array","uniqueItems":true},"tags_to_add":{"description":"Tags to add","items":{"description":"Tags to add","maxLength":100,"minLength":0,"type":"string"},"maxItems":50,"minItems":0,"type":"array","uniqueItems":true},"tags_to_remove":{"description":"Tags to remove","items":{"description":"Tags to remove","maxLength":100,"minLength":0,"type":"string"},"maxItems":50,"minItems":0,"type":"array","uniqueItems":true},"total_estimated_cost":{"exclusiveMinimum":false,"minimum":0,"type":"number"},"trace_id":{"format":"uuid","type":"string"},"ttft":{"format":"double","type":"number"},"type":{"enum":["general","tool","llm","guardrail"],"type":"string"},"usage":{"additionalProperties":{"format":"int32","type":"integer"},"type":"object"}},"required":["trace_id"],"type":"object"},"Span_ExperimentItemBulkWriteView":{"properties":{"end_time":{"format":"date-time","type":"string"},"environment":{"maxLength":150,"minLength":0,"type":"string"},"error_info":{"$ref":"#/components/schemas/ErrorInfo_ExperimentItemBulkWriteView"},"id":{"format":"uuid","type":"string"},"input":{"$ref":"#/components/schemas/JsonListString_ExperimentItemBulkWriteView"},"last_updated_at":{"format":"date-time","type":"string"},"metadata":{"$ref":"#/components/schemas/JsonListString_ExperimentItemBulkWriteView"},"model":{"type":"string"},"name":{"type":"string"},"output":{"$ref":"#/components/schemas/JsonListString_ExperimentItemBulkWriteView"},"parent_span_id":{"format":"uuid","type":"string"},"provider":{"type":"string"},"source":{"enum":["sdk","experiment","playground","optimization","evaluator"],"type":"string"},"start_time":{"format":"date-time","type":"string"},"tags":{"items":{"type":"string"},"type":"array","uniqueItems":true},"total_estimated_cost":{"exclusiveMinimum":false,"minimum":0,"type":"number"},"total_estimated_cost_version":{"type":"string"},"ttft":{"description":"Time to first token in milliseconds","format":"double","type":"number"},"type":{"enum":["general","tool","llm","guardrail"],"type":"string"},"usage":{"additionalProperties":{"format":"int32","type":"integer"},"type":"object"}},"required":["start_time"],"type":"object"},"Span_Public":{"properties":{"comments":{"items":{"$ref":"#/components/schemas/Comment_Public"},"readOnly":true,"type":"array"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"duration":{"description":"Duration in milliseconds as a decimal number to support sub-millisecond precision","format":"double","readOnly":true,"type":"number"},"end_time":{"format":"date-time","type":"string"},"environment":{"maxLength":150,"minLength":0,"type":"string"},"error_info":{"$ref":"#/components/schemas/ErrorInfo_Public"},"feedback_scores":{"items":{"$ref":"#/components/schemas/FeedbackScore_Public"},"readOnly":true,"type":"array"},"id":{"format":"uuid","type":"string"},"input":{"$ref":"#/components/schemas/JsonListString_Public"},"last_updated_at":{"format":"date-time","type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"metadata":{"$ref":"#/components/schemas/JsonListString_Public"},"model":{"type":"string"},"name":{"type":"string"},"output":{"$ref":"#/components/schemas/JsonListString_Public"},"parent_span_id":{"format":"uuid","type":"string"},"project_id":{"format":"uuid","readOnly":true,"type":"string"},"project_name":{"description":"If null, the default project is used","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"provider":{"type":"string"},"source":{"enum":["sdk","experiment","playground","optimization","evaluator"],"type":"string"},"start_time":{"format":"date-time","type":"string"},"tags":{"items":{"type":"string"},"type":"array","uniqueItems":true},"total_estimated_cost":{"exclusiveMinimum":false,"minimum":0,"type":"number"},"total_estimated_cost_version":{"type":"string"},"trace_id":{"format":"uuid","type":"string"},"ttft":{"description":"Time to first token in milliseconds","format":"double","type":"number"},"type":{"enum":["general","tool","llm","guardrail"],"type":"string"},"usage":{"additionalProperties":{"format":"int32","type":"integer"},"type":"object"}},"required":["start_time"],"type":"object"},"Span_Write":{"properties":{"end_time":{"format":"date-time","type":"string"},"environment":{"maxLength":150,"minLength":0,"type":"string"},"error_info":{"$ref":"#/components/schemas/ErrorInfo_Write"},"id":{"format":"uuid","type":"string"},"input":{"$ref":"#/components/schemas/JsonListString_Write"},"last_updated_at":{"format":"date-time","type":"string"},"metadata":{"$ref":"#/components/schemas/JsonListString_Write"},"model":{"type":"string"},"name":{"type":"string"},"output":{"$ref":"#/components/schemas/JsonListString_Write"},"parent_span_id":{"format":"uuid","type":"string"},"project_name":{"description":"If null, the default project is used","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"provider":{"type":"string"},"source":{"enum":["sdk","experiment","playground","optimization","evaluator"],"type":"string"},"start_time":{"format":"date-time","type":"string"},"tags":{"items":{"type":"string"},"type":"array","uniqueItems":true},"total_estimated_cost":{"exclusiveMinimum":false,"minimum":0,"type":"number"},"total_estimated_cost_version":{"type":"string"},"trace_id":{"format":"uuid","type":"string"},"ttft":{"description":"Time to first token in milliseconds","format":"double","type":"number"},"type":{"enum":["general","tool","llm","guardrail"],"type":"string"},"usage":{"additionalProperties":{"format":"int32","type":"integer"},"type":"object"}},"required":["start_time"],"type":"object"},"SpansCountResponse":{"properties":{"workspaces_spans_count":{"items":{"$ref":"#/components/schemas/WorkspaceSpansCount"},"type":"array"}},"type":"object"},"StartMultipartUploadRequest":{"properties":{"container_id":{"format":"uuid","readOnly":true,"type":"string"},"entity_id":{"format":"uuid","type":"string"},"entity_type":{"enum":["trace","span"],"type":"string"},"file_name":{"minLength":1,"type":"string"},"mime_type":{"type":"string"},"num_of_file_parts":{"format":"int32","type":"integer"},"path":{"minLength":1,"type":"string"},"project_name":{"description":"If null, the default project is used","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"}},"required":["entity_id","entity_type","file_name","num_of_file_parts","path"],"type":"object"},"StartMultipartUploadResponse":{"properties":{"pre_sign_urls":{"items":{"type":"string"},"type":"array"},"upload_id":{"minLength":1,"type":"string"}},"required":["pre_sign_urls","upload_id"],"type":"object"},"StreamOptions":{"properties":{"includeUsage":{"type":"boolean"}},"type":"object"},"StudioEvaluation_Public":{"properties":{"metrics":{"items":{"$ref":"#/components/schemas/StudioMetric_Public"},"minItems":1,"type":"array"}},"required":["metrics"],"type":"object"},"StudioEvaluation_Write":{"properties":{"metrics":{"items":{"$ref":"#/components/schemas/StudioMetric_Write"},"minItems":1,"type":"array"}},"required":["metrics"],"type":"object"},"StudioLlmModel_Public":{"properties":{"model":{"minLength":1,"type":"string"},"parameters":{"$ref":"#/components/schemas/JsonNode_Public"}},"required":["model"],"type":"object"},"StudioLlmModel_Write":{"properties":{"model":{"minLength":1,"type":"string"},"parameters":{"$ref":"#/components/schemas/JsonNode_Write"}},"required":["model"],"type":"object"},"StudioMessage_Public":{"properties":{"content":{"minLength":1,"type":"string"},"role":{"minLength":1,"type":"string"}},"required":["content","role"],"type":"object"},"StudioMessage_Write":{"properties":{"content":{"minLength":1,"type":"string"},"role":{"minLength":1,"type":"string"}},"required":["content","role"],"type":"object"},"StudioMetric_Public":{"properties":{"parameters":{"$ref":"#/components/schemas/JsonNode_Public"},"type":{"minLength":1,"type":"string"}},"required":["type"],"type":"object"},"StudioMetric_Write":{"properties":{"parameters":{"$ref":"#/components/schemas/JsonNode_Write"},"type":{"minLength":1,"type":"string"}},"required":["type"],"type":"object"},"StudioOptimizer_Public":{"properties":{"parameters":{"$ref":"#/components/schemas/JsonNode_Public"},"type":{"minLength":1,"type":"string"}},"required":["type"],"type":"object"},"StudioOptimizer_Write":{"properties":{"parameters":{"$ref":"#/components/schemas/JsonNode_Write"},"type":{"minLength":1,"type":"string"}},"required":["type"],"type":"object"},"StudioPrompt_Public":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/StudioMessage_Public"},"minItems":1,"type":"array"}},"required":["messages"],"type":"object"},"StudioPrompt_Write":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/StudioMessage_Write"},"minItems":1,"type":"array"}},"required":["messages"],"type":"object"},"TokenResponse":{"properties":{"access_token":{"type":"string"},"expires_in":{"format":"int64","type":"integer"},"refresh_token":{"type":"string"},"token_type":{"type":"string"},"workspace_id":{"type":"string"},"workspace_name":{"type":"string"}},"type":"object"},"TokenUsageNames":{"properties":{"names":{"items":{"type":"string"},"type":"array"}},"type":"object"},"Tool":{"properties":{"function":{"$ref":"#/components/schemas/Function"},"type":{"enum":["function"],"type":"string"}},"type":"object"},"ToolCall":{"properties":{"function":{"$ref":"#/components/schemas/FunctionCall"},"id":{"type":"string"},"index":{"format":"int32","type":"integer"},"type":{"enum":["function"],"type":"string"}},"type":"object"},"TraceBatchUpdate":{"description":"Request to batch update multiple traces","properties":{"ids":{"description":"List of trace IDs to update (max 1000)","items":{"description":"List of trace IDs to update (max 1000)","format":"uuid","type":"string"},"maxItems":1000,"minItems":1,"type":"array","uniqueItems":true},"merge_tags":{"description":"If true, merge tags with existing tags instead of replacing them. Default: false","type":"boolean"},"update":{"$ref":"#/components/schemas/TraceUpdate"}},"required":["ids","update"],"type":"object"},"TraceBatch_Write":{"properties":{"traces":{"items":{"$ref":"#/components/schemas/Trace_Write"},"maxItems":1000,"minItems":1,"type":"array"}},"required":["traces"],"type":"object"},"TraceCountResponse":{"properties":{"workspaces_traces_count":{"items":{"$ref":"#/components/schemas/WorkspaceTraceCount"},"type":"array"}},"type":"object"},"TraceEnrichmentOptions":{"description":"Options for enriching trace data","properties":{"includeComments":{"type":"boolean"},"includeFeedbackScores":{"type":"boolean"},"includeMetadata":{"type":"boolean"},"includeSpans":{"type":"boolean"},"includeTags":{"type":"boolean"},"includeUsage":{"type":"boolean"}},"type":"object"},"TraceFilter_Public":{"properties":{"field":{"type":"string"},"key":{"type":"string"},"operator":{"enum":["contains","not_contains","starts_with","ends_with","=","!=",">",">=","<","<=","is_empty","is_not_empty","in","not_in"],"type":"string"},"value":{"type":"string"}},"type":"object"},"TracePage_Public":{"properties":{"content":{"items":{"$ref":"#/components/schemas/Trace_Public"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"sortableBy":{"items":{"type":"string"},"type":"array"},"total":{"format":"int64","type":"integer"}},"type":"object"},"TraceSearchStreamRequest_Public":{"properties":{"exclude":{"description":"Fields to exclude from the response","items":{"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"],"type":"string"},"type":"array","uniqueItems":true},"filters":{"items":{"$ref":"#/components/schemas/TraceFilter_Public"},"type":"array"},"from_time":{"description":"Filter traces created from this time (ISO-8601 format).","format":"date-time","type":"string"},"last_retrieved_id":{"format":"uuid","type":"string"},"limit":{"default":500,"description":"Max number of traces to be streamed","format":"int32","maximum":2000,"minimum":1,"type":"integer"},"project_id":{"format":"uuid","type":"string"},"project_name":{"type":"string"},"strip_attachments":{"default":false,"description":"If true, returns attachment references like [file.png]; if false, downloads and reinjects stripped attachments","type":"boolean"},"to_time":{"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","type":"string"},"truncate":{"default":true,"description":"Truncate input, output and metadata to slim payloads","type":"boolean"}},"type":"object"},"TraceThread":{"properties":{"comments":{"items":{"$ref":"#/components/schemas/Comment"},"type":"array"},"created_at":{"format":"date-time","type":"string"},"created_by":{"type":"string"},"duration":{"format":"double","type":"number"},"end_time":{"format":"date-time","type":"string"},"environment":{"type":"string"},"feedback_scores":{"items":{"$ref":"#/components/schemas/FeedbackScore"},"type":"array"},"first_message":{"$ref":"#/components/schemas/JsonListString"},"id":{"type":"string"},"last_message":{"$ref":"#/components/schemas/JsonListString"},"last_updated_at":{"format":"date-time","type":"string"},"last_updated_by":{"type":"string"},"number_of_messages":{"format":"int64","type":"integer"},"project_id":{"format":"uuid","type":"string"},"start_time":{"format":"date-time","type":"string"},"status":{"enum":["active","inactive"],"type":"string"},"tags":{"items":{"type":"string"},"type":"array","uniqueItems":true},"thread_model_id":{"format":"uuid","type":"string"},"total_estimated_cost":{"type":"number"},"usage":{"additionalProperties":{"format":"int64","type":"integer"},"type":"object"}},"type":"object"},"TraceThreadBatchIdentifier":{"properties":{"project_id":{"format":"uuid","type":"string"},"project_name":{"type":"string"},"thread_id":{"type":"string"},"thread_ids":{"items":{"minLength":1,"type":"string"},"maxItems":1000,"minItems":1,"type":"array","uniqueItems":true}},"type":"object"},"TraceThreadBatchUpdate":{"description":"Request to batch update multiple trace threads","properties":{"ids":{"description":"List of thread model IDs to update (max 1000)","items":{"description":"List of thread model IDs to update (max 1000)","format":"uuid","type":"string"},"maxItems":1000,"minItems":1,"type":"array","uniqueItems":true},"merge_tags":{"description":"If true, merge tags with existing tags instead of replacing them. Default: false","type":"boolean"},"update":{"$ref":"#/components/schemas/TraceThreadUpdate"}},"required":["ids","update"],"type":"object"},"TraceThreadFilter":{"properties":{"field":{"type":"string"},"key":{"type":"string"},"operator":{"enum":["contains","not_contains","starts_with","ends_with","=","!=",">",">=","<","<=","is_empty","is_not_empty","in","not_in"],"type":"string"},"value":{"type":"string"}},"type":"object"},"TraceThreadFilter_Public":{"properties":{"field":{"type":"string"},"key":{"type":"string"},"operator":{"enum":["contains","not_contains","starts_with","ends_with","=","!=",">",">=","<","<=","is_empty","is_not_empty","in","not_in"],"type":"string"},"value":{"type":"string"}},"type":"object"},"TraceThreadIdentifier":{"properties":{"project_id":{"format":"uuid","type":"string"},"project_name":{"type":"string"},"thread_id":{"minLength":1,"type":"string"},"truncate":{"type":"boolean"}},"required":["thread_id"],"type":"object"},"TraceThreadPage":{"properties":{"content":{"items":{"$ref":"#/components/schemas/TraceThread"},"type":"array"},"page":{"format":"int32","type":"integer"},"size":{"format":"int32","type":"integer"},"sortableBy":{"items":{"type":"string"},"type":"array"},"total":{"format":"int64","type":"integer"}},"type":"object"},"TraceThreadSearchStreamRequest":{"properties":{"filters":{"items":{"$ref":"#/components/schemas/TraceThreadFilter"},"type":"array"},"from_time":{"description":"Filter trace threads created from this time (ISO-8601 format).","format":"date-time","type":"string"},"last_retrieved_thread_model_id":{"format":"uuid","type":"string"},"limit":{"default":500,"description":"Max number of trace thread to be streamed","format":"int32","maximum":2000,"minimum":1,"type":"integer"},"project_id":{"format":"uuid","type":"string"},"project_name":{"type":"string"},"strip_attachments":{"default":false,"description":"If true, returns attachment references like [file.png]; if false, downloads and reinjects stripped attachments","type":"boolean"},"to_time":{"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","type":"string"},"truncate":{"default":true,"description":"Truncate input, output and metadata to slim payloads","type":"boolean"}},"type":"object"},"TraceThreadUpdate":{"properties":{"tags":{"items":{"maxLength":100,"minLength":0,"type":"string"},"maxItems":50,"minItems":0,"type":"array","uniqueItems":true},"tags_to_add":{"items":{"maxLength":100,"minLength":0,"type":"string"},"maxItems":50,"minItems":0,"type":"array","uniqueItems":true},"tags_to_remove":{"items":{"maxLength":100,"minLength":0,"type":"string"},"maxItems":50,"minItems":0,"type":"array","uniqueItems":true}},"type":"object"},"TraceUpdate":{"properties":{"end_time":{"format":"date-time","type":"string"},"environment":{"maxLength":150,"minLength":0,"type":"string"},"error_info":{"$ref":"#/components/schemas/ErrorInfo"},"input":{"$ref":"#/components/schemas/JsonListString"},"metadata":{"$ref":"#/components/schemas/JsonListString"},"name":{"type":"string"},"output":{"$ref":"#/components/schemas/JsonListString"},"project_id":{"description":"If null and project_name not specified, Default Project is assumed","format":"uuid","type":"string"},"project_name":{"description":"If null and project_id not specified, Default Project is assumed","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"source":{"enum":["sdk","experiment","playground","optimization","evaluator"],"type":"string"},"tags":{"description":"Tags","items":{"description":"Tags","maxLength":100,"minLength":0,"type":"string"},"maxItems":50,"minItems":0,"type":"array","uniqueItems":true},"tags_to_add":{"description":"Tags to add","items":{"description":"Tags to add","maxLength":100,"minLength":0,"type":"string"},"maxItems":50,"minItems":0,"type":"array","uniqueItems":true},"tags_to_remove":{"description":"Tags to remove","items":{"description":"Tags to remove","maxLength":100,"minLength":0,"type":"string"},"maxItems":50,"minItems":0,"type":"array","uniqueItems":true},"thread_id":{"type":"string"},"ttft":{"format":"double","type":"number"}},"type":"object"},"Trace_ExperimentItemBulkWriteView":{"description":"Please provide either none, only one of evaluate_task_result or trace, but never both","properties":{"end_time":{"format":"date-time","type":"string"},"environment":{"maxLength":150,"minLength":0,"type":"string"},"error_info":{"$ref":"#/components/schemas/ErrorInfo_ExperimentItemBulkWriteView"},"id":{"format":"uuid","type":"string"},"input":{"$ref":"#/components/schemas/JsonListString_ExperimentItemBulkWriteView"},"last_updated_at":{"format":"date-time","type":"string"},"metadata":{"$ref":"#/components/schemas/JsonListString_ExperimentItemBulkWriteView"},"name":{"type":"string"},"output":{"$ref":"#/components/schemas/JsonListString_ExperimentItemBulkWriteView"},"project_name":{"description":"If null, the default project is used","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"source":{"enum":["sdk","experiment","playground","optimization","evaluator"],"type":"string"},"start_time":{"format":"date-time","type":"string"},"tags":{"items":{"type":"string"},"type":"array","uniqueItems":true},"thread_id":{"type":"string"},"ttft":{"description":"Time to first token in milliseconds","format":"double","type":"number"}},"required":["start_time"],"type":"object"},"Trace_Public":{"properties":{"comments":{"items":{"$ref":"#/components/schemas/Comment_Public"},"readOnly":true,"type":"array"},"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"duration":{"description":"Duration in milliseconds as a decimal number to support sub-millisecond precision","format":"double","readOnly":true,"type":"number"},"end_time":{"format":"date-time","type":"string"},"environment":{"maxLength":150,"minLength":0,"type":"string"},"error_info":{"$ref":"#/components/schemas/ErrorInfo_Public"},"experiment":{"$ref":"#/components/schemas/ExperimentItemReference_Public"},"feedback_scores":{"items":{"$ref":"#/components/schemas/FeedbackScore_Public"},"readOnly":true,"type":"array"},"guardrails_validations":{"items":{"$ref":"#/components/schemas/GuardrailsValidation_Public"},"readOnly":true,"type":"array"},"has_tool_spans":{"readOnly":true,"type":"boolean"},"id":{"format":"uuid","type":"string"},"input":{"$ref":"#/components/schemas/JsonListString_Public"},"last_updated_at":{"format":"date-time","type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"llm_span_count":{"format":"int32","readOnly":true,"type":"integer"},"metadata":{"$ref":"#/components/schemas/JsonListString_Public"},"name":{"type":"string"},"output":{"$ref":"#/components/schemas/JsonListString_Public"},"project_id":{"format":"uuid","readOnly":true,"type":"string"},"providers":{"description":"List of unique provider names from all spans in this trace, sorted alphabetically","items":{"description":"List of unique provider names from all spans in this trace, sorted alphabetically","readOnly":true,"type":"string"},"readOnly":true,"type":"array"},"source":{"enum":["sdk","experiment","playground","optimization","evaluator"],"type":"string"},"span_count":{"format":"int32","readOnly":true,"type":"integer"},"span_feedback_scores":{"description":"Aggregated feedback scores from all spans in this trace, averaged by score name","items":{"$ref":"#/components/schemas/FeedbackScore_Public"},"readOnly":true,"type":"array"},"start_time":{"format":"date-time","type":"string"},"tags":{"items":{"type":"string"},"type":"array","uniqueItems":true},"thread_id":{"type":"string"},"total_estimated_cost":{"readOnly":true,"type":"number"},"ttft":{"description":"Time to first token in milliseconds","format":"double","type":"number"},"usage":{"additionalProperties":{"format":"int64","readOnly":true,"type":"integer"},"readOnly":true,"type":"object"},"visibility_mode":{"enum":["default","hidden"],"readOnly":true,"type":"string"}},"required":["start_time"],"type":"object"},"Trace_Write":{"properties":{"end_time":{"format":"date-time","type":"string"},"environment":{"maxLength":150,"minLength":0,"type":"string"},"error_info":{"$ref":"#/components/schemas/ErrorInfo_Write"},"id":{"format":"uuid","type":"string"},"input":{"$ref":"#/components/schemas/JsonListString_Write"},"last_updated_at":{"format":"date-time","type":"string"},"metadata":{"$ref":"#/components/schemas/JsonListString_Write"},"name":{"type":"string"},"output":{"$ref":"#/components/schemas/JsonListString_Write"},"project_name":{"description":"If null, the default project is used","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"},"source":{"enum":["sdk","experiment","playground","optimization","evaluator"],"type":"string"},"start_time":{"format":"date-time","type":"string"},"tags":{"items":{"type":"string"},"type":"array","uniqueItems":true},"thread_id":{"type":"string"},"ttft":{"description":"Time to first token in milliseconds","format":"double","type":"number"}},"required":["start_time"],"type":"object"},"Usage":{"properties":{"completionTokens":{"format":"int32","type":"integer"},"completionTokensDetails":{"$ref":"#/components/schemas/CompletionTokensDetails"},"promptTokens":{"format":"int32","type":"integer"},"promptTokensDetails":{"$ref":"#/components/schemas/PromptTokensDetails"},"totalTokens":{"format":"int32","type":"integer"}},"type":"object"},"UsageByWorkspaceProjectUserResponse":{"properties":{"breakdown":{"items":{"$ref":"#/components/schemas/WorkspaceProjectUserCount"},"type":"array"}},"type":"object"},"ValidatedToken":{"properties":{"expires_at":{"format":"date-time","type":"string"},"resource":{"type":"string"},"user_name":{"type":"string"},"workspace_id":{"type":"string"},"workspace_name":{"type":"string"}},"type":"object"},"ValueEntry":{"properties":{"author":{"type":"string"},"category_name":{"type":"string"},"last_updated_at":{"format":"date-time","type":"string"},"reason":{"type":"string"},"source":{"enum":["ui","sdk","online_scoring"],"type":"string"},"source_queue_id":{"type":"string"},"span_id":{"type":"string"},"span_type":{"type":"string"},"value":{"type":"number"}},"readOnly":true,"type":"object"},"ValueEntry_Compare":{"properties":{"author":{"type":"string"},"category_name":{"type":"string"},"last_updated_at":{"format":"date-time","type":"string"},"reason":{"type":"string"},"source":{"enum":["ui","sdk","online_scoring"],"type":"string"},"source_queue_id":{"type":"string"},"span_id":{"type":"string"},"span_type":{"type":"string"},"value":{"type":"number"}},"readOnly":true,"type":"object"},"ValueEntry_ExperimentItemBulkWriteView":{"properties":{"author":{"type":"string"},"category_name":{"type":"string"},"last_updated_at":{"format":"date-time","type":"string"},"reason":{"type":"string"},"source":{"enum":["ui","sdk","online_scoring"],"type":"string"},"source_queue_id":{"type":"string"},"span_id":{"type":"string"},"span_type":{"type":"string"},"value":{"type":"number"}},"readOnly":true,"type":"object"},"ValueEntry_Public":{"properties":{"author":{"type":"string"},"category_name":{"type":"string"},"last_updated_at":{"format":"date-time","type":"string"},"reason":{"type":"string"},"source":{"enum":["ui","sdk","online_scoring"],"type":"string"},"source_queue_id":{"type":"string"},"span_id":{"type":"string"},"span_type":{"type":"string"},"value":{"type":"number"}},"readOnly":true,"type":"object"},"WebhookExamples":{"properties":{"response_examples":{"additionalProperties":{"type":"object"},"type":"object"}},"type":"object"},"WebhookTestResult":{"properties":{"error_message":{"type":"string"},"request_body":{"type":"string"},"status":{"enum":["success","failure"],"type":"string"},"status_code":{"format":"int32","type":"integer"}},"type":"object"},"Webhook_Public":{"properties":{"created_at":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"readOnly":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"type":"object"},"id":{"format":"uuid","type":"string"},"last_updated_at":{"format":"date-time","readOnly":true,"type":"string"},"last_updated_by":{"readOnly":true,"type":"string"},"name":{"type":"string"},"secret_token":{"maxLength":250,"minLength":0,"type":"string"},"url":{"minLength":1,"type":"string"}},"required":["url"],"type":"object"},"Webhook_Write":{"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"id":{"format":"uuid","type":"string"},"name":{"type":"string"},"secret_token":{"maxLength":250,"minLength":0,"type":"string"},"url":{"minLength":1,"type":"string"}},"required":["url"],"type":"object"},"WelcomeWizardSubmission":{"properties":{"email":{"description":"Optional user email","format":"email","maxLength":255,"minLength":0,"type":"string"},"integrations":{"description":"List of integrations the user selected","items":{"description":"List of integrations the user selected","type":"string"},"type":"array"},"join_beta_program":{"description":"Whether user wants to join beta programs","type":"boolean"},"role":{"description":"Optional user role","maxLength":100,"minLength":0,"type":"string"}},"type":"object"},"WelcomeWizardTracking":{"properties":{"completed":{"description":"Whether the welcome wizard has been completed","type":"boolean"}},"type":"object"},"WorkspaceConfiguration":{"properties":{"color_map":{"additionalProperties":{"description":"Workspace-level color map. Maps label names to hex color values (e.g. #FF0000). Max 10000 entries.","type":"string"},"description":"Workspace-level color map. Maps label names to hex color values (e.g. #FF0000). Max 10000 entries.","type":"object"},"timeout_to_mark_thread_as_inactive":{"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.","type":"string"},"truncation_on_tables":{"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,"type":"boolean"}},"type":"object"},"WorkspaceInfo":{"properties":{"id":{"type":"string"},"is_default":{"type":"boolean"},"name":{"type":"string"}},"type":"object"},"WorkspaceMetricResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/Result"},"type":"array"}},"type":"object"},"WorkspaceMetricsSummaryRequest":{"properties":{"interval_end":{"format":"date-time","type":"string"},"interval_start":{"format":"date-time","type":"string"},"project_ids":{"items":{"format":"uuid","type":"string"},"type":"array","uniqueItems":true},"start_before_end":{"type":"boolean"}},"required":["interval_end","interval_start"],"type":"object"},"WorkspaceMetricsSummaryResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/Result"},"type":"array"}},"type":"object"},"WorkspaceNameHolder":{"properties":{"workspace_name":{"type":"string"}},"type":"object"},"WorkspaceProjectUserCount":{"properties":{"count":{"format":"int64","type":"integer"},"project_id":{"format":"uuid","type":"string"},"user":{"type":"string"},"workspace_id":{"type":"string"}},"type":"object"},"WorkspaceSpanMetricRequest":{"properties":{"breakdown":{"$ref":"#/components/schemas/BreakdownConfig"},"filters":{"items":{"$ref":"#/components/schemas/SpanFilter"},"type":"array"},"interval":{"enum":["HOURLY","DAILY","WEEKLY","TOTAL"],"type":"string"},"interval_end":{"format":"date-time","type":"string"},"interval_start":{"format":"date-time","type":"string"},"metric_type":{"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"],"type":"string"},"project_ids":{"items":{"format":"uuid","type":"string"},"type":"array","uniqueItems":true},"start_before_end":{"type":"boolean"}},"required":["interval_start"],"type":"object"},"WorkspaceSpansCount":{"properties":{"span_count":{"format":"int32","type":"integer"},"workspace":{"type":"string"}},"type":"object"},"WorkspaceTokenUsageNamesRequest":{"properties":{"project_ids":{"items":{"format":"uuid","type":"string"},"type":"array","uniqueItems":true}},"type":"object"},"WorkspaceTraceCount":{"properties":{"trace_count":{"format":"int32","type":"integer"},"workspace":{"type":"string"}},"type":"object"},"WorkspaceUserPermissions":{"properties":{"permissions":{"items":{"$ref":"#/components/schemas/Permission"},"type":"array"},"userName":{"type":"string"},"workspaceName":{"type":"string"}},"type":"object"}}},"info":{"contact":{"name":"Github Repository","url":"https://github.com/comet-ml/opik"},"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","license":{"name":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"},"title":"Opik REST API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/.well-known/oauth-authorization-server":{"get":{"description":"Get OAuth 2.1 Authorization Server Metadata (RFC 8414)","operationId":"getOAuthAuthorizationServerMetadata","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizationServerMetadata"}}},"description":"Authorization Server Metadata"}},"summary":"Get OAuth Authorization Server Metadata","tags":["MCP OAuth"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/.well-known/oauth-authorization-server\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/.well-known/oauth-authorization-server'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/.well-known/oauth-authorization-server\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/.well-known/oauth-authorization-server\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/.well-known/oauth-authorization-server', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/.well-known/oauth-authorization-server', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/.well-known/oauth-authorization-server\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/.well-known/oauth-authorization-server\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/.well-known/oauth-authorization-server\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/is-alive/ping":{"get":{"operationId":"isAlive","responses":{"default":{"content":{"application/json":{}},"description":"default response"}},"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/is-alive/ping\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/is-alive/ping'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/is-alive/ping\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/is-alive/ping\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/is-alive/ping', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/is-alive/ping', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/is-alive/ping\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/is-alive/ping\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/is-alive/ping\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/is-alive/ver":{"get":{"operationId":"version","responses":{"default":{"content":{"application/json":{}},"description":"default response"}},"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/is-alive/ver\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/is-alive/ver'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/is-alive/ver\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/is-alive/ver\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/is-alive/ver', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/is-alive/ver', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/is-alive/ver\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/is-alive/ver\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/is-alive/ver\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/oauth/authorize":{"get":{"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":[{"in":"query","name":"client_id","required":true,"schema":{"minLength":1,"type":"string"}},{"in":"query","name":"redirect_uri","required":true,"schema":{"minLength":1,"type":"string"}},{"in":"query","name":"response_type","schema":{"type":"string"}},{"in":"query","name":"code_challenge","schema":{"type":"string"}},{"in":"query","name":"code_challenge_method","schema":{"type":"string"}},{"in":"query","name":"resource","schema":{"type":"string"}},{"in":"query","name":"state","schema":{"type":"string"}}],"responses":{"302":{"description":"Redirect to login, consent, or client redirect_uri with an error"}},"summary":"OAuth Authorization Endpoint","tags":["MCP OAuth"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/oauth/authorize?client_id=string&code_challenge=string&code_challenge_method=string&redirect_uri=string&resource=string&response_type=string&state=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/oauth/authorize?client_id=string&code_challenge=string&code_challenge_method=string&redirect_uri=string&resource=string&response_type=string&state=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/oauth/authorize?client_id=string&code_challenge=string&code_challenge_method=string&redirect_uri=string&resource=string&response_type=string&state=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/oauth/authorize?client_id=string&code_challenge=string&code_challenge_method=string&redirect_uri=string&resource=string&response_type=string&state=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/oauth/authorize?client_id=string&code_challenge=string&code_challenge_method=string&redirect_uri=string&resource=string&response_type=string&state=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/oauth/authorize?client_id=string&code_challenge=string&code_challenge_method=string&redirect_uri=string&resource=string&response_type=string&state=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/oauth/authorize?client_id=string&code_challenge=string&code_challenge_method=string&redirect_uri=string&resource=string&response_type=string&state=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/oauth/authorize?client_id=string&code_challenge=string&code_challenge_method=string&redirect_uri=string&resource=string&response_type=string&state=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/oauth/authorize?client_id=string&code_challenge=string&code_challenge_method=string&redirect_uri=string&resource=string&response_type=string&state=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"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":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsentResponse"}}},"description":"Consent response with the client redirect target"}},"summary":"Submit Authorization Consent","tags":["MCP OAuth"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/oauth/authorize\");\nrequest.Content = new StringContent(\"{\\\"client_id\\\":\\\"string\\\",\\\"code_challenge\\\":\\\"string\\\",\\\"code_challenge_method\\\":\\\"string\\\",\\\"csrf\\\":\\\"string\\\",\\\"redirect_uri\\\":\\\"string\\\",\\\"resource\\\":\\\"string\\\",\\\"state\\\":\\\"string\\\",\\\"workspace_id\\\":\\\"string\\\",\\\"workspace_name\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/oauth/authorize' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"client_id\":\"string\",\"code_challenge\":\"string\",\"code_challenge_method\":\"string\",\"csrf\":\"string\",\"redirect_uri\":\"string\",\"resource\":\"string\",\"state\":\"string\",\"workspace_id\":\"string\",\"workspace_name\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"client_id\":\"string\",\"code_challenge\":\"string\",\"code_challenge_method\":\"string\",\"csrf\":\"string\",\"redirect_uri\":\"string\",\"resource\":\"string\",\"state\":\"string\",\"workspace_id\":\"string\",\"workspace_name\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/oauth/authorize\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/oauth/authorize\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"client_id\\\":\\\"string\\\",\\\"code_challenge\\\":\\\"string\\\",\\\"code_challenge_method\\\":\\\"string\\\",\\\"csrf\\\":\\\"string\\\",\\\"redirect_uri\\\":\\\"string\\\",\\\"resource\\\":\\\"string\\\",\\\"state\\\":\\\"string\\\",\\\"workspace_id\\\":\\\"string\\\",\\\"workspace_name\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/oauth/authorize', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"client_id\":\"string\",\"code_challenge\":\"string\",\"code_challenge_method\":\"string\",\"csrf\":\"string\",\"redirect_uri\":\"string\",\"resource\":\"string\",\"state\":\"string\",\"workspace_id\":\"string\",\"workspace_name\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/oauth/authorize', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"client_id\\\":\\\"string\\\",\\\"code_challenge\\\":\\\"string\\\",\\\"code_challenge_method\\\":\\\"string\\\",\\\"csrf\\\":\\\"string\\\",\\\"redirect_uri\\\":\\\"string\\\",\\\"resource\\\":\\\"string\\\",\\\"state\\\":\\\"string\\\",\\\"workspace_id\\\":\\\"string\\\",\\\"workspace_name\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/oauth/authorize\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"client_id\\\":\\\"string\\\",\\\"code_challenge\\\":\\\"string\\\",\\\"code_challenge_method\\\":\\\"string\\\",\\\"csrf\\\":\\\"string\\\",\\\"redirect_uri\\\":\\\"string\\\",\\\"resource\\\":\\\"string\\\",\\\"state\\\":\\\"string\\\",\\\"workspace_id\\\":\\\"string\\\",\\\"workspace_name\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/oauth/authorize\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"client_id\":\"string\",\"code_challenge\":\"string\",\"code_challenge_method\":\"string\",\"csrf\":\"string\",\"redirect_uri\":\"string\",\"resource\":\"string\",\"state\":\"string\",\"workspace_id\":\"string\",\"workspace_name\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/oauth/authorize\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"client_id\\\":\\\"string\\\",\\\"code_challenge\\\":\\\"string\\\",\\\"code_challenge_method\\\":\\\"string\\\",\\\"csrf\\\":\\\"string\\\",\\\"redirect_uri\\\":\\\"string\\\",\\\"resource\\\":\\\"string\\\",\\\"state\\\":\\\"string\\\",\\\"workspace_id\\\":\\\"string\\\",\\\"workspace_name\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/oauth/authorize/context":{"get":{"description":"Get the client details, eligible workspaces, and a CSRF token used to render the consent screen","operationId":"getAuthorizeContext","parameters":[{"in":"query","name":"client_id","required":true,"schema":{"minLength":1,"type":"string"}},{"in":"query","name":"redirect_uri","required":true,"schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizeContext"}}},"description":"Authorization consent context"}},"summary":"Get Authorization Consent Context","tags":["MCP OAuth"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/oauth/authorize/context?client_id=string&redirect_uri=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/oauth/authorize/context?client_id=string&redirect_uri=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/oauth/authorize/context?client_id=string&redirect_uri=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/oauth/authorize/context?client_id=string&redirect_uri=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/oauth/authorize/context?client_id=string&redirect_uri=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/oauth/authorize/context?client_id=string&redirect_uri=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/oauth/authorize/context?client_id=string&redirect_uri=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/oauth/authorize/context?client_id=string&redirect_uri=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/oauth/authorize/context?client_id=string&redirect_uri=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/oauth/register":{"post":{"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":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientRegistrationResponse"}}},"description":"Registered client metadata"},"429":{"description":"Registration rate limit exceeded"}},"summary":"OAuth Dynamic Client Registration Endpoint","tags":["MCP OAuth"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/oauth/register\");\nrequest.Content = new StringContent(\"{\\\"client_name\\\":\\\"string\\\",\\\"client_uri\\\":\\\"string\\\",\\\"logo_uri\\\":\\\"string\\\",\\\"redirect_uris\\\":[\\\"string\\\"],\\\"software_id\\\":\\\"string\\\",\\\"software_version\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/oauth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"client_name\":\"string\",\"client_uri\":\"string\",\"logo_uri\":\"string\",\"redirect_uris\":[\"string\"],\"software_id\":\"string\",\"software_version\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"client_name\":\"string\",\"client_uri\":\"string\",\"logo_uri\":\"string\",\"redirect_uris\":[\"string\"],\"software_id\":\"string\",\"software_version\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/oauth/register\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/oauth/register\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"client_name\\\":\\\"string\\\",\\\"client_uri\\\":\\\"string\\\",\\\"logo_uri\\\":\\\"string\\\",\\\"redirect_uris\\\":[\\\"string\\\"],\\\"software_id\\\":\\\"string\\\",\\\"software_version\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/oauth/register', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"client_name\":\"string\",\"client_uri\":\"string\",\"logo_uri\":\"string\",\"redirect_uris\":[\"string\"],\"software_id\":\"string\",\"software_version\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/oauth/register', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"client_name\\\":\\\"string\\\",\\\"client_uri\\\":\\\"string\\\",\\\"logo_uri\\\":\\\"string\\\",\\\"redirect_uris\\\":[\\\"string\\\"],\\\"software_id\\\":\\\"string\\\",\\\"software_version\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/oauth/register\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"client_name\\\":\\\"string\\\",\\\"client_uri\\\":\\\"string\\\",\\\"logo_uri\\\":\\\"string\\\",\\\"redirect_uris\\\":[\\\"string\\\"],\\\"software_id\\\":\\\"string\\\",\\\"software_version\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/oauth/register\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"client_name\":\"string\",\"client_uri\":\"string\",\"logo_uri\":\"string\",\"redirect_uris\":[\"string\"],\"software_id\":\"string\",\"software_version\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/oauth/register\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"client_name\\\":\\\"string\\\",\\\"client_uri\\\":\\\"string\\\",\\\"logo_uri\\\":\\\"string\\\",\\\"redirect_uris\\\":[\\\"string\\\"],\\\"software_id\\\":\\\"string\\\",\\\"software_version\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/oauth/revoke":{"post":{"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":{"properties":{"client_id":{"type":"string"},"token":{"type":"string"}},"type":"object"}}}},"responses":{"200":{"description":"Revocation acknowledged"}},"summary":"OAuth Token Revocation Endpoint","tags":["MCP OAuth"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/oauth/revoke\");\nrequest.Content = new StringContent(\"{\\\"client_id\\\":\\\"string\\\",\\\"token\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/oauth/revoke' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"client_id\":\"string\",\"token\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"client_id\":\"string\",\"token\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/oauth/revoke\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/oauth/revoke\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"client_id\\\":\\\"string\\\",\\\"token\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/oauth/revoke', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"client_id\":\"string\",\"token\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/oauth/revoke', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"client_id\\\":\\\"string\\\",\\\"token\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/oauth/revoke\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"client_id\\\":\\\"string\\\",\\\"token\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/oauth/revoke\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"client_id\":\"string\",\"token\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/oauth/revoke\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"client_id\\\":\\\"string\\\",\\\"token\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/oauth/token":{"post":{"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":{"properties":{"client_id":{"type":"string"},"code":{"type":"string"},"code_verifier":{"type":"string"},"grant_type":{"type":"string"},"redirect_uri":{"type":"string"},"refresh_token":{"type":"string"}},"type":"object"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}},"description":"Token response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthError"}}},"description":"OAuth error (RFC 6749 §5.2)"}},"summary":"OAuth Token Endpoint","tags":["MCP OAuth"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/oauth/token\");\nrequest.Content = new StringContent(\"{\\\"client_id\\\":\\\"string\\\",\\\"code\\\":\\\"string\\\",\\\"code_verifier\\\":\\\"string\\\",\\\"grant_type\\\":\\\"string\\\",\\\"redirect_uri\\\":\\\"string\\\",\\\"refresh_token\\\":\\\"\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/oauth/token' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"client_id\":\"string\",\"code\":\"string\",\"code_verifier\":\"string\",\"grant_type\":\"string\",\"redirect_uri\":\"string\",\"refresh_token\":\"[REDACTED]\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"client_id\":\"string\",\"code\":\"string\",\"code_verifier\":\"string\",\"grant_type\":\"string\",\"redirect_uri\":\"string\",\"refresh_token\":\"[REDACTED]\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/oauth/token\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/oauth/token\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"client_id\\\":\\\"string\\\",\\\"code\\\":\\\"string\\\",\\\"code_verifier\\\":\\\"string\\\",\\\"grant_type\\\":\\\"string\\\",\\\"redirect_uri\\\":\\\"string\\\",\\\"refresh_token\\\":\\\"\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/oauth/token', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"client_id\":\"string\",\"code\":\"string\",\"code_verifier\":\"string\",\"grant_type\":\"string\",\"redirect_uri\":\"string\",\"refresh_token\":\"[REDACTED]\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/oauth/token', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"client_id\\\":\\\"string\\\",\\\"code\\\":\\\"string\\\",\\\"code_verifier\\\":\\\"string\\\",\\\"grant_type\\\":\\\"string\\\",\\\"redirect_uri\\\":\\\"string\\\",\\\"refresh_token\\\":\\\"\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/oauth/token\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"client_id\\\":\\\"string\\\",\\\"code\\\":\\\"string\\\",\\\"code_verifier\\\":\\\"string\\\",\\\"grant_type\\\":\\\"string\\\",\\\"redirect_uri\\\":\\\"string\\\",\\\"refresh_token\\\":\\\"\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/oauth/token\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"client_id\":\"string\",\"code\":\"string\",\"code_verifier\":\"string\",\"grant_type\":\"string\",\"redirect_uri\":\"string\",\"refresh_token\":\"[REDACTED]\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/oauth/token\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"client_id\\\":\\\"string\\\",\\\"code\\\":\\\"string\\\",\\\"code_verifier\\\":\\\"string\\\",\\\"grant_type\\\":\\\"string\\\",\\\"redirect_uri\\\":\\\"string\\\",\\\"refresh_token\\\":\\\"\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/opik/auth-oauth":{"post":{"description":"Introspects a bearer access token and returns the identity it resolves to","operationId":"validateOAuthToken","parameters":[{"in":"header","name":"Authorization","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidatedToken"}}},"description":"Validated token identity"},"401":{"description":"Missing, malformed, or unknown access token"}},"summary":"Validate OAuth Access Token","tags":["MCP OAuth"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/opik/auth-oauth\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/opik/auth-oauth'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/opik/auth-oauth\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/opik/auth-oauth\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/opik/auth-oauth', { method: 'POST' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/opik/auth-oauth', { method: 'POST' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/opik/auth-oauth\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"POST\", \"http://localhost:5173/api/opik/auth-oauth\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/opik/auth-oauth\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/internal/analytics-queries/projects/{projectId}":{"post":{"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":[{"in":"path","name":"projectId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsQueryRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsQueryResponse"}}},"description":"Query results"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unprocessable Content"},"501":{"description":"Agent Insights queries are not enabled"}},"summary":"Execute Agent Insights free-form SQL","tags":["System analytics queries"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/internal/analytics-queries/projects/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"query\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/internal/analytics-queries/projects/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"query\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"query\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/internal/analytics-queries/projects/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/internal/analytics-queries/projects/00000000-0000-0000-0000-000000000000\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"query\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/internal/analytics-queries/projects/00000000-0000-0000-0000-000000000000', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"query\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/internal/analytics-queries/projects/00000000-0000-0000-0000-000000000000', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"query\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/internal/analytics-queries/projects/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"query\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/internal/analytics-queries/projects/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"query\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/internal/analytics-queries/projects/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"query\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/internal/usage/bi-datasets":{"get":{"description":"Get datasets information for BI events per user per workspace","operationId":"getDatasetBiInfo","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BiInformationResponse"}}},"description":"Datasets BiInformationResponse resource"}},"summary":"Get datasets information for BI events","tags":["System usage"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/internal/usage/bi-datasets\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/internal/usage/bi-datasets'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/internal/usage/bi-datasets\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/internal/usage/bi-datasets\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/internal/usage/bi-datasets', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/internal/usage/bi-datasets', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/internal/usage/bi-datasets\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/internal/usage/bi-datasets\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/internal/usage/bi-datasets\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/internal/usage/bi-experiments":{"get":{"description":"Get experiments information for BI events per user per workspace","operationId":"getExperimentBiInfo","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BiInformationResponse"}}},"description":"Experiments BiInformationResponse resource"}},"summary":"Get experiments information for BI events","tags":["System usage"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/internal/usage/bi-experiments\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/internal/usage/bi-experiments'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/internal/usage/bi-experiments\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/internal/usage/bi-experiments\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/internal/usage/bi-experiments', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/internal/usage/bi-experiments', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/internal/usage/bi-experiments\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/internal/usage/bi-experiments\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/internal/usage/bi-experiments\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/internal/usage/bi-spans":{"get":{"description":"Get spans information for BI events per user per workspace","operationId":"getSpansBiInfo","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BiInformationResponse"}}},"description":"Spans BiInformationResponse resource"}},"summary":"Get spans information for BI events","tags":["System usage"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/internal/usage/bi-spans\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/internal/usage/bi-spans'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/internal/usage/bi-spans\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/internal/usage/bi-spans\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/internal/usage/bi-spans', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/internal/usage/bi-spans', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/internal/usage/bi-spans\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/internal/usage/bi-spans\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/internal/usage/bi-spans\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/internal/usage/bi-traces":{"get":{"description":"Get traces information for BI events per user per workspace","operationId":"getTracesBiInfo","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BiInformationResponse"}}},"description":"Traces BiInformationResponse resource"}},"summary":"Get traces information for BI events","tags":["System usage"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/internal/usage/bi-traces\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/internal/usage/bi-traces'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/internal/usage/bi-traces\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/internal/usage/bi-traces\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/internal/usage/bi-traces', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/internal/usage/bi-traces', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/internal/usage/bi-traces\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/internal/usage/bi-traces\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/internal/usage/bi-traces\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/internal/usage/workspace-span-counts":{"get":{"description":"Get spans count on previous day for all available workspaces","operationId":"getSpansCountForWorkspaces","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpansCountResponse"}}},"description":"SpanCountResponse resource"}},"summary":"Get spans count on previous day for all available workspaces","tags":["System usage"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/internal/usage/workspace-span-counts\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/internal/usage/workspace-span-counts'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/internal/usage/workspace-span-counts\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/internal/usage/workspace-span-counts\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/internal/usage/workspace-span-counts', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/internal/usage/workspace-span-counts', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/internal/usage/workspace-span-counts\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/internal/usage/workspace-span-counts\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/internal/usage/workspace-span-counts\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/internal/usage/workspace-span-counts-breakdown":{"get":{"description":"Get spans count on previous day grouped by workspace, project and user","operationId":"getSpansCountBreakdownForWorkspaces","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageByWorkspaceProjectUserResponse"}}},"description":"UsageByWorkspaceProjectUserResponse resource"}},"summary":"Get spans count on previous day grouped by workspace, project and user","tags":["System usage"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/internal/usage/workspace-span-counts-breakdown\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/internal/usage/workspace-span-counts-breakdown'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/internal/usage/workspace-span-counts-breakdown\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/internal/usage/workspace-span-counts-breakdown\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/internal/usage/workspace-span-counts-breakdown', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/internal/usage/workspace-span-counts-breakdown', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/internal/usage/workspace-span-counts-breakdown\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/internal/usage/workspace-span-counts-breakdown\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/internal/usage/workspace-span-counts-breakdown\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/internal/usage/workspace-trace-counts":{"get":{"description":"Get traces count on previous day for all available workspaces","operationId":"getTracesCountForWorkspaces","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraceCountResponse"}}},"description":"TraceCountResponse resource"}},"summary":"Get traces count on previous day for all available workspaces","tags":["System usage"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/internal/usage/workspace-trace-counts\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/internal/usage/workspace-trace-counts'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/internal/usage/workspace-trace-counts\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/internal/usage/workspace-trace-counts\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/internal/usage/workspace-trace-counts', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/internal/usage/workspace-trace-counts', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/internal/usage/workspace-trace-counts\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/internal/usage/workspace-trace-counts\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/internal/usage/workspace-trace-counts\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/agent-configs/blueprints":{"patch":{"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":{"example":"${basePath}/v1/private/agent-configs/blueprints/{blueprint_id}","required":true,"schema":{"type":"string"},"style":"simple"}}},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Write"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Write"}}},"description":"Not Found (no config for project)"}},"summary":"Add blueprint to existing config","tags":["Agent Configs"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/agent-configs/blueprints\");\nrequest.Content = new StringContent(\"{\\\"blueprint\\\":{\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"blueprint\\\",\\\"values\\\":[{\\\"description\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"type\\\":\\\"boolean\\\",\\\"value\\\":\\\"string\\\"}]},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/agent-configs/blueprints' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"blueprint\":{\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"type\":\"blueprint\",\"values\":[{\"description\":\"string\",\"key\":\"string\",\"type\":\"boolean\",\"value\":\"string\"}]},\"id\":\"00000000-0000-0000-0000-000000000000\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"blueprint\":{\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"type\":\"blueprint\",\"values\":[{\"description\":\"string\",\"key\":\"string\",\"type\":\"boolean\",\"value\":\"string\"}]},\"id\":\"00000000-0000-0000-0000-000000000000\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/agent-configs/blueprints\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/agent-configs/blueprints\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"blueprint\\\":{\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"blueprint\\\",\\\"values\\\":[{\\\"description\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"type\\\":\\\"boolean\\\",\\\"value\\\":\\\"string\\\"}]},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"blueprint\":{\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"type\":\"blueprint\",\"values\":[{\"description\":\"string\",\"key\":\"string\",\"type\":\"boolean\",\"value\":\"string\"}]},\"id\":\"00000000-0000-0000-0000-000000000000\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"blueprint\\\":{\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"blueprint\\\",\\\"values\\\":[{\\\"description\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"type\\\":\\\"boolean\\\",\\\"value\\\":\\\"string\\\"}]},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/agent-configs/blueprints\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"blueprint\\\":{\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"blueprint\\\",\\\"values\\\":[{\\\"description\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"type\\\":\\\"boolean\\\",\\\"value\\\":\\\"string\\\"}]},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/agent-configs/blueprints\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"blueprint\":{\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"type\":\"blueprint\",\"values\":[{\"description\":\"string\",\"key\":\"string\",\"type\":\"boolean\",\"value\":\"string\"}]},\"id\":\"00000000-0000-0000-0000-000000000000\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/agent-configs/blueprints\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"blueprint\\\":{\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"blueprint\\\",\\\"values\\\":[{\\\"description\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"type\\\":\\\"boolean\\\",\\\"value\\\":\\\"string\\\"}]},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"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":{"example":"${basePath}/v1/private/agent-configs/blueprints/{blueprint_id}","required":true,"schema":{"type":"string"},"style":"simple"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Write"}}},"description":"Bad Request (e.g. MASK type not allowed)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Write"}}},"description":"Unauthorized"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Write"}}},"description":"Conflict (config already exists)"}},"summary":"Create optimizer config with initial blueprint","tags":["Agent Configs"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/agent-configs/blueprints\");\nrequest.Content = new StringContent(\"{\\\"blueprint\\\":{\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"blueprint\\\",\\\"values\\\":[{\\\"description\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"type\\\":\\\"boolean\\\",\\\"value\\\":\\\"string\\\"}]},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/agent-configs/blueprints' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"blueprint\":{\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"type\":\"blueprint\",\"values\":[{\"description\":\"string\",\"key\":\"string\",\"type\":\"boolean\",\"value\":\"string\"}]},\"id\":\"00000000-0000-0000-0000-000000000000\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"blueprint\":{\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"type\":\"blueprint\",\"values\":[{\"description\":\"string\",\"key\":\"string\",\"type\":\"boolean\",\"value\":\"string\"}]},\"id\":\"00000000-0000-0000-0000-000000000000\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/agent-configs/blueprints\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/agent-configs/blueprints\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"blueprint\\\":{\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"blueprint\\\",\\\"values\\\":[{\\\"description\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"type\\\":\\\"boolean\\\",\\\"value\\\":\\\"string\\\"}]},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"blueprint\":{\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"type\":\"blueprint\",\"values\":[{\"description\":\"string\",\"key\":\"string\",\"type\":\"boolean\",\"value\":\"string\"}]},\"id\":\"00000000-0000-0000-0000-000000000000\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"blueprint\\\":{\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"blueprint\\\",\\\"values\\\":[{\\\"description\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"type\\\":\\\"boolean\\\",\\\"value\\\":\\\"string\\\"}]},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/agent-configs/blueprints\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"blueprint\\\":{\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"blueprint\\\",\\\"values\\\":[{\\\"description\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"type\\\":\\\"boolean\\\",\\\"value\\\":\\\"string\\\"}]},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/agent-configs/blueprints\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"blueprint\":{\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"type\":\"blueprint\",\"values\":[{\"description\":\"string\",\"key\":\"string\",\"type\":\"boolean\",\"value\":\"string\"}]},\"id\":\"00000000-0000-0000-0000-000000000000\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/agent-configs/blueprints\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"blueprint\\\":{\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"blueprint\\\",\\\"values\\\":[{\\\"description\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"type\\\":\\\"boolean\\\",\\\"value\\\":\\\"string\\\"}]},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/agent-configs/blueprints/environments":{"post":{"description":"Creates or updates environment-to-blueprint mappings","operationId":"createOrUpdateEnvs","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConfigEnvUpdate"}}}},"responses":{"204":{"description":"Environments updated"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not Found"}},"summary":"Create or update environments","tags":["Agent Configs"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments\");\nrequest.Content = new StringContent(\"{\\\"envs\\\":[{\\\"blueprint_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"env_name\\\":\\\"string\\\"}],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/agent-configs/blueprints/environments' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"envs\":[{\"blueprint_id\":\"00000000-0000-0000-0000-000000000000\",\"env_name\":\"string\"}],\"project_id\":\"00000000-0000-0000-0000-000000000000\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"envs\":[{\"blueprint_id\":\"00000000-0000-0000-0000-000000000000\",\"env_name\":\"string\"}],\"project_id\":\"00000000-0000-0000-0000-000000000000\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"envs\\\":[{\\\"blueprint_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"env_name\\\":\\\"string\\\"}],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/environments', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"envs\":[{\"blueprint_id\":\"00000000-0000-0000-0000-000000000000\",\"env_name\":\"string\"}],\"project_id\":\"00000000-0000-0000-0000-000000000000\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/environments', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"envs\\\":[{\\\"blueprint_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"env_name\\\":\\\"string\\\"}],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"envs\\\":[{\\\"blueprint_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"env_name\\\":\\\"string\\\"}],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"envs\":[{\"blueprint_id\":\"00000000-0000-0000-0000-000000000000\",\"env_name\":\"string\"}],\"project_id\":\"00000000-0000-0000-0000-000000000000\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"envs\\\":[{\\\"blueprint_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"env_name\\\":\\\"string\\\"}],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/agent-configs/blueprints/environments/{env_name}/projects/{project_id}":{"delete":{"description":"Soft-deletes an environment by setting its ended_at timestamp","operationId":"deleteEnv","parameters":[{"in":"path","name":"env_name","required":true,"schema":{"type":"string"}},{"in":"path","name":"project_id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"204":{"description":"Environment deleted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unauthorized"}},"summary":"Delete environment","tags":["Agent Configs"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Delete, \"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X DELETE 'http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"DELETE\", \"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"DELETE\", \"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"DELETE\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"get":{"description":"Retrieves the blueprint associated with a specific environment","operationId":"getBlueprintByEnv","parameters":[{"in":"path","name":"env_name","required":true,"schema":{"type":"string"}},{"in":"path","name":"project_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"mask_id","schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentBlueprint_Public"}}},"description":"Blueprint retrieved"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Not Found"}},"summary":"Retrieve blueprint by environment","tags":["Agent Configs"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"put":{"description":"Sets an environment to point to a blueprint identified by name","operationId":"setEnvByBlueprintName","parameters":[{"in":"path","name":"env_name","required":true,"schema":{"type":"string"}},{"in":"path","name":"project_id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConfigEnvSetByName"}}}},"responses":{"204":{"description":"Environment updated"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not Found"}},"summary":"Set environment by blueprint name","tags":["Agent Configs"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"blueprint_name\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"blueprint_name\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"blueprint_name\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{\\\"blueprint_name\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"blueprint_name\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"blueprint_name\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"blueprint_name\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"blueprint_name\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/environments/string/projects/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"blueprint_name\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/agent-configs/blueprints/history/projects/{project_id}":{"get":{"description":"Retrieves paginated blueprint history for a project","operationId":"getBlueprintHistory","parameters":[{"in":"path","name":"project_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlueprintPage_History"}}},"description":"History retrieved"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_History"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_History"}}},"description":"Not Found"}},"summary":"Get blueprint history","tags":["Agent Configs"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/agent-configs/blueprints/history/projects/00000000-0000-0000-0000-000000000000?page=1&size=10\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/agent-configs/blueprints/history/projects/00000000-0000-0000-0000-000000000000?page=1&size=10'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/agent-configs/blueprints/history/projects/00000000-0000-0000-0000-000000000000?page=1&size=10\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/history/projects/00000000-0000-0000-0000-000000000000?page=1&size=10\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/history/projects/00000000-0000-0000-0000-000000000000?page=1&size=10', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/history/projects/00000000-0000-0000-0000-000000000000?page=1&size=10', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/history/projects/00000000-0000-0000-0000-000000000000?page=1&size=10\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/agent-configs/blueprints/history/projects/00000000-0000-0000-0000-000000000000?page=1&size=10\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/history/projects/00000000-0000-0000-0000-000000000000?page=1&size=10\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/agent-configs/blueprints/latest/projects/{project_id}":{"get":{"description":"Retrieves the latest blueprint for a project","operationId":"getLatestBlueprint","parameters":[{"in":"path","name":"project_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"mask_id","schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentBlueprint_Public"}}},"description":"Blueprint retrieved"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Not Found"}},"summary":"Retrieve latest blueprint","tags":["Agent Configs"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/agent-configs/blueprints/latest/projects/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/agent-configs/blueprints/latest/projects/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/agent-configs/blueprints/latest/projects/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/latest/projects/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/latest/projects/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/latest/projects/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/latest/projects/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/agent-configs/blueprints/latest/projects/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/latest/projects/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/agent-configs/blueprints/projects/{project_id}/masks/{mask_id}":{"post":{"description":"Creates a new blueprint by applying a mask's changes on top of the latest blueprint for the project.","operationId":"createBlueprintFromMask","parameters":[{"in":"path","name":"project_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"path","name":"mask_id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"201":{"description":"Created","headers":{"Location":{"example":"${basePath}/v1/private/agent-configs/blueprints/{blueprint_id}","required":true,"schema":{"type":"string"},"style":"simple"}}},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Write"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Write"}}},"description":"Not Found (no config or mask not found)"}},"summary":"Create blueprint from mask","tags":["Agent Configs"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/agent-configs/blueprints/projects/00000000-0000-0000-0000-000000000000/masks/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/agent-configs/blueprints/projects/00000000-0000-0000-0000-000000000000/masks/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/agent-configs/blueprints/projects/00000000-0000-0000-0000-000000000000/masks/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/projects/00000000-0000-0000-0000-000000000000/masks/00000000-0000-0000-0000-000000000000\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/projects/00000000-0000-0000-0000-000000000000/masks/00000000-0000-0000-0000-000000000000', { method: 'POST' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/projects/00000000-0000-0000-0000-000000000000/masks/00000000-0000-0000-0000-000000000000', { method: 'POST' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/projects/00000000-0000-0000-0000-000000000000/masks/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"POST\", \"http://localhost:5173/api/v1/private/agent-configs/blueprints/projects/00000000-0000-0000-0000-000000000000/masks/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/projects/00000000-0000-0000-0000-000000000000/masks/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/agent-configs/blueprints/projects/{project_id}/names/{name}":{"get":{"description":"Retrieves a specific blueprint by its name within a project","operationId":"getBlueprintByName","parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}},{"in":"path","name":"project_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"mask_id","schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentBlueprint_Public"}}},"description":"Blueprint retrieved"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Not Found"}},"summary":"Retrieve blueprint by name","tags":["Agent Configs"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/agent-configs/blueprints/projects/00000000-0000-0000-0000-000000000000/names/string?mask_id=00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/agent-configs/blueprints/projects/00000000-0000-0000-0000-000000000000/names/string?mask_id=00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/agent-configs/blueprints/projects/00000000-0000-0000-0000-000000000000/names/string?mask_id=00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/projects/00000000-0000-0000-0000-000000000000/names/string?mask_id=00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/projects/00000000-0000-0000-0000-000000000000/names/string?mask_id=00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/projects/00000000-0000-0000-0000-000000000000/names/string?mask_id=00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/projects/00000000-0000-0000-0000-000000000000/names/string?mask_id=00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/agent-configs/blueprints/projects/00000000-0000-0000-0000-000000000000/names/string?mask_id=00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/projects/00000000-0000-0000-0000-000000000000/names/string?mask_id=00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/agent-configs/blueprints/remove-keys":{"post":{"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":{"example":"${basePath}/v1/private/agent-configs/blueprints/{blueprint_id}","required":true,"schema":{"type":"string"},"style":"simple"}}},"204":{"description":"No changes needed (no config or keys already removed)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unauthorized"}},"summary":"Remove configuration parameters","tags":["Agent Configs"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/agent-configs/blueprints/remove-keys\");\nrequest.Content = new StringContent(\"{\\\"keys\\\":[\\\"string\\\"],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/agent-configs/blueprints/remove-keys' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"keys\":[\"string\"],\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"keys\":[\"string\"],\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/agent-configs/blueprints/remove-keys\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/remove-keys\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"keys\\\":[\\\"string\\\"],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/remove-keys', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"keys\":[\"string\"],\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/remove-keys', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"keys\\\":[\\\"string\\\"],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/remove-keys\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"keys\\\":[\\\"string\\\"],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/agent-configs/blueprints/remove-keys\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"keys\":[\"string\"],\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/remove-keys\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"keys\\\":[\\\"string\\\"],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/agent-configs/blueprints/{blueprint_id}":{"get":{"description":"Retrieves a specific blueprint by its ID","operationId":"getBlueprintById","parameters":[{"in":"path","name":"blueprint_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"mask_id","schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentBlueprint_Public"}}},"description":"Blueprint retrieved"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Not Found"}},"summary":"Retrieve blueprint by ID","tags":["Agent Configs"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/agent-configs/blueprints/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/agent-configs/blueprints/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/agent-configs/blueprints/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/agent-configs/blueprints/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/00000000-0000-0000-0000-000000000000?mask_id=00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/agent-configs/blueprints/{blueprint_id}/deltas":{"get":{"description":"Retrieves only the changes (delta) introduced in a specific blueprint","operationId":"getDeltaById","parameters":[{"in":"path","name":"blueprint_id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentBlueprint_Public"}}},"description":"Delta retrieved"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Not Found"}},"summary":"Retrieve delta by blueprint ID","tags":["Agent Configs"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/agent-configs/blueprints/00000000-0000-0000-0000-000000000000/deltas\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/agent-configs/blueprints/00000000-0000-0000-0000-000000000000/deltas'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/agent-configs/blueprints/00000000-0000-0000-0000-000000000000/deltas\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/00000000-0000-0000-0000-000000000000/deltas\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/00000000-0000-0000-0000-000000000000/deltas', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-configs/blueprints/00000000-0000-0000-0000-000000000000/deltas', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/00000000-0000-0000-0000-000000000000/deltas\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/agent-configs/blueprints/00000000-0000-0000-0000-000000000000/deltas\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/agent-configs/blueprints/00000000-0000-0000-0000-000000000000/deltas\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/agent-insights/issues":{"get":{"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":[{"in":"query","name":"project_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"from_date","schema":{"format":"date","type":"string"}},{"in":"query","name":"to_date","schema":{"format":"date","type":"string"}},{"in":"query","name":"status","schema":{"enum":["open","resolved","closed"],"type":"string"}},{"in":"query","name":"severity","schema":{"enum":["critical","high","medium","low"],"type":"string"}},{"in":"query","name":"sorting","schema":{"type":"string"}},{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentInsightsIssuePage"}}},"description":"Issues page"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unauthorized"}},"summary":"Find agent insights issues","tags":["Agent Insights"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/agent-insights/issues?from_date=2026-06-09&page=1&project_id=00000000-0000-0000-0000-000000000000&severity=critical&size=10&sorting=string&status=closed&to_date=2026-06-09\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/agent-insights/issues?from_date=2026-06-09&page=1&project_id=00000000-0000-0000-0000-000000000000&severity=critical&size=10&sorting=string&status=closed&to_date=2026-06-09'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/agent-insights/issues?from_date=2026-06-09&page=1&project_id=00000000-0000-0000-0000-000000000000&severity=critical&size=10&sorting=string&status=closed&to_date=2026-06-09\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/agent-insights/issues?from_date=2026-06-09&page=1&project_id=00000000-0000-0000-0000-000000000000&severity=critical&size=10&sorting=string&status=closed&to_date=2026-06-09\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-insights/issues?from_date=2026-06-09&page=1&project_id=00000000-0000-0000-0000-000000000000&severity=critical&size=10&sorting=string&status=closed&to_date=2026-06-09', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-insights/issues?from_date=2026-06-09&page=1&project_id=00000000-0000-0000-0000-000000000000&severity=critical&size=10&sorting=string&status=closed&to_date=2026-06-09', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/agent-insights/issues?from_date=2026-06-09&page=1&project_id=00000000-0000-0000-0000-000000000000&severity=critical&size=10&sorting=string&status=closed&to_date=2026-06-09\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/agent-insights/issues?from_date=2026-06-09&page=1&project_id=00000000-0000-0000-0000-000000000000&severity=critical&size=10&sorting=string&status=closed&to_date=2026-06-09\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/agent-insights/issues?from_date=2026-06-09&page=1&project_id=00000000-0000-0000-0000-000000000000&severity=critical&size=10&sorting=string&status=closed&to_date=2026-06-09\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"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":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Project not found"}},"summary":"Store agent insights report results","tags":["Agent Insights"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/agent-insights/issues\");\nrequest.Content = new StringContent(\"{\\\"issues\\\":[{\\\"cause\\\":\\\"string\\\",\\\"count\\\":0,\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"severity\\\":\\\"critical\\\",\\\"suggested_fix\\\":\\\"string\\\",\\\"total_count\\\":0,\\\"total_users\\\":0,\\\"traces_query\\\":\\\"string\\\",\\\"users_impacted\\\":0}],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"report_day\\\":\\\"2026-06-09\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/agent-insights/issues' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"issues\":[{\"cause\":\"string\",\"count\":0,\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{},\"name\":\"string\",\"severity\":\"critical\",\"suggested_fix\":\"string\",\"total_count\":0,\"total_users\":0,\"traces_query\":\"string\",\"users_impacted\":0}],\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"report_day\":\"2026-06-09\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"issues\":[{\"cause\":\"string\",\"count\":0,\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{},\"name\":\"string\",\"severity\":\"critical\",\"suggested_fix\":\"string\",\"total_count\":0,\"total_users\":0,\"traces_query\":\"string\",\"users_impacted\":0}],\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"report_day\":\"2026-06-09\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/agent-insights/issues\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/agent-insights/issues\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"issues\\\":[{\\\"cause\\\":\\\"string\\\",\\\"count\\\":0,\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"severity\\\":\\\"critical\\\",\\\"suggested_fix\\\":\\\"string\\\",\\\"total_count\\\":0,\\\"total_users\\\":0,\\\"traces_query\\\":\\\"string\\\",\\\"users_impacted\\\":0}],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"report_day\\\":\\\"2026-06-09\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-insights/issues', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"issues\":[{\"cause\":\"string\",\"count\":0,\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{},\"name\":\"string\",\"severity\":\"critical\",\"suggested_fix\":\"string\",\"total_count\":0,\"total_users\":0,\"traces_query\":\"string\",\"users_impacted\":0}],\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"report_day\":\"2026-06-09\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-insights/issues', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"issues\\\":[{\\\"cause\\\":\\\"string\\\",\\\"count\\\":0,\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"severity\\\":\\\"critical\\\",\\\"suggested_fix\\\":\\\"string\\\",\\\"total_count\\\":0,\\\"total_users\\\":0,\\\"traces_query\\\":\\\"string\\\",\\\"users_impacted\\\":0}],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"report_day\\\":\\\"2026-06-09\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/agent-insights/issues\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"issues\\\":[{\\\"cause\\\":\\\"string\\\",\\\"count\\\":0,\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"severity\\\":\\\"critical\\\",\\\"suggested_fix\\\":\\\"string\\\",\\\"total_count\\\":0,\\\"total_users\\\":0,\\\"traces_query\\\":\\\"string\\\",\\\"users_impacted\\\":0}],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"report_day\\\":\\\"2026-06-09\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/agent-insights/issues\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"issues\":[{\"cause\":\"string\",\"count\":0,\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{},\"name\":\"string\",\"severity\":\"critical\",\"suggested_fix\":\"string\",\"total_count\":0,\"total_users\":0,\"traces_query\":\"string\",\"users_impacted\":0}],\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"report_day\":\"2026-06-09\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/agent-insights/issues\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"issues\\\":[{\\\"cause\\\":\\\"string\\\",\\\"count\\\":0,\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"severity\\\":\\\"critical\\\",\\\"suggested_fix\\\":\\\"string\\\",\\\"total_count\\\":0,\\\"total_users\\\":0,\\\"traces_query\\\":\\\"string\\\",\\\"users_impacted\\\":0}],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"report_day\\\":\\\"2026-06-09\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/agent-insights/issues/{issue_id}":{"get":{"description":"Returns the issue together with its per-day breakdown within the requested time window","operationId":"getAgentInsightsIssueById","parameters":[{"in":"path","name":"issue_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"project_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"from_date","schema":{"format":"date","type":"string"}},{"in":"query","name":"to_date","schema":{"format":"date","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentInsightsIssueWithDetails"}}},"description":"Issue with details"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not Found"}},"summary":"Get agent insights issue by id","tags":["Agent Insights"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/agent-insights/issues/00000000-0000-0000-0000-000000000000?from_date=2026-06-09&project_id=00000000-0000-0000-0000-000000000000&to_date=2026-06-09\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/agent-insights/issues/00000000-0000-0000-0000-000000000000?from_date=2026-06-09&project_id=00000000-0000-0000-0000-000000000000&to_date=2026-06-09'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/agent-insights/issues/00000000-0000-0000-0000-000000000000?from_date=2026-06-09&project_id=00000000-0000-0000-0000-000000000000&to_date=2026-06-09\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/agent-insights/issues/00000000-0000-0000-0000-000000000000?from_date=2026-06-09&project_id=00000000-0000-0000-0000-000000000000&to_date=2026-06-09\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-insights/issues/00000000-0000-0000-0000-000000000000?from_date=2026-06-09&project_id=00000000-0000-0000-0000-000000000000&to_date=2026-06-09', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-insights/issues/00000000-0000-0000-0000-000000000000?from_date=2026-06-09&project_id=00000000-0000-0000-0000-000000000000&to_date=2026-06-09', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/agent-insights/issues/00000000-0000-0000-0000-000000000000?from_date=2026-06-09&project_id=00000000-0000-0000-0000-000000000000&to_date=2026-06-09\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/agent-insights/issues/00000000-0000-0000-0000-000000000000?from_date=2026-06-09&project_id=00000000-0000-0000-0000-000000000000&to_date=2026-06-09\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/agent-insights/issues/00000000-0000-0000-0000-000000000000?from_date=2026-06-09&project_id=00000000-0000-0000-0000-000000000000&to_date=2026-06-09\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"patch":{"description":"Moves an issue through its lifecycle: open, resolved or closed","operationId":"updateAgentInsightsIssue","parameters":[{"in":"path","name":"issue_id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentInsightsIssueUpdate"}}}},"responses":{"204":{"description":"Issue updated"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not Found"}},"summary":"Update agent insights issue status","tags":["Agent Insights"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/agent-insights/issues/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"status\\\":\\\"closed\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/agent-insights/issues/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"status\":\"closed\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"status\":\"closed\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/agent-insights/issues/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/agent-insights/issues/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"status\\\":\\\"closed\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-insights/issues/00000000-0000-0000-0000-000000000000', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"status\":\"closed\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-insights/issues/00000000-0000-0000-0000-000000000000', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"status\\\":\\\"closed\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/agent-insights/issues/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"status\\\":\\\"closed\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/agent-insights/issues/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"status\":\"closed\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/agent-insights/issues/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"status\\\":\\\"closed\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/agent-insights/jobs/{projectId}":{"get":{"description":"Returns the Agent Insights job for the (workspace, project), or 404 if none exists.","operationId":"getAgentInsightsJob","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentInsightsJob"}}},"description":"Job"},"404":{"description":"Job not found"}},"summary":"Get Agent Insights job","tags":["Agent Insights Jobs"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"patch":{"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":[{"in":"path","name":"projectId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentInsightsJobUpdate"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentInsightsJob"}}},"description":"Job updated"},"404":{"description":"Job not found"}},"summary":"Update Agent Insights job","tags":["Agent Insights Jobs"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"status\\\":\\\"disabled\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"status\":\"disabled\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"status\":\"disabled\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"status\\\":\\\"disabled\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"status\":\"disabled\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"status\\\":\\\"disabled\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"status\\\":\\\"disabled\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"status\":\"disabled\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"status\\\":\\\"disabled\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Creates the Agent Insights job for a project. 409 if one already exists.","operationId":"createAgentInsightsJob","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentInsightsJob"}}},"description":"Job created","headers":{"Location":{"description":"URI of the created job","schema":{"type":"string"},"style":"simple"}}},"404":{"description":"Project not found"},"409":{"description":"Job already exists"}},"summary":"Create Agent Insights job","tags":["Agent Insights Jobs"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000', { method: 'POST' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000', { method: 'POST' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"POST\", \"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/agent-insights/jobs/{projectId}/trigger":{"post":{"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":[{"in":"path","name":"projectId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"202":{"description":"Run accepted"},"404":{"description":"Job not found"}},"summary":"Trigger Agent Insights job","tags":["Agent Insights Jobs"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000/trigger\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000/trigger'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000/trigger\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000/trigger\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000/trigger', { method: 'POST' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000/trigger', { method: 'POST' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000/trigger\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"POST\", \"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000/trigger\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/agent-insights/jobs/00000000-0000-0000-0000-000000000000/trigger\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/alerts":{"get":{"description":"Find alerts","operationId":"findAlerts","parameters":[{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"sorting","schema":{"type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertPage_Public"}}},"description":"OK"}},"summary":"Find alerts","tags":["Alerts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/alerts?filters=string&page=1&size=10&sorting=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/alerts?filters=string&page=1&size=10&sorting=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/alerts?filters=string&page=1&size=10&sorting=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/alerts?filters=string&page=1&size=10&sorting=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/alerts?filters=string&page=1&size=10&sorting=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/alerts?filters=string&page=1&size=10&sorting=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/alerts?filters=string&page=1&size=10&sorting=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/alerts?filters=string&page=1&size=10&sorting=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/alerts?filters=string&page=1&size=10&sorting=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Create alert","operationId":"createAlert","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Alert_Write"}}}},"responses":{"201":{"description":"Created","headers":{"Location":{"example":"${basePath}/v1/private/alerts/{alertId}","required":true,"schema":{"type":"string"},"style":"simple"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unprocessable Content"}},"summary":"Create alert","tags":["Alerts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/alerts\");\nrequest.Content = new StringContent(\"{\\\"alert_type\\\":\\\"general\\\",\\\"enabled\\\":true,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"triggers\\\":[{\\\"event_type\\\":\\\"experiment:finished\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"trigger_configs\\\":[{\\\"config_value\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"group_index\\\":0,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"filter:guardrail_type\\\"}]}],\\\"webhook\\\":{\\\"headers\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"secret_token\\\":\\\"string\\\",\\\"url\\\":\\\"string\\\"}}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/alerts' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"alert_type\":\"general\",\"enabled\":true,\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{\"additionalProp1\":\"string\"},\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"triggers\":[{\"event_type\":\"experiment:finished\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"trigger_configs\":[{\"config_value\":{\"additionalProp1\":\"string\"},\"group_index\":0,\"id\":\"00000000-0000-0000-0000-000000000000\",\"type\":\"filter:guardrail_type\"}]}],\"webhook\":{\"headers\":{\"additionalProp1\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"secret_token\":\"string\",\"url\":\"string\"}}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"alert_type\":\"general\",\"enabled\":true,\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{\"additionalProp1\":\"string\"},\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"triggers\":[{\"event_type\":\"experiment:finished\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"trigger_configs\":[{\"config_value\":{\"additionalProp1\":\"string\"},\"group_index\":0,\"id\":\"00000000-0000-0000-0000-000000000000\",\"type\":\"filter:guardrail_type\"}]}],\"webhook\":{\"headers\":{\"additionalProp1\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"secret_token\":\"string\",\"url\":\"string\"}}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/alerts\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/alerts\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"alert_type\\\":\\\"general\\\",\\\"enabled\\\":true,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"triggers\\\":[{\\\"event_type\\\":\\\"experiment:finished\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"trigger_configs\\\":[{\\\"config_value\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"group_index\\\":0,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"filter:guardrail_type\\\"}]}],\\\"webhook\\\":{\\\"headers\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"secret_token\\\":\\\"string\\\",\\\"url\\\":\\\"string\\\"}}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/alerts', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"alert_type\":\"general\",\"enabled\":true,\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{\"additionalProp1\":\"string\"},\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"triggers\":[{\"event_type\":\"experiment:finished\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"trigger_configs\":[{\"config_value\":{\"additionalProp1\":\"string\"},\"group_index\":0,\"id\":\"00000000-0000-0000-0000-000000000000\",\"type\":\"filter:guardrail_type\"}]}],\"webhook\":{\"headers\":{\"additionalProp1\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"secret_token\":\"string\",\"url\":\"string\"}}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/alerts', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"alert_type\\\":\\\"general\\\",\\\"enabled\\\":true,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"triggers\\\":[{\\\"event_type\\\":\\\"experiment:finished\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"trigger_configs\\\":[{\\\"config_value\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"group_index\\\":0,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"filter:guardrail_type\\\"}]}],\\\"webhook\\\":{\\\"headers\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"secret_token\\\":\\\"string\\\",\\\"url\\\":\\\"string\\\"}}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/alerts\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"alert_type\\\":\\\"general\\\",\\\"enabled\\\":true,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"triggers\\\":[{\\\"event_type\\\":\\\"experiment:finished\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"trigger_configs\\\":[{\\\"config_value\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"group_index\\\":0,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"filter:guardrail_type\\\"}]}],\\\"webhook\\\":{\\\"headers\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"secret_token\\\":\\\"string\\\",\\\"url\\\":\\\"string\\\"}}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/alerts\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"alert_type\":\"general\",\"enabled\":true,\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{\"additionalProp1\":\"string\"},\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"triggers\":[{\"event_type\":\"experiment:finished\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"trigger_configs\":[{\"config_value\":{\"additionalProp1\":\"string\"},\"group_index\":0,\"id\":\"00000000-0000-0000-0000-000000000000\",\"type\":\"filter:guardrail_type\"}]}],\"webhook\":{\"headers\":{\"additionalProp1\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"secret_token\":\"string\",\"url\":\"string\"}}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/alerts\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"alert_type\\\":\\\"general\\\",\\\"enabled\\\":true,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"triggers\\\":[{\\\"event_type\\\":\\\"experiment:finished\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"trigger_configs\\\":[{\\\"config_value\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"group_index\\\":0,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"filter:guardrail_type\\\"}]}],\\\"webhook\\\":{\\\"headers\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"secret_token\\\":\\\"string\\\",\\\"url\\\":\\\"string\\\"}}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/alerts/delete":{"post":{"description":"Delete multiple alerts by their IDs","operationId":"deleteAlertBatch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchDelete"}}}},"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Delete alert batch","tags":["Alerts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/alerts/delete\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/alerts/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/alerts/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/alerts/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/alerts/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/alerts/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/alerts/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/alerts/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/alerts/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/alerts/webhooks/examples":{"get":{"description":"Get webhook payload examples for all alert event types, optionally filtered by alert type","operationId":"getWebhookExamples","parameters":[{"in":"query","name":"alert_type","schema":{"enum":["general","slack","pagerduty"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookExamples"}}},"description":"Webhook examples"}},"summary":"Get webhook payload examples","tags":["Alerts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/alerts/webhooks/examples?alert_type=general\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/alerts/webhooks/examples?alert_type=general'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/alerts/webhooks/examples?alert_type=general\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/alerts/webhooks/examples?alert_type=general\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/alerts/webhooks/examples?alert_type=general', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/alerts/webhooks/examples?alert_type=general', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/alerts/webhooks/examples?alert_type=general\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/alerts/webhooks/examples?alert_type=general\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/alerts/webhooks/examples?alert_type=general\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/alerts/webhooks/tests":{"post":{"description":"Test alert webhook","operationId":"testWebhook","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Alert_Write"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTestResult"}}},"description":"Webhook test"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unprocessable Content"}},"summary":"Test alert webhook","tags":["Alerts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/alerts/webhooks/tests\");\nrequest.Content = new StringContent(\"{\\\"alert_type\\\":\\\"general\\\",\\\"enabled\\\":true,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"triggers\\\":[{\\\"event_type\\\":\\\"experiment:finished\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"trigger_configs\\\":[{\\\"config_value\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"group_index\\\":0,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"filter:guardrail_type\\\"}]}],\\\"webhook\\\":{\\\"headers\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"secret_token\\\":\\\"string\\\",\\\"url\\\":\\\"string\\\"}}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/alerts/webhooks/tests' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"alert_type\":\"general\",\"enabled\":true,\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{\"additionalProp1\":\"string\"},\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"triggers\":[{\"event_type\":\"experiment:finished\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"trigger_configs\":[{\"config_value\":{\"additionalProp1\":\"string\"},\"group_index\":0,\"id\":\"00000000-0000-0000-0000-000000000000\",\"type\":\"filter:guardrail_type\"}]}],\"webhook\":{\"headers\":{\"additionalProp1\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"secret_token\":\"string\",\"url\":\"string\"}}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"alert_type\":\"general\",\"enabled\":true,\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{\"additionalProp1\":\"string\"},\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"triggers\":[{\"event_type\":\"experiment:finished\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"trigger_configs\":[{\"config_value\":{\"additionalProp1\":\"string\"},\"group_index\":0,\"id\":\"00000000-0000-0000-0000-000000000000\",\"type\":\"filter:guardrail_type\"}]}],\"webhook\":{\"headers\":{\"additionalProp1\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"secret_token\":\"string\",\"url\":\"string\"}}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/alerts/webhooks/tests\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/alerts/webhooks/tests\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"alert_type\\\":\\\"general\\\",\\\"enabled\\\":true,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"triggers\\\":[{\\\"event_type\\\":\\\"experiment:finished\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"trigger_configs\\\":[{\\\"config_value\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"group_index\\\":0,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"filter:guardrail_type\\\"}]}],\\\"webhook\\\":{\\\"headers\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"secret_token\\\":\\\"string\\\",\\\"url\\\":\\\"string\\\"}}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/alerts/webhooks/tests', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"alert_type\":\"general\",\"enabled\":true,\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{\"additionalProp1\":\"string\"},\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"triggers\":[{\"event_type\":\"experiment:finished\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"trigger_configs\":[{\"config_value\":{\"additionalProp1\":\"string\"},\"group_index\":0,\"id\":\"00000000-0000-0000-0000-000000000000\",\"type\":\"filter:guardrail_type\"}]}],\"webhook\":{\"headers\":{\"additionalProp1\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"secret_token\":\"string\",\"url\":\"string\"}}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/alerts/webhooks/tests', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"alert_type\\\":\\\"general\\\",\\\"enabled\\\":true,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"triggers\\\":[{\\\"event_type\\\":\\\"experiment:finished\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"trigger_configs\\\":[{\\\"config_value\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"group_index\\\":0,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"filter:guardrail_type\\\"}]}],\\\"webhook\\\":{\\\"headers\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"secret_token\\\":\\\"string\\\",\\\"url\\\":\\\"string\\\"}}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/alerts/webhooks/tests\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"alert_type\\\":\\\"general\\\",\\\"enabled\\\":true,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"triggers\\\":[{\\\"event_type\\\":\\\"experiment:finished\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"trigger_configs\\\":[{\\\"config_value\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"group_index\\\":0,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"filter:guardrail_type\\\"}]}],\\\"webhook\\\":{\\\"headers\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"secret_token\\\":\\\"string\\\",\\\"url\\\":\\\"string\\\"}}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/alerts/webhooks/tests\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"alert_type\":\"general\",\"enabled\":true,\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{\"additionalProp1\":\"string\"},\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"triggers\":[{\"event_type\":\"experiment:finished\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"trigger_configs\":[{\"config_value\":{\"additionalProp1\":\"string\"},\"group_index\":0,\"id\":\"00000000-0000-0000-0000-000000000000\",\"type\":\"filter:guardrail_type\"}]}],\"webhook\":{\"headers\":{\"additionalProp1\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"secret_token\":\"string\",\"url\":\"string\"}}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/alerts/webhooks/tests\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"alert_type\\\":\\\"general\\\",\\\"enabled\\\":true,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"triggers\\\":[{\\\"event_type\\\":\\\"experiment:finished\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"trigger_configs\\\":[{\\\"config_value\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"group_index\\\":0,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"filter:guardrail_type\\\"}]}],\\\"webhook\\\":{\\\"headers\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"secret_token\\\":\\\"string\\\",\\\"url\\\":\\\"string\\\"}}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/alerts/{id}":{"get":{"description":"Get Alert by id","operationId":"getAlertById","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Alert_Public"}}},"description":"Alert resource"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Not Found"}},"summary":"Get Alert by id","tags":["Alerts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/alerts/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/alerts/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/alerts/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/alerts/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/alerts/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/alerts/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/alerts/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/alerts/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/alerts/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"put":{"description":"Update alert","operationId":"updateAlert","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Alert_Write"}}}},"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unprocessable Content"}},"summary":"Update alert","tags":["Alerts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/alerts/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"alert_type\\\":\\\"general\\\",\\\"enabled\\\":true,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"triggers\\\":[{\\\"event_type\\\":\\\"experiment:finished\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"trigger_configs\\\":[{\\\"config_value\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"group_index\\\":0,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"filter:guardrail_type\\\"}]}],\\\"webhook\\\":{\\\"headers\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"secret_token\\\":\\\"string\\\",\\\"url\\\":\\\"string\\\"}}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/alerts/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"alert_type\":\"general\",\"enabled\":true,\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{\"additionalProp1\":\"string\"},\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"triggers\":[{\"event_type\":\"experiment:finished\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"trigger_configs\":[{\"config_value\":{\"additionalProp1\":\"string\"},\"group_index\":0,\"id\":\"00000000-0000-0000-0000-000000000000\",\"type\":\"filter:guardrail_type\"}]}],\"webhook\":{\"headers\":{\"additionalProp1\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"secret_token\":\"string\",\"url\":\"string\"}}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"alert_type\":\"general\",\"enabled\":true,\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{\"additionalProp1\":\"string\"},\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"triggers\":[{\"event_type\":\"experiment:finished\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"trigger_configs\":[{\"config_value\":{\"additionalProp1\":\"string\"},\"group_index\":0,\"id\":\"00000000-0000-0000-0000-000000000000\",\"type\":\"filter:guardrail_type\"}]}],\"webhook\":{\"headers\":{\"additionalProp1\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"secret_token\":\"string\",\"url\":\"string\"}}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/alerts/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/alerts/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{\\\"alert_type\\\":\\\"general\\\",\\\"enabled\\\":true,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"triggers\\\":[{\\\"event_type\\\":\\\"experiment:finished\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"trigger_configs\\\":[{\\\"config_value\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"group_index\\\":0,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"filter:guardrail_type\\\"}]}],\\\"webhook\\\":{\\\"headers\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"secret_token\\\":\\\"string\\\",\\\"url\\\":\\\"string\\\"}}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/alerts/00000000-0000-0000-0000-000000000000', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"alert_type\":\"general\",\"enabled\":true,\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{\"additionalProp1\":\"string\"},\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"triggers\":[{\"event_type\":\"experiment:finished\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"trigger_configs\":[{\"config_value\":{\"additionalProp1\":\"string\"},\"group_index\":0,\"id\":\"00000000-0000-0000-0000-000000000000\",\"type\":\"filter:guardrail_type\"}]}],\"webhook\":{\"headers\":{\"additionalProp1\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"secret_token\":\"string\",\"url\":\"string\"}}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/alerts/00000000-0000-0000-0000-000000000000', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"alert_type\\\":\\\"general\\\",\\\"enabled\\\":true,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"triggers\\\":[{\\\"event_type\\\":\\\"experiment:finished\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"trigger_configs\\\":[{\\\"config_value\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"group_index\\\":0,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"filter:guardrail_type\\\"}]}],\\\"webhook\\\":{\\\"headers\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"secret_token\\\":\\\"string\\\",\\\"url\\\":\\\"string\\\"}}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/alerts/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"alert_type\\\":\\\"general\\\",\\\"enabled\\\":true,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"triggers\\\":[{\\\"event_type\\\":\\\"experiment:finished\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"trigger_configs\\\":[{\\\"config_value\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"group_index\\\":0,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"filter:guardrail_type\\\"}]}],\\\"webhook\\\":{\\\"headers\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"secret_token\\\":\\\"string\\\",\\\"url\\\":\\\"string\\\"}}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/alerts/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"alert_type\":\"general\",\"enabled\":true,\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{\"additionalProp1\":\"string\"},\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"triggers\":[{\"event_type\":\"experiment:finished\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"trigger_configs\":[{\"config_value\":{\"additionalProp1\":\"string\"},\"group_index\":0,\"id\":\"00000000-0000-0000-0000-000000000000\",\"type\":\"filter:guardrail_type\"}]}],\"webhook\":{\"headers\":{\"additionalProp1\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"secret_token\":\"string\",\"url\":\"string\"}}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/alerts/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"alert_type\\\":\\\"general\\\",\\\"enabled\\\":true,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"triggers\\\":[{\\\"event_type\\\":\\\"experiment:finished\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"trigger_configs\\\":[{\\\"config_value\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"group_index\\\":0,\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"type\\\":\\\"filter:guardrail_type\\\"}]}],\\\"webhook\\\":{\\\"headers\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"secret_token\\\":\\\"string\\\",\\\"url\\\":\\\"string\\\"}}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/annotation-queues":{"get":{"description":"Find annotation queues with filtering and sorting","operationId":"findAnnotationQueues","parameters":[{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"name","schema":{"description":"Filter annotation queues by name (partial match, case insensitive)","type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}},{"in":"query","name":"sorting","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnotationQueuePage_Public"}}},"description":"Annotation queues page"}},"summary":"Find annotation queues","tags":["Annotation Queues"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/annotation-queues?filters=string&name=string&page=1&size=10&sorting=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/annotation-queues?filters=string&name=string&page=1&size=10&sorting=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/annotation-queues?filters=string&name=string&page=1&size=10&sorting=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/annotation-queues?filters=string&name=string&page=1&size=10&sorting=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues?filters=string&name=string&page=1&size=10&sorting=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues?filters=string&name=string&page=1&size=10&sorting=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/annotation-queues?filters=string&name=string&page=1&size=10&sorting=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/annotation-queues?filters=string&name=string&page=1&size=10&sorting=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/annotation-queues?filters=string&name=string&page=1&size=10&sorting=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"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":{"example":"${basePath}/v1/private/traces/{annotationId}","required":true,"schema":{"type":"string"},"style":"simple"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unprocessable Content"}},"summary":"Create annotation queue","tags":["Annotation Queues"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/annotation-queues\");\nrequest.Content = new StringContent(\"{\\\"annotators_per_item\\\":0,\\\"automation\\\":{\\\"conditions\\\":{\\\"groups\\\":[{\\\"conditions\\\":[{\\\"operator\\\":\\\"<\\\",\\\"score_name\\\":\\\"string\\\",\\\"value\\\":0}]}]},\\\"enabled\\\":true,\\\"max_items_in_queue\\\":0},\\\"comments_enabled\\\":true,\\\"description\\\":\\\"string\\\",\\\"feedback_definition_names\\\":[\\\"string\\\"],\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"instructions\\\":\\\"string\\\",\\\"lock_timeout_seconds\\\":0,\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"scope\\\":\\\"thread\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/annotation-queues' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"annotators_per_item\":0,\"automation\":{\"conditions\":{\"groups\":[{\"conditions\":[{\"operator\":\"<\",\"score_name\":\"string\",\"value\":0}]}]},\"enabled\":true,\"max_items_in_queue\":0},\"comments_enabled\":true,\"description\":\"string\",\"feedback_definition_names\":[\"string\"],\"id\":\"00000000-0000-0000-0000-000000000000\",\"instructions\":\"string\",\"lock_timeout_seconds\":0,\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"scope\":\"thread\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"annotators_per_item\":0,\"automation\":{\"conditions\":{\"groups\":[{\"conditions\":[{\"operator\":\"<\",\"score_name\":\"string\",\"value\":0}]}]},\"enabled\":true,\"max_items_in_queue\":0},\"comments_enabled\":true,\"description\":\"string\",\"feedback_definition_names\":[\"string\"],\"id\":\"00000000-0000-0000-0000-000000000000\",\"instructions\":\"string\",\"lock_timeout_seconds\":0,\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"scope\":\"thread\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/annotation-queues\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/annotation-queues\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"annotators_per_item\\\":0,\\\"automation\\\":{\\\"conditions\\\":{\\\"groups\\\":[{\\\"conditions\\\":[{\\\"operator\\\":\\\"<\\\",\\\"score_name\\\":\\\"string\\\",\\\"value\\\":0}]}]},\\\"enabled\\\":true,\\\"max_items_in_queue\\\":0},\\\"comments_enabled\\\":true,\\\"description\\\":\\\"string\\\",\\\"feedback_definition_names\\\":[\\\"string\\\"],\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"instructions\\\":\\\"string\\\",\\\"lock_timeout_seconds\\\":0,\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"scope\\\":\\\"thread\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"annotators_per_item\":0,\"automation\":{\"conditions\":{\"groups\":[{\"conditions\":[{\"operator\":\"<\",\"score_name\":\"string\",\"value\":0}]}]},\"enabled\":true,\"max_items_in_queue\":0},\"comments_enabled\":true,\"description\":\"string\",\"feedback_definition_names\":[\"string\"],\"id\":\"00000000-0000-0000-0000-000000000000\",\"instructions\":\"string\",\"lock_timeout_seconds\":0,\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"scope\":\"thread\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"annotators_per_item\\\":0,\\\"automation\\\":{\\\"conditions\\\":{\\\"groups\\\":[{\\\"conditions\\\":[{\\\"operator\\\":\\\"<\\\",\\\"score_name\\\":\\\"string\\\",\\\"value\\\":0}]}]},\\\"enabled\\\":true,\\\"max_items_in_queue\\\":0},\\\"comments_enabled\\\":true,\\\"description\\\":\\\"string\\\",\\\"feedback_definition_names\\\":[\\\"string\\\"],\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"instructions\\\":\\\"string\\\",\\\"lock_timeout_seconds\\\":0,\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"scope\\\":\\\"thread\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/annotation-queues\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"annotators_per_item\\\":0,\\\"automation\\\":{\\\"conditions\\\":{\\\"groups\\\":[{\\\"conditions\\\":[{\\\"operator\\\":\\\"<\\\",\\\"score_name\\\":\\\"string\\\",\\\"value\\\":0}]}]},\\\"enabled\\\":true,\\\"max_items_in_queue\\\":0},\\\"comments_enabled\\\":true,\\\"description\\\":\\\"string\\\",\\\"feedback_definition_names\\\":[\\\"string\\\"],\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"instructions\\\":\\\"string\\\",\\\"lock_timeout_seconds\\\":0,\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"scope\\\":\\\"thread\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/annotation-queues\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"annotators_per_item\":0,\"automation\":{\"conditions\":{\"groups\":[{\"conditions\":[{\"operator\":\"<\",\"score_name\":\"string\",\"value\":0}]}]},\"enabled\":true,\"max_items_in_queue\":0},\"comments_enabled\":true,\"description\":\"string\",\"feedback_definition_names\":[\"string\"],\"id\":\"00000000-0000-0000-0000-000000000000\",\"instructions\":\"string\",\"lock_timeout_seconds\":0,\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"scope\":\"thread\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/annotation-queues\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"annotators_per_item\\\":0,\\\"automation\\\":{\\\"conditions\\\":{\\\"groups\\\":[{\\\"conditions\\\":[{\\\"operator\\\":\\\"<\\\",\\\"score_name\\\":\\\"string\\\",\\\"value\\\":0}]}]},\\\"enabled\\\":true,\\\"max_items_in_queue\\\":0},\\\"comments_enabled\\\":true,\\\"description\\\":\\\"string\\\",\\\"feedback_definition_names\\\":[\\\"string\\\"],\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"instructions\\\":\\\"string\\\",\\\"lock_timeout_seconds\\\":0,\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"scope\\\":\\\"thread\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/annotation-queues/batch":{"post":{"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"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unprocessable Content"}},"summary":"Create annotation queue batch","tags":["Annotation Queues"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/annotation-queues/batch\");\nrequest.Content = new StringContent(\"{\\\"annotation_queues\\\":[{\\\"annotators_per_item\\\":0,\\\"automation\\\":{\\\"conditions\\\":{\\\"groups\\\":[{\\\"conditions\\\":[{\\\"operator\\\":\\\"<\\\",\\\"score_name\\\":\\\"string\\\",\\\"value\\\":0}]}]},\\\"enabled\\\":true,\\\"max_items_in_queue\\\":0},\\\"comments_enabled\\\":true,\\\"description\\\":\\\"string\\\",\\\"feedback_definition_names\\\":[\\\"string\\\"],\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"instructions\\\":\\\"string\\\",\\\"lock_timeout_seconds\\\":0,\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"scope\\\":\\\"thread\\\"}]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/annotation-queues/batch' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"annotation_queues\":[{\"annotators_per_item\":0,\"automation\":{\"conditions\":{\"groups\":[{\"conditions\":[{\"operator\":\"<\",\"score_name\":\"string\",\"value\":0}]}]},\"enabled\":true,\"max_items_in_queue\":0},\"comments_enabled\":true,\"description\":\"string\",\"feedback_definition_names\":[\"string\"],\"id\":\"00000000-0000-0000-0000-000000000000\",\"instructions\":\"string\",\"lock_timeout_seconds\":0,\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"scope\":\"thread\"}]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"annotation_queues\":[{\"annotators_per_item\":0,\"automation\":{\"conditions\":{\"groups\":[{\"conditions\":[{\"operator\":\"<\",\"score_name\":\"string\",\"value\":0}]}]},\"enabled\":true,\"max_items_in_queue\":0},\"comments_enabled\":true,\"description\":\"string\",\"feedback_definition_names\":[\"string\"],\"id\":\"00000000-0000-0000-0000-000000000000\",\"instructions\":\"string\",\"lock_timeout_seconds\":0,\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"scope\":\"thread\"}]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/annotation-queues/batch\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/annotation-queues/batch\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"annotation_queues\\\":[{\\\"annotators_per_item\\\":0,\\\"automation\\\":{\\\"conditions\\\":{\\\"groups\\\":[{\\\"conditions\\\":[{\\\"operator\\\":\\\"<\\\",\\\"score_name\\\":\\\"string\\\",\\\"value\\\":0}]}]},\\\"enabled\\\":true,\\\"max_items_in_queue\\\":0},\\\"comments_enabled\\\":true,\\\"description\\\":\\\"string\\\",\\\"feedback_definition_names\\\":[\\\"string\\\"],\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"instructions\\\":\\\"string\\\",\\\"lock_timeout_seconds\\\":0,\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"scope\\\":\\\"thread\\\"}]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues/batch', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"annotation_queues\":[{\"annotators_per_item\":0,\"automation\":{\"conditions\":{\"groups\":[{\"conditions\":[{\"operator\":\"<\",\"score_name\":\"string\",\"value\":0}]}]},\"enabled\":true,\"max_items_in_queue\":0},\"comments_enabled\":true,\"description\":\"string\",\"feedback_definition_names\":[\"string\"],\"id\":\"00000000-0000-0000-0000-000000000000\",\"instructions\":\"string\",\"lock_timeout_seconds\":0,\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"scope\":\"thread\"}]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues/batch', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"annotation_queues\\\":[{\\\"annotators_per_item\\\":0,\\\"automation\\\":{\\\"conditions\\\":{\\\"groups\\\":[{\\\"conditions\\\":[{\\\"operator\\\":\\\"<\\\",\\\"score_name\\\":\\\"string\\\",\\\"value\\\":0}]}]},\\\"enabled\\\":true,\\\"max_items_in_queue\\\":0},\\\"comments_enabled\\\":true,\\\"description\\\":\\\"string\\\",\\\"feedback_definition_names\\\":[\\\"string\\\"],\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"instructions\\\":\\\"string\\\",\\\"lock_timeout_seconds\\\":0,\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"scope\\\":\\\"thread\\\"}]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/annotation-queues/batch\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"annotation_queues\\\":[{\\\"annotators_per_item\\\":0,\\\"automation\\\":{\\\"conditions\\\":{\\\"groups\\\":[{\\\"conditions\\\":[{\\\"operator\\\":\\\"<\\\",\\\"score_name\\\":\\\"string\\\",\\\"value\\\":0}]}]},\\\"enabled\\\":true,\\\"max_items_in_queue\\\":0},\\\"comments_enabled\\\":true,\\\"description\\\":\\\"string\\\",\\\"feedback_definition_names\\\":[\\\"string\\\"],\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"instructions\\\":\\\"string\\\",\\\"lock_timeout_seconds\\\":0,\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"scope\\\":\\\"thread\\\"}]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/annotation-queues/batch\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"annotation_queues\":[{\"annotators_per_item\":0,\"automation\":{\"conditions\":{\"groups\":[{\"conditions\":[{\"operator\":\"<\",\"score_name\":\"string\",\"value\":0}]}]},\"enabled\":true,\"max_items_in_queue\":0},\"comments_enabled\":true,\"description\":\"string\",\"feedback_definition_names\":[\"string\"],\"id\":\"00000000-0000-0000-0000-000000000000\",\"instructions\":\"string\",\"lock_timeout_seconds\":0,\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"scope\":\"thread\"}]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/annotation-queues/batch\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"annotation_queues\\\":[{\\\"annotators_per_item\\\":0,\\\"automation\\\":{\\\"conditions\\\":{\\\"groups\\\":[{\\\"conditions\\\":[{\\\"operator\\\":\\\"<\\\",\\\"score_name\\\":\\\"string\\\",\\\"value\\\":0}]}]},\\\"enabled\\\":true,\\\"max_items_in_queue\\\":0},\\\"comments_enabled\\\":true,\\\"description\\\":\\\"string\\\",\\\"feedback_definition_names\\\":[\\\"string\\\"],\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"instructions\\\":\\\"string\\\",\\\"lock_timeout_seconds\\\":0,\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"scope\\\":\\\"thread\\\"}]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/annotation-queues/delete":{"post":{"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":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Delete annotation queue batch","tags":["Annotation Queues"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/annotation-queues/delete\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/annotation-queues/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/annotation-queues/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/annotation-queues/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/annotation-queues/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/annotation-queues/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/annotation-queues/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/annotation-queues/{id}":{"get":{"description":"Get annotation queue by id","operationId":"getAnnotationQueueById","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnotationQueue_Public"}}},"description":"Annotation queue resource"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Not Found"}},"summary":"Get annotation queue by id","tags":["Annotation Queues"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"patch":{"description":"Update annotation queue by id","operationId":"updateAnnotationQueue","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnotationQueueUpdate"}}}},"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Update annotation queue","tags":["Annotation Queues"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"annotators_per_item\\\":0,\\\"automation\\\":{\\\"conditions\\\":{\\\"groups\\\":[{\\\"conditions\\\":[{\\\"operator\\\":\\\"<\\\",\\\"score_name\\\":\\\"string\\\",\\\"value\\\":0}]}]},\\\"enabled\\\":true,\\\"max_items_in_queue\\\":0},\\\"comments_enabled\\\":true,\\\"description\\\":\\\"string\\\",\\\"feedback_definition_names\\\":[\\\"string\\\"],\\\"instructions\\\":\\\"string\\\",\\\"lock_timeout_seconds\\\":0,\\\"name\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"annotators_per_item\":0,\"automation\":{\"conditions\":{\"groups\":[{\"conditions\":[{\"operator\":\"<\",\"score_name\":\"string\",\"value\":0}]}]},\"enabled\":true,\"max_items_in_queue\":0},\"comments_enabled\":true,\"description\":\"string\",\"feedback_definition_names\":[\"string\"],\"instructions\":\"string\",\"lock_timeout_seconds\":0,\"name\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"annotators_per_item\":0,\"automation\":{\"conditions\":{\"groups\":[{\"conditions\":[{\"operator\":\"<\",\"score_name\":\"string\",\"value\":0}]}]},\"enabled\":true,\"max_items_in_queue\":0},\"comments_enabled\":true,\"description\":\"string\",\"feedback_definition_names\":[\"string\"],\"instructions\":\"string\",\"lock_timeout_seconds\":0,\"name\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"annotators_per_item\\\":0,\\\"automation\\\":{\\\"conditions\\\":{\\\"groups\\\":[{\\\"conditions\\\":[{\\\"operator\\\":\\\"<\\\",\\\"score_name\\\":\\\"string\\\",\\\"value\\\":0}]}]},\\\"enabled\\\":true,\\\"max_items_in_queue\\\":0},\\\"comments_enabled\\\":true,\\\"description\\\":\\\"string\\\",\\\"feedback_definition_names\\\":[\\\"string\\\"],\\\"instructions\\\":\\\"string\\\",\\\"lock_timeout_seconds\\\":0,\\\"name\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"annotators_per_item\":0,\"automation\":{\"conditions\":{\"groups\":[{\"conditions\":[{\"operator\":\"<\",\"score_name\":\"string\",\"value\":0}]}]},\"enabled\":true,\"max_items_in_queue\":0},\"comments_enabled\":true,\"description\":\"string\",\"feedback_definition_names\":[\"string\"],\"instructions\":\"string\",\"lock_timeout_seconds\":0,\"name\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"annotators_per_item\\\":0,\\\"automation\\\":{\\\"conditions\\\":{\\\"groups\\\":[{\\\"conditions\\\":[{\\\"operator\\\":\\\"<\\\",\\\"score_name\\\":\\\"string\\\",\\\"value\\\":0}]}]},\\\"enabled\\\":true,\\\"max_items_in_queue\\\":0},\\\"comments_enabled\\\":true,\\\"description\\\":\\\"string\\\",\\\"feedback_definition_names\\\":[\\\"string\\\"],\\\"instructions\\\":\\\"string\\\",\\\"lock_timeout_seconds\\\":0,\\\"name\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"annotators_per_item\\\":0,\\\"automation\\\":{\\\"conditions\\\":{\\\"groups\\\":[{\\\"conditions\\\":[{\\\"operator\\\":\\\"<\\\",\\\"score_name\\\":\\\"string\\\",\\\"value\\\":0}]}]},\\\"enabled\\\":true,\\\"max_items_in_queue\\\":0},\\\"comments_enabled\\\":true,\\\"description\\\":\\\"string\\\",\\\"feedback_definition_names\\\":[\\\"string\\\"],\\\"instructions\\\":\\\"string\\\",\\\"lock_timeout_seconds\\\":0,\\\"name\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"annotators_per_item\":0,\"automation\":{\"conditions\":{\"groups\":[{\"conditions\":[{\"operator\":\"<\",\"score_name\":\"string\",\"value\":0}]}]},\"enabled\":true,\"max_items_in_queue\":0},\"comments_enabled\":true,\"description\":\"string\",\"feedback_definition_names\":[\"string\"],\"instructions\":\"string\",\"lock_timeout_seconds\":0,\"name\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"annotators_per_item\\\":0,\\\"automation\\\":{\\\"conditions\\\":{\\\"groups\\\":[{\\\"conditions\\\":[{\\\"operator\\\":\\\"<\\\",\\\"score_name\\\":\\\"string\\\",\\\"value\\\":0}]}]},\\\"enabled\\\":true,\\\"max_items_in_queue\\\":0},\\\"comments_enabled\\\":true,\\\"description\\\":\\\"string\\\",\\\"feedback_definition_names\\\":[\\\"string\\\"],\\\"instructions\\\":\\\"string\\\",\\\"lock_timeout_seconds\\\":0,\\\"name\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/annotation-queues/{id}/items/add":{"post":{"description":"Add traces or threads to annotation queue","operationId":"addItemsToAnnotationQueue","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnotationQueueItemIds"}}}},"responses":{"204":{"description":"No content"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not Found"}},"summary":"Add items to annotation queue","tags":["Annotation Queues"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/add\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/add' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/add\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/add\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/add', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/add', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/add\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/add\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/add\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/annotation-queues/{id}/items/delete":{"post":{"description":"Remove items from annotation queue","operationId":"removeItemsFromAnnotationQueue","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnotationQueueItemIds"}}}},"responses":{"204":{"description":"No content"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not Found"}},"summary":"Remove items from annotation queue","tags":["Annotation Queues"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/delete\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/annotation-queues/{id}/items/search":{"post":{"description":"Returns queue membership metadata — how each item got into the queue — for the given item ids. A lookup rather than a listing: the caller renders the items table from the traces or threads API with its own sort and filters, so it asks for exactly the ids it is displaying. Ids that are not in the queue are omitted.","operationId":"searchAnnotationQueueItems","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnotationQueueItemIds_Public"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnotationQueueItems_Public"}}},"description":"Annotation queue items"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Not Found"}},"summary":"Search annotation queue items","tags":["Annotation Queues"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/search\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/search' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/search\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/search\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/search', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/search', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/search\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/search\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/search\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/annotation-queues/{queueId}/items/{itemId}/lock":{"put":{"description":"Claim an annotation queue item for the current user, or extend an existing lock","operationId":"lockAnnotationQueueItem","parameters":[{"in":"path","name":"queueId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"path","name":"itemId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LockResponse"}}},"description":"Lock result"}},"summary":"Create or extend annotation queue item lock","tags":["Annotation Queues"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/00000000-0000-0000-0000-000000000000/lock\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/00000000-0000-0000-0000-000000000000/lock'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/00000000-0000-0000-0000-000000000000/lock\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/00000000-0000-0000-0000-000000000000/lock\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/00000000-0000-0000-0000-000000000000/lock', { method: 'PUT' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/00000000-0000-0000-0000-000000000000/lock', { method: 'PUT' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/00000000-0000-0000-0000-000000000000/lock\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"PUT\", \"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/00000000-0000-0000-0000-000000000000/lock\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/items/00000000-0000-0000-0000-000000000000/lock\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/annotation-queues/{queueId}/locks":{"get":{"description":"Returns lock status for all actively locked items in the queue","operationId":"getAnnotationQueueLocks","parameters":[{"in":"path","name":"queueId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocksResponse"}}},"description":"Queue locks"}},"summary":"Get all active locks for an annotation queue","tags":["Annotation Queues"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/locks\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/locks'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/locks\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/locks\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/locks', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/locks', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/locks\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/locks\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/annotation-queues/00000000-0000-0000-0000-000000000000/locks\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/assertion-results":{"put":{"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"}},"summary":"Batch ingestion of assertion results","tags":["Assertion Results"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/assertion-results\");\nrequest.Content = new StringContent(\"{\\\"assertion_results\\\":[{\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"status\\\":\\\"failed\\\"}],\\\"entity_type\\\":\\\"SPAN\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/assertion-results' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"assertion_results\":[{\"entity_id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"status\":\"failed\"}],\"entity_type\":\"SPAN\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"assertion_results\":[{\"entity_id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"status\":\"failed\"}],\"entity_type\":\"SPAN\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/assertion-results\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/assertion-results\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{\\\"assertion_results\\\":[{\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"status\\\":\\\"failed\\\"}],\\\"entity_type\\\":\\\"SPAN\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/assertion-results', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"assertion_results\":[{\"entity_id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"status\":\"failed\"}],\"entity_type\":\"SPAN\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/assertion-results', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"assertion_results\\\":[{\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"status\\\":\\\"failed\\\"}],\\\"entity_type\\\":\\\"SPAN\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/assertion-results\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"assertion_results\\\":[{\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"status\\\":\\\"failed\\\"}],\\\"entity_type\\\":\\\"SPAN\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/assertion-results\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"assertion_results\":[{\"entity_id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"status\":\"failed\"}],\"entity_type\":\"SPAN\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/assertion-results\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"assertion_results\\\":[{\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"status\\\":\\\"failed\\\"}],\\\"entity_type\\\":\\\"SPAN\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/attachment/delete":{"post":{"description":"Delete attachments","operationId":"deleteAttachments","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteMultipartUploadRequest"}}}},"responses":{"204":{"description":"No content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Access forbidden"}},"summary":"Delete attachments","tags":["Attachments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/attachment/delete\");\nrequest.Content = new StringContent(\"{\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"entity_type\\\":\\\"span\\\",\\\"file_name\\\":\\\"string\\\",\\\"file_size\\\":0,\\\"mime_type\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\",\\\"upload_id\\\":\\\"string\\\",\\\"uploaded_file_parts\\\":[{\\\"e_tag\\\":\\\"string\\\",\\\"part_number\\\":0}]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/attachment/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"entity_id\":\"00000000-0000-0000-0000-000000000000\",\"entity_type\":\"span\",\"file_name\":\"string\",\"file_size\":0,\"mime_type\":\"string\",\"project_name\":\"string\",\"upload_id\":\"string\",\"uploaded_file_parts\":[{\"e_tag\":\"string\",\"part_number\":0}]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"entity_id\":\"00000000-0000-0000-0000-000000000000\",\"entity_type\":\"span\",\"file_name\":\"string\",\"file_size\":0,\"mime_type\":\"string\",\"project_name\":\"string\",\"upload_id\":\"string\",\"uploaded_file_parts\":[{\"e_tag\":\"string\",\"part_number\":0}]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/attachment/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/attachment/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"entity_type\\\":\\\"span\\\",\\\"file_name\\\":\\\"string\\\",\\\"file_size\\\":0,\\\"mime_type\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\",\\\"upload_id\\\":\\\"string\\\",\\\"uploaded_file_parts\\\":[{\\\"e_tag\\\":\\\"string\\\",\\\"part_number\\\":0}]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/attachment/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"entity_id\":\"00000000-0000-0000-0000-000000000000\",\"entity_type\":\"span\",\"file_name\":\"string\",\"file_size\":0,\"mime_type\":\"string\",\"project_name\":\"string\",\"upload_id\":\"string\",\"uploaded_file_parts\":[{\"e_tag\":\"string\",\"part_number\":0}]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/attachment/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"entity_type\\\":\\\"span\\\",\\\"file_name\\\":\\\"string\\\",\\\"file_size\\\":0,\\\"mime_type\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\",\\\"upload_id\\\":\\\"string\\\",\\\"uploaded_file_parts\\\":[{\\\"e_tag\\\":\\\"string\\\",\\\"part_number\\\":0}]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/attachment/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"entity_type\\\":\\\"span\\\",\\\"file_name\\\":\\\"string\\\",\\\"file_size\\\":0,\\\"mime_type\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\",\\\"upload_id\\\":\\\"string\\\",\\\"uploaded_file_parts\\\":[{\\\"e_tag\\\":\\\"string\\\",\\\"part_number\\\":0}]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/attachment/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"entity_id\":\"00000000-0000-0000-0000-000000000000\",\"entity_type\":\"span\",\"file_name\":\"string\",\"file_size\":0,\"mime_type\":\"string\",\"project_name\":\"string\",\"upload_id\":\"string\",\"uploaded_file_parts\":[{\"e_tag\":\"string\",\"part_number\":0}]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/attachment/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"entity_type\\\":\\\"span\\\",\\\"file_name\\\":\\\"string\\\",\\\"file_size\\\":0,\\\"mime_type\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\",\\\"upload_id\\\":\\\"string\\\",\\\"uploaded_file_parts\\\":[{\\\"e_tag\\\":\\\"string\\\",\\\"part_number\\\":0}]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/attachment/download":{"get":{"description":"Download attachment from MinIO","operationId":"downloadAttachment","parameters":[{"in":"query","name":"workspace_name","schema":{"type":"string"}},{"in":"query","name":"container_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"entity_type","required":true,"schema":{"enum":["trace","span"],"type":"string"}},{"in":"query","name":"entity_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"file_name","required":true,"schema":{"minLength":1,"type":"string"}},{"in":"query","name":"mime_type","required":true,"schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"*/*":{"schema":{"format":"binary","type":"string"}}},"description":"Attachment Resource"},"401":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"403":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Access forbidden"}},"summary":"Download attachment from MinIO","tags":["Attachments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/attachment/download?container_id=00000000-0000-0000-0000-000000000000&entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&file_name=string&mime_type=string&workspace_name=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/attachment/download?container_id=00000000-0000-0000-0000-000000000000&entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&file_name=string&mime_type=string&workspace_name=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/attachment/download?container_id=00000000-0000-0000-0000-000000000000&entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&file_name=string&mime_type=string&workspace_name=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/attachment/download?container_id=00000000-0000-0000-0000-000000000000&entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&file_name=string&mime_type=string&workspace_name=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/attachment/download?container_id=00000000-0000-0000-0000-000000000000&entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&file_name=string&mime_type=string&workspace_name=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/attachment/download?container_id=00000000-0000-0000-0000-000000000000&entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&file_name=string&mime_type=string&workspace_name=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/attachment/download?container_id=00000000-0000-0000-0000-000000000000&entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&file_name=string&mime_type=string&workspace_name=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/attachment/download?container_id=00000000-0000-0000-0000-000000000000&entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&file_name=string&mime_type=string&workspace_name=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/attachment/download?container_id=00000000-0000-0000-0000-000000000000&entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&file_name=string&mime_type=string&workspace_name=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/attachment/list":{"get":{"description":"Attachments list for entity","operationId":"attachmentList","parameters":[{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":100,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"project_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"entity_type","required":true,"schema":{"enum":["trace","span"],"type":"string"}},{"in":"query","name":"entity_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"path","required":true,"schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachmentPage"}}},"description":"Attachment Resource"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Access forbidden"}},"summary":"Attachments list for entity","tags":["Attachments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/attachment/list?entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&page=1&path=string&project_id=00000000-0000-0000-0000-000000000000&size=100\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/attachment/list?entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&page=1&path=string&project_id=00000000-0000-0000-0000-000000000000&size=100'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/attachment/list?entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&page=1&path=string&project_id=00000000-0000-0000-0000-000000000000&size=100\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/attachment/list?entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&page=1&path=string&project_id=00000000-0000-0000-0000-000000000000&size=100\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/attachment/list?entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&page=1&path=string&project_id=00000000-0000-0000-0000-000000000000&size=100', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/attachment/list?entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&page=1&path=string&project_id=00000000-0000-0000-0000-000000000000&size=100', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/attachment/list?entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&page=1&path=string&project_id=00000000-0000-0000-0000-000000000000&size=100\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/attachment/list?entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&page=1&path=string&project_id=00000000-0000-0000-0000-000000000000&size=100\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/attachment/list?entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&page=1&path=string&project_id=00000000-0000-0000-0000-000000000000&size=100\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/attachment/upload":{"put":{"description":"Upload attachment to MinIO","operationId":"uploadAttachment","parameters":[{"in":"query","name":"file_name","required":true,"schema":{"type":"string"}},{"in":"query","name":"project_name","schema":{"description":"If null, the default project is used","pattern":"(?s)^\\s*(\\S.*\\S|\\S)\\s*$","type":"string"}},{"in":"query","name":"mime_type","schema":{"type":"string"}},{"in":"query","name":"entity_type","required":true,"schema":{"enum":["trace","span"],"type":"string"}},{"in":"query","name":"entity_id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"*/*":{"schema":{"type":"object"}}}},"responses":{"204":{"description":"No content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Access forbidden"}},"summary":"Upload attachment to MinIO","tags":["Attachments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/attachment/upload?entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&file_name=string&mime_type=string&project_name=string\");\nrequest.Content = new StringContent(\"{}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/attachment/upload?entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&file_name=string&mime_type=string&project_name=string' \\\n  -H 'Content-Type: application/json' \\\n  -d '{}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/attachment/upload?entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&file_name=string&mime_type=string&project_name=string\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/attachment/upload?entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&file_name=string&mime_type=string&project_name=string\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/attachment/upload?entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&file_name=string&mime_type=string&project_name=string', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/attachment/upload?entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&file_name=string&mime_type=string&project_name=string', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/attachment/upload?entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&file_name=string&mime_type=string&project_name=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/attachment/upload?entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&file_name=string&mime_type=string&project_name=string\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/attachment/upload?entity_id=00000000-0000-0000-0000-000000000000&entity_type=span&file_name=string&mime_type=string&project_name=string\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/attachment/upload-complete":{"post":{"description":"Complete multipart attachment upload","operationId":"completeMultiPartUpload","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteMultipartUploadRequest"}}}},"responses":{"204":{"description":"No content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Access forbidden"}},"summary":"Complete multipart attachment upload","tags":["Attachments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/attachment/upload-complete\");\nrequest.Content = new StringContent(\"{\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"entity_type\\\":\\\"span\\\",\\\"file_name\\\":\\\"string\\\",\\\"file_size\\\":0,\\\"mime_type\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\",\\\"upload_id\\\":\\\"string\\\",\\\"uploaded_file_parts\\\":[{\\\"e_tag\\\":\\\"string\\\",\\\"part_number\\\":0}]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/attachment/upload-complete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"entity_id\":\"00000000-0000-0000-0000-000000000000\",\"entity_type\":\"span\",\"file_name\":\"string\",\"file_size\":0,\"mime_type\":\"string\",\"project_name\":\"string\",\"upload_id\":\"string\",\"uploaded_file_parts\":[{\"e_tag\":\"string\",\"part_number\":0}]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"entity_id\":\"00000000-0000-0000-0000-000000000000\",\"entity_type\":\"span\",\"file_name\":\"string\",\"file_size\":0,\"mime_type\":\"string\",\"project_name\":\"string\",\"upload_id\":\"string\",\"uploaded_file_parts\":[{\"e_tag\":\"string\",\"part_number\":0}]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/attachment/upload-complete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/attachment/upload-complete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"entity_type\\\":\\\"span\\\",\\\"file_name\\\":\\\"string\\\",\\\"file_size\\\":0,\\\"mime_type\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\",\\\"upload_id\\\":\\\"string\\\",\\\"uploaded_file_parts\\\":[{\\\"e_tag\\\":\\\"string\\\",\\\"part_number\\\":0}]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/attachment/upload-complete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"entity_id\":\"00000000-0000-0000-0000-000000000000\",\"entity_type\":\"span\",\"file_name\":\"string\",\"file_size\":0,\"mime_type\":\"string\",\"project_name\":\"string\",\"upload_id\":\"string\",\"uploaded_file_parts\":[{\"e_tag\":\"string\",\"part_number\":0}]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/attachment/upload-complete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"entity_type\\\":\\\"span\\\",\\\"file_name\\\":\\\"string\\\",\\\"file_size\\\":0,\\\"mime_type\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\",\\\"upload_id\\\":\\\"string\\\",\\\"uploaded_file_parts\\\":[{\\\"e_tag\\\":\\\"string\\\",\\\"part_number\\\":0}]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/attachment/upload-complete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"entity_type\\\":\\\"span\\\",\\\"file_name\\\":\\\"string\\\",\\\"file_size\\\":0,\\\"mime_type\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\",\\\"upload_id\\\":\\\"string\\\",\\\"uploaded_file_parts\\\":[{\\\"e_tag\\\":\\\"string\\\",\\\"part_number\\\":0}]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/attachment/upload-complete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"entity_id\":\"00000000-0000-0000-0000-000000000000\",\"entity_type\":\"span\",\"file_name\":\"string\",\"file_size\":0,\"mime_type\":\"string\",\"project_name\":\"string\",\"upload_id\":\"string\",\"uploaded_file_parts\":[{\"e_tag\":\"string\",\"part_number\":0}]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/attachment/upload-complete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"entity_type\\\":\\\"span\\\",\\\"file_name\\\":\\\"string\\\",\\\"file_size\\\":0,\\\"mime_type\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\",\\\"upload_id\\\":\\\"string\\\",\\\"uploaded_file_parts\\\":[{\\\"e_tag\\\":\\\"string\\\",\\\"part_number\\\":0}]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/attachment/upload-start":{"post":{"description":"Start multipart attachment upload","operationId":"startMultiPartUpload","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartMultipartUploadRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartMultipartUploadResponse"}}},"description":"MultipartUploadResponse"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Access forbidden"}},"summary":"Start multipart attachment upload","tags":["Attachments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/attachment/upload-start\");\nrequest.Content = new StringContent(\"{\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"entity_type\\\":\\\"span\\\",\\\"file_name\\\":\\\"string\\\",\\\"mime_type\\\":\\\"string\\\",\\\"num_of_file_parts\\\":0,\\\"path\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/attachment/upload-start' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"entity_id\":\"00000000-0000-0000-0000-000000000000\",\"entity_type\":\"span\",\"file_name\":\"string\",\"mime_type\":\"string\",\"num_of_file_parts\":0,\"path\":\"string\",\"project_name\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"entity_id\":\"00000000-0000-0000-0000-000000000000\",\"entity_type\":\"span\",\"file_name\":\"string\",\"mime_type\":\"string\",\"num_of_file_parts\":0,\"path\":\"string\",\"project_name\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/attachment/upload-start\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/attachment/upload-start\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"entity_type\\\":\\\"span\\\",\\\"file_name\\\":\\\"string\\\",\\\"mime_type\\\":\\\"string\\\",\\\"num_of_file_parts\\\":0,\\\"path\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/attachment/upload-start', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"entity_id\":\"00000000-0000-0000-0000-000000000000\",\"entity_type\":\"span\",\"file_name\":\"string\",\"mime_type\":\"string\",\"num_of_file_parts\":0,\"path\":\"string\",\"project_name\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/attachment/upload-start', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"entity_type\\\":\\\"span\\\",\\\"file_name\\\":\\\"string\\\",\\\"mime_type\\\":\\\"string\\\",\\\"num_of_file_parts\\\":0,\\\"path\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/attachment/upload-start\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"entity_type\\\":\\\"span\\\",\\\"file_name\\\":\\\"string\\\",\\\"mime_type\\\":\\\"string\\\",\\\"num_of_file_parts\\\":0,\\\"path\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/attachment/upload-start\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"entity_id\":\"00000000-0000-0000-0000-000000000000\",\"entity_type\":\"span\",\"file_name\":\"string\",\"mime_type\":\"string\",\"num_of_file_parts\":0,\"path\":\"string\",\"project_name\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/attachment/upload-start\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"entity_type\\\":\\\"span\\\",\\\"file_name\\\":\\\"string\\\",\\\"mime_type\\\":\\\"string\\\",\\\"num_of_file_parts\\\":0,\\\"path\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/auth":{"post":{"description":"Check user access to workspace","operationId":"checkAccess","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthDetailsHolder"}}}},"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Access forbidden"}},"summary":"Check user access to workspace","tags":["Check"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/auth\");\nrequest.Content = new StringContent(\"{}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/auth' \\\n  -H 'Content-Type: application/json' \\\n  -d '{}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/auth\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/auth\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/auth', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/auth', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/auth\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/auth\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/auth\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/auth/workspace":{"get":{"description":"User's default workspace name","operationId":"getWorkspaceName","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceNameHolder"}}},"description":"Authentication resource"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Access forbidden"}},"summary":"User's default workspace name","tags":["Check"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/auth/workspace\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/auth/workspace'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/auth/workspace\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/auth/workspace\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/auth/workspace', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/auth/workspace', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/auth/workspace\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/auth/workspace\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/auth/workspace\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/automations/evaluators":{"get":{"description":"Find project Evaluators","operationId":"findEvaluators","parameters":[{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"id","schema":{"description":"Filter automation rules with rule ID containing this value (partial match, like %id%)","type":"string"}},{"in":"query","name":"name","schema":{"description":"Filter automation rule evaluators by name (partial match, case insensitive)","type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}},{"in":"query","name":"sorting","schema":{"type":"string"}},{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutomationRuleEvaluatorPage_Public"}}},"description":"Evaluators resource"}},"summary":"Find project Evaluators","tags":["Automation rule evaluators"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/automations/evaluators?filters=string&id=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/automations/evaluators?filters=string&id=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/automations/evaluators?filters=string&id=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/automations/evaluators?filters=string&id=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/automations/evaluators?filters=string&id=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/automations/evaluators?filters=string&id=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/automations/evaluators?filters=string&id=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/automations/evaluators?filters=string&id=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/automations/evaluators?filters=string&id=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Create automation rule evaluator","operationId":"createAutomationRuleEvaluator","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutomationRuleEvaluator_Write"}}}},"responses":{"201":{"description":"Created","headers":{"Location":{"example":"${basePath}/v1/private/automations/evaluators/{evaluatorId}","required":true,"schema":{"type":"string"},"style":"simple"}}}},"summary":"Create automation rule evaluator","tags":["Automation rule evaluators"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/automations/evaluators\");\nrequest.Content = new StringContent(\"{\\\"action\\\":\\\"annotation_queue_router\\\",\\\"enabled\\\":true,\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"sampling_rate\\\":0,\\\"trigger_scope\\\":\\\"both\\\",\\\"type\\\":\\\"llm_as_judge\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/automations/evaluators' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"action\":\"annotation_queue_router\",\"enabled\":true,\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"sampling_rate\":0,\"trigger_scope\":\"both\",\"type\":\"llm_as_judge\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"action\":\"annotation_queue_router\",\"enabled\":true,\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"sampling_rate\":0,\"trigger_scope\":\"both\",\"type\":\"llm_as_judge\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/automations/evaluators\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/automations/evaluators\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"action\\\":\\\"annotation_queue_router\\\",\\\"enabled\\\":true,\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"sampling_rate\\\":0,\\\"trigger_scope\\\":\\\"both\\\",\\\"type\\\":\\\"llm_as_judge\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/automations/evaluators', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"action\":\"annotation_queue_router\",\"enabled\":true,\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"sampling_rate\":0,\"trigger_scope\":\"both\",\"type\":\"llm_as_judge\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/automations/evaluators', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"action\\\":\\\"annotation_queue_router\\\",\\\"enabled\\\":true,\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"sampling_rate\\\":0,\\\"trigger_scope\\\":\\\"both\\\",\\\"type\\\":\\\"llm_as_judge\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/automations/evaluators\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"action\\\":\\\"annotation_queue_router\\\",\\\"enabled\\\":true,\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"sampling_rate\\\":0,\\\"trigger_scope\\\":\\\"both\\\",\\\"type\\\":\\\"llm_as_judge\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/automations/evaluators\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"action\":\"annotation_queue_router\",\"enabled\":true,\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"sampling_rate\":0,\"trigger_scope\":\"both\",\"type\":\"llm_as_judge\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/automations/evaluators\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"action\\\":\\\"annotation_queue_router\\\",\\\"enabled\\\":true,\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"sampling_rate\\\":0,\\\"trigger_scope\\\":\\\"both\\\",\\\"type\\\":\\\"llm_as_judge\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/automations/evaluators/delete":{"post":{"description":"Delete automation rule evaluators batch","operationId":"deleteAutomationRuleEvaluatorBatch","parameters":[{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchDelete"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Delete automation rule evaluators","tags":["Automation rule evaluators"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/automations/evaluators/delete?project_id=00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/automations/evaluators/delete?project_id=00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/automations/evaluators/delete?project_id=00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/automations/evaluators/delete?project_id=00000000-0000-0000-0000-000000000000\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/automations/evaluators/delete?project_id=00000000-0000-0000-0000-000000000000', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/automations/evaluators/delete?project_id=00000000-0000-0000-0000-000000000000', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/automations/evaluators/delete?project_id=00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/automations/evaluators/delete?project_id=00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/automations/evaluators/delete?project_id=00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/automations/evaluators/{id}":{"get":{"description":"Get automation rule by id","operationId":"getEvaluatorById","parameters":[{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutomationRuleEvaluator_Public"}}},"description":"Automation Rule resource"}},"summary":"Get automation rule evaluator by id","tags":["Automation rule evaluators"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000?project_id=00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000?project_id=00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000?project_id=00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000?project_id=00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000?project_id=00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000?project_id=00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000?project_id=00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000?project_id=00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000?project_id=00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"patch":{"description":"Update Automation Rule Evaluator by id","operationId":"updateAutomationRuleEvaluator","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutomationRuleEvaluatorUpdate"}}}},"responses":{"204":{"description":"No content"}},"summary":"Update Automation Rule Evaluator by id","tags":["Automation rule evaluators"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"action\\\":\\\"annotation_queue_router\\\",\\\"enabled\\\":true,\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"sampling_rate\\\":0,\\\"trigger_scope\\\":\\\"both\\\",\\\"type\\\":\\\"llm_as_judge\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"action\":\"annotation_queue_router\",\"enabled\":true,\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"sampling_rate\":0,\"trigger_scope\":\"both\",\"type\":\"llm_as_judge\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"action\":\"annotation_queue_router\",\"enabled\":true,\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"sampling_rate\":0,\"trigger_scope\":\"both\",\"type\":\"llm_as_judge\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"action\\\":\\\"annotation_queue_router\\\",\\\"enabled\\\":true,\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"sampling_rate\\\":0,\\\"trigger_scope\\\":\\\"both\\\",\\\"type\\\":\\\"llm_as_judge\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"action\":\"annotation_queue_router\",\"enabled\":true,\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"sampling_rate\":0,\"trigger_scope\":\"both\",\"type\":\"llm_as_judge\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"action\\\":\\\"annotation_queue_router\\\",\\\"enabled\\\":true,\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"sampling_rate\\\":0,\\\"trigger_scope\\\":\\\"both\\\",\\\"type\\\":\\\"llm_as_judge\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"action\\\":\\\"annotation_queue_router\\\",\\\"enabled\\\":true,\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"sampling_rate\\\":0,\\\"trigger_scope\\\":\\\"both\\\",\\\"type\\\":\\\"llm_as_judge\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"action\":\"annotation_queue_router\",\"enabled\":true,\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"sampling_rate\":0,\"trigger_scope\":\"both\",\"type\":\"llm_as_judge\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"action\\\":\\\"annotation_queue_router\\\",\\\"enabled\\\":true,\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"sampling_rate\\\":0,\\\"trigger_scope\\\":\\\"both\\\",\\\"type\\\":\\\"llm_as_judge\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/automations/evaluators/{id}/logs":{"get":{"description":"Get automation rule evaluator logs by id","operationId":"getEvaluatorLogsById","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"size","schema":{"default":1000,"format":"int32","minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogPage"}}},"description":"Automation rule evaluator logs resource"}},"summary":"Get automation rule evaluator logs by id","tags":["Automation rule evaluators"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000/logs?size=1000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000/logs?size=1000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000/logs?size=1000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000/logs?size=1000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000/logs?size=1000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000/logs?size=1000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000/logs?size=1000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000/logs?size=1000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/automations/evaluators/00000000-0000-0000-0000-000000000000/logs?size=1000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/chat/completions":{"post":{"description":"Create chat completions","operationId":"createChatCompletions","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatCompletionRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatCompletionResponse"}},"text/event-stream":{"schema":{"items":{"anyOf":[{"$ref":"#/components/schemas/ChatCompletionResponse"},{"$ref":"#/components/schemas/ErrorMessage"}],"type":"object"},"type":"array"}}},"description":"Chat completions response"}},"summary":"Create chat completions","tags":["Chat Completions"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/chat/completions\");\nrequest.Content = new StringContent(\"{\\\"frequencyPenalty\\\":0,\\\"functionCall\\\":{\\\"arguments\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\"},\\\"functions\\\":[{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"parameters\\\":{\\\"additionalProp1\\\":{}},\\\"strict\\\":true}],\\\"logitBias\\\":{\\\"additionalProp1\\\":0},\\\"logprobs\\\":true,\\\"maxCompletionTokens\\\":0,\\\"maxTokens\\\":0,\\\"messages\\\":[{\\\"content\\\":{},\\\"role\\\":\\\"string\\\"}],\\\"metadata\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"model\\\":\\\"string\\\",\\\"n\\\":0,\\\"parallelToolCalls\\\":true,\\\"presencePenalty\\\":0,\\\"reasoningEffort\\\":\\\"string\\\",\\\"responseFormat\\\":{\\\"jsonSchema\\\":{\\\"name\\\":\\\"string\\\",\\\"schema\\\":{\\\"additionalProp1\\\":{}},\\\"strict\\\":true},\\\"type\\\":\\\"json_object\\\"},\\\"seed\\\":0,\\\"serviceTier\\\":\\\"string\\\",\\\"stop\\\":[\\\"string\\\"],\\\"store\\\":true,\\\"stream\\\":true,\\\"streamOptions\\\":{\\\"includeUsage\\\":true},\\\"temperature\\\":0,\\\"toolChoice\\\":{},\\\"tools\\\":[{\\\"function\\\":{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"parameters\\\":{\\\"additionalProp1\\\":{}},\\\"strict\\\":true},\\\"type\\\":\\\"function\\\"}],\\\"topLogprobs\\\":0,\\\"topP\\\":0,\\\"user\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/chat/completions' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"frequencyPenalty\":0,\"functionCall\":{\"arguments\":\"string\",\"name\":\"string\"},\"functions\":[{\"description\":\"string\",\"name\":\"string\",\"parameters\":{\"additionalProp1\":{}},\"strict\":true}],\"logitBias\":{\"additionalProp1\":0},\"logprobs\":true,\"maxCompletionTokens\":0,\"maxTokens\":0,\"messages\":[{\"content\":{},\"role\":\"string\"}],\"metadata\":{\"additionalProp1\":\"string\"},\"model\":\"string\",\"n\":0,\"parallelToolCalls\":true,\"presencePenalty\":0,\"reasoningEffort\":\"string\",\"responseFormat\":{\"jsonSchema\":{\"name\":\"string\",\"schema\":{\"additionalProp1\":{}},\"strict\":true},\"type\":\"json_object\"},\"seed\":0,\"serviceTier\":\"string\",\"stop\":[\"string\"],\"store\":true,\"stream\":true,\"streamOptions\":{\"includeUsage\":true},\"temperature\":0,\"toolChoice\":{},\"tools\":[{\"function\":{\"description\":\"string\",\"name\":\"string\",\"parameters\":{\"additionalProp1\":{}},\"strict\":true},\"type\":\"function\"}],\"topLogprobs\":0,\"topP\":0,\"user\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"frequencyPenalty\":0,\"functionCall\":{\"arguments\":\"string\",\"name\":\"string\"},\"functions\":[{\"description\":\"string\",\"name\":\"string\",\"parameters\":{\"additionalProp1\":{}},\"strict\":true}],\"logitBias\":{\"additionalProp1\":0},\"logprobs\":true,\"maxCompletionTokens\":0,\"maxTokens\":0,\"messages\":[{\"content\":{},\"role\":\"string\"}],\"metadata\":{\"additionalProp1\":\"string\"},\"model\":\"string\",\"n\":0,\"parallelToolCalls\":true,\"presencePenalty\":0,\"reasoningEffort\":\"string\",\"responseFormat\":{\"jsonSchema\":{\"name\":\"string\",\"schema\":{\"additionalProp1\":{}},\"strict\":true},\"type\":\"json_object\"},\"seed\":0,\"serviceTier\":\"string\",\"stop\":[\"string\"],\"store\":true,\"stream\":true,\"streamOptions\":{\"includeUsage\":true},\"temperature\":0,\"toolChoice\":{},\"tools\":[{\"function\":{\"description\":\"string\",\"name\":\"string\",\"parameters\":{\"additionalProp1\":{}},\"strict\":true},\"type\":\"function\"}],\"topLogprobs\":0,\"topP\":0,\"user\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/chat/completions\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/chat/completions\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"frequencyPenalty\\\":0,\\\"functionCall\\\":{\\\"arguments\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\"},\\\"functions\\\":[{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"parameters\\\":{\\\"additionalProp1\\\":{}},\\\"strict\\\":true}],\\\"logitBias\\\":{\\\"additionalProp1\\\":0},\\\"logprobs\\\":true,\\\"maxCompletionTokens\\\":0,\\\"maxTokens\\\":0,\\\"messages\\\":[{\\\"content\\\":{},\\\"role\\\":\\\"string\\\"}],\\\"metadata\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"model\\\":\\\"string\\\",\\\"n\\\":0,\\\"parallelToolCalls\\\":true,\\\"presencePenalty\\\":0,\\\"reasoningEffort\\\":\\\"string\\\",\\\"responseFormat\\\":{\\\"jsonSchema\\\":{\\\"name\\\":\\\"string\\\",\\\"schema\\\":{\\\"additionalProp1\\\":{}},\\\"strict\\\":true},\\\"type\\\":\\\"json_object\\\"},\\\"seed\\\":0,\\\"serviceTier\\\":\\\"string\\\",\\\"stop\\\":[\\\"string\\\"],\\\"store\\\":true,\\\"stream\\\":true,\\\"streamOptions\\\":{\\\"includeUsage\\\":true},\\\"temperature\\\":0,\\\"toolChoice\\\":{},\\\"tools\\\":[{\\\"function\\\":{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"parameters\\\":{\\\"additionalProp1\\\":{}},\\\"strict\\\":true},\\\"type\\\":\\\"function\\\"}],\\\"topLogprobs\\\":0,\\\"topP\\\":0,\\\"user\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/chat/completions', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"frequencyPenalty\":0,\"functionCall\":{\"arguments\":\"string\",\"name\":\"string\"},\"functions\":[{\"description\":\"string\",\"name\":\"string\",\"parameters\":{\"additionalProp1\":{}},\"strict\":true}],\"logitBias\":{\"additionalProp1\":0},\"logprobs\":true,\"maxCompletionTokens\":0,\"maxTokens\":0,\"messages\":[{\"content\":{},\"role\":\"string\"}],\"metadata\":{\"additionalProp1\":\"string\"},\"model\":\"string\",\"n\":0,\"parallelToolCalls\":true,\"presencePenalty\":0,\"reasoningEffort\":\"string\",\"responseFormat\":{\"jsonSchema\":{\"name\":\"string\",\"schema\":{\"additionalProp1\":{}},\"strict\":true},\"type\":\"json_object\"},\"seed\":0,\"serviceTier\":\"string\",\"stop\":[\"string\"],\"store\":true,\"stream\":true,\"streamOptions\":{\"includeUsage\":true},\"temperature\":0,\"toolChoice\":{},\"tools\":[{\"function\":{\"description\":\"string\",\"name\":\"string\",\"parameters\":{\"additionalProp1\":{}},\"strict\":true},\"type\":\"function\"}],\"topLogprobs\":0,\"topP\":0,\"user\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/chat/completions', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"frequencyPenalty\\\":0,\\\"functionCall\\\":{\\\"arguments\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\"},\\\"functions\\\":[{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"parameters\\\":{\\\"additionalProp1\\\":{}},\\\"strict\\\":true}],\\\"logitBias\\\":{\\\"additionalProp1\\\":0},\\\"logprobs\\\":true,\\\"maxCompletionTokens\\\":0,\\\"maxTokens\\\":0,\\\"messages\\\":[{\\\"content\\\":{},\\\"role\\\":\\\"string\\\"}],\\\"metadata\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"model\\\":\\\"string\\\",\\\"n\\\":0,\\\"parallelToolCalls\\\":true,\\\"presencePenalty\\\":0,\\\"reasoningEffort\\\":\\\"string\\\",\\\"responseFormat\\\":{\\\"jsonSchema\\\":{\\\"name\\\":\\\"string\\\",\\\"schema\\\":{\\\"additionalProp1\\\":{}},\\\"strict\\\":true},\\\"type\\\":\\\"json_object\\\"},\\\"seed\\\":0,\\\"serviceTier\\\":\\\"string\\\",\\\"stop\\\":[\\\"string\\\"],\\\"store\\\":true,\\\"stream\\\":true,\\\"streamOptions\\\":{\\\"includeUsage\\\":true},\\\"temperature\\\":0,\\\"toolChoice\\\":{},\\\"tools\\\":[{\\\"function\\\":{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"parameters\\\":{\\\"additionalProp1\\\":{}},\\\"strict\\\":true},\\\"type\\\":\\\"function\\\"}],\\\"topLogprobs\\\":0,\\\"topP\\\":0,\\\"user\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/chat/completions\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"frequencyPenalty\\\":0,\\\"functionCall\\\":{\\\"arguments\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\"},\\\"functions\\\":[{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"parameters\\\":{\\\"additionalProp1\\\":{}},\\\"strict\\\":true}],\\\"logitBias\\\":{\\\"additionalProp1\\\":0},\\\"logprobs\\\":true,\\\"maxCompletionTokens\\\":0,\\\"maxTokens\\\":0,\\\"messages\\\":[{\\\"content\\\":{},\\\"role\\\":\\\"string\\\"}],\\\"metadata\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"model\\\":\\\"string\\\",\\\"n\\\":0,\\\"parallelToolCalls\\\":true,\\\"presencePenalty\\\":0,\\\"reasoningEffort\\\":\\\"string\\\",\\\"responseFormat\\\":{\\\"jsonSchema\\\":{\\\"name\\\":\\\"string\\\",\\\"schema\\\":{\\\"additionalProp1\\\":{}},\\\"strict\\\":true},\\\"type\\\":\\\"json_object\\\"},\\\"seed\\\":0,\\\"serviceTier\\\":\\\"string\\\",\\\"stop\\\":[\\\"string\\\"],\\\"store\\\":true,\\\"stream\\\":true,\\\"streamOptions\\\":{\\\"includeUsage\\\":true},\\\"temperature\\\":0,\\\"toolChoice\\\":{},\\\"tools\\\":[{\\\"function\\\":{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"parameters\\\":{\\\"additionalProp1\\\":{}},\\\"strict\\\":true},\\\"type\\\":\\\"function\\\"}],\\\"topLogprobs\\\":0,\\\"topP\\\":0,\\\"user\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/chat/completions\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"frequencyPenalty\":0,\"functionCall\":{\"arguments\":\"string\",\"name\":\"string\"},\"functions\":[{\"description\":\"string\",\"name\":\"string\",\"parameters\":{\"additionalProp1\":{}},\"strict\":true}],\"logitBias\":{\"additionalProp1\":0},\"logprobs\":true,\"maxCompletionTokens\":0,\"maxTokens\":0,\"messages\":[{\"content\":{},\"role\":\"string\"}],\"metadata\":{\"additionalProp1\":\"string\"},\"model\":\"string\",\"n\":0,\"parallelToolCalls\":true,\"presencePenalty\":0,\"reasoningEffort\":\"string\",\"responseFormat\":{\"jsonSchema\":{\"name\":\"string\",\"schema\":{\"additionalProp1\":{}},\"strict\":true},\"type\":\"json_object\"},\"seed\":0,\"serviceTier\":\"string\",\"stop\":[\"string\"],\"store\":true,\"stream\":true,\"streamOptions\":{\"includeUsage\":true},\"temperature\":0,\"toolChoice\":{},\"tools\":[{\"function\":{\"description\":\"string\",\"name\":\"string\",\"parameters\":{\"additionalProp1\":{}},\"strict\":true},\"type\":\"function\"}],\"topLogprobs\":0,\"topP\":0,\"user\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/chat/completions\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"frequencyPenalty\\\":0,\\\"functionCall\\\":{\\\"arguments\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\"},\\\"functions\\\":[{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"parameters\\\":{\\\"additionalProp1\\\":{}},\\\"strict\\\":true}],\\\"logitBias\\\":{\\\"additionalProp1\\\":0},\\\"logprobs\\\":true,\\\"maxCompletionTokens\\\":0,\\\"maxTokens\\\":0,\\\"messages\\\":[{\\\"content\\\":{},\\\"role\\\":\\\"string\\\"}],\\\"metadata\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"model\\\":\\\"string\\\",\\\"n\\\":0,\\\"parallelToolCalls\\\":true,\\\"presencePenalty\\\":0,\\\"reasoningEffort\\\":\\\"string\\\",\\\"responseFormat\\\":{\\\"jsonSchema\\\":{\\\"name\\\":\\\"string\\\",\\\"schema\\\":{\\\"additionalProp1\\\":{}},\\\"strict\\\":true},\\\"type\\\":\\\"json_object\\\"},\\\"seed\\\":0,\\\"serviceTier\\\":\\\"string\\\",\\\"stop\\\":[\\\"string\\\"],\\\"store\\\":true,\\\"stream\\\":true,\\\"streamOptions\\\":{\\\"includeUsage\\\":true},\\\"temperature\\\":0,\\\"toolChoice\\\":{},\\\"tools\\\":[{\\\"function\\\":{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"parameters\\\":{\\\"additionalProp1\\\":{}},\\\"strict\\\":true},\\\"type\\\":\\\"function\\\"}],\\\"topLogprobs\\\":0,\\\"topP\\\":0,\\\"user\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/dashboards":{"get":{"description":"Find dashboards in a workspace","operationId":"findDashboards","parameters":[{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"name","schema":{"description":"Filter dashboards by name (partial match, case insensitive)","type":"string"}},{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"sorting","schema":{"type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardPage_Public"}}},"description":"Dashboard page"}},"summary":"Find dashboards","tags":["Dashboards"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/dashboards?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/dashboards?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/dashboards?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/dashboards?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/dashboards?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/dashboards?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/dashboards?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/dashboards?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/dashboards?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Create a new dashboard in a workspace","operationId":"createDashboard","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard_Write"}}}},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard_Public"}}},"description":"Created","headers":{"Location":{"example":"${basePath}/v1/private/dashboards/{dashboardId}","required":true,"schema":{"type":"string"},"style":"simple"}}}},"summary":"Create dashboard","tags":["Dashboards"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/dashboards\");\nrequest.Content = new StringContent(\"{\\\"config\\\":{},\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"type\\\":\\\"experiments\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/dashboards' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"config\":{},\"description\":\"string\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"type\":\"experiments\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"config\":{},\"description\":\"string\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"type\":\"experiments\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/dashboards\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/dashboards\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"config\\\":{},\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"type\\\":\\\"experiments\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/dashboards', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"config\":{},\"description\":\"string\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"type\":\"experiments\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/dashboards', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"config\\\":{},\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"type\\\":\\\"experiments\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/dashboards\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"config\\\":{},\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"type\\\":\\\"experiments\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/dashboards\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"config\":{},\"description\":\"string\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"type\":\"experiments\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/dashboards\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"config\\\":{},\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"type\\\":\\\"experiments\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/dashboards/delete-batch":{"post":{"description":"Delete dashboards batch","operationId":"deleteDashboardsBatch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchDelete"}}}},"responses":{"204":{"description":"No content"}},"summary":"Delete dashboards","tags":["Dashboards"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/dashboards/delete-batch\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/dashboards/delete-batch' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/dashboards/delete-batch\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/dashboards/delete-batch\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/dashboards/delete-batch', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/dashboards/delete-batch', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/dashboards/delete-batch\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/dashboards/delete-batch\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/dashboards/delete-batch\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/dashboards/{dashboardId}":{"delete":{"description":"Delete dashboard by id","operationId":"deleteDashboard","parameters":[{"in":"path","name":"dashboardId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"204":{"description":"No content"}},"summary":"Delete dashboard","tags":["Dashboards"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Delete, \"http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X DELETE 'http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"DELETE\", \"http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"DELETE\", \"http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"DELETE\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"get":{"description":"Get dashboard by id","operationId":"getDashboardById","parameters":[{"in":"path","name":"dashboardId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard_Public"}}},"description":"Dashboard resource"},"404":{"description":"Dashboard not found"}},"summary":"Get dashboard by id","tags":["Dashboards"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"patch":{"description":"Update dashboard by id. Partial updates are supported - only provided fields will be updated.","operationId":"updateDashboard","parameters":[{"in":"path","name":"dashboardId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardUpdate_Public"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard_Public"}}},"description":"Updated dashboard"},"404":{"description":"Dashboard not found"},"409":{"description":"Conflict - dashboard with this name already exists"}},"summary":"Update dashboard","tags":["Dashboards"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"config\\\":{},\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"experiments\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"config\":{},\"description\":\"string\",\"name\":\"string\",\"type\":\"experiments\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"config\":{},\"description\":\"string\",\"name\":\"string\",\"type\":\"experiments\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"config\\\":{},\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"experiments\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"config\":{},\"description\":\"string\",\"name\":\"string\",\"type\":\"experiments\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"config\\\":{},\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"experiments\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"config\\\":{},\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"experiments\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"config\":{},\"description\":\"string\",\"name\":\"string\",\"type\":\"experiments\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/dashboards/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"config\\\":{},\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"experiments\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets":{"get":{"description":"Find datasets","operationId":"findDatasets","parameters":[{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"with_experiments_only","schema":{"type":"boolean"}},{"in":"query","name":"with_optimizations_only","schema":{"type":"boolean"}},{"in":"query","name":"prompt_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"name","schema":{"description":"Filter datasets by name (partial match, case insensitive)","type":"string"}},{"in":"query","name":"sorting","schema":{"type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetPage_Public"}}},"description":"Dataset resource"}},"summary":"Find datasets","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/datasets?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&prompt_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string&with_experiments_only=true&with_optimizations_only=true\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/datasets?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&prompt_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string&with_experiments_only=true&with_optimizations_only=true'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/datasets?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&prompt_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string&with_experiments_only=true&with_optimizations_only=true\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&prompt_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string&with_experiments_only=true&with_optimizations_only=true\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&prompt_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string&with_experiments_only=true&with_optimizations_only=true', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&prompt_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string&with_experiments_only=true&with_optimizations_only=true', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&prompt_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string&with_experiments_only=true&with_optimizations_only=true\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/datasets?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&prompt_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string&with_experiments_only=true&with_optimizations_only=true\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&prompt_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string&with_experiments_only=true&with_optimizations_only=true\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Create dataset","operationId":"createDataset","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dataset_Write"}}}},"responses":{"201":{"description":"Created","headers":{"Location":{"example":"${basePath}/api/v1/private/datasets/{id}","required":true,"schema":{"type":"string"},"style":"simple"}}}},"summary":"Create dataset","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/datasets\");\nrequest.Content = new StringContent(\"{\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"tags\\\":[\\\"string\\\"],\\\"type\\\":\\\"dataset\\\",\\\"visibility\\\":\\\"private\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/datasets' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"tags\":[\"string\"],\"type\":\"dataset\",\"visibility\":\"private\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"tags\":[\"string\"],\"type\":\"dataset\",\"visibility\":\"private\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/datasets\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"tags\\\":[\\\"string\\\"],\\\"type\\\":\\\"dataset\\\",\\\"visibility\\\":\\\"private\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"tags\":[\"string\"],\"type\":\"dataset\",\"visibility\":\"private\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"tags\\\":[\\\"string\\\"],\\\"type\\\":\\\"dataset\\\",\\\"visibility\\\":\\\"private\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"tags\\\":[\\\"string\\\"],\\\"type\\\":\\\"dataset\\\",\\\"visibility\\\":\\\"private\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/datasets\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"tags\":[\"string\"],\"type\":\"dataset\",\"visibility\":\"private\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"tags\\\":[\\\"string\\\"],\\\"type\\\":\\\"dataset\\\",\\\"visibility\\\":\\\"private\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/delete":{"post":{"description":"Delete dataset by name","operationId":"deleteDatasetByName","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetIdentifier"}}}},"responses":{"204":{"description":"No content"}},"summary":"Delete dataset by name","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/datasets/delete\");\nrequest.Content = new StringContent(\"{\\\"dataset_name\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/datasets/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"dataset_name\":\"string\",\"project_name\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"dataset_name\":\"string\",\"project_name\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/datasets/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"dataset_name\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"dataset_name\":\"string\",\"project_name\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"dataset_name\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"dataset_name\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/datasets/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"dataset_name\":\"string\",\"project_name\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"dataset_name\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/delete-batch":{"post":{"description":"Delete datasets batch","operationId":"deleteDatasetsBatch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchDelete"}}}},"responses":{"204":{"description":"No content"}},"summary":"Delete datasets","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/datasets/delete-batch\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/datasets/delete-batch' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/datasets/delete-batch\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/delete-batch\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/delete-batch', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/delete-batch', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/delete-batch\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/datasets/delete-batch\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/delete-batch\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/export-jobs":{"get":{"description":"Retrieves all export jobs for the workspace. This is used to restore the export panel state after page refresh.","operationId":"getDatasetExportJobs","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DatasetExportJob_Public"},"type":"array"}}},"description":"List of export jobs"}},"summary":"Get all dataset export jobs","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/datasets/export-jobs\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/datasets/export-jobs'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/datasets/export-jobs\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/export-jobs\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/export-jobs', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/export-jobs', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/export-jobs\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/datasets/export-jobs\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/export-jobs\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/export-jobs/{jobId}":{"get":{"description":"Retrieves the current status of a dataset export job","operationId":"getDatasetExportJob","parameters":[{"in":"path","name":"jobId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetExportJob_Public"}}},"description":"Export job details"},"404":{"description":"Export job not found"}},"summary":"Get dataset export job status","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/export-jobs/{jobId}/download":{"get":{"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":[{"in":"path","name":"jobId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"text/csv":{"schema":{"format":"binary","type":"string"}}},"description":"CSV file content"},"400":{"description":"Export job is not ready for download"},"404":{"description":"Export job not found"}},"summary":"Download dataset export file","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000/download\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000/download'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000/download\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000/download\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000/download', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000/download', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000/download\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000/download\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000/download\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/export-jobs/{jobId}/mark-viewed":{"put":{"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":[{"in":"path","name":"jobId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"204":{"description":"Job marked as viewed"},"404":{"description":"Export job not found"}},"summary":"Mark dataset export job as viewed","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000/mark-viewed\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000/mark-viewed'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000/mark-viewed\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000/mark-viewed\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000/mark-viewed', { method: 'PUT' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000/mark-viewed', { method: 'PUT' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000/mark-viewed\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"PUT\", \"http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000/mark-viewed\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/export-jobs/00000000-0000-0000-0000-000000000000/mark-viewed\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/items":{"put":{"description":"Create/update dataset items based on dataset item id.\nEach item's 'id' field is the stable identifier and upsert key.\nProvide it to update an existing item, or omit it to create a new one.\n\nSet 'copy_from_dataset_id' and 'copy_from_version_id' together to read carry-forward rows\nfrom the supplied (dataset, version) pair instead of the destination's prior version. When\nthe 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"}},"summary":"Create/update dataset items","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/datasets/items\");\nrequest.Content = new StringContent(\"{\\\"batch_group_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"copy_from_dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"copy_from_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_name\\\":\\\"string\\\",\\\"items\\\":[{\\\"data\\\":{},\\\"description\\\":\\\"string\\\",\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"source\\\":\\\"manual\\\",\\\"span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"tags\\\":[\\\"string\\\"],\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/datasets/items' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"batch_group_id\":\"00000000-0000-0000-0000-000000000000\",\"copy_from_dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"copy_from_version_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_name\":\"string\",\"items\":[{\"data\":{},\"description\":\"string\",\"evaluators\":[{\"config\":{},\"name\":\"string\",\"type\":\"code_metric\"}],\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"id\":\"00000000-0000-0000-0000-000000000000\",\"source\":\"manual\",\"span_id\":\"00000000-0000-0000-0000-000000000000\",\"tags\":[\"string\"],\"trace_id\":\"00000000-0000-0000-0000-000000000000\"}],\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"batch_group_id\":\"00000000-0000-0000-0000-000000000000\",\"copy_from_dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"copy_from_version_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_name\":\"string\",\"items\":[{\"data\":{},\"description\":\"string\",\"evaluators\":[{\"config\":{},\"name\":\"string\",\"type\":\"code_metric\"}],\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"id\":\"00000000-0000-0000-0000-000000000000\",\"source\":\"manual\",\"span_id\":\"00000000-0000-0000-0000-000000000000\",\"tags\":[\"string\"],\"trace_id\":\"00000000-0000-0000-0000-000000000000\"}],\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/datasets/items\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/items\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{\\\"batch_group_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"copy_from_dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"copy_from_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_name\\\":\\\"string\\\",\\\"items\\\":[{\\\"data\\\":{},\\\"description\\\":\\\"string\\\",\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"source\\\":\\\"manual\\\",\\\"span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"tags\\\":[\\\"string\\\"],\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/items', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"batch_group_id\":\"00000000-0000-0000-0000-000000000000\",\"copy_from_dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"copy_from_version_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_name\":\"string\",\"items\":[{\"data\":{},\"description\":\"string\",\"evaluators\":[{\"config\":{},\"name\":\"string\",\"type\":\"code_metric\"}],\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"id\":\"00000000-0000-0000-0000-000000000000\",\"source\":\"manual\",\"span_id\":\"00000000-0000-0000-0000-000000000000\",\"tags\":[\"string\"],\"trace_id\":\"00000000-0000-0000-0000-000000000000\"}],\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/items', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"batch_group_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"copy_from_dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"copy_from_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_name\\\":\\\"string\\\",\\\"items\\\":[{\\\"data\\\":{},\\\"description\\\":\\\"string\\\",\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"source\\\":\\\"manual\\\",\\\"span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"tags\\\":[\\\"string\\\"],\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/items\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"batch_group_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"copy_from_dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"copy_from_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_name\\\":\\\"string\\\",\\\"items\\\":[{\\\"data\\\":{},\\\"description\\\":\\\"string\\\",\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"source\\\":\\\"manual\\\",\\\"span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"tags\\\":[\\\"string\\\"],\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/datasets/items\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"batch_group_id\":\"00000000-0000-0000-0000-000000000000\",\"copy_from_dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"copy_from_version_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_name\":\"string\",\"items\":[{\"data\":{},\"description\":\"string\",\"evaluators\":[{\"config\":{},\"name\":\"string\",\"type\":\"code_metric\"}],\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"id\":\"00000000-0000-0000-0000-000000000000\",\"source\":\"manual\",\"span_id\":\"00000000-0000-0000-0000-000000000000\",\"tags\":[\"string\"],\"trace_id\":\"00000000-0000-0000-0000-000000000000\"}],\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/items\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"batch_group_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"copy_from_dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"copy_from_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_name\\\":\\\"string\\\",\\\"items\\\":[{\\\"data\\\":{},\\\"description\\\":\\\"string\\\",\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"source\\\":\\\"manual\\\",\\\"span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"tags\\\":[\\\"string\\\"],\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/items/batch":{"patch":{"description":"Update multiple dataset items","operationId":"batchUpdateDatasetItems","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetItemBatchUpdate"}}}},"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Batch update dataset items","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/datasets/items/batch\");\nrequest.Content = new StringContent(\"{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"clear_execution_policy\\\":true,\\\"data\\\":{},\\\"description\\\":\\\"string\\\",\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"expected_output\\\":\\\"string\\\",\\\"input\\\":\\\"string\\\",\\\"metadata\\\":{},\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"]}}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/datasets/items/batch' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":true,\"update\":{\"clear_execution_policy\":true,\"data\":{},\"description\":\"string\",\"evaluators\":[{\"config\":{},\"name\":\"string\",\"type\":\"code_metric\"}],\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"expected_output\":\"string\",\"input\":\"string\",\"metadata\":{},\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"]}}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":true,\"update\":{\"clear_execution_policy\":true,\"data\":{},\"description\":\"string\",\"evaluators\":[{\"config\":{},\"name\":\"string\",\"type\":\"code_metric\"}],\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"expected_output\":\"string\",\"input\":\"string\",\"metadata\":{},\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"]}}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/datasets/items/batch\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/items/batch\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"clear_execution_policy\\\":true,\\\"data\\\":{},\\\"description\\\":\\\"string\\\",\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"expected_output\\\":\\\"string\\\",\\\"input\\\":\\\"string\\\",\\\"metadata\\\":{},\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"]}}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/items/batch', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":true,\"update\":{\"clear_execution_policy\":true,\"data\":{},\"description\":\"string\",\"evaluators\":[{\"config\":{},\"name\":\"string\",\"type\":\"code_metric\"}],\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"expected_output\":\"string\",\"input\":\"string\",\"metadata\":{},\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"]}}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/items/batch', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"clear_execution_policy\\\":true,\\\"data\\\":{},\\\"description\\\":\\\"string\\\",\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"expected_output\\\":\\\"string\\\",\\\"input\\\":\\\"string\\\",\\\"metadata\\\":{},\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"]}}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/items/batch\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"clear_execution_policy\\\":true,\\\"data\\\":{},\\\"description\\\":\\\"string\\\",\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"expected_output\\\":\\\"string\\\",\\\"input\\\":\\\"string\\\",\\\"metadata\\\":{},\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"]}}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/datasets/items/batch\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":true,\"update\":{\"clear_execution_policy\":true,\"data\":{},\"description\":\"string\",\"evaluators\":[{\"config\":{},\"name\":\"string\",\"type\":\"code_metric\"}],\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"expected_output\":\"string\",\"input\":\"string\",\"metadata\":{},\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"]}}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/items/batch\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"clear_execution_policy\\\":true,\\\"data\\\":{},\\\"description\\\":\\\"string\\\",\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"expected_output\\\":\\\"string\\\",\\\"input\\\":\\\"string\\\",\\\"metadata\\\":{},\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"]}}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/items/delete":{"post":{"description":"Delete dataset items using one of two modes:\n1. **Delete by IDs**: Provide 'item_ids' to delete specific items by their IDs\n2. **Delete by filters**: Provide 'dataset_id' with optional 'filters' to delete items matching criteria\n\nWhen using filters, an empty 'filters' array will delete all items in the specified dataset.\n","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"}},"summary":"Delete dataset items","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/datasets/items/delete\");\nrequest.Content = new StringContent(\"{\\\"batch_group_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"item_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/datasets/items/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"batch_group_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"item_ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"batch_group_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"item_ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/datasets/items/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/items/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"batch_group_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"item_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/items/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"batch_group_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"item_ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/items/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"batch_group_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"item_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/items/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"batch_group_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"item_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/datasets/items/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"batch_group_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"item_ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/items/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"batch_group_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"item_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/items/from-csv":{"post":{"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":{"properties":{"dataset_id":{"format":"uuid","type":"string"},"file":{"type":"object"}},"required":["dataset_id","file"],"type":"object"}}}},"responses":{"202":{"description":"Accepted - CSV processing started"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Create dataset items from CSV file","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/datasets/items/from-csv\");\nrequest.Content = new StringContent(\"{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"file\\\":{}}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/datasets/items/from-csv' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"file\":{}}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"file\":{}}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/datasets/items/from-csv\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/items/from-csv\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"file\\\":{}}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/items/from-csv', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"file\":{}}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/items/from-csv', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"file\\\":{}}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/items/from-csv\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"file\\\":{}}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/datasets/items/from-csv\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"file\":{}}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/items/from-csv\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"file\\\":{}}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/items/from-json":{"post":{"description":"Create dataset items from an uploaded JSON or JSONL file. JSON files must contain a top-level array of objects.\nJSONL files contain one JSON object per non-blank line; multi-line JSON objects are not supported.\nReserved keys (id, source, description, tags, evaluators, execution_policy) are extracted into the\ncorresponding DatasetItem fields; all remaining keys form the item's data map and preserve their JSON types.\nTo link dataset items to specific traces or spans use the dedicated /items/from-traces or /items/from-spans endpoints.\nProcessing happens asynchronously in batches. With dataset versioning enabled, a supplied id acts as an upsert key.","operationId":"createDatasetItemsFromJson","requestBody":{"content":{"multipart/form-data":{"schema":{"properties":{"dataset_id":{"format":"uuid","type":"string"},"file":{"type":"object"},"format":{"enum":["json","jsonl"],"type":"string"}},"required":["dataset_id","file","format"],"type":"object"}}}},"responses":{"202":{"description":"Accepted - JSON processing started"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Create dataset items from JSON file","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/datasets/items/from-json\");\nrequest.Content = new StringContent(\"{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"file\\\":{},\\\"format\\\":\\\"json\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/datasets/items/from-json' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"file\":{},\"format\":\"json\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"file\":{},\"format\":\"json\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/datasets/items/from-json\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/items/from-json\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"file\\\":{},\\\"format\\\":\\\"json\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/items/from-json', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"file\":{},\"format\":\"json\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/items/from-json', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"file\\\":{},\\\"format\\\":\\\"json\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/items/from-json\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"file\\\":{},\\\"format\\\":\\\"json\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/datasets/items/from-json\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"file\":{},\"format\":\"json\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/items/from-json\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"file\\\":{},\\\"format\\\":\\\"json\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/items/stream":{"post":{"description":"Stream dataset items","operationId":"streamDatasetItems","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetItemStreamRequest"}}}},"responses":{"200":{"content":{"application/octet-stream":{"schema":{"items":{"anyOf":[{"$ref":"#/components/schemas/DatasetItem"},{"$ref":"#/components/schemas/ErrorMessage"}],"type":"string"},"maxItems":2000,"type":"array"}}},"description":"Dataset items stream or error during process"}},"summary":"Stream dataset items","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/datasets/items/stream\");\nrequest.Content = new StringContent(\"{\\\"dataset_name\\\":\\\"string\\\",\\\"dataset_version\\\":\\\"string\\\",\\\"filters\\\":\\\"string\\\",\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"steam_limit\\\":0}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/datasets/items/stream' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"dataset_name\":\"string\",\"dataset_version\":\"string\",\"filters\":\"string\",\"last_retrieved_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"steam_limit\":0}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"dataset_name\":\"string\",\"dataset_version\":\"string\",\"filters\":\"string\",\"last_retrieved_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"steam_limit\":0}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/datasets/items/stream\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/items/stream\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"dataset_name\\\":\\\"string\\\",\\\"dataset_version\\\":\\\"string\\\",\\\"filters\\\":\\\"string\\\",\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"steam_limit\\\":0}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/items/stream', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"dataset_name\":\"string\",\"dataset_version\":\"string\",\"filters\":\"string\",\"last_retrieved_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"steam_limit\":0}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/items/stream', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"dataset_name\\\":\\\"string\\\",\\\"dataset_version\\\":\\\"string\\\",\\\"filters\\\":\\\"string\\\",\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"steam_limit\\\":0}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/items/stream\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"dataset_name\\\":\\\"string\\\",\\\"dataset_version\\\":\\\"string\\\",\\\"filters\\\":\\\"string\\\",\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"steam_limit\\\":0}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/datasets/items/stream\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"dataset_name\":\"string\",\"dataset_version\":\"string\",\"filters\":\"string\",\"last_retrieved_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"steam_limit\":0}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/items/stream\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"dataset_name\\\":\\\"string\\\",\\\"dataset_version\\\":\\\"string\\\",\\\"filters\\\":\\\"string\\\",\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"steam_limit\\\":0}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/items/{itemId}":{"get":{"description":"Get dataset item by id","operationId":"getDatasetItemById","parameters":[{"in":"path","name":"itemId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetItem_Public"}}},"description":"Dataset item resource"}},"summary":"Get dataset item by id","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/datasets/items/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/datasets/items/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/datasets/items/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/items/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/items/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/items/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/items/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/datasets/items/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/items/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"patch":{"description":"Partially update dataset item by id. Only provided fields will be updated.","operationId":"patchDatasetItem","parameters":[{"in":"path","name":"itemId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetItem_Write"}}}},"responses":{"204":{"description":"No content"},"404":{"description":"Dataset item not found"}},"summary":"Partially update dataset item by id","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/datasets/items/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"data\\\":{},\\\"description\\\":\\\"string\\\",\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"source\\\":\\\"manual\\\",\\\"span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"tags\\\":[\\\"string\\\"],\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/datasets/items/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"data\":{},\"description\":\"string\",\"evaluators\":[{\"config\":{},\"name\":\"string\",\"type\":\"code_metric\"}],\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"id\":\"00000000-0000-0000-0000-000000000000\",\"source\":\"manual\",\"span_id\":\"00000000-0000-0000-0000-000000000000\",\"tags\":[\"string\"],\"trace_id\":\"00000000-0000-0000-0000-000000000000\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"data\":{},\"description\":\"string\",\"evaluators\":[{\"config\":{},\"name\":\"string\",\"type\":\"code_metric\"}],\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"id\":\"00000000-0000-0000-0000-000000000000\",\"source\":\"manual\",\"span_id\":\"00000000-0000-0000-0000-000000000000\",\"tags\":[\"string\"],\"trace_id\":\"00000000-0000-0000-0000-000000000000\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/datasets/items/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/items/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"data\\\":{},\\\"description\\\":\\\"string\\\",\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"source\\\":\\\"manual\\\",\\\"span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"tags\\\":[\\\"string\\\"],\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/items/00000000-0000-0000-0000-000000000000', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"data\":{},\"description\":\"string\",\"evaluators\":[{\"config\":{},\"name\":\"string\",\"type\":\"code_metric\"}],\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"id\":\"00000000-0000-0000-0000-000000000000\",\"source\":\"manual\",\"span_id\":\"00000000-0000-0000-0000-000000000000\",\"tags\":[\"string\"],\"trace_id\":\"00000000-0000-0000-0000-000000000000\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/items/00000000-0000-0000-0000-000000000000', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"data\\\":{},\\\"description\\\":\\\"string\\\",\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"source\\\":\\\"manual\\\",\\\"span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"tags\\\":[\\\"string\\\"],\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/items/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"data\\\":{},\\\"description\\\":\\\"string\\\",\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"source\\\":\\\"manual\\\",\\\"span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"tags\\\":[\\\"string\\\"],\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/datasets/items/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"data\":{},\"description\":\"string\",\"evaluators\":[{\"config\":{},\"name\":\"string\",\"type\":\"code_metric\"}],\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"id\":\"00000000-0000-0000-0000-000000000000\",\"source\":\"manual\",\"span_id\":\"00000000-0000-0000-0000-000000000000\",\"tags\":[\"string\"],\"trace_id\":\"00000000-0000-0000-0000-000000000000\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/items/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"data\\\":{},\\\"description\\\":\\\"string\\\",\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"source\\\":\\\"manual\\\",\\\"span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"tags\\\":[\\\"string\\\"],\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/retrieve":{"post":{"description":"Get dataset by name","operationId":"getDatasetByIdentifier","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetIdentifier_Public"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dataset_Public"}}},"description":"Dataset resource"}},"summary":"Get dataset by name","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/datasets/retrieve\");\nrequest.Content = new StringContent(\"{\\\"dataset_name\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/datasets/retrieve' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"dataset_name\":\"string\",\"project_name\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"dataset_name\":\"string\",\"project_name\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/datasets/retrieve\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/retrieve\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"dataset_name\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/retrieve', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"dataset_name\":\"string\",\"project_name\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/retrieve', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"dataset_name\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/retrieve\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"dataset_name\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/datasets/retrieve\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"dataset_name\":\"string\",\"project_name\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/retrieve\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"dataset_name\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/{dataset_id}/items/from-spans":{"post":{"description":"Create dataset items from spans with enriched metadata","operationId":"createDatasetItemsFromSpans","parameters":[{"in":"path","name":"dataset_id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDatasetItemsFromSpansRequest"}}}},"responses":{"204":{"description":"No content"}},"summary":"Create dataset items from spans","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/from-spans\");\nrequest.Content = new StringContent(\"{\\\"enrichment_options\\\":{\\\"includeComments\\\":true,\\\"includeFeedbackScores\\\":true,\\\"includeMetadata\\\":true,\\\"includeTags\\\":true,\\\"includeUsage\\\":true},\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"field_mappings\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"span_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/from-spans' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"enrichment_options\":{\"includeComments\":true,\"includeFeedbackScores\":true,\"includeMetadata\":true,\"includeTags\":true,\"includeUsage\":true},\"evaluators\":[{\"config\":{},\"name\":\"string\",\"type\":\"code_metric\"}],\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"field_mappings\":{\"additionalProp1\":\"string\"},\"span_ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"enrichment_options\":{\"includeComments\":true,\"includeFeedbackScores\":true,\"includeMetadata\":true,\"includeTags\":true,\"includeUsage\":true},\"evaluators\":[{\"config\":{},\"name\":\"string\",\"type\":\"code_metric\"}],\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"field_mappings\":{\"additionalProp1\":\"string\"},\"span_ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/from-spans\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/from-spans\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"enrichment_options\\\":{\\\"includeComments\\\":true,\\\"includeFeedbackScores\\\":true,\\\"includeMetadata\\\":true,\\\"includeTags\\\":true,\\\"includeUsage\\\":true},\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"field_mappings\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"span_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/from-spans', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"enrichment_options\":{\"includeComments\":true,\"includeFeedbackScores\":true,\"includeMetadata\":true,\"includeTags\":true,\"includeUsage\":true},\"evaluators\":[{\"config\":{},\"name\":\"string\",\"type\":\"code_metric\"}],\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"field_mappings\":{\"additionalProp1\":\"string\"},\"span_ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/from-spans', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"enrichment_options\\\":{\\\"includeComments\\\":true,\\\"includeFeedbackScores\\\":true,\\\"includeMetadata\\\":true,\\\"includeTags\\\":true,\\\"includeUsage\\\":true},\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"field_mappings\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"span_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/from-spans\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"enrichment_options\\\":{\\\"includeComments\\\":true,\\\"includeFeedbackScores\\\":true,\\\"includeMetadata\\\":true,\\\"includeTags\\\":true,\\\"includeUsage\\\":true},\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"field_mappings\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"span_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/from-spans\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"enrichment_options\":{\"includeComments\":true,\"includeFeedbackScores\":true,\"includeMetadata\":true,\"includeTags\":true,\"includeUsage\":true},\"evaluators\":[{\"config\":{},\"name\":\"string\",\"type\":\"code_metric\"}],\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"field_mappings\":{\"additionalProp1\":\"string\"},\"span_ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/from-spans\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"enrichment_options\\\":{\\\"includeComments\\\":true,\\\"includeFeedbackScores\\\":true,\\\"includeMetadata\\\":true,\\\"includeTags\\\":true,\\\"includeUsage\\\":true},\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"field_mappings\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"span_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/{dataset_id}/items/from-traces":{"post":{"description":"Create dataset items from traces with enriched metadata","operationId":"createDatasetItemsFromTraces","parameters":[{"in":"path","name":"dataset_id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDatasetItemsFromTracesRequest"}}}},"responses":{"204":{"description":"No content"}},"summary":"Create dataset items from traces","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/from-traces\");\nrequest.Content = new StringContent(\"{\\\"enrichment_options\\\":{\\\"includeComments\\\":true,\\\"includeFeedbackScores\\\":true,\\\"includeMetadata\\\":true,\\\"includeSpans\\\":true,\\\"includeTags\\\":true,\\\"includeUsage\\\":true},\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"field_mappings\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"trace_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/from-traces' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"enrichment_options\":{\"includeComments\":true,\"includeFeedbackScores\":true,\"includeMetadata\":true,\"includeSpans\":true,\"includeTags\":true,\"includeUsage\":true},\"evaluators\":[{\"config\":{},\"name\":\"string\",\"type\":\"code_metric\"}],\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"field_mappings\":{\"additionalProp1\":\"string\"},\"trace_ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"enrichment_options\":{\"includeComments\":true,\"includeFeedbackScores\":true,\"includeMetadata\":true,\"includeSpans\":true,\"includeTags\":true,\"includeUsage\":true},\"evaluators\":[{\"config\":{},\"name\":\"string\",\"type\":\"code_metric\"}],\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"field_mappings\":{\"additionalProp1\":\"string\"},\"trace_ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/from-traces\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/from-traces\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"enrichment_options\\\":{\\\"includeComments\\\":true,\\\"includeFeedbackScores\\\":true,\\\"includeMetadata\\\":true,\\\"includeSpans\\\":true,\\\"includeTags\\\":true,\\\"includeUsage\\\":true},\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"field_mappings\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"trace_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/from-traces', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"enrichment_options\":{\"includeComments\":true,\"includeFeedbackScores\":true,\"includeMetadata\":true,\"includeSpans\":true,\"includeTags\":true,\"includeUsage\":true},\"evaluators\":[{\"config\":{},\"name\":\"string\",\"type\":\"code_metric\"}],\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"field_mappings\":{\"additionalProp1\":\"string\"},\"trace_ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/from-traces', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"enrichment_options\\\":{\\\"includeComments\\\":true,\\\"includeFeedbackScores\\\":true,\\\"includeMetadata\\\":true,\\\"includeSpans\\\":true,\\\"includeTags\\\":true,\\\"includeUsage\\\":true},\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"field_mappings\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"trace_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/from-traces\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"enrichment_options\\\":{\\\"includeComments\\\":true,\\\"includeFeedbackScores\\\":true,\\\"includeMetadata\\\":true,\\\"includeSpans\\\":true,\\\"includeTags\\\":true,\\\"includeUsage\\\":true},\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"field_mappings\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"trace_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/from-traces\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"enrichment_options\":{\"includeComments\":true,\"includeFeedbackScores\":true,\"includeMetadata\":true,\"includeSpans\":true,\"includeTags\":true,\"includeUsage\":true},\"evaluators\":[{\"config\":{},\"name\":\"string\",\"type\":\"code_metric\"}],\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"field_mappings\":{\"additionalProp1\":\"string\"},\"trace_ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/from-traces\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"enrichment_options\\\":{\\\"includeComments\\\":true,\\\"includeFeedbackScores\\\":true,\\\"includeMetadata\\\":true,\\\"includeSpans\\\":true,\\\"includeTags\\\":true,\\\"includeUsage\\\":true},\\\"evaluators\\\":[{\\\"config\\\":{},\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"code_metric\\\"}],\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"field_mappings\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"trace_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/{id}":{"delete":{"description":"Delete dataset by id","operationId":"deleteDataset","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"204":{"description":"No content"}},"summary":"Delete dataset by id","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Delete, \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X DELETE 'http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"DELETE\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"DELETE\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"DELETE\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"get":{"description":"Get dataset by id","operationId":"getDatasetById","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dataset_Public"}}},"description":"Dataset resource"}},"summary":"Get dataset by id","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"put":{"description":"Update dataset by id","operationId":"updateDataset","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetUpdate"}}}},"responses":{"204":{"description":"No content"}},"summary":"Update dataset by id","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"tags\\\":[\\\"string\\\"],\\\"visibility\\\":\\\"private\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"description\":\"string\",\"name\":\"string\",\"tags\":[\"string\"],\"visibility\":\"private\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"description\":\"string\",\"name\":\"string\",\"tags\":[\"string\"],\"visibility\":\"private\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"tags\\\":[\\\"string\\\"],\\\"visibility\\\":\\\"private\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"description\":\"string\",\"name\":\"string\",\"tags\":[\"string\"],\"visibility\":\"private\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"tags\\\":[\\\"string\\\"],\\\"visibility\\\":\\\"private\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"tags\\\":[\\\"string\\\"],\\\"visibility\\\":\\\"private\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"description\":\"string\",\"name\":\"string\",\"tags\":[\"string\"],\"visibility\":\"private\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"tags\\\":[\\\"string\\\"],\\\"visibility\\\":\\\"private\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/{id}/expansions":{"post":{"description":"Generate synthetic dataset samples using LLM based on existing data patterns","operationId":"expandDataset","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetExpansion_Write"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetExpansionResponse"}}},"description":"Generated synthetic samples"}},"summary":"Expand dataset with synthetic samples","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/expansions\");\nrequest.Content = new StringContent(\"{\\\"custom_prompt\\\":\\\"string\\\",\\\"max_completion_tokens\\\":0,\\\"model\\\":\\\"gpt-4\\\",\\\"preserve_fields\\\":[\\\"input\\\",\\\"expected_output\\\"],\\\"sample_count\\\":10,\\\"variation_instructions\\\":\\\"Create variations that test edge cases\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/expansions' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"custom_prompt\":\"string\",\"max_completion_tokens\":0,\"model\":\"gpt-4\",\"preserve_fields\":[\"input\",\"expected_output\"],\"sample_count\":10,\"variation_instructions\":\"Create variations that test edge cases\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"custom_prompt\":\"string\",\"max_completion_tokens\":0,\"model\":\"gpt-4\",\"preserve_fields\":[\"input\",\"expected_output\"],\"sample_count\":10,\"variation_instructions\":\"Create variations that test edge cases\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/expansions\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/expansions\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"custom_prompt\\\":\\\"string\\\",\\\"max_completion_tokens\\\":0,\\\"model\\\":\\\"gpt-4\\\",\\\"preserve_fields\\\":[\\\"input\\\",\\\"expected_output\\\"],\\\"sample_count\\\":10,\\\"variation_instructions\\\":\\\"Create variations that test edge cases\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/expansions', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"custom_prompt\":\"string\",\"max_completion_tokens\":0,\"model\":\"gpt-4\",\"preserve_fields\":[\"input\",\"expected_output\"],\"sample_count\":10,\"variation_instructions\":\"Create variations that test edge cases\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/expansions', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"custom_prompt\\\":\\\"string\\\",\\\"max_completion_tokens\\\":0,\\\"model\\\":\\\"gpt-4\\\",\\\"preserve_fields\\\":[\\\"input\\\",\\\"expected_output\\\"],\\\"sample_count\\\":10,\\\"variation_instructions\\\":\\\"Create variations that test edge cases\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/expansions\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"custom_prompt\\\":\\\"string\\\",\\\"max_completion_tokens\\\":0,\\\"model\\\":\\\"gpt-4\\\",\\\"preserve_fields\\\":[\\\"input\\\",\\\"expected_output\\\"],\\\"sample_count\\\":10,\\\"variation_instructions\\\":\\\"Create variations that test edge cases\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/expansions\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"custom_prompt\":\"string\",\"max_completion_tokens\":0,\"model\":\"gpt-4\",\"preserve_fields\":[\"input\",\"expected_output\"],\"sample_count\":10,\"variation_instructions\":\"Create variations that test edge cases\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/expansions\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"custom_prompt\\\":\\\"string\\\",\\\"max_completion_tokens\\\":0,\\\"model\\\":\\\"gpt-4\\\",\\\"preserve_fields\\\":[\\\"input\\\",\\\"expected_output\\\"],\\\"sample_count\\\":10,\\\"variation_instructions\\\":\\\"Create variations that test edge cases\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/{id}/export":{"post":{"description":"Initiates an asynchronous CSV export job for the dataset. Returns immediately with job details for polling.","operationId":"startDatasetExport","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetExportJob_Public"}}},"description":"Existing export job in progress"},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetExportJob_Public"}}},"description":"Export job created"}},"summary":"Start dataset CSV export","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/export\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/export'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/export\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/export\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/export', { method: 'POST' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/export', { method: 'POST' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/export\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"POST\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/export\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/export\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/{id}/items":{"get":{"description":"Get dataset items","operationId":"getDatasetItems","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"version","schema":{"description":"Version hash or tag to fetch specific dataset version","type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}},{"in":"query","name":"truncate","schema":{"description":"Truncate image included in either input, output or metadata","type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetItemPage_Public"}}},"description":"Dataset items resource"}},"summary":"Get dataset items","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items?filters=string&page=1&size=10&truncate=true&version=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items?filters=string&page=1&size=10&truncate=true&version=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items?filters=string&page=1&size=10&truncate=true&version=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items?filters=string&page=1&size=10&truncate=true&version=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items?filters=string&page=1&size=10&truncate=true&version=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items?filters=string&page=1&size=10&truncate=true&version=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items?filters=string&page=1&size=10&truncate=true&version=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items?filters=string&page=1&size=10&truncate=true&version=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items?filters=string&page=1&size=10&truncate=true&version=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/{id}/items/changes":{"post":{"description":"Apply delta changes (add, edit, delete) to a dataset version with conflict detection.\n\nThis endpoint:\n- Creates a new version with the applied changes\n- Validates that baseVersion matches the latest version (unless override=true)\n- Returns 409 Conflict if baseVersion is stale and override is not set\n\nUse `override=true` query parameter to force version creation even with stale baseVersion.\n\nSet 'copy_from_dataset_id' and 'copy_from_version_id' together on the request body to read\ncarry-forward rows from the supplied (dataset, version) pair instead of the destination's\nprior version. When the fields are null, carry-forward rows are read from the destination's\nprior version.\n","operationId":"applyDatasetItemChanges","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"override","schema":{"default":false,"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetItemChanges_Public"}}}},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetVersion_Public"}}},"description":"Version created successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Dataset or version not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Version conflict - baseVersion is not the latest"}},"summary":"Apply changes to dataset items","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/changes?override=false\");\nrequest.Content = new StringContent(\"{}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/changes?override=false' \\\n  -H 'Content-Type: application/json' \\\n  -d '{}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/changes?override=false\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/changes?override=false\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/changes?override=false', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/changes?override=false', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/changes?override=false\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/changes?override=false\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/changes?override=false\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/{id}/items/experiments/items":{"get":{"description":"Find dataset items with experiment items","operationId":"findDatasetItemsWithExperimentItems","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"experiment_ids","required":true,"schema":{"type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}},{"in":"query","name":"sorting","schema":{"type":"string"}},{"in":"query","name":"search","schema":{"type":"string"}},{"in":"query","name":"truncate","schema":{"description":"Truncate image included in either input, output or metadata","type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetItemPage_Compare"}}},"description":"Dataset item resource"}},"summary":"Find dataset items with experiment items","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items?experiment_ids=string&filters=string&page=1&search=string&size=10&sorting=string&truncate=true\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items?experiment_ids=string&filters=string&page=1&search=string&size=10&sorting=string&truncate=true'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items?experiment_ids=string&filters=string&page=1&search=string&size=10&sorting=string&truncate=true\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items?experiment_ids=string&filters=string&page=1&search=string&size=10&sorting=string&truncate=true\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items?experiment_ids=string&filters=string&page=1&search=string&size=10&sorting=string&truncate=true', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items?experiment_ids=string&filters=string&page=1&search=string&size=10&sorting=string&truncate=true', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items?experiment_ids=string&filters=string&page=1&search=string&size=10&sorting=string&truncate=true\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items?experiment_ids=string&filters=string&page=1&search=string&size=10&sorting=string&truncate=true\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items?experiment_ids=string&filters=string&page=1&search=string&size=10&sorting=string&truncate=true\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/{id}/items/experiments/items/output/columns":{"get":{"description":"Get dataset items output columns","operationId":"getDatasetItemsOutputColumns","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"experiment_ids","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageColumns"}}},"description":"Dataset item output columns"}},"summary":"Get dataset items output columns","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items/output/columns?experiment_ids=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items/output/columns?experiment_ids=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items/output/columns?experiment_ids=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items/output/columns?experiment_ids=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items/output/columns?experiment_ids=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items/output/columns?experiment_ids=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items/output/columns?experiment_ids=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items/output/columns?experiment_ids=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items/output/columns?experiment_ids=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/{id}/items/experiments/items/stats":{"get":{"description":"Get experiment items stats for dataset","operationId":"getDatasetExperimentItemsStats","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"experiment_ids","required":true,"schema":{"type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectStats_Public"}}},"description":"Experiment items stats resource"}},"summary":"Get experiment items stats for dataset","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items/stats?experiment_ids=string&filters=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items/stats?experiment_ids=string&filters=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items/stats?experiment_ids=string&filters=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items/stats?experiment_ids=string&filters=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items/stats?experiment_ids=string&filters=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items/stats?experiment_ids=string&filters=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items/stats?experiment_ids=string&filters=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items/stats?experiment_ids=string&filters=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/items/experiments/items/stats?experiment_ids=string&filters=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/{id}/versions":{"get":{"description":"Get paginated list of versions for a dataset, ordered by creation time (newest first)","operationId":"listDatasetVersions","parameters":[{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetVersionPage_Public"}}},"description":"Dataset versions"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Bad Request"}},"summary":"List dataset versions","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions?page=1&size=10\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions?page=1&size=10'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions?page=1&size=10\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions?page=1&size=10\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions?page=1&size=10', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions?page=1&size=10', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions?page=1&size=10\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions?page=1&size=10\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions?page=1&size=10\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/{id}/versions/diff":{"get":{"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":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetVersionDiff"}}},"description":"Diff computed successfully"},"404":{"description":"Version not found"}},"summary":"Compare latest version with draft","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/diff\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/diff'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/diff\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/diff\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/diff', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/diff', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/diff\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/diff\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/diff\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/{id}/versions/hash/{versionHash}":{"patch":{"description":"Update a dataset version's change_description and/or add new tags","operationId":"updateDatasetVersion","parameters":[{"in":"path","name":"versionHash","required":true,"schema":{"type":"string"}},{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetVersionUpdate_Public"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetVersion_Public"}}},"description":"Version updated successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Not Found - Version not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Conflict - Tag already exists"}},"summary":"Update dataset version","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/hash/string\");\nrequest.Content = new StringContent(\"{\\\"change_description\\\":\\\"Updated baseline version\\\",\\\"tags_to_add\\\":[\\\"production\\\",\\\"reviewed\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/hash/string' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"change_description\":\"Updated baseline version\",\"tags_to_add\":[\"production\",\"reviewed\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"change_description\":\"Updated baseline version\",\"tags_to_add\":[\"production\",\"reviewed\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/hash/string\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/hash/string\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"change_description\\\":\\\"Updated baseline version\\\",\\\"tags_to_add\\\":[\\\"production\\\",\\\"reviewed\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/hash/string', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"change_description\":\"Updated baseline version\",\"tags_to_add\":[\"production\",\"reviewed\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/hash/string', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"change_description\\\":\\\"Updated baseline version\\\",\\\"tags_to_add\\\":[\\\"production\\\",\\\"reviewed\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/hash/string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"change_description\\\":\\\"Updated baseline version\\\",\\\"tags_to_add\\\":[\\\"production\\\",\\\"reviewed\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/hash/string\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"change_description\":\"Updated baseline version\",\"tags_to_add\":[\"production\",\"reviewed\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/hash/string\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"change_description\\\":\\\"Updated baseline version\\\",\\\"tags_to_add\\\":[\\\"production\\\",\\\"reviewed\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/{id}/versions/hash/{versionHash}/tags":{"post":{"description":"Add a tag to a specific dataset version for easy reference (e.g., 'baseline', 'v1.0', 'production')","operationId":"createVersionTag","parameters":[{"in":"path","name":"versionHash","required":true,"schema":{"type":"string"}},{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetVersionTag"}}}},"responses":{"204":{"description":"Tag created successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not Found - Version not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Conflict - Tag already exists"}},"summary":"Create version tag","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/hash/string/tags\");\nrequest.Content = new StringContent(\"{\\\"tag\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/hash/string/tags' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"tag\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"tag\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/hash/string/tags\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/hash/string/tags\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"tag\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/hash/string/tags', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"tag\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/hash/string/tags', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"tag\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/hash/string/tags\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"tag\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/hash/string/tags\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"tag\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/hash/string/tags\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"tag\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/{id}/versions/restore":{"post":{"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":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetVersionRestore_Public"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetVersion_Public"}}},"description":"Version restored successfully"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Version not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Concurrent modification - the latest version changed during the restore; retry"}},"summary":"Restore dataset to a previous version","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/restore\");\nrequest.Content = new StringContent(\"{\\\"version_ref\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/restore' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"version_ref\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"version_ref\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/restore\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/restore\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"version_ref\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/restore', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"version_ref\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/restore', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"version_ref\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/restore\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"version_ref\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/restore\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"version_ref\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/restore\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"version_ref\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/{id}/versions/retrieve":{"post":{"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":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetVersionRetrieveRequest_Public"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetVersion_Public"}}},"description":"Dataset version"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Version not found"}},"summary":"Retrieve dataset version by name","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/retrieve\");\nrequest.Content = new StringContent(\"{\\\"version_name\\\":\\\"v1\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/retrieve' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"version_name\":\"v1\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"version_name\":\"v1\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/retrieve\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/retrieve\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"version_name\\\":\\\"v1\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/retrieve', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"version_name\":\"v1\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/retrieve', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"version_name\\\":\\\"v1\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/retrieve\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"version_name\\\":\\\"v1\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/retrieve\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"version_name\":\"v1\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/retrieve\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"version_name\\\":\\\"v1\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/datasets/{id}/versions/{versionHash}/tags/{tag}":{"delete":{"description":"Remove a tag from a dataset version. The version itself is not deleted, only the tag reference.","operationId":"deleteVersionTag","parameters":[{"in":"path","name":"versionHash","required":true,"schema":{"type":"string"}},{"in":"path","name":"tag","required":true,"schema":{"type":"string"}},{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"204":{"description":"Tag deleted successfully"}},"summary":"Delete version tag","tags":["Datasets"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Delete, \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/string/tags/string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X DELETE 'http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/string/tags/string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"DELETE\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/string/tags/string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/string/tags/string\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/string/tags/string', { method: 'DELETE' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/string/tags/string', { method: 'DELETE' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/string/tags/string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"DELETE\", \"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/string/tags/string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/datasets/00000000-0000-0000-0000-000000000000/versions/string/tags/string\")\nrequest = Net::HTTPGenericRequest.new(\"DELETE\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/environments":{"get":{"description":"Find environments for the workspace. Capped at the workspace limit (default 20).","operationId":"findEnvironments","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentPage_Public"}}},"description":"Environments page"}},"summary":"Find environments","tags":["Environments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/environments\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/environments'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/environments\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/environments\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/environments', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/environments', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/environments\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/environments\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/environments\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Create environment","operationId":"createEnvironment","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment_Write"}}}},"responses":{"201":{"description":"Created","headers":{"Location":{"example":"${basePath}/v1/private/environments/{environmentId}","required":true,"schema":{"type":"string"},"style":"simple"}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Conflict"}},"summary":"Create environment","tags":["Environments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/environments\");\nrequest.Content = new StringContent(\"{\\\"color\\\":\\\"string\\\",\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"position\\\":0}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/environments' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"color\":\"string\",\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"position\":0}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"color\":\"string\",\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"position\":0}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/environments\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/environments\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"color\\\":\\\"string\\\",\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"position\\\":0}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/environments', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"color\":\"string\",\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"position\":0}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/environments', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"color\\\":\\\"string\\\",\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"position\\\":0}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/environments\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"color\\\":\\\"string\\\",\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"position\\\":0}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/environments\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"color\":\"string\",\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"position\":0}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/environments\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"color\\\":\\\"string\\\",\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"position\\\":0}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/environments/delete":{"post":{"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"}},"summary":"Delete environments","tags":["Environments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/environments/delete\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/environments/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/environments/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/environments/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/environments/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/environments/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/environments/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/environments/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/environments/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/environments/{id}":{"get":{"description":"Get environment by id","operationId":"getEnvironmentById","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Environment_Public"}}},"description":"Environment"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Not found"}},"summary":"Get environment by id","tags":["Environments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/environments/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/environments/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/environments/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/environments/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/environments/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/environments/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/environments/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/environments/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/environments/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"patch":{"description":"Update environment by id","operationId":"updateEnvironment","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentUpdate"}}}},"responses":{"204":{"description":"No Content"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Conflict"}},"summary":"Update environment by id","tags":["Environments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/environments/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"color\\\":\\\"string\\\",\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"position\\\":0}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/environments/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"color\":\"string\",\"description\":\"string\",\"name\":\"string\",\"position\":0}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"color\":\"string\",\"description\":\"string\",\"name\":\"string\",\"position\":0}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/environments/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/environments/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"color\\\":\\\"string\\\",\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"position\\\":0}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/environments/00000000-0000-0000-0000-000000000000', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"color\":\"string\",\"description\":\"string\",\"name\":\"string\",\"position\":0}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/environments/00000000-0000-0000-0000-000000000000', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"color\\\":\\\"string\\\",\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"position\\\":0}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/environments/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"color\\\":\\\"string\\\",\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"position\\\":0}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/environments/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"color\":\"string\",\"description\":\"string\",\"name\":\"string\",\"position\":0}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/environments/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"color\\\":\\\"string\\\",\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"position\\\":0}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/experiments":{"get":{"description":"Find experiments","operationId":"findExperiments","parameters":[{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"datasetId","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"optimization_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"types","schema":{"type":"string"}},{"in":"query","name":"name","schema":{"description":"Filter experiments by name (partial match, case insensitive)","type":"string"}},{"in":"query","name":"dataset_deleted","schema":{"type":"boolean"}},{"in":"query","name":"prompt_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"project_deleted","schema":{"type":"boolean"}},{"in":"query","name":"sorting","schema":{"type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}},{"in":"query","name":"experiment_ids","schema":{"description":"Filter experiments by a list of experiment IDs","type":"string"}},{"in":"query","name":"force_sorting","schema":{"default":false,"description":"Force sorting even when exceeding the endpoint result set limit. May result in slower queries","type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExperimentPage_Public"}}},"description":"Experiments resource"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Bad Request"}},"summary":"Find experiments","tags":["Experiments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/experiments?datasetId=00000000-0000-0000-0000-000000000000&dataset_deleted=true&experiment_ids=string&filters=string&force_sorting=false&name=string&optimization_id=00000000-0000-0000-0000-000000000000&page=1&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&prompt_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string&types=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/experiments?datasetId=00000000-0000-0000-0000-000000000000&dataset_deleted=true&experiment_ids=string&filters=string&force_sorting=false&name=string&optimization_id=00000000-0000-0000-0000-000000000000&page=1&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&prompt_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string&types=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/experiments?datasetId=00000000-0000-0000-0000-000000000000&dataset_deleted=true&experiment_ids=string&filters=string&force_sorting=false&name=string&optimization_id=00000000-0000-0000-0000-000000000000&page=1&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&prompt_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string&types=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/experiments?datasetId=00000000-0000-0000-0000-000000000000&dataset_deleted=true&experiment_ids=string&filters=string&force_sorting=false&name=string&optimization_id=00000000-0000-0000-0000-000000000000&page=1&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&prompt_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string&types=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments?datasetId=00000000-0000-0000-0000-000000000000&dataset_deleted=true&experiment_ids=string&filters=string&force_sorting=false&name=string&optimization_id=00000000-0000-0000-0000-000000000000&page=1&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&prompt_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string&types=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments?datasetId=00000000-0000-0000-0000-000000000000&dataset_deleted=true&experiment_ids=string&filters=string&force_sorting=false&name=string&optimization_id=00000000-0000-0000-0000-000000000000&page=1&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&prompt_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string&types=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/experiments?datasetId=00000000-0000-0000-0000-000000000000&dataset_deleted=true&experiment_ids=string&filters=string&force_sorting=false&name=string&optimization_id=00000000-0000-0000-0000-000000000000&page=1&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&prompt_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string&types=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/experiments?datasetId=00000000-0000-0000-0000-000000000000&dataset_deleted=true&experiment_ids=string&filters=string&force_sorting=false&name=string&optimization_id=00000000-0000-0000-0000-000000000000&page=1&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&prompt_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string&types=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/experiments?datasetId=00000000-0000-0000-0000-000000000000&dataset_deleted=true&experiment_ids=string&filters=string&force_sorting=false&name=string&optimization_id=00000000-0000-0000-0000-000000000000&page=1&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&prompt_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string&types=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Create experiment","operationId":"createExperiment","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Experiment_Write"}}}},"responses":{"201":{"description":"Created","headers":{"Location":{"example":"${basePath}/v1/private/experiments/{id}","required":true,"schema":{"type":"string"},"style":"simple"}}}},"summary":"Create experiment","tags":["Experiments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/experiments\");\nrequest.Content = new StringContent(\"{\\\"dataset_name\\\":\\\"string\\\",\\\"dataset_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"evaluation_method\\\":\\\"dataset\\\",\\\"experiment_scores\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":0}],\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"optimization_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"prompt_version\\\":{\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"},\\\"prompt_versions\\\":[{\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}],\\\"status\\\":\\\"cancelled\\\",\\\"tags\\\":[\\\"string\\\"],\\\"type\\\":\\\"mini-batch\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/experiments' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"dataset_name\":\"string\",\"dataset_version_id\":\"00000000-0000-0000-0000-000000000000\",\"evaluation_method\":\"dataset\",\"experiment_scores\":[{\"name\":\"string\",\"value\":0}],\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{},\"name\":\"string\",\"optimization_id\":\"00000000-0000-0000-0000-000000000000\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"prompt_version\":{\"id\":\"00000000-0000-0000-0000-000000000000\"},\"prompt_versions\":[{\"id\":\"00000000-0000-0000-0000-000000000000\"}],\"status\":\"cancelled\",\"tags\":[\"string\"],\"type\":\"mini-batch\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"dataset_name\":\"string\",\"dataset_version_id\":\"00000000-0000-0000-0000-000000000000\",\"evaluation_method\":\"dataset\",\"experiment_scores\":[{\"name\":\"string\",\"value\":0}],\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{},\"name\":\"string\",\"optimization_id\":\"00000000-0000-0000-0000-000000000000\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"prompt_version\":{\"id\":\"00000000-0000-0000-0000-000000000000\"},\"prompt_versions\":[{\"id\":\"00000000-0000-0000-0000-000000000000\"}],\"status\":\"cancelled\",\"tags\":[\"string\"],\"type\":\"mini-batch\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/experiments\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/experiments\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"dataset_name\\\":\\\"string\\\",\\\"dataset_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"evaluation_method\\\":\\\"dataset\\\",\\\"experiment_scores\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":0}],\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"optimization_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"prompt_version\\\":{\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"},\\\"prompt_versions\\\":[{\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}],\\\"status\\\":\\\"cancelled\\\",\\\"tags\\\":[\\\"string\\\"],\\\"type\\\":\\\"mini-batch\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"dataset_name\":\"string\",\"dataset_version_id\":\"00000000-0000-0000-0000-000000000000\",\"evaluation_method\":\"dataset\",\"experiment_scores\":[{\"name\":\"string\",\"value\":0}],\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{},\"name\":\"string\",\"optimization_id\":\"00000000-0000-0000-0000-000000000000\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"prompt_version\":{\"id\":\"00000000-0000-0000-0000-000000000000\"},\"prompt_versions\":[{\"id\":\"00000000-0000-0000-0000-000000000000\"}],\"status\":\"cancelled\",\"tags\":[\"string\"],\"type\":\"mini-batch\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"dataset_name\\\":\\\"string\\\",\\\"dataset_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"evaluation_method\\\":\\\"dataset\\\",\\\"experiment_scores\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":0}],\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"optimization_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"prompt_version\\\":{\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"},\\\"prompt_versions\\\":[{\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}],\\\"status\\\":\\\"cancelled\\\",\\\"tags\\\":[\\\"string\\\"],\\\"type\\\":\\\"mini-batch\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/experiments\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"dataset_name\\\":\\\"string\\\",\\\"dataset_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"evaluation_method\\\":\\\"dataset\\\",\\\"experiment_scores\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":0}],\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"optimization_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"prompt_version\\\":{\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"},\\\"prompt_versions\\\":[{\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}],\\\"status\\\":\\\"cancelled\\\",\\\"tags\\\":[\\\"string\\\"],\\\"type\\\":\\\"mini-batch\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/experiments\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"dataset_name\":\"string\",\"dataset_version_id\":\"00000000-0000-0000-0000-000000000000\",\"evaluation_method\":\"dataset\",\"experiment_scores\":[{\"name\":\"string\",\"value\":0}],\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{},\"name\":\"string\",\"optimization_id\":\"00000000-0000-0000-0000-000000000000\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"prompt_version\":{\"id\":\"00000000-0000-0000-0000-000000000000\"},\"prompt_versions\":[{\"id\":\"00000000-0000-0000-0000-000000000000\"}],\"status\":\"cancelled\",\"tags\":[\"string\"],\"type\":\"mini-batch\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/experiments\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"dataset_name\\\":\\\"string\\\",\\\"dataset_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"evaluation_method\\\":\\\"dataset\\\",\\\"experiment_scores\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":0}],\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"optimization_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"prompt_version\\\":{\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"},\\\"prompt_versions\\\":[{\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}],\\\"status\\\":\\\"cancelled\\\",\\\"tags\\\":[\\\"string\\\"],\\\"type\\\":\\\"mini-batch\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/experiments/batch":{"patch":{"description":"Update multiple experiments","operationId":"batchUpdateExperiments","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExperimentBatchUpdate"}}}},"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Batch update experiments","tags":["Experiments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/experiments/batch\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"experiment_scores\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":0}],\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"type\\\":\\\"mini-batch\\\"}}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/experiments/batch' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":true,\"update\":{\"experiment_scores\":[{\"name\":\"string\",\"value\":0}],\"metadata\":{},\"name\":\"string\",\"status\":\"cancelled\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"type\":\"mini-batch\"}}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":true,\"update\":{\"experiment_scores\":[{\"name\":\"string\",\"value\":0}],\"metadata\":{},\"name\":\"string\",\"status\":\"cancelled\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"type\":\"mini-batch\"}}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/experiments/batch\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/experiments/batch\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"experiment_scores\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":0}],\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"type\\\":\\\"mini-batch\\\"}}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/batch', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":true,\"update\":{\"experiment_scores\":[{\"name\":\"string\",\"value\":0}],\"metadata\":{},\"name\":\"string\",\"status\":\"cancelled\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"type\":\"mini-batch\"}}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/batch', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"experiment_scores\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":0}],\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"type\\\":\\\"mini-batch\\\"}}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/experiments/batch\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"experiment_scores\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":0}],\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"type\\\":\\\"mini-batch\\\"}}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/experiments/batch\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":true,\"update\":{\"experiment_scores\":[{\"name\":\"string\",\"value\":0}],\"metadata\":{},\"name\":\"string\",\"status\":\"cancelled\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"type\":\"mini-batch\"}}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/experiments/batch\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"experiment_scores\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":0}],\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"type\\\":\\\"mini-batch\\\"}}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/experiments/delete":{"post":{"description":"Delete experiments by id","operationId":"deleteExperimentsById","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteIdsHolder"}}}},"responses":{"204":{"description":"No content"}},"summary":"Delete experiments by id","tags":["Experiments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/experiments/delete\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/experiments/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/experiments/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/experiments/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/experiments/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/experiments/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/experiments/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/experiments/execute":{"post":{"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":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExperimentExecutionResponse"}}},"description":"Experiments created and processing started"}},"summary":"Create and execute experiment","tags":["Experiments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/experiments/execute\");\nrequest.Content = new StringContent(\"{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_name\\\":\\\"string\\\",\\\"dataset_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"prompt_versions\\\":[{\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}],\\\"prompts\\\":[{\\\"configs\\\":{\\\"additionalProp1\\\":{}},\\\"experiment_name\\\":\\\"string\\\",\\\"messages\\\":[{\\\"content\\\":{},\\\"role\\\":\\\"string\\\"}],\\\"model\\\":\\\"string\\\",\\\"prompt_versions\\\":[{\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}]}],\\\"version_hash\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/experiments/execute' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_name\":\"string\",\"dataset_version_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"prompt_versions\":[{\"id\":\"00000000-0000-0000-0000-000000000000\"}],\"prompts\":[{\"configs\":{\"additionalProp1\":{}},\"experiment_name\":\"string\",\"messages\":[{\"content\":{},\"role\":\"string\"}],\"model\":\"string\",\"prompt_versions\":[{\"id\":\"00000000-0000-0000-0000-000000000000\"}]}],\"version_hash\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_name\":\"string\",\"dataset_version_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"prompt_versions\":[{\"id\":\"00000000-0000-0000-0000-000000000000\"}],\"prompts\":[{\"configs\":{\"additionalProp1\":{}},\"experiment_name\":\"string\",\"messages\":[{\"content\":{},\"role\":\"string\"}],\"model\":\"string\",\"prompt_versions\":[{\"id\":\"00000000-0000-0000-0000-000000000000\"}]}],\"version_hash\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/experiments/execute\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/experiments/execute\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_name\\\":\\\"string\\\",\\\"dataset_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"prompt_versions\\\":[{\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}],\\\"prompts\\\":[{\\\"configs\\\":{\\\"additionalProp1\\\":{}},\\\"experiment_name\\\":\\\"string\\\",\\\"messages\\\":[{\\\"content\\\":{},\\\"role\\\":\\\"string\\\"}],\\\"model\\\":\\\"string\\\",\\\"prompt_versions\\\":[{\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}]}],\\\"version_hash\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/execute', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_name\":\"string\",\"dataset_version_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"prompt_versions\":[{\"id\":\"00000000-0000-0000-0000-000000000000\"}],\"prompts\":[{\"configs\":{\"additionalProp1\":{}},\"experiment_name\":\"string\",\"messages\":[{\"content\":{},\"role\":\"string\"}],\"model\":\"string\",\"prompt_versions\":[{\"id\":\"00000000-0000-0000-0000-000000000000\"}]}],\"version_hash\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/execute', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_name\\\":\\\"string\\\",\\\"dataset_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"prompt_versions\\\":[{\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}],\\\"prompts\\\":[{\\\"configs\\\":{\\\"additionalProp1\\\":{}},\\\"experiment_name\\\":\\\"string\\\",\\\"messages\\\":[{\\\"content\\\":{},\\\"role\\\":\\\"string\\\"}],\\\"model\\\":\\\"string\\\",\\\"prompt_versions\\\":[{\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}]}],\\\"version_hash\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/experiments/execute\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_name\\\":\\\"string\\\",\\\"dataset_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"prompt_versions\\\":[{\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}],\\\"prompts\\\":[{\\\"configs\\\":{\\\"additionalProp1\\\":{}},\\\"experiment_name\\\":\\\"string\\\",\\\"messages\\\":[{\\\"content\\\":{},\\\"role\\\":\\\"string\\\"}],\\\"model\\\":\\\"string\\\",\\\"prompt_versions\\\":[{\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}]}],\\\"version_hash\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/experiments/execute\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_name\":\"string\",\"dataset_version_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"prompt_versions\":[{\"id\":\"00000000-0000-0000-0000-000000000000\"}],\"prompts\":[{\"configs\":{\"additionalProp1\":{}},\"experiment_name\":\"string\",\"messages\":[{\"content\":{},\"role\":\"string\"}],\"model\":\"string\",\"prompt_versions\":[{\"id\":\"00000000-0000-0000-0000-000000000000\"}]}],\"version_hash\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/experiments/execute\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_name\\\":\\\"string\\\",\\\"dataset_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"prompt_versions\\\":[{\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}],\\\"prompts\\\":[{\\\"configs\\\":{\\\"additionalProp1\\\":{}},\\\"experiment_name\\\":\\\"string\\\",\\\"messages\\\":[{\\\"content\\\":{},\\\"role\\\":\\\"string\\\"}],\\\"model\\\":\\\"string\\\",\\\"prompt_versions\\\":[{\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}]}],\\\"version_hash\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/experiments/feedback-scores/names":{"get":{"description":"Find Feedback Score names","operationId":"findFeedbackScoreNames","parameters":[{"in":"query","name":"experiment_ids","schema":{"type":"string"}},{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackScoreNames_Public"}}},"description":"Feedback Scores resource"}},"summary":"Find Feedback Score names","tags":["Experiments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/experiments/feedback-scores/names?experiment_ids=string&project_id=00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/experiments/feedback-scores/names?experiment_ids=string&project_id=00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/experiments/feedback-scores/names?experiment_ids=string&project_id=00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/experiments/feedback-scores/names?experiment_ids=string&project_id=00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/feedback-scores/names?experiment_ids=string&project_id=00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/feedback-scores/names?experiment_ids=string&project_id=00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/experiments/feedback-scores/names?experiment_ids=string&project_id=00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/experiments/feedback-scores/names?experiment_ids=string&project_id=00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/experiments/feedback-scores/names?experiment_ids=string&project_id=00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/experiments/finish":{"post":{"description":"Finish experiments and trigger alert events","operationId":"finishExperiments","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteIdsHolder"}}}},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Finish experiments","tags":["Experiments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/experiments/finish\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/experiments/finish' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/experiments/finish\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/experiments/finish\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/finish', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/finish', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/experiments/finish\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/experiments/finish\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/experiments/finish\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/experiments/groups":{"get":{"description":"Find experiments grouped by specified fields","operationId":"findExperimentGroups","parameters":[{"in":"query","name":"groups","schema":{"type":"string"}},{"in":"query","name":"types","schema":{"type":"string"}},{"in":"query","name":"name","schema":{"description":"Filter experiments by name (partial match, case insensitive)","type":"string"}},{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"project_deleted","schema":{"type":"boolean"}},{"in":"query","name":"filters","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExperimentGroupResponse"}}},"description":"Experiment groups"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Find experiment groups","tags":["Experiments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/experiments/groups?filters=string&groups=string&name=string&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&types=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/experiments/groups?filters=string&groups=string&name=string&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&types=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/experiments/groups?filters=string&groups=string&name=string&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&types=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/experiments/groups?filters=string&groups=string&name=string&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&types=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/groups?filters=string&groups=string&name=string&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&types=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/groups?filters=string&groups=string&name=string&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&types=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/experiments/groups?filters=string&groups=string&name=string&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&types=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/experiments/groups?filters=string&groups=string&name=string&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&types=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/experiments/groups?filters=string&groups=string&name=string&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&types=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/experiments/groups/aggregations":{"get":{"description":"Find experiments grouped by specified fields with aggregation metrics","operationId":"findExperimentGroupsAggregations","parameters":[{"in":"query","name":"groups","schema":{"type":"string"}},{"in":"query","name":"types","schema":{"type":"string"}},{"in":"query","name":"name","schema":{"description":"Filter experiments by name (partial match, case insensitive)","type":"string"}},{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"project_deleted","schema":{"description":"Filter experiments by deleted projects","type":"boolean"}},{"in":"query","name":"filters","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExperimentGroupAggregationsResponse"}}},"description":"Experiment groups with aggregations"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Find experiment groups with aggregations","tags":["Experiments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/experiments/groups/aggregations?filters=string&groups=string&name=string&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&types=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/experiments/groups/aggregations?filters=string&groups=string&name=string&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&types=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/experiments/groups/aggregations?filters=string&groups=string&name=string&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&types=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/experiments/groups/aggregations?filters=string&groups=string&name=string&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&types=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/groups/aggregations?filters=string&groups=string&name=string&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&types=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/groups/aggregations?filters=string&groups=string&name=string&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&types=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/experiments/groups/aggregations?filters=string&groups=string&name=string&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&types=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/experiments/groups/aggregations?filters=string&groups=string&name=string&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&types=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/experiments/groups/aggregations?filters=string&groups=string&name=string&project_deleted=true&project_id=00000000-0000-0000-0000-000000000000&types=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/experiments/items":{"post":{"description":"Create experiment items","operationId":"createExperimentItems","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExperimentItemsBatch"}}}},"responses":{"204":{"description":"No content"}},"summary":"Create experiment items","tags":["Experiments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/experiments/items\");\nrequest.Content = new StringContent(\"{\\\"experiment_items\\\":[{\\\"dataset_item_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"experiment_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"output\\\":{},\\\"project_name\\\":\\\"string\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"trace_metadata\\\":{}}]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/experiments/items' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"experiment_items\":[{\"dataset_item_id\":\"00000000-0000-0000-0000-000000000000\",\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"experiment_id\":\"00000000-0000-0000-0000-000000000000\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"output\":{},\"project_name\":\"string\",\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"trace_metadata\":{}}]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"experiment_items\":[{\"dataset_item_id\":\"00000000-0000-0000-0000-000000000000\",\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"experiment_id\":\"00000000-0000-0000-0000-000000000000\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"output\":{},\"project_name\":\"string\",\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"trace_metadata\":{}}]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/experiments/items\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/experiments/items\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"experiment_items\\\":[{\\\"dataset_item_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"experiment_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"output\\\":{},\\\"project_name\\\":\\\"string\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"trace_metadata\\\":{}}]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/items', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"experiment_items\":[{\"dataset_item_id\":\"00000000-0000-0000-0000-000000000000\",\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"experiment_id\":\"00000000-0000-0000-0000-000000000000\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"output\":{},\"project_name\":\"string\",\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"trace_metadata\":{}}]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/items', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"experiment_items\\\":[{\\\"dataset_item_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"experiment_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"output\\\":{},\\\"project_name\\\":\\\"string\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"trace_metadata\\\":{}}]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/experiments/items\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"experiment_items\\\":[{\\\"dataset_item_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"experiment_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"output\\\":{},\\\"project_name\\\":\\\"string\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"trace_metadata\\\":{}}]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/experiments/items\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"experiment_items\":[{\"dataset_item_id\":\"00000000-0000-0000-0000-000000000000\",\"execution_policy\":{\"pass_threshold\":0,\"runs_per_item\":0},\"experiment_id\":\"00000000-0000-0000-0000-000000000000\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"output\":{},\"project_name\":\"string\",\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"trace_metadata\":{}}]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/experiments/items\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"experiment_items\\\":[{\\\"dataset_item_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"execution_policy\\\":{\\\"pass_threshold\\\":0,\\\"runs_per_item\\\":0},\\\"experiment_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"output\\\":{},\\\"project_name\\\":\\\"string\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"trace_metadata\\\":{}}]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/experiments/items/bulk":{"put":{"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":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unprocessable Content"}},"summary":"Record experiment items in bulk","tags":["Experiments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/experiments/items/bulk\");\nrequest.Content = new StringContent(\"{\\\"dataset_name\\\":\\\"string\\\",\\\"experiment_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"experiment_name\\\":\\\"string\\\",\\\"items\\\":[{\\\"dataset_item_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"evaluate_task_result\\\":{},\\\"feedback_scores\\\":[{\\\"category_name\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}],\\\"spans\\\":[{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"total_estimated_cost_version\\\":\\\"string\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}],\\\"trace\\\":{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}}],\\\"project_name\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/experiments/items/bulk' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"dataset_name\":\"string\",\"experiment_id\":\"00000000-0000-0000-0000-000000000000\",\"experiment_name\":\"string\",\"items\":[{\"dataset_item_id\":\"00000000-0000-0000-0000-000000000000\",\"evaluate_task_result\":{},\"feedback_scores\":[{\"category_name\":\"string\",\"name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"value\":0}],\"spans\":[{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"model\":\"string\",\"name\":\"string\",\"output\":{},\"parent_span_id\":\"00000000-0000-0000-0000-000000000000\",\"provider\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"total_estimated_cost\":0,\"total_estimated_cost_version\":\"string\",\"ttft\":0,\"type\":\"general\",\"usage\":{\"additionalProp1\":0}}],\"trace\":{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"name\":\"string\",\"output\":{},\"project_name\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"thread_id\":\"string\",\"ttft\":0}}],\"project_name\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"dataset_name\":\"string\",\"experiment_id\":\"00000000-0000-0000-0000-000000000000\",\"experiment_name\":\"string\",\"items\":[{\"dataset_item_id\":\"00000000-0000-0000-0000-000000000000\",\"evaluate_task_result\":{},\"feedback_scores\":[{\"category_name\":\"string\",\"name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"value\":0}],\"spans\":[{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"model\":\"string\",\"name\":\"string\",\"output\":{},\"parent_span_id\":\"00000000-0000-0000-0000-000000000000\",\"provider\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"total_estimated_cost\":0,\"total_estimated_cost_version\":\"string\",\"ttft\":0,\"type\":\"general\",\"usage\":{\"additionalProp1\":0}}],\"trace\":{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"name\":\"string\",\"output\":{},\"project_name\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"thread_id\":\"string\",\"ttft\":0}}],\"project_name\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/experiments/items/bulk\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/experiments/items/bulk\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{\\\"dataset_name\\\":\\\"string\\\",\\\"experiment_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"experiment_name\\\":\\\"string\\\",\\\"items\\\":[{\\\"dataset_item_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"evaluate_task_result\\\":{},\\\"feedback_scores\\\":[{\\\"category_name\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}],\\\"spans\\\":[{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"total_estimated_cost_version\\\":\\\"string\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}],\\\"trace\\\":{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}}],\\\"project_name\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/items/bulk', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"dataset_name\":\"string\",\"experiment_id\":\"00000000-0000-0000-0000-000000000000\",\"experiment_name\":\"string\",\"items\":[{\"dataset_item_id\":\"00000000-0000-0000-0000-000000000000\",\"evaluate_task_result\":{},\"feedback_scores\":[{\"category_name\":\"string\",\"name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"value\":0}],\"spans\":[{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"model\":\"string\",\"name\":\"string\",\"output\":{},\"parent_span_id\":\"00000000-0000-0000-0000-000000000000\",\"provider\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"total_estimated_cost\":0,\"total_estimated_cost_version\":\"string\",\"ttft\":0,\"type\":\"general\",\"usage\":{\"additionalProp1\":0}}],\"trace\":{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"name\":\"string\",\"output\":{},\"project_name\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"thread_id\":\"string\",\"ttft\":0}}],\"project_name\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/items/bulk', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"dataset_name\\\":\\\"string\\\",\\\"experiment_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"experiment_name\\\":\\\"string\\\",\\\"items\\\":[{\\\"dataset_item_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"evaluate_task_result\\\":{},\\\"feedback_scores\\\":[{\\\"category_name\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}],\\\"spans\\\":[{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"total_estimated_cost_version\\\":\\\"string\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}],\\\"trace\\\":{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}}],\\\"project_name\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/experiments/items/bulk\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"dataset_name\\\":\\\"string\\\",\\\"experiment_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"experiment_name\\\":\\\"string\\\",\\\"items\\\":[{\\\"dataset_item_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"evaluate_task_result\\\":{},\\\"feedback_scores\\\":[{\\\"category_name\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}],\\\"spans\\\":[{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"total_estimated_cost_version\\\":\\\"string\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}],\\\"trace\\\":{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}}],\\\"project_name\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/experiments/items/bulk\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"dataset_name\":\"string\",\"experiment_id\":\"00000000-0000-0000-0000-000000000000\",\"experiment_name\":\"string\",\"items\":[{\"dataset_item_id\":\"00000000-0000-0000-0000-000000000000\",\"evaluate_task_result\":{},\"feedback_scores\":[{\"category_name\":\"string\",\"name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"value\":0}],\"spans\":[{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"model\":\"string\",\"name\":\"string\",\"output\":{},\"parent_span_id\":\"00000000-0000-0000-0000-000000000000\",\"provider\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"total_estimated_cost\":0,\"total_estimated_cost_version\":\"string\",\"ttft\":0,\"type\":\"general\",\"usage\":{\"additionalProp1\":0}}],\"trace\":{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"name\":\"string\",\"output\":{},\"project_name\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"thread_id\":\"string\",\"ttft\":0}}],\"project_name\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/experiments/items/bulk\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"dataset_name\\\":\\\"string\\\",\\\"experiment_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"experiment_name\\\":\\\"string\\\",\\\"items\\\":[{\\\"dataset_item_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"evaluate_task_result\\\":{},\\\"feedback_scores\\\":[{\\\"category_name\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}],\\\"spans\\\":[{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"total_estimated_cost_version\\\":\\\"string\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}],\\\"trace\\\":{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}}],\\\"project_name\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/experiments/items/delete":{"post":{"description":"Delete experiment items","operationId":"deleteExperimentItems","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExperimentItemsDelete"}}}},"responses":{"204":{"description":"No content"}},"summary":"Delete experiment items","tags":["Experiments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/experiments/items/delete\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/experiments/items/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/experiments/items/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/experiments/items/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/items/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/items/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/experiments/items/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/experiments/items/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/experiments/items/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/experiments/items/stream":{"post":{"description":"Stream experiment items","operationId":"streamExperimentItems","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExperimentItemStreamRequest"}}}},"responses":{"200":{"content":{"application/octet-stream":{"schema":{"items":{"anyOf":[{"$ref":"#/components/schemas/ExperimentItem"},{"$ref":"#/components/schemas/ErrorMessage"}],"type":"string"},"maxItems":2000,"type":"array"}}},"description":"Experiment items stream or error during process"}},"summary":"Stream experiment items","tags":["Experiments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/experiments/items/stream\");\nrequest.Content = new StringContent(\"{\\\"experiment_name\\\":\\\"string\\\",\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":0,\\\"project_name\\\":\\\"string\\\",\\\"truncate\\\":true}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/experiments/items/stream' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"experiment_name\":\"string\",\"last_retrieved_id\":\"00000000-0000-0000-0000-000000000000\",\"limit\":0,\"project_name\":\"string\",\"truncate\":true}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"experiment_name\":\"string\",\"last_retrieved_id\":\"00000000-0000-0000-0000-000000000000\",\"limit\":0,\"project_name\":\"string\",\"truncate\":true}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/experiments/items/stream\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/experiments/items/stream\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"experiment_name\\\":\\\"string\\\",\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":0,\\\"project_name\\\":\\\"string\\\",\\\"truncate\\\":true}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/items/stream', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"experiment_name\":\"string\",\"last_retrieved_id\":\"00000000-0000-0000-0000-000000000000\",\"limit\":0,\"project_name\":\"string\",\"truncate\":true}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/items/stream', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"experiment_name\\\":\\\"string\\\",\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":0,\\\"project_name\\\":\\\"string\\\",\\\"truncate\\\":true}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/experiments/items/stream\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"experiment_name\\\":\\\"string\\\",\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":0,\\\"project_name\\\":\\\"string\\\",\\\"truncate\\\":true}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/experiments/items/stream\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"experiment_name\":\"string\",\"last_retrieved_id\":\"00000000-0000-0000-0000-000000000000\",\"limit\":0,\"project_name\":\"string\",\"truncate\":true}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/experiments/items/stream\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"experiment_name\\\":\\\"string\\\",\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":0,\\\"project_name\\\":\\\"string\\\",\\\"truncate\\\":true}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/experiments/items/{id}":{"get":{"description":"Get experiment item by id","operationId":"getExperimentItemById","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExperimentItem_Public"}}},"description":"Experiment item resource"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Not found"}},"summary":"Get experiment item by id","tags":["Experiments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/experiments/items/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/experiments/items/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/experiments/items/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/experiments/items/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/items/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/items/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/experiments/items/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/experiments/items/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/experiments/items/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/experiments/stream":{"post":{"description":"Stream experiments","operationId":"streamExperiments","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExperimentStreamRequest_Public"}}}},"responses":{"200":{"content":{"application/octet-stream":{"schema":{"items":{"anyOf":[{"$ref":"#/components/schemas/Experiment_Public"},{"$ref":"#/components/schemas/ErrorMessage_Public"}],"type":"string"},"maxItems":2000,"type":"array"}}},"description":"Experiments stream or error during process"}},"summary":"Stream experiments","tags":["Experiments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/experiments/stream\");\nrequest.Content = new StringContent(\"{\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":0,\\\"name\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/experiments/stream' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"last_retrieved_id\":\"00000000-0000-0000-0000-000000000000\",\"limit\":0,\"name\":\"string\",\"project_name\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"last_retrieved_id\":\"00000000-0000-0000-0000-000000000000\",\"limit\":0,\"name\":\"string\",\"project_name\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/experiments/stream\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/experiments/stream\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":0,\\\"name\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/stream', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"last_retrieved_id\":\"00000000-0000-0000-0000-000000000000\",\"limit\":0,\"name\":\"string\",\"project_name\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/stream', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":0,\\\"name\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/experiments/stream\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":0,\\\"name\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/experiments/stream\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"last_retrieved_id\":\"00000000-0000-0000-0000-000000000000\",\"limit\":0,\"name\":\"string\",\"project_name\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/experiments/stream\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":0,\\\"name\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/experiments/{id}":{"get":{"description":"Get experiment by id","operationId":"getExperimentById","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Experiment_Public"}}},"description":"Experiment resource"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Not found"}},"summary":"Get experiment by id","tags":["Experiments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/experiments/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/experiments/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/experiments/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/experiments/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/experiments/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/experiments/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/experiments/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"patch":{"description":"Update experiment by id","operationId":"updateExperiment","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExperimentUpdate"}}}},"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"}},"summary":"Update experiment by id","tags":["Experiments"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/experiments/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"experiment_scores\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":0}],\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"type\\\":\\\"mini-batch\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/experiments/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"experiment_scores\":[{\"name\":\"string\",\"value\":0}],\"metadata\":{},\"name\":\"string\",\"status\":\"cancelled\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"type\":\"mini-batch\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"experiment_scores\":[{\"name\":\"string\",\"value\":0}],\"metadata\":{},\"name\":\"string\",\"status\":\"cancelled\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"type\":\"mini-batch\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/experiments/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/experiments/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"experiment_scores\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":0}],\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"type\\\":\\\"mini-batch\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/00000000-0000-0000-0000-000000000000', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"experiment_scores\":[{\"name\":\"string\",\"value\":0}],\"metadata\":{},\"name\":\"string\",\"status\":\"cancelled\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"type\":\"mini-batch\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/experiments/00000000-0000-0000-0000-000000000000', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"experiment_scores\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":0}],\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"type\\\":\\\"mini-batch\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/experiments/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"experiment_scores\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":0}],\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"type\\\":\\\"mini-batch\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/experiments/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"experiment_scores\":[{\"name\":\"string\",\"value\":0}],\"metadata\":{},\"name\":\"string\",\"status\":\"cancelled\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"type\":\"mini-batch\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/experiments/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"experiment_scores\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":0}],\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"type\\\":\\\"mini-batch\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/feedback-definitions":{"get":{"description":"Find Feedback definitions","operationId":"findFeedbackDefinitions","parameters":[{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"name","schema":{"description":"Filter feedback definitions by name (partial match, case insensitive)","type":"string"}},{"in":"query","name":"type","schema":{"enum":["numerical","categorical","boolean"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackDefinitionPage_Public"}}},"description":"Feedback definitions resource"}},"summary":"Find Feedback definitions","tags":["Feedback-definitions"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/feedback-definitions?name=string&page=1&size=10&type=boolean\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/feedback-definitions?name=string&page=1&size=10&type=boolean'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/feedback-definitions?name=string&page=1&size=10&type=boolean\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/feedback-definitions?name=string&page=1&size=10&type=boolean\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/feedback-definitions?name=string&page=1&size=10&type=boolean', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/feedback-definitions?name=string&page=1&size=10&type=boolean', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/feedback-definitions?name=string&page=1&size=10&type=boolean\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/feedback-definitions?name=string&page=1&size=10&type=boolean\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/feedback-definitions?name=string&page=1&size=10&type=boolean\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Get feedback definition","operationId":"createFeedbackDefinition","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Feedback_Create"}}}},"responses":{"201":{"description":"Created","headers":{"Location":{"example":"${basePath}/v1/private/feedback-definitions/{feedbackId}","required":true,"schema":{"type":"string"},"style":"simple"}}}},"summary":"Create feedback definition","tags":["Feedback-definitions"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/feedback-definitions\");\nrequest.Content = new StringContent(\"{\\\"description\\\":\\\"This feedback definition is used to rate response quality\\\",\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"boolean\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/feedback-definitions' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"description\":\"This feedback definition is used to rate response quality\",\"name\":\"string\",\"type\":\"boolean\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"description\":\"This feedback definition is used to rate response quality\",\"name\":\"string\",\"type\":\"boolean\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/feedback-definitions\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/feedback-definitions\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"description\\\":\\\"This feedback definition is used to rate response quality\\\",\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"boolean\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/feedback-definitions', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"description\":\"This feedback definition is used to rate response quality\",\"name\":\"string\",\"type\":\"boolean\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/feedback-definitions', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"description\\\":\\\"This feedback definition is used to rate response quality\\\",\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"boolean\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/feedback-definitions\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"description\\\":\\\"This feedback definition is used to rate response quality\\\",\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"boolean\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/feedback-definitions\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"description\":\"This feedback definition is used to rate response quality\",\"name\":\"string\",\"type\":\"boolean\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/feedback-definitions\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"description\\\":\\\"This feedback definition is used to rate response quality\\\",\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"boolean\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/feedback-definitions/delete":{"post":{"description":"Delete feedback definitions batch","operationId":"deleteFeedbackDefinitionsBatch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchDelete"}}}},"responses":{"204":{"description":"No Content"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Conflict"}},"summary":"Delete feedback definitions","tags":["Feedback-definitions"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/feedback-definitions/delete\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/feedback-definitions/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/feedback-definitions/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/feedback-definitions/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/feedback-definitions/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/feedback-definitions/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/feedback-definitions/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/feedback-definitions/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/feedback-definitions/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/feedback-definitions/{id}":{"delete":{"description":"Delete feedback definition by id","operationId":"deleteFeedbackDefinitionById","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"204":{"description":"No Content"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Conflict"}},"summary":"Delete feedback definition by id","tags":["Feedback-definitions"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Delete, \"http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X DELETE 'http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"DELETE\", \"http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"DELETE\", \"http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"DELETE\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"get":{"description":"Get feedback definition by id","operationId":"getFeedbackDefinitionById","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Feedback_Public"}}},"description":"Feedback definition resource"}},"summary":"Get feedback definition by id","tags":["Feedback-definitions"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"put":{"description":"Update feedback definition by id","operationId":"updateFeedbackDefinition","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Feedback_Update"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Update feedback definition by id","tags":["Feedback-definitions"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"description\\\":\\\"This feedback definition is used to rate response quality\\\",\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"boolean\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"description\":\"This feedback definition is used to rate response quality\",\"name\":\"string\",\"type\":\"boolean\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"description\":\"This feedback definition is used to rate response quality\",\"name\":\"string\",\"type\":\"boolean\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{\\\"description\\\":\\\"This feedback definition is used to rate response quality\\\",\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"boolean\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"description\":\"This feedback definition is used to rate response quality\",\"name\":\"string\",\"type\":\"boolean\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"description\\\":\\\"This feedback definition is used to rate response quality\\\",\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"boolean\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"description\\\":\\\"This feedback definition is used to rate response quality\\\",\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"boolean\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"description\":\"This feedback definition is used to rate response quality\",\"name\":\"string\",\"type\":\"boolean\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/feedback-definitions/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"description\\\":\\\"This feedback definition is used to rate response quality\\\",\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"boolean\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/guardrails":{"post":{"description":"Batch guardrails for traces","operationId":"createGuardrails","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuardrailBatch_Write"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Create guardrails for traces in a batch","tags":["Guardrails"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/guardrails\");\nrequest.Content = new StringContent(\"{\\\"guardrails\\\":[{\\\"config\\\":{},\\\"details\\\":{},\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"CUSTOM_CLASSIFIER\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"result\\\":\\\"failed\\\",\\\"secondary_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/guardrails' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"guardrails\":[{\"config\":{},\"details\":{},\"entity_id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"CUSTOM_CLASSIFIER\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"result\":\"failed\",\"secondary_id\":\"00000000-0000-0000-0000-000000000000\"}]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"guardrails\":[{\"config\":{},\"details\":{},\"entity_id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"CUSTOM_CLASSIFIER\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"result\":\"failed\",\"secondary_id\":\"00000000-0000-0000-0000-000000000000\"}]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/guardrails\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/guardrails\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"guardrails\\\":[{\\\"config\\\":{},\\\"details\\\":{},\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"CUSTOM_CLASSIFIER\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"result\\\":\\\"failed\\\",\\\"secondary_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/guardrails', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"guardrails\":[{\"config\":{},\"details\":{},\"entity_id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"CUSTOM_CLASSIFIER\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"result\":\"failed\",\"secondary_id\":\"00000000-0000-0000-0000-000000000000\"}]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/guardrails', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"guardrails\\\":[{\\\"config\\\":{},\\\"details\\\":{},\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"CUSTOM_CLASSIFIER\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"result\\\":\\\"failed\\\",\\\"secondary_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/guardrails\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"guardrails\\\":[{\\\"config\\\":{},\\\"details\\\":{},\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"CUSTOM_CLASSIFIER\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"result\\\":\\\"failed\\\",\\\"secondary_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/guardrails\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"guardrails\":[{\"config\":{},\"details\":{},\"entity_id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"CUSTOM_CLASSIFIER\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"result\":\"failed\",\"secondary_id\":\"00000000-0000-0000-0000-000000000000\"}]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/guardrails\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"guardrails\\\":[{\\\"config\\\":{},\\\"details\\\":{},\\\"entity_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"CUSTOM_CLASSIFIER\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"result\\\":\\\"failed\\\",\\\"secondary_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/insights-views":{"get":{"description":"Find insights views in a workspace","operationId":"findInsightsViews","parameters":[{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"name","schema":{"description":"Filter insights views by name (partial match, case insensitive)","type":"string"}},{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"sorting","schema":{"type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardPage_Public"}}},"description":"Insights view page"}},"summary":"Find insights views","tags":["Insights Views"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/insights-views?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/insights-views?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/insights-views?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/insights-views?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/insights-views?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/insights-views?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/insights-views?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/insights-views?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/insights-views?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Create a new insights view in a workspace","operationId":"createInsightsView","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard_Write"}}}},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard_Public"}}},"description":"Created","headers":{"Location":{"example":"${basePath}/v1/private/insights-views/{insightsViewId}","required":true,"schema":{"type":"string"},"style":"simple"}}}},"summary":"Create insights view","tags":["Insights Views"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/insights-views\");\nrequest.Content = new StringContent(\"{\\\"config\\\":{},\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"type\\\":\\\"experiments\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/insights-views' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"config\":{},\"description\":\"string\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"type\":\"experiments\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"config\":{},\"description\":\"string\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"type\":\"experiments\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/insights-views\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/insights-views\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"config\\\":{},\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"type\\\":\\\"experiments\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/insights-views', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"config\":{},\"description\":\"string\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"type\":\"experiments\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/insights-views', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"config\\\":{},\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"type\\\":\\\"experiments\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/insights-views\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"config\\\":{},\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"type\\\":\\\"experiments\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/insights-views\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"config\":{},\"description\":\"string\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"type\":\"experiments\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/insights-views\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"config\\\":{},\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"type\\\":\\\"experiments\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/insights-views/delete-batch":{"post":{"description":"Delete insights views batch","operationId":"deleteInsightsViewsBatch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchDelete"}}}},"responses":{"204":{"description":"No content"}},"summary":"Delete insights views","tags":["Insights Views"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/insights-views/delete-batch\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/insights-views/delete-batch' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/insights-views/delete-batch\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/insights-views/delete-batch\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/insights-views/delete-batch', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/insights-views/delete-batch', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/insights-views/delete-batch\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/insights-views/delete-batch\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/insights-views/delete-batch\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/insights-views/{insightsViewId}":{"delete":{"description":"Delete insights view by id","operationId":"deleteInsightsView","parameters":[{"in":"path","name":"insightsViewId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"204":{"description":"No content"}},"summary":"Delete insights view","tags":["Insights Views"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Delete, \"http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X DELETE 'http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"DELETE\", \"http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"DELETE\", \"http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"DELETE\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"get":{"description":"Get insights view by id","operationId":"getInsightsViewById","parameters":[{"in":"path","name":"insightsViewId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard_Public"}}},"description":"Insights view resource"},"404":{"description":"Insights view not found"}},"summary":"Get insights view by id","tags":["Insights Views"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"patch":{"description":"Update insights view by id. Partial updates are supported - only provided fields will be updated.","operationId":"updateInsightsView","parameters":[{"in":"path","name":"insightsViewId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardUpdate_Public"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard_Public"}}},"description":"Updated insights view"},"404":{"description":"Insights view not found"},"409":{"description":"Conflict - insights view with this name already exists"}},"summary":"Update insights view","tags":["Insights Views"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"config\\\":{},\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"experiments\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"config\":{},\"description\":\"string\",\"name\":\"string\",\"type\":\"experiments\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"config\":{},\"description\":\"string\",\"name\":\"string\",\"type\":\"experiments\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"config\\\":{},\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"experiments\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"config\":{},\"description\":\"string\",\"name\":\"string\",\"type\":\"experiments\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"config\\\":{},\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"experiments\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"config\\\":{},\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"experiments\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"config\":{},\"description\":\"string\",\"name\":\"string\",\"type\":\"experiments\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/insights-views/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"config\\\":{},\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"type\\\":\\\"experiments\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/llm-provider-key":{"get":{"description":"Find LLM Provider's ApiKeys","operationId":"findLlmProviderKeys","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderApiKeyPage_Public"}}},"description":"LLMProviderApiKey resource"}},"summary":"Find LLM Provider's ApiKeys","tags":["LlmProviderKey"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/llm-provider-key\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/llm-provider-key'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/llm-provider-key\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/llm-provider-key\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/llm-provider-key', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/llm-provider-key', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/llm-provider-key\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/llm-provider-key\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/llm-provider-key\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Store LLM Provider's ApiKey","operationId":"storeLlmProviderApiKey","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderApiKey_Write"}}}},"responses":{"201":{"description":"Created","headers":{"Location":{"example":"${basePath}/v1/private/proxy/api_key/{apiKeyId}","required":true,"schema":{"type":"string"},"style":"simple"}}},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Access forbidden"}},"summary":"Store LLM Provider's ApiKey","tags":["LlmProviderKey"],"x-codeSamples":[{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/llm-provider-key' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"api_key\":[REDACTED]'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"api_key\":[REDACTED]`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/llm-provider-key\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/llm-provider-key\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"api_key\\\":[REDACTED]\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/llm-provider-key', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"api_key\\\":[REDACTED]\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/llm-provider-key\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"api_key\\\":[REDACTED]\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"}]}},"/v1/private/llm-provider-key/auth-config/test":{"post":{"description":"Runs the token fetch once, backend-side, and reports the token lifetime. The token itself is never returned. Send provider_id to test the stored config, auth_config to test submitted values, or both to resolve secret sentinels against the stored config.","operationId":"testLlmProviderAuthConfig","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderAuthCheck"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Result"}}},"description":"Token fetched"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request — the token fetch itself failed (unreachable URL, rejected credentials, malformed reply)"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Access forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unprocessable Content — the request is invalid (neither provider_id nor auth_config, or an invalid auth_config)"}},"summary":"Test a provider's dynamic token auth","tags":["LlmProviderKey"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/llm-provider-key/auth-config/test\");\nrequest.Content = new StringContent(\"{\\\"auth_config\\\":{\\\"credentials\\\":[{\\\"key\\\":\\\"string\\\",\\\"secret\\\":\\\"\\\",\\\"value\\\":\\\"string\\\"}],\\\"expires_field\\\":\\\"expires_in\\\",\\\"fallback_ttl_seconds\\\":0,\\\"send_as\\\":\\\"basic\\\",\\\"token_field\\\":\\\"access_token\\\",\\\"token_url\\\":\\\"https://developer.api.example.com/authentication/v1/token\\\"},\\\"provider_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/llm-provider-key/auth-config/test' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"auth_config\":{\"credentials\":[{\"key\":\"string\",\"secret\":\"[REDACTED]\",\"value\":\"string\"}],\"expires_field\":\"expires_in\",\"fallback_ttl_seconds\":0,\"send_as\":\"basic\",\"token_field\":\"access_token\",\"token_url\":\"https://developer.api.example.com/authentication/v1/token\"},\"provider_id\":\"00000000-0000-0000-0000-000000000000\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"auth_config\":{\"credentials\":[{\"key\":\"string\",\"secret\":\"[REDACTED]\",\"value\":\"string\"}],\"expires_field\":\"expires_in\",\"fallback_ttl_seconds\":0,\"send_as\":\"basic\",\"token_field\":\"access_token\",\"token_url\":\"https://developer.api.example.com/authentication/v1/token\"},\"provider_id\":\"00000000-0000-0000-0000-000000000000\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/llm-provider-key/auth-config/test\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/llm-provider-key/auth-config/test\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"auth_config\\\":{\\\"credentials\\\":[{\\\"key\\\":\\\"string\\\",\\\"secret\\\":\\\"\\\",\\\"value\\\":\\\"string\\\"}],\\\"expires_field\\\":\\\"expires_in\\\",\\\"fallback_ttl_seconds\\\":0,\\\"send_as\\\":\\\"basic\\\",\\\"token_field\\\":\\\"access_token\\\",\\\"token_url\\\":\\\"https://developer.api.example.com/authentication/v1/token\\\"},\\\"provider_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/llm-provider-key/auth-config/test', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"auth_config\\\":{\\\"credentials\\\":[{\\\"key\\\":\\\"string\\\",\\\"secret\\\":\\\"\\\",\\\"value\\\":\\\"string\\\"}],\\\"expires_field\\\":\\\"expires_in\\\",\\\"fallback_ttl_seconds\\\":0,\\\"send_as\\\":\\\"basic\\\",\\\"token_field\\\":\\\"access_token\\\",\\\"token_url\\\":\\\"https://developer.api.example.com/authentication/v1/token\\\"},\\\"provider_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/llm-provider-key/auth-config/test\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"auth_config\\\":{\\\"credentials\\\":[{\\\"key\\\":\\\"string\\\",\\\"secret\\\":\\\"\\\",\\\"value\\\":\\\"string\\\"}],\\\"expires_field\\\":\\\"expires_in\\\",\\\"fallback_ttl_seconds\\\":0,\\\"send_as\\\":\\\"basic\\\",\\\"token_field\\\":\\\"access_token\\\",\\\"token_url\\\":\\\"https://developer.api.example.com/authentication/v1/token\\\"},\\\"provider_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/llm-provider-key/auth-config/test\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"auth_config\":{\"credentials\":[{\"key\":\"string\",\"secret\":\"[REDACTED]\",\"value\":\"string\"}],\"expires_field\":\"expires_in\",\"fallback_ttl_seconds\":0,\"send_as\":\"basic\",\"token_field\":\"access_token\",\"token_url\":\"https://developer.api.example.com/authentication/v1/token\"},\"provider_id\":\"00000000-0000-0000-0000-000000000000\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/llm-provider-key/auth-config/test\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"auth_config\\\":{\\\"credentials\\\":[{\\\"key\\\":\\\"string\\\",\\\"secret\\\":\\\"\\\",\\\"value\\\":\\\"string\\\"}],\\\"expires_field\\\":\\\"expires_in\\\",\\\"fallback_ttl_seconds\\\":0,\\\"send_as\\\":\\\"basic\\\",\\\"token_field\\\":\\\"access_token\\\",\\\"token_url\\\":\\\"https://developer.api.example.com/authentication/v1/token\\\"},\\\"provider_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/llm-provider-key/delete":{"post":{"description":"Delete LLM Provider's ApiKeys batch","operationId":"deleteLlmProviderApiKeysBatch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchDelete"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Delete LLM Provider's ApiKeys","tags":["LlmProviderKey"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/llm-provider-key/delete\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/llm-provider-key/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/llm-provider-key/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/llm-provider-key/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/llm-provider-key/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/llm-provider-key/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/llm-provider-key/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/llm-provider-key/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/llm-provider-key/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/llm-provider-key/{id}":{"get":{"description":"Get LLM Provider's ApiKey by id","operationId":"getLlmProviderApiKeyById","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderApiKey_Public"}}},"description":"LLMProviderApiKey resource"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Not found"}},"summary":"Get LLM Provider's ApiKey by id","tags":["LlmProviderKey"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/llm-provider-key/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/llm-provider-key/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/llm-provider-key/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/llm-provider-key/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/llm-provider-key/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/llm-provider-key/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/llm-provider-key/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/llm-provider-key/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/llm-provider-key/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"patch":{"description":"Update LLM Provider's ApiKey. api_key and auth_config are mutually exclusive: setting a valid auth_config on a provider that holds a static api_key clears the stored key; send auth_config as an empty object to clear the recipe and switch back to a static key","operationId":"updateLlmProviderApiKey","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderApiKeyUpdate"}}}},"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Access forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"}},"summary":"Update LLM Provider's ApiKey","tags":["LlmProviderKey"],"x-codeSamples":[{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/llm-provider-key/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"api_key\":[REDACTED]'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"api_key\":[REDACTED]`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/llm-provider-key/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/llm-provider-key/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"api_key\\\":[REDACTED]\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/llm-provider-key/00000000-0000-0000-0000-000000000000', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"api_key\\\":[REDACTED]\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/llm-provider-key/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"api_key\\\":[REDACTED]\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"}]}},"/v1/private/llm/models":{"get":{"description":"Get the list of supported LLM models grouped by provider","operationId":"getLlmModels","responses":{"200":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"LLM models by provider"}},"summary":"Get LLM models","tags":["LLM Models"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/llm/models\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/llm/models'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/llm/models\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/llm/models\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/llm/models', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/llm/models', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/llm/models\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/llm/models\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/llm/models\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/local-runners":{"get":{"description":"List local runners owned by the current user in the workspace","operationId":"listRunners","parameters":[{"in":"query","name":"project_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"status","schema":{"enum":["pairing","connected","disconnected"],"type":"string"}},{"in":"query","name":"page","schema":{"default":0,"format":"int32","minimum":0,"type":"integer"}},{"in":"query","name":"size","schema":{"default":25,"format":"int32","minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocalRunnerPage"}}},"description":"Runners list"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"}},"summary":"List local runners","tags":["Runners"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/local-runners?page=0&project_id=00000000-0000-0000-0000-000000000000&size=25&status=connected\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/local-runners?page=0&project_id=00000000-0000-0000-0000-000000000000&size=25&status=connected'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/local-runners?page=0&project_id=00000000-0000-0000-0000-000000000000&size=25&status=connected\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/local-runners?page=0&project_id=00000000-0000-0000-0000-000000000000&size=25&status=connected\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners?page=0&project_id=00000000-0000-0000-0000-000000000000&size=25&status=connected', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners?page=0&project_id=00000000-0000-0000-0000-000000000000&size=25&status=connected', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/local-runners?page=0&project_id=00000000-0000-0000-0000-000000000000&size=25&status=connected\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/local-runners?page=0&project_id=00000000-0000-0000-0000-000000000000&size=25&status=connected\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/local-runners?page=0&project_id=00000000-0000-0000-0000-000000000000&size=25&status=connected\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/local-runners/jobs":{"post":{"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","schema":{"type":"string"},"style":"simple"}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Conflict"}},"summary":"Create local runner job","tags":["Runners"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/local-runners/jobs\");\nrequest.Content = new StringContent(\"{\\\"agent_name\\\":\\\"string\\\",\\\"blueprint_name\\\":\\\"string\\\",\\\"inputs\\\":{},\\\"mask_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_item_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_item_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"},\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"prompt_masks\\\":{\\\"additionalProp1\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/local-runners/jobs' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"agent_name\":\"string\",\"blueprint_name\":\"string\",\"inputs\":{},\"mask_id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_item_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_item_version_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_version_id\":\"00000000-0000-0000-0000-000000000000\"},\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"prompt_masks\":{\"additionalProp1\":\"00000000-0000-0000-0000-000000000000\"}}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"agent_name\":\"string\",\"blueprint_name\":\"string\",\"inputs\":{},\"mask_id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_item_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_item_version_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_version_id\":\"00000000-0000-0000-0000-000000000000\"},\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"prompt_masks\":{\"additionalProp1\":\"00000000-0000-0000-0000-000000000000\"}}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/local-runners/jobs\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/local-runners/jobs\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"agent_name\\\":\\\"string\\\",\\\"blueprint_name\\\":\\\"string\\\",\\\"inputs\\\":{},\\\"mask_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_item_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_item_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"},\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"prompt_masks\\\":{\\\"additionalProp1\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/jobs', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"agent_name\":\"string\",\"blueprint_name\":\"string\",\"inputs\":{},\"mask_id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_item_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_item_version_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_version_id\":\"00000000-0000-0000-0000-000000000000\"},\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"prompt_masks\":{\"additionalProp1\":\"00000000-0000-0000-0000-000000000000\"}}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/jobs', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"agent_name\\\":\\\"string\\\",\\\"blueprint_name\\\":\\\"string\\\",\\\"inputs\\\":{},\\\"mask_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_item_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_item_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"},\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"prompt_masks\\\":{\\\"additionalProp1\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/local-runners/jobs\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"agent_name\\\":\\\"string\\\",\\\"blueprint_name\\\":\\\"string\\\",\\\"inputs\\\":{},\\\"mask_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_item_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_item_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"},\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"prompt_masks\\\":{\\\"additionalProp1\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/local-runners/jobs\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"agent_name\":\"string\",\"blueprint_name\":\"string\",\"inputs\":{},\"mask_id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{\"dataset_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_item_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_item_version_id\":\"00000000-0000-0000-0000-000000000000\",\"dataset_version_id\":\"00000000-0000-0000-0000-000000000000\"},\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"prompt_masks\":{\"additionalProp1\":\"00000000-0000-0000-0000-000000000000\"}}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/local-runners/jobs\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"agent_name\\\":\\\"string\\\",\\\"blueprint_name\\\":\\\"string\\\",\\\"inputs\\\":{},\\\"mask_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{\\\"dataset_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_item_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_item_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"dataset_version_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"},\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"prompt_masks\\\":{\\\"additionalProp1\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/local-runners/jobs/{jobId}":{"get":{"description":"Get a single local runner job's status and results","operationId":"getJob","parameters":[{"in":"path","name":"jobId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocalRunnerJob"}}},"description":"Job details"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"}},"summary":"Get local runner job","tags":["Runners"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/local-runners/jobs/{jobId}/cancel":{"post":{"description":"Cancel a pending or running local runner job","operationId":"cancelJob","parameters":[{"in":"path","name":"jobId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"204":{"description":"No content"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"}},"summary":"Cancel local runner job","tags":["Runners"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/cancel\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/cancel'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/cancel\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/cancel\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/cancel', { method: 'POST' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/cancel', { method: 'POST' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/cancel\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"POST\", \"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/cancel\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/cancel\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/local-runners/jobs/{jobId}/logs":{"get":{"description":"Get log entries for a local runner job","operationId":"getJobLogs","parameters":[{"in":"path","name":"jobId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"offset","schema":{"default":0,"format":"int32","minimum":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/LocalRunnerLogEntry"},"type":"array"}}},"description":"Log entries"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"}},"summary":"Get local runner job logs","tags":["Runners"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/logs?offset=0\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/logs?offset=0'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/logs?offset=0\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/logs?offset=0\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/logs?offset=0', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/logs?offset=0', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/logs?offset=0\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/logs?offset=0\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/logs?offset=0\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Append log entries for a running local runner job","operationId":"appendJobLogs","parameters":[{"in":"path","name":"jobId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/LocalRunnerLogEntry"},"type":"array"}}}},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"}},"summary":"Append local runner job logs","tags":["Runners"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/logs\");\nrequest.Content = new StringContent(\"[{\\\"stream\\\":\\\"string\\\",\\\"text\\\":\\\"string\\\"}]\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/logs' \\\n  -H 'Content-Type: application/json' \\\n  -d '[{\"stream\":\"string\",\"text\":\"string\"}]'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`[{\"stream\":\"string\",\"text\":\"string\"}]`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/logs\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/logs\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"[{\\\"stream\\\":\\\"string\\\",\\\"text\\\":\\\"string\\\"}]\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/logs', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify([{\"stream\":\"string\",\"text\":\"string\"}]),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/logs', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"[{\\\"stream\\\":\\\"string\\\",\\\"text\\\":\\\"string\\\"}]\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/logs\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"[{\\\"stream\\\":\\\"string\\\",\\\"text\\\":\\\"string\\\"}]\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/logs\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='[{\"stream\":\"string\",\"text\":\"string\"}]',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/logs\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"[{\\\"stream\\\":\\\"string\\\",\\\"text\\\":\\\"string\\\"}]\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/local-runners/jobs/{jobId}/results":{"post":{"description":"Report local runner job completion or failure","operationId":"reportJobResult","parameters":[{"in":"path","name":"jobId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocalRunnerJobResultRequest"}}}},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"}},"summary":"Report local runner job result","tags":["Runners"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/results\");\nrequest.Content = new StringContent(\"{\\\"error\\\":\\\"string\\\",\\\"result\\\":{},\\\"status\\\":\\\"cancelled\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/results' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"error\":\"string\",\"result\":{},\"status\":\"cancelled\",\"trace_id\":\"00000000-0000-0000-0000-000000000000\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"error\":\"string\",\"result\":{},\"status\":\"cancelled\",\"trace_id\":\"00000000-0000-0000-0000-000000000000\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/results\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/results\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"error\\\":\\\"string\\\",\\\"result\\\":{},\\\"status\\\":\\\"cancelled\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/results', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"error\":\"string\",\"result\":{},\"status\":\"cancelled\",\"trace_id\":\"00000000-0000-0000-0000-000000000000\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/results', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"error\\\":\\\"string\\\",\\\"result\\\":{},\\\"status\\\":\\\"cancelled\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/results\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"error\\\":\\\"string\\\",\\\"result\\\":{},\\\"status\\\":\\\"cancelled\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/results\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"error\":\"string\",\"result\":{},\"status\":\"cancelled\",\"trace_id\":\"00000000-0000-0000-0000-000000000000\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/local-runners/jobs/00000000-0000-0000-0000-000000000000/results\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"error\\\":\\\"string\\\",\\\"result\\\":{},\\\"status\\\":\\\"cancelled\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/local-runners/{runnerId}":{"delete":{"description":"Disconnect a local runner, terminating its connection and failing any pending jobs","operationId":"disconnectRunner","parameters":[{"in":"path","name":"runnerId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"204":{"description":"No content"}},"summary":"Disconnect local runner","tags":["Runners"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Delete, \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X DELETE 'http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"DELETE\", \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"DELETE\", \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"DELETE\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"get":{"description":"Get a single local runner with its registered agents","operationId":"getRunner","parameters":[{"in":"path","name":"runnerId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocalRunner"}}},"description":"Runner details"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"}},"summary":"Get local runner","tags":["Runners"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/local-runners/{runnerId}/agents":{"put":{"description":"Register or update the local runner's agent list","operationId":"registerAgents","parameters":[{"in":"path","name":"runnerId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Map of agent name to agent definition"},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"}},"summary":"Register local runner agents","tags":["Runners"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/agents\");\nrequest.Content = new StringContent(\"{}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/agents' \\\n  -H 'Content-Type: application/json' \\\n  -d '{}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/agents\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/agents\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/agents', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/agents', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/agents\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/agents\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/agents\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/local-runners/{runnerId}/bridge/commands":{"post":{"description":"Submit a bridge command for execution by the local daemon","operationId":"createBridgeCommand","parameters":[{"in":"path","name":"runnerId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BridgeCommandSubmitRequest"}}}},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BridgeCommandSubmitResponse"}}},"description":"Command submitted","headers":{"Location":{"description":"URI of the command","schema":{"type":"string"},"style":"simple"}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Runner not found or not connected"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Runner does not support bridge"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Too many requests"}},"summary":"Submit bridge command","tags":["Runners"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands\");\nrequest.Content = new StringContent(\"{\\\"args\\\":{},\\\"timeout_seconds\\\":0,\\\"type\\\":\\\"EditFile\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"args\":{},\"timeout_seconds\":0,\"type\":\"EditFile\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"args\":{},\"timeout_seconds\":0,\"type\":\"EditFile\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"args\\\":{},\\\"timeout_seconds\\\":0,\\\"type\\\":\\\"EditFile\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"args\":{},\"timeout_seconds\":0,\"type\":\"EditFile\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"args\\\":{},\\\"timeout_seconds\\\":0,\\\"type\\\":\\\"EditFile\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"args\\\":{},\\\"timeout_seconds\\\":0,\\\"type\\\":\\\"EditFile\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"args\":{},\"timeout_seconds\":0,\"type\":\"EditFile\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"args\\\":{},\\\"timeout_seconds\\\":0,\\\"type\\\":\\\"EditFile\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/local-runners/{runnerId}/bridge/commands/next":{"post":{"description":"Long-poll for pending bridge commands (batch)","operationId":"nextBridgeCommands","parameters":[{"in":"path","name":"runnerId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BridgeCommandNextRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BridgeCommandBatchResponse"}}},"description":"Commands batch"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"}},"summary":"Poll next bridge commands","tags":["Runners"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/next\");\nrequest.Content = new StringContent(\"{\\\"max_commands\\\":0}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/next' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"max_commands\":0}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"max_commands\":0}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/next\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/next\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"max_commands\\\":0}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/next', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"max_commands\":0}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/next', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"max_commands\\\":0}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/next\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"max_commands\\\":0}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/next\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"max_commands\":0}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/next\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"max_commands\\\":0}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/local-runners/{runnerId}/bridge/commands/{commandId}":{"get":{"description":"Get bridge command status, optionally long-polling for completion","operationId":"getBridgeCommand","parameters":[{"in":"path","name":"runnerId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"path","name":"commandId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"wait","schema":{"default":false,"type":"boolean"}},{"in":"query","name":"timeout","schema":{"default":30,"format":"int32","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BridgeCommand"}}},"description":"Command state"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Command not found"}},"summary":"Get bridge command","tags":["Runners"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/00000000-0000-0000-0000-000000000000?timeout=30&wait=false\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/00000000-0000-0000-0000-000000000000?timeout=30&wait=false'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/00000000-0000-0000-0000-000000000000?timeout=30&wait=false\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/00000000-0000-0000-0000-000000000000?timeout=30&wait=false\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/00000000-0000-0000-0000-000000000000?timeout=30&wait=false', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/00000000-0000-0000-0000-000000000000?timeout=30&wait=false', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/00000000-0000-0000-0000-000000000000?timeout=30&wait=false\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/00000000-0000-0000-0000-000000000000?timeout=30&wait=false\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/00000000-0000-0000-0000-000000000000?timeout=30&wait=false\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/local-runners/{runnerId}/bridge/commands/{commandId}/results":{"post":{"description":"Report bridge command completion or failure","operationId":"reportBridgeResult","parameters":[{"in":"path","name":"runnerId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"path","name":"commandId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BridgeCommandResultRequest"}}}},"responses":{"204":{"description":"Result accepted"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Command not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Already completed"}},"summary":"Report bridge command result","tags":["Runners"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/00000000-0000-0000-0000-000000000000/results\");\nrequest.Content = new StringContent(\"{\\\"duration_ms\\\":0,\\\"error\\\":{},\\\"result\\\":{},\\\"status\\\":\\\"completed\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/00000000-0000-0000-0000-000000000000/results' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"duration_ms\":0,\"error\":{},\"result\":{},\"status\":\"completed\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"duration_ms\":0,\"error\":{},\"result\":{},\"status\":\"completed\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/00000000-0000-0000-0000-000000000000/results\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/00000000-0000-0000-0000-000000000000/results\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"duration_ms\\\":0,\\\"error\\\":{},\\\"result\\\":{},\\\"status\\\":\\\"completed\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/00000000-0000-0000-0000-000000000000/results', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"duration_ms\":0,\"error\":{},\"result\":{},\"status\":\"completed\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/00000000-0000-0000-0000-000000000000/results', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"duration_ms\\\":0,\\\"error\\\":{},\\\"result\\\":{},\\\"status\\\":\\\"completed\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/00000000-0000-0000-0000-000000000000/results\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"duration_ms\\\":0,\\\"error\\\":{},\\\"result\\\":{},\\\"status\\\":\\\"completed\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/00000000-0000-0000-0000-000000000000/results\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"duration_ms\":0,\"error\":{},\"result\":{},\"status\":\"completed\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/bridge/commands/00000000-0000-0000-0000-000000000000/results\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"duration_ms\\\":0,\\\"error\\\":{},\\\"result\\\":{},\\\"status\\\":\\\"completed\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/local-runners/{runnerId}/checklist":{"patch":{"description":"Partial update of the runner's checklist (deep merge)","operationId":"patchChecklist","parameters":[{"in":"path","name":"runnerId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"204":{"description":"No content"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"}},"summary":"Patch runner checklist","tags":["Runners"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/checklist\");\nrequest.Content = new StringContent(\"{}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/checklist' \\\n  -H 'Content-Type: application/json' \\\n  -d '{}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/checklist\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/checklist\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/checklist', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/checklist', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/checklist\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/checklist\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/checklist\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/local-runners/{runnerId}/heartbeats":{"post":{"description":"Refresh local runner heartbeat","operationId":"heartbeat","parameters":[{"in":"path","name":"runnerId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocalRunnerHeartbeatRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocalRunnerHeartbeatResponse"}}},"description":"Heartbeat response"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Gone"}},"summary":"Local runner heartbeat","tags":["Runners"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/heartbeats\");\nrequest.Content = new StringContent(\"{\\\"capabilities\\\":[\\\"string\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/heartbeats' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"capabilities\":[\"string\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"capabilities\":[\"string\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/heartbeats\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/heartbeats\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"capabilities\\\":[\\\"string\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/heartbeats', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"capabilities\":[\"string\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/heartbeats', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"capabilities\\\":[\\\"string\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/heartbeats\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"capabilities\\\":[\\\"string\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/heartbeats\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"capabilities\":[\"string\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/heartbeats\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"capabilities\\\":[\\\"string\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/local-runners/{runnerId}/jobs":{"get":{"description":"List jobs for a local runner","operationId":"listJobs","parameters":[{"in":"path","name":"runnerId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"page","schema":{"default":0,"format":"int32","minimum":0,"type":"integer"}},{"in":"query","name":"size","schema":{"default":25,"format":"int32","minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocalRunnerJobPage"}}},"description":"Jobs list"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"}},"summary":"List local runner jobs","tags":["Runners"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/jobs?page=0&project_id=00000000-0000-0000-0000-000000000000&size=25\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/jobs?page=0&project_id=00000000-0000-0000-0000-000000000000&size=25'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/jobs?page=0&project_id=00000000-0000-0000-0000-000000000000&size=25\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/jobs?page=0&project_id=00000000-0000-0000-0000-000000000000&size=25\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/jobs?page=0&project_id=00000000-0000-0000-0000-000000000000&size=25', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/jobs?page=0&project_id=00000000-0000-0000-0000-000000000000&size=25', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/jobs?page=0&project_id=00000000-0000-0000-0000-000000000000&size=25\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/jobs?page=0&project_id=00000000-0000-0000-0000-000000000000&size=25\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/jobs?page=0&project_id=00000000-0000-0000-0000-000000000000&size=25\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/local-runners/{runnerId}/jobs/next":{"post":{"description":"Long-poll for the next pending local runner job","operationId":"nextJob","parameters":[{"in":"path","name":"runnerId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"anyOf":[{"allOf":[{"$ref":"#/components/schemas/LocalRunnerJob"}]},{"type":"null"}]}}},"description":"Job available, or null if no pending jobs"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"}},"summary":"Next local runner job","tags":["Runners"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/jobs/next\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/jobs/next'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/jobs/next\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/jobs/next\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/jobs/next', { method: 'POST' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/jobs/next', { method: 'POST' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/jobs/next\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"POST\", \"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/jobs/next\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/local-runners/00000000-0000-0000-0000-000000000000/jobs/next\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/manual-evaluation/spans":{"post":{"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":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManualEvaluationResponse"}}},"description":"Accepted - Evaluation request queued successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request - Invalid request or missing automation rules"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not Found - Project not found"}},"summary":"Manually evaluate spans","tags":["Manual Evaluation"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/manual-evaluation/spans\");\nrequest.Content = new StringContent(\"{\\\"entity_ids\\\":[\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"550e8400-e29b-41d4-a716-446655440001\\\"],\\\"entity_type\\\":\\\"trace\\\",\\\"project_id\\\":\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"rule_ids\\\":[\\\"660e8400-e29b-41d4-a716-446655440000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/manual-evaluation/spans' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"entity_ids\":[\"550e8400-e29b-41d4-a716-446655440000\",\"550e8400-e29b-41d4-a716-446655440001\"],\"entity_type\":\"trace\",\"project_id\":\"550e8400-e29b-41d4-a716-446655440000\",\"rule_ids\":[\"660e8400-e29b-41d4-a716-446655440000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"entity_ids\":[\"550e8400-e29b-41d4-a716-446655440000\",\"550e8400-e29b-41d4-a716-446655440001\"],\"entity_type\":\"trace\",\"project_id\":\"550e8400-e29b-41d4-a716-446655440000\",\"rule_ids\":[\"660e8400-e29b-41d4-a716-446655440000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/manual-evaluation/spans\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/manual-evaluation/spans\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"entity_ids\\\":[\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"550e8400-e29b-41d4-a716-446655440001\\\"],\\\"entity_type\\\":\\\"trace\\\",\\\"project_id\\\":\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"rule_ids\\\":[\\\"660e8400-e29b-41d4-a716-446655440000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/manual-evaluation/spans', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"entity_ids\":[\"550e8400-e29b-41d4-a716-446655440000\",\"550e8400-e29b-41d4-a716-446655440001\"],\"entity_type\":\"trace\",\"project_id\":\"550e8400-e29b-41d4-a716-446655440000\",\"rule_ids\":[\"660e8400-e29b-41d4-a716-446655440000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/manual-evaluation/spans', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"entity_ids\\\":[\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"550e8400-e29b-41d4-a716-446655440001\\\"],\\\"entity_type\\\":\\\"trace\\\",\\\"project_id\\\":\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"rule_ids\\\":[\\\"660e8400-e29b-41d4-a716-446655440000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/manual-evaluation/spans\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"entity_ids\\\":[\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"550e8400-e29b-41d4-a716-446655440001\\\"],\\\"entity_type\\\":\\\"trace\\\",\\\"project_id\\\":\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"rule_ids\\\":[\\\"660e8400-e29b-41d4-a716-446655440000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/manual-evaluation/spans\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"entity_ids\":[\"550e8400-e29b-41d4-a716-446655440000\",\"550e8400-e29b-41d4-a716-446655440001\"],\"entity_type\":\"trace\",\"project_id\":\"550e8400-e29b-41d4-a716-446655440000\",\"rule_ids\":[\"660e8400-e29b-41d4-a716-446655440000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/manual-evaluation/spans\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"entity_ids\\\":[\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"550e8400-e29b-41d4-a716-446655440001\\\"],\\\"entity_type\\\":\\\"trace\\\",\\\"project_id\\\":\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"rule_ids\\\":[\\\"660e8400-e29b-41d4-a716-446655440000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/manual-evaluation/threads":{"post":{"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":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManualEvaluationResponse"}}},"description":"Accepted - Evaluation request queued successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request - Invalid request or missing automation rules"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not Found - Project not found"}},"summary":"Manually evaluate threads","tags":["Manual Evaluation"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/manual-evaluation/threads\");\nrequest.Content = new StringContent(\"{\\\"entity_ids\\\":[\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"550e8400-e29b-41d4-a716-446655440001\\\"],\\\"entity_type\\\":\\\"trace\\\",\\\"project_id\\\":\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"rule_ids\\\":[\\\"660e8400-e29b-41d4-a716-446655440000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/manual-evaluation/threads' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"entity_ids\":[\"550e8400-e29b-41d4-a716-446655440000\",\"550e8400-e29b-41d4-a716-446655440001\"],\"entity_type\":\"trace\",\"project_id\":\"550e8400-e29b-41d4-a716-446655440000\",\"rule_ids\":[\"660e8400-e29b-41d4-a716-446655440000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"entity_ids\":[\"550e8400-e29b-41d4-a716-446655440000\",\"550e8400-e29b-41d4-a716-446655440001\"],\"entity_type\":\"trace\",\"project_id\":\"550e8400-e29b-41d4-a716-446655440000\",\"rule_ids\":[\"660e8400-e29b-41d4-a716-446655440000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/manual-evaluation/threads\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/manual-evaluation/threads\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"entity_ids\\\":[\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"550e8400-e29b-41d4-a716-446655440001\\\"],\\\"entity_type\\\":\\\"trace\\\",\\\"project_id\\\":\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"rule_ids\\\":[\\\"660e8400-e29b-41d4-a716-446655440000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/manual-evaluation/threads', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"entity_ids\":[\"550e8400-e29b-41d4-a716-446655440000\",\"550e8400-e29b-41d4-a716-446655440001\"],\"entity_type\":\"trace\",\"project_id\":\"550e8400-e29b-41d4-a716-446655440000\",\"rule_ids\":[\"660e8400-e29b-41d4-a716-446655440000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/manual-evaluation/threads', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"entity_ids\\\":[\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"550e8400-e29b-41d4-a716-446655440001\\\"],\\\"entity_type\\\":\\\"trace\\\",\\\"project_id\\\":\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"rule_ids\\\":[\\\"660e8400-e29b-41d4-a716-446655440000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/manual-evaluation/threads\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"entity_ids\\\":[\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"550e8400-e29b-41d4-a716-446655440001\\\"],\\\"entity_type\\\":\\\"trace\\\",\\\"project_id\\\":\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"rule_ids\\\":[\\\"660e8400-e29b-41d4-a716-446655440000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/manual-evaluation/threads\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"entity_ids\":[\"550e8400-e29b-41d4-a716-446655440000\",\"550e8400-e29b-41d4-a716-446655440001\"],\"entity_type\":\"trace\",\"project_id\":\"550e8400-e29b-41d4-a716-446655440000\",\"rule_ids\":[\"660e8400-e29b-41d4-a716-446655440000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/manual-evaluation/threads\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"entity_ids\\\":[\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"550e8400-e29b-41d4-a716-446655440001\\\"],\\\"entity_type\\\":\\\"trace\\\",\\\"project_id\\\":\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"rule_ids\\\":[\\\"660e8400-e29b-41d4-a716-446655440000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/manual-evaluation/traces":{"post":{"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":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManualEvaluationResponse"}}},"description":"Accepted - Evaluation request queued successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request - Invalid request or missing automation rules"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not Found - Project not found"}},"summary":"Manually evaluate traces","tags":["Manual Evaluation"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/manual-evaluation/traces\");\nrequest.Content = new StringContent(\"{\\\"entity_ids\\\":[\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"550e8400-e29b-41d4-a716-446655440001\\\"],\\\"entity_type\\\":\\\"trace\\\",\\\"project_id\\\":\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"rule_ids\\\":[\\\"660e8400-e29b-41d4-a716-446655440000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/manual-evaluation/traces' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"entity_ids\":[\"550e8400-e29b-41d4-a716-446655440000\",\"550e8400-e29b-41d4-a716-446655440001\"],\"entity_type\":\"trace\",\"project_id\":\"550e8400-e29b-41d4-a716-446655440000\",\"rule_ids\":[\"660e8400-e29b-41d4-a716-446655440000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"entity_ids\":[\"550e8400-e29b-41d4-a716-446655440000\",\"550e8400-e29b-41d4-a716-446655440001\"],\"entity_type\":\"trace\",\"project_id\":\"550e8400-e29b-41d4-a716-446655440000\",\"rule_ids\":[\"660e8400-e29b-41d4-a716-446655440000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/manual-evaluation/traces\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/manual-evaluation/traces\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"entity_ids\\\":[\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"550e8400-e29b-41d4-a716-446655440001\\\"],\\\"entity_type\\\":\\\"trace\\\",\\\"project_id\\\":\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"rule_ids\\\":[\\\"660e8400-e29b-41d4-a716-446655440000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/manual-evaluation/traces', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"entity_ids\":[\"550e8400-e29b-41d4-a716-446655440000\",\"550e8400-e29b-41d4-a716-446655440001\"],\"entity_type\":\"trace\",\"project_id\":\"550e8400-e29b-41d4-a716-446655440000\",\"rule_ids\":[\"660e8400-e29b-41d4-a716-446655440000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/manual-evaluation/traces', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"entity_ids\\\":[\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"550e8400-e29b-41d4-a716-446655440001\\\"],\\\"entity_type\\\":\\\"trace\\\",\\\"project_id\\\":\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"rule_ids\\\":[\\\"660e8400-e29b-41d4-a716-446655440000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/manual-evaluation/traces\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"entity_ids\\\":[\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"550e8400-e29b-41d4-a716-446655440001\\\"],\\\"entity_type\\\":\\\"trace\\\",\\\"project_id\\\":\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"rule_ids\\\":[\\\"660e8400-e29b-41d4-a716-446655440000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/manual-evaluation/traces\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"entity_ids\":[\"550e8400-e29b-41d4-a716-446655440000\",\"550e8400-e29b-41d4-a716-446655440001\"],\"entity_type\":\"trace\",\"project_id\":\"550e8400-e29b-41d4-a716-446655440000\",\"rule_ids\":[\"660e8400-e29b-41d4-a716-446655440000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/manual-evaluation/traces\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"entity_ids\\\":[\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"550e8400-e29b-41d4-a716-446655440001\\\"],\\\"entity_type\\\":\\\"trace\\\",\\\"project_id\\\":\\\"550e8400-e29b-41d4-a716-446655440000\\\",\\\"rule_ids\\\":[\\\"660e8400-e29b-41d4-a716-446655440000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/ollama/models":{"post":{"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":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/OllamaModel"},"type":"array"}}},"description":"Models retrieved successfully"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unprocessable Content - Invalid URL format"},"500":{"description":"Failed to fetch models"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Ollama provider is disabled"}},"summary":"List available Ollama models","tags":["Ollama"],"x-codeSamples":[{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/ollama/models' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"api_key\":[REDACTED]'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"api_key\":[REDACTED]`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/ollama/models\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/ollama/models\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"api_key\\\":[REDACTED]\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/ollama/models', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"api_key\":\"[REDACTED]\",\"base_url\":\"http://localhost:11434/v1\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/ollama/models', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"api_key\\\":[REDACTED]\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/ollama/models\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"api_key\\\":[REDACTED]\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"}]}},"/v1/private/ollama/test-connection":{"post":{"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":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OllamaConnectionTestResponse"}}},"description":"Connection test successful"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unprocessable Content - Invalid URL format"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OllamaConnectionTestResponse"}}},"description":"Connection test failed - Ollama instance unreachable"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Ollama provider is disabled"}},"summary":"Test connection to Ollama instance","tags":["Ollama"],"x-codeSamples":[{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/ollama/test-connection' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"api_key\":[REDACTED]'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"api_key\":[REDACTED]`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/ollama/test-connection\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/ollama/test-connection\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"api_key\\\":[REDACTED]\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/ollama/test-connection', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"api_key\":\"[REDACTED]\",\"base_url\":\"http://localhost:11434/v1\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/ollama/test-connection', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"api_key\\\":[REDACTED]\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/ollama/test-connection\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"api_key\\\":[REDACTED]\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"}]}},"/v1/private/ollie/state":{"delete":{"description":"Clear stored ollie state","operationId":"deleteOllieState","responses":{"204":{"description":"No content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unauthorized"}},"summary":"Delete ollie state","tags":["Ollie State"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Delete, \"http://localhost:5173/api/v1/private/ollie/state\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X DELETE 'http://localhost:5173/api/v1/private/ollie/state'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"DELETE\", \"http://localhost:5173/api/v1/private/ollie/state\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/ollie/state\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/ollie/state', { method: 'DELETE' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/ollie/state', { method: 'DELETE' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/ollie/state\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"DELETE\", \"http://localhost:5173/api/v1/private/ollie/state\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/ollie/state\")\nrequest = Net::HTTPGenericRequest.new(\"DELETE\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"get":{"description":"Download stored ollie state file","operationId":"downloadOllieState","responses":{"200":{"content":{"application/gzip":{"schema":{"format":"binary","type":"string"}}},"description":"Ollie state file"},"401":{"content":{"application/gzip":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unauthorized"},"404":{"content":{"application/gzip":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"}},"summary":"Download ollie state","tags":["Ollie State"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/ollie/state\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/ollie/state'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/ollie/state\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/ollie/state\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/ollie/state', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/ollie/state', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/ollie/state\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/ollie/state\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/ollie/state\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"put":{"description":"Upload gzip-compressed SQLite DB file, replacing any existing state","operationId":"replaceOllieState","parameters":[{"in":"header","name":"Content-Length","schema":{"format":"int64","type":"integer"}}],"requestBody":{"content":{"application/gzip":{"schema":{"type":"object"}}}},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unauthorized"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Rate limit exceeded"}},"summary":"Replace ollie state","tags":["Ollie State"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/ollie/state\");\nrequest.Content = new StringContent(\"{}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/ollie/state' \\\n  -H 'Content-Type: application/json' \\\n  -d '{}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/ollie/state\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/ollie/state\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/ollie/state', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/ollie/state', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/ollie/state\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/ollie/state\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/ollie/state\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/optimizations":{"get":{"description":"Find optimizations","operationId":"findOptimizations","parameters":[{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"dataset_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"name","schema":{"description":"Filter optimizations by name (partial match, case insensitive)","type":"string"}},{"in":"query","name":"dataset_name","schema":{"description":"Filter optimizations by dataset name (partial match)","type":"string"}},{"in":"query","name":"dataset_deleted","schema":{"type":"boolean"}},{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OptimizationPage_Public"}}},"description":"Optimizations resource"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Bad Request"}},"summary":"Find optimizations","tags":["Optimizations"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/optimizations?dataset_deleted=true&dataset_id=00000000-0000-0000-0000-000000000000&dataset_name=string&filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/optimizations?dataset_deleted=true&dataset_id=00000000-0000-0000-0000-000000000000&dataset_name=string&filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/optimizations?dataset_deleted=true&dataset_id=00000000-0000-0000-0000-000000000000&dataset_name=string&filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/optimizations?dataset_deleted=true&dataset_id=00000000-0000-0000-0000-000000000000&dataset_name=string&filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/optimizations?dataset_deleted=true&dataset_id=00000000-0000-0000-0000-000000000000&dataset_name=string&filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/optimizations?dataset_deleted=true&dataset_id=00000000-0000-0000-0000-000000000000&dataset_name=string&filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/optimizations?dataset_deleted=true&dataset_id=00000000-0000-0000-0000-000000000000&dataset_name=string&filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/optimizations?dataset_deleted=true&dataset_id=00000000-0000-0000-0000-000000000000&dataset_name=string&filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/optimizations?dataset_deleted=true&dataset_id=00000000-0000-0000-0000-000000000000&dataset_name=string&filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Create optimization","operationId":"createOptimization","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Optimization_Write"}}}},"responses":{"201":{"description":"Created","headers":{"Location":{"example":"${basePath}/v1/private/optimizations/{id}","required":true,"schema":{"type":"string"},"style":"simple"}}}},"summary":"Create optimization","tags":["Optimizations"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/optimizations\");\nrequest.Content = new StringContent(\"{\\\"dataset_name\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"objective_name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\",\\\"studio_config\\\":{\\\"dataset_name\\\":\\\"string\\\",\\\"evaluation\\\":{\\\"metrics\\\":[{\\\"parameters\\\":{},\\\"type\\\":\\\"string\\\"}]},\\\"llm_model\\\":{\\\"model\\\":\\\"string\\\",\\\"parameters\\\":{}},\\\"optimizer\\\":{\\\"parameters\\\":{},\\\"type\\\":\\\"string\\\"},\\\"prompt\\\":{\\\"messages\\\":[{\\\"content\\\":\\\"string\\\",\\\"role\\\":\\\"string\\\"}]}}}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/optimizations' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"dataset_name\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"name\":\"string\",\"objective_name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"status\":\"cancelled\",\"studio_config\":{\"dataset_name\":\"string\",\"evaluation\":{\"metrics\":[{\"parameters\":{},\"type\":\"string\"}]},\"llm_model\":{\"model\":\"string\",\"parameters\":{}},\"optimizer\":{\"parameters\":{},\"type\":\"string\"},\"prompt\":{\"messages\":[{\"content\":\"string\",\"role\":\"string\"}]}}}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"dataset_name\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"name\":\"string\",\"objective_name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"status\":\"cancelled\",\"studio_config\":{\"dataset_name\":\"string\",\"evaluation\":{\"metrics\":[{\"parameters\":{},\"type\":\"string\"}]},\"llm_model\":{\"model\":\"string\",\"parameters\":{}},\"optimizer\":{\"parameters\":{},\"type\":\"string\"},\"prompt\":{\"messages\":[{\"content\":\"string\",\"role\":\"string\"}]}}}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/optimizations\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/optimizations\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"dataset_name\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"objective_name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\",\\\"studio_config\\\":{\\\"dataset_name\\\":\\\"string\\\",\\\"evaluation\\\":{\\\"metrics\\\":[{\\\"parameters\\\":{},\\\"type\\\":\\\"string\\\"}]},\\\"llm_model\\\":{\\\"model\\\":\\\"string\\\",\\\"parameters\\\":{}},\\\"optimizer\\\":{\\\"parameters\\\":{},\\\"type\\\":\\\"string\\\"},\\\"prompt\\\":{\\\"messages\\\":[{\\\"content\\\":\\\"string\\\",\\\"role\\\":\\\"string\\\"}]}}}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/optimizations', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"dataset_name\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"name\":\"string\",\"objective_name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"status\":\"cancelled\",\"studio_config\":{\"dataset_name\":\"string\",\"evaluation\":{\"metrics\":[{\"parameters\":{},\"type\":\"string\"}]},\"llm_model\":{\"model\":\"string\",\"parameters\":{}},\"optimizer\":{\"parameters\":{},\"type\":\"string\"},\"prompt\":{\"messages\":[{\"content\":\"string\",\"role\":\"string\"}]}}}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/optimizations', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"dataset_name\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"objective_name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\",\\\"studio_config\\\":{\\\"dataset_name\\\":\\\"string\\\",\\\"evaluation\\\":{\\\"metrics\\\":[{\\\"parameters\\\":{},\\\"type\\\":\\\"string\\\"}]},\\\"llm_model\\\":{\\\"model\\\":\\\"string\\\",\\\"parameters\\\":{}},\\\"optimizer\\\":{\\\"parameters\\\":{},\\\"type\\\":\\\"string\\\"},\\\"prompt\\\":{\\\"messages\\\":[{\\\"content\\\":\\\"string\\\",\\\"role\\\":\\\"string\\\"}]}}}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/optimizations\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"dataset_name\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"objective_name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\",\\\"studio_config\\\":{\\\"dataset_name\\\":\\\"string\\\",\\\"evaluation\\\":{\\\"metrics\\\":[{\\\"parameters\\\":{},\\\"type\\\":\\\"string\\\"}]},\\\"llm_model\\\":{\\\"model\\\":\\\"string\\\",\\\"parameters\\\":{}},\\\"optimizer\\\":{\\\"parameters\\\":{},\\\"type\\\":\\\"string\\\"},\\\"prompt\\\":{\\\"messages\\\":[{\\\"content\\\":\\\"string\\\",\\\"role\\\":\\\"string\\\"}]}}}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/optimizations\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"dataset_name\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"name\":\"string\",\"objective_name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"status\":\"cancelled\",\"studio_config\":{\"dataset_name\":\"string\",\"evaluation\":{\"metrics\":[{\"parameters\":{},\"type\":\"string\"}]},\"llm_model\":{\"model\":\"string\",\"parameters\":{}},\"optimizer\":{\"parameters\":{},\"type\":\"string\"},\"prompt\":{\"messages\":[{\"content\":\"string\",\"role\":\"string\"}]}}}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/optimizations\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"dataset_name\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"objective_name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\",\\\"studio_config\\\":{\\\"dataset_name\\\":\\\"string\\\",\\\"evaluation\\\":{\\\"metrics\\\":[{\\\"parameters\\\":{},\\\"type\\\":\\\"string\\\"}]},\\\"llm_model\\\":{\\\"model\\\":\\\"string\\\",\\\"parameters\\\":{}},\\\"optimizer\\\":{\\\"parameters\\\":{},\\\"type\\\":\\\"string\\\"},\\\"prompt\\\":{\\\"messages\\\":[{\\\"content\\\":\\\"string\\\",\\\"role\\\":\\\"string\\\"}]}}}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"put":{"description":"Upsert optimization","operationId":"upsertOptimization","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Optimization_Write"}}}},"responses":{"201":{"description":"Created","headers":{"Location":{"example":"${basePath}/v1/private/optimizations/{id}","required":true,"schema":{"type":"string"},"style":"simple"}}}},"summary":"Upsert optimization","tags":["Optimizations"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/optimizations\");\nrequest.Content = new StringContent(\"{\\\"dataset_name\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"objective_name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\",\\\"studio_config\\\":{\\\"dataset_name\\\":\\\"string\\\",\\\"evaluation\\\":{\\\"metrics\\\":[{\\\"parameters\\\":{},\\\"type\\\":\\\"string\\\"}]},\\\"llm_model\\\":{\\\"model\\\":\\\"string\\\",\\\"parameters\\\":{}},\\\"optimizer\\\":{\\\"parameters\\\":{},\\\"type\\\":\\\"string\\\"},\\\"prompt\\\":{\\\"messages\\\":[{\\\"content\\\":\\\"string\\\",\\\"role\\\":\\\"string\\\"}]}}}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/optimizations' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"dataset_name\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"name\":\"string\",\"objective_name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"status\":\"cancelled\",\"studio_config\":{\"dataset_name\":\"string\",\"evaluation\":{\"metrics\":[{\"parameters\":{},\"type\":\"string\"}]},\"llm_model\":{\"model\":\"string\",\"parameters\":{}},\"optimizer\":{\"parameters\":{},\"type\":\"string\"},\"prompt\":{\"messages\":[{\"content\":\"string\",\"role\":\"string\"}]}}}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"dataset_name\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"name\":\"string\",\"objective_name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"status\":\"cancelled\",\"studio_config\":{\"dataset_name\":\"string\",\"evaluation\":{\"metrics\":[{\"parameters\":{},\"type\":\"string\"}]},\"llm_model\":{\"model\":\"string\",\"parameters\":{}},\"optimizer\":{\"parameters\":{},\"type\":\"string\"},\"prompt\":{\"messages\":[{\"content\":\"string\",\"role\":\"string\"}]}}}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/optimizations\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/optimizations\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{\\\"dataset_name\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"objective_name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\",\\\"studio_config\\\":{\\\"dataset_name\\\":\\\"string\\\",\\\"evaluation\\\":{\\\"metrics\\\":[{\\\"parameters\\\":{},\\\"type\\\":\\\"string\\\"}]},\\\"llm_model\\\":{\\\"model\\\":\\\"string\\\",\\\"parameters\\\":{}},\\\"optimizer\\\":{\\\"parameters\\\":{},\\\"type\\\":\\\"string\\\"},\\\"prompt\\\":{\\\"messages\\\":[{\\\"content\\\":\\\"string\\\",\\\"role\\\":\\\"string\\\"}]}}}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/optimizations', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"dataset_name\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"name\":\"string\",\"objective_name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"status\":\"cancelled\",\"studio_config\":{\"dataset_name\":\"string\",\"evaluation\":{\"metrics\":[{\"parameters\":{},\"type\":\"string\"}]},\"llm_model\":{\"model\":\"string\",\"parameters\":{}},\"optimizer\":{\"parameters\":{},\"type\":\"string\"},\"prompt\":{\"messages\":[{\"content\":\"string\",\"role\":\"string\"}]}}}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/optimizations', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"dataset_name\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"objective_name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\",\\\"studio_config\\\":{\\\"dataset_name\\\":\\\"string\\\",\\\"evaluation\\\":{\\\"metrics\\\":[{\\\"parameters\\\":{},\\\"type\\\":\\\"string\\\"}]},\\\"llm_model\\\":{\\\"model\\\":\\\"string\\\",\\\"parameters\\\":{}},\\\"optimizer\\\":{\\\"parameters\\\":{},\\\"type\\\":\\\"string\\\"},\\\"prompt\\\":{\\\"messages\\\":[{\\\"content\\\":\\\"string\\\",\\\"role\\\":\\\"string\\\"}]}}}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/optimizations\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"dataset_name\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"objective_name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\",\\\"studio_config\\\":{\\\"dataset_name\\\":\\\"string\\\",\\\"evaluation\\\":{\\\"metrics\\\":[{\\\"parameters\\\":{},\\\"type\\\":\\\"string\\\"}]},\\\"llm_model\\\":{\\\"model\\\":\\\"string\\\",\\\"parameters\\\":{}},\\\"optimizer\\\":{\\\"parameters\\\":{},\\\"type\\\":\\\"string\\\"},\\\"prompt\\\":{\\\"messages\\\":[{\\\"content\\\":\\\"string\\\",\\\"role\\\":\\\"string\\\"}]}}}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/optimizations\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"dataset_name\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"name\":\"string\",\"objective_name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"status\":\"cancelled\",\"studio_config\":{\"dataset_name\":\"string\",\"evaluation\":{\"metrics\":[{\"parameters\":{},\"type\":\"string\"}]},\"llm_model\":{\"model\":\"string\",\"parameters\":{}},\"optimizer\":{\"parameters\":{},\"type\":\"string\"},\"prompt\":{\"messages\":[{\"content\":\"string\",\"role\":\"string\"}]}}}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/optimizations\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"dataset_name\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"objective_name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\",\\\"studio_config\\\":{\\\"dataset_name\\\":\\\"string\\\",\\\"evaluation\\\":{\\\"metrics\\\":[{\\\"parameters\\\":{},\\\"type\\\":\\\"string\\\"}]},\\\"llm_model\\\":{\\\"model\\\":\\\"string\\\",\\\"parameters\\\":{}},\\\"optimizer\\\":{\\\"parameters\\\":{},\\\"type\\\":\\\"string\\\"},\\\"prompt\\\":{\\\"messages\\\":[{\\\"content\\\":\\\"string\\\",\\\"role\\\":\\\"string\\\"}]}}}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/optimizations/delete":{"post":{"description":"Delete optimizations by id","operationId":"deleteOptimizationsById","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteIdsHolder"}}}},"responses":{"204":{"description":"No content"}},"summary":"Delete optimizations by id","tags":["Optimizations"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/optimizations/delete\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/optimizations/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/optimizations/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/optimizations/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/optimizations/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/optimizations/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/optimizations/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/optimizations/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/optimizations/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/optimizations/studio/{id}/logs":{"get":{"description":"Get presigned S3 URL for downloading optimization logs","operationId":"getStudioOptimizationLogs","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OptimizationStudioLog"}}},"description":"Logs response"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"}},"summary":"Get Studio optimization logs","tags":["Optimizations"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/optimizations/studio/00000000-0000-0000-0000-000000000000/logs\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/optimizations/studio/00000000-0000-0000-0000-000000000000/logs'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/optimizations/studio/00000000-0000-0000-0000-000000000000/logs\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/optimizations/studio/00000000-0000-0000-0000-000000000000/logs\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/optimizations/studio/00000000-0000-0000-0000-000000000000/logs', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/optimizations/studio/00000000-0000-0000-0000-000000000000/logs', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/optimizations/studio/00000000-0000-0000-0000-000000000000/logs\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/optimizations/studio/00000000-0000-0000-0000-000000000000/logs\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/optimizations/studio/00000000-0000-0000-0000-000000000000/logs\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/optimizations/{id}":{"get":{"description":"Get optimization by id","operationId":"getOptimizationById","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Optimization_Public"}}},"description":"Optimization resource"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Not found"}},"summary":"Get optimization by id","tags":["Optimizations"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/optimizations/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/optimizations/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/optimizations/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/optimizations/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/optimizations/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/optimizations/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/optimizations/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/optimizations/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/optimizations/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"put":{"description":"Update optimization by id","operationId":"updateOptimizationsById","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OptimizationUpdate"}}}},"responses":{"204":{"description":"No content"}},"summary":"Update optimization by id","tags":["Optimizations"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/optimizations/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/optimizations/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"metadata\":{},\"name\":\"string\",\"status\":\"cancelled\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"metadata\":{},\"name\":\"string\",\"status\":\"cancelled\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/optimizations/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/optimizations/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/optimizations/00000000-0000-0000-0000-000000000000', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"metadata\":{},\"name\":\"string\",\"status\":\"cancelled\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/optimizations/00000000-0000-0000-0000-000000000000', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/optimizations/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/optimizations/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"metadata\":{},\"name\":\"string\",\"status\":\"cancelled\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/optimizations/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"status\\\":\\\"cancelled\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/otel/v1/traces":{"post":{"operationId":"receiveProtobufTraces","requestBody":{"content":{"application/x-protobuf":{"schema":{"$ref":"#/components/schemas/JsonNode"}}},"required":true},"responses":{"default":{"content":{"*/*":{}},"description":"default response"}},"tags":["OpenTelemetry Ingestion"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/otel/v1/traces\");\nrequest.Content = new StringContent(\"{}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/otel/v1/traces' \\\n  -H 'Content-Type: application/json' \\\n  -d '{}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/otel/v1/traces\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/otel/v1/traces\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/otel/v1/traces', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/otel/v1/traces', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/otel/v1/traces\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/otel/v1/traces\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/otel/v1/traces\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/pairing/sessions":{"post":{"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":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSessionResponse"}}},"description":"Session created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Project not found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unprocessable entity"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Too many requests"}},"summary":"Create a pairing session","tags":["Pairing"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/pairing/sessions\");\nrequest.Content = new StringContent(\"{\\\"activation_key\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttl_seconds\\\":0,\\\"type\\\":\\\"connect\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/pairing/sessions' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"activation_key\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"ttl_seconds\":0,\"type\":\"connect\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"activation_key\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"ttl_seconds\":0,\"type\":\"connect\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/pairing/sessions\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/pairing/sessions\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"activation_key\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttl_seconds\\\":0,\\\"type\\\":\\\"connect\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/pairing/sessions', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"activation_key\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"ttl_seconds\":0,\"type\":\"connect\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/pairing/sessions', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"activation_key\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttl_seconds\\\":0,\\\"type\\\":\\\"connect\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/pairing/sessions\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"activation_key\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttl_seconds\\\":0,\\\"type\\\":\\\"connect\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/pairing/sessions\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"activation_key\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"ttl_seconds\":0,\"type\":\"connect\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/pairing/sessions\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"activation_key\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttl_seconds\\\":0,\\\"type\\\":\\\"connect\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/pairing/sessions/{sessionId}/activate":{"post":{"description":"Verify the activation HMAC and flip the runner row to CONNECTED","operationId":"activatePairingSession","parameters":[{"in":"path","name":"sessionId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivateRequest"}}}},"responses":{"201":{"description":"Session activated","headers":{"Location":{"description":"URI of the runner","schema":{"type":"string"},"style":"simple"}}},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Invalid HMAC"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Session not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Session already activated"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unprocessable entity"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Too many requests"}},"summary":"Activate a pairing session","tags":["Pairing"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/pairing/sessions/00000000-0000-0000-0000-000000000000/activate\");\nrequest.Content = new StringContent(\"{\\\"hmac\\\":\\\"string\\\",\\\"runner_name\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/pairing/sessions/00000000-0000-0000-0000-000000000000/activate' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"hmac\":\"string\",\"runner_name\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"hmac\":\"string\",\"runner_name\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/pairing/sessions/00000000-0000-0000-0000-000000000000/activate\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/pairing/sessions/00000000-0000-0000-0000-000000000000/activate\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"hmac\\\":\\\"string\\\",\\\"runner_name\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/pairing/sessions/00000000-0000-0000-0000-000000000000/activate', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"hmac\":\"string\",\"runner_name\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/pairing/sessions/00000000-0000-0000-0000-000000000000/activate', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"hmac\\\":\\\"string\\\",\\\"runner_name\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/pairing/sessions/00000000-0000-0000-0000-000000000000/activate\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"hmac\\\":\\\"string\\\",\\\"runner_name\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/pairing/sessions/00000000-0000-0000-0000-000000000000/activate\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"hmac\":\"string\",\"runner_name\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/pairing/sessions/00000000-0000-0000-0000-000000000000/activate\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"hmac\\\":\\\"string\\\",\\\"runner_name\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/projects":{"get":{"description":"Find projects","operationId":"findProjects","parameters":[{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"name","schema":{"description":"Filter projects by name (partial match, case insensitive)","type":"string"}},{"in":"query","name":"sorting","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPage_Public"}}},"description":"Project resource"}},"summary":"Find projects","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/projects?name=string&page=1&size=10&sorting=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/projects?name=string&page=1&size=10&sorting=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/projects?name=string&page=1&size=10&sorting=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects?name=string&page=1&size=10&sorting=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects?name=string&page=1&size=10&sorting=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects?name=string&page=1&size=10&sorting=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects?name=string&page=1&size=10&sorting=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/projects?name=string&page=1&size=10&sorting=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects?name=string&page=1&size=10&sorting=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Create project","operationId":"createProject","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project_Write"}}}},"responses":{"201":{"description":"Created","headers":{"Location":{"example":"${basePath}/v1/private/projects/{projectId}","required":true,"schema":{"type":"string"},"style":"simple"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unprocessable Content"}},"summary":"Create project","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/projects\");\nrequest.Content = new StringContent(\"{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"visibility\\\":\\\"private\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/projects' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"description\":\"string\",\"name\":\"string\",\"visibility\":\"private\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"description\":\"string\",\"name\":\"string\",\"visibility\":\"private\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/projects\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"visibility\\\":\\\"private\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"description\":\"string\",\"name\":\"string\",\"visibility\":\"private\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"visibility\\\":\\\"private\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"visibility\\\":\\\"private\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/projects\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"description\":\"string\",\"name\":\"string\",\"visibility\":\"private\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"visibility\\\":\\\"private\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/projects/delete":{"post":{"description":"Delete projects batch","operationId":"deleteProjectsBatch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchDelete"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Delete projects","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/projects/delete\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/projects/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/projects/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/projects/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/projects/feedback-scores/names":{"get":{"description":"Find Feedback Score names By Project Ids","operationId":"findFeedbackScoreNamesByProjectIds","parameters":[{"in":"query","name":"project_ids","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackScoreNames"}}},"description":"Feedback Scores resource"}},"summary":"Find Feedback Score names By Project Ids","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/projects/feedback-scores/names?project_ids=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/projects/feedback-scores/names?project_ids=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/projects/feedback-scores/names?project_ids=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/feedback-scores/names?project_ids=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/feedback-scores/names?project_ids=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/feedback-scores/names?project_ids=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/feedback-scores/names?project_ids=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/projects/feedback-scores/names?project_ids=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/feedback-scores/names?project_ids=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/projects/retrieve":{"post":{"description":"Retrieve project","operationId":"retrieveProject","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectRetrieve_Detailed"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project_Detailed"}}},"description":"Project resource"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Detailed"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Detailed"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Detailed"}}},"description":"Unprocessable Content"}},"summary":"Retrieve project","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/projects/retrieve\");\nrequest.Content = new StringContent(\"{\\\"includeStats\\\":true,\\\"name\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/projects/retrieve' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"includeStats\":true,\"name\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"includeStats\":true,\"name\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/projects/retrieve\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/retrieve\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"includeStats\\\":true,\\\"name\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/retrieve', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"includeStats\":true,\"name\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/retrieve', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"includeStats\\\":true,\\\"name\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/retrieve\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"includeStats\\\":true,\\\"name\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/projects/retrieve\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"includeStats\":true,\"name\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/retrieve\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"includeStats\\\":true,\\\"name\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/projects/stats":{"get":{"description":"Get Project Stats","operationId":"getProjectStats","parameters":[{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"name","schema":{"description":"Filter projects by name (partial match, case insensitive)","type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}},{"in":"query","name":"from_time","schema":{"description":"When set, scope the project metrics from this time (ISO-8601 format); omitted keeps the all-time aggregates","format":"date-time","type":"string"}},{"in":"query","name":"to_time","schema":{"description":"Scope the project metrics up to this time (ISO-8601 format). Must be after 'from_time'.","format":"date-time","type":"string"}},{"in":"query","name":"sorting","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectStatsSummary"}}},"description":"Project Stats"}},"summary":"Get Project Stats","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/projects/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&name=string&page=1&size=10&sorting=string&to_time=2026-06-09T00%3A00%3A00Z\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/projects/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&name=string&page=1&size=10&sorting=string&to_time=2026-06-09T00%3A00%3A00Z'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/projects/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&name=string&page=1&size=10&sorting=string&to_time=2026-06-09T00%3A00%3A00Z\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&name=string&page=1&size=10&sorting=string&to_time=2026-06-09T00%3A00%3A00Z\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&name=string&page=1&size=10&sorting=string&to_time=2026-06-09T00%3A00%3A00Z', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&name=string&page=1&size=10&sorting=string&to_time=2026-06-09T00%3A00%3A00Z', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&name=string&page=1&size=10&sorting=string&to_time=2026-06-09T00%3A00%3A00Z\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/projects/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&name=string&page=1&size=10&sorting=string&to_time=2026-06-09T00%3A00%3A00Z\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&name=string&page=1&size=10&sorting=string&to_time=2026-06-09T00%3A00%3A00Z\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/projects/{id}":{"delete":{"description":"Delete project by id","operationId":"deleteProjectById","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"204":{"description":"No Content"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Conflict"}},"summary":"Delete project by id","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Delete, \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X DELETE 'http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"DELETE\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"DELETE\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"DELETE\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"get":{"description":"Get project by id","operationId":"getProjectById","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project_Public"}}},"description":"Project resource"}},"summary":"Get project by id","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"patch":{"description":"Update project by id","operationId":"updateProject","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectUpdate"}}}},"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unprocessable Content"}},"summary":"Update project by id","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"visibility\\\":\\\"private\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"description\":\"string\",\"name\":\"string\",\"visibility\":\"private\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"description\":\"string\",\"name\":\"string\",\"visibility\":\"private\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"visibility\\\":\\\"private\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"description\":\"string\",\"name\":\"string\",\"visibility\":\"private\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"visibility\\\":\\\"private\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"visibility\\\":\\\"private\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"description\":\"string\",\"name\":\"string\",\"visibility\":\"private\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"visibility\\\":\\\"private\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/projects/{id}/kpi-cards":{"post":{"description":"Gets KPI card metrics for a project","operationId":"getProjectKpiCards","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KpiCardRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KpiCardResponse"}}},"description":"KPI Card Metrics"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Get Project KPI Cards","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/kpi-cards\");\nrequest.Content = new StringContent(\"{\\\"entity_type\\\":\\\"spans\\\",\\\"filters\\\":\\\"string\\\",\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/kpi-cards' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"entity_type\":\"spans\",\"filters\":\"string\",\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"entity_type\":\"spans\",\"filters\":\"string\",\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/kpi-cards\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/kpi-cards\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"entity_type\\\":\\\"spans\\\",\\\"filters\\\":\\\"string\\\",\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/kpi-cards', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"entity_type\":\"spans\",\"filters\":\"string\",\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/kpi-cards', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"entity_type\\\":\\\"spans\\\",\\\"filters\\\":\\\"string\\\",\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/kpi-cards\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"entity_type\\\":\\\"spans\\\",\\\"filters\\\":\\\"string\\\",\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/kpi-cards\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"entity_type\":\"spans\",\"filters\":\"string\",\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/kpi-cards\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"entity_type\\\":\\\"spans\\\",\\\"filters\\\":\\\"string\\\",\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/projects/{id}/metrics":{"post":{"description":"Gets specified metrics for a project","operationId":"getProjectMetrics","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectMetricRequest_Public"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectMetricResponse_Public"}}},"description":"Project Metrics"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Not Found"}},"summary":"Get Project Metrics","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/metrics\");\nrequest.Content = new StringContent(\"{\\\"breakdown\\\":{\\\"field\\\":\\\"error_info\\\",\\\"metadata_key\\\":\\\"string\\\",\\\"sub_metric\\\":\\\"string\\\"},\\\"interval\\\":\\\"DAILY\\\",\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metric_type\\\":\\\"COST\\\",\\\"span_filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"thread_filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"trace_filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/metrics' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"breakdown\":{\"field\":\"error_info\",\"metadata_key\":\"string\",\"sub_metric\":\"string\"},\"interval\":\"DAILY\",\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"metric_type\":\"COST\",\"span_filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"thread_filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"trace_filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"breakdown\":{\"field\":\"error_info\",\"metadata_key\":\"string\",\"sub_metric\":\"string\"},\"interval\":\"DAILY\",\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"metric_type\":\"COST\",\"span_filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"thread_filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"trace_filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/metrics\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/metrics\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"breakdown\\\":{\\\"field\\\":\\\"error_info\\\",\\\"metadata_key\\\":\\\"string\\\",\\\"sub_metric\\\":\\\"string\\\"},\\\"interval\\\":\\\"DAILY\\\",\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metric_type\\\":\\\"COST\\\",\\\"span_filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"thread_filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"trace_filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/metrics', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"breakdown\":{\"field\":\"error_info\",\"metadata_key\":\"string\",\"sub_metric\":\"string\"},\"interval\":\"DAILY\",\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"metric_type\":\"COST\",\"span_filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"thread_filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"trace_filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/metrics', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"breakdown\\\":{\\\"field\\\":\\\"error_info\\\",\\\"metadata_key\\\":\\\"string\\\",\\\"sub_metric\\\":\\\"string\\\"},\\\"interval\\\":\\\"DAILY\\\",\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metric_type\\\":\\\"COST\\\",\\\"span_filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"thread_filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"trace_filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/metrics\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"breakdown\\\":{\\\"field\\\":\\\"error_info\\\",\\\"metadata_key\\\":\\\"string\\\",\\\"sub_metric\\\":\\\"string\\\"},\\\"interval\\\":\\\"DAILY\\\",\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metric_type\\\":\\\"COST\\\",\\\"span_filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"thread_filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"trace_filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/metrics\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"breakdown\":{\"field\":\"error_info\",\"metadata_key\":\"string\",\"sub_metric\":\"string\"},\"interval\":\"DAILY\",\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"metric_type\":\"COST\",\"span_filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"thread_filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"trace_filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/metrics\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"breakdown\\\":{\\\"field\\\":\\\"error_info\\\",\\\"metadata_key\\\":\\\"string\\\",\\\"sub_metric\\\":\\\"string\\\"},\\\"interval\\\":\\\"DAILY\\\",\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metric_type\\\":\\\"COST\\\",\\\"span_filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"thread_filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"trace_filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/projects/{id}/token-usage/names":{"get":{"description":"Find Token Usage names","operationId":"findTokenUsageNames","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenUsageNames"}}},"description":"Token Usage names resource"}},"summary":"Find Token Usage names","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/token-usage/names\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/token-usage/names'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/token-usage/names\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/token-usage/names\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/token-usage/names', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/token-usage/names', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/token-usage/names\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/token-usage/names\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/token-usage/names\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/projects/{projectId}/activities":{"get":{"description":"Returns the most recent activity items across all entity types for a project, sorted by date descending.","operationId":"getRecentActivity","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecentActivityPage_Public"}}},"description":"Recent activity page"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Bad Request"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Internal Server Error"}},"summary":"Get recent activity for a project","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/activities?page=1&size=10\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/activities?page=1&size=10'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/activities?page=1&size=10\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/activities?page=1&size=10\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/activities?page=1&size=10', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/activities?page=1&size=10', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/activities?page=1&size=10\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/activities?page=1&size=10\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/activities?page=1&size=10\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/projects/{projectId}/alerts":{"get":{"description":"Find alerts scoped to a project","operationId":"findAlertsByProject","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"sorting","schema":{"type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertPage_Public"}}},"description":"Alerts page"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Bad Request"}},"summary":"Find alerts by project","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/alerts?filters=string&page=1&size=10&sorting=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/alerts?filters=string&page=1&size=10&sorting=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/alerts?filters=string&page=1&size=10&sorting=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/alerts?filters=string&page=1&size=10&sorting=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/alerts?filters=string&page=1&size=10&sorting=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/alerts?filters=string&page=1&size=10&sorting=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/alerts?filters=string&page=1&size=10&sorting=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/alerts?filters=string&page=1&size=10&sorting=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/alerts?filters=string&page=1&size=10&sorting=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/projects/{projectId}/dashboards":{"get":{"description":"Find dashboards scoped to a project","operationId":"findDashboardsByProject","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"name","schema":{"description":"Filter dashboards by name (partial match, case insensitive)","type":"string"}},{"in":"query","name":"sorting","schema":{"type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardPage_Public"}}},"description":"Dashboard page"}},"summary":"Find dashboards by project","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/dashboards?filters=string&name=string&page=1&size=10&sorting=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/dashboards?filters=string&name=string&page=1&size=10&sorting=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/dashboards?filters=string&name=string&page=1&size=10&sorting=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/dashboards?filters=string&name=string&page=1&size=10&sorting=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/dashboards?filters=string&name=string&page=1&size=10&sorting=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/dashboards?filters=string&name=string&page=1&size=10&sorting=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/dashboards?filters=string&name=string&page=1&size=10&sorting=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/dashboards?filters=string&name=string&page=1&size=10&sorting=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/dashboards?filters=string&name=string&page=1&size=10&sorting=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/projects/{projectId}/datasets":{"get":{"description":"Find datasets scoped to a project","operationId":"findDatasetsByProject","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"with_experiments_only","schema":{"type":"boolean"}},{"in":"query","name":"with_optimizations_only","schema":{"type":"boolean"}},{"in":"query","name":"name","schema":{"description":"Filter datasets by name (partial match, case insensitive)","type":"string"}},{"in":"query","name":"sorting","schema":{"type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetPage_Public"}}},"description":"Dataset page"}},"summary":"Find datasets by project","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/datasets?filters=string&name=string&page=1&size=10&sorting=string&with_experiments_only=true&with_optimizations_only=true\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/datasets?filters=string&name=string&page=1&size=10&sorting=string&with_experiments_only=true&with_optimizations_only=true'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/datasets?filters=string&name=string&page=1&size=10&sorting=string&with_experiments_only=true&with_optimizations_only=true\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/datasets?filters=string&name=string&page=1&size=10&sorting=string&with_experiments_only=true&with_optimizations_only=true\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/datasets?filters=string&name=string&page=1&size=10&sorting=string&with_experiments_only=true&with_optimizations_only=true', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/datasets?filters=string&name=string&page=1&size=10&sorting=string&with_experiments_only=true&with_optimizations_only=true', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/datasets?filters=string&name=string&page=1&size=10&sorting=string&with_experiments_only=true&with_optimizations_only=true\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/datasets?filters=string&name=string&page=1&size=10&sorting=string&with_experiments_only=true&with_optimizations_only=true\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/datasets?filters=string&name=string&page=1&size=10&sorting=string&with_experiments_only=true&with_optimizations_only=true\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/projects/{projectId}/experiments":{"get":{"description":"Find experiments scoped to a project","operationId":"findExperimentsByProject","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"datasetId","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"optimization_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"types","schema":{"type":"string"}},{"in":"query","name":"name","schema":{"description":"Filter experiments by name (partial match, case insensitive)","type":"string"}},{"in":"query","name":"dataset_deleted","schema":{"type":"boolean"}},{"in":"query","name":"sorting","schema":{"type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}},{"in":"query","name":"experiment_ids","schema":{"description":"Filter experiments by a list of experiment IDs","type":"string"}},{"in":"query","name":"force_sorting","schema":{"default":false,"description":"Force sorting even when exceeding the endpoint result set limit. May result in slower queries","type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExperimentPage_Public"}}},"description":"Experiments page"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Bad Request"}},"summary":"Find experiments by project","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/experiments?datasetId=00000000-0000-0000-0000-000000000000&dataset_deleted=true&experiment_ids=string&filters=string&force_sorting=false&name=string&optimization_id=00000000-0000-0000-0000-000000000000&page=1&size=10&sorting=string&types=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/experiments?datasetId=00000000-0000-0000-0000-000000000000&dataset_deleted=true&experiment_ids=string&filters=string&force_sorting=false&name=string&optimization_id=00000000-0000-0000-0000-000000000000&page=1&size=10&sorting=string&types=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/experiments?datasetId=00000000-0000-0000-0000-000000000000&dataset_deleted=true&experiment_ids=string&filters=string&force_sorting=false&name=string&optimization_id=00000000-0000-0000-0000-000000000000&page=1&size=10&sorting=string&types=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/experiments?datasetId=00000000-0000-0000-0000-000000000000&dataset_deleted=true&experiment_ids=string&filters=string&force_sorting=false&name=string&optimization_id=00000000-0000-0000-0000-000000000000&page=1&size=10&sorting=string&types=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/experiments?datasetId=00000000-0000-0000-0000-000000000000&dataset_deleted=true&experiment_ids=string&filters=string&force_sorting=false&name=string&optimization_id=00000000-0000-0000-0000-000000000000&page=1&size=10&sorting=string&types=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/experiments?datasetId=00000000-0000-0000-0000-000000000000&dataset_deleted=true&experiment_ids=string&filters=string&force_sorting=false&name=string&optimization_id=00000000-0000-0000-0000-000000000000&page=1&size=10&sorting=string&types=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/experiments?datasetId=00000000-0000-0000-0000-000000000000&dataset_deleted=true&experiment_ids=string&filters=string&force_sorting=false&name=string&optimization_id=00000000-0000-0000-0000-000000000000&page=1&size=10&sorting=string&types=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/experiments?datasetId=00000000-0000-0000-0000-000000000000&dataset_deleted=true&experiment_ids=string&filters=string&force_sorting=false&name=string&optimization_id=00000000-0000-0000-0000-000000000000&page=1&size=10&sorting=string&types=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/experiments?datasetId=00000000-0000-0000-0000-000000000000&dataset_deleted=true&experiment_ids=string&filters=string&force_sorting=false&name=string&optimization_id=00000000-0000-0000-0000-000000000000&page=1&size=10&sorting=string&types=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/projects/{projectId}/optimizations":{"get":{"description":"Find optimizations scoped to a project","operationId":"findOptimizationsByProject","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"dataset_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"dataset_name","schema":{"type":"string"}},{"in":"query","name":"name","schema":{"description":"Filter optimizations by name (partial match, case insensitive)","type":"string"}},{"in":"query","name":"dataset_deleted","schema":{"type":"boolean"}},{"in":"query","name":"filters","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OptimizationPage_Public"}}},"description":"Optimizations page"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Bad Request"}},"summary":"Find optimizations by project","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/optimizations?dataset_deleted=true&dataset_id=00000000-0000-0000-0000-000000000000&dataset_name=string&filters=string&name=string&page=1&size=10\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/optimizations?dataset_deleted=true&dataset_id=00000000-0000-0000-0000-000000000000&dataset_name=string&filters=string&name=string&page=1&size=10'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/optimizations?dataset_deleted=true&dataset_id=00000000-0000-0000-0000-000000000000&dataset_name=string&filters=string&name=string&page=1&size=10\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/optimizations?dataset_deleted=true&dataset_id=00000000-0000-0000-0000-000000000000&dataset_name=string&filters=string&name=string&page=1&size=10\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/optimizations?dataset_deleted=true&dataset_id=00000000-0000-0000-0000-000000000000&dataset_name=string&filters=string&name=string&page=1&size=10', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/optimizations?dataset_deleted=true&dataset_id=00000000-0000-0000-0000-000000000000&dataset_name=string&filters=string&name=string&page=1&size=10', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/optimizations?dataset_deleted=true&dataset_id=00000000-0000-0000-0000-000000000000&dataset_name=string&filters=string&name=string&page=1&size=10\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/optimizations?dataset_deleted=true&dataset_id=00000000-0000-0000-0000-000000000000&dataset_name=string&filters=string&name=string&page=1&size=10\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/optimizations?dataset_deleted=true&dataset_id=00000000-0000-0000-0000-000000000000&dataset_name=string&filters=string&name=string&page=1&size=10\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/projects/{projectId}/prompts":{"get":{"description":"Get prompts scoped to a project","operationId":"getPromptsByProject","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"name","schema":{"description":"Filter prompts by name (partial match, case insensitive)","type":"string"}},{"in":"query","name":"sorting","schema":{"type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptPage_Public"}}},"description":"OK"}},"summary":"Get prompts by project","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/prompts?filters=string&name=string&page=1&size=10&sorting=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/prompts?filters=string&name=string&page=1&size=10&sorting=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/prompts?filters=string&name=string&page=1&size=10&sorting=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/prompts?filters=string&name=string&page=1&size=10&sorting=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/prompts?filters=string&name=string&page=1&size=10&sorting=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/prompts?filters=string&name=string&page=1&size=10&sorting=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/prompts?filters=string&name=string&page=1&size=10&sorting=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/prompts?filters=string&name=string&page=1&size=10&sorting=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/prompts?filters=string&name=string&page=1&size=10&sorting=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/projects/{projectId}/reports":{"get":{"description":"Returns a paginated list of reports, newest first.","operationId":"getReports","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OllieReportPage"}}},"description":"Reports page"}},"summary":"Get reports for a project","tags":["Reports"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports?page=1&size=10\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports?page=1&size=10'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports?page=1&size=10\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports?page=1&size=10\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports?page=1&size=10', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports?page=1&size=10', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports?page=1&size=10\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports?page=1&size=10\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports?page=1&size=10\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/projects/{projectId}/reports/generate":{"post":{"description":"Creates a pending report and triggers asynchronous generation via the orchestrator.","operationId":"generateReport","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateReportResponse"}}},"description":"Report generation triggered"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"summary":"Trigger report generation","tags":["Reports"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/generate\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/generate'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/generate\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/generate\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/generate', { method: 'POST' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/generate', { method: 'POST' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/generate\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"POST\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/generate\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/generate\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/projects/{projectId}/reports/preferences":{"get":{"description":"Returns report preferences for a project, or null if none have been set.","operationId":"getReportPreference","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportPreference"}}},"description":"Report preferences or null"}},"summary":"Get report preferences","tags":["Reports"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/preferences\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/preferences'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/preferences\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/preferences\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/preferences', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/preferences', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/preferences\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/preferences\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/preferences\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"put":{"description":"Enable or disable daily report generation for a project.","operationId":"updateReportPreference","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportPreference"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportPreference"}}},"description":"Updated preferences"}},"summary":"Update report preferences","tags":["Reports"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/preferences\");\nrequest.Content = new StringContent(\"{\\\"custom_prompt\\\":\\\"string\\\",\\\"enabled\\\":true,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"schedule_time\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/preferences' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"custom_prompt\":\"string\",\"enabled\":true,\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"schedule_time\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"custom_prompt\":\"string\",\"enabled\":true,\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"schedule_time\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/preferences\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/preferences\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{\\\"custom_prompt\\\":\\\"string\\\",\\\"enabled\\\":true,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"schedule_time\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/preferences', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"custom_prompt\":\"string\",\"enabled\":true,\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"schedule_time\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/preferences', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"custom_prompt\\\":\\\"string\\\",\\\"enabled\\\":true,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"schedule_time\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/preferences\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"custom_prompt\\\":\\\"string\\\",\\\"enabled\\\":true,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"schedule_time\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/preferences\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"custom_prompt\":\"string\",\"enabled\":true,\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"schedule_time\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/preferences\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"custom_prompt\\\":\\\"string\\\",\\\"enabled\\\":true,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"schedule_time\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/projects/{projectId}/reports/{reportId}/complete":{"post":{"description":"Callback from Ollie to update report status and content after generation.","operationId":"completeReport","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"path","name":"reportId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportCompleteRequest"}}},"required":true},"responses":{"204":{"description":"Report updated"},"400":{"description":"Status is not terminal"},"404":{"description":"Report not found"}},"summary":"Complete report generation","tags":["Reports"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/00000000-0000-0000-0000-000000000000/complete\");\nrequest.Content = new StringContent(\"{\\\"content\\\":\\\"string\\\",\\\"failure_reason\\\":\\\"string\\\",\\\"recommended_actions\\\":{},\\\"session_id\\\":\\\"string\\\",\\\"status\\\":\\\"completed\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/00000000-0000-0000-0000-000000000000/complete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"content\":\"string\",\"failure_reason\":\"string\",\"recommended_actions\":{},\"session_id\":\"string\",\"status\":\"completed\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"content\":\"string\",\"failure_reason\":\"string\",\"recommended_actions\":{},\"session_id\":\"string\",\"status\":\"completed\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/00000000-0000-0000-0000-000000000000/complete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/00000000-0000-0000-0000-000000000000/complete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"content\\\":\\\"string\\\",\\\"failure_reason\\\":\\\"string\\\",\\\"recommended_actions\\\":{},\\\"session_id\\\":\\\"string\\\",\\\"status\\\":\\\"completed\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/00000000-0000-0000-0000-000000000000/complete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"content\":\"string\",\"failure_reason\":\"string\",\"recommended_actions\":{},\"session_id\":\"string\",\"status\":\"completed\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/00000000-0000-0000-0000-000000000000/complete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"content\\\":\\\"string\\\",\\\"failure_reason\\\":\\\"string\\\",\\\"recommended_actions\\\":{},\\\"session_id\\\":\\\"string\\\",\\\"status\\\":\\\"completed\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/00000000-0000-0000-0000-000000000000/complete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"content\\\":\\\"string\\\",\\\"failure_reason\\\":\\\"string\\\",\\\"recommended_actions\\\":{},\\\"session_id\\\":\\\"string\\\",\\\"status\\\":\\\"completed\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/00000000-0000-0000-0000-000000000000/complete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"content\":\"string\",\"failure_reason\":\"string\",\"recommended_actions\":{},\"session_id\":\"string\",\"status\":\"completed\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/projects/00000000-0000-0000-0000-000000000000/reports/00000000-0000-0000-0000-000000000000/complete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"content\\\":\\\"string\\\",\\\"failure_reason\\\":\\\"string\\\",\\\"recommended_actions\\\":{},\\\"session_id\\\":\\\"string\\\",\\\"status\\\":\\\"completed\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/prompts":{"get":{"description":"Get prompts","operationId":"getPrompts","parameters":[{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"name","schema":{"description":"Filter prompts by name (partial match, case insensitive)","type":"string"}},{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"sorting","schema":{"type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptPage_Public"}}},"description":"OK"}},"summary":"Get prompts","tags":["Prompts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/prompts?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/prompts?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/prompts?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/prompts?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/prompts?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/prompts?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/prompts?filters=string&name=string&page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&sorting=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Create prompt","operationId":"createPrompt","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Prompt_Write"}}}},"responses":{"201":{"description":"Created","headers":{"Location":{"example":"${basePath}/v1/private/prompts/{promptId}","required":true,"schema":{"type":"string"},"style":"simple"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unprocessable Content"}},"summary":"Create prompt","tags":["Prompts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/prompts\");\nrequest.Content = new StringContent(\"{\\\"change_description\\\":\\\"string\\\",\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"tags\\\":[\\\"string\\\"],\\\"template\\\":\\\"string\\\",\\\"template_structure\\\":\\\"text\\\",\\\"type\\\":\\\"jinja2\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/prompts' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"change_description\":\"string\",\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{},\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"tags\":[\"string\"],\"template\":\"string\",\"template_structure\":\"text\",\"type\":\"jinja2\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"change_description\":\"string\",\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{},\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"tags\":[\"string\"],\"template\":\"string\",\"template_structure\":\"text\",\"type\":\"jinja2\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/prompts\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/prompts\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"change_description\\\":\\\"string\\\",\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"tags\\\":[\\\"string\\\"],\\\"template\\\":\\\"string\\\",\\\"template_structure\\\":\\\"text\\\",\\\"type\\\":\\\"jinja2\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"change_description\":\"string\",\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{},\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"tags\":[\"string\"],\"template\":\"string\",\"template_structure\":\"text\",\"type\":\"jinja2\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"change_description\\\":\\\"string\\\",\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"tags\\\":[\\\"string\\\"],\\\"template\\\":\\\"string\\\",\\\"template_structure\\\":\\\"text\\\",\\\"type\\\":\\\"jinja2\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/prompts\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"change_description\\\":\\\"string\\\",\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"tags\\\":[\\\"string\\\"],\\\"template\\\":\\\"string\\\",\\\"template_structure\\\":\\\"text\\\",\\\"type\\\":\\\"jinja2\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/prompts\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"change_description\":\"string\",\"description\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{},\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"tags\":[\"string\"],\"template\":\"string\",\"template_structure\":\"text\",\"type\":\"jinja2\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/prompts\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"change_description\\\":\\\"string\\\",\\\"description\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"tags\\\":[\\\"string\\\"],\\\"template\\\":\\\"string\\\",\\\"template_structure\\\":\\\"text\\\",\\\"type\\\":\\\"jinja2\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/prompts/by-commit/{commit}":{"get":{"description":"Get prompt by commit","operationId":"getPromptByCommit","parameters":[{"in":"path","name":"commit","required":true,"schema":{"pattern":"^[a-zA-Z0-9]{8}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Prompt_Detail"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Detail"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Detail"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Detail"}}},"description":"Conflict"}},"summary":"Get prompt by commit","tags":["Prompts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/prompts/by-commit/string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/prompts/by-commit/string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/prompts/by-commit/string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/prompts/by-commit/string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/by-commit/string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/by-commit/string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/prompts/by-commit/string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/prompts/by-commit/string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/prompts/by-commit/string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/prompts/delete":{"post":{"description":"Delete prompts batch","operationId":"deletePromptsBatch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchDelete"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Delete prompts","tags":["Prompts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/prompts/delete\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/prompts/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/prompts/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/prompts/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/prompts/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/prompts/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/prompts/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/prompts/retrieve-by-commits":{"post":{"description":"Get prompts by prompt version commits","operationId":"getPromptsByCommits","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptVersionCommitsRequest_Public"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PromptVersionLink_Public"},"type":"array"}}},"description":"OK"}},"summary":"Get prompts by commits","tags":["Prompts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/prompts/retrieve-by-commits\");\nrequest.Content = new StringContent(\"{\\\"commits\\\":[\\\"string\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/prompts/retrieve-by-commits' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"commits\":[\"string\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"commits\":[\"string\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/prompts/retrieve-by-commits\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/prompts/retrieve-by-commits\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"commits\\\":[\\\"string\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/retrieve-by-commits', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"commits\":[\"string\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/retrieve-by-commits', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"commits\\\":[\\\"string\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/prompts/retrieve-by-commits\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"commits\\\":[\\\"string\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/prompts/retrieve-by-commits\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"commits\":[\"string\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/prompts/retrieve-by-commits\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"commits\\\":[\\\"string\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/prompts/versions":{"patch":{"description":"Update one or more prompt versions.\n\nNote: Prompt versions are immutable by design.\nOnly organizational properties, such as tags etc., can be updated.\nCore properties like template and metadata cannot be modified after creation.\n\nPATCH semantics:\n- non-empty values update the field\n- null values preserve existing field values (no change)\n- empty values explicitly clear the field\n","operationId":"updatePromptVersions","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptVersionBatchUpdate"}}}},"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Update prompt versions","tags":["Prompts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/prompts/versions\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":false,\\\"update\\\":{\\\"tags\\\":[\\\"string\\\"]}}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/prompts/versions' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":false,\"update\":{\"tags\":[\"string\"]}}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":false,\"update\":{\"tags\":[\"string\"]}}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/prompts/versions\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/prompts/versions\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":false,\\\"update\\\":{\\\"tags\\\":[\\\"string\\\"]}}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/versions', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":false,\"update\":{\"tags\":[\"string\"]}}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/versions', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":false,\\\"update\\\":{\\\"tags\\\":[\\\"string\\\"]}}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/prompts/versions\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":false,\\\"update\\\":{\\\"tags\\\":[\\\"string\\\"]}}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/prompts/versions\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":false,\"update\":{\"tags\":[\"string\"]}}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/prompts/versions\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":false,\\\"update\\\":{\\\"tags\\\":[\\\"string\\\"]}}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Create prompt version","operationId":"createPromptVersion","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptVersion_Detail"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptVersion_Detail"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Detail"}}},"description":"Bad Request"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Detail"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Detail"}}},"description":"Unprocessable Content"}},"summary":"Create prompt version","tags":["Prompts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/prompts/versions\");\nrequest.Content = new StringContent(\"{\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"template_structure\\\":\\\"text\\\",\\\"version\\\":{\\\"change_description\\\":\\\"string\\\",\\\"commit\\\":\\\"string\\\",\\\"environment\\\":\\\"string\\\",\\\"environments\\\":[\\\"string\\\"],\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{},\\\"tags\\\":[\\\"string\\\"],\\\"template\\\":\\\"string\\\",\\\"type\\\":\\\"jinja2\\\",\\\"version_type\\\":\\\"mask\\\"}}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/prompts/versions' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"template_structure\":\"text\",\"version\":{\"change_description\":\"string\",\"commit\":\"string\",\"environment\":\"string\",\"environments\":[\"string\"],\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{},\"tags\":[\"string\"],\"template\":\"string\",\"type\":\"jinja2\",\"version_type\":\"mask\"}}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"template_structure\":\"text\",\"version\":{\"change_description\":\"string\",\"commit\":\"string\",\"environment\":\"string\",\"environments\":[\"string\"],\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{},\"tags\":[\"string\"],\"template\":\"string\",\"type\":\"jinja2\",\"version_type\":\"mask\"}}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/prompts/versions\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/prompts/versions\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"template_structure\\\":\\\"text\\\",\\\"version\\\":{\\\"change_description\\\":\\\"string\\\",\\\"commit\\\":\\\"string\\\",\\\"environment\\\":\\\"string\\\",\\\"environments\\\":[\\\"string\\\"],\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{},\\\"tags\\\":[\\\"string\\\"],\\\"template\\\":\\\"string\\\",\\\"type\\\":\\\"jinja2\\\",\\\"version_type\\\":\\\"mask\\\"}}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/versions', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"template_structure\":\"text\",\"version\":{\"change_description\":\"string\",\"commit\":\"string\",\"environment\":\"string\",\"environments\":[\"string\"],\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{},\"tags\":[\"string\"],\"template\":\"string\",\"type\":\"jinja2\",\"version_type\":\"mask\"}}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/versions', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"template_structure\\\":\\\"text\\\",\\\"version\\\":{\\\"change_description\\\":\\\"string\\\",\\\"commit\\\":\\\"string\\\",\\\"environment\\\":\\\"string\\\",\\\"environments\\\":[\\\"string\\\"],\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{},\\\"tags\\\":[\\\"string\\\"],\\\"template\\\":\\\"string\\\",\\\"type\\\":\\\"jinja2\\\",\\\"version_type\\\":\\\"mask\\\"}}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/prompts/versions\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"template_structure\\\":\\\"text\\\",\\\"version\\\":{\\\"change_description\\\":\\\"string\\\",\\\"commit\\\":\\\"string\\\",\\\"environment\\\":\\\"string\\\",\\\"environments\\\":[\\\"string\\\"],\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{},\\\"tags\\\":[\\\"string\\\"],\\\"template\\\":\\\"string\\\",\\\"type\\\":\\\"jinja2\\\",\\\"version_type\\\":\\\"mask\\\"}}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/prompts/versions\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"template_structure\":\"text\",\"version\":{\"change_description\":\"string\",\"commit\":\"string\",\"environment\":\"string\",\"environments\":[\"string\"],\"id\":\"00000000-0000-0000-0000-000000000000\",\"metadata\":{},\"tags\":[\"string\"],\"template\":\"string\",\"type\":\"jinja2\",\"version_type\":\"mask\"}}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/prompts/versions\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"template_structure\\\":\\\"text\\\",\\\"version\\\":{\\\"change_description\\\":\\\"string\\\",\\\"commit\\\":\\\"string\\\",\\\"environment\\\":\\\"string\\\",\\\"environments\\\":[\\\"string\\\"],\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"metadata\\\":{},\\\"tags\\\":[\\\"string\\\"],\\\"template\\\":\\\"string\\\",\\\"type\\\":\\\"jinja2\\\",\\\"version_type\\\":\\\"mask\\\"}}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/prompts/versions/retrieve":{"post":{"description":"Retrieve prompt version. When project_name is supplied the lookup is scoped to that project: a prompt belonging to a different project is never matched, and an unknown project name returns 404. Legacy prompts with no project are still resolved as a deprecated fallback, signalled by the X-Opik-Deprecation response header.","operationId":"retrievePromptVersion","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptVersionRetrieve_Detail"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptVersion_Detail"}}},"description":"OK","headers":{"X-Opik-Deprecation":{"description":"Present only when the prompt was resolved through the deprecated workspace-wide fallback, i.e. it has no project. Absent for project-scoped prompts.","schema":{"type":"string"},"style":"simple"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Detail"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Detail"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Detail"}}},"description":"Unprocessable Content"}},"summary":"Retrieve prompt version","tags":["Prompts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/prompts/versions/retrieve\");\nrequest.Content = new StringContent(\"{\\\"commit\\\":\\\"string\\\",\\\"environment\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\",\\\"version_number\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/prompts/versions/retrieve' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"commit\":\"string\",\"environment\":\"string\",\"name\":\"string\",\"project_name\":\"string\",\"version_number\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"commit\":\"string\",\"environment\":\"string\",\"name\":\"string\",\"project_name\":\"string\",\"version_number\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/prompts/versions/retrieve\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/prompts/versions/retrieve\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"commit\\\":\\\"string\\\",\\\"environment\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\",\\\"version_number\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/versions/retrieve', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"commit\":\"string\",\"environment\":\"string\",\"name\":\"string\",\"project_name\":\"string\",\"version_number\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/versions/retrieve', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"commit\\\":\\\"string\\\",\\\"environment\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\",\\\"version_number\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/prompts/versions/retrieve\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"commit\\\":\\\"string\\\",\\\"environment\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\",\\\"version_number\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/prompts/versions/retrieve\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"commit\":\"string\",\"environment\":\"string\",\"name\":\"string\",\"project_name\":\"string\",\"version_number\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/prompts/versions/retrieve\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"commit\\\":\\\"string\\\",\\\"environment\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"project_name\\\":\\\"string\\\",\\\"version_number\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/prompts/versions/retrieve-by-ids":{"post":{"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":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PromptVersion_Detail"},"type":"array"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Detail"}}},"description":"Bad Request"}},"summary":"Retrieve prompt versions by ids","tags":["Prompts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/prompts/versions/retrieve-by-ids\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/prompts/versions/retrieve-by-ids' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/prompts/versions/retrieve-by-ids\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/prompts/versions/retrieve-by-ids\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/versions/retrieve-by-ids', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/versions/retrieve-by-ids', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/prompts/versions/retrieve-by-ids\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/prompts/versions/retrieve-by-ids\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/prompts/versions/retrieve-by-ids\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/prompts/versions/{versionId}":{"get":{"description":"Get prompt version by id","operationId":"getPromptVersionById","parameters":[{"in":"path","name":"versionId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptVersion_Detail"}}},"description":"Prompt version resource"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Detail"}}},"description":"Not Found"}},"summary":"Get prompt version by id","tags":["Prompts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/prompts/versions/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/prompts/versions/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/prompts/versions/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/prompts/versions/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/versions/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/versions/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/prompts/versions/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/prompts/versions/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/prompts/versions/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/prompts/versions/{versionId}/environments":{"patch":{"description":"Set or clear the environment owned by a prompt version.\nSetting a non-null environment moves ownership atomically: any previous owner of that\nenvironment for the same prompt has its environment cleared in the same transaction.\nSetting null clears the environment from the version.\nThe environment must already exist in the workspace registry; unknown names return 404.\n","operationId":"setPromptVersionEnvironment","parameters":[{"in":"path","name":"versionId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptVersionEnvironmentUpdate"}}}},"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not Found"}},"summary":"Set prompt version environment","tags":["Prompts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/prompts/versions/00000000-0000-0000-0000-000000000000/environments\");\nrequest.Content = new StringContent(\"{\\\"environments\\\":[\\\"string\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/prompts/versions/00000000-0000-0000-0000-000000000000/environments' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"environments\":[\"string\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"environments\":[\"string\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/prompts/versions/00000000-0000-0000-0000-000000000000/environments\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/prompts/versions/00000000-0000-0000-0000-000000000000/environments\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"environments\\\":[\\\"string\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/versions/00000000-0000-0000-0000-000000000000/environments', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"environments\":[\"string\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/versions/00000000-0000-0000-0000-000000000000/environments', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"environments\\\":[\\\"string\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/prompts/versions/00000000-0000-0000-0000-000000000000/environments\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"environments\\\":[\\\"string\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/prompts/versions/00000000-0000-0000-0000-000000000000/environments\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"environments\":[\"string\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/prompts/versions/00000000-0000-0000-0000-000000000000/environments\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"environments\\\":[\\\"string\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/prompts/{id}":{"delete":{"description":"Delete prompt","operationId":"deletePrompt","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"204":{"description":"No content"}},"summary":"Delete prompt","tags":["Prompts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Delete, \"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X DELETE 'http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"DELETE\", \"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"DELETE\", \"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"DELETE\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"get":{"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":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"description":"Optional mask version id; when set, requestedVersion is the mask row for that id","in":"query","name":"mask_id","schema":{"format":"uuid","type":"string"}},{"description":"Optional environment name; when set, requestedVersion is the version mapped to that environment for the prompt","in":"query","name":"environment","schema":{"maxLength":150,"minLength":0,"pattern":"^[A-Za-z0-9_-]+$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Prompt_Detail"}}},"description":"Prompt resource"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Detail"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Detail"}}},"description":"Not Found"}},"summary":"Get prompt by id","tags":["Prompts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000?environment=string&mask_id=00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000?environment=string&mask_id=00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000?environment=string&mask_id=00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000?environment=string&mask_id=00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000?environment=string&mask_id=00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000?environment=string&mask_id=00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000?environment=string&mask_id=00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000?environment=string&mask_id=00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000?environment=string&mask_id=00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"put":{"description":"Update prompt","operationId":"updatePrompt","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Prompt_Updatable"}}}},"responses":{"204":{"description":"No content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unprocessable Content"}},"summary":"Update prompt","tags":["Prompts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"tags\\\":[\\\"string\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"description\":\"string\",\"name\":\"string\",\"tags\":[\"string\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"description\":\"string\",\"name\":\"string\",\"tags\":[\"string\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"tags\\\":[\\\"string\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"description\":\"string\",\"name\":\"string\",\"tags\":[\"string\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"tags\\\":[\\\"string\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"tags\\\":[\\\"string\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"description\":\"string\",\"name\":\"string\",\"tags\":[\"string\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"description\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"tags\\\":[\\\"string\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/prompts/{id}/versions":{"get":{"description":"Get prompt versions","operationId":"getPromptVersions","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"description":"Search text to find in template or change description fields","in":"query","name":"search","schema":{"type":"string"}},{"in":"query","name":"sorting","schema":{"type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptVersionPage_Public"}}},"description":"OK"}},"summary":"Get prompt versions","tags":["Prompts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions?filters=string&page=1&search=string&size=10&sorting=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions?filters=string&page=1&search=string&size=10&sorting=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions?filters=string&page=1&search=string&size=10&sorting=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions?filters=string&page=1&search=string&size=10&sorting=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions?filters=string&page=1&search=string&size=10&sorting=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions?filters=string&page=1&search=string&size=10&sorting=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions?filters=string&page=1&search=string&size=10&sorting=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions?filters=string&page=1&search=string&size=10&sorting=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions?filters=string&page=1&search=string&size=10&sorting=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/prompts/{promptId}/versions/by-number/{versionNumber}":{"get":{"description":"Get a prompt version by its sequential v<N> number for the given prompt.","operationId":"getPromptVersionByNumber","parameters":[{"in":"path","name":"promptId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"path","name":"versionNumber","required":true,"schema":{"maxLength":10,"minLength":0,"pattern":"v\\d+","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptVersion_Detail"}}},"description":"Prompt version resource"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Detail"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Detail"}}},"description":"Not Found"}},"summary":"Get prompt version by sequential number","tags":["Prompts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions/by-number/string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions/by-number/string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions/by-number/string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions/by-number/string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions/by-number/string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions/by-number/string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions/by-number/string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions/by-number/string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions/by-number/string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/prompts/{promptId}/versions/{versionId}/restore":{"post":{"description":"Restore a prompt version by creating a new version with the content from the specified version","operationId":"restorePromptVersion","parameters":[{"in":"path","name":"promptId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"path","name":"versionId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptVersion_Detail"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Detail"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Detail"}}},"description":"Not Found"}},"summary":"Restore prompt version","tags":["Prompts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions/00000000-0000-0000-0000-000000000000/restore\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions/00000000-0000-0000-0000-000000000000/restore'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions/00000000-0000-0000-0000-000000000000/restore\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions/00000000-0000-0000-0000-000000000000/restore\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions/00000000-0000-0000-0000-000000000000/restore', { method: 'POST' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions/00000000-0000-0000-0000-000000000000/restore', { method: 'POST' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions/00000000-0000-0000-0000-000000000000/restore\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"POST\", \"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions/00000000-0000-0000-0000-000000000000/restore\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/prompts/00000000-0000-0000-0000-000000000000/versions/00000000-0000-0000-0000-000000000000/restore\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/report-failures":{"get":{"description":"Returns failures for the given project id and type, most recent first.","operationId":"findReportFailures","parameters":[{"in":"query","name":"type","required":true,"schema":{"enum":["agent_insights"],"type":"string"}},{"in":"query","name":"project_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportFailurePage"}}},"description":"Failures page"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unauthorized"}},"summary":"List failures for a project","tags":["Report Failures"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/report-failures?page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&type=agent_insights\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/report-failures?page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&type=agent_insights'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/report-failures?page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&type=agent_insights\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/report-failures?page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&type=agent_insights\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/report-failures?page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&type=agent_insights', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/report-failures?page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&type=agent_insights', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/report-failures?page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&type=agent_insights\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/report-failures?page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&type=agent_insights\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/report-failures?page=1&project_id=00000000-0000-0000-0000-000000000000&size=10&type=agent_insights\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"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":{"schema":{"type":"string"},"style":"simple"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unauthorized"}},"summary":"Record a report/job failure","tags":["Report Failures"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/report-failures\");\nrequest.Content = new StringContent(\"{\\\"detail\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"reason\\\":\\\"string\\\",\\\"type\\\":\\\"agent_insights\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/report-failures' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"detail\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"reason\":\"string\",\"type\":\"agent_insights\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"detail\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"reason\":\"string\",\"type\":\"agent_insights\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/report-failures\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/report-failures\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"detail\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"reason\\\":\\\"string\\\",\\\"type\\\":\\\"agent_insights\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/report-failures', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"detail\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"reason\":\"string\",\"type\":\"agent_insights\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/report-failures', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"detail\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"reason\\\":\\\"string\\\",\\\"type\\\":\\\"agent_insights\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/report-failures\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"detail\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"reason\\\":\\\"string\\\",\\\"type\\\":\\\"agent_insights\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/report-failures\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"detail\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"reason\":\"string\",\"type\":\"agent_insights\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/report-failures\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"detail\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"reason\\\":\\\"string\\\",\\\"type\\\":\\\"agent_insights\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/retention/rules":{"get":{"description":"List retention rules for the caller's workspace. Defaults to active only.","operationId":"findRetentionRules","parameters":[{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"include_inactive","schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetentionRulePage_Public"}}},"description":"Retention rules page"}},"summary":"Find retention rules","tags":["Retention Rules"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/retention/rules?include_inactive=false&page=1&size=10\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/retention/rules?include_inactive=false&page=1&size=10'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/retention/rules?include_inactive=false&page=1&size=10\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/retention/rules?include_inactive=false&page=1&size=10\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/retention/rules?include_inactive=false&page=1&size=10', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/retention/rules?include_inactive=false&page=1&size=10', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/retention/rules?include_inactive=false&page=1&size=10\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/retention/rules?include_inactive=false&page=1&size=10\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/retention/rules?include_inactive=false&page=1&size=10\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"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":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetentionRule_Public"}}},"description":"Created","headers":{"Location":{"example":"${basePath}/v1/private/retention/rules/{ruleId}","required":true,"schema":{"type":"string"},"style":"simple"}}}},"summary":"Create retention rule","tags":["Retention Rules"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/retention/rules\");\nrequest.Content = new StringContent(\"{\\\"apply_to_past\\\":true,\\\"organization_level\\\":true,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"retention\\\":\\\"base_60d\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/retention/rules' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"apply_to_past\":true,\"organization_level\":true,\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"retention\":\"base_60d\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"apply_to_past\":true,\"organization_level\":true,\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"retention\":\"base_60d\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/retention/rules\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/retention/rules\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"apply_to_past\\\":true,\\\"organization_level\\\":true,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"retention\\\":\\\"base_60d\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/retention/rules', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"apply_to_past\":true,\"organization_level\":true,\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"retention\":\"base_60d\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/retention/rules', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"apply_to_past\\\":true,\\\"organization_level\\\":true,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"retention\\\":\\\"base_60d\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/retention/rules\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"apply_to_past\\\":true,\\\"organization_level\\\":true,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"retention\\\":\\\"base_60d\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/retention/rules\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"apply_to_past\":true,\"organization_level\":true,\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"retention\":\"base_60d\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/retention/rules\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"apply_to_past\\\":true,\\\"organization_level\\\":true,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"retention\\\":\\\"base_60d\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/retention/rules/{ruleId}":{"delete":{"description":"Soft-deactivate a retention rule (sets enabled=false). Rules are never hard-deleted for audit trail.","operationId":"deactivateRetentionRule","parameters":[{"in":"path","name":"ruleId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"204":{"description":"No content"},"404":{"description":"Retention rule not found"}},"summary":"Deactivate retention rule","tags":["Retention Rules"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Delete, \"http://localhost:5173/api/v1/private/retention/rules/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X DELETE 'http://localhost:5173/api/v1/private/retention/rules/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"DELETE\", \"http://localhost:5173/api/v1/private/retention/rules/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/retention/rules/00000000-0000-0000-0000-000000000000\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/retention/rules/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/retention/rules/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/retention/rules/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"DELETE\", \"http://localhost:5173/api/v1/private/retention/rules/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/retention/rules/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"DELETE\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"get":{"description":"Get a specific retention rule by id","operationId":"getRetentionRuleById","parameters":[{"in":"path","name":"ruleId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetentionRule_Public"}}},"description":"Retention rule"},"404":{"description":"Retention rule not found"}},"summary":"Get retention rule by id","tags":["Retention Rules"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/retention/rules/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/retention/rules/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/retention/rules/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/retention/rules/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/retention/rules/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/retention/rules/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/retention/rules/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/retention/rules/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/retention/rules/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/spans":{"get":{"description":"Get spans by project_name or project_id and optionally by trace_id and/or type","operationId":"getSpansByProject","parameters":[{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"project_name","schema":{"type":"string"}},{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"trace_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"type","schema":{"enum":["general","tool","llm","guardrail"],"type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}},{"in":"query","name":"truncate","schema":{"default":false,"description":"Truncate input, output and metadata to slim payloads","type":"boolean"}},{"in":"query","name":"strip_attachments","schema":{"default":false,"description":"If true, returns attachment references like [file.png]; if false, downloads and reinjects stripped attachments","type":"boolean"}},{"in":"query","name":"sorting","schema":{"type":"string"}},{"in":"query","name":"exclude","schema":{"type":"string"}},{"in":"query","name":"search","schema":{"description":"Full-text search across span fields","type":"string"}},{"in":"query","name":"from_time","schema":{"description":"Filter spans created from this time (ISO-8601 format).","format":"date-time","type":"string"}},{"in":"query","name":"to_time","schema":{"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","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpanPage_Public"}}},"description":"Spans resource"}},"summary":"Get spans by project_name or project_id and optionally by trace_id and/or type","tags":["Spans"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/spans?exclude=string&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&trace_id=00000000-0000-0000-0000-000000000000&truncate=false&type=general\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/spans?exclude=string&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&trace_id=00000000-0000-0000-0000-000000000000&truncate=false&type=general'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/spans?exclude=string&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&trace_id=00000000-0000-0000-0000-000000000000&truncate=false&type=general\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/spans?exclude=string&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&trace_id=00000000-0000-0000-0000-000000000000&truncate=false&type=general\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans?exclude=string&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&trace_id=00000000-0000-0000-0000-000000000000&truncate=false&type=general', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans?exclude=string&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&trace_id=00000000-0000-0000-0000-000000000000&truncate=false&type=general', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/spans?exclude=string&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&trace_id=00000000-0000-0000-0000-000000000000&truncate=false&type=general\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/spans?exclude=string&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&trace_id=00000000-0000-0000-0000-000000000000&truncate=false&type=general\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/spans?exclude=string&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&trace_id=00000000-0000-0000-0000-000000000000&truncate=false&type=general\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Create span","operationId":"createSpan","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Span_Write"}}}},"responses":{"201":{"description":"Created","headers":{"Location":{"example":"${basePath}/v1/private/spans/{spanId}","required":true,"schema":{"type":"string"},"style":"simple"}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Conflict"}},"summary":"Create span","tags":["Spans"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/spans\");\nrequest.Content = new StringContent(\"{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"total_estimated_cost_version\\\":\\\"string\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/spans' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"model\":\"string\",\"name\":\"string\",\"output\":{},\"parent_span_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"provider\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"total_estimated_cost\":0,\"total_estimated_cost_version\":\"string\",\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"ttft\":0,\"type\":\"general\",\"usage\":{\"additionalProp1\":0}}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"model\":\"string\",\"name\":\"string\",\"output\":{},\"parent_span_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"provider\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"total_estimated_cost\":0,\"total_estimated_cost_version\":\"string\",\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"ttft\":0,\"type\":\"general\",\"usage\":{\"additionalProp1\":0}}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/spans\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/spans\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"total_estimated_cost_version\\\":\\\"string\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"model\":\"string\",\"name\":\"string\",\"output\":{},\"parent_span_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"provider\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"total_estimated_cost\":0,\"total_estimated_cost_version\":\"string\",\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"ttft\":0,\"type\":\"general\",\"usage\":{\"additionalProp1\":0}}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"total_estimated_cost_version\\\":\\\"string\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/spans\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"total_estimated_cost_version\\\":\\\"string\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/spans\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"model\":\"string\",\"name\":\"string\",\"output\":{},\"parent_span_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"provider\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"total_estimated_cost\":0,\"total_estimated_cost_version\":\"string\",\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"ttft\":0,\"type\":\"general\",\"usage\":{\"additionalProp1\":0}}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/spans\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"total_estimated_cost_version\\\":\\\"string\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/spans/batch":{"patch":{"description":"Update multiple spans","operationId":"batchUpdateSpans","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpanBatchUpdate"}}}},"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Batch update spans","tags":["Spans"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/spans/batch\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"input\\\":{},\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/spans/batch' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":true,\"update\":{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"input\":{},\"metadata\":{},\"model\":\"string\",\"name\":\"string\",\"output\":{},\"parent_span_id\":\"00000000-0000-0000-0000-000000000000\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"provider\":\"string\",\"source\":\"evaluator\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"total_estimated_cost\":0,\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"ttft\":0,\"type\":\"general\",\"usage\":{\"additionalProp1\":0}}}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":true,\"update\":{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"input\":{},\"metadata\":{},\"model\":\"string\",\"name\":\"string\",\"output\":{},\"parent_span_id\":\"00000000-0000-0000-0000-000000000000\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"provider\":\"string\",\"source\":\"evaluator\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"total_estimated_cost\":0,\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"ttft\":0,\"type\":\"general\",\"usage\":{\"additionalProp1\":0}}}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/spans/batch\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/spans/batch\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"input\\\":{},\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/batch', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":true,\"update\":{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"input\":{},\"metadata\":{},\"model\":\"string\",\"name\":\"string\",\"output\":{},\"parent_span_id\":\"00000000-0000-0000-0000-000000000000\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"provider\":\"string\",\"source\":\"evaluator\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"total_estimated_cost\":0,\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"ttft\":0,\"type\":\"general\",\"usage\":{\"additionalProp1\":0}}}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/batch', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"input\\\":{},\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/spans/batch\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"input\\\":{},\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/spans/batch\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":true,\"update\":{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"input\":{},\"metadata\":{},\"model\":\"string\",\"name\":\"string\",\"output\":{},\"parent_span_id\":\"00000000-0000-0000-0000-000000000000\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"provider\":\"string\",\"source\":\"evaluator\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"total_estimated_cost\":0,\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"ttft\":0,\"type\":\"general\",\"usage\":{\"additionalProp1\":0}}}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/spans/batch\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"input\\\":{},\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Create spans","operationId":"createSpans","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpanBatch_Write"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Create spans","tags":["Spans"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/spans/batch\");\nrequest.Content = new StringContent(\"{\\\"spans\\\":[{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"total_estimated_cost_version\\\":\\\"string\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/spans/batch' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"spans\":[{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"model\":\"string\",\"name\":\"string\",\"output\":{},\"parent_span_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"provider\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"total_estimated_cost\":0,\"total_estimated_cost_version\":\"string\",\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"ttft\":0,\"type\":\"general\",\"usage\":{\"additionalProp1\":0}}]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"spans\":[{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"model\":\"string\",\"name\":\"string\",\"output\":{},\"parent_span_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"provider\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"total_estimated_cost\":0,\"total_estimated_cost_version\":\"string\",\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"ttft\":0,\"type\":\"general\",\"usage\":{\"additionalProp1\":0}}]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/spans/batch\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/spans/batch\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"spans\\\":[{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"total_estimated_cost_version\\\":\\\"string\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/batch', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"spans\":[{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"model\":\"string\",\"name\":\"string\",\"output\":{},\"parent_span_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"provider\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"total_estimated_cost\":0,\"total_estimated_cost_version\":\"string\",\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"ttft\":0,\"type\":\"general\",\"usage\":{\"additionalProp1\":0}}]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/batch', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"spans\\\":[{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"total_estimated_cost_version\\\":\\\"string\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/spans/batch\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"spans\\\":[{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"total_estimated_cost_version\\\":\\\"string\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/spans/batch\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"spans\":[{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"model\":\"string\",\"name\":\"string\",\"output\":{},\"parent_span_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"provider\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"total_estimated_cost\":0,\"total_estimated_cost_version\":\"string\",\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"ttft\":0,\"type\":\"general\",\"usage\":{\"additionalProp1\":0}}]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/spans/batch\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"spans\\\":[{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"total_estimated_cost_version\\\":\\\"string\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/spans/comments/delete":{"post":{"description":"Delete span comments","operationId":"deleteSpanComments","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchDelete"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Delete span comments","tags":["Spans"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/spans/comments/delete\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/spans/comments/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/spans/comments/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/spans/comments/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/comments/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/comments/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/spans/comments/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/spans/comments/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/spans/comments/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/spans/comments/{commentId}":{"patch":{"description":"Update span comment by id","operationId":"updateSpanComment","parameters":[{"in":"path","name":"commentId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}}},"responses":{"204":{"description":"No Content"},"404":{"description":"Not found"}},"summary":"Update span comment by id","tags":["Spans"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/spans/comments/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/spans/comments/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/spans/comments/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/spans/comments/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/comments/00000000-0000-0000-0000-000000000000', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/comments/00000000-0000-0000-0000-000000000000', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/spans/comments/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/spans/comments/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/spans/comments/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/spans/exists":{"get":{"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":[{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"project_name","schema":{"type":"string"}},{"in":"query","name":"source","schema":{"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.","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExistenceResponse"}}},"description":"Span existence"}},"summary":"Check whether a project has spans","tags":["Spans"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/spans/exists?project_id=00000000-0000-0000-0000-000000000000&project_name=string&source=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/spans/exists?project_id=00000000-0000-0000-0000-000000000000&project_name=string&source=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/spans/exists?project_id=00000000-0000-0000-0000-000000000000&project_name=string&source=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/spans/exists?project_id=00000000-0000-0000-0000-000000000000&project_name=string&source=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/exists?project_id=00000000-0000-0000-0000-000000000000&project_name=string&source=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/exists?project_id=00000000-0000-0000-0000-000000000000&project_name=string&source=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/spans/exists?project_id=00000000-0000-0000-0000-000000000000&project_name=string&source=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/spans/exists?project_id=00000000-0000-0000-0000-000000000000&project_name=string&source=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/spans/exists?project_id=00000000-0000-0000-0000-000000000000&project_name=string&source=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/spans/feedback-scores":{"put":{"description":"Batch feedback scoring for spans","operationId":"scoreBatchOfSpans","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackScoreBatch"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Batch feedback scoring for spans","tags":["Spans"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/spans/feedback-scores\");\nrequest.Content = new StringContent(\"{\\\"scores\\\":[{\\\"author\\\":\\\"string\\\",\\\"category_name\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/spans/feedback-scores' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"scores\":[{\"author\":\"string\",\"category_name\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"value\":0}]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"scores\":[{\"author\":\"string\",\"category_name\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"value\":0}]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/spans/feedback-scores\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/spans/feedback-scores\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{\\\"scores\\\":[{\\\"author\\\":\\\"string\\\",\\\"category_name\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/feedback-scores', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"scores\":[{\"author\":\"string\",\"category_name\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"value\":0}]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/feedback-scores', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"scores\\\":[{\\\"author\\\":\\\"string\\\",\\\"category_name\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/spans/feedback-scores\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"scores\\\":[{\\\"author\\\":\\\"string\\\",\\\"category_name\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/spans/feedback-scores\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"scores\":[{\"author\":\"string\",\"category_name\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"value\":0}]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/spans/feedback-scores\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"scores\\\":[{\\\"author\\\":\\\"string\\\",\\\"category_name\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/spans/feedback-scores/names":{"get":{"description":"Find Feedback Score names","operationId":"findFeedbackScoreNames_1","parameters":[{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"type","schema":{"enum":["general","tool","llm","guardrail"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackScoreNames_Public"}}},"description":"Feedback Scores resource"}},"summary":"Find Feedback Score names","tags":["Spans"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/spans/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000&type=general\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/spans/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000&type=general'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/spans/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000&type=general\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/spans/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000&type=general\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000&type=general', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000&type=general', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/spans/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000&type=general\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/spans/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000&type=general\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/spans/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000&type=general\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/spans/search":{"post":{"description":"Search spans","operationId":"searchSpans","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpanSearchStreamRequest_Public"}}}},"responses":{"200":{"content":{"application/octet-stream":{"schema":{"items":{"anyOf":[{"$ref":"#/components/schemas/Span_Public"},{"$ref":"#/components/schemas/ErrorMessage_Public"}],"type":"string"},"maxItems":2000,"type":"array"}}},"description":"Spans stream or error during process"},"400":{"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Bad Request"}},"summary":"Search spans","tags":["Spans"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/spans/search\");\nrequest.Content = new StringContent(\"{\\\"exclude\\\":[\\\"comments\\\"],\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"from_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":500,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"to_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"truncate\\\":true,\\\"type\\\":\\\"general\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/spans/search' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"exclude\":[\"comments\"],\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"from_time\":\"2026-06-09T00:00:00Z\",\"last_retrieved_id\":\"00000000-0000-0000-0000-000000000000\",\"limit\":500,\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"to_time\":\"2026-06-09T00:00:00Z\",\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"truncate\":true,\"type\":\"general\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"exclude\":[\"comments\"],\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"from_time\":\"2026-06-09T00:00:00Z\",\"last_retrieved_id\":\"00000000-0000-0000-0000-000000000000\",\"limit\":500,\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"to_time\":\"2026-06-09T00:00:00Z\",\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"truncate\":true,\"type\":\"general\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/spans/search\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/spans/search\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"exclude\\\":[\\\"comments\\\"],\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"from_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":500,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"to_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"truncate\\\":true,\\\"type\\\":\\\"general\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/search', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"exclude\":[\"comments\"],\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"from_time\":\"2026-06-09T00:00:00Z\",\"last_retrieved_id\":\"00000000-0000-0000-0000-000000000000\",\"limit\":500,\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"to_time\":\"2026-06-09T00:00:00Z\",\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"truncate\":true,\"type\":\"general\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/search', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"exclude\\\":[\\\"comments\\\"],\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"from_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":500,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"to_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"truncate\\\":true,\\\"type\\\":\\\"general\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/spans/search\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"exclude\\\":[\\\"comments\\\"],\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"from_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":500,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"to_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"truncate\\\":true,\\\"type\\\":\\\"general\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/spans/search\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"exclude\":[\"comments\"],\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"from_time\":\"2026-06-09T00:00:00Z\",\"last_retrieved_id\":\"00000000-0000-0000-0000-000000000000\",\"limit\":500,\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"to_time\":\"2026-06-09T00:00:00Z\",\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"truncate\":true,\"type\":\"general\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/spans/search\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"exclude\\\":[\\\"comments\\\"],\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"from_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":500,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"to_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"truncate\\\":true,\\\"type\\\":\\\"general\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/spans/stats":{"get":{"description":"Get span stats","operationId":"getSpanStats","parameters":[{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"project_name","schema":{"type":"string"}},{"in":"query","name":"trace_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"type","schema":{"enum":["general","tool","llm","guardrail"],"type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}},{"in":"query","name":"search","schema":{"description":"Full-text search across span fields","type":"string"}},{"in":"query","name":"from_time","schema":{"description":"Filter spans created from this time (ISO-8601 format).","format":"date-time","type":"string"}},{"in":"query","name":"to_time","schema":{"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","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectStats_Public"}}},"description":"Span stats resource"}},"summary":"Get span stats","tags":["Spans"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/spans/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z&trace_id=00000000-0000-0000-0000-000000000000&type=general\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/spans/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z&trace_id=00000000-0000-0000-0000-000000000000&type=general'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/spans/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z&trace_id=00000000-0000-0000-0000-000000000000&type=general\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/spans/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z&trace_id=00000000-0000-0000-0000-000000000000&type=general\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z&trace_id=00000000-0000-0000-0000-000000000000&type=general', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z&trace_id=00000000-0000-0000-0000-000000000000&type=general', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/spans/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z&trace_id=00000000-0000-0000-0000-000000000000&type=general\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/spans/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z&trace_id=00000000-0000-0000-0000-000000000000&type=general\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/spans/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z&trace_id=00000000-0000-0000-0000-000000000000&type=general\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/spans/{id}":{"delete":{"description":"Delete span by id","operationId":"deleteSpanById","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content"},"501":{"description":"Not implemented"}},"summary":"Delete span by id","tags":["Spans"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Delete, \"http://localhost:5173/api/v1/private/spans/string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X DELETE 'http://localhost:5173/api/v1/private/spans/string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"DELETE\", \"http://localhost:5173/api/v1/private/spans/string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/spans/string\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/string', { method: 'DELETE' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/string', { method: 'DELETE' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/spans/string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"DELETE\", \"http://localhost:5173/api/v1/private/spans/string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/spans/string\")\nrequest = Net::HTTPGenericRequest.new(\"DELETE\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"get":{"description":"Get span by id","operationId":"getSpanById","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"strip_attachments","schema":{"default":false,"description":"If true, returns attachment references like [file.png]; if false, downloads and reinjects attachment content from S3 (default: false for backward compatibility)","type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Span_Public"}}},"description":"Span resource"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Span_Public"}}},"description":"Not found"}},"summary":"Get span by id","tags":["Spans"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000?strip_attachments=false\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000?strip_attachments=false'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000?strip_attachments=false\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000?strip_attachments=false\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000?strip_attachments=false', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000?strip_attachments=false', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000?strip_attachments=false\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000?strip_attachments=false\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000?strip_attachments=false\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"patch":{"description":"Update span by id","operationId":"updateSpan","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpanUpdate"}}}},"responses":{"204":{"description":"No Content"},"404":{"description":"Not found"}},"summary":"Update span by id","tags":["Spans"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"input\\\":{},\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"input\":{},\"metadata\":{},\"model\":\"string\",\"name\":\"string\",\"output\":{},\"parent_span_id\":\"00000000-0000-0000-0000-000000000000\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"provider\":\"string\",\"source\":\"evaluator\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"total_estimated_cost\":0,\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"ttft\":0,\"type\":\"general\",\"usage\":{\"additionalProp1\":0}}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"input\":{},\"metadata\":{},\"model\":\"string\",\"name\":\"string\",\"output\":{},\"parent_span_id\":\"00000000-0000-0000-0000-000000000000\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"provider\":\"string\",\"source\":\"evaluator\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"total_estimated_cost\":0,\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"ttft\":0,\"type\":\"general\",\"usage\":{\"additionalProp1\":0}}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"input\\\":{},\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"input\":{},\"metadata\":{},\"model\":\"string\",\"name\":\"string\",\"output\":{},\"parent_span_id\":\"00000000-0000-0000-0000-000000000000\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"provider\":\"string\",\"source\":\"evaluator\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"total_estimated_cost\":0,\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"ttft\":0,\"type\":\"general\",\"usage\":{\"additionalProp1\":0}}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"input\\\":{},\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"input\\\":{},\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"input\":{},\"metadata\":{},\"model\":\"string\",\"name\":\"string\",\"output\":{},\"parent_span_id\":\"00000000-0000-0000-0000-000000000000\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"provider\":\"string\",\"source\":\"evaluator\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"total_estimated_cost\":0,\"trace_id\":\"00000000-0000-0000-0000-000000000000\",\"ttft\":0,\"type\":\"general\",\"usage\":{\"additionalProp1\":0}}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"input\\\":{},\\\"metadata\\\":{},\\\"model\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"parent_span_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"provider\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"total_estimated_cost\\\":0,\\\"trace_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"ttft\\\":0,\\\"type\\\":\\\"general\\\",\\\"usage\\\":{\\\"additionalProp1\\\":0}}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/spans/{id}/comments":{"post":{"description":"Add span comment","operationId":"addSpanComment","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}}},"responses":{"201":{"description":"Created","headers":{"Location":{"example":"${basePath}/v1/private/spans/{spanId}/comments/{commentId}","required":true,"schema":{"type":"string"},"style":"simple"}}}},"summary":"Add span comment","tags":["Spans"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/comments\");\nrequest.Content = new StringContent(\"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/comments' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/comments\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/comments\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/comments', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/comments', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/comments\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/comments\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/comments\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/spans/{id}/feedback-scores":{"put":{"description":"Add span feedback score","operationId":"addSpanFeedbackScore","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackScore"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Add span feedback score","tags":["Spans"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/feedback-scores\");\nrequest.Content = new StringContent(\"{\\\"category_name\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/feedback-scores' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"category_name\":\"string\",\"name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"value\":0}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"category_name\":\"string\",\"name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"value\":0}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/feedback-scores\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/feedback-scores\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{\\\"category_name\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/feedback-scores', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"category_name\":\"string\",\"name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"value\":0}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/feedback-scores', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"category_name\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/feedback-scores\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"category_name\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/feedback-scores\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"category_name\":\"string\",\"name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"value\":0}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/feedback-scores\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"category_name\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/spans/{id}/feedback-scores/delete":{"post":{"description":"Delete span feedback score","operationId":"deleteSpanFeedbackScore","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteFeedbackScore"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Delete span feedback score","tags":["Spans"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/feedback-scores/delete\");\nrequest.Content = new StringContent(\"{\\\"author\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/feedback-scores/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"author\":\"string\",\"name\":\"string\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"author\":\"string\",\"name\":\"string\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/feedback-scores/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/feedback-scores/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"author\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/feedback-scores/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"author\":\"string\",\"name\":\"string\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/feedback-scores/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"author\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/feedback-scores/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"author\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/feedback-scores/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"author\":\"string\",\"name\":\"string\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/feedback-scores/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"author\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/spans/{spanId}/comments/{commentId}":{"get":{"description":"Get span comment","operationId":"getSpanComment","parameters":[{"in":"path","name":"commentId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"path","name":"spanId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}},"description":"Comment resource"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"}},"summary":"Get span comment","tags":["Spans"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/spans/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/toggles":{"get":{"description":"Get Service Toggles","operationId":"getServiceToggles","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceTogglesConfig"}}},"description":"Service Toggles"}},"summary":"Get Service Toggles","tags":["Service Toggles"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/toggles\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/toggles'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/toggles\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/toggles\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/toggles', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/toggles', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/toggles\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/toggles\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/toggles\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces":{"get":{"description":"Get traces by project_name or project_id","operationId":"getTracesByProject","parameters":[{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"project_name","schema":{"type":"string"}},{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}},{"in":"query","name":"truncate","schema":{"default":false,"description":"Truncate input, output and metadata to slim payloads","type":"boolean"}},{"in":"query","name":"strip_attachments","schema":{"default":false,"description":"If true, returns attachment references like [file.png]; if false, downloads and reinjects stripped attachments","type":"boolean"}},{"in":"query","name":"sorting","schema":{"type":"string"}},{"in":"query","name":"exclude","schema":{"type":"string"}},{"in":"query","name":"search","schema":{"description":"Full-text search across trace fields","type":"string"}},{"in":"query","name":"from_time","schema":{"description":"Filter traces created from this time (ISO-8601 format).","format":"date-time","type":"string"}},{"in":"query","name":"to_time","schema":{"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","type":"string"}},{"in":"query","name":"annotation_queue_id","schema":{"description":"Filter traces belonging to this annotation queue and scope feedback scores/comments to it","format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TracePage_Public"}}},"description":"Trace resource"}},"summary":"Get traces by project_name or project_id","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/traces?annotation_queue_id=00000000-0000-0000-0000-000000000000&exclude=string&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&truncate=false\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/traces?annotation_queue_id=00000000-0000-0000-0000-000000000000&exclude=string&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&truncate=false'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/traces?annotation_queue_id=00000000-0000-0000-0000-000000000000&exclude=string&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&truncate=false\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces?annotation_queue_id=00000000-0000-0000-0000-000000000000&exclude=string&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&truncate=false\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces?annotation_queue_id=00000000-0000-0000-0000-000000000000&exclude=string&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&truncate=false', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces?annotation_queue_id=00000000-0000-0000-0000-000000000000&exclude=string&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&truncate=false', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces?annotation_queue_id=00000000-0000-0000-0000-000000000000&exclude=string&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&truncate=false\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/traces?annotation_queue_id=00000000-0000-0000-0000-000000000000&exclude=string&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&truncate=false\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces?annotation_queue_id=00000000-0000-0000-0000-000000000000&exclude=string&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&truncate=false\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Get trace","operationId":"createTrace","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Trace_Write"}}}},"responses":{"201":{"description":"Created","headers":{"Location":{"example":"${basePath}/v1/private/traces/{traceId}","required":true,"schema":{"type":"string"},"style":"simple"}}}},"summary":"Create trace","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/traces\");\nrequest.Content = new StringContent(\"{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/traces' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"name\":\"string\",\"output\":{},\"project_name\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"thread_id\":\"string\",\"ttft\":0}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"name\":\"string\",\"output\":{},\"project_name\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"thread_id\":\"string\",\"ttft\":0}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/traces\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"name\":\"string\",\"output\":{},\"project_name\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"thread_id\":\"string\",\"ttft\":0}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/traces\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"name\":\"string\",\"output\":{},\"project_name\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"thread_id\":\"string\",\"ttft\":0}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/batch":{"patch":{"description":"Update multiple traces","operationId":"batchUpdateTraces","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraceBatchUpdate"}}}},"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Batch update traces","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/traces/batch\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"input\\\":{},\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/traces/batch' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":true,\"update\":{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"input\":{},\"metadata\":{},\"name\":\"string\",\"output\":{},\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"source\":\"evaluator\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"thread_id\":\"string\",\"ttft\":0}}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":true,\"update\":{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"input\":{},\"metadata\":{},\"name\":\"string\",\"output\":{},\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"source\":\"evaluator\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"thread_id\":\"string\",\"ttft\":0}}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/traces/batch\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/batch\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"input\\\":{},\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/batch', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":true,\"update\":{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"input\":{},\"metadata\":{},\"name\":\"string\",\"output\":{},\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"source\":\"evaluator\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"thread_id\":\"string\",\"ttft\":0}}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/batch', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"input\\\":{},\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/batch\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"input\\\":{},\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/traces/batch\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":true,\"update\":{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"input\":{},\"metadata\":{},\"name\":\"string\",\"output\":{},\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"source\":\"evaluator\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"thread_id\":\"string\",\"ttft\":0}}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/batch\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"input\\\":{},\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Create traces","operationId":"createTraces","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraceBatch_Write"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Create traces","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/traces/batch\");\nrequest.Content = new StringContent(\"{\\\"traces\\\":[{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/traces/batch' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"traces\":[{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"name\":\"string\",\"output\":{},\"project_name\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"thread_id\":\"string\",\"ttft\":0}]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"traces\":[{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"name\":\"string\",\"output\":{},\"project_name\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"thread_id\":\"string\",\"ttft\":0}]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/traces/batch\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/batch\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"traces\\\":[{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/batch', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"traces\":[{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"name\":\"string\",\"output\":{},\"project_name\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"thread_id\":\"string\",\"ttft\":0}]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/batch', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"traces\\\":[{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/batch\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"traces\\\":[{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/traces/batch\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"traces\":[{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"id\":\"00000000-0000-0000-0000-000000000000\",\"input\":{},\"last_updated_at\":\"2026-06-09T00:00:00Z\",\"metadata\":{},\"name\":\"string\",\"output\":{},\"project_name\":\"string\",\"source\":\"evaluator\",\"start_time\":\"2026-06-09T00:00:00Z\",\"tags\":[\"string\"],\"thread_id\":\"string\",\"ttft\":0}]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/batch\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"traces\\\":[{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"input\\\":{},\\\"last_updated_at\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"start_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"tags\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/comments/delete":{"post":{"description":"Delete trace comments","operationId":"deleteTraceComments","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchDelete"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Delete trace comments","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/traces/comments/delete\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/traces/comments/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/traces/comments/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/comments/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/comments/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/comments/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/comments/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/traces/comments/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/comments/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/comments/{commentId}":{"patch":{"description":"Update trace comment by id","operationId":"updateTraceComment","parameters":[{"in":"path","name":"commentId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}}},"responses":{"204":{"description":"No Content"},"404":{"description":"Not found"}},"summary":"Update trace comment by id","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/traces/comments/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/traces/comments/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/traces/comments/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/comments/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/comments/00000000-0000-0000-0000-000000000000', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/comments/00000000-0000-0000-0000-000000000000', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/comments/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/traces/comments/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/comments/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/delete":{"post":{"description":"Delete traces","operationId":"deleteTraces","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchDeleteByProject"}}}},"responses":{"204":{"description":"No Content"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unprocessable Content"}},"summary":"Delete traces","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/traces/delete\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/traces/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"project_id\":\"00000000-0000-0000-0000-000000000000\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"project_id\":\"00000000-0000-0000-0000-000000000000\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/traces/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"project_id\":\"00000000-0000-0000-0000-000000000000\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/traces/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"project_id\":\"00000000-0000-0000-0000-000000000000\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/exists":{"get":{"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":[{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"project_name","schema":{"type":"string"}},{"in":"query","name":"source","schema":{"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.","type":"string"}},{"in":"query","name":"thread_only","schema":{"default":false,"description":"When true, only considers traces that belong to a thread (thread_id is set) — used by the Threads empty state.","type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExistenceResponse"}}},"description":"Trace existence"}},"summary":"Check whether a project has traces","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/traces/exists?project_id=00000000-0000-0000-0000-000000000000&project_name=string&source=string&thread_only=false\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/traces/exists?project_id=00000000-0000-0000-0000-000000000000&project_name=string&source=string&thread_only=false'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/traces/exists?project_id=00000000-0000-0000-0000-000000000000&project_name=string&source=string&thread_only=false\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/exists?project_id=00000000-0000-0000-0000-000000000000&project_name=string&source=string&thread_only=false\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/exists?project_id=00000000-0000-0000-0000-000000000000&project_name=string&source=string&thread_only=false', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/exists?project_id=00000000-0000-0000-0000-000000000000&project_name=string&source=string&thread_only=false', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/exists?project_id=00000000-0000-0000-0000-000000000000&project_name=string&source=string&thread_only=false\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/traces/exists?project_id=00000000-0000-0000-0000-000000000000&project_name=string&source=string&thread_only=false\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/exists?project_id=00000000-0000-0000-0000-000000000000&project_name=string&source=string&thread_only=false\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/feedback-scores":{"put":{"description":"Batch feedback scoring for traces","operationId":"scoreBatchOfTraces","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackScoreBatch"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Batch feedback scoring for traces","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/traces/feedback-scores\");\nrequest.Content = new StringContent(\"{\\\"scores\\\":[{\\\"author\\\":\\\"string\\\",\\\"category_name\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/traces/feedback-scores' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"scores\":[{\"author\":\"string\",\"category_name\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"value\":0}]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"scores\":[{\"author\":\"string\",\"category_name\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"value\":0}]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/traces/feedback-scores\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/feedback-scores\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{\\\"scores\\\":[{\\\"author\\\":\\\"string\\\",\\\"category_name\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/feedback-scores', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"scores\":[{\"author\":\"string\",\"category_name\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"value\":0}]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/feedback-scores', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"scores\\\":[{\\\"author\\\":\\\"string\\\",\\\"category_name\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/feedback-scores\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"scores\\\":[{\\\"author\\\":\\\"string\\\",\\\"category_name\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/traces/feedback-scores\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"scores\":[{\"author\":\"string\",\"category_name\":\"string\",\"id\":\"00000000-0000-0000-0000-000000000000\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"value\":0}]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/feedback-scores\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"scores\\\":[{\\\"author\\\":\\\"string\\\",\\\"category_name\\\":\\\"string\\\",\\\"id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/feedback-scores/names":{"get":{"description":"Find Feedback Score names","operationId":"findFeedbackScoreNames_2","parameters":[{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackScoreNames_Public"}}},"description":"Feedback Scores resource"}},"summary":"Find Feedback Score names","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/traces/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/traces/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/traces/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/traces/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/search":{"post":{"description":"Search traces","operationId":"searchTraces","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraceSearchStreamRequest_Public"}}}},"responses":{"200":{"content":{"application/octet-stream":{"schema":{"items":{"anyOf":[{"$ref":"#/components/schemas/Trace_Public"},{"$ref":"#/components/schemas/ErrorMessage_Public"}],"type":"string"},"maxItems":2000,"type":"array"}}},"description":"Traces stream or error during process"},"400":{"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Bad Request"},"401":{"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/ErrorMessage_Public"}}},"description":"Unauthorized"}},"summary":"Search traces","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/traces/search\");\nrequest.Content = new StringContent(\"{\\\"exclude\\\":[\\\"comments\\\"],\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"from_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":500,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"strip_attachments\\\":false,\\\"to_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"truncate\\\":true}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/traces/search' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"exclude\":[\"comments\"],\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"from_time\":\"2026-06-09T00:00:00Z\",\"last_retrieved_id\":\"00000000-0000-0000-0000-000000000000\",\"limit\":500,\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"strip_attachments\":false,\"to_time\":\"2026-06-09T00:00:00Z\",\"truncate\":true}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"exclude\":[\"comments\"],\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"from_time\":\"2026-06-09T00:00:00Z\",\"last_retrieved_id\":\"00000000-0000-0000-0000-000000000000\",\"limit\":500,\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"strip_attachments\":false,\"to_time\":\"2026-06-09T00:00:00Z\",\"truncate\":true}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/traces/search\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/search\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"exclude\\\":[\\\"comments\\\"],\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"from_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":500,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"strip_attachments\\\":false,\\\"to_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"truncate\\\":true}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/search', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"exclude\":[\"comments\"],\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"from_time\":\"2026-06-09T00:00:00Z\",\"last_retrieved_id\":\"00000000-0000-0000-0000-000000000000\",\"limit\":500,\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"strip_attachments\":false,\"to_time\":\"2026-06-09T00:00:00Z\",\"truncate\":true}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/search', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"exclude\\\":[\\\"comments\\\"],\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"from_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":500,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"strip_attachments\\\":false,\\\"to_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"truncate\\\":true}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/search\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"exclude\\\":[\\\"comments\\\"],\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"from_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":500,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"strip_attachments\\\":false,\\\"to_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"truncate\\\":true}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/traces/search\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"exclude\":[\"comments\"],\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"from_time\":\"2026-06-09T00:00:00Z\",\"last_retrieved_id\":\"00000000-0000-0000-0000-000000000000\",\"limit\":500,\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"strip_attachments\":false,\"to_time\":\"2026-06-09T00:00:00Z\",\"truncate\":true}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/search\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"exclude\\\":[\\\"comments\\\"],\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"from_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"last_retrieved_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":500,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"strip_attachments\\\":false,\\\"to_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"truncate\\\":true}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/stats":{"get":{"description":"Get trace stats","operationId":"getTraceStats","parameters":[{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"project_name","schema":{"type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}},{"in":"query","name":"search","schema":{"description":"Full-text search across trace fields","type":"string"}},{"in":"query","name":"from_time","schema":{"description":"Filter traces created from this time (ISO-8601 format).","format":"date-time","type":"string"}},{"in":"query","name":"to_time","schema":{"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","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectStats_Public"}}},"description":"Trace stats resource"}},"summary":"Get trace stats","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/traces/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/traces/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/traces/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/traces/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/threads":{"get":{"description":"Get trace threads","operationId":"getTraceThreads","parameters":[{"in":"query","name":"page","schema":{"default":1,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"size","schema":{"default":10,"format":"int32","minimum":1,"type":"integer"}},{"in":"query","name":"project_name","schema":{"type":"string"}},{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"truncate","schema":{"default":false,"description":"Truncate input, output and metadata to slim payloads","type":"boolean"}},{"in":"query","name":"strip_attachments","schema":{"default":false,"description":"If true, returns attachment references like [file.png]; if false, downloads and reinjects stripped attachments","type":"boolean"}},{"in":"query","name":"filters","schema":{"type":"string"}},{"in":"query","name":"sorting","schema":{"type":"string"}},{"in":"query","name":"search","schema":{"description":"Full-text search across thread fields","type":"string"}},{"in":"query","name":"from_time","schema":{"description":"Filter trace threads created from this time (ISO-8601 format).","format":"date-time","type":"string"}},{"in":"query","name":"to_time","schema":{"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","type":"string"}},{"in":"query","name":"annotation_queue_id","schema":{"description":"Filter threads belonging to this annotation queue and scope feedback scores/comments to it","format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraceThreadPage"}}},"description":"Trace threads resource"}},"summary":"Get trace threads","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/traces/threads?annotation_queue_id=00000000-0000-0000-0000-000000000000&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&truncate=false\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/traces/threads?annotation_queue_id=00000000-0000-0000-0000-000000000000&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&truncate=false'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/traces/threads?annotation_queue_id=00000000-0000-0000-0000-000000000000&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&truncate=false\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/threads?annotation_queue_id=00000000-0000-0000-0000-000000000000&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&truncate=false\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads?annotation_queue_id=00000000-0000-0000-0000-000000000000&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&truncate=false', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads?annotation_queue_id=00000000-0000-0000-0000-000000000000&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&truncate=false', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/threads?annotation_queue_id=00000000-0000-0000-0000-000000000000&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&truncate=false\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/traces/threads?annotation_queue_id=00000000-0000-0000-0000-000000000000&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&truncate=false\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/threads?annotation_queue_id=00000000-0000-0000-0000-000000000000&filters=string&from_time=2026-06-09T00%3A00%3A00Z&page=1&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&size=10&sorting=string&strip_attachments=false&to_time=2026-06-09T00%3A00%3A00Z&truncate=false\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/threads/batch":{"patch":{"description":"Update multiple threads","operationId":"batchUpdateThreads","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraceThreadBatchUpdate"}}}},"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Batch update threads","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/traces/threads/batch\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"]}}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/traces/threads/batch' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":true,\"update\":{\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"]}}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":true,\"update\":{\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"]}}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/traces/threads/batch\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/threads/batch\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"]}}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/batch', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":true,\"update\":{\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"]}}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/batch', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"]}}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/threads/batch\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"]}}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/traces/threads/batch\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"],\"merge_tags\":true,\"update\":{\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"]}}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/threads/batch\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"merge_tags\\\":true,\\\"update\\\":{\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"]}}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/threads/close":{"put":{"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":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"}},"summary":"Close trace thread(s)","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/traces/threads/close\");\nrequest.Content = new StringContent(\"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"thread_id\\\":\\\"string\\\",\\\"thread_ids\\\":[\\\"string\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/traces/threads/close' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"thread_id\":\"string\",\"thread_ids\":[\"string\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"thread_id\":\"string\",\"thread_ids\":[\"string\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/traces/threads/close\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/threads/close\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"thread_id\\\":\\\"string\\\",\\\"thread_ids\\\":[\\\"string\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/close', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"thread_id\":\"string\",\"thread_ids\":[\"string\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/close', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"thread_id\\\":\\\"string\\\",\\\"thread_ids\\\":[\\\"string\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/threads/close\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"thread_id\\\":\\\"string\\\",\\\"thread_ids\\\":[\\\"string\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/traces/threads/close\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"thread_id\":\"string\",\"thread_ids\":[\"string\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/threads/close\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"thread_id\\\":\\\"string\\\",\\\"thread_ids\\\":[\\\"string\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/threads/comments/delete":{"post":{"description":"Delete thread comments","operationId":"deleteThreadComments","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchDelete"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Delete thread comments","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/traces/threads/comments/delete\");\nrequest.Content = new StringContent(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/traces/threads/comments/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/traces/threads/comments/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/threads/comments/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/comments/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/comments/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/threads/comments/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/traces/threads/comments/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/threads/comments/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/threads/comments/{commentId}":{"patch":{"description":"Update thread comment by id","operationId":"updateThreadComment","parameters":[{"in":"path","name":"commentId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}}},"responses":{"204":{"description":"No Content"},"404":{"description":"Not found"}},"summary":"Update thread comment by id","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/traces/threads/comments/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/traces/threads/comments/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/traces/threads/comments/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/threads/comments/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/comments/00000000-0000-0000-0000-000000000000', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/comments/00000000-0000-0000-0000-000000000000', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/threads/comments/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/traces/threads/comments/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/threads/comments/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/threads/delete":{"post":{"description":"Delete trace threads","operationId":"deleteTraceThreads","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteTraceThreads"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Delete trace threads","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/traces/threads/delete\");\nrequest.Content = new StringContent(\"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"thread_ids\\\":[\\\"string\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/traces/threads/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"thread_ids\":[\"string\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"thread_ids\":[\"string\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/traces/threads/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/threads/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"thread_ids\\\":[\\\"string\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"thread_ids\":[\"string\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"thread_ids\\\":[\\\"string\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/threads/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"thread_ids\\\":[\\\"string\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/traces/threads/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"thread_ids\":[\"string\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/threads/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"thread_ids\\\":[\\\"string\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/threads/feedback-scores":{"put":{"description":"Batch feedback scoring for threads","operationId":"scoreBatchOfThreads","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackScoreBatchThread"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Batch feedback scoring for threads","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/traces/threads/feedback-scores\");\nrequest.Content = new StringContent(\"{\\\"scores\\\":[{\\\"author\\\":\\\"string\\\",\\\"category_name\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"thread_id\\\":\\\"string\\\",\\\"value\\\":0}]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/traces/threads/feedback-scores' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"scores\":[{\"author\":\"string\",\"category_name\":\"string\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"thread_id\":\"string\",\"value\":0}]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"scores\":[{\"author\":\"string\",\"category_name\":\"string\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"thread_id\":\"string\",\"value\":0}]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/traces/threads/feedback-scores\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/threads/feedback-scores\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{\\\"scores\\\":[{\\\"author\\\":\\\"string\\\",\\\"category_name\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"thread_id\\\":\\\"string\\\",\\\"value\\\":0}]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/feedback-scores', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"scores\":[{\"author\":\"string\",\"category_name\":\"string\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"thread_id\":\"string\",\"value\":0}]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/feedback-scores', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"scores\\\":[{\\\"author\\\":\\\"string\\\",\\\"category_name\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"thread_id\\\":\\\"string\\\",\\\"value\\\":0}]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/threads/feedback-scores\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"scores\\\":[{\\\"author\\\":\\\"string\\\",\\\"category_name\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"thread_id\\\":\\\"string\\\",\\\"value\\\":0}]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/traces/threads/feedback-scores\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"scores\":[{\"author\":\"string\",\"category_name\":\"string\",\"name\":\"string\",\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"thread_id\":\"string\",\"value\":0}]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/threads/feedback-scores\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"scores\\\":[{\\\"author\\\":\\\"string\\\",\\\"category_name\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"thread_id\\\":\\\"string\\\",\\\"value\\\":0}]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/threads/feedback-scores/delete":{"post":{"description":"Delete thread feedback scores","operationId":"deleteThreadFeedbackScores","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteThreadFeedbackScores"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Delete thread feedback scores","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/traces/threads/feedback-scores/delete\");\nrequest.Content = new StringContent(\"{\\\"author\\\":\\\"string\\\",\\\"names\\\":[\\\"string\\\"],\\\"project_name\\\":\\\"string\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"thread_id\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/traces/threads/feedback-scores/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"author\":\"string\",\"names\":[\"string\"],\"project_name\":\"string\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"thread_id\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"author\":\"string\",\"names\":[\"string\"],\"project_name\":\"string\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"thread_id\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/traces/threads/feedback-scores/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/threads/feedback-scores/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"author\\\":\\\"string\\\",\\\"names\\\":[\\\"string\\\"],\\\"project_name\\\":\\\"string\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"thread_id\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/feedback-scores/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"author\":\"string\",\"names\":[\"string\"],\"project_name\":\"string\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"thread_id\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/feedback-scores/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"author\\\":\\\"string\\\",\\\"names\\\":[\\\"string\\\"],\\\"project_name\\\":\\\"string\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"thread_id\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/threads/feedback-scores/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"author\\\":\\\"string\\\",\\\"names\\\":[\\\"string\\\"],\\\"project_name\\\":\\\"string\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"thread_id\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/traces/threads/feedback-scores/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"author\":\"string\",\"names\":[\"string\"],\"project_name\":\"string\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"thread_id\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/threads/feedback-scores/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"author\\\":\\\"string\\\",\\\"names\\\":[\\\"string\\\"],\\\"project_name\\\":\\\"string\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"thread_id\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/threads/feedback-scores/names":{"get":{"description":"Find Trace Threads Feedback Score names","operationId":"findTraceThreadsFeedbackScoreNames","parameters":[{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackScoreNames_Public"}}},"description":"Find Trace Threads Feedback Score names"}},"summary":"Find Trace Threads Feedback Score names","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/traces/threads/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/traces/threads/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/traces/threads/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/threads/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/threads/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/traces/threads/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/threads/feedback-scores/names?project_id=00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/threads/open":{"put":{"description":"Open trace thread","operationId":"openTraceThread","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraceThreadIdentifier"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Open trace thread","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/traces/threads/open\");\nrequest.Content = new StringContent(\"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"thread_id\\\":\\\"string\\\",\\\"truncate\\\":true}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/traces/threads/open' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"thread_id\":\"string\",\"truncate\":true}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"thread_id\":\"string\",\"truncate\":true}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/traces/threads/open\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/threads/open\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"thread_id\\\":\\\"string\\\",\\\"truncate\\\":true}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/open', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"thread_id\":\"string\",\"truncate\":true}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/open', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"thread_id\\\":\\\"string\\\",\\\"truncate\\\":true}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/threads/open\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"thread_id\\\":\\\"string\\\",\\\"truncate\\\":true}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/traces/threads/open\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"thread_id\":\"string\",\"truncate\":true}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/threads/open\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"thread_id\\\":\\\"string\\\",\\\"truncate\\\":true}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/threads/retrieve":{"post":{"description":"Get trace thread","operationId":"getTraceThread","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraceThreadIdentifier"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraceThread"}}},"description":"Trace thread resource"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"}},"summary":"Get trace thread","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/traces/threads/retrieve\");\nrequest.Content = new StringContent(\"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"thread_id\\\":\\\"string\\\",\\\"truncate\\\":true}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/traces/threads/retrieve' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"thread_id\":\"string\",\"truncate\":true}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"thread_id\":\"string\",\"truncate\":true}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/traces/threads/retrieve\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/threads/retrieve\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"thread_id\\\":\\\"string\\\",\\\"truncate\\\":true}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/retrieve', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"thread_id\":\"string\",\"truncate\":true}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/retrieve', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"thread_id\\\":\\\"string\\\",\\\"truncate\\\":true}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/threads/retrieve\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"thread_id\\\":\\\"string\\\",\\\"truncate\\\":true}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/traces/threads/retrieve\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"thread_id\":\"string\",\"truncate\":true}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/threads/retrieve\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"thread_id\\\":\\\"string\\\",\\\"truncate\\\":true}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/threads/search":{"post":{"description":"Search trace threads","operationId":"searchTraceThreads","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraceThreadSearchStreamRequest"}}}},"responses":{"200":{"content":{"application/octet-stream":{"schema":{"items":{"anyOf":[{"$ref":"#/components/schemas/TraceThread"},{"$ref":"#/components/schemas/ErrorMessage"}],"type":"string"},"maxItems":2000,"type":"array"}}},"description":"Trace threads stream or error during process"},"400":{"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Search trace threads","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/traces/threads/search\");\nrequest.Content = new StringContent(\"{\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"from_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"last_retrieved_thread_model_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":500,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"strip_attachments\\\":false,\\\"to_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"truncate\\\":true}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/traces/threads/search' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"from_time\":\"2026-06-09T00:00:00Z\",\"last_retrieved_thread_model_id\":\"00000000-0000-0000-0000-000000000000\",\"limit\":500,\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"strip_attachments\":false,\"to_time\":\"2026-06-09T00:00:00Z\",\"truncate\":true}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"from_time\":\"2026-06-09T00:00:00Z\",\"last_retrieved_thread_model_id\":\"00000000-0000-0000-0000-000000000000\",\"limit\":500,\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"strip_attachments\":false,\"to_time\":\"2026-06-09T00:00:00Z\",\"truncate\":true}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/traces/threads/search\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/threads/search\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"from_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"last_retrieved_thread_model_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":500,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"strip_attachments\\\":false,\\\"to_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"truncate\\\":true}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/search', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"from_time\":\"2026-06-09T00:00:00Z\",\"last_retrieved_thread_model_id\":\"00000000-0000-0000-0000-000000000000\",\"limit\":500,\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"strip_attachments\":false,\"to_time\":\"2026-06-09T00:00:00Z\",\"truncate\":true}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/search', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"from_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"last_retrieved_thread_model_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":500,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"strip_attachments\\\":false,\\\"to_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"truncate\\\":true}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/threads/search\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"from_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"last_retrieved_thread_model_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":500,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"strip_attachments\\\":false,\\\"to_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"truncate\\\":true}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/traces/threads/search\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"from_time\":\"2026-06-09T00:00:00Z\",\"last_retrieved_thread_model_id\":\"00000000-0000-0000-0000-000000000000\",\"limit\":500,\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"strip_attachments\":false,\"to_time\":\"2026-06-09T00:00:00Z\",\"truncate\":true}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/threads/search\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"from_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"last_retrieved_thread_model_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"limit\\\":500,\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"strip_attachments\\\":false,\\\"to_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"truncate\\\":true}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/threads/stats":{"get":{"description":"Get trace thread stats","operationId":"getTraceThreadStats","parameters":[{"in":"query","name":"project_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"project_name","schema":{"type":"string"}},{"in":"query","name":"filters","schema":{"type":"string"}},{"in":"query","name":"search","schema":{"description":"Full-text search across thread fields","type":"string"}},{"in":"query","name":"from_time","schema":{"description":"Filter trace threads created from this time (ISO-8601 format).","format":"date-time","type":"string"}},{"in":"query","name":"to_time","schema":{"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","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectStats_Public"}}},"description":"Trace thread stats resource"}},"summary":"Get trace thread stats","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/traces/threads/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/traces/threads/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/traces/threads/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/threads/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/threads/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/traces/threads/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/threads/stats?filters=string&from_time=2026-06-09T00%3A00%3A00Z&project_id=00000000-0000-0000-0000-000000000000&project_name=string&search=string&to_time=2026-06-09T00%3A00%3A00Z\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/threads/{id}/comments":{"post":{"description":"Add thread comment","operationId":"addThreadComment","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}}},"responses":{"201":{"description":"Created","headers":{"Location":{"example":"${basePath}/v1/private/traces/threads/{threadId}/comments/{commentId}","required":true,"schema":{"type":"string"},"style":"simple"}}}},"summary":"Add thread comment","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000/comments\");\nrequest.Content = new StringContent(\"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000/comments' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000/comments\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000/comments\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000/comments', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000/comments', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000/comments\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000/comments\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000/comments\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/threads/{threadId}/comments/{commentId}":{"get":{"description":"Get thread comment","operationId":"getThreadComment","parameters":[{"in":"path","name":"commentId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"path","name":"threadId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}},"description":"Comment resource"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"}},"summary":"Get thread comment","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/threads/{threadModelId}":{"patch":{"description":"Update thread","operationId":"updateThread","parameters":[{"in":"path","name":"threadModelId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraceThreadUpdate"}}}},"responses":{"204":{"description":"No Content"},"404":{"description":"Not found"}},"summary":"Update thread","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/threads/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/{id}":{"delete":{"description":"Delete trace by id","operationId":"deleteTraceById","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"204":{"description":"No Content"}},"summary":"Delete trace by id","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Delete, \"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X DELETE 'http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"DELETE\", \"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"DELETE\", \"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"DELETE\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"get":{"description":"Get trace by id","operationId":"getTraceById","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"strip_attachments","schema":{"default":false,"description":"If true, returns attachment references like [file.png]; if false, downloads and reinjects attachment content from S3 (default: false for backward compatibility)","type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Trace_Public"}}},"description":"Trace resource"}},"summary":"Get trace by id","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000?strip_attachments=false\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000?strip_attachments=false'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000?strip_attachments=false\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000?strip_attachments=false\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000?strip_attachments=false', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000?strip_attachments=false', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000?strip_attachments=false\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000?strip_attachments=false\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000?strip_attachments=false\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"patch":{"description":"Update trace by id","operationId":"updateTrace","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraceUpdate"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Update trace by id","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"input\\\":{},\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"input\":{},\"metadata\":{},\"name\":\"string\",\"output\":{},\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"source\":\"evaluator\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"thread_id\":\"string\",\"ttft\":0}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"input\":{},\"metadata\":{},\"name\":\"string\",\"output\":{},\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"source\":\"evaluator\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"thread_id\":\"string\",\"ttft\":0}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"input\\\":{},\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"input\":{},\"metadata\":{},\"name\":\"string\",\"output\":{},\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"source\":\"evaluator\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"thread_id\":\"string\",\"ttft\":0}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"input\\\":{},\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"input\\\":{},\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"end_time\":\"2026-06-09T00:00:00Z\",\"environment\":\"string\",\"error_info\":{\"exception_type\":\"string\",\"message\":\"string\",\"traceback\":\"string\"},\"input\":{},\"metadata\":{},\"name\":\"string\",\"output\":{},\"project_id\":\"00000000-0000-0000-0000-000000000000\",\"project_name\":\"string\",\"source\":\"evaluator\",\"tags\":[\"string\"],\"tags_to_add\":[\"string\"],\"tags_to_remove\":[\"string\"],\"thread_id\":\"string\",\"ttft\":0}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"end_time\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"environment\\\":\\\"string\\\",\\\"error_info\\\":{\\\"exception_type\\\":\\\"string\\\",\\\"message\\\":\\\"string\\\",\\\"traceback\\\":\\\"string\\\"},\\\"input\\\":{},\\\"metadata\\\":{},\\\"name\\\":\\\"string\\\",\\\"output\\\":{},\\\"project_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"project_name\\\":\\\"string\\\",\\\"source\\\":\\\"evaluator\\\",\\\"tags\\\":[\\\"string\\\"],\\\"tags_to_add\\\":[\\\"string\\\"],\\\"tags_to_remove\\\":[\\\"string\\\"],\\\"thread_id\\\":\\\"string\\\",\\\"ttft\\\":0}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/{id}/comments":{"post":{"description":"Add trace comment","operationId":"addTraceComment","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}}},"responses":{"201":{"description":"Created","headers":{"Location":{"example":"${basePath}/v1/private/traces/{traceId}/comments/{commentId}","required":true,"schema":{"type":"string"},"style":"simple"}}}},"summary":"Add trace comment","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/comments\");\nrequest.Content = new StringContent(\"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/comments' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/comments\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/comments\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/comments', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/comments', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/comments\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/comments\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"text\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/comments\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"text\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/{id}/feedback-scores":{"put":{"description":"Add trace feedback score","operationId":"addTraceFeedbackScore","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackScore"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Add trace feedback score","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/feedback-scores\");\nrequest.Content = new StringContent(\"{\\\"category_name\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/feedback-scores' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"category_name\":\"string\",\"name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"value\":0}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"category_name\":\"string\",\"name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"value\":0}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/feedback-scores\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/feedback-scores\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{\\\"category_name\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/feedback-scores', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"category_name\":\"string\",\"name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"value\":0}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/feedback-scores', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"category_name\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/feedback-scores\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"category_name\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/feedback-scores\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"category_name\":\"string\",\"name\":\"string\",\"reason\":\"string\",\"source\":\"online_scoring\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\",\"value\":0}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/feedback-scores\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"category_name\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"reason\\\":\\\"string\\\",\\\"source\\\":\\\"online_scoring\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":0}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/{id}/feedback-scores/delete":{"post":{"description":"Delete trace feedback score","operationId":"deleteTraceFeedbackScore","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteFeedbackScore"}}}},"responses":{"204":{"description":"No Content"}},"summary":"Delete trace feedback score","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/feedback-scores/delete\");\nrequest.Content = new StringContent(\"{\\\"author\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/feedback-scores/delete' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"author\":\"string\",\"name\":\"string\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"author\":\"string\",\"name\":\"string\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/feedback-scores/delete\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/feedback-scores/delete\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"author\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/feedback-scores/delete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"author\":\"string\",\"name\":\"string\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/feedback-scores/delete', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"author\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/feedback-scores/delete\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"author\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/feedback-scores/delete\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"author\":\"string\",\"name\":\"string\",\"source_queue_id\":\"00000000-0000-0000-0000-000000000000\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/feedback-scores/delete\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"author\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"source_queue_id\\\":\\\"00000000-0000-0000-0000-000000000000\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/traces/{traceId}/comments/{commentId}":{"get":{"description":"Get trace comment","operationId":"getTraceComment","parameters":[{"in":"path","name":"commentId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"path","name":"traceId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}},"description":"Comment resource"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not found"}},"summary":"Get trace comment","tags":["Traces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/traces/00000000-0000-0000-0000-000000000000/comments/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/welcome-wizard":{"get":{"description":"Get welcome wizard tracking status for the current workspace","operationId":"getWelcomeWizardStatus","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WelcomeWizardTracking"}}},"description":"Welcome wizard tracking status"}},"summary":"Get welcome wizard tracking status","tags":["Welcome Wizard"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/welcome-wizard\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/welcome-wizard'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/welcome-wizard\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/welcome-wizard\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/welcome-wizard', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/welcome-wizard', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/welcome-wizard\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/welcome-wizard\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/welcome-wizard\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"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"}},"summary":"Submit welcome wizard","tags":["Welcome Wizard"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/welcome-wizard\");\nrequest.Content = new StringContent(\"{\\\"email\\\":\\\"user@example.com\\\",\\\"integrations\\\":[\\\"string\\\"],\\\"join_beta_program\\\":true,\\\"role\\\":\\\"string\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/welcome-wizard' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"email\":\"user@example.com\",\"integrations\":[\"string\"],\"join_beta_program\":true,\"role\":\"string\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"email\":\"user@example.com\",\"integrations\":[\"string\"],\"join_beta_program\":true,\"role\":\"string\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/welcome-wizard\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/welcome-wizard\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"email\\\":\\\"user@example.com\\\",\\\"integrations\\\":[\\\"string\\\"],\\\"join_beta_program\\\":true,\\\"role\\\":\\\"string\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/welcome-wizard', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"email\":\"user@example.com\",\"integrations\":[\"string\"],\"join_beta_program\":true,\"role\":\"string\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/welcome-wizard', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"email\\\":\\\"user@example.com\\\",\\\"integrations\\\":[\\\"string\\\"],\\\"join_beta_program\\\":true,\\\"role\\\":\\\"string\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/welcome-wizard\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"email\\\":\\\"user@example.com\\\",\\\"integrations\\\":[\\\"string\\\"],\\\"join_beta_program\\\":true,\\\"role\\\":\\\"string\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/welcome-wizard\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"email\":\"user@example.com\",\"integrations\":[\"string\"],\"join_beta_program\":true,\"role\":\"string\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/welcome-wizard\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"email\\\":\\\"user@example.com\\\",\\\"integrations\\\":[\\\"string\\\"],\\\"join_beta_program\\\":true,\\\"role\\\":\\\"string\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/workspace-permissions":{"get":{"description":"Get workspace permissions for the authenticated user","operationId":"getWorkspaceUserPermissions","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceUserPermissions"}}},"description":"Workspace Permissions"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unauthorized"}},"summary":"Get workspace permissions for the authenticated user","tags":["Workspace permissions"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/workspace-permissions\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/workspace-permissions'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/workspace-permissions\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/workspace-permissions\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/workspace-permissions', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/workspace-permissions', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/workspace-permissions\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/workspace-permissions\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/workspace-permissions\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/workspaces/configurations":{"delete":{"description":"Delete workspace configuration","operationId":"deleteWorkspaceConfiguration","responses":{"204":{"description":"Configuration Deleted"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Configuration Not Found"}},"summary":"Delete workspace configuration","tags":["Workspaces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Delete, \"http://localhost:5173/api/v1/private/workspaces/configurations\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X DELETE 'http://localhost:5173/api/v1/private/workspaces/configurations'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"DELETE\", \"http://localhost:5173/api/v1/private/workspaces/configurations\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/workspaces/configurations\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/workspaces/configurations', { method: 'DELETE' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/workspaces/configurations', { method: 'DELETE' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/workspaces/configurations\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"DELETE\", \"http://localhost:5173/api/v1/private/workspaces/configurations\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/workspaces/configurations\")\nrequest = Net::HTTPGenericRequest.new(\"DELETE\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"get":{"description":"Get workspace configuration","operationId":"getWorkspaceConfiguration","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceConfiguration"}}},"description":"Workspace Configuration"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Configuration Not Found"}},"summary":"Get workspace configuration","tags":["Workspaces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/private/workspaces/configurations\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/private/workspaces/configurations'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/private/workspaces/configurations\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/workspaces/configurations\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/workspaces/configurations', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/workspaces/configurations', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/workspaces/configurations\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/private/workspaces/configurations\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/workspaces/configurations\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"put":{"description":"Upsert workspace configuration","operationId":"upsertWorkspaceConfiguration","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceConfiguration"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceConfiguration"}}},"description":"Configuration Updated"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Unprocessable Content"}},"summary":"Upsert workspace configuration","tags":["Workspaces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Put, \"http://localhost:5173/api/v1/private/workspaces/configurations\");\nrequest.Content = new StringContent(\"{\\\"color_map\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"timeout_to_mark_thread_as_inactive\\\":\\\"string\\\",\\\"truncation_on_tables\\\":true}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PUT 'http://localhost:5173/api/v1/private/workspaces/configurations' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"color_map\":{\"additionalProp1\":\"string\"},\"timeout_to_mark_thread_as_inactive\":\"string\",\"truncation_on_tables\":true}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"color_map\":{\"additionalProp1\":\"string\"},\"timeout_to_mark_thread_as_inactive\":\"string\",\"truncation_on_tables\":true}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PUT\", \"http://localhost:5173/api/v1/private/workspaces/configurations\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/workspaces/configurations\"))\n    .method(\"PUT\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(\"{\\\"color_map\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"timeout_to_mark_thread_as_inactive\\\":\\\"string\\\",\\\"truncation_on_tables\\\":true}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/workspaces/configurations', {\n  method: 'PUT',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"color_map\":{\"additionalProp1\":\"string\"},\"timeout_to_mark_thread_as_inactive\":\"string\",\"truncation_on_tables\":true}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/workspaces/configurations', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"color_map\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"timeout_to_mark_thread_as_inactive\\\":\\\"string\\\",\\\"truncation_on_tables\\\":true}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/workspaces/configurations\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PUT\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"color_map\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"timeout_to_mark_thread_as_inactive\\\":\\\"string\\\",\\\"truncation_on_tables\\\":true}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PUT\",\n    \"http://localhost:5173/api/v1/private/workspaces/configurations\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"color_map\":{\"additionalProp1\":\"string\"},\"timeout_to_mark_thread_as_inactive\":\"string\",\"truncation_on_tables\":true}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/workspaces/configurations\")\nrequest = Net::HTTPGenericRequest.new(\"PUT\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"color_map\\\":{\\\"additionalProp1\\\":\\\"string\\\"},\\\"timeout_to_mark_thread_as_inactive\\\":\\\"string\\\",\\\"truncation_on_tables\\\":true}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/workspaces/costs":{"post":{"description":"Get cost daily data","operationId":"getCost","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMetricsSummaryRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMetricResponse"}}},"description":"Workspace cost data by days"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Get cost daily data","tags":["Workspaces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/workspaces/costs\");\nrequest.Content = new StringContent(\"{\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/workspaces/costs' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"start_before_end\":true}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"start_before_end\":true}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/workspaces/costs\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/workspaces/costs\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/workspaces/costs', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"start_before_end\":true}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/workspaces/costs', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/workspaces/costs\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/workspaces/costs\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"start_before_end\":true}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/workspaces/costs\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/workspaces/costs/summaries":{"post":{"description":"Get costs summary","operationId":"costsSummary","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMetricsSummaryRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Result"}}},"description":"Workspace Metrics"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Get costs summary","tags":["Workspaces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/workspaces/costs/summaries\");\nrequest.Content = new StringContent(\"{\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/workspaces/costs/summaries' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"start_before_end\":true}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"start_before_end\":true}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/workspaces/costs/summaries\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/workspaces/costs/summaries\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/workspaces/costs/summaries', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"start_before_end\":true}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/workspaces/costs/summaries', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/workspaces/costs/summaries\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/workspaces/costs/summaries\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"start_before_end\":true}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/workspaces/costs/summaries\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/workspaces/metrics":{"post":{"deprecated":true,"description":"Get metric daily data","operationId":"getMetric","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMetricsSummaryRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMetricResponse"}}},"description":"Workspace metric data by days"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Get metric daily data","tags":["Workspaces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/workspaces/metrics\");\nrequest.Content = new StringContent(\"{\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/workspaces/metrics' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"start_before_end\":true}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"start_before_end\":true}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/workspaces/metrics\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/workspaces/metrics\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/workspaces/metrics', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"start_before_end\":true}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/workspaces/metrics', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/workspaces/metrics\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/workspaces/metrics\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"start_before_end\":true}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/workspaces/metrics\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/workspaces/metrics/spans":{"post":{"description":"Gets a span metric time series aggregated across the workspace. When project_ids is empty, all projects in the workspace are included; otherwise only the given projects.","operationId":"getWorkspaceSpanMetric","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceSpanMetricRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMetricResponse"}}},"description":"Workspace span metric"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Get workspace span metric","tags":["Workspaces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/workspaces/metrics/spans\");\nrequest.Content = new StringContent(\"{\\\"breakdown\\\":{\\\"field\\\":\\\"error_info\\\",\\\"metadata_key\\\":\\\"string\\\",\\\"sub_metric\\\":\\\"string\\\"},\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"interval\\\":\\\"DAILY\\\",\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metric_type\\\":\\\"COST\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/workspaces/metrics/spans' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"breakdown\":{\"field\":\"error_info\",\"metadata_key\":\"string\",\"sub_metric\":\"string\"},\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"interval\":\"DAILY\",\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"metric_type\":\"COST\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"start_before_end\":true}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"breakdown\":{\"field\":\"error_info\",\"metadata_key\":\"string\",\"sub_metric\":\"string\"},\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"interval\":\"DAILY\",\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"metric_type\":\"COST\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"start_before_end\":true}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/workspaces/metrics/spans\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/workspaces/metrics/spans\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"breakdown\\\":{\\\"field\\\":\\\"error_info\\\",\\\"metadata_key\\\":\\\"string\\\",\\\"sub_metric\\\":\\\"string\\\"},\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"interval\\\":\\\"DAILY\\\",\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metric_type\\\":\\\"COST\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/workspaces/metrics/spans', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"breakdown\":{\"field\":\"error_info\",\"metadata_key\":\"string\",\"sub_metric\":\"string\"},\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"interval\":\"DAILY\",\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"metric_type\":\"COST\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"start_before_end\":true}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/workspaces/metrics/spans', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"breakdown\\\":{\\\"field\\\":\\\"error_info\\\",\\\"metadata_key\\\":\\\"string\\\",\\\"sub_metric\\\":\\\"string\\\"},\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"interval\\\":\\\"DAILY\\\",\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metric_type\\\":\\\"COST\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/workspaces/metrics/spans\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"breakdown\\\":{\\\"field\\\":\\\"error_info\\\",\\\"metadata_key\\\":\\\"string\\\",\\\"sub_metric\\\":\\\"string\\\"},\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"interval\\\":\\\"DAILY\\\",\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metric_type\\\":\\\"COST\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/workspaces/metrics/spans\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"breakdown\":{\"field\":\"error_info\",\"metadata_key\":\"string\",\"sub_metric\":\"string\"},\"filters\":[{\"field\":\"string\",\"key\":\"string\",\"operator\":\"!=\",\"value\":\"string\"}],\"interval\":\"DAILY\",\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"metric_type\":\"COST\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"start_before_end\":true}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/workspaces/metrics/spans\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"breakdown\\\":{\\\"field\\\":\\\"error_info\\\",\\\"metadata_key\\\":\\\"string\\\",\\\"sub_metric\\\":\\\"string\\\"},\\\"filters\\\":[{\\\"field\\\":\\\"string\\\",\\\"key\\\":\\\"string\\\",\\\"operator\\\":\\\"!=\\\",\\\"value\\\":\\\"string\\\"}],\\\"interval\\\":\\\"DAILY\\\",\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"metric_type\\\":\\\"COST\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/workspaces/metrics/summaries":{"post":{"deprecated":true,"description":"Get metrics summary","operationId":"metricsSummary","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMetricsSummaryRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMetricsSummaryResponse"}}},"description":"Workspace Metrics"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Get metrics summary","tags":["Workspaces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/workspaces/metrics/summaries\");\nrequest.Content = new StringContent(\"{\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/workspaces/metrics/summaries' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"start_before_end\":true}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"start_before_end\":true}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/workspaces/metrics/summaries\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/workspaces/metrics/summaries\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/workspaces/metrics/summaries', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"start_before_end\":true}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/workspaces/metrics/summaries', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/workspaces/metrics/summaries\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/workspaces/metrics/summaries\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"interval_end\":\"2026-06-09T00:00:00Z\",\"interval_start\":\"2026-06-09T00:00:00Z\",\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"],\"start_before_end\":true}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/workspaces/metrics/summaries\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"interval_end\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"interval_start\\\":\\\"2026-06-09T00:00:00Z\\\",\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"],\\\"start_before_end\\\":true}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/private/workspaces/token-usage/names":{"post":{"description":"Gets the distinct span token usage key names aggregated across the workspace. When project_ids is empty, all projects in the workspace are included; otherwise only the given projects.","operationId":"getWorkspaceTokenUsageNames","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceTokenUsageNamesRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenUsageNames"}}},"description":"Token Usage names resource"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"}},"summary":"Get workspace token usage names","tags":["Workspaces"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"http://localhost:5173/api/v1/private/workspaces/token-usage/names\");\nrequest.Content = new StringContent(\"{\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'http://localhost:5173/api/v1/private/workspaces/token-usage/names' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"http://localhost:5173/api/v1/private/workspaces/token-usage/names\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/private/workspaces/token-usage/names\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/private/workspaces/token-usage/names', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/private/workspaces/token-usage/names', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/private/workspaces/token-usage/names\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"http://localhost:5173/api/v1/private/workspaces/token-usage/names\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"project_ids\":[\"00000000-0000-0000-0000-000000000000\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/private/workspaces/token-usage/names\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"project_ids\\\":[\\\"00000000-0000-0000-0000-000000000000\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/session/redirect/datasets":{"get":{"description":"Create dataset redirect url","operationId":"datasetsRedirect","parameters":[{"in":"query","name":"dataset_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"workspace_name","schema":{"type":"string"}},{"in":"query","name":"path","required":true,"schema":{"type":"string"}}],"responses":{"303":{"description":"Redirect"},"400":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"404":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not Found"}},"summary":"Create dataset redirect url","tags":["Redirect"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/session/redirect/datasets?dataset_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/session/redirect/datasets?dataset_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/session/redirect/datasets?dataset_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/session/redirect/datasets?dataset_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/session/redirect/datasets?dataset_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/session/redirect/datasets?dataset_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/session/redirect/datasets?dataset_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/session/redirect/datasets?dataset_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/session/redirect/datasets?dataset_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/session/redirect/experiments":{"get":{"description":"Create experiment redirect url","operationId":"experimentsRedirect","parameters":[{"in":"query","name":"dataset_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"experiment_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"workspace_name","schema":{"type":"string"}},{"in":"query","name":"path","required":true,"schema":{"type":"string"}}],"responses":{"303":{"description":"Redirect"},"400":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"404":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not Found"}},"summary":"Create experiment redirect url","tags":["Redirect"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/session/redirect/experiments?dataset_id=00000000-0000-0000-0000-000000000000&experiment_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/session/redirect/experiments?dataset_id=00000000-0000-0000-0000-000000000000&experiment_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/session/redirect/experiments?dataset_id=00000000-0000-0000-0000-000000000000&experiment_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/session/redirect/experiments?dataset_id=00000000-0000-0000-0000-000000000000&experiment_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/session/redirect/experiments?dataset_id=00000000-0000-0000-0000-000000000000&experiment_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/session/redirect/experiments?dataset_id=00000000-0000-0000-0000-000000000000&experiment_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/session/redirect/experiments?dataset_id=00000000-0000-0000-0000-000000000000&experiment_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/session/redirect/experiments?dataset_id=00000000-0000-0000-0000-000000000000&experiment_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/session/redirect/experiments?dataset_id=00000000-0000-0000-0000-000000000000&experiment_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/session/redirect/optimizations":{"get":{"description":"Create optimization redirect url","operationId":"optimizationsRedirect","parameters":[{"in":"query","name":"dataset_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"optimization_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"workspace_name","schema":{"type":"string"}},{"in":"query","name":"path","required":true,"schema":{"type":"string"}}],"responses":{"303":{"description":"Redirect"},"400":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"404":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not Found"}},"summary":"Create optimization redirect url","tags":["Redirect"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/session/redirect/optimizations?dataset_id=00000000-0000-0000-0000-000000000000&optimization_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/session/redirect/optimizations?dataset_id=00000000-0000-0000-0000-000000000000&optimization_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/session/redirect/optimizations?dataset_id=00000000-0000-0000-0000-000000000000&optimization_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/session/redirect/optimizations?dataset_id=00000000-0000-0000-0000-000000000000&optimization_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/session/redirect/optimizations?dataset_id=00000000-0000-0000-0000-000000000000&optimization_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/session/redirect/optimizations?dataset_id=00000000-0000-0000-0000-000000000000&optimization_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/session/redirect/optimizations?dataset_id=00000000-0000-0000-0000-000000000000&optimization_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/session/redirect/optimizations?dataset_id=00000000-0000-0000-0000-000000000000&optimization_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/session/redirect/optimizations?dataset_id=00000000-0000-0000-0000-000000000000&optimization_id=00000000-0000-0000-0000-000000000000&path=string&workspace_name=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/v1/session/redirect/projects":{"get":{"description":"Create project redirect url","operationId":"projectsRedirect","parameters":[{"in":"query","name":"trace_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"workspace_name","schema":{"type":"string"}},{"in":"query","name":"path","required":true,"schema":{"type":"string"}}],"responses":{"303":{"description":"Redirect"},"400":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Bad Request"},"404":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}},"description":"Not Found"}},"summary":"Create project redirect url","tags":["Redirect"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"http://localhost:5173/api/v1/session/redirect/projects?path=string&trace_id=00000000-0000-0000-0000-000000000000&workspace_name=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'http://localhost:5173/api/v1/session/redirect/projects?path=string&trace_id=00000000-0000-0000-0000-000000000000&workspace_name=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"http://localhost:5173/api/v1/session/redirect/projects?path=string&trace_id=00000000-0000-0000-0000-000000000000&workspace_name=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"http://localhost:5173/api/v1/session/redirect/projects?path=string&trace_id=00000000-0000-0000-0000-000000000000&workspace_name=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('http://localhost:5173/api/v1/session/redirect/projects?path=string&trace_id=00000000-0000-0000-0000-000000000000&workspace_name=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('http://localhost:5173/api/v1/session/redirect/projects?path=string&trace_id=00000000-0000-0000-0000-000000000000&workspace_name=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"http://localhost:5173/api/v1/session/redirect/projects?path=string&trace_id=00000000-0000-0000-0000-000000000000&workspace_name=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"http://localhost:5173/api/v1/session/redirect/projects?path=string&trace_id=00000000-0000-0000-0000-000000000000&workspace_name=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"http://localhost:5173/api/v1/session/redirect/projects?path=string&trace_id=00000000-0000-0000-0000-000000000000&workspace_name=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}}},"servers":[{"description":"Opik Cloud","url":"https://www.comet.com/opik/api"}],"tags":[{"description":"MCP OAuth 2.1 Authorization Server resources","name":"MCP OAuth"},{"description":"Internal endpoint to run Agent Insights free-form SQL","name":"System analytics queries"},{"description":"System usage related resource","name":"System usage"},{"description":"Agent configuration management","name":"Agent Configs"},{"description":"Per-(workspace, project) Agent Insights report configuration","name":"Agent Insights Jobs"},{"description":"Agent Insights report results","name":"Agent Insights"},{"description":"Alert resources","name":"Alerts"},{"description":"Private annotation queue operations","name":"Annotation Queues"},{"description":"Assertion result related resources","name":"Assertion Results"},{"description":"Attachments related resources","name":"Attachments"},{"description":"Access check resources","name":"Check"},{"description":"Automation rule evaluators resource","name":"Automation rule evaluators"},{"description":"Chat Completions related resources","name":"Chat Completions"},{"description":"Workspace Dashboard resources","name":"Dashboards"},{"description":"Dataset resources","name":"Datasets"},{"description":"Environment related resources","name":"Environments"},{"description":"Experiment resources","name":"Experiments"},{"description":"Feedback definitions related resources","name":"Feedback-definitions"},{"description":"Guardrails related resources","name":"Guardrails"},{"description":"Insights View resources","name":"Insights Views"},{"description":"LLM model registry resources","name":"LLM Models"},{"description":"LLM Provider Key","name":"LlmProviderKey"},{"description":"Local runner management endpoints","name":"Runners"},{"description":"Manual evaluation resources for traces, threads, and spans","name":"Manual Evaluation"},{"description":"Ollama provider configuration endpoints with OpenAI-compatible API support.","name":"Ollama"},{"description":"Ollie pod state persistence","name":"Ollie State"},{"description":"Resource to ingest Traces and Spans via OpenTelemetry","name":"OpenTelemetry Ingestion"},{"description":"Optimization resources","name":"Optimizations"},{"description":"Pairing sessions for the `opik connect` and `opik endpoint` CLI commands","name":"Pairing"},{"description":"Project related resources","name":"Projects"},{"description":"Prompt resources","name":"Prompts"},{"description":"Generic failure log for reports/jobs","name":"Report Failures"},{"description":"Ollie daily report management","name":"Reports"},{"description":"Data retention rule management","name":"Retention Rules"},{"description":"Service Toggles resources","name":"Service Toggles"},{"description":"Span related resources","name":"Spans"},{"description":"Trace related resources","name":"Traces"},{"description":"Welcome wizard tracking resources","name":"Welcome Wizard"},{"description":"Workspace permissions related resources","name":"Workspace permissions"},{"description":"Workspace related resources","name":"Workspaces"},{"description":"Redirects for SDK generated links","name":"Redirect"}]}