{"openapi":"3.1.0","info":{"title":"Lemma Platform API","description":"Lemma Platform HTTP API for AI observability and workspace operations.","version":"0.1.0"},"servers":[{"url":"https://api.uselemma.ai","description":"Lemma production API"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}}},"security":[{"bearerAuth":[]}],"paths":{"/projects":{"get":{"operationId":"list_projects","tags":["Projects"],"summary":"List projects","description":"Returns projects available to the authenticated tenant.","responses":{"200":{"description":"Projects list","content":{"application/json":{"schema":{"type":"object","properties":{"projects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"sort_order":{"type":"number"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"mcp_activated_at":{"type":["string","null"],"format":"date-time"}},"required":["id","name","description","sort_order","created_at","updated_at","mcp_activated_at"],"additionalProperties":false}}},"required":["projects"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}},"post":{"operationId":"create_project","tags":["Projects"],"summary":"Create project","description":"Create a project for the authenticated tenant.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"description":{"type":["string","null"]}},"additionalProperties":false}}}},"responses":{"201":{"description":"Project created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"sort_order":{"type":"number"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"mcp_activated_at":{"type":["string","null"],"format":"date-time"}},"required":["id","name","description","sort_order","created_at","updated_at","mcp_activated_at"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/projects/reorder":{"post":{"operationId":"reorder_projects","tags":["Projects"],"summary":"Reorder projects","description":"Persist project ordering for the authenticated tenant.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["ordered_ids"],"properties":{"ordered_ids":{"type":"array","items":{"type":"string"}},"orderedIds":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}}}},"responses":{"204":{"description":"Projects reordered"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/projects/{project_id}":{"get":{"operationId":"get_project","tags":["Projects"],"summary":"Get project","description":"Returns a single project if it belongs to the authenticated tenant.","parameters":[{"name":"project_id","in":"path","required":true,"description":"Project ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Project","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"sort_order":{"type":"number"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"mcp_activated_at":{"type":["string","null"],"format":"date-time"}},"required":["id","name","description","sort_order","created_at","updated_at","mcp_activated_at"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}},"patch":{"operationId":"update_project","tags":["Projects"],"summary":"Update project","description":"Update a project for the authenticated tenant.","parameters":[{"name":"project_id","in":"path","required":true,"description":"Project ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"description":{"type":["string","null"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Updated project","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"sort_order":{"type":"number"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"mcp_activated_at":{"type":["string","null"],"format":"date-time"}},"required":["id","name","description","sort_order","created_at","updated_at","mcp_activated_at"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/projects/{project_id}/analytics":{"get":{"operationId":"get_project_analytics","tags":["Projects"],"summary":"Get project analytics","description":"Returns one analytics payload selected by the view discriminator. Omit view or pass view=general for the legacy timeseries + top-models contract. Specialized views do not compute unrequested panels. Cost figures are Lemma estimates from observed token counts and public LiteLLM list prices — not invoice amounts. Backfilled rows carry the price as of the backfill run, not the price as of the call.","parameters":[{"name":"project_id","in":"path","required":true,"description":"Project ID.","schema":{"type":"string"}},{"name":"view","in":"query","required":false,"description":"Analytics view to return. Omit for the general timeseries payload so existing callers keep working.","schema":{"type":"string","enum":["general","base","window","model_scorecard","agent_scorecard","tool_aggregates","roi"]}},{"name":"start","in":"query","required":false,"description":"Inclusive window start (ISO-8601).","schema":{"type":"string"}},{"name":"end","in":"query","required":false,"description":"Optional inclusive window end (ISO-8601).","schema":{"type":"string"}},{"name":"endExclusive","in":"query","required":false,"description":"Exclusive window end (ISO-8601). Required for base, window, agent_scorecard, and tool_aggregates.","schema":{"type":"string"}},{"name":"hours","in":"query","required":false,"description":"General-view lookback hours. Defaults to 24.","schema":{"type":"string"}},{"name":"granularity","in":"query","required":false,"description":"day, week, or month.","schema":{"type":"string","enum":["day","week","month"]}}],"responses":{"200":{"description":"Project analytics view","content":{"application/json":{"schema":{"anyOf":[{"anyOf":[{"anyOf":[{"anyOf":[{"anyOf":[{"anyOf":[{"type":"object","properties":{"requests":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"value":{"type":"number"}},"required":["date","value"],"additionalProperties":false}},"errors":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"value":{"type":"number"}},"required":["date","value"],"additionalProperties":false}},"speed":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"value":{"type":"number"}},"required":["date","value"],"additionalProperties":false}},"prompt_tokens":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"value":{"type":"number"}},"required":["date","value"],"additionalProperties":false}},"completion_tokens":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"value":{"type":"number"}},"required":["date","value"],"additionalProperties":false}},"top_models":{"type":"array","items":{"type":"object","properties":{"model":{"type":"string"},"count":{"type":"number"}},"required":["model","count"],"additionalProperties":false}},"speed_percentiles_timeseries":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"p50":{"type":"number"},"p95":{"type":"number"},"p99":{"type":"number"}},"required":["date","p50","p95","p99"],"additionalProperties":false}},"totals":{"type":"object","properties":{"estimated_cost_usd":{"type":["number","null"]},"priced_token_share":{"type":"number"},"priced_tokens":{"type":"number"},"total_tokens":{"type":"number"},"unpriced_models":{"type":"array","items":{"type":"string"}},"pricing_fetched_at":{"type":["string","null"]},"cost_source":{"type":"string","enum":["stored","mixed","query_time"]},"cost_lower_bound":{"type":"boolean"},"cost_lower_bound_reasons":{"type":"array","items":{"type":"string","enum":["unpriced_models","prices_unavailable","unbackfilled_traces","live_priced_breakdown_truncated","model_rollup_truncated"]}},"model_breakdown_truncated":{"type":"boolean"},"requests":{"type":"number"},"errors":{"type":"number"},"avg_speed":{"type":"number"},"prompt_tokens":{"type":"number"},"completion_tokens":{"type":"number"},"speed_percentiles":{"type":"object","properties":{"p50":{"type":"number"},"p95":{"type":"number"},"p99":{"type":"number"}},"required":["p50","p95","p99"],"additionalProperties":false},"cost_rollup_truncated":{"type":"boolean"}},"required":["estimated_cost_usd","priced_token_share","priced_tokens","total_tokens","unpriced_models","pricing_fetched_at","cost_source","cost_lower_bound","cost_lower_bound_reasons","model_breakdown_truncated","requests","errors","avg_speed","prompt_tokens","completion_tokens","speed_percentiles","cost_rollup_truncated"],"additionalProperties":false}},"required":["requests","errors","speed","prompt_tokens","completion_tokens","top_models","speed_percentiles_timeseries","totals"],"additionalProperties":false},{"type":"object","properties":{"state":{"type":"string","enum":["connect","waiting","populated"]},"counts":{"type":"object","properties":{"agents":{"type":"number"},"lifetime_traces":{"type":"number"},"issues":{"type":"number"},"resolved":{"type":"number"}},"required":["agents","lifetime_traces","issues","resolved"],"additionalProperties":false},"base":{"type":"object","properties":{"caught":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"value":{"type":"number"}},"required":["date","value"],"additionalProperties":false}},"resolved":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"value":{"type":"number"}},"required":["date","value"],"additionalProperties":false}},"dismissed":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"value":{"type":"number"}},"required":["date","value"],"additionalProperties":false}},"traces":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"value":{"type":"number"}},"required":["date","value"],"additionalProperties":false}},"errors":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"value":{"type":"number"}},"required":["date","value"],"additionalProperties":false}},"artifact_iterations":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"value":{"type":"number"}},"required":["date","value"],"additionalProperties":false}},"resolution_days":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"value":{"type":"number"}},"required":["date","value"],"additionalProperties":false}}},"required":["caught","resolved","dismissed","traces","errors","artifact_iterations","resolution_days"],"additionalProperties":false}},"required":["state","counts","base"],"additionalProperties":false}]},{"type":"object","properties":{"estimated_cost_usd":{"type":["number","null"]},"priced_token_share":{"type":"number"},"priced_tokens":{"type":"number"},"total_tokens":{"type":"number"},"unpriced_models":{"type":"array","items":{"type":"string"}},"pricing_fetched_at":{"type":["string","null"]},"cost_source":{"type":"string","enum":["stored","mixed","query_time"]},"cost_lower_bound":{"type":"boolean"},"cost_lower_bound_reasons":{"type":"array","items":{"type":"string","enum":["unpriced_models","prices_unavailable","unbackfilled_traces","live_priced_breakdown_truncated","model_rollup_truncated"]}},"model_breakdown_truncated":{"type":"boolean"},"cost_rollup_truncated":{"type":"boolean"},"cost_attribution_coverage":{"type":"string","enum":["all","unwritten_only","none"]},"cost_attribution_source":{"type":"string","const":"query_time"},"rows":{"type":"array","items":{"type":"object","properties":{"model":{"type":"string"},"traces":{"type":"number"},"tokens":{"type":"number"},"input_tokens":{"type":"number"},"output_tokens":{"type":"number"},"avg_speed":{"type":"number"},"priced":{"type":"boolean"},"estimated_cost_usd":{"type":["number","null"]}},"required":["model","traces","tokens","input_tokens","output_tokens","avg_speed","priced","estimated_cost_usd"],"additionalProperties":false}}},"required":["estimated_cost_usd","priced_token_share","priced_tokens","total_tokens","unpriced_models","pricing_fetched_at","cost_source","cost_lower_bound","cost_lower_bound_reasons","model_breakdown_truncated","cost_rollup_truncated","cost_attribution_coverage","cost_attribution_source","rows"],"additionalProperties":false}]},{"type":"object","properties":{"traces":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"value":{"type":"number"}},"required":["date","value"],"additionalProperties":false}},"errors":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"failed_runs":{"type":"number"},"root_status_known":{"type":"number"},"root_absent":{"type":"number"},"traces":{"type":"number"}},"required":["date","failed_runs","root_status_known","root_absent","traces"],"additionalProperties":false}},"tokens":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"input_tokens":{"type":"number"},"output_tokens":{"type":"number"}},"required":["date","input_tokens","output_tokens"],"additionalProperties":false}},"cost":{"type":"array","items":{"type":"object","properties":{"estimated_cost_usd":{"type":["number","null"]},"priced_token_share":{"type":"number"},"priced_tokens":{"type":"number"},"total_tokens":{"type":"number"},"unpriced_models":{"type":"array","items":{"type":"string"}},"pricing_fetched_at":{"type":["string","null"]},"cost_source":{"type":"string","enum":["stored","mixed","query_time"]},"cost_lower_bound":{"type":"boolean"},"cost_lower_bound_reasons":{"type":"array","items":{"type":"string","enum":["unpriced_models","prices_unavailable","unbackfilled_traces","live_priced_breakdown_truncated","model_rollup_truncated"]}},"model_breakdown_truncated":{"type":"boolean"},"date":{"type":"string"},"traces":{"type":"number"}},"required":["estimated_cost_usd","priced_token_share","priced_tokens","total_tokens","unpriced_models","pricing_fetched_at","cost_source","cost_lower_bound","cost_lower_bound_reasons","model_breakdown_truncated","date","traces"],"additionalProperties":false}},"cost_by_model":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"values":{"type":"object","additionalProperties":{"type":"number"}},"coverage":{"type":"string","enum":["all","unwritten_only","none"]},"attributed_traces":{"type":"number"},"traces":{"type":"number"}},"required":["date","values","coverage","attributed_traces","traces"],"additionalProperties":false}},"cost_by_model_source":{"type":"string","const":"query_time"},"cost_by_model_coverage":{"type":"string","enum":["all","unwritten_only","none"]}},"required":["traces","errors","tokens","cost","cost_by_model","cost_by_model_source","cost_by_model_coverage"],"additionalProperties":false}]},{"type":"object","properties":{"latency":{"type":"object","properties":{"granularity":{"type":"string","enum":["day","week","month"]},"points":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"p50":{"type":"number"},"p95":{"type":"number"}},"required":["date","p50","p95"],"additionalProperties":false}}},"required":["granularity","points"],"additionalProperties":false},"totals":{"type":"object","properties":{"p50":{"type":"number"},"p95":{"type":"number"},"failed_runs":{"type":"number"},"root_status_known":{"type":"number"},"root_absent":{"type":"number"},"traces":{"type":"number"},"error_rate":{"type":["number","null"]}},"required":["p50","p95","failed_runs","root_status_known","root_absent","traces","error_rate"],"additionalProperties":false},"coverage":{"type":"object","properties":{"capability":{"type":"object","properties":{"root_status":{"type":"boolean"},"root_duration":{"type":"boolean"},"agents":{"type":"boolean"},"tokens":{"type":"boolean"},"model":{"type":"boolean"},"provider":{"type":"boolean"},"cost_basis":{"type":"boolean"},"tools":{"type":"boolean"}},"required":["root_status","root_duration","agents","tokens","model","provider","cost_basis","tools"],"additionalProperties":false},"window":{"type":"object","properties":{"root_status":{"type":["object","null"],"properties":{"observed":{"type":"number"},"eligible":{"type":"number"},"is_lower_bound":{"type":"boolean"}},"required":["observed","eligible"],"additionalProperties":false},"root_duration":{"type":["object","null"],"properties":{"observed":{"type":"number"},"eligible":{"type":"number"},"is_lower_bound":{"type":"boolean"}},"required":["observed","eligible"],"additionalProperties":false},"agents":{"type":["object","null"],"properties":{"observed":{"type":"number"},"eligible":{"type":"number"},"is_lower_bound":{"type":"boolean"}},"required":["observed","eligible"],"additionalProperties":false},"tokens":{"type":["object","null"],"properties":{"observed":{"type":"number"},"eligible":{"type":"number"},"is_lower_bound":{"type":"boolean"}},"required":["observed","eligible"],"additionalProperties":false},"model":{"type":["object","null"],"properties":{"observed":{"type":"number"},"eligible":{"type":"number"},"is_lower_bound":{"type":"boolean"}},"required":["observed","eligible"],"additionalProperties":false},"provider":{"type":["object","null"],"properties":{"observed":{"type":"number"},"eligible":{"type":"number"},"is_lower_bound":{"type":"boolean"}},"required":["observed","eligible"],"additionalProperties":false},"cost_basis":{"type":["object","null"],"properties":{"observed":{"type":"number"},"eligible":{"type":"number"},"is_lower_bound":{"type":"boolean"}},"required":["observed","eligible"],"additionalProperties":false},"tools":{"type":["object","null"],"properties":{"observed":{"type":"number"},"eligible":{"type":"number"},"is_lower_bound":{"type":"boolean"}},"required":["observed","eligible"],"additionalProperties":false}},"required":["root_status","root_duration","agents","tokens","model","provider","cost_basis","tools"],"additionalProperties":false},"window_traces":{"type":"number"}},"required":["capability","window","window_traces"],"additionalProperties":false},"cost":{"type":"object","properties":{"estimated_cost_usd":{"type":["number","null"]},"priced_token_share":{"type":"number"},"priced_tokens":{"type":"number"},"total_tokens":{"type":"number"},"unpriced_models":{"type":"array","items":{"type":"string"}},"pricing_fetched_at":{"type":["string","null"]},"cost_source":{"type":"string","enum":["stored","mixed","query_time"]},"cost_lower_bound":{"type":"boolean"},"cost_lower_bound_reasons":{"type":"array","items":{"type":"string","enum":["unpriced_models","prices_unavailable","unbackfilled_traces","live_priced_breakdown_truncated","model_rollup_truncated"]}},"model_breakdown_truncated":{"type":"boolean"},"cost_rollup_truncated":{"type":"boolean"},"model_tokens_truncated":{"type":"boolean"},"unpriced_models_truncated":{"type":"boolean"},"cost_trace_counts":{"type":"object","properties":{"stored":{"type":"number"},"live_priced":{"type":"number"},"unbackfilled":{"type":"number"},"stored_unpriced":{"type":"number"},"stored_unavailable":{"type":"number"},"breakdown_truncated":{"type":"number"}},"required":["stored","live_priced","unbackfilled","stored_unpriced","stored_unavailable","breakdown_truncated"],"additionalProperties":false}},"required":["estimated_cost_usd","priced_token_share","priced_tokens","total_tokens","unpriced_models","pricing_fetched_at","cost_source","cost_lower_bound","cost_lower_bound_reasons","model_breakdown_truncated","cost_rollup_truncated","model_tokens_truncated","unpriced_models_truncated","cost_trace_counts"],"additionalProperties":false}},"required":["latency","totals","coverage","cost"],"additionalProperties":false}]},{"type":"object","properties":{"rows":{"type":"array","items":{"type":"object","properties":{"agent":{"type":"string"},"traces":{"type":"number"},"p50":{"type":"number"},"p95":{"type":"number"},"error_rate":{"type":["number","null"]},"root_status_known":{"type":"number"},"tools_used":{"type":"number"},"tools_used_is_lower_bound":{"type":"boolean"},"tokens":{"type":"number"},"cost":{"type":["number","null"]},"cost_is_lower_bound":{"type":"boolean"},"cost_source":{"type":"string","enum":["stored","mixed","query_time"]},"cost_lower_bound_reasons":{"type":"array","items":{"type":"string","enum":["unpriced_models","prices_unavailable","unbackfilled_traces","live_priced_breakdown_truncated","model_rollup_truncated"]}},"model_breakdown_truncated":{"type":"boolean"}},"required":["agent","traces","p50","p95","error_rate","root_status_known","tools_used","tools_used_is_lower_bound","tokens","cost","cost_is_lower_bound","cost_source","cost_lower_bound_reasons","model_breakdown_truncated"],"additionalProperties":false}}},"required":["rows"],"additionalProperties":false}]},{"type":"object","properties":{"comparison":{"type":"array","items":{"type":"object","properties":{"tool":{"type":"string"},"calls":{"type":"number"},"errors":{"type":"number"},"p50":{"type":"number"},"p95":{"type":"number"},"traces":{"type":"number"},"traces_is_lower_bound":{"type":"boolean"},"output_tokens":{"type":"number"},"error_rate":{"type":["number","null"]}},"required":["tool","calls","errors","p50","p95","traces","traces_is_lower_bound","output_tokens","error_rate"],"additionalProperties":false}},"concentration":{"type":"object","properties":{"rows":{"type":"array","items":{"type":"object","properties":{"tool":{"type":"string"},"calls":{"type":"number"},"errors":{"type":"number"},"error_rate":{"type":"number"},"traces_with_error":{"type":"number"},"traces_with_error_is_lower_bound":{"type":"boolean"}},"required":["tool","calls","errors","error_rate","traces_with_error","traces_with_error_is_lower_bound"],"additionalProperties":false}},"unnamed_failing_calls":{"type":"number"},"failed_runs_without_failing_tool":{"type":"number"},"tool_spans_in_window":{"type":"number"},"truncated":{"type":"boolean"}},"required":["rows","unnamed_failing_calls","failed_runs_without_failing_tool","tool_spans_in_window","truncated"],"additionalProperties":false},"volume":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"values":{"type":"object","additionalProperties":{"type":"number"}}},"required":["date","values"],"additionalProperties":false}}},"required":["comparison","concentration","volume"],"additionalProperties":false}]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/projects/{project_id}/instrumentation-diagnostics":{"get":{"operationId":"get_instrumentation_diagnostics_settings","tags":["Projects"],"summary":"Get instrumentation diagnostics settings","description":"Returns the instrumentation-diagnostics settings for a project owned by the authenticated tenant.","parameters":[{"name":"project_id","in":"path","required":true,"description":"Project ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Instrumentation diagnostics settings","content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"slack_connected":{"type":"boolean"}},"required":["enabled","slack_connected"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}},"patch":{"operationId":"update_instrumentation_diagnostics_settings","tags":["Projects"],"summary":"Update instrumentation diagnostics settings","description":"Enable or disable the instrumentation-diagnostics digest for the authenticated tenant.","parameters":[{"name":"project_id","in":"path","required":true,"description":"Project ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Updated instrumentation diagnostics settings","content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"slack_connected":{"type":"boolean"}},"required":["enabled","slack_connected"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/projects/{project_id}/instrumentation-diagnostics/findings":{"get":{"operationId":"list_instrumentation_diagnostics_findings","tags":["Projects"],"summary":"List instrumentation diagnostics findings","description":"Returns the complete active instrumentation-diagnostics findings for a project owned by the authenticated tenant. Empty when the rollout gate or project preference is off.","parameters":[{"name":"project_id","in":"path","required":true,"description":"Project ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Instrumentation diagnostics findings","content":{"application/json":{"schema":{"type":"object","properties":{"available":{"type":"boolean"},"enabled":{"type":"boolean"},"last_cycle_at":{"type":["string","null"],"format":"date-time"},"findings":{"type":"array","items":{"type":"object","properties":{"fingerprint":{"type":"string","pattern":"^[0-9a-f]{16}$"},"check_id":{"type":"string","enum":["one_root_per_execution","root_io","stable_agent_name","typed_generations","typed_tools","sensible_nesting","duration_consistency","thread_ids","detached_tops","span_io","events_as_spans","error_placement","causal_order","error_status","root_input_bloat","span_naming","root_output_contamination","multi_payload_ingest","generation_token_counts"]},"agent_name":{"type":"string"},"tier":{"type":"string","enum":["semantic","quality"]},"impact":{"type":"string","enum":["rendering","stats","conversation_grouping","issue_detection"]},"title":{"type":"string"},"affected":{"type":"integer","exclusiveMinimum":0},"sampled":{"type":"integer","exclusiveMinimum":0},"agent_trace_total":{"type":"integer","minimum":0},"duration_delta_ms":{"type":["integer","null"]},"example_names":{"type":"array","items":{"type":"string"}},"docs_anchor":{"type":"string","enum":["building-high-quality-traces#errors","building-high-quality-traces#generations","building-high-quality-traces#happy-path-example","building-high-quality-traces#input-output","building-high-quality-traces#quality-checklist","building-high-quality-traces#structure-and-nesting","building-high-quality-traces#timing","building-high-quality-traces#tool-calls","instrumenting-multi-turn-agents#the-core-rule"]},"docs_url":{"type":"string","format":"uri"},"fix_template_id":{"type":"string","enum":["agent_name_ts","causal_order_manual_ts","detached_tops_manual_ts","duration_handles_ts","duration_live_handles_ts","error_placement_manual_ts","error_status_manual_ts","events_as_spans_manual_ts","generation_token_counts_manual_ts","multi_payload_ingest_manual_ts","nesting_handles_ts","one_root_per_execution_manual_ts","root_input_bloat_manual_ts","root_io_manual_ts","root_output_contamination_manual_ts","span_io_manual_ts","span_naming_manual_ts","thread_ids_ts","typed_generations_manual_ts","typed_tools_manual_ts"]},"detected_at":{"type":"string","format":"date-time"},"first_detected_at":{"type":"string","format":"date-time"},"last_seen_at":{"type":"string","format":"date-time"},"window_start":{"type":"string","format":"date-time"},"window_end":{"type":"string","format":"date-time"}},"required":["fingerprint","check_id","agent_name","tier","impact","title","affected","sampled","agent_trace_total","duration_delta_ms","example_names","docs_anchor","docs_url","fix_template_id","detected_at","first_detected_at","last_seen_at","window_start","window_end"],"additionalProperties":false}}},"required":["available","enabled","last_cycle_at","findings"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/projects/{project_id}/briefs":{"get":{"operationId":"get_briefs_settings","tags":["Projects"],"summary":"Get project briefs settings","description":"Returns the Slack briefs settings for a project owned by the authenticated tenant.","parameters":[{"name":"project_id","in":"path","required":true,"description":"Project ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Briefs settings","content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"cadence":{"type":"string","enum":["daily","weekly"]},"slack_connected":{"type":"boolean"}},"required":["enabled","cadence","slack_connected"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}},"patch":{"operationId":"update_briefs_settings","tags":["Projects"],"summary":"Update project briefs settings","description":"Enable or disable Slack briefs and optionally set cadence for the authenticated tenant.","parameters":[{"name":"project_id","in":"path","required":true,"description":"Project ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean"},"cadence":{"type":"string","enum":["daily","weekly"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Updated briefs settings","content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"cadence":{"type":"string","enum":["daily","weekly"]},"slack_connected":{"type":"boolean"}},"required":["enabled","cadence","slack_connected"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/projects/{project_id}/setup-status":{"get":{"operationId":"get_project_setup_status","tags":["Projects"],"summary":"Inspect project setup status","description":"Returns setup state, scope, permissions, and stable blocker codes without exposing credentials or provider-private data.","parameters":[{"name":"project_id","in":"path","required":true,"description":"Project ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Project setup status","content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string"},"principal_type":{"type":"string","enum":["session","api_key","coding_harness","worker","unknown"]},"agent_observability":{"type":"object","properties":{"state":{"type":"string","enum":["complete","incomplete","degraded","unavailable","not_applicable","feature_disabled"]},"scope":{"type":"string","enum":["organization","project","agent","current_person","authenticated_client"]},"can_manage":{"type":"boolean"},"reason_code":{"type":["string","null"],"enum":["observability_status_unavailable","no_ready_traces","no_provided_context","no_generated_understanding","slack_workspace_not_connected","slack_workspace_degraded","slack_alert_channel_not_bound","issue_briefs_disabled","support_channel_not_requested","support_channel_creating","support_channel_invited","support_channel_failed","support_channel_unavailable","support_channel_plan_required","linear_feature_disabled","linear_workspace_not_connected","linear_authentication_required","linear_temporarily_failing","linear_defaults_missing","linear_identity_missing","no_human_principal","external_mcp_not_connected","external_mcp_degraded","no_enabled_webhooks","no_active_api_key","lemma_mcp_not_activated",null]},"has_ready_trace":{"type":["boolean","null"]}},"required":["state","scope","can_manage","reason_code","has_ready_trace"],"additionalProperties":false},"artifacts":{"type":"object","properties":{"provided_context":{"type":"object","properties":{"state":{"type":"string","enum":["complete","incomplete","degraded","unavailable","not_applicable","feature_disabled"]},"scope":{"type":"string","enum":["organization","project","agent","current_person","authenticated_client"]},"can_manage":{"type":"boolean"},"reason_code":{"type":["string","null"],"enum":["observability_status_unavailable","no_ready_traces","no_provided_context","no_generated_understanding","slack_workspace_not_connected","slack_workspace_degraded","slack_alert_channel_not_bound","issue_briefs_disabled","support_channel_not_requested","support_channel_creating","support_channel_invited","support_channel_failed","support_channel_unavailable","support_channel_plan_required","linear_feature_disabled","linear_workspace_not_connected","linear_authentication_required","linear_temporarily_failing","linear_defaults_missing","linear_identity_missing","no_human_principal","external_mcp_not_connected","external_mcp_degraded","no_enabled_webhooks","no_active_api_key","lemma_mcp_not_activated",null]},"count":{"type":"integer","minimum":0},"agent_count":{"type":"integer","minimum":0}},"required":["state","scope","can_manage","reason_code","count","agent_count"],"additionalProperties":false},"generated_understanding":{"type":"object","properties":{"state":{"type":"string","enum":["complete","incomplete","degraded","unavailable","not_applicable","feature_disabled"]},"scope":{"type":"string","enum":["organization","project","agent","current_person","authenticated_client"]},"can_manage":{"type":"boolean"},"reason_code":{"type":["string","null"],"enum":["observability_status_unavailable","no_ready_traces","no_provided_context","no_generated_understanding","slack_workspace_not_connected","slack_workspace_degraded","slack_alert_channel_not_bound","issue_briefs_disabled","support_channel_not_requested","support_channel_creating","support_channel_invited","support_channel_failed","support_channel_unavailable","support_channel_plan_required","linear_feature_disabled","linear_workspace_not_connected","linear_authentication_required","linear_temporarily_failing","linear_defaults_missing","linear_identity_missing","no_human_principal","external_mcp_not_connected","external_mcp_degraded","no_enabled_webhooks","no_active_api_key","lemma_mcp_not_activated",null]},"count":{"type":"integer","minimum":0},"agent_count":{"type":"integer","minimum":0}},"required":["state","scope","can_manage","reason_code","count","agent_count"],"additionalProperties":false}},"required":["provided_context","generated_understanding"],"additionalProperties":false},"slack":{"type":"object","properties":{"workspace":{"type":"object","properties":{"state":{"type":"string","enum":["complete","incomplete","degraded","unavailable","not_applicable","feature_disabled"]},"scope":{"type":"string","enum":["organization","project","agent","current_person","authenticated_client"]},"can_manage":{"type":"boolean"},"reason_code":{"type":["string","null"],"enum":["observability_status_unavailable","no_ready_traces","no_provided_context","no_generated_understanding","slack_workspace_not_connected","slack_workspace_degraded","slack_alert_channel_not_bound","issue_briefs_disabled","support_channel_not_requested","support_channel_creating","support_channel_invited","support_channel_failed","support_channel_unavailable","support_channel_plan_required","linear_feature_disabled","linear_workspace_not_connected","linear_authentication_required","linear_temporarily_failing","linear_defaults_missing","linear_identity_missing","no_human_principal","external_mcp_not_connected","external_mcp_degraded","no_enabled_webhooks","no_active_api_key","lemma_mcp_not_activated",null]}},"required":["state","scope","can_manage","reason_code"],"additionalProperties":false},"alert_channel":{"type":"object","properties":{"state":{"type":"string","enum":["complete","incomplete","degraded","unavailable","not_applicable","feature_disabled"]},"scope":{"type":"string","enum":["organization","project","agent","current_person","authenticated_client"]},"can_manage":{"type":"boolean"},"reason_code":{"type":["string","null"],"enum":["observability_status_unavailable","no_ready_traces","no_provided_context","no_generated_understanding","slack_workspace_not_connected","slack_workspace_degraded","slack_alert_channel_not_bound","issue_briefs_disabled","support_channel_not_requested","support_channel_creating","support_channel_invited","support_channel_failed","support_channel_unavailable","support_channel_plan_required","linear_feature_disabled","linear_workspace_not_connected","linear_authentication_required","linear_temporarily_failing","linear_defaults_missing","linear_identity_missing","no_human_principal","external_mcp_not_connected","external_mcp_degraded","no_enabled_webhooks","no_active_api_key","lemma_mcp_not_activated",null]}},"required":["state","scope","can_manage","reason_code"],"additionalProperties":false},"issue_briefs":{"type":"object","properties":{"state":{"type":"string","enum":["complete","incomplete","degraded","unavailable","not_applicable","feature_disabled"]},"scope":{"type":"string","enum":["organization","project","agent","current_person","authenticated_client"]},"can_manage":{"type":"boolean"},"reason_code":{"type":["string","null"],"enum":["observability_status_unavailable","no_ready_traces","no_provided_context","no_generated_understanding","slack_workspace_not_connected","slack_workspace_degraded","slack_alert_channel_not_bound","issue_briefs_disabled","support_channel_not_requested","support_channel_creating","support_channel_invited","support_channel_failed","support_channel_unavailable","support_channel_plan_required","linear_feature_disabled","linear_workspace_not_connected","linear_authentication_required","linear_temporarily_failing","linear_defaults_missing","linear_identity_missing","no_human_principal","external_mcp_not_connected","external_mcp_degraded","no_enabled_webhooks","no_active_api_key","lemma_mcp_not_activated",null]},"enabled":{"type":"boolean"},"cadence":{"type":"string","enum":["daily","weekly"]}},"required":["state","scope","can_manage","reason_code","enabled","cadence"],"additionalProperties":false},"support_channel":{"type":"object","properties":{"state":{"type":"string","enum":["complete","incomplete","degraded","unavailable","not_applicable","feature_disabled"]},"scope":{"type":"string","enum":["organization","project","agent","current_person","authenticated_client"]},"can_manage":{"type":"boolean"},"reason_code":{"type":["string","null"],"enum":["observability_status_unavailable","no_ready_traces","no_provided_context","no_generated_understanding","slack_workspace_not_connected","slack_workspace_degraded","slack_alert_channel_not_bound","issue_briefs_disabled","support_channel_not_requested","support_channel_creating","support_channel_invited","support_channel_failed","support_channel_unavailable","support_channel_plan_required","linear_feature_disabled","linear_workspace_not_connected","linear_authentication_required","linear_temporarily_failing","linear_defaults_missing","linear_identity_missing","no_human_principal","external_mcp_not_connected","external_mcp_degraded","no_enabled_webhooks","no_active_api_key","lemma_mcp_not_activated",null]},"lifecycle_status":{"type":"string","enum":["not_requested","creating","invited","connected","failed"]}},"required":["state","scope","can_manage","reason_code","lifecycle_status"],"additionalProperties":false}},"required":["workspace","alert_channel","issue_briefs","support_channel"],"additionalProperties":false},"linear":{"type":"object","properties":{"feature_enabled":{"type":"boolean"},"workspace":{"type":"object","properties":{"state":{"type":"string","enum":["complete","incomplete","degraded","unavailable","not_applicable","feature_disabled"]},"scope":{"type":"string","enum":["organization","project","agent","current_person","authenticated_client"]},"can_manage":{"type":"boolean"},"reason_code":{"type":["string","null"],"enum":["observability_status_unavailable","no_ready_traces","no_provided_context","no_generated_understanding","slack_workspace_not_connected","slack_workspace_degraded","slack_alert_channel_not_bound","issue_briefs_disabled","support_channel_not_requested","support_channel_creating","support_channel_invited","support_channel_failed","support_channel_unavailable","support_channel_plan_required","linear_feature_disabled","linear_workspace_not_connected","linear_authentication_required","linear_temporarily_failing","linear_defaults_missing","linear_identity_missing","no_human_principal","external_mcp_not_connected","external_mcp_degraded","no_enabled_webhooks","no_active_api_key","lemma_mcp_not_activated",null]}},"required":["state","scope","can_manage","reason_code"],"additionalProperties":false},"defaults":{"type":"object","properties":{"state":{"type":"string","enum":["complete","incomplete","degraded","unavailable","not_applicable","feature_disabled"]},"scope":{"type":"string","enum":["organization","project","agent","current_person","authenticated_client"]},"can_manage":{"type":"boolean"},"reason_code":{"type":["string","null"],"enum":["observability_status_unavailable","no_ready_traces","no_provided_context","no_generated_understanding","slack_workspace_not_connected","slack_workspace_degraded","slack_alert_channel_not_bound","issue_briefs_disabled","support_channel_not_requested","support_channel_creating","support_channel_invited","support_channel_failed","support_channel_unavailable","support_channel_plan_required","linear_feature_disabled","linear_workspace_not_connected","linear_authentication_required","linear_temporarily_failing","linear_defaults_missing","linear_identity_missing","no_human_principal","external_mcp_not_connected","external_mcp_degraded","no_enabled_webhooks","no_active_api_key","lemma_mcp_not_activated",null]},"team_configured":{"type":"boolean"},"linear_project_configured":{"type":"boolean"}},"required":["state","scope","can_manage","reason_code","team_configured","linear_project_configured"],"additionalProperties":false},"current_person_identity":{"type":"object","properties":{"state":{"type":"string","enum":["complete","incomplete","degraded","unavailable","not_applicable","feature_disabled"]},"scope":{"type":"string","enum":["organization","project","agent","current_person","authenticated_client"]},"can_manage":{"type":"boolean"},"reason_code":{"type":["string","null"],"enum":["observability_status_unavailable","no_ready_traces","no_provided_context","no_generated_understanding","slack_workspace_not_connected","slack_workspace_degraded","slack_alert_channel_not_bound","issue_briefs_disabled","support_channel_not_requested","support_channel_creating","support_channel_invited","support_channel_failed","support_channel_unavailable","support_channel_plan_required","linear_feature_disabled","linear_workspace_not_connected","linear_authentication_required","linear_temporarily_failing","linear_defaults_missing","linear_identity_missing","no_human_principal","external_mcp_not_connected","external_mcp_degraded","no_enabled_webhooks","no_active_api_key","lemma_mcp_not_activated",null]}},"required":["state","scope","can_manage","reason_code"],"additionalProperties":false}},"required":["feature_enabled","workspace","defaults","current_person_identity"],"additionalProperties":false},"external_mcp":{"type":"object","properties":{"state":{"type":"string","enum":["complete","incomplete","degraded","unavailable","not_applicable","feature_disabled"]},"scope":{"type":"string","enum":["organization","project","agent","current_person","authenticated_client"]},"can_manage":{"type":"boolean"},"reason_code":{"type":["string","null"],"enum":["observability_status_unavailable","no_ready_traces","no_provided_context","no_generated_understanding","slack_workspace_not_connected","slack_workspace_degraded","slack_alert_channel_not_bound","issue_briefs_disabled","support_channel_not_requested","support_channel_creating","support_channel_invited","support_channel_failed","support_channel_unavailable","support_channel_plan_required","linear_feature_disabled","linear_workspace_not_connected","linear_authentication_required","linear_temporarily_failing","linear_defaults_missing","linear_identity_missing","no_human_principal","external_mcp_not_connected","external_mcp_degraded","no_enabled_webhooks","no_active_api_key","lemma_mcp_not_activated",null]},"total_count":{"type":"integer","minimum":0},"active_count":{"type":"integer","minimum":0},"degraded_count":{"type":"integer","minimum":0}},"required":["state","scope","can_manage","reason_code","total_count","active_count","degraded_count"],"additionalProperties":false},"webhooks":{"type":"object","properties":{"state":{"type":"string","enum":["complete","incomplete","degraded","unavailable","not_applicable","feature_disabled"]},"scope":{"type":"string","enum":["organization","project","agent","current_person","authenticated_client"]},"can_manage":{"type":"boolean"},"reason_code":{"type":["string","null"],"enum":["observability_status_unavailable","no_ready_traces","no_provided_context","no_generated_understanding","slack_workspace_not_connected","slack_workspace_degraded","slack_alert_channel_not_bound","issue_briefs_disabled","support_channel_not_requested","support_channel_creating","support_channel_invited","support_channel_failed","support_channel_unavailable","support_channel_plan_required","linear_feature_disabled","linear_workspace_not_connected","linear_authentication_required","linear_temporarily_failing","linear_defaults_missing","linear_identity_missing","no_human_principal","external_mcp_not_connected","external_mcp_degraded","no_enabled_webhooks","no_active_api_key","lemma_mcp_not_activated",null]},"total_count":{"type":"integer","minimum":0},"enabled_count":{"type":"integer","minimum":0}},"required":["state","scope","can_manage","reason_code","total_count","enabled_count"],"additionalProperties":false},"api_keys":{"type":"object","properties":{"state":{"type":"string","enum":["complete","incomplete","degraded","unavailable","not_applicable","feature_disabled"]},"scope":{"type":"string","enum":["organization","project","agent","current_person","authenticated_client"]},"can_manage":{"type":"boolean"},"reason_code":{"type":["string","null"],"enum":["observability_status_unavailable","no_ready_traces","no_provided_context","no_generated_understanding","slack_workspace_not_connected","slack_workspace_degraded","slack_alert_channel_not_bound","issue_briefs_disabled","support_channel_not_requested","support_channel_creating","support_channel_invited","support_channel_failed","support_channel_unavailable","support_channel_plan_required","linear_feature_disabled","linear_workspace_not_connected","linear_authentication_required","linear_temporarily_failing","linear_defaults_missing","linear_identity_missing","no_human_principal","external_mcp_not_connected","external_mcp_degraded","no_enabled_webhooks","no_active_api_key","lemma_mcp_not_activated",null]},"count":{"type":"integer","minimum":0}},"required":["state","scope","can_manage","reason_code","count"],"additionalProperties":false},"lemma_mcp":{"type":"object","properties":{"state":{"type":"string","enum":["complete","incomplete","degraded","unavailable","not_applicable","feature_disabled"]},"scope":{"type":"string","enum":["organization","project","agent","current_person","authenticated_client"]},"can_manage":{"type":"boolean"},"reason_code":{"type":["string","null"],"enum":["observability_status_unavailable","no_ready_traces","no_provided_context","no_generated_understanding","slack_workspace_not_connected","slack_workspace_degraded","slack_alert_channel_not_bound","issue_briefs_disabled","support_channel_not_requested","support_channel_creating","support_channel_invited","support_channel_failed","support_channel_unavailable","support_channel_plan_required","linear_feature_disabled","linear_workspace_not_connected","linear_authentication_required","linear_temporarily_failing","linear_defaults_missing","linear_identity_missing","no_human_principal","external_mcp_not_connected","external_mcp_degraded","no_enabled_webhooks","no_active_api_key","lemma_mcp_not_activated",null]},"activated_at":{"type":["string","null"],"format":"date-time"}},"required":["state","scope","can_manage","reason_code","activated_at"],"additionalProperties":false}},"required":["project_id","principal_type","agent_observability","artifacts","slack","linear","external_mcp","webhooks","api_keys","lemma_mcp"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/projects/{project_id}/artifacts":{"get":{"operationId":"list_project_artifacts","tags":["Artifacts"],"summary":"List project artifacts","description":"Returns Agent understanding and uploaded artifacts for a project, scoped to the selected agent.","parameters":[{"name":"project_id","in":"path","required":true,"description":"Project ID","schema":{"type":"string"}},{"name":"agent_name","in":"query","required":false,"description":"Optional agent name used to scope artifacts. Omit to select the most recently updated artifact agent.","schema":{"type":"string"}}],"responses":{"200":{"description":"Project artifacts","content":{"application/json":{"schema":{"type":"object","properties":{"selected_agent_name":{"type":["string","null"]},"agents":{"type":"array","items":{"type":"object","properties":{"agent_name":{"type":["string","null"]},"latest_version":{"type":["number","null"]},"updated_at":{"type":"string"}},"required":["agent_name","latest_version","updated_at"],"additionalProperties":false}},"learn_agent_artifact":{"type":["object","null"],"properties":{"artifact_version_id":{"type":"string","format":"uuid"},"version":{"type":"number"},"agent_name":{"type":["string","null"]},"knowledge_md":{"type":"string"},"mermaid":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["artifact_version_id","version","agent_name","knowledge_md","mermaid","created_at","updated_at"],"additionalProperties":false},"uploaded_artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"agent_name":{"type":["string","null"]},"filename":{"type":"string"},"content_type":{"type":"string"},"size_bytes":{"type":"number"},"created_at":{"type":["string","null"],"format":"date-time"}},"required":["id","project_id","agent_name","filename","content_type","size_bytes","created_at"],"additionalProperties":false}}},"required":["selected_agent_name","agents","learn_agent_artifact","uploaded_artifacts"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}},"post":{"operationId":"upload_project_artifact","tags":["Artifacts"],"summary":"Upload project artifact","description":"Upload an agent-scoped .txt or .md file (text/plain or text/markdown).","parameters":[{"name":"project_id","in":"path","required":true,"description":"Project ID","schema":{"type":"string"}},{"name":"agent_name","in":"query","required":false,"description":"Optional agent name to attach to this uploaded artifact.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary"}}}}}},"responses":{"201":{"description":"Uploaded text artifact metadata","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"agent_name":{"type":["string","null"]},"filename":{"type":"string"},"content_type":{"type":"string"},"size_bytes":{"type":"number"},"created_at":{"type":["string","null"],"format":"date-time"}},"required":["id","project_id","agent_name","filename","content_type","size_bytes","created_at"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/projects/{project_id}/artifacts/versions":{"get":{"operationId":"list_learn_agent_artifact_versions","tags":["Artifacts"],"summary":"List Agent understanding versions","description":"Returns Agent understanding version metadata for a project and agent, newest first. The response omits artifact content.","parameters":[{"name":"project_id","in":"path","required":true,"description":"Project ID","schema":{"type":"string"}},{"name":"agent_name","in":"query","required":false,"description":"Optional agent name used to scope Agent understanding artifacts. Empty selects untagged artifacts.","schema":{"type":"string"}}],"responses":{"200":{"description":"Agent understanding versions","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"artifact_version_id":{"type":"string","format":"uuid"},"version":{"type":"number"},"agent_name":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["artifact_version_id","version","agent_name","created_at","updated_at"],"additionalProperties":false}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/projects/{project_id}/artifacts/versions/{version}":{"get":{"operationId":"get_learn_agent_artifact_version","tags":["Artifacts"],"summary":"Get Agent understanding version","description":"Returns the Agent understanding content and metadata for a specific project, agent, and version.","parameters":[{"name":"project_id","in":"path","required":true,"description":"Project ID","schema":{"type":"string"}},{"name":"version","in":"path","required":true,"description":"Agent understanding version","schema":{"type":"string"}},{"name":"agent_name","in":"query","required":false,"description":"Optional agent name used to scope Agent understanding artifacts. Empty selects untagged artifacts.","schema":{"type":"string"}}],"responses":{"200":{"description":"Agent understanding version","content":{"application/json":{"schema":{"type":"object","properties":{"artifact_version_id":{"type":"string","format":"uuid"},"version":{"type":"number"},"agent_name":{"type":["string","null"]},"knowledge_md":{"type":"string"},"mermaid":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["artifact_version_id","version","agent_name","knowledge_md","mermaid","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/projects/{project_id}/artifacts/regenerate":{"post":{"operationId":"regenerate_project_artifacts","tags":["Artifacts"],"summary":"Regenerate project artifacts","description":"Starts Agent understanding and diagram regeneration for a tenant-owned project and optional agent. Clients should poll list_project_artifacts for a new latest_version to observe completion.","parameters":[{"name":"project_id","in":"path","required":true,"description":"Project ID","schema":{"type":"string"}},{"name":"agent_name","in":"query","required":false,"description":"Optional agent name used to scope the regenerated Agent understanding artifacts.","schema":{"type":"string"}}],"responses":{"200":{"description":"Artifact regeneration accepted","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true}},"required":["ok"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/projects/{project_id}/artifacts/{artifact_id}/content":{"get":{"operationId":"get_project_artifact_content","tags":["Artifacts"],"summary":"Get uploaded project artifact content","description":"Returns stored text content and metadata for one uploaded text artifact.","parameters":[{"name":"project_id","in":"path","required":true,"description":"Project ID","schema":{"type":"string"}},{"name":"artifact_id","in":"path","required":true,"description":"Uploaded artifact ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Uploaded text artifact content","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"agent_name":{"type":["string","null"]},"filename":{"type":"string"},"content_type":{"type":"string"},"size_bytes":{"type":"number"},"created_at":{"type":["string","null"],"format":"date-time"},"content":{"type":"string"}},"required":["id","project_id","agent_name","filename","content_type","size_bytes","created_at","content"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/projects/{project_id}/artifacts/{artifact_id}":{"delete":{"operationId":"delete_project_artifact","tags":["Artifacts"],"summary":"Delete project artifact","description":"Deletes one uploaded project artifact.","parameters":[{"name":"project_id","in":"path","required":true,"description":"Project ID","schema":{"type":"string"}},{"name":"artifact_id","in":"path","required":true,"description":"Uploaded artifact ID","schema":{"type":"string"}}],"responses":{"204":{"description":"Uploaded text artifact deleted"},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/traces/search":{"get":{"operationId":"search_traces","tags":["Traces"],"summary":"Search traces (structural)","description":"Structural search over traces and span attributes. Distinct from evidence search, which searches visible span content.","parameters":[{"name":"project_id","in":"query","required":true,"description":"Project ID.","schema":{"type":"string"}},{"name":"query","in":"query","required":false,"description":"Search query.","schema":{"type":"string"}},{"name":"tool_name","in":"query","required":false,"description":"Tool name filter.","schema":{"type":"string"}},{"name":"model","in":"query","required":false,"description":"Model filter.","schema":{"type":"string"}},{"name":"agent_name","in":"query","required":false,"description":"Agent name filter.","schema":{"type":"string"}},{"name":"has_error","in":"query","required":false,"description":"Span-error axis. true = only traces with span errors, false = only traces without, omitted = unconstrained. Independent of has_issues.","schema":{"type":"boolean"}},{"name":"has_issues","in":"query","required":false,"description":"Issue axis. true = only traces with issue occurrences, false = only traces without, omitted = unconstrained. has_error=false with has_issues=true selects silent failures.","schema":{"type":"boolean"}},{"name":"status","in":"query","required":false,"description":"Deprecated alias for the two axes, comma-separated: failures = has_error=true, flagged = has_issues=true, clean = has_error=false and has_issues=false. Cannot express error-only or issue-only; prefer has_error / has_issues, which override it per axis.","schema":{"type":"string"},"deprecated":true},{"name":"error_only","in":"query","required":false,"description":"Restrict the span-level search to error spans. Distinct from has_error, which filters whole traces by error count.","schema":{"type":"boolean"}},{"name":"tool_error_only","in":"query","required":false,"description":"Same-span tool-error filter. Requires tool_name. Matches only traces where that tool failed on the same span the Analytics widget counted.","schema":{"type":"boolean"}},{"name":"start","in":"query","required":false,"description":"Start timestamp.","schema":{"type":"string"}},{"name":"end","in":"query","required":false,"description":"End timestamp.","schema":{"type":"string"}},{"name":"min_spans","in":"query","required":false,"description":"Minimum span count.","schema":{"type":"string"}},{"name":"max_spans","in":"query","required":false,"description":"Maximum span count.","schema":{"type":"string"}},{"name":"min_duration_ms","in":"query","required":false,"description":"Minimum trace duration (ms).","schema":{"type":"string"}},{"name":"max_duration_ms","in":"query","required":false,"description":"Maximum trace duration (ms).","schema":{"type":"string"}},{"name":"min_tokens","in":"query","required":false,"description":"Minimum total token count.","schema":{"type":"string"}},{"name":"min_thread_traces","in":"query","required":false,"description":"Minimum thread trace count.","schema":{"type":"string"}},{"name":"max_thread_traces","in":"query","required":false,"description":"Maximum thread trace count.","schema":{"type":"string"}},{"name":"attribute_filters","in":"query","required":false,"description":"JSON-serialized span attribute filters.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of records to return.","schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Search results","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"otel_trace_id":{"type":"string"},"project_id":{"type":"string"},"service_name":{"type":["string","null"]},"timestamp":{"type":"string","format":"date-time"},"issue_extraction":{"type":["object","null"],"properties":{"status":{"type":"string","enum":["running","completed","skipped","failed"]},"reason":{"type":["string","null"],"enum":["issues_found","no_issues_found","no_spans","unsupported_trace","error",null]},"issue_count":{"type":["number","null"]},"occurrence_count":{"type":["number","null"]},"completed_at":{"type":["string","null"],"format":"date-time"}},"required":["status","reason","issue_count","occurrence_count","completed_at"],"additionalProperties":false}},"required":["id","otel_trace_id","project_id","service_name","timestamp","issue_extraction"],"additionalProperties":false}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/traces/search/evidence":{"get":{"operationId":"search_trace_evidence","tags":["Traces"],"summary":"Search trace evidence","description":"Search visible span content, grouped into trace-level results. Distinct from structural search.","parameters":[{"name":"project_id","in":"query","required":true,"description":"Project ID.","schema":{"type":"string"}},{"name":"query","in":"query","required":false,"description":"Search query.","schema":{"type":"string"}},{"name":"tool_name","in":"query","required":false,"description":"Tool name filter.","schema":{"type":"string"}},{"name":"model","in":"query","required":false,"description":"Model filter.","schema":{"type":"string"}},{"name":"agent_name","in":"query","required":false,"description":"Agent name filter.","schema":{"type":"string"}},{"name":"has_error","in":"query","required":false,"description":"Span-error axis. true = only traces with span errors, false = only traces without, omitted = unconstrained. Independent of has_issues.","schema":{"type":"boolean"}},{"name":"has_issues","in":"query","required":false,"description":"Issue axis. true = only traces with issue occurrences, false = only traces without, omitted = unconstrained. has_error=false with has_issues=true selects silent failures.","schema":{"type":"boolean"}},{"name":"status","in":"query","required":false,"description":"Deprecated alias for the two axes, comma-separated: failures = has_error=true, flagged = has_issues=true, clean = has_error=false and has_issues=false. Cannot express error-only or issue-only; prefer has_error / has_issues, which override it per axis.","schema":{"type":"string"},"deprecated":true},{"name":"error_only","in":"query","required":false,"description":"Restrict the span-level search to error spans. Distinct from has_error, which filters whole traces by error count.","schema":{"type":"boolean"}},{"name":"tool_error_only","in":"query","required":false,"description":"Same-span tool-error filter. Requires tool_name. Matches only traces where that tool failed on the same span the Analytics widget counted.","schema":{"type":"boolean"}},{"name":"start","in":"query","required":false,"description":"Start timestamp.","schema":{"type":"string"}},{"name":"end","in":"query","required":false,"description":"End timestamp.","schema":{"type":"string"}},{"name":"min_spans","in":"query","required":false,"description":"Minimum span count.","schema":{"type":"string"}},{"name":"max_spans","in":"query","required":false,"description":"Maximum span count.","schema":{"type":"string"}},{"name":"min_duration_ms","in":"query","required":false,"description":"Minimum trace duration (ms).","schema":{"type":"string"}},{"name":"max_duration_ms","in":"query","required":false,"description":"Maximum trace duration (ms).","schema":{"type":"string"}},{"name":"min_tokens","in":"query","required":false,"description":"Minimum total token count.","schema":{"type":"string"}},{"name":"min_thread_traces","in":"query","required":false,"description":"Minimum thread trace count.","schema":{"type":"string"}},{"name":"max_thread_traces","in":"query","required":false,"description":"Maximum thread trace count.","schema":{"type":"string"}},{"name":"attribute_filters","in":"query","required":false,"description":"JSON-serialized span attribute filters.","schema":{"type":"string"}},{"name":"trace_id","in":"query","required":false,"description":"Restrict evidence search to one trace.","schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"description":"Trace search sort mode.","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor for the next ranked result page.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of records to return.","schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Evidence search results","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"traceId":{"type":"string","minLength":1},"otelTraceId":{"type":"string","minLength":1},"timestamp":{"type":"string","format":"date-time"},"score":{"type":["number","null"]},"matchSites":{"type":"array","items":{"type":"object","properties":{"matchId":{"type":"string","minLength":1,"maxLength":1024},"spanId":{"type":["string","null"],"minLength":1},"spanName":{"type":["string","null"]},"field":{"type":"string","enum":["trace_id","span_id","span","tool","model","service","status","error","event","input","output","attribute"]},"attributePath":{"type":["string","null"],"minLength":1},"snippet":{"type":["string","null"],"minLength":1,"maxLength":4096},"rank":{"type":"integer","exclusiveMinimum":0}},"required":["matchId","spanId","spanName","field","attributePath","snippet","rank"],"additionalProperties":false},"maxItems":20}},"required":["traceId","otelTraceId","timestamp","score","matchSites"],"additionalProperties":false}},"meta":{"type":"object","properties":{"matchedTraceCount":{"type":"integer","minimum":0},"countRelation":{"type":"string","enum":["exact","lower_bound"]},"returnedTraceCount":{"type":"integer","minimum":0},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":100},"completeness":{"type":"string","enum":["complete","partial"]},"truncated":{"type":"boolean"},"truncationReason":{"type":["string","null"],"enum":["result_limit","candidate_limit","backend_timeout","index_incomplete",null]},"appliedTimeRange":{"type":"object","properties":{"start":{"type":["string","null"],"format":"date-time"},"end":{"type":["string","null"],"format":"date-time"}},"required":["start","end"],"additionalProperties":false},"sortMode":{"type":"string","enum":["relevance","timestamp_desc","timestamp_asc","duration_desc","duration_asc","spans_desc","spans_asc"]},"nextCursor":{"type":["string","null"],"minLength":1}},"required":["matchedTraceCount","countRelation","returnedTraceCount","limit","completeness","truncated","truncationReason","appliedTimeRange","sortMode","nextCursor"],"additionalProperties":false}},"required":["results","meta"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/traces/search/facets":{"get":{"operationId":"search_trace_facets","tags":["Traces"],"summary":"Discover trace search facets","description":"Returns curated, bounded facets for the active trace-search context.","parameters":[{"name":"project_id","in":"query","required":true,"description":"Project ID.","schema":{"type":"string"}},{"name":"query","in":"query","required":false,"description":"Search query.","schema":{"type":"string"}},{"name":"tool_name","in":"query","required":false,"description":"Tool name filter.","schema":{"type":"string"}},{"name":"model","in":"query","required":false,"description":"Model filter.","schema":{"type":"string"}},{"name":"agent_name","in":"query","required":false,"description":"Agent name filter.","schema":{"type":"string"}},{"name":"has_error","in":"query","required":false,"description":"Span-error axis. true = only traces with span errors, false = only traces without, omitted = unconstrained. Independent of has_issues.","schema":{"type":"boolean"}},{"name":"has_issues","in":"query","required":false,"description":"Issue axis. true = only traces with issue occurrences, false = only traces without, omitted = unconstrained. has_error=false with has_issues=true selects silent failures.","schema":{"type":"boolean"}},{"name":"status","in":"query","required":false,"description":"Deprecated alias for the two axes, comma-separated: failures = has_error=true, flagged = has_issues=true, clean = has_error=false and has_issues=false. Cannot express error-only or issue-only; prefer has_error / has_issues, which override it per axis.","schema":{"type":"string"},"deprecated":true},{"name":"error_only","in":"query","required":false,"description":"Restrict the span-level search to error spans. Distinct from has_error, which filters whole traces by error count.","schema":{"type":"boolean"}},{"name":"tool_error_only","in":"query","required":false,"description":"Same-span tool-error filter. Requires tool_name. Matches only traces where that tool failed on the same span the Analytics widget counted.","schema":{"type":"boolean"}},{"name":"start","in":"query","required":false,"description":"Start timestamp.","schema":{"type":"string"}},{"name":"end","in":"query","required":false,"description":"End timestamp.","schema":{"type":"string"}},{"name":"min_spans","in":"query","required":false,"description":"Minimum span count.","schema":{"type":"string"}},{"name":"max_spans","in":"query","required":false,"description":"Maximum span count.","schema":{"type":"string"}},{"name":"min_duration_ms","in":"query","required":false,"description":"Minimum trace duration (ms).","schema":{"type":"string"}},{"name":"max_duration_ms","in":"query","required":false,"description":"Maximum trace duration (ms).","schema":{"type":"string"}},{"name":"min_tokens","in":"query","required":false,"description":"Minimum total token count.","schema":{"type":"string"}},{"name":"min_thread_traces","in":"query","required":false,"description":"Minimum thread trace count.","schema":{"type":"string"}},{"name":"max_thread_traces","in":"query","required":false,"description":"Maximum thread trace count.","schema":{"type":"string"}},{"name":"attribute_filters","in":"query","required":false,"description":"JSON-serialized span attribute filters.","schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"description":"Trace search sort mode.","schema":{"type":"string"}},{"name":"max_values","in":"query","required":false,"description":"Maximum values per facet.","schema":{"type":"string"}}],"responses":{"200":{"description":"Trace search facets","content":{"application/json":{"schema":{"type":"object","properties":{"facets":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","enum":["agent","status","tool","model","span","error_status","service","attribute_key"]},"values":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"count":{"type":["integer","null"],"minimum":0}},"required":["value","count"],"additionalProperties":false}},"count_kind":{"type":"string","enum":["traces","spans"]},"enumeration":{"type":"string","enum":["complete","bounded","not_enumerable"]},"searchable":{"type":"boolean"}},"required":["field","values","count_kind","enumeration","searchable"],"additionalProperties":false}},"attribute_fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","minLength":1},"trace_count":{"type":"integer","minimum":0},"values":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"count":{"type":["integer","null"],"minimum":0}},"required":["value","count"],"additionalProperties":false}},"enumeration":{"type":"string","enum":["complete","bounded","not_enumerable"]},"searchable":{"type":"boolean","const":true}},"required":["path","trace_count","values","enumeration","searchable"],"additionalProperties":false}},"meta":{"type":"object","properties":{"scoped_trace_count":{"type":"integer","minimum":0},"sampled_trace_count":{"type":"integer","minimum":0},"count_relation":{"type":"string","enum":["exact","lower_bound"]},"completeness":{"type":"string","enum":["complete","partial"]},"applied_time_range":{"type":"object","properties":{"start":{"type":["string","null"],"format":"date-time"},"end":{"type":["string","null"],"format":"date-time"}},"required":["start","end"],"additionalProperties":false}},"required":["scoped_trace_count","sampled_trace_count","count_relation","completeness","applied_time_range"],"additionalProperties":false}},"required":["facets","attribute_fields","meta"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/traces/dashboard":{"get":{"operationId":"list_dashboard_traces","tags":["Traces"],"summary":"List dashboard traces","description":"Canonical first-party dashboard list with cursor pagination and independent has_error/has_issues filters. Kept separate from GET /traces because that legacy window list uses a different backend and response shape.","parameters":[{"name":"project_id","in":"query","required":true,"description":"Project ID.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of records to return.","schema":{"type":"integer","minimum":1}},{"name":"cursor","in":"query","required":false,"description":"Pagination cursor.","schema":{"type":"string"}},{"name":"agent_name","in":"query","required":false,"description":"Agent name filter.","schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"description":"Sort order.","schema":{"type":"string"}},{"name":"has_error","in":"query","required":false,"description":"Span-error axis. true = only traces with span errors, false = only traces without, omitted = unconstrained. Independent of has_issues.","schema":{"type":"boolean"}},{"name":"has_issues","in":"query","required":false,"description":"Issue axis. true = only traces with issue occurrences, false = only traces without, omitted = unconstrained. has_error=false with has_issues=true selects silent failures.","schema":{"type":"boolean"}},{"name":"status","in":"query","required":false,"description":"Deprecated alias for the two axes, comma-separated: failures = has_error=true, flagged = has_issues=true, clean = has_error=false and has_issues=false. Cannot express error-only or issue-only; prefer has_error / has_issues, which override it per axis.","schema":{"type":"string"},"deprecated":true},{"name":"min_spans","in":"query","required":false,"description":"Minimum span count.","schema":{"type":"string"}},{"name":"max_spans","in":"query","required":false,"description":"Maximum span count.","schema":{"type":"string"}},{"name":"min_duration_ms","in":"query","required":false,"description":"Minimum trace duration (ms).","schema":{"type":"string"}},{"name":"max_duration_ms","in":"query","required":false,"description":"Maximum trace duration (ms).","schema":{"type":"string"}},{"name":"min_tokens","in":"query","required":false,"description":"Minimum total (input + output) tokens.","schema":{"type":"string"}},{"name":"min_thread_traces","in":"query","required":false,"description":"Minimum number of traces in the session/thread.","schema":{"type":"string"}},{"name":"max_thread_traces","in":"query","required":false,"description":"Maximum number of traces in the session/thread.","schema":{"type":"string"}}],"responses":{"200":{"description":"Dashboard traces","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"otel_trace_id":{"type":"string"},"project_id":{"type":"string"},"service_name":{"type":["string","null"]},"agent_name":{"type":["string","null"]},"thread_id":{"type":["string","null"]},"thread_trace_count":{"type":["number","null"]},"agent_input":{"type":"null"},"agent_input_display":{"type":["string","null"]},"agent_output":{"type":"null"},"interaction":{"type":"object","properties":{"has_input":{"type":"boolean"},"has_output":{"type":"boolean"},"input_kind":{"type":"string","enum":["none","text","structured"]},"has_user_message_tools":{"type":"boolean"}},"required":["has_input","has_output","input_kind","has_user_message_tools"],"additionalProperties":false},"has_error":{"type":"boolean"},"has_occurrences":{"type":"boolean"},"span_count":{"type":"number"},"total_duration_ms":{"type":["number","null"]},"timestamp":{"type":"string"},"issue_extraction":{"type":["object","null"],"properties":{"status":{"type":"string","enum":["running","completed","skipped","failed"]},"reason":{"type":["string","null"],"enum":["issues_found","no_issues_found","no_spans","unsupported_trace","error",null]},"issue_count":{"type":["number","null"]},"occurrence_count":{"type":["number","null"]},"completed_at":{"type":["string","null"],"format":"date-time"}},"required":["status","reason","issue_count","occurrence_count","completed_at"],"additionalProperties":false},"release":{"type":["string","null"]}},"required":["id","otel_trace_id","project_id","service_name","agent_name","thread_id","thread_trace_count","agent_input_display","interaction","has_error","has_occurrences","span_count","total_duration_ms","timestamp","issue_extraction"],"additionalProperties":false}},"total":{"type":"number"},"next_cursor":{"type":["object","null"],"properties":{"timestamp":{"type":"string"},"id":{"type":"string"},"span_count":{"type":"number"},"total_duration_ms":{"type":["number","null"]}},"required":["timestamp","id"],"additionalProperties":false}},"required":["data","total","next_cursor"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/traces/agent-names":{"get":{"operationId":"list_trace_agent_names","tags":["Traces"],"summary":"List trace agent names","description":"Returns agent names seen in project traces.","parameters":[{"name":"project_id","in":"query","required":true,"description":"Project ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Agent names","content":{"application/json":{"schema":{"type":"object","properties":{"agent_names":{"type":"array","items":{"type":"string"}}},"required":["agent_names"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/traces/has-ready":{"get":{"operationId":"has_ready_traces","tags":["Traces"],"summary":"Check ready traces","description":"Returns whether a project has ready traces.","parameters":[{"name":"project_id","in":"query","required":true,"description":"Project ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Ready traces flag","content":{"application/json":{"schema":{"type":"object","properties":{"has_ready_traces":{"type":"boolean"}},"required":["has_ready_traces"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/traces/ingest-status":{"get":{"operationId":"get_ingest_status","tags":["Traces"],"summary":"Check per-trace ingest status","description":"Returns whether a specific otel_trace_id is queued (`enqueued`), stored (`ingested`), ready (`ready`), or not found (`not_found`).","parameters":[{"name":"project_id","in":"query","required":true,"description":"Project ID.","schema":{"type":"string"}},{"name":"otel_trace_id","in":"query","required":true,"description":"OTel / SDK trace id to look up.","schema":{"type":"string"}}],"responses":{"200":{"description":"Ingest status","content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string"},"otel_trace_id":{"type":"string"},"status":{"type":"string","enum":["enqueued","ingested","ready","not_found"]}},"required":["project_id","otel_trace_id","status"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/traces/bulk-delete":{"post":{"operationId":"delete_bulk_traces","tags":["Traces"],"summary":"Bulk delete traces","description":"Delete multiple traces for a project.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["project_id","trace_ids"],"properties":{"project_id":{"type":"string"},"trace_ids":{"type":"array","items":{"type":"string"}},"traceIds":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}}}},"responses":{"204":{"description":"Traces deleted"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/traces/agent-names-by-ids":{"post":{"operationId":"get_trace_agent_names_by_ids","tags":["Traces"],"summary":"Get agent names by trace ids","description":"Returns a map of trace id to agent name.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["project_id","trace_ids"],"properties":{"project_id":{"type":"string"},"trace_ids":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Agent names","content":{"application/json":{"schema":{"type":"object","properties":{"agent_names":{"type":"array","items":{"type":"object","properties":{"trace_id":{"type":"string"},"agent_name":{"type":["string","null"]}},"required":["trace_id","agent_name"],"additionalProperties":false}}},"required":["agent_names"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/traces/by-run-id":{"get":{"operationId":"get_trace_by_run_id","tags":["Traces"],"summary":"Get trace by run id","description":"Canonical efficient lookup of the trace carrying a given agent run id. Not folded into list_traces.","parameters":[{"name":"run_id","in":"query","required":false,"description":"Agent run id.","schema":{"type":"string"}}],"responses":{"200":{"description":"Trace","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"service_name":{"type":["string","null"]},"timestamp":{"type":["string","null"],"format":"date-time"},"otel_trace_id":{"type":"string"},"ready":{"type":"boolean"}},"required":["id","project_id","service_name","timestamp","otel_trace_id","ready"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/traces/{trace_id}":{"get":{"operationId":"get_trace","tags":["Traces"],"summary":"Get trace","description":"Loads a single trace with spans and stats. Pass expand=context to return the agent context bundle (row, stats, spans, and issue occurrences) instead of the default detail payload. Default (no expand) responds with the get_trace detail schema; expand=context responds with the get_trace_context bundle schema.","parameters":[{"name":"trace_id","in":"path","required":true,"description":"Trace ID.","schema":{"type":"string"}},{"name":"expand","in":"query","required":false,"description":"Optional expansion. Omit for the default detail payload; context returns the agent context bundle.","schema":{"type":"string","enum":["context"]}},{"name":"project_id","in":"query","required":false,"description":"Project ID. Required when expand=context.","schema":{"type":"string"}}],"responses":{"200":{"description":"Trace details","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"otel_trace_id":{"type":"string"},"project_id":{"type":"string"},"project_name":{"type":"string"},"service_name":{"type":["string","null"]},"agent_name":{"type":["string","null"]},"thread_id":{"type":["string","null"]},"thread_trace_count":{"type":["number","null"]},"agent_input":{"type":"null"},"agent_input_display":{"type":["string","null"]},"agent_output":{"type":"null"},"tool_calls":{"type":"array","items":{"type":"object","properties":{"span_id":{"type":"string"},"name":{"type":"string"},"duration_ms":{"type":["number","null"]},"is_error":{"type":"boolean"},"user_facing_message":{"type":"string"},"user_facing_message_truncated":{"type":"boolean"},"user_facing_messages_omitted":{"type":"integer","exclusiveMinimum":0}},"required":["span_id","name","duration_ms","is_error"],"additionalProperties":false}},"interaction":{"type":"object","properties":{"has_input":{"type":"boolean"},"has_output":{"type":"boolean"},"input_kind":{"type":"string","enum":["none","text","structured"]},"has_user_message_tools":{"type":"boolean"}},"required":["has_input","has_output","input_kind","has_user_message_tools"],"additionalProperties":false},"has_error":{"type":"boolean"},"total_duration_ms":{"type":["number","null"]},"timestamp":{"type":"string","format":"date-time"},"spans":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"otel_span_id":{"type":"string"},"parent_otel_span_id":{"type":["string","null"]},"name":{"type":"string"},"kind":{"type":["string","null"]},"start_time_ns":{"type":["string","null"]},"end_time_ns":{"type":["string","null"]},"duration_ms":{"type":["number","null"]},"status_code":{"type":["string","null"]},"status_description":{"type":["string","null"]},"input_tokens":{"type":["number","null"]},"output_tokens":{"type":["number","null"]},"model_name":{"type":["string","null"]},"tps":{"type":["number","null"]},"attributes":{"type":"object","additionalProperties":{}},"events":{}},"required":["id","otel_span_id","parent_otel_span_id","name","kind","start_time_ns","end_time_ns","duration_ms","status_code","status_description","input_tokens","output_tokens","model_name","tps"],"additionalProperties":false}},"stats":{"type":"object","properties":{"span_count":{"type":"number"},"total_tokens":{"type":["number","null"]},"total_duration_ms":{"type":["number","null"]},"error_count":{"type":"number"},"tool_calls":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"otel_span_id":{"type":["string","null"]},"status":{"type":["string","null"]}},"required":["name","otel_span_id","status"],"additionalProperties":false}},"models_used":{"type":"array","items":{"type":"string"}}},"required":["span_count","total_tokens","total_duration_ms","error_count","tool_calls","models_used"],"additionalProperties":false},"issue_extraction":{"type":["object","null"],"properties":{"status":{"type":"string","enum":["running","completed","skipped","failed"]},"reason":{"type":["string","null"],"enum":["issues_found","no_issues_found","no_spans","unsupported_trace","error",null]},"issue_count":{"type":["number","null"]},"occurrence_count":{"type":["number","null"]},"completed_at":{"type":["string","null"],"format":"date-time"}},"required":["status","reason","issue_count","occurrence_count","completed_at"],"additionalProperties":false},"release":{"type":["string","null"]}},"required":["id","otel_trace_id","project_id","service_name","agent_name","thread_id","thread_trace_count","agent_input_display","tool_calls","interaction","has_error","total_duration_ms","timestamp","spans","stats","issue_extraction"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}},"delete":{"operationId":"delete_trace","tags":["Traces"],"summary":"Delete trace","description":"Delete a trace for a project.","parameters":[{"name":"trace_id","in":"path","required":true,"description":"Trace ID.","schema":{"type":"string"}},{"name":"project_id","in":"query","required":true,"description":"Project ID.","schema":{"type":"string"}}],"responses":{"204":{"description":"Trace deleted"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/traces/{trace_id}/spans":{"get":{"operationId":"list_trace_spans","tags":["Traces"],"summary":"List trace spans","description":"Returns spans for a ready trace.","responses":{"200":{"description":"Trace spans","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"otel_span_id":{"type":"string"},"parent_otel_span_id":{"type":["string","null"]},"name":{"type":"string"},"kind":{"type":["string","null"]},"start_time_ns":{"type":["string","null"]},"end_time_ns":{"type":["string","null"]},"duration_ms":{"type":["number","null"]},"status_code":{"type":["string","null"]},"status_description":{"type":["string","null"]},"input_tokens":{"type":["number","null"]},"output_tokens":{"type":["number","null"]},"model_name":{"type":["string","null"]},"tps":{"type":["number","null"]},"attributes":{"type":"object","additionalProperties":{}},"events":{}},"required":["id","otel_span_id","parent_otel_span_id","name","kind","start_time_ns","end_time_ns","duration_ms","status_code","status_description","input_tokens","output_tokens","model_name","tps"],"additionalProperties":false}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"trace_id","required":true}]}},"/traces/{trace_id}/thread":{"get":{"operationId":"get_thread_traces","tags":["Traces"],"summary":"List thread traces","description":"Thread traversal for a ready trace. scope=all (default) returns every ready member oldest first using the threadTraces schema; scope=neighbors returns previous/next ids using the threadTraceNeighbors schema. Empty for standalone traces.","parameters":[{"name":"trace_id","in":"path","required":true,"description":"Trace ID.","schema":{"type":"string"}},{"name":"scope","in":"query","required":false,"description":"Thread traversal mode. all returns the full thread; neighbors returns previous/next ready traces.","schema":{"type":"string","enum":["neighbors","all"]}}],"responses":{"200":{"description":"Thread traces","content":{"application/json":{"schema":{"type":"object","properties":{"thread_id":{"type":["string","null"]},"traces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"otel_trace_id":{"type":"string"},"project_id":{"type":"string"},"service_name":{"type":["string","null"]},"agent_name":{"type":["string","null"]},"thread_id":{"type":["string","null"]},"thread_trace_count":{"type":["number","null"]},"agent_input":{"type":"null"},"agent_input_display":{"type":["string","null"]},"agent_output":{"type":"null"},"tool_calls":{"type":"array","items":{"type":"object","properties":{"span_id":{"type":"string"},"name":{"type":"string"},"duration_ms":{"type":["number","null"]},"is_error":{"type":"boolean"},"user_facing_message":{"type":"string"},"user_facing_message_truncated":{"type":"boolean"},"user_facing_messages_omitted":{"type":"integer","exclusiveMinimum":0}},"required":["span_id","name","duration_ms","is_error"],"additionalProperties":false}},"interaction":{"type":"object","properties":{"has_input":{"type":"boolean"},"has_output":{"type":"boolean"},"input_kind":{"type":"string","enum":["none","text","structured"]},"has_user_message_tools":{"type":"boolean"}},"required":["has_input","has_output","input_kind","has_user_message_tools"],"additionalProperties":false},"has_error":{"type":"boolean"},"has_occurrences":{"type":"boolean"},"span_count":{"type":"number"},"total_duration_ms":{"type":["number","null"]},"timestamp":{"type":"string"},"issue_extraction":{"type":["object","null"],"properties":{"status":{"type":"string","enum":["running","completed","skipped","failed"]},"reason":{"type":["string","null"],"enum":["issues_found","no_issues_found","no_spans","unsupported_trace","error",null]},"issue_count":{"type":["number","null"]},"occurrence_count":{"type":["number","null"]},"completed_at":{"type":["string","null"],"format":"date-time"}},"required":["status","reason","issue_count","occurrence_count","completed_at"],"additionalProperties":false},"release":{"type":["string","null"]}},"required":["id","otel_trace_id","project_id","service_name","agent_name","thread_id","thread_trace_count","agent_input_display","tool_calls","interaction","has_error","has_occurrences","span_count","total_duration_ms","timestamp","issue_extraction"],"additionalProperties":false}}},"required":["thread_id","traces"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/traces/{trace_id}/issue_occurrences":{"get":{"operationId":"list_trace_issue_occurrences","tags":["Traces"],"summary":"List trace issue occurrences","description":"Returns issue occurrence evidence linked to a ready trace.","responses":{"200":{"description":"Issue occurrences","content":{"application/json":{"schema":{"type":"object","properties":{"issue_occurrences":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"trace_id":{"type":"string"},"issue_id":{"type":["string","null"]},"title":{"type":"string"},"rationale":{"type":"string"},"source_span_ids":{"type":"array","items":{"type":"string"}},"evidence_span_ids":{"type":"array","items":{"type":"string"}},"citations":{},"created_at":{"type":"string"},"issue":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["open","in_progress","resolved","dismissed"]},"category":{"type":["string","null"]},"agent_name":{"type":["string","null"]}},"required":["id","name","status","category","agent_name"]},"issue_name":{"type":["string","null"]},"issue_category":{"type":["string","null"]}},"required":["id","title","rationale","source_span_ids","evidence_span_ids","created_at"],"additionalProperties":false}}},"required":["issue_occurrences"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"trace_id","required":true}]}},"/projects/{project_id}/thread-issue-summaries":{"post":{"operationId":"list_thread_issue_summaries","tags":["Traces"],"summary":"List thread issue summaries","description":"Batch-fetch issue extraction completion and dev issues for thread_ids (join key for eval trial_hash).","parameters":[{"name":"project_id","in":"path","required":true,"description":"Project ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["thread_ids"],"properties":{"thread_ids":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Thread issue summaries","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"array","items":{"type":"object","properties":{"thread_id":{"type":"string"},"trace_ids":{"type":"array","items":{"type":"string"}},"extraction":{"type":"object","properties":{"completed":{"type":"boolean"},"statuses":{"type":"array","items":{"type":"string","enum":["running","completed","skipped","failed"]}},"reasons":{"type":"array","items":{"type":"string","enum":["issues_found","no_issues_found","no_spans","unsupported_trace","error"]}}},"required":["completed","statuses","reasons"],"additionalProperties":false},"issues":{"type":"array","items":{"type":"object","properties":{"issue_id":{"type":["string","null"]},"title":{"type":"string"},"category":{"type":"string"},"rationale":{"type":"string"}},"required":["issue_id","title","category","rationale"],"additionalProperties":false}}},"required":["thread_id","trace_ids","extraction","issues"],"additionalProperties":false}}},"required":["result"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/issues":{"get":{"operationId":"list_issues","tags":["Issues"],"summary":"List issues","description":"List issues for a project. By default, returns issues at or above the frequency cutoff. Pass expanded=true for less-common issues and include_context=true for dashboard metric context. expand=dashboard and projection=dashboard are deprecated aliases.","parameters":[{"name":"project_id","in":"query","required":true,"description":"Project ID.","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"Canonical issue status filter. Omit to list active open and in-progress issues.","schema":{"type":"string","enum":["open","in_progress","resolved","dismissed"]}},{"name":"limit","in":"query","required":false,"description":"Maximum number of records to return.","schema":{"type":"integer","minimum":1}},{"name":"offset","in":"query","required":false,"description":"Number of records to skip.","schema":{"type":"integer","minimum":0}},{"name":"include_context","in":"query","required":false,"description":"Return dashboard metric context.","schema":{"type":"boolean"}},{"name":"expanded","in":"query","required":false,"description":"Include less-common issues below the project frequency cutoff.","schema":{"type":"boolean"}},{"name":"expand","in":"query","required":false,"description":"Deprecated. Use include_context=true. dashboard returns dashboard metric context.","schema":{"type":"string","enum":["dashboard"]}},{"name":"projection","in":"query","required":false,"description":"Deprecated alias. Use include_context=true.","schema":{"type":"string","enum":["dashboard"]}}],"responses":{"200":{"description":"Issues list or dashboard issues","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"issues":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"agent_name":{"type":["string","null"]},"name":{"type":"string"},"category":{"anyOf":[{"type":"string","enum":["retry_loop","integration_failure","skipped_work","misread_instruction","out_of_scope_work","instruction_violation","hallucination","communication"]},{"type":"string","const":"unknown"}]},"subsystem":{"type":["string","null"]},"failure_class":{"type":["string","null"]},"canonical_mechanism":{"type":["string","null"]},"status":{"type":"string","enum":["open","in_progress","resolved","dismissed"]},"regressed_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"assignee_user_id":{"type":["string","null"]},"confirmed_by":{"type":["string","null"]},"confirmed_at":{"type":["string","null"],"format":"date-time"},"confirmation_verdict":{"type":["string","null"],"enum":["agreed_with_validation","overrode_inconclusive","overrode_invalid",null]},"flagged":{"type":"boolean"},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}},"required":["id","name","color"],"additionalProperties":false}},"notifiable":{"type":"boolean"},"needs_review":{"type":"boolean"},"introduced_in_release":{"type":["string","null"]},"last_seen_in_release":{"type":["string","null"]},"first_seen_at":{"type":["string","null"],"format":"date-time"},"last_seen_at":{"type":["string","null"],"format":"date-time"},"occurrence_count":{"type":"number"},"trace_count":{"type":"number"},"validation":{"type":["object","null"],"properties":{"status":{"type":"string","enum":["valid","invalid","inconclusive","failed","not_run"]}},"required":["status"],"additionalProperties":false},"raw_lane_scores":{"type":["object","null"],"properties":{"impact_occurrences":{"type":"number"},"impact_project_occurrences":{"type":"number"},"impact_project_traces":{"type":"number"},"impact_occurrence_share":{"type":"number"},"impact_affected_traces":{"type":"number"},"impact_trace_share":{"type":"number"},"impact_trace_share_lower":{"type":"number"},"impact_judged_traces":{"type":"number"},"spike_current":{"type":"number"},"spike_baseline":{"type":"number"},"spike_ratio":{"type":"number"},"spike_baseline_count":{"type":"number"},"spike_baseline_exposure":{"type":"number"},"spike_current_exposure":{"type":"number"},"persistence_span_days":{"type":"number"},"persistence_active_days":{"type":"number"},"resolution_floor":{"type":["number","null"]}},"required":["impact_occurrences","impact_project_occurrences","impact_project_traces","impact_occurrence_share","impact_affected_traces","impact_trace_share","impact_trace_share_lower","impact_judged_traces","spike_current","spike_baseline","spike_ratio","spike_baseline_count","spike_baseline_exposure","spike_current_exposure","persistence_span_days","persistence_active_days","resolution_floor"],"additionalProperties":false},"metric_flags":{"type":"object","properties":{"impact":{"type":["boolean","null"]},"spike":{"type":["boolean","null"]},"persistence":{"type":["boolean","null"]}},"required":["impact","spike","persistence"],"additionalProperties":false}},"required":["id","project_id","agent_name","name","category","subsystem","failure_class","canonical_mechanism","status","regressed_at","created_at","updated_at","assignee_user_id","confirmed_by","confirmed_at","confirmation_verdict","flagged","tags","notifiable","needs_review","first_seen_at","last_seen_at","occurrence_count","trace_count","validation","raw_lane_scores","metric_flags"],"additionalProperties":false}},"total":{"type":"number"},"limit":{"type":"number"},"offset":{"type":"number"},"has_more":{"type":"boolean"},"frequency_cutoff":{"type":["object","null"],"properties":{"occurrence_count":{"type":"integer","minimum":2},"rank":{"type":"integer","exclusiveMinimum":0}},"required":["occurrence_count","rank"],"additionalProperties":false},"below_cutoff_count":{"type":"integer","minimum":0},"expanded":{"type":"boolean"}},"required":["issues","total","limit","offset","has_more","frequency_cutoff","below_cutoff_count","expanded"],"additionalProperties":false},{"type":"object","properties":{"issues":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["open","in_progress","resolved","dismissed"]},"regressed_at":{"type":["string","null"],"format":"date-time"},"agent_name":{"type":["string","null"]},"category":{"anyOf":[{"type":"string","enum":["retry_loop","integration_failure","skipped_work","misread_instruction","out_of_scope_work","instruction_violation","hallucination","communication"]},{"type":"string","const":"unknown"}]},"subsystem":{"type":["string","null"]},"failure_class":{"type":["string","null"]},"canonical_mechanism":{"type":["string","null"]},"first_seen_at":{"type":["string","null"],"format":"date-time"},"last_seen_at":{"type":["string","null"],"format":"date-time"},"occurrence_count":{"type":"number"},"trace_count":{"type":"number"},"introduced_in_release":{"type":["string","null"]},"last_seen_in_release":{"type":["string","null"]},"validation":{"type":["object","null"],"properties":{"status":{"type":"string","enum":["valid","invalid","inconclusive","failed","not_run"]}},"required":["status"],"additionalProperties":false},"raw_lane_scores":{"type":["object","null"],"properties":{"impact_occurrences":{"type":"number"},"impact_project_occurrences":{"type":"number"},"impact_project_traces":{"type":"number"},"impact_occurrence_share":{"type":"number"},"impact_affected_traces":{"type":"number"},"impact_trace_share":{"type":"number"},"impact_trace_share_lower":{"type":"number"},"impact_judged_traces":{"type":"number"},"spike_current":{"type":"number"},"spike_baseline":{"type":"number"},"spike_ratio":{"type":"number"},"spike_baseline_count":{"type":"number"},"spike_baseline_exposure":{"type":"number"},"spike_current_exposure":{"type":"number"},"persistence_span_days":{"type":"number"},"persistence_active_days":{"type":"number"},"resolution_floor":{"type":["number","null"]}},"required":["impact_occurrences","impact_project_occurrences","impact_project_traces","impact_occurrence_share","impact_affected_traces","impact_trace_share","impact_trace_share_lower","impact_judged_traces","spike_current","spike_baseline","spike_ratio","spike_baseline_count","spike_baseline_exposure","spike_current_exposure","persistence_span_days","persistence_active_days","resolution_floor"],"additionalProperties":false},"metric_flags":{"type":"object","properties":{"impact":{"type":["boolean","null"]},"spike":{"type":["boolean","null"]},"persistence":{"type":["boolean","null"]}},"required":["impact","spike","persistence"],"additionalProperties":false},"assignee_user_id":{"type":["string","null"]},"confirmed_by":{"type":["string","null"]},"confirmed_at":{"type":["string","null"],"format":"date-time"},"confirmation_verdict":{"type":["string","null"],"enum":["agreed_with_validation","overrode_inconclusive","overrode_invalid",null]},"flagged":{"type":"boolean"},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}},"required":["id","name","color"],"additionalProperties":false}},"notifiable":{"type":"boolean"},"needs_review":{"type":"boolean"}},"required":["id","name","status","regressed_at","agent_name","category","subsystem","failure_class","canonical_mechanism","first_seen_at","last_seen_at","occurrence_count","trace_count","validation","raw_lane_scores","metric_flags","assignee_user_id","confirmed_by","confirmed_at","confirmation_verdict","flagged","tags","notifiable","needs_review"],"additionalProperties":false}},"frequency_cutoff":{"type":["object","null"],"properties":{"occurrence_count":{"type":"integer","minimum":2},"rank":{"type":"integer","exclusiveMinimum":0}},"required":["occurrence_count","rank"],"additionalProperties":false},"below_cutoff_count":{"type":"integer","minimum":0},"expanded":{"type":"boolean"}},"required":["issues","frequency_cutoff","below_cutoff_count","expanded"],"additionalProperties":false}]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/issues/tags":{"get":{"operationId":"list_issue_tags","tags":["Issues"],"summary":"List issue tags","description":"List project-scoped issue tags in normalized name order.","parameters":[{"name":"project_id","in":"query","required":true,"description":"Project ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Issue tags","content":{"application/json":{"schema":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}},"required":["id","name","color"],"additionalProperties":false}}},"required":["tags"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}},"post":{"operationId":"create_issue_tag","tags":["Issues"],"summary":"Create issue tag","description":"Create a project-scoped issue tag. Names are normalized; duplicate normalized names return the existing tag with 200.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["project_id","name","color"],"properties":{"project_id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Created or existing issue tag","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}},"required":["id","name","color"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/issues/releases":{"get":{"operationId":"list_project_releases","tags":["Issues"],"summary":"List project releases","description":"Observed releases in first-observation order, with first_observed_at and 7-day release coverage.","parameters":[{"name":"project_id","in":"query","required":true,"description":"Project ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Project releases","content":{"application/json":{"schema":{"type":"object","properties":{"releases":{"type":"array","items":{"type":"object","properties":{"release":{"type":"string"},"first_observed_at":{"type":["string","null"],"format":"date-time"}},"required":["release","first_observed_at"],"additionalProperties":false}},"release_coverage":{"type":["number","null"]}},"required":["releases","release_coverage"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/issues/{issue_id}":{"get":{"operationId":"get_issue","tags":["Issues"],"summary":"Get issue","description":"Get a single issue. The validation field is null when no validation row exists; when present it contains status, evidence_summary, and validated_at.","parameters":[{"name":"issue_id","in":"path","required":true,"description":"Issue ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Issue","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"agent_name":{"type":["string","null"]},"name":{"type":"string"},"category":{"anyOf":[{"type":"string","enum":["retry_loop","integration_failure","skipped_work","misread_instruction","out_of_scope_work","instruction_violation","hallucination","communication"]},{"type":"string","const":"unknown"}]},"subsystem":{"type":["string","null"]},"failure_class":{"type":["string","null"]},"canonical_mechanism":{"type":["string","null"]},"status":{"type":"string","enum":["open","in_progress","resolved","dismissed"]},"regressed_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"assignee_user_id":{"type":["string","null"]},"confirmed_by":{"type":["string","null"]},"confirmed_at":{"type":["string","null"],"format":"date-time"},"confirmation_verdict":{"type":["string","null"],"enum":["agreed_with_validation","overrode_inconclusive","overrode_invalid",null]},"flagged":{"type":"boolean"},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}},"required":["id","name","color"],"additionalProperties":false}},"notifiable":{"type":"boolean"},"needs_review":{"type":"boolean"},"introduced_in_release":{"type":["string","null"]},"last_seen_in_release":{"type":["string","null"]},"validation":{"type":["object","null"],"properties":{"status":{"type":"string","enum":["valid","invalid","inconclusive","failed","not_run"]},"evidence_summary":{"type":["string","null"]},"validated_at":{"type":["string","null"],"format":"date-time"}},"required":["status","evidence_summary","validated_at"],"additionalProperties":false},"raw_lane_scores":{"type":["object","null"],"properties":{"impact_occurrences":{"type":"number"},"impact_project_occurrences":{"type":"number"},"impact_project_traces":{"type":"number"},"impact_occurrence_share":{"type":"number"},"impact_affected_traces":{"type":"number"},"impact_trace_share":{"type":"number"},"impact_trace_share_lower":{"type":"number"},"impact_judged_traces":{"type":"number"},"spike_current":{"type":"number"},"spike_baseline":{"type":"number"},"spike_ratio":{"type":"number"},"spike_baseline_count":{"type":"number"},"spike_baseline_exposure":{"type":"number"},"spike_current_exposure":{"type":"number"},"persistence_span_days":{"type":"number"},"persistence_active_days":{"type":"number"},"resolution_floor":{"type":["number","null"]}},"required":["impact_occurrences","impact_project_occurrences","impact_project_traces","impact_occurrence_share","impact_affected_traces","impact_trace_share","impact_trace_share_lower","impact_judged_traces","spike_current","spike_baseline","spike_ratio","spike_baseline_count","spike_baseline_exposure","spike_current_exposure","persistence_span_days","persistence_active_days","resolution_floor"],"additionalProperties":false},"metric_flags":{"type":"object","properties":{"impact":{"type":["boolean","null"]},"spike":{"type":["boolean","null"]},"persistence":{"type":["boolean","null"]}},"required":["impact","spike","persistence"],"additionalProperties":false}},"required":["id","project_id","agent_name","name","category","subsystem","failure_class","canonical_mechanism","status","regressed_at","created_at","updated_at","assignee_user_id","confirmed_by","confirmed_at","confirmation_verdict","flagged","tags","notifiable","needs_review","validation","raw_lane_scores","metric_flags"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}},"patch":{"operationId":"patch_issue","tags":["Issues"],"summary":"Patch issue","description":"Apply exactly one scalar mutation: status (with optional dismissal fields), flagged, or user_id assignee. Empty, mixed, or incompatible bodies are rejected before any write. start-review stays on its dedicated route.","parameters":[{"name":"issue_id","in":"path","required":true,"description":"Issue ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"status":{"type":"string","enum":["open","in_progress","resolved","dismissed"]},"dismissal_reason":{"type":"string","enum":["False positive","Working as intended","Test or synthetic traffic","Acceptable edge case","Known limitation","Out of scope"],"description":"Accepted values: False positive, Working as intended, Test or synthetic traffic, Acceptable edge case, Known limitation, Out of scope"},"dismissal_detail":{"type":"string"},"flagged":{"type":"boolean"},"user_id":{"type":["string","null"]}},"additionalProperties":false}}}},"responses":{"204":{"description":"Issue updated"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string","enum":["issue_terminal_conflict","issue_concurrent_conflict"]}},"required":["detail","code"],"additionalProperties":false}}}}}}},"/issues/bulk-get":{"post":{"operationId":"get_bulk_issues","tags":["Issues"],"summary":"Get issues in bulk","description":"Fetch many issues by id. One invalid or unauthorized id does not hide the rest of the batch. Results preserve input order. Mixed results are HTTP 200.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["issue_ids"],"properties":{"issue_ids":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Bulk issue fetch results","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"issue_id":{"type":"string"},"ok":{"type":"boolean","const":true},"issue":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"agent_name":{"type":["string","null"]},"name":{"type":"string"},"category":{"anyOf":[{"type":"string","enum":["retry_loop","integration_failure","skipped_work","misread_instruction","out_of_scope_work","instruction_violation","hallucination","communication"]},{"type":"string","const":"unknown"}]},"subsystem":{"type":["string","null"]},"failure_class":{"type":["string","null"]},"canonical_mechanism":{"type":["string","null"]},"status":{"type":"string","enum":["open","in_progress","resolved","dismissed"]},"regressed_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"assignee_user_id":{"type":["string","null"]},"confirmed_by":{"type":["string","null"]},"confirmed_at":{"type":["string","null"],"format":"date-time"},"confirmation_verdict":{"type":["string","null"],"enum":["agreed_with_validation","overrode_inconclusive","overrode_invalid",null]},"flagged":{"type":"boolean"},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}},"required":["id","name","color"],"additionalProperties":false}},"notifiable":{"type":"boolean"},"needs_review":{"type":"boolean"},"introduced_in_release":{"type":["string","null"]},"last_seen_in_release":{"type":["string","null"]},"validation":{"type":["object","null"],"properties":{"status":{"type":"string","enum":["valid","invalid","inconclusive","failed","not_run"]},"evidence_summary":{"type":["string","null"]},"validated_at":{"type":["string","null"],"format":"date-time"}},"required":["status","evidence_summary","validated_at"],"additionalProperties":false},"raw_lane_scores":{"type":["object","null"],"properties":{"impact_occurrences":{"type":"number"},"impact_project_occurrences":{"type":"number"},"impact_project_traces":{"type":"number"},"impact_occurrence_share":{"type":"number"},"impact_affected_traces":{"type":"number"},"impact_trace_share":{"type":"number"},"impact_trace_share_lower":{"type":"number"},"impact_judged_traces":{"type":"number"},"spike_current":{"type":"number"},"spike_baseline":{"type":"number"},"spike_ratio":{"type":"number"},"spike_baseline_count":{"type":"number"},"spike_baseline_exposure":{"type":"number"},"spike_current_exposure":{"type":"number"},"persistence_span_days":{"type":"number"},"persistence_active_days":{"type":"number"},"resolution_floor":{"type":["number","null"]}},"required":["impact_occurrences","impact_project_occurrences","impact_project_traces","impact_occurrence_share","impact_affected_traces","impact_trace_share","impact_trace_share_lower","impact_judged_traces","spike_current","spike_baseline","spike_ratio","spike_baseline_count","spike_baseline_exposure","spike_current_exposure","persistence_span_days","persistence_active_days","resolution_floor"],"additionalProperties":false},"metric_flags":{"type":"object","properties":{"impact":{"type":["boolean","null"]},"spike":{"type":["boolean","null"]},"persistence":{"type":["boolean","null"]}},"required":["impact","spike","persistence"],"additionalProperties":false}},"required":["id","project_id","agent_name","name","category","subsystem","failure_class","canonical_mechanism","status","regressed_at","created_at","updated_at","assignee_user_id","confirmed_by","confirmed_at","confirmation_verdict","flagged","tags","notifiable","needs_review","validation","raw_lane_scores","metric_flags"],"additionalProperties":false}},"required":["issue_id","ok","issue"],"additionalProperties":false},{"type":"object","properties":{"issue_id":{"type":"string"},"ok":{"type":"boolean","const":false},"error":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}},"required":["issue_id","ok","error"],"additionalProperties":false}]}}},"required":["results"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/issues/{issue_id}/metric-series":{"get":{"operationId":"get_issue_metric_series","tags":["Issues"],"summary":"Get issue metric series","description":"Returns zero-filled daily occurrence buckets for an issue over the last 30 days.","parameters":[{"name":"issue_id","in":"path","required":true,"description":"Issue ID.","schema":{"type":"string"}},{"name":"project_id","in":"query","required":true,"description":"Project ID.","schema":{"type":"string"}},{"name":"as_of","in":"query","required":false,"description":"As-of timestamp (ISO-8601) for the 30-day window.","schema":{"type":"string"}}],"responses":{"200":{"description":"Issue metric series","content":{"application/json":{"schema":{"type":"object","properties":{"issue_id":{"type":"string"},"project_id":{"type":"string"},"points":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"occurrences":{"type":"number"},"estimated_occurrences":{"type":"number"},"estimated_occurrences_variance":{"type":"number"},"occurred":{"type":"boolean"}},"required":["date","occurrences","estimated_occurrences","estimated_occurrences_variance","occurred"],"additionalProperties":false}},"baseline_mean":{"type":"number"},"band_low":{"type":"number"},"band_high":{"type":"number"},"estimated_baseline_mean":{"type":"number"},"estimated_band_high":{"type":"number"}},"required":["issue_id","project_id","points","baseline_mean","band_low","band_high","estimated_baseline_mean","estimated_band_high"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/issues/{issue_id}/artifact-context":{"get":{"operationId":"get_issue_artifact_context","tags":["Issues"],"summary":"Get issue artifact context","description":"Returns bounded Agent understanding and uploaded text artifact context for validation and debugging.","parameters":[{"name":"issue_id","in":"path","required":true,"description":"Issue ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Issue artifact context","content":{"application/json":{"schema":{"type":"object","properties":{"issue_id":{"type":"string"},"project_id":{"type":"string"},"agent_name":{"type":["string","null"]},"available":{"type":"object","properties":{"learn_agent_kb":{"type":"boolean"},"uploaded_text_artifacts":{"type":"boolean"}},"required":["learn_agent_kb","uploaded_text_artifacts"],"additionalProperties":false},"missing":{"type":"array","items":{"type":"string"}},"learn_agent_kb":{"type":["object","null"],"properties":{"version":{"type":"number"},"agent_name":{"type":["string","null"]},"knowledge_preview":{"type":"string"},"mermaid_preview":{"type":"string"},"knowledge_truncated":{"type":"boolean"},"mermaid_truncated":{"type":"boolean"}},"required":["version","agent_name","knowledge_preview","mermaid_preview","knowledge_truncated","mermaid_truncated"],"additionalProperties":false},"uploaded_text_artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"filename":{"type":"string"},"content_type":{"type":"string"},"size_bytes":{"type":"number"},"content_preview":{"type":"string"},"preview_truncated":{"type":"boolean"}},"required":["id","filename","content_type","size_bytes","content_preview","preview_truncated"],"additionalProperties":false}},"caveats":{"type":"array","items":{"type":"string"}}},"required":["issue_id","project_id","agent_name","available","missing","learn_agent_kb","uploaded_text_artifacts","caveats"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/issues/{issue_id}/occurrences":{"get":{"operationId":"list_issue_occurrences","tags":["Issues"],"summary":"List issue occurrences","description":"List occurrences for an issue. Pass release to filter; empty string matches unreleased occurrences.","parameters":[{"name":"issue_id","in":"path","required":true,"description":"Issue ID.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of records to return.","schema":{"type":"integer","minimum":1}},{"name":"offset","in":"query","required":false,"description":"Number of records to skip.","schema":{"type":"integer","minimum":0}},{"name":"release","in":"query","required":false,"description":"Filter by release. Omit for all; pass an empty string for unreleased occurrences.","schema":{"type":"string"}}],"responses":{"200":{"description":"Issue occurrences","content":{"application/json":{"schema":{"type":"object","properties":{"occurrences":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"trace_id":{"type":"string"},"issue_id":{"type":["string","null"]},"title":{"type":"string"},"rationale":{"type":"string"},"source_span_ids":{"type":"array","items":{"type":"string"}},"evidence_span_ids":{"type":"array","items":{"type":"string"}},"citations":{},"created_at":{"type":["string","null"],"format":"date-time"},"release":{"type":["string","null"]},"trace":{"type":["object","null"],"properties":{"id":{"type":"string"},"otel_trace_id":{"type":["string","null"]},"project_id":{"type":"string"},"service_name":{"type":["string","null"]},"timestamp":{"type":["string","null"],"format":"date-time"},"thread_id":{"type":["string","null"]},"release":{"type":["string","null"]}},"required":["id","otel_trace_id","project_id","service_name","timestamp","thread_id"],"additionalProperties":false}},"required":["id","trace_id","issue_id","title","rationale","source_span_ids","evidence_span_ids","created_at","trace"],"additionalProperties":false}},"total":{"type":"number"},"limit":{"type":"number"},"offset":{"type":"number"},"has_more":{"type":"boolean"}},"required":["occurrences","total","limit","offset","has_more"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/issues/{issue_id}/chat-context":{"get":{"operationId":"get_issue_chat_context","tags":["Issues"],"summary":"Get issue chat context","description":"Returns the issue, recent occurrences, aggregate stats, and per-trace bundles (trace row, stats, and spans) for issue chat.","parameters":[{"name":"issue_id","in":"path","required":true,"description":"Issue ID.","schema":{"type":"string"}},{"name":"project_id","in":"query","required":true,"description":"Project ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Issue chat context","content":{"application/json":{"schema":{"type":"object","properties":{"issue":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"agent_name":{"type":["string","null"]},"name":{"type":"string"},"category":{"anyOf":[{"type":"string","enum":["retry_loop","integration_failure","skipped_work","misread_instruction","out_of_scope_work","instruction_violation","hallucination","communication"]},{"type":"string","const":"unknown"}]},"subsystem":{"type":["string","null"]},"failure_class":{"type":["string","null"]},"canonical_mechanism":{"type":["string","null"]},"status":{"type":"string","enum":["open","in_progress","resolved","dismissed"]},"regressed_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"assignee_user_id":{"type":["string","null"]},"confirmed_by":{"type":["string","null"]},"confirmed_at":{"type":["string","null"],"format":"date-time"},"confirmation_verdict":{"type":["string","null"],"enum":["agreed_with_validation","overrode_inconclusive","overrode_invalid",null]},"flagged":{"type":"boolean"},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}},"required":["id","name","color"],"additionalProperties":false}},"notifiable":{"type":"boolean"},"needs_review":{"type":"boolean"},"introduced_in_release":{"type":["string","null"]},"last_seen_in_release":{"type":["string","null"]}},"required":["id","project_id","agent_name","name","category","subsystem","failure_class","canonical_mechanism","status","regressed_at","created_at","updated_at","assignee_user_id","confirmed_by","confirmed_at","confirmation_verdict","flagged","tags","notifiable","needs_review"],"additionalProperties":false},"occurrences":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"trace_id":{"type":"string"},"issue_id":{"type":["string","null"]},"title":{"type":"string"},"rationale":{"type":"string"},"source_span_ids":{"type":"array","items":{"type":"string"}},"evidence_span_ids":{"type":"array","items":{"type":"string"}},"citations":{},"created_at":{"type":["string","null"],"format":"date-time"},"release":{"type":["string","null"]},"trace":{"type":["object","null"],"properties":{"id":{"type":"string"},"otel_trace_id":{"type":["string","null"]},"project_id":{"type":"string"},"service_name":{"type":["string","null"]},"timestamp":{"type":["string","null"],"format":"date-time"},"thread_id":{"type":["string","null"]},"release":{"type":["string","null"]}},"required":["id","otel_trace_id","project_id","service_name","timestamp","thread_id"],"additionalProperties":false}},"required":["id","trace_id","issue_id","title","rationale","source_span_ids","evidence_span_ids","created_at","trace"],"additionalProperties":false}},"traces":{"type":"array","items":{"type":"object","properties":{"trace":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"service_name":{"type":["string","null"]},"timestamp":{"type":["string","null"],"format":"date-time"},"otel_trace_id":{"type":"string"},"ready":{"type":"boolean"}},"required":["id","project_id","service_name","timestamp","otel_trace_id","ready"],"additionalProperties":false},"stats":{"type":["object","null"],"properties":{"span_count":{"type":"number"},"total_duration_ms":{"type":["number","null"]},"error_count":{"type":"number"},"agent_name":{"type":["string","null"]},"thread_id":{"type":["string","null"]},"agent_input":{"type":"null"},"agent_input_display":{"type":["string","null"]},"agent_output":{"type":"null"},"tool_calls":{"type":"array","items":{"type":"object","properties":{"span_id":{"type":"string"},"name":{"type":"string"},"duration_ms":{"type":["number","null"]},"is_error":{"type":"boolean"},"user_facing_message":{"type":"string"},"user_facing_message_truncated":{"type":"boolean"},"user_facing_messages_omitted":{"type":"integer","exclusiveMinimum":0}},"required":["span_id","name","duration_ms","is_error"],"additionalProperties":false}},"input_tokens":{"type":["number","null"]},"output_tokens":{"type":["number","null"]},"estimated_cost_usd":{"type":["number","null"]},"release":{"type":["string","null"]}},"required":["span_count","total_duration_ms","error_count","agent_name","thread_id","agent_input_display","tool_calls","input_tokens","output_tokens","estimated_cost_usd"],"additionalProperties":false},"spans":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"otel_span_id":{"type":"string"},"parent_otel_span_id":{"type":["string","null"]},"name":{"type":"string"},"kind":{"type":["string","null"]},"start_time_ns":{"type":["string","null"]},"end_time_ns":{"type":["string","null"]},"duration_ms":{"type":["number","null"]},"status_code":{"type":["string","null"]},"status_description":{"type":["string","null"]},"input_tokens":{"type":["number","null"]},"output_tokens":{"type":["number","null"]},"model_name":{"type":["string","null"]},"tps":{"type":["number","null"]},"attributes":{"type":"object","additionalProperties":{}},"events":{}},"required":["id","otel_span_id","parent_otel_span_id","name","kind","start_time_ns","end_time_ns","duration_ms","status_code","status_description","input_tokens","output_tokens","model_name","tps"],"additionalProperties":false}}},"required":["trace","stats","spans"],"additionalProperties":false}},"stats":{"type":"object","properties":{"first_seen_at":{"type":["string","null"],"format":"date-time"},"last_seen_at":{"type":["string","null"],"format":"date-time"},"occurrence_count":{"type":"number"},"trace_count":{"type":"number"},"introduced_in_release":{"type":["string","null"]},"last_seen_in_release":{"type":["string","null"]}},"required":["first_seen_at","last_seen_at","occurrence_count","trace_count"],"additionalProperties":false}},"required":["issue","occurrences","traces","stats"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/issues/{issue_id}/markdown":{"get":{"operationId":"get_issue_markdown","tags":["Issues"],"summary":"Get issue markdown","description":"Build markdown for an issue.","parameters":[{"name":"issue_id","in":"path","required":true,"description":"Issue ID.","schema":{"type":"string"}},{"name":"project_id","in":"query","required":true,"description":"Project ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Issue markdown","content":{"application/json":{"schema":{"type":"object","properties":{"markdown":{"type":"string"}},"required":["markdown"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/issues/{issue_id}/start-review":{"patch":{"operationId":"start_issue_review","tags":["Issues"],"summary":"Start issue review","description":"Set status to in_progress and assign the acting user when the issue is unassigned, in one atomic write. An existing assignee is preserved; an issue already in progress is returned unchanged.","parameters":[{"name":"issue_id","in":"path","required":true,"description":"Issue ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Issue moved into review","content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string"},"status":{"type":"string","enum":["open","in_progress","resolved","dismissed"]},"assignee_user_id":{"type":["string","null"]}},"required":["project_id","status","assignee_user_id"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string","enum":["issue_terminal_conflict","issue_concurrent_conflict"]}},"required":["detail","code"],"additionalProperties":false}}}}}}},"/issues/{issue_id}/merge":{"post":{"operationId":"merge_issues","tags":["Issues"],"summary":"Merge issues","description":"Merge one active same-agent issue into this issue. The loser is dismissed as a merged duplicate; its occurrences are immediately moved onto the survivor.","parameters":[{"name":"issue_id","in":"path","required":true,"description":"Survivor issue ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["loser_issue_ids"],"properties":{"loser_issue_ids":{"type":"array","items":{"type":"string"},"minItems":1}},"additionalProperties":false}}}},"responses":{"200":{"description":"Issues merged","content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string"},"survivor_issue_id":{"type":"string"},"loser_issue_ids":{"type":"array","items":{"type":"string"}},"occurrences_repointed":{"type":"integer","minimum":0}},"required":["project_id","survivor_issue_id","loser_issue_ids","occurrences_repointed"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string","enum":["issue_terminal_conflict","issue_concurrent_conflict"]}},"required":["detail","code"],"additionalProperties":false}}}}}}},"/issues/tags/{tag_id}":{"delete":{"operationId":"delete_issue_tag","tags":["Issues"],"summary":"Delete issue tag","description":"Delete a project-scoped tag and cascade removal from all issues.","parameters":[{"name":"tag_id","in":"path","required":true,"description":"Issue tag ID.","schema":{"type":"string"}},{"name":"project_id","in":"query","required":true,"description":"Project ID.","schema":{"type":"string"}}],"responses":{"204":{"description":"Issue tag deleted"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/issues/{issue_id}/tags/{tag_id}":{"put":{"operationId":"set_issue_tag_attach","tags":["Issues"],"summary":"Attach issue tag","description":"Attach a tag to an issue idempotently.","parameters":[{"name":"issue_id","in":"path","required":true,"description":"Issue ID.","schema":{"type":"string"}},{"name":"tag_id","in":"path","required":true,"description":"Issue tag ID.","schema":{"type":"string"}}],"responses":{"204":{"description":"Issue tag attached"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}},"delete":{"operationId":"set_issue_tag_detach","tags":["Issues"],"summary":"Detach issue tag","description":"Detach a tag from an issue idempotently.","parameters":[{"name":"issue_id","in":"path","required":true,"description":"Issue ID.","schema":{"type":"string"}},{"name":"tag_id","in":"path","required":true,"description":"Issue tag ID.","schema":{"type":"string"}}],"responses":{"204":{"description":"Issue tag detached"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/issues/batch":{"post":{"operationId":"mutate_issues_batch","tags":["Issues"],"summary":"Mutate issues in batch","description":"Apply one discriminated batch mutation: status, start-review, flag, assignee, or tag. Mixed item-level failures return HTTP 200. Successful items are not rolled back.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["operation","issue_ids"],"properties":{"operation":{"type":"string","enum":["status","start-review","flag","assignee","tag"]},"issue_ids":{"type":"array","items":{"type":"string"}},"status":{"type":"string","enum":["open","in_progress","resolved","dismissed"]},"dismissal_reason":{"type":"string","enum":["False positive","Working as intended","Test or synthetic traffic","Acceptable edge case","Known limitation","Out of scope"],"description":"Accepted values: False positive, Working as intended, Test or synthetic traffic, Acceptable edge case, Known limitation, Out of scope"},"dismissal_detail":{"type":"string"},"flagged":{"type":"boolean"},"user_id":{"type":["string","null"]},"tag_id":{"type":"string"},"attached":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Batch issue mutation results","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"anyOf":[{"oneOf":[{"type":"object","properties":{"issue_id":{"type":"string"},"ok":{"type":"boolean","const":true},"project_id":{"type":"string"}},"required":["issue_id","ok","project_id"],"additionalProperties":false},{"type":"object","properties":{"issue_id":{"type":"string"},"ok":{"type":"boolean","const":false},"error":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}},"required":["issue_id","ok","error"],"additionalProperties":false}]},{"oneOf":[{"type":"object","properties":{"issue_id":{"type":"string"},"ok":{"type":"boolean","const":true},"project_id":{"type":"string"},"status":{"type":"string","enum":["open","in_progress","resolved","dismissed"]},"assignee_user_id":{"type":["string","null"]}},"required":["issue_id","ok","project_id","status","assignee_user_id"],"additionalProperties":false},{"type":"object","properties":{"issue_id":{"type":"string"},"ok":{"type":"boolean","const":false},"error":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}},"required":["issue_id","ok","error"],"additionalProperties":false}]}]}},"project_id":{"type":"string"}},"required":["results"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/projects/{project_id}/linear/connection":{"get":{"operationId":"get_linear_connection","tags":["Linear Tickets"],"summary":"Inspect Linear connection","description":"Returns retained Linear connection health and project defaults. Disabled rollout state does not remove stored history.","parameters":[{"name":"project_id","in":"path","required":true,"description":"Lemma project ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Linear connection health","content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid"},"feature_enabled":{"type":"boolean"},"connection":{"type":["object","null"],"properties":{"status":{"type":"string","enum":["connected","authentication_required","temporarily_failing","disconnected"]},"workspace_id":{"type":"string"},"workspace_name":{"type":"string"},"workspace_url_key":{"type":["string","null"]},"connected_at":{"type":"string"},"disconnected_at":{"type":["string","null"]},"last_successful_sync_at":{"type":["string","null"]},"last_error_code":{"type":["string","null"]},"last_error_message":{"type":["string","null"]},"last_error_at":{"type":["string","null"]}},"required":["status","workspace_id","workspace_name","workspace_url_key","connected_at","disconnected_at","last_successful_sync_at","last_error_code","last_error_message","last_error_at"],"additionalProperties":false},"defaults":{"type":["object","null"],"properties":{"team_id":{"type":"string"},"team_name":{"type":"string"},"team_key":{"type":"string"},"linear_project_id":{"type":["string","null"]},"linear_project_name":{"type":["string","null"]},"updated_at":{"type":"string"}},"required":["team_id","team_name","team_key","linear_project_id","linear_project_name","updated_at"],"additionalProperties":false}},"required":["project_id","feature_enabled","connection","defaults"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/issues/{issue_id}/linear-ticket":{"get":{"operationId":"get_linear_ticket_link","tags":["Linear Tickets"],"summary":"Inspect issue Linear ticket","parameters":[{"name":"issue_id","in":"path","required":true,"description":"Lemma issue ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Linear ticket link","content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid"},"issue_id":{"type":"string","format":"uuid"},"issue_assignee_user_id":{"type":["string","null"]},"link":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid"},"origin":{"type":"string","enum":["created","existing"]},"linked_at":{"type":"string"},"sync_status":{"type":"string","enum":["healthy","stale","ticket_unavailable","sync_error"]},"last_successful_sync_at":{"type":["string","null"]},"last_error_code":{"type":["string","null"]},"last_error_message":{"type":["string","null"]},"last_error_at":{"type":["string","null"]},"ticket":{"type":"object","properties":{"id":{"type":"string"},"identifier":{"type":"string"},"url":{"type":"string","format":"uri"},"title":{"type":"string"},"team_id":{"type":"string"},"team_name":{"type":"string"},"team_key":{"type":"string"},"linear_project_id":{"type":["string","null"]},"linear_project_name":{"type":["string","null"]},"state_id":{"type":"string"},"state_name":{"type":"string"},"state_type":{"type":"string"},"linear_assignee":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"avatar_url":{"type":["string","null"]}},"required":["id","name","avatar_url"],"additionalProperties":false}},"required":["id","identifier","url","title","team_id","team_name","team_key","linear_project_id","linear_project_name","state_id","state_name","state_type","linear_assignee"],"additionalProperties":false}},"required":["id","origin","linked_at","sync_status","last_successful_sync_at","last_error_code","last_error_message","last_error_at","ticket"],"additionalProperties":false},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["ticket_created","ticket_linked","ticket_unlinked","ticket_completed_issue_resolved","dismissal_cancel_requested","dismissal_cancel_completed","recurrence_comment_added","sync_degraded","sync_restored"]},"actor_type":{"type":"string","enum":["user","api_key","system"]},"actor_id":{"type":["string","null"]},"ticket_identifier":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"occurred_at":{"type":"string"}},"required":["id","type","actor_type","actor_id","ticket_identifier","metadata","occurred_at"],"additionalProperties":false}},"pull_requests":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"title":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["id","title","url"],"additionalProperties":false}}},"required":["project_id","issue_id","issue_assignee_user_id","link","activity"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}},"post":{"operationId":"create_linear_ticket","tags":["Linear Tickets"],"summary":"Create Linear ticket","parameters":[{"name":"issue_id","in":"path","required":true,"description":"Lemma issue ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["idempotency_key"],"properties":{"idempotency_key":{"type":"string"},"team_id":{"type":"string"},"linear_project_id":{"type":["string","null"]},"combined_assignee_lemma_user_id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"}},"additionalProperties":false}}}},"responses":{"201":{"description":"Created Linear ticket link","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"project_id":{"type":"string","format":"uuid"},"issue_id":{"type":"string","format":"uuid"},"operation_id":{"type":"string","format":"uuid"},"idempotent_replay":{"type":"boolean"},"issue_assignee_user_id":{"type":["string","null"]},"status":{"type":"string","const":"succeeded"},"link":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"origin":{"type":"string","enum":["created","existing"]},"linked_at":{"type":"string"},"sync_status":{"type":"string","enum":["healthy","stale","ticket_unavailable","sync_error"]},"last_successful_sync_at":{"type":["string","null"]},"last_error_code":{"type":["string","null"]},"last_error_message":{"type":["string","null"]},"last_error_at":{"type":["string","null"]},"ticket":{"type":"object","properties":{"id":{"type":"string"},"identifier":{"type":"string"},"url":{"type":"string","format":"uri"},"title":{"type":"string"},"team_id":{"type":"string"},"team_name":{"type":"string"},"team_key":{"type":"string"},"linear_project_id":{"type":["string","null"]},"linear_project_name":{"type":["string","null"]},"state_id":{"type":"string"},"state_name":{"type":"string"},"state_type":{"type":"string"},"linear_assignee":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"avatar_url":{"type":["string","null"]}},"required":["id","name","avatar_url"],"additionalProperties":false}},"required":["id","identifier","url","title","team_id","team_name","team_key","linear_project_id","linear_project_name","state_id","state_name","state_type","linear_assignee"],"additionalProperties":false}},"required":["id","origin","linked_at","sync_status","last_successful_sync_at","last_error_code","last_error_message","last_error_at","ticket"],"additionalProperties":false}},"required":["project_id","issue_id","operation_id","idempotent_replay","issue_assignee_user_id","status","link"],"additionalProperties":false},{"type":"object","properties":{"project_id":{"type":"string","format":"uuid"},"issue_id":{"type":"string","format":"uuid"},"operation_id":{"type":"string","format":"uuid"},"idempotent_replay":{"type":"boolean"},"issue_assignee_user_id":{"type":["string","null"]},"status":{"type":"string","const":"pending"},"link":{"type":"null"}},"required":["project_id","issue_id","operation_id","idempotent_replay","issue_assignee_user_id","status","link"],"additionalProperties":false}]}}}},"202":{"description":"Accepted Linear ticket creation","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"project_id":{"type":"string","format":"uuid"},"issue_id":{"type":"string","format":"uuid"},"operation_id":{"type":"string","format":"uuid"},"idempotent_replay":{"type":"boolean"},"issue_assignee_user_id":{"type":["string","null"]},"status":{"type":"string","const":"succeeded"},"link":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"origin":{"type":"string","enum":["created","existing"]},"linked_at":{"type":"string"},"sync_status":{"type":"string","enum":["healthy","stale","ticket_unavailable","sync_error"]},"last_successful_sync_at":{"type":["string","null"]},"last_error_code":{"type":["string","null"]},"last_error_message":{"type":["string","null"]},"last_error_at":{"type":["string","null"]},"ticket":{"type":"object","properties":{"id":{"type":"string"},"identifier":{"type":"string"},"url":{"type":"string","format":"uri"},"title":{"type":"string"},"team_id":{"type":"string"},"team_name":{"type":"string"},"team_key":{"type":"string"},"linear_project_id":{"type":["string","null"]},"linear_project_name":{"type":["string","null"]},"state_id":{"type":"string"},"state_name":{"type":"string"},"state_type":{"type":"string"},"linear_assignee":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"avatar_url":{"type":["string","null"]}},"required":["id","name","avatar_url"],"additionalProperties":false}},"required":["id","identifier","url","title","team_id","team_name","team_key","linear_project_id","linear_project_name","state_id","state_name","state_type","linear_assignee"],"additionalProperties":false}},"required":["id","origin","linked_at","sync_status","last_successful_sync_at","last_error_code","last_error_message","last_error_at","ticket"],"additionalProperties":false}},"required":["project_id","issue_id","operation_id","idempotent_replay","issue_assignee_user_id","status","link"],"additionalProperties":false},{"type":"object","properties":{"project_id":{"type":"string","format":"uuid"},"issue_id":{"type":"string","format":"uuid"},"operation_id":{"type":"string","format":"uuid"},"idempotent_replay":{"type":"boolean"},"issue_assignee_user_id":{"type":["string","null"]},"status":{"type":"string","const":"pending"},"link":{"type":"null"}},"required":["project_id","issue_id","operation_id","idempotent_replay","issue_assignee_user_id","status","link"],"additionalProperties":false}]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}},"put":{"operationId":"link_linear_ticket","tags":["Linear Tickets"],"summary":"Link confirmed Linear ticket","parameters":[{"name":"issue_id","in":"path","required":true,"description":"Lemma issue ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["preview_token"],"properties":{"preview_token":{"type":"string"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Linear ticket link","content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid"},"issue_id":{"type":"string","format":"uuid"},"issue_assignee_user_id":{"type":["string","null"]},"link":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid"},"origin":{"type":"string","enum":["created","existing"]},"linked_at":{"type":"string"},"sync_status":{"type":"string","enum":["healthy","stale","ticket_unavailable","sync_error"]},"last_successful_sync_at":{"type":["string","null"]},"last_error_code":{"type":["string","null"]},"last_error_message":{"type":["string","null"]},"last_error_at":{"type":["string","null"]},"ticket":{"type":"object","properties":{"id":{"type":"string"},"identifier":{"type":"string"},"url":{"type":"string","format":"uri"},"title":{"type":"string"},"team_id":{"type":"string"},"team_name":{"type":"string"},"team_key":{"type":"string"},"linear_project_id":{"type":["string","null"]},"linear_project_name":{"type":["string","null"]},"state_id":{"type":"string"},"state_name":{"type":"string"},"state_type":{"type":"string"},"linear_assignee":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"avatar_url":{"type":["string","null"]}},"required":["id","name","avatar_url"],"additionalProperties":false}},"required":["id","identifier","url","title","team_id","team_name","team_key","linear_project_id","linear_project_name","state_id","state_name","state_type","linear_assignee"],"additionalProperties":false}},"required":["id","origin","linked_at","sync_status","last_successful_sync_at","last_error_code","last_error_message","last_error_at","ticket"],"additionalProperties":false},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["ticket_created","ticket_linked","ticket_unlinked","ticket_completed_issue_resolved","dismissal_cancel_requested","dismissal_cancel_completed","recurrence_comment_added","sync_degraded","sync_restored"]},"actor_type":{"type":"string","enum":["user","api_key","system"]},"actor_id":{"type":["string","null"]},"ticket_identifier":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"occurred_at":{"type":"string"}},"required":["id","type","actor_type","actor_id","ticket_identifier","metadata","occurred_at"],"additionalProperties":false}},"pull_requests":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"title":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["id","title","url"],"additionalProperties":false}}},"required":["project_id","issue_id","issue_assignee_user_id","link","activity"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}},"delete":{"operationId":"unlink_linear_ticket","tags":["Linear Tickets"],"summary":"Unlink Linear ticket","parameters":[{"name":"issue_id","in":"path","required":true,"description":"Lemma issue ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"Unlinked Linear ticket","content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid"},"issue_id":{"type":"string","format":"uuid"},"issue_assignee_user_id":{"type":["string","null"]},"link":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid"},"origin":{"type":"string","enum":["created","existing"]},"linked_at":{"type":"string"},"sync_status":{"type":"string","enum":["healthy","stale","ticket_unavailable","sync_error"]},"last_successful_sync_at":{"type":["string","null"]},"last_error_code":{"type":["string","null"]},"last_error_message":{"type":["string","null"]},"last_error_at":{"type":["string","null"]},"ticket":{"type":"object","properties":{"id":{"type":"string"},"identifier":{"type":"string"},"url":{"type":"string","format":"uri"},"title":{"type":"string"},"team_id":{"type":"string"},"team_name":{"type":"string"},"team_key":{"type":"string"},"linear_project_id":{"type":["string","null"]},"linear_project_name":{"type":["string","null"]},"state_id":{"type":"string"},"state_name":{"type":"string"},"state_type":{"type":"string"},"linear_assignee":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"avatar_url":{"type":["string","null"]}},"required":["id","name","avatar_url"],"additionalProperties":false}},"required":["id","identifier","url","title","team_id","team_name","team_key","linear_project_id","linear_project_name","state_id","state_name","state_type","linear_assignee"],"additionalProperties":false}},"required":["id","origin","linked_at","sync_status","last_successful_sync_at","last_error_code","last_error_message","last_error_at","ticket"],"additionalProperties":false},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["ticket_created","ticket_linked","ticket_unlinked","ticket_completed_issue_resolved","dismissal_cancel_requested","dismissal_cancel_completed","recurrence_comment_added","sync_degraded","sync_restored"]},"actor_type":{"type":"string","enum":["user","api_key","system"]},"actor_id":{"type":["string","null"]},"ticket_identifier":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"occurred_at":{"type":"string"}},"required":["id","type","actor_type","actor_id","ticket_identifier","metadata","occurred_at"],"additionalProperties":false}},"pull_requests":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"title":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["id","title","url"],"additionalProperties":false}}},"required":["project_id","issue_id","issue_assignee_user_id","link","activity"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/projects/{project_id}/linear-ticket-summaries":{"post":{"operationId":"get_linear_ticket_summaries","tags":["Linear Tickets"],"summary":"Inspect compact Linear ticket states","description":"Returns no ticket history or workspace directory; only active compact states for the requested project issues.","parameters":[{"name":"project_id","in":"path","required":true,"description":"Lemma project ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["issue_ids"],"properties":{"issue_ids":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Compact Linear ticket states","content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid"},"feature_enabled":{"type":"boolean"},"summaries":{"type":"array","items":{"type":"object","properties":{"issue_id":{"type":"string","format":"uuid"},"identifier":{"type":"string"},"state_name":{"type":"string"},"state_type":{"type":"string"},"sync_status":{"type":"string","enum":["healthy","stale","ticket_unavailable","sync_error"]}},"required":["issue_id","identifier","state_name","state_type","sync_status"],"additionalProperties":false}}},"required":["project_id","feature_enabled","summaries"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}},"/issues/{issue_id}/linear-ticket/preview":{"post":{"operationId":"preview_linear_ticket","tags":["Linear Tickets"],"summary":"Preview exact Linear ticket","parameters":[{"name":"issue_id","in":"path","required":true,"description":"Lemma issue ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["ticket_reference"],"properties":{"ticket_reference":{"type":"string"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Exact Linear ticket preview","content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid"},"issue_id":{"type":"string","format":"uuid"},"ticket":{"type":"object","properties":{"id":{"type":"string"},"identifier":{"type":"string"},"url":{"type":"string","format":"uri"},"title":{"type":"string"},"team_id":{"type":"string"},"team_name":{"type":"string"},"team_key":{"type":"string"},"linear_project_id":{"type":["string","null"]},"linear_project_name":{"type":["string","null"]},"state_id":{"type":"string"},"state_name":{"type":"string"},"state_type":{"type":"string"},"linear_assignee":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"avatar_url":{"type":["string","null"]}},"required":["id","name","avatar_url"],"additionalProperties":false},"updated_at":{"type":"string"}},"required":["id","identifier","url","title","team_id","team_name","team_key","linear_project_id","linear_project_name","state_id","state_name","state_type","linear_assignee","updated_at"],"additionalProperties":false},"preview_token":{"type":"string"},"expires_at":{"type":"string"}},"required":["project_id","issue_id","ticket","preview_token","expires_at"],"additionalProperties":false}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"code":{"type":"string"}},"required":["detail"],"additionalProperties":false}}}}}}}}}