{"openapi":"3.1.0","info":{"title":"Squasher API","version":"1.0.0","description":"Canonical contract for every public Squasher API operation. Generated from packages/api-spec."},"servers":[{"url":"https://api.squasher.ai","description":"production"}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]},{"OAuth2":["mcp"]}],"paths":{"/v1/projects":{"get":{"operationId":"projects.list","summary":"List all service projects in the authenticated organization","description":"List all service projects in the authenticated organization","tags":["projects"],"parameters":[],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":false,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}":{"get":{"operationId":"projects.get","summary":"Get a single service project by ID","description":"Get a single service project by ID","tags":["projects"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":false,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/spike-protection":{"put":{"operationId":"projects.updateSpikeProtection","summary":"Update the per-project spike protection threshold","description":"Update the per-project spike protection threshold","tags":["projects"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/errors":{"get":{"operationId":"errors.list","summary":"List error groups with status, sorting, pagination, and optional time-window filters","description":"List error groups with status, sorting, pagination, and optional time-window filters","tags":["errors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/errors/{error_group_id}":{"get":{"operationId":"errors.get","summary":"Get a single error group by ID, optionally skipping or time-windowing replay linkage","description":"Get a single error group by ID, optionally skipping or time-windowing replay linkage","tags":["errors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"error_group_id","in":"path","required":true,"description":"Path parameter error_group_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"patch":{"operationId":"errors.update","summary":"Update assignment or workflow metadata for an error group","description":"Update assignment or workflow metadata for an error group","tags":["errors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"error_group_id","in":"path","required":true,"description":"Path parameter error_group_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assigned_to":{"type":["string","null"],"description":"User id to assign, or null to clear."},"bookmarked":{"type":"boolean","description":"Whether the current user bookmarked the error group."},"priority":{"type":"string","enum":["low","medium","high","critical"],"description":"Triage priority for the error group."},"status":{"type":"string","enum":["unresolved","resolved","ignored","muted"],"description":"Workflow status for the error group."},"subscribed":{"type":"boolean","description":"Whether the current user is subscribed to the error group."}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/errors/{error_group_id}/merge":{"post":{"operationId":"errors.merge","summary":"Merge duplicate error groups into the canonical error group","description":"Merge duplicate error groups into the canonical error group","tags":["errors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"error_group_id","in":"path","required":true,"description":"Path parameter error_group_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"duplicate_error_group_ids":{"type":"array","items":{"type":"string"}}},"required":["duplicate_error_group_ids"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/errors/{error_group_id}/unmerge":{"post":{"operationId":"errors.unmerge","summary":"Unmerge a duplicate error group and restore it to normal listings","description":"Unmerge a duplicate error group and restore it to normal listings","tags":["errors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"error_group_id","in":"path","required":true,"description":"Path parameter error_group_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/errors/{error_group_id}/traces":{"get":{"operationId":"errors.listRelatedTraces","summary":"List traces correlated to an error group, optionally scoped by time window","description":"List traces correlated to an error group, optionally scoped by time window","tags":["errors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"error_group_id","in":"path","required":true,"description":"Path parameter error_group_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/errors/{error_group_id}/suspect-commits":{"get":{"operationId":"errors.listSuspectCommits","summary":"List suspect commits correlated to an error group's stack frames, optionally scoped by time window","description":"List suspect commits correlated to an error group's stack frames, optionally scoped by time window","tags":["errors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"error_group_id","in":"path","required":true,"description":"Path parameter error_group_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/errors/{error_group_id}/triage-runs":{"get":{"operationId":"errors.listTriageRuns","summary":"List AI triage runs for an error group","description":"List AI triage runs for an error group","tags":["errors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"error_group_id","in":"path","required":true,"description":"Path parameter error_group_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/errors/{error_group_id}/triage":{"post":{"operationId":"errors.createTriage","summary":"Create or reuse an AI triage run for an error group","description":"Create or reuse an AI triage run for an error group","tags":["errors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"error_group_id","in":"path","required":true,"description":"Path parameter error_group_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/events/search":{"get":{"operationId":"events.search","summary":"Full-text search events with Datadog-style query syntax","description":"Full-text search events with Datadog-style query syntax","tags":["events"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/events/latency":{"get":{"operationId":"events.latency","summary":"Get event ingestion latency grouped by source","description":"Get event ingestion latency grouped by source","tags":["events"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/deployments":{"get":{"operationId":"deployments.list","summary":"List provider and generic deployment records","description":"List provider and generic deployment records","tags":["deployments"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"post":{"operationId":"deployments.create","summary":"Create or update an idempotent deployment record","description":"Create or update an idempotent deployment record","tags":["deployments"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["deployment_id"],"properties":{"branch":{"type":"string"},"commit_sha":{"type":"string"},"deployment_id":{"type":"string"},"deployment_url":{"type":"string"},"environment":{"type":"string"},"finished_at":{"type":"string","format":"date-time"},"provider":{"type":"string"},"service":{"type":"string"},"service_name":{"type":"string"},"started_at":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["building","canceled","failed","pending","ready","skipped","unknown"]},"url":{"type":"string"},"version":{"type":"string"}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/logs":{"get":{"operationId":"logs.search","summary":"Search logs for a project with time-window and field filters","description":"Search logs for a project with time-window and field filters","tags":["logs"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"from","in":"query","required":false,"description":"Inclusive ISO-8601 window start","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":false,"description":"Inclusive ISO-8601 window end","schema":{"type":"string","format":"date-time"}},{"name":"q","in":"query","required":false,"description":"Full-text log search query","schema":{"type":"string"}},{"name":"connector_key","in":"query","required":false,"description":"Connector key filter","schema":{"type":"string"}},{"name":"environment","in":"query","required":false,"description":"Deployment environment filter","schema":{"type":"string"}},{"name":"level","in":"query","required":false,"description":"Comma-separated severity filters","schema":{"type":"string"}},{"name":"release","in":"query","required":false,"description":"Service release filter","schema":{"type":"string"}},{"name":"service","in":"query","required":false,"description":"Service name filter","schema":{"type":"string"}},{"name":"source","in":"query","required":false,"description":"Log source filter","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Maximum rows to return","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"Pagination offset","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/logs/histogram":{"get":{"operationId":"logs.histogram","summary":"Get log event counts bucketed by time and severity","description":"Get log event counts bucketed by time and severity","tags":["logs"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"from","in":"query","required":false,"description":"Inclusive ISO-8601 window start","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":false,"description":"Inclusive ISO-8601 window end","schema":{"type":"string","format":"date-time"}},{"name":"q","in":"query","required":false,"description":"Full-text log search query","schema":{"type":"string"}},{"name":"connector_key","in":"query","required":false,"description":"Connector key filter","schema":{"type":"string"}},{"name":"environment","in":"query","required":false,"description":"Deployment environment filter","schema":{"type":"string"}},{"name":"level","in":"query","required":false,"description":"Comma-separated severity filters","schema":{"type":"string"}},{"name":"release","in":"query","required":false,"description":"Service release filter","schema":{"type":"string"}},{"name":"service","in":"query","required":false,"description":"Service name filter","schema":{"type":"string"}},{"name":"source","in":"query","required":false,"description":"Log source filter","schema":{"type":"string"}},{"name":"group_by","in":"query","required":false,"description":"Optional histogram grouping dimension","schema":{"type":"string","enum":["service","http_method","service_version","environment","level","source"]}},{"name":"step","in":"query","required":false,"description":"Optional histogram bucket size","schema":{"type":"string","enum":["1m","5m","15m","1h","6h","1d"]}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/logs/insights":{"get":{"operationId":"logs.insights","summary":"Find recurring log patterns and compare field distributions with the previous period; the resolved window must be ordered and no longer than 30 days","description":"Find recurring log patterns and compare field distributions with the previous period; the resolved window must be ordered and no longer than 30 days","tags":["logs"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"from","in":"query","required":false,"description":"Inclusive window start; must not be after `to`","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":false,"description":"Inclusive window end; the resolved `from`/`to` range cannot exceed 30 days","schema":{"type":"string","format":"date-time"}},{"name":"q","in":"query","required":false,"description":"Full-text log search query","schema":{"type":"string"}},{"name":"connector_key","in":"query","required":false,"description":"Connector key filter","schema":{"type":"string"}},{"name":"environment","in":"query","required":false,"description":"Deployment environment filter","schema":{"type":"string"}},{"name":"level","in":"query","required":false,"description":"Comma-separated severity filters","schema":{"type":"string"}},{"name":"release","in":"query","required":false,"description":"Service release filter","schema":{"type":"string"}},{"name":"service","in":"query","required":false,"description":"Service name filter","schema":{"type":"string"}},{"name":"source","in":"query","required":false,"description":"Log source filter","schema":{"type":"string"}},{"name":"dimensions","in":"query","required":false,"description":"Up to five comma-separated public log attribute paths sampled independently in each window for current-versus-previous distributions","schema":{"type":"string"}},{"name":"view","in":"query","required":false,"description":"Use facets to return only exact current filter distributions without pattern or previous-window analysis","schema":{"type":"string","enum":["facets","full"]}}],"responses":{"200":{"description":"Log patterns and current-versus-previous distributions"},"400":{"description":"Invalid timestamp, `from` after `to`, or a resolved insight window longer than 30 days","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"read"}},"/v1/projects/{project_id}/metrics":{"get":{"operationId":"metrics.list","summary":"List metric series for a project with filtering and pagination","description":"List metric series for a project with filtering and pagination","tags":["metrics"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/metrics/timeline":{"get":{"operationId":"metrics.timeline","summary":"Get time-series metric data for a named metric and metric type with avg, count, sum, and percentile aggregations","description":"Get time-series metric data for a named metric and metric type with avg, count, sum, and percentile aggregations","tags":["metrics"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/metrics/inspect":{"get":{"operationId":"metrics.inspect","summary":"Get AI/operator-friendly snapshots and highlights for one metric series","description":"Get AI/operator-friendly snapshots and highlights for one metric series","tags":["metrics"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/monitors":{"get":{"operationId":"monitors.list","summary":"List monitors for a project with agent-friendly filters","description":"List monitors for a project with agent-friendly filters","tags":["monitors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"post":{"operationId":"monitors.create","summary":"Create a monitor for a project. Body: { name, kind, target, config, enabled?, linkedComponent?, runbookUrl? }","description":"Create a monitor for a project. Body: { name, kind, target, config, enabled?, linkedComponent?, runbookUrl? }","tags":["monitors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"config":{"additionalProperties":true,"description":"Monitor-kind-specific configuration.","type":"object"},"enabled":{"type":"boolean"},"kind":{"description":"Monitor kind such as http, ssl, tcp, or heartbeat.","type":"string"},"linkedComponent":{"type":["string","null"]},"name":{"type":"string"},"runbookUrl":{"type":["string","null"]},"target":{"description":"URL, host, token, or monitor-specific target.","type":"string"}},"required":["config","kind","name","target"],"type":"object"}}}},"responses":{"201":{"description":"Created monitor","content":{"application/json":{"schema":{"additionalProperties":true,"description":"Monitor summary with latest health state.","type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/monitor-templates":{"get":{"operationId":"monitors.listTemplates","summary":"List monitor templates for one-click creation","description":"List monitor templates for one-click creation","tags":["monitors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Monitor template catalog","content":{"application/json":{"schema":{"items":{"additionalProperties":false,"properties":{"configTemplate":{"additionalProperties":true,"description":"Monitor config with template placeholders for input values.","type":"object"},"description":{"type":"string"},"id":{"type":"string"},"inputs":{"items":{"additionalProperties":false,"properties":{"default":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"type":{"enum":["string","number","boolean"],"type":"string"}},"required":["key","label","type","required"],"type":"object"},"type":"array"},"kind":{"type":"string"},"name":{"type":"string"}},"required":["id","name","description","kind","inputs","configTemplate"],"type":"object"},"type":"array"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/monitor-templates/{template_id}":{"post":{"operationId":"monitors.createFromTemplate","summary":"Create a monitor from a catalog template. Body is template input values.","description":"Create a monitor from a catalog template. Body is template input values.","tags":["monitors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"template_id","in":"path","required":true,"description":"Path parameter template_id","schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},"description":"Template input values keyed by template input key.","type":"object"}}}},"responses":{"201":{"description":"Created monitor","content":{"application/json":{"schema":{"additionalProperties":true,"description":"Monitor summary with latest health state.","type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/monitors/upsert":{"post":{"operationId":"monitors.upsertByName","summary":"Create or update a monitor by name. Body matches monitors.create.","description":"Create or update a monitor by name. Body matches monitors.create.","tags":["monitors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"config":{"additionalProperties":true,"description":"Monitor-kind-specific configuration.","type":"object"},"enabled":{"type":"boolean"},"kind":{"description":"Monitor kind such as http, ssl, tcp, or heartbeat.","type":"string"},"linkedComponent":{"type":["string","null"]},"name":{"type":"string"},"runbookUrl":{"type":["string","null"]},"target":{"description":"URL, host, token, or monitor-specific target.","type":"string"}},"required":["config","kind","name","target"],"type":"object"}}}},"responses":{"200":{"description":"Updated monitor","content":{"application/json":{"schema":{"additionalProperties":true,"description":"Monitor summary with latest health state.","type":"object"}}}},"201":{"description":"Created monitor","content":{"application/json":{"schema":{"additionalProperties":true,"description":"Monitor summary with latest health state.","type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/monitors/evaluations":{"get":{"operationId":"monitors.listEvaluations","summary":"List the latest noise evaluation per monitor: how many incidents it opened, how many reached a human, how many were acted on, and a recommendation (no_change, widen_threshold, demote_attention, redefine, disable_candidate) with the reasoning. Read-only — recommendations are never applied automatically. Query: monitor_id?, actionable_only?, limit?","description":"List the latest noise evaluation per monitor: how many incidents it opened, how many reached a human, how many were acted on, and a recommendation (no_change, widen_threshold, demote_attention, redefine, disable_candidate) with the reasoning. Read-only — recommendations are never applied automatically. Query: monitor_id?, actionable_only?, limit?","tags":["monitors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Latest monitor noise evaluations","content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"data":{"items":{"additionalProperties":false,"properties":{"acted_on_count":{"description":"Delivered incidents a human acknowledged, took, or commented on.","type":"integer"},"confidence":{"description":"How well the sample supports the recommendation. Never act on `low`.","enum":["low","medium","high"],"type":"string"},"delivered_count":{"description":"Incidents whose opening alert produced at least one successful notification delivery. Recommendations are scoped to these, so a broken notification route is never misread as an unwanted monitor.","type":"integer"},"evaluated_at":{"format":"date-time","type":"string"},"incident_count":{"type":"integer"},"median_resolve_minutes":{"type":["integer","null"]},"monitor_id":{"type":"string"},"rationale":{"description":"Plain-language justification.","type":"string"},"recommendation":{"enum":["no_change","widen_threshold","demote_attention","redefine","disable_candidate"],"type":"string"},"self_healed_count":{"type":"integer"},"window_days":{"type":"integer"}},"required":["acted_on_count","confidence","delivered_count","evaluated_at","incident_count","median_resolve_minutes","monitor_id","rationale","recommendation","self_healed_count","window_days"],"type":"object"},"type":"array"},"total":{"type":"integer"}},"required":["data","total"],"type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/monitors/tuning":{"get":{"operationId":"monitors.getTuningSettings","summary":"Get monitor auto-tuning mode, hard-bounded AI budget settings, adjustment audit history, hourly observation time, and measured outcomes.","description":"Get monitor auto-tuning mode, hard-bounded AI budget settings, adjustment audit history, hourly observation time, and measured outcomes.","tags":["monitors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"patch":{"operationId":"monitors.updateTuningSettings","summary":"Update project monitor tuning. Defaults to recommend; auto mode only applies bounded, expiring threshold overrides. Hard caps: $5/day, $0.50/run, and 20 runs/day.","description":"Update project monitor tuning. Defaults to recommend; auto mode only applies bounded, expiring threshold overrides. Hard caps: $5/day, $0.50/run, and 20 runs/day.","tags":["monitors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"adjustment_cooldown_days":{"type":"integer"},"daily_budget_cents":{"type":"integer"},"max_daily_investigations":{"type":"integer"},"mode":{"enum":["off","recommend","auto"],"type":"string"},"override_ttl_days":{"type":"integer"},"per_run_budget_cents":{"type":"integer"}},"type":"object"}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"write"}},"/v1/projects/{project_id}/monitors/{monitor_id}/tuning":{"get":{"operationId":"monitors.getTuning","summary":"Get declared versus effective monitor config, tuning mode, human lock, and audit history.","description":"Get declared versus effective monitor config, tuning mode, human lock, and audit history.","tags":["monitors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"monitor_id","in":"path","required":true,"description":"Path parameter monitor_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"patch":{"operationId":"monitors.updateTuning","summary":"Override the project tuning mode for one monitor.","description":"Override the project tuning mode for one monitor.","tags":["monitors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"monitor_id","in":"path","required":true,"description":"Path parameter monitor_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"mode":{"anyOf":[{"enum":["off","recommend","auto"],"type":"string"},{"type":"null"}]}},"required":["mode"],"type":"object"}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"write"}},"/v1/projects/{project_id}/monitors/{monitor_id}/tuning/actions":{"post":{"operationId":"monitors.tuningAction","summary":"Investigate a candidate or apply, reject, or revert a proposed expiring override.","description":"Investigate a candidate or apply, reject, or revert a proposed expiring override.","tags":["monitors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"monitor_id","in":"path","required":true,"description":"Path parameter monitor_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"action":{"enum":["apply","investigate","reject","revert"],"type":"string"},"adjustment_id":{"format":"uuid","type":"string"},"reason":{"type":"string"}},"required":["action"],"type":"object"}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"write"}},"/v1/projects/{project_id}/monitors/{monitor_id}":{"get":{"operationId":"monitors.get","summary":"Get one monitor with its latest state and linked incident","description":"Get one monitor with its latest state and linked incident","tags":["monitors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"monitor_id","in":"path","required":true,"description":"Path parameter monitor_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"patch":{"operationId":"monitors.update","summary":"Update a monitor. Body: { name?, target?, config?, enabled?, linkedComponent?, runbookUrl? }","description":"Update a monitor. Body: { name?, target?, config?, enabled?, linkedComponent?, runbookUrl? }","tags":["monitors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"monitor_id","in":"path","required":true,"description":"Path parameter monitor_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"config":{"additionalProperties":true,"description":"Monitor-kind-specific configuration.","type":"object"},"enabled":{"type":"boolean"},"kind":{"description":"Monitor kind such as http, ssl, tcp, or heartbeat.","type":"string"},"linkedComponent":{"type":["string","null"]},"name":{"type":"string"},"runbookUrl":{"type":["string","null"]},"target":{"description":"URL, host, token, or monitor-specific target.","type":"string"}},"required":[],"type":"object"}}}},"responses":{"200":{"description":"Updated monitor","content":{"application/json":{"schema":{"additionalProperties":true,"description":"Monitor summary with latest health state.","type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"},"delete":{"operationId":"monitors.delete","summary":"Delete a monitor","description":"Delete a monitor","tags":["monitors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"monitor_id","in":"path","required":true,"description":"Path parameter monitor_id","schema":{"type":"string"}}],"responses":{"204":{"description":"Monitor deleted"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/on-call/schedules":{"get":{"operationId":"onCall.listSchedules","summary":"List on-call rotation schedules for the project's owning team (team-wide + project-scoped)","description":"List on-call rotation schedules for the project's owning team (team-wide + project-scoped)","tags":["onCall"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"post":{"operationId":"onCall.createSchedule","summary":"Create a native on-call rotation. Defaults to team-wide; pass project_scoped=true to scope to this project.","description":"Create a native on-call rotation. Defaults to team-wide; pass project_scoped=true to scope to this project.","tags":["onCall"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name","timezone","handoff_day_of_week","handoff_local_time","members"],"properties":{"name":{"type":"string"},"timezone":{"type":"string"},"handoff_day_of_week":{"type":"integer"},"handoff_local_time":{"type":"string"},"members":{"type":"array","items":{"type":"object","properties":{"user_id":{"type":"string"}},"required":["user_id"],"additionalProperties":false}},"project_scoped":{"type":"boolean","description":"Scope to the authenticated project only"},"weeks_to_materialize":{"type":"integer"}},"additionalProperties":false}}}},"responses":{"201":{"description":"Created schedule","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"team_id":{"type":"string"},"project_id":{"type":["string","null"]},"name":{"type":"string"},"timezone":{"type":"string"},"handoff_day_of_week":{"type":["integer","null"]},"handoff_local_time":{"type":["string","null"]},"source":{"type":"string","enum":["native","pagerduty","opsgenie","incident_io"]},"source_external_id":{"type":["string","null"]},"source_last_synced_at":{"type":["string","null"],"format":"date-time"},"enabled":{"type":"boolean"},"member_count":{"type":"integer"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","team_id","project_id","name","timezone","handoff_day_of_week","handoff_local_time","source","source_external_id","source_last_synced_at","enabled","member_count","created_at","updated_at"]}}}},"400":{"description":"Invalid schedule body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Caller lacks the on-call edit permission","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/on-call/current":{"get":{"operationId":"onCall.getCurrentEngineer","summary":"Who is on-call for this project right now (null if nothing covers)","description":"Who is on-call for this project right now (null if nothing covers)","tags":["onCall"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/on-call/schedules/{schedule_id}/members":{"get":{"operationId":"onCall.listMembers","summary":"List rotation members for a schedule in their cycling order","description":"List rotation members for a schedule in their cycling order","tags":["onCall"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"schedule_id","in":"path","required":true,"description":"Path parameter schedule_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/on-call/schedules/{schedule_id}/shifts":{"get":{"operationId":"onCall.listShifts","summary":"List shifts overlapping a time window (defaults to ±7d/+56d). Use ?from=ISO&to=ISO.","description":"List shifts overlapping a time window (defaults to ±7d/+56d). Use ?from=ISO&to=ISO.","tags":["onCall"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"schedule_id","in":"path","required":true,"description":"Path parameter schedule_id","schema":{"type":"string"}},{"name":"from","in":"query","required":false,"description":"Query parameter from","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":false,"description":"Query parameter to","schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"Shifts overlapping the window","content":{"application/json":{"schema":{"type":"object","properties":{"shifts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"schedule_id":{"type":"string"},"user_id":{"type":["string","null"]},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"source":{"type":"string","enum":["computed","override","imported"]},"created_at":{"type":"string","format":"date-time"}},"required":["id","schedule_id","user_id","starts_at","ends_at","source","created_at"]}}}}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/on-call/schedules/{schedule_id}":{"patch":{"operationId":"onCall.setScheduleEnabled","summary":"Enable or disable a schedule. Disabled schedules are skipped by the failed-triage handoff.","description":"Enable or disable a schedule. Disabled schedules are skipped by the failed-triage handoff.","tags":["onCall"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"schedule_id","in":"path","required":true,"description":"Path parameter schedule_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 schedule","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"team_id":{"type":"string"},"project_id":{"type":["string","null"]},"name":{"type":"string"},"timezone":{"type":"string"},"handoff_day_of_week":{"type":["integer","null"]},"handoff_local_time":{"type":["string","null"]},"source":{"type":"string","enum":["native","pagerduty","opsgenie","incident_io"]},"source_external_id":{"type":["string","null"]},"source_last_synced_at":{"type":["string","null"],"format":"date-time"},"enabled":{"type":"boolean"},"member_count":{"type":"integer"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","team_id","project_id","name","timezone","handoff_day_of_week","handoff_local_time","source","source_external_id","source_last_synced_at","enabled","member_count","created_at","updated_at"]}}}},"404":{"description":"Schedule not found in this team","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/on-call/schedules/{schedule_id}/overrides":{"post":{"operationId":"onCall.createOverride","summary":"Add a one-off override (swap shifts). Override wins the on-call lookup for its window.","description":"Add a one-off override (swap shifts). Override wins the on-call lookup for its window.","tags":["onCall"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"schedule_id","in":"path","required":true,"description":"Path parameter schedule_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["user_id","starts_at","ends_at"],"properties":{"user_id":{"type":"string"},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"}},"additionalProperties":false}}}},"responses":{"201":{"description":"Override created"},"400":{"description":"Invalid override window","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Schedule not found in this team","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"write"}},"/v1/projects/{project_id}/on-call/schedules/{schedule_id}/shifts.ics":{"get":{"operationId":"onCall.listShiftsCsv","summary":"Subscribe-able iCalendar feed of shifts for the schedule. Agents and humans can paste this into Google/Apple Calendar.","description":"Subscribe-able iCalendar feed of shifts for the schedule. Agents and humans can paste this into Google/Apple Calendar.","tags":["onCall"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"schedule_id","in":"path","required":true,"description":"Path parameter schedule_id","schema":{"type":"string"}}],"responses":{"200":{"description":"iCalendar text/calendar feed of shifts"},"404":{"description":"Schedule not found in this team","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/incidents":{"get":{"operationId":"incidents.list","summary":"List incidents for a project with status, severity, and monitor filters","description":"List incidents for a project with status, severity, and monitor filters","tags":["incidents"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/incidents/{incident_id}":{"get":{"operationId":"incidents.get","summary":"Get one incident including timeline, evidence, and recent checks","description":"Get one incident including timeline, evidence, and recent checks","tags":["incidents"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"incident_id","in":"path","required":true,"description":"Path parameter incident_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Incident detail","content":{"application/json":{"schema":{"type":"object","properties":{"evidence":{"type":"array","items":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time"},"id":{"type":"string"},"kind":{"type":"string"},"query":{"type":"string"},"summary":{"type":["string","null"]},"title":{"type":"string"}},"required":["createdAt","id","kind","query","summary","title"]}},"events":{"type":"array","items":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time"},"createdBy":{"type":["string","null"]},"id":{"type":"string"},"kind":{"type":"string"},"message":{"type":"string"}},"required":["createdAt","createdBy","id","kind","message"]}},"incident":{"type":"object","properties":{"acknowledgedAt":{"type":["string","null"],"format":"date-time"},"aiAssigned":{"type":"boolean"},"assignedTo":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"string"},"monitorId":{"type":["string","null"]},"monitorName":{"type":["string","null"]},"resolvedAt":{"type":["string","null"],"format":"date-time"},"responseSummary":{"type":["string","null"]},"rootCause":{"type":["string","null"]},"severity":{"type":"string"},"sourceType":{"type":"string"},"status":{"type":"string","enum":["investigating","identified","monitoring","resolved"]},"suggestedControls":{"type":["string","null"]},"summary":{"type":["string","null"]},"suspectDeployment":{"type":["object","null"],"properties":{"deployedAt":{"type":"string","format":"date-time"},"gapSeconds":{"type":"integer"},"id":{"type":"string"},"service":{"type":["string","null"]},"version":{"type":["string","null"]}},"required":["deployedAt","gapSeconds","id","service","version"]},"title":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"}},"required":["acknowledgedAt","aiAssigned","assignedTo","createdAt","id","monitorId","monitorName","resolvedAt","responseSummary","rootCause","severity","sourceType","status","suggestedControls","summary","suspectDeployment","title","updatedAt"]},"recentChecks":{"type":"array","items":{"type":"object","properties":{"checkedAt":{"type":"string","format":"date-time"},"errorMessage":{"type":["string","null"]},"id":{"type":"string"},"latencyMs":{"type":["integer","null"]},"metadata":{"type":["object","null"],"additionalProperties":true},"monitorId":{"type":"string"},"region":{"type":"string"},"responseSummary":{"type":["string","null"]},"status":{"type":"string"},"statusCode":{"type":["integer","null"]}},"required":["checkedAt","errorMessage","id","latencyMs","metadata","monitorId","region","responseSummary","status","statusCode"]}},"serviceAttribution":{"type":"object","properties":{"confidence":{"type":"string","enum":["high","low","medium","none"]},"missingMetadata":{"type":"array","items":{"type":"string"}},"reasons":{"type":"array","items":{"type":"string"}},"service":{"type":["object","null"],"properties":{"dashboardUrl":{"type":["string","null"]},"id":{"type":["string","null"]},"name":{"type":["string","null"]},"ownerTeam":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]},"runbookUrl":{"type":["string","null"]},"slug":{"type":"string"}},"required":["dashboardUrl","id","name","ownerTeam","runbookUrl","slug"]},"serviceName":{"type":["string","null"]},"sourceFields":{"type":"array","items":{"type":"string"}}},"required":["confidence","missingMetadata","reasons","service","serviceName","sourceFields"]}},"required":["evidence","events","incident","recentChecks","serviceAttribution"]}}}},"404":{"description":"Incident not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/incidents/{incident_id}/comments":{"get":{"operationId":"incidents.listComments","summary":"List internal response comments for an incident","description":"List internal response comments for an incident","tags":["incidents"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"incident_id","in":"path","required":true,"description":"Path parameter incident_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Incident comments","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"author":{"type":"object","properties":{"email":{"type":["string","null"]},"id":{"type":"string"},"image":{"type":["string","null"]},"name":{"type":["string","null"]}},"required":["email","id","image","name"]},"body":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"string"},"incidentId":{"type":"string"},"mentionedUserIds":{"type":"array","items":{"type":"string"}},"updatedAt":{"type":"string","format":"date-time"}},"required":["author","body","createdAt","id","incidentId","mentionedUserIds","updatedAt"]}}},"required":["data"]}}}},"404":{"description":"Incident not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"post":{"operationId":"incidents.createComment","summary":"Create an internal response comment for an incident","description":"Create an internal response comment for an incident","tags":["incidents"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"incident_id","in":"path","required":true,"description":"Path parameter incident_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string"},"mentionedUserIds":{"type":"array","items":{"type":"string"}}},"required":["body"],"additionalProperties":false}}}},"responses":{"201":{"description":"Created incident comment","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"object","properties":{"email":{"type":["string","null"]},"id":{"type":"string"},"image":{"type":["string","null"]},"name":{"type":["string","null"]}},"required":["email","id","image","name"]},"body":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"string"},"incidentId":{"type":"string"},"mentionedUserIds":{"type":"array","items":{"type":"string"}},"updatedAt":{"type":"string","format":"date-time"}},"required":["author","body","createdAt","id","incidentId","mentionedUserIds","updatedAt"]}}}},"403":{"description":"A user actor is required to create comments","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Incident not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Invalid comment payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/incidents/{incident_id}/comments/{comment_id}":{"delete":{"operationId":"incidents.deleteComment","summary":"Delete one of the current actor's incident comments","description":"Delete one of the current actor's incident comments","tags":["incidents"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"incident_id","in":"path","required":true,"description":"Path parameter incident_id","schema":{"type":"string"}},{"name":"comment_id","in":"path","required":true,"description":"Path parameter comment_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted incident comment","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean"},"id":{"type":"string"}},"required":["deleted","id"]}}}},"403":{"description":"A user actor must own the comment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Incident comment not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/incidents/{incident_id}/assignee":{"patch":{"operationId":"incidents.updateAssignee","summary":"Assign, reassign, or clear the responder assigned to an incident","description":"Assign, reassign, or clear the responder assigned to an incident","tags":["incidents"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"incident_id","in":"path","required":true,"description":"Path parameter incident_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assignedTo":{"type":["string","null"]}},"required":["assignedTo"],"additionalProperties":false}}}},"responses":{"200":{"description":"Updated incident","content":{"application/json":{"schema":{"type":"object","properties":{"acknowledgedAt":{"type":["string","null"],"format":"date-time"},"aiAssigned":{"type":"boolean"},"assignedTo":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"string"},"monitorId":{"type":["string","null"]},"monitorName":{"type":["string","null"]},"resolvedAt":{"type":["string","null"],"format":"date-time"},"responseSummary":{"type":["string","null"]},"rootCause":{"type":["string","null"]},"severity":{"type":"string"},"sourceType":{"type":"string"},"status":{"type":"string","enum":["investigating","identified","monitoring","resolved"]},"suggestedControls":{"type":["string","null"]},"summary":{"type":["string","null"]},"suspectDeployment":{"type":["object","null"],"properties":{"deployedAt":{"type":"string","format":"date-time"},"gapSeconds":{"type":"integer"},"id":{"type":"string"},"service":{"type":["string","null"]},"version":{"type":["string","null"]}},"required":["deployedAt","gapSeconds","id","service","version"]},"title":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"}},"required":["acknowledgedAt","aiAssigned","assignedTo","createdAt","id","monitorId","monitorName","resolvedAt","responseSummary","rootCause","severity","sourceType","status","suggestedControls","summary","suspectDeployment","title","updatedAt"]}}}},"404":{"description":"Incident not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Assignee is not a team member","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/service-attribution/resolve":{"post":{"operationId":"incidents.resolveServiceAttribution","summary":"Resolve service ownership metadata from monitor, trace, alert, or runbook signals","description":"Resolve service ownership metadata from monitor, trace, alert, or runbook signals","tags":["incidents"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"alertFields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"value":{"type":["string","null"]}},"required":["path","value"],"additionalProperties":false}},"explicitServiceName":{"type":["string","null"]},"monitorId":{"type":["string","null"]},"monitorName":{"type":["string","null"]},"repository":{"type":["string","null"]},"runbookUrl":{"type":["string","null"]},"statusComponentName":{"type":["string","null"]},"traceServiceName":{"type":["string","null"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Resolved service attribution","content":{"application/json":{"schema":{"type":"object","properties":{"confidence":{"type":"string","enum":["high","low","medium","none"]},"missingMetadata":{"type":"array","items":{"type":"string"}},"reasons":{"type":"array","items":{"type":"string"}},"service":{"type":["object","null"],"properties":{"dashboardUrl":{"type":["string","null"]},"id":{"type":["string","null"]},"name":{"type":["string","null"]},"ownerTeam":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]},"runbookUrl":{"type":["string","null"]},"slug":{"type":"string"}},"required":["dashboardUrl","id","name","ownerTeam","runbookUrl","slug"]},"serviceName":{"type":["string","null"]},"sourceFields":{"type":"array","items":{"type":"string"}}},"required":["confidence","missingMetadata","reasons","service","serviceName","sourceFields"]}}}},"422":{"description":"Invalid service attribution payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/service-ownership/debt":{"get":{"operationId":"incidents.getServiceOwnershipDebt","summary":"List service ownership debt proven by operational services, monitors, and status components","description":"List service ownership debt proven by operational services, monitors, and status components","tags":["incidents"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Service ownership debt report","content":{"application/json":{"schema":{"additionalProperties":true,"description":"Read-only service ownership debt report for missing owners, runbooks, monitor links, and status component links.","type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/service-ownership/import-candidates":{"get":{"operationId":"incidents.listServiceOwnershipImportCandidates","summary":"List unlinked monitors and status components grouped into operational service import candidates","description":"List unlinked monitors and status components grouped into operational service import candidates","tags":["incidents"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Operational service import candidates for the project","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"string"}},"existingServiceId":{"type":["string","null"]},"monitorIds":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"linkedComponent":{"type":["string","null"]},"name":{"type":"string"},"statusPageId":{"type":"string"},"target":{"type":"string"},"type":{"type":"string","enum":["monitor","status_component"]}},"required":["id","name","type"]}},"statusComponentIds":{"type":"array","items":{"type":"string"}},"suggestedName":{"type":"string"},"suggestedSlug":{"type":"string"}},"required":["aliases","existingServiceId","monitorIds","sources","statusComponentIds","suggestedName","suggestedSlug"]}},"projectId":{"type":"string"}},"required":["data","projectId"]}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/service-ownership/import-candidates/{suggested_slug}/apply":{"post":{"operationId":"incidents.applyServiceOwnershipImportCandidate","summary":"Create or merge an operational service from a current service ownership import candidate","description":"Create or merge an operational service from a current service ownership import candidate","tags":["incidents"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"suggested_slug","in":"path","required":true,"description":"Suggested service slug returned by the import candidates endpoint","schema":{"type":"string"}}],"responses":{"200":{"description":"Existing or merged operational service","content":{"application/json":{"schema":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"dashboardUrl":{"type":["string","null"]},"dependencyServiceIds":{"type":"array","items":{"type":"string"}},"description":{"type":["string","null"]},"id":{"type":"string"},"monitorIds":{"type":"array","items":{"type":"string"}},"name":{"type":"string"},"ownerTeam":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]},{"type":"null"}]},"projectId":{"type":"string"},"repositories":{"type":"array","items":{"type":"string"}},"runbookUrl":{"type":["string","null"]},"slug":{"type":"string"},"statusComponentIds":{"type":"array","items":{"type":"string"}},"updatedAt":{"type":"string","format":"date-time"}},"required":["aliases","createdAt","dashboardUrl","dependencyServiceIds","description","id","monitorIds","name","ownerTeam","projectId","repositories","runbookUrl","slug","statusComponentIds","updatedAt"]}}}},"201":{"description":"Created operational service from the import candidate","content":{"application/json":{"schema":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"dashboardUrl":{"type":["string","null"]},"dependencyServiceIds":{"type":"array","items":{"type":"string"}},"description":{"type":["string","null"]},"id":{"type":"string"},"monitorIds":{"type":"array","items":{"type":"string"}},"name":{"type":"string"},"ownerTeam":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]},{"type":"null"}]},"projectId":{"type":"string"},"repositories":{"type":"array","items":{"type":"string"}},"runbookUrl":{"type":["string","null"]},"slug":{"type":"string"},"statusComponentIds":{"type":"array","items":{"type":"string"}},"updatedAt":{"type":"string","format":"date-time"}},"required":["aliases","createdAt","dashboardUrl","dependencyServiceIds","description","id","monitorIds","name","ownerTeam","projectId","repositories","runbookUrl","slug","statusComponentIds","updatedAt"]}}}},"404":{"description":"Import candidate not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"One or more candidate sources are already assigned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Invalid import candidate slug","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/service-ownership/teams":{"get":{"operationId":"incidents.listServiceOwnershipTeams","summary":"List operational owner teams available for incident ownership","description":"List operational owner teams available for incident ownership","tags":["incidents"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Operational owner teams for the project","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time"},"description":{"type":["string","null"]},"id":{"type":"string"},"name":{"type":"string"},"projectId":{"type":"string"},"slug":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"}},"required":["createdAt","description","id","name","projectId","slug","updatedAt"]}},"projectId":{"type":"string"}},"required":["data","projectId"]}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"post":{"operationId":"incidents.createServiceOwnershipTeam","summary":"Create an operational owner team for incident ownership","description":"Create an operational owner team for incident ownership","tags":["incidents"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":["string","null"]},"name":{"type":"string"},"slug":{"type":"string"}},"required":["name","slug"],"additionalProperties":false}}}},"responses":{"200":{"description":"Existing operational owner team for the requested slug","content":{"application/json":{"schema":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time"},"description":{"type":["string","null"]},"id":{"type":"string"},"name":{"type":"string"},"projectId":{"type":"string"},"slug":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"}},"required":["createdAt","description","id","name","projectId","slug","updatedAt"]}}}},"201":{"description":"Created operational owner team","content":{"application/json":{"schema":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time"},"description":{"type":["string","null"]},"id":{"type":"string"},"name":{"type":"string"},"projectId":{"type":"string"},"slug":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"}},"required":["createdAt","description","id","name","projectId","slug","updatedAt"]}}}},"409":{"description":"Team slug already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Invalid team payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/service-ownership/teams/{team_id}":{"patch":{"operationId":"incidents.updateServiceOwnershipTeam","summary":"Update operational owner team metadata for incident ownership","description":"Update operational owner team metadata for incident ownership","tags":["incidents"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"team_id","in":"path","required":true,"description":"Path parameter team_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":["string","null"]},"name":{"type":"string"},"slug":{"type":"string"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Updated operational owner team","content":{"application/json":{"schema":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time"},"description":{"type":["string","null"]},"id":{"type":"string"},"name":{"type":"string"},"projectId":{"type":"string"},"slug":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"}},"required":["createdAt","description","id","name","projectId","slug","updatedAt"]}}}},"404":{"description":"Team not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Team slug already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Invalid team payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"},"delete":{"operationId":"incidents.deleteServiceOwnershipTeam","summary":"Delete an operational owner team and clear service owner references","description":"Delete an operational owner team and clear service owner references","tags":["incidents"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"team_id","in":"path","required":true,"description":"Path parameter team_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted operational owner team","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean"}},"required":["deleted"]}}}},"404":{"description":"Team not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/service-ownership/services":{"get":{"operationId":"incidents.listServiceOwnershipServices","summary":"List operational services and ownership links for a project","description":"List operational services and ownership links for a project","tags":["incidents"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Operational services for the project","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"dashboardUrl":{"type":["string","null"]},"dependencyServiceIds":{"type":"array","items":{"type":"string"}},"description":{"type":["string","null"]},"id":{"type":"string"},"monitorIds":{"type":"array","items":{"type":"string"}},"name":{"type":"string"},"ownerTeam":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]},{"type":"null"}]},"projectId":{"type":"string"},"repositories":{"type":"array","items":{"type":"string"}},"runbookUrl":{"type":["string","null"]},"slug":{"type":"string"},"statusComponentIds":{"type":"array","items":{"type":"string"}},"updatedAt":{"type":"string","format":"date-time"}},"required":["aliases","createdAt","dashboardUrl","dependencyServiceIds","description","id","monitorIds","name","ownerTeam","projectId","repositories","runbookUrl","slug","statusComponentIds","updatedAt"]}},"projectId":{"type":"string"}},"required":["data","projectId"]}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"post":{"operationId":"incidents.createServiceOwnershipService","summary":"Create an operational service for incident ownership","description":"Create an operational service for incident ownership","tags":["incidents"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dashboardUrl":{"type":["string","null"],"format":"uri"},"description":{"type":["string","null"]},"name":{"type":"string"},"ownerTeamId":{"type":["string","null"]},"runbookUrl":{"type":["string","null"],"format":"uri"},"slug":{"type":"string"}},"required":["name","slug"],"additionalProperties":false}}}},"responses":{"200":{"description":"Existing operational service for the requested slug","content":{"application/json":{"schema":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"dashboardUrl":{"type":["string","null"]},"dependencyServiceIds":{"type":"array","items":{"type":"string"}},"description":{"type":["string","null"]},"id":{"type":"string"},"monitorIds":{"type":"array","items":{"type":"string"}},"name":{"type":"string"},"ownerTeam":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]},{"type":"null"}]},"projectId":{"type":"string"},"repositories":{"type":"array","items":{"type":"string"}},"runbookUrl":{"type":["string","null"]},"slug":{"type":"string"},"statusComponentIds":{"type":"array","items":{"type":"string"}},"updatedAt":{"type":"string","format":"date-time"}},"required":["aliases","createdAt","dashboardUrl","dependencyServiceIds","description","id","monitorIds","name","ownerTeam","projectId","repositories","runbookUrl","slug","statusComponentIds","updatedAt"]}}}},"201":{"description":"Created operational service","content":{"application/json":{"schema":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"dashboardUrl":{"type":["string","null"]},"dependencyServiceIds":{"type":"array","items":{"type":"string"}},"description":{"type":["string","null"]},"id":{"type":"string"},"monitorIds":{"type":"array","items":{"type":"string"}},"name":{"type":"string"},"ownerTeam":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]},{"type":"null"}]},"projectId":{"type":"string"},"repositories":{"type":"array","items":{"type":"string"}},"runbookUrl":{"type":["string","null"]},"slug":{"type":"string"},"statusComponentIds":{"type":"array","items":{"type":"string"}},"updatedAt":{"type":"string","format":"date-time"}},"required":["aliases","createdAt","dashboardUrl","dependencyServiceIds","description","id","monitorIds","name","ownerTeam","projectId","repositories","runbookUrl","slug","statusComponentIds","updatedAt"]}}}},"400":{"description":"Invalid owner team reference","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Service slug already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Invalid service payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/service-ownership/services/{service_id}":{"patch":{"operationId":"incidents.updateServiceOwnershipService","summary":"Update operational service metadata for incident ownership","description":"Update operational service metadata for incident ownership","tags":["incidents"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"service_id","in":"path","required":true,"description":"Path parameter service_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dashboardUrl":{"type":["string","null"],"format":"uri"},"description":{"type":["string","null"]},"name":{"type":"string"},"ownerTeamId":{"type":["string","null"]},"runbookUrl":{"type":["string","null"],"format":"uri"},"slug":{"type":"string"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Updated operational service","content":{"application/json":{"schema":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"dashboardUrl":{"type":["string","null"]},"dependencyServiceIds":{"type":"array","items":{"type":"string"}},"description":{"type":["string","null"]},"id":{"type":"string"},"monitorIds":{"type":"array","items":{"type":"string"}},"name":{"type":"string"},"ownerTeam":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]},{"type":"null"}]},"projectId":{"type":"string"},"repositories":{"type":"array","items":{"type":"string"}},"runbookUrl":{"type":["string","null"]},"slug":{"type":"string"},"statusComponentIds":{"type":"array","items":{"type":"string"}},"updatedAt":{"type":"string","format":"date-time"}},"required":["aliases","createdAt","dashboardUrl","dependencyServiceIds","description","id","monitorIds","name","ownerTeam","projectId","repositories","runbookUrl","slug","statusComponentIds","updatedAt"]}}}},"400":{"description":"Invalid owner team reference","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Service not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Service slug already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Invalid service payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"},"delete":{"operationId":"incidents.deleteServiceOwnershipService","summary":"Delete an operational service and its ownership links","description":"Delete an operational service and its ownership links","tags":["incidents"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"service_id","in":"path","required":true,"description":"Path parameter service_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted operational service","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean"}},"required":["deleted"]}}}},"404":{"description":"Service not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/service-ownership/services/{service_id}/links":{"put":{"operationId":"incidents.updateServiceOwnershipServiceLinks","summary":"Replace operational service aliases, repositories, monitor links, status component links, and service dependencies","description":"Replace operational service aliases, repositories, monitor links, status component links, and service dependencies","tags":["incidents"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"service_id","in":"path","required":true,"description":"Path parameter service_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"string"}},"dependencyServiceIds":{"type":"array","items":{"type":"string"}},"monitorIds":{"type":"array","items":{"type":"string"}},"repositories":{"type":"array","items":{"type":"string"}},"statusComponentIds":{"type":"array","items":{"type":"string"}}},"required":["aliases","dependencyServiceIds","monitorIds","repositories","statusComponentIds"],"additionalProperties":false}}}},"responses":{"200":{"description":"Updated operational service with replaced links","content":{"application/json":{"schema":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"dashboardUrl":{"type":["string","null"]},"dependencyServiceIds":{"type":"array","items":{"type":"string"}},"description":{"type":["string","null"]},"id":{"type":"string"},"monitorIds":{"type":"array","items":{"type":"string"}},"name":{"type":"string"},"ownerTeam":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]},{"type":"null"}]},"projectId":{"type":"string"},"repositories":{"type":"array","items":{"type":"string"}},"runbookUrl":{"type":["string","null"]},"slug":{"type":"string"},"statusComponentIds":{"type":"array","items":{"type":"string"}},"updatedAt":{"type":"string","format":"date-time"}},"required":["aliases","createdAt","dashboardUrl","dependencyServiceIds","description","id","monitorIds","name","ownerTeam","projectId","repositories","runbookUrl","slug","statusComponentIds","updatedAt"]}}}},"404":{"description":"Service or linked resources not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"One or more links are already assigned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Invalid service links payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/incidents/{incident_id}/ack":{"post":{"operationId":"incidents.ack","summary":"Acknowledge an incident and append an acknowledged timeline event","description":"Acknowledge an incident and append an acknowledged timeline event","tags":["incidents"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"incident_id","in":"path","required":true,"description":"Path parameter incident_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Acknowledged incident","content":{"application/json":{"schema":{"type":"object","properties":{"acknowledgedAt":{"type":["string","null"],"format":"date-time"},"aiAssigned":{"type":"boolean"},"assignedTo":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"string"},"monitorId":{"type":["string","null"]},"monitorName":{"type":["string","null"]},"resolvedAt":{"type":["string","null"],"format":"date-time"},"responseSummary":{"type":["string","null"]},"rootCause":{"type":["string","null"]},"severity":{"type":"string"},"sourceType":{"type":"string"},"status":{"type":"string","enum":["investigating","identified","monitoring","resolved"]},"suggestedControls":{"type":["string","null"]},"summary":{"type":["string","null"]},"suspectDeployment":{"type":["object","null"],"properties":{"deployedAt":{"type":"string","format":"date-time"},"gapSeconds":{"type":"integer"},"id":{"type":"string"},"service":{"type":["string","null"]},"version":{"type":["string","null"]}},"required":["deployedAt","gapSeconds","id","service","version"]},"title":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"}},"required":["acknowledgedAt","aiAssigned","assignedTo","createdAt","id","monitorId","monitorName","resolvedAt","responseSummary","rootCause","severity","sourceType","status","suggestedControls","summary","suspectDeployment","title","updatedAt"]}}}},"404":{"description":"Incident not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"write"}},"/v1/projects/{project_id}/incidents/{incident_id}/resolve":{"post":{"operationId":"incidents.resolve","summary":"Resolve an incident and append a resolved timeline event","description":"Resolve an incident and append a resolved timeline event","tags":["incidents"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"incident_id","in":"path","required":true,"description":"Path parameter incident_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Resolved incident","content":{"application/json":{"schema":{"type":"object","properties":{"acknowledgedAt":{"type":["string","null"],"format":"date-time"},"aiAssigned":{"type":"boolean"},"assignedTo":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"string"},"monitorId":{"type":["string","null"]},"monitorName":{"type":["string","null"]},"resolvedAt":{"type":["string","null"],"format":"date-time"},"responseSummary":{"type":["string","null"]},"rootCause":{"type":["string","null"]},"severity":{"type":"string"},"sourceType":{"type":"string"},"status":{"type":"string","enum":["investigating","identified","monitoring","resolved"]},"suggestedControls":{"type":["string","null"]},"summary":{"type":["string","null"]},"suspectDeployment":{"type":["object","null"],"properties":{"deployedAt":{"type":"string","format":"date-time"},"gapSeconds":{"type":"integer"},"id":{"type":"string"},"service":{"type":["string","null"]},"version":{"type":["string","null"]}},"required":["deployedAt","gapSeconds","id","service","version"]},"title":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"}},"required":["acknowledgedAt","aiAssigned","assignedTo","createdAt","id","monitorId","monitorName","resolvedAt","responseSummary","rootCause","severity","sourceType","status","suggestedControls","summary","suspectDeployment","title","updatedAt"]}}}},"404":{"description":"Incident not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"write"}},"/v1/projects/{project_id}/query-guide":{"get":{"operationId":"queryGuide.get","summary":"Describe the agent-optimized query surfaces for a project","description":"Describe the agent-optimized query surfaces for a project","tags":["queryGuide"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/observability-summary":{"get":{"operationId":"observabilitySummary.get","summary":"Get a compact operator-focused summary of the most relevant logs and latency metrics for a project or service","description":"Get a compact operator-focused summary of the most relevant logs and latency metrics for a project or service","tags":["observabilitySummary"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/providers/github/activity":{"get":{"operationId":"providerCapabilities.githubActivity","summary":"Fetch recent GitHub commits and pull requests for the linked project repo","description":"Fetch recent GitHub commits and pull requests for the linked project repo","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"GitHub activity","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"rows":{"type":"array","items":{"type":"object","additionalProperties":true}},"total":{"type":"integer"}}}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/providers/sentry/selection-projects":{"post":{"operationId":"providerCapabilities.sentrySelectionProjects","summary":"List projects from a short-lived Sentry OAuth selection session","description":"List projects from a short-lived Sentry OAuth selection session","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"selection_token":{"minLength":1,"type":"string"}},"required":["selection_token"],"type":"object"}}}},"responses":{"200":{"description":"Sentry projects available to the authorized installation","content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"projects":{"items":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"],"type":"object"},"type":"array"}},"required":["projects"],"type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/providers/sentry/select-project":{"post":{"operationId":"providerCapabilities.sentrySelectProject","summary":"Complete a Sentry OAuth selection session with one server-listed project","description":"Complete a Sentry OAuth selection session with one server-listed project","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"selection_token":{"minLength":1,"type":"string"},"sentry_project_slug":{"minLength":1,"type":"string"}},"required":["selection_token","sentry_project_slug"],"type":"object"}}}},"responses":{"200":{"description":"Connected Sentry project","content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"project":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"],"type":"object"},"status":{"enum":["connected"],"type":"string"}},"required":["project","status"],"type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/providers/sentry/issues":{"get":{"operationId":"providerCapabilities.sentryIssues","summary":"List Sentry issues for the project-bound Sentry project","description":"List Sentry issues for the project-bound Sentry project","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Maximum issues to return (1-50).","schema":{"maximum":50,"minimum":1,"type":"integer"}},{"name":"query","in":"query","required":false,"description":"Sentry issue-search query. Defaults to is:unresolved.","schema":{"maxLength":500,"type":"string"}}],"responses":{"200":{"description":"Sentry issues","content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"issues":{"items":{"additionalProperties":false,"properties":{"count":{"type":"integer"},"culprit":{"type":["string","null"]},"firstSeen":{"type":["string","null"]},"id":{"type":"string"},"lastSeen":{"type":["string","null"]},"level":{"type":["string","null"]},"permalink":{"type":["string","null"]},"status":{"type":"string"},"title":{"type":"string"}},"required":["count","id","status","title"],"type":"object"},"type":"array"}},"required":["issues"],"type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/providers/sentry/issues/{issue_id}/latest-event":{"get":{"operationId":"providerCapabilities.sentryLatestEvent","summary":"Read the latest event for one Sentry issue","description":"Read the latest event for one Sentry issue","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"issue_id","in":"path","required":true,"description":"Path parameter issue_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Latest Sentry issue event","content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"contexts":{"additionalProperties":true,"type":"object"},"entries":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"eventId":{"type":"string"},"message":{"type":"string"},"platform":{"type":["string","null"]},"tags":{"items":{"additionalProperties":false,"properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"],"type":"object"},"type":"array"}},"required":["contexts","entries","eventId","message","platform","tags"],"type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/providers/github/ci-failures":{"get":{"operationId":"providerCapabilities.githubCiFailures","summary":"Fetch recent Squasher-ingested GitHub CI failure groups for the project","description":"Fetch recent Squasher-ingested GitHub CI failure groups for the project","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"GitHub CI failure groups","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"failures":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"branch":{"type":["string","null"]},"checkName":{"type":["string","null"]},"conclusion":{"type":"string"},"errorGroupId":{"type":"string"},"event":{"type":"string"},"eventCount":{"type":"integer"},"evidenceRefs":{"type":"array","items":{"type":"object","additionalProperties":true}},"failureId":{"type":"string"},"firstSeen":{"type":"string","format":"date-time"},"lastSeen":{"type":"string","format":"date-time"},"repo":{"type":"string"},"runId":{"type":"string"},"runUrl":{"type":["string","null"]},"summary":{"type":"string"},"workflowName":{"type":["string","null"]}}}},"generatedAt":{"type":"string","format":"date-time"},"limit":{"type":"integer"},"total":{"type":"integer"}}}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/providers/linear/issues":{"get":{"operationId":"providerCapabilities.linearIssues","summary":"Fetch recent Linear issues for the project's configured Linear team","description":"Fetch recent Linear issues for the project's configured Linear team","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Linear issues","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"rows":{"type":"array","items":{"type":"object","additionalProperties":true}},"total":{"type":"integer"}}}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/providers/notion/connect":{"post":{"operationId":"providerCapabilities.notionConnect","summary":"Start the Notion page-picker OAuth flow for this project","description":"Start the Notion page-picker OAuth flow for this project","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Provider authorization URL","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"url":{"type":"string","format":"uri"}}}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/providers/notion/connection":{"delete":{"operationId":"providerCapabilities.notionDisconnect","summary":"Revoke and remove the project's Notion connection","description":"Revoke and remove the project's Notion connection","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/providers/notion/resources":{"get":{"operationId":"providerCapabilities.notionSearch","summary":"Search pages and data sources shared through the project's Notion connection","description":"Search pages and data sources shared through the project's Notion connection","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Opaque Notion cursor from the previous response.","schema":{"type":"string"}},{"name":"page_size","in":"query","required":false,"description":"Results to return. Squasher limits this to 100.","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"query","in":"query","required":false,"description":"Optional title text.","schema":{"type":"string","maxLength":200}},{"name":"kind","in":"query","required":false,"description":"Limit results by resource type.","schema":{"type":"string","enum":["data_source","page"]}}],"responses":{"200":{"description":"Shared Notion resources","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"hasMore":{"type":"boolean"},"nextCursor":{"type":["string","null"]},"rows":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["data_source","page"]},"lastEditedTime":{"type":["string","null"]},"title":{"type":"string"},"url":{"type":["string","null"]}}}}}}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/providers/notion/pages/{page_id}":{"get":{"operationId":"providerCapabilities.notionPage","summary":"Get metadata for one page shared with the project's Notion connection","description":"Get metadata for one page shared with the project's Notion connection","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"page_id","in":"path","required":true,"description":"Path parameter page_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Notion page","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["data_source","page"]},"lastEditedTime":{"type":["string","null"]},"title":{"type":"string"},"url":{"type":["string","null"]}}}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/providers/notion/pages/{page_id}/blocks":{"get":{"operationId":"providerCapabilities.notionPageBlocks","summary":"Read bounded, recursive block content for a shared Notion page","description":"Read bounded, recursive block content for a shared Notion page","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"page_id","in":"path","required":true,"description":"Path parameter page_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Bounded Notion page blocks","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"blocks":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"depth":{"type":"integer"},"hasChildren":{"type":"boolean"},"id":{"type":"string"},"text":{"type":"string"},"type":{"type":"string"}}}},"truncated":{"type":"boolean"}}}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/providers/notion/data-sources/{data_source_id}":{"get":{"operationId":"providerCapabilities.notionDataSource","summary":"Get the current schema for a Notion data source","description":"Get the current schema for a Notion data source","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"data_source_id","in":"path","required":true,"description":"Path parameter data_source_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Notion data-source schema","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"properties":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string"},"type":{"type":"string"}}}},"title":{"type":"string"}}}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/providers/notion/data-sources/{data_source_id}/pages":{"get":{"operationId":"providerCapabilities.notionDataSourceQuery","summary":"Query pages in a Notion data source with bounded pagination","description":"Query pages in a Notion data source with bounded pagination","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"data_source_id","in":"path","required":true,"description":"Path parameter data_source_id","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Opaque Notion cursor from the previous response.","schema":{"type":"string"}},{"name":"page_size","in":"query","required":false,"description":"Results to return. Squasher limits this to 100.","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Notion data-source pages","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"hasMore":{"type":"boolean"},"nextCursor":{"type":["string","null"]},"rows":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["data_source","page"]},"lastEditedTime":{"type":["string","null"]},"title":{"type":"string"},"url":{"type":["string","null"]}}}}}}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/providers/railway/deployments":{"get":{"operationId":"providerCapabilities.railwayDeployments","summary":"List Railway deployments for the bound Railway project service","description":"List Railway deployments for the bound Railway project service","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Railway deployments","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"rows":{"type":"array","items":{"type":"object","additionalProperties":true}},"total":{"type":"integer"}}}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/providers/railway/logs":{"get":{"operationId":"providerCapabilities.railwayLogs","summary":"Search logs for the latest Railway deployment on the bound project service","description":"Search logs for the latest Railway deployment on the bound project service","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Railway logs","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"rows":{"type":"array","items":{"type":"object","additionalProperties":true}},"total":{"type":"integer"}}}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/providers/railway/restart":{"post":{"operationId":"providerCapabilities.railwayRestart","summary":"Restart the latest Railway deployment for the bound project service","description":"Restart the latest Railway deployment for the bound project service","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"environment":{"type":"string","description":"Railway environment name or id."},"service":{"type":"string","description":"Railway service name or id."}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"dangerous"}},"/v1/projects/{project_id}/providers/railway/redeploy":{"post":{"operationId":"providerCapabilities.railwayRedeploy","summary":"Redeploy the latest Railway deployment for the bound project service","description":"Redeploy the latest Railway deployment for the bound project service","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"environment":{"type":"string","description":"Railway environment name or id."},"service":{"type":"string","description":"Railway service name or id."}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"dangerous"}},"/v1/projects/{project_id}/providers/vercel/deployments":{"get":{"operationId":"providerCapabilities.vercelDeployments","summary":"List Vercel deployments for the bound Vercel project","description":"List Vercel deployments for the bound Vercel project","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Vercel deployments","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"rows":{"type":"array","items":{"type":"object","additionalProperties":true}},"total":{"type":"integer"}}}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/providers/vercel/deployment":{"get":{"operationId":"providerCapabilities.vercelDeployment","summary":"Get details for a Vercel deployment in the bound project","description":"Get details for a Vercel deployment in the bound project","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Vercel deployment details"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/providers/vercel/deployment-logs":{"get":{"operationId":"providerCapabilities.vercelDeploymentLogs","summary":"Search build and deployment logs for a Vercel deployment","description":"Search build and deployment logs for a Vercel deployment","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Vercel deployment logs","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"rows":{"type":"array","items":{"type":"object","additionalProperties":true}},"total":{"type":"integer"}}}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/providers/vercel/runtime-logs":{"get":{"operationId":"providerCapabilities.vercelRuntimeLogs","summary":"Search Vercel runtime logs for a deployment in the bound project","description":"Search Vercel runtime logs for a deployment in the bound project","tags":["providerCapabilities"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Vercel runtime logs","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"rows":{"type":"array","items":{"type":"object","additionalProperties":true}},"total":{"type":"integer"}}}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/agent-observations":{"get":{"operationId":"agentObservations.list","summary":"List agent observations for a project with filtering and pagination","description":"List agent observations for a project with filtering and pagination","tags":["agentObservations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/agent-observations/export":{"get":{"operationId":"agentObservations.export","summary":"Export bounded, score-aware AI generation examples for evaluation or model training","description":"Export bounded, score-aware AI generation examples for evaluation or model training","tags":["agentObservations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"from","in":"query","required":false,"description":"Query parameter from","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":false,"description":"Query parameter to","schema":{"type":"string","format":"date-time"}},{"name":"q","in":"query","required":false,"description":"Query parameter q","schema":{"type":"string"}},{"name":"model","in":"query","required":false,"description":"Query parameter model","schema":{"type":"string"}},{"name":"provider","in":"query","required":false,"description":"Query parameter provider","schema":{"type":"string"}},{"name":"release","in":"query","required":false,"description":"Query parameter release","schema":{"type":"string"}},{"name":"environment","in":"query","required":false,"description":"Query parameter environment","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"Query parameter status","schema":{"type":"string"}},{"name":"score_name","in":"query","required":false,"description":"Query parameter score_name","schema":{"type":"string"}},{"name":"score_source","in":"query","required":false,"description":"Query parameter score_source","schema":{"type":"string","enum":["api","eval","annotation"]}},{"name":"score_label","in":"query","required":false,"description":"Query parameter score_label","schema":{"type":"string"}},{"name":"min_score","in":"query","required":false,"description":"Query parameter min_score","schema":{"type":"number"}},{"name":"max_score","in":"query","required":false,"description":"Query parameter max_score","schema":{"type":"number"}},{"name":"include_identifiers","in":"query","required":false,"description":"Query parameter include_identifiers","schema":{"type":"boolean"}},{"name":"include_metadata","in":"query","required":false,"description":"Query parameter include_metadata","schema":{"type":"boolean"}},{"name":"require_output","in":"query","required":false,"description":"Query parameter require_output","schema":{"type":"boolean"}},{"name":"limit","in":"query","required":false,"description":"Query parameter limit","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"Query parameter offset","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"read"}},"/v1/projects/{project_id}/agent-observations/quality":{"get":{"operationId":"agentObservations.quality","summary":"Measure telemetry completeness and metadata-only privacy posture without returning captured content","description":"Measure telemetry completeness and metadata-only privacy posture without returning captured content","tags":["agentObservations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"from","in":"query","required":false,"description":"Window start; defaults to 24 hours before `to`","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":false,"description":"Window end; defaults to now. Windows are capped at 31 days","schema":{"type":"string","format":"date-time"}},{"name":"model","in":"query","required":false,"description":"Query parameter model","schema":{"type":"string"}},{"name":"provider","in":"query","required":false,"description":"Query parameter provider","schema":{"type":"string"}},{"name":"release","in":"query","required":false,"description":"Query parameter release","schema":{"type":"string"}},{"name":"environment","in":"query","required":false,"description":"Query parameter environment","schema":{"type":"string"}},{"name":"agent_id","in":"query","required":false,"description":"Query parameter agent_id","schema":{"type":"string"}},{"name":"workflow_id","in":"query","required":false,"description":"Query parameter workflow_id","schema":{"type":"string"}},{"name":"include_missing_examples","in":"query","required":false,"description":"Include up to 20 observation IDs missing each telemetry field","schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/agent-observations/{observation_id}":{"get":{"operationId":"agentObservations.get","summary":"Get a single agent observation by ID","description":"Get a single agent observation by ID","tags":["agentObservations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"observation_id","in":"path","required":true,"description":"Path parameter observation_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/agent-scores":{"get":{"operationId":"agentScores.list","summary":"List quality scores recorded against traces and generations, with filtering and pagination","description":"List quality scores recorded against traces and generations, with filtering and pagination","tags":["agentScores"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/agent-scores/summary":{"get":{"operationId":"agentScores.summary","summary":"Aggregate recorded scores by name — count, average, min and max","description":"Aggregate recorded scores by name — count, average, min and max","tags":["agentScores"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/agent-runs":{"get":{"operationId":"agentRuns.list","summary":"List hosted agent runs, optionally filtered by intent or error group","description":"List hosted agent runs, optionally filtered by intent or error group","tags":["agentRuns"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Hosted agent runs for the project","content":{"application/json":{"schema":{"type":"object","properties":{"runs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"intent":{"type":"string","enum":["fix","triage"]},"status":{"type":"string","enum":["created","queued","running","completed","failed","cancelled"]},"stage":{"type":"string","enum":["setup","context","execute","verify","pr","finalize","done"]},"threadId":{"type":["string","null"]},"artifact":{"type":"object","properties":{"proposalUrl":{"type":["string","null"]},"fixApplied":{"type":"boolean"},"testsPassed":{"type":["boolean","null"]},"testOutput":{"type":"string"},"ciPassed":{"type":"boolean"},"ciOutput":{"type":"string"},"ciRepairAttempts":{"type":"integer"},"verificationPassed":{"type":"boolean"},"verificationRiskLevel":{"type":"string","enum":["low","medium","high"]},"verificationSummary":{"type":"string"},"verificationModelId":{"type":"string"},"verificationProvider":{"type":"string"}},"additionalProperties":true},"errorGroupId":{"type":["string","null"]},"incidentId":{"type":["string","null"]},"sourceType":{"type":["string","null"],"enum":["runtime_error_group","deployment_error_group","ci_error_group","monitor_incident",null]},"sourceId":{"type":["string","null"]},"requestedByType":{"type":"string","enum":["user","system","automation"]},"requestedBy":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"startedAt":{"type":["string","null"],"format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"},"lastError":{"type":["string","null"]}},"required":["id","projectId","intent","status","stage","threadId","artifact","errorGroupId","incidentId","sourceType","sourceId","requestedByType","requestedBy","createdAt","updatedAt","startedAt","completedAt","lastError"]}}},"required":["runs"]}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"post":{"operationId":"agentRuns.create","summary":"Create a hosted agent run with explicit requester identity","description":"Create a hosted agent run with explicit requester identity","tags":["agentRuns"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"intent":{"type":"string","enum":["fix","triage"]},"requested_by":{"type":"string"},"requested_by_email":{"type":"string","format":"email"},"error_group_id":{"type":"string"},"thread_id":{"type":"string"}},"required":["intent","requested_by"]},{"type":"object","properties":{"intent":{"type":"string","enum":["fix","triage"]},"user_id":{"type":"string"},"requested_by_email":{"type":"string","format":"email"},"error_group_id":{"type":"string"},"thread_id":{"type":"string"}},"required":["intent","user_id"]}]}}}},"responses":{"201":{"description":"Agent run created and queued","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"intent":{"type":"string","enum":["fix","triage"]},"status":{"type":"string","enum":["created","queued","running","completed","failed","cancelled"]},"stage":{"type":"string","enum":["setup","context","execute","verify","pr","finalize","done"]},"threadId":{"type":["string","null"]},"artifact":{"type":"object","properties":{"proposalUrl":{"type":["string","null"]},"fixApplied":{"type":"boolean"},"testsPassed":{"type":["boolean","null"]},"testOutput":{"type":"string"},"ciPassed":{"type":"boolean"},"ciOutput":{"type":"string"},"ciRepairAttempts":{"type":"integer"},"verificationPassed":{"type":"boolean"},"verificationRiskLevel":{"type":"string","enum":["low","medium","high"]},"verificationSummary":{"type":"string"},"verificationModelId":{"type":"string"},"verificationProvider":{"type":"string"}},"additionalProperties":true},"errorGroupId":{"type":["string","null"]},"incidentId":{"type":["string","null"]},"sourceType":{"type":["string","null"],"enum":["runtime_error_group","deployment_error_group","ci_error_group","monitor_incident",null]},"sourceId":{"type":["string","null"]},"requestedByType":{"type":"string","enum":["user","system","automation"]},"requestedBy":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"startedAt":{"type":["string","null"],"format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"},"lastError":{"type":["string","null"]}},"required":["id","projectId","intent","status","stage","threadId","artifact","errorGroupId","incidentId","sourceType","sourceId","requestedByType","requestedBy","createdAt","updatedAt","startedAt","completedAt","lastError"]}}}},"400":{"description":"Invalid intent, requester identity, email, or missing error group context","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Project or error group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The requester already has 10 active agent runs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"502":{"description":"Agent run row was created but dispatch failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"write"}},"/v1/projects/{project_id}/agent-runs/{run_id}":{"get":{"operationId":"agentRuns.get","summary":"Get a hosted agent run by ID","description":"Get a hosted agent run by ID","tags":["agentRuns"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"description":"Path parameter run_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Hosted agent run with ordered, sanitized lifecycle outcomes","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"intent":{"type":"string","enum":["fix","triage"]},"status":{"type":"string","enum":["created","queued","running","completed","failed","cancelled"]},"stage":{"type":"string","enum":["setup","context","execute","verify","pr","finalize","done"]},"threadId":{"type":["string","null"]},"artifact":{"type":"object","properties":{"proposalUrl":{"type":["string","null"]},"fixApplied":{"type":"boolean"},"testsPassed":{"type":["boolean","null"]},"testOutput":{"type":"string"},"ciPassed":{"type":"boolean"},"ciOutput":{"type":"string"},"ciRepairAttempts":{"type":"integer"},"verificationPassed":{"type":"boolean"},"verificationRiskLevel":{"type":"string","enum":["low","medium","high"]},"verificationSummary":{"type":"string"},"verificationModelId":{"type":"string"},"verificationProvider":{"type":"string"}},"additionalProperties":true},"errorGroupId":{"type":["string","null"]},"incidentId":{"type":["string","null"]},"sourceType":{"type":["string","null"],"enum":["runtime_error_group","deployment_error_group","ci_error_group","monitor_incident",null]},"sourceId":{"type":["string","null"]},"requestedByType":{"type":"string","enum":["user","system","automation"]},"requestedBy":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"startedAt":{"type":["string","null"],"format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"},"lastError":{"type":["string","null"]}},"required":["id","projectId","intent","status","stage","threadId","artifact","errorGroupId","incidentId","sourceType","sourceId","requestedByType","requestedBy","createdAt","updatedAt","startedAt","completedAt","lastError"]},{"type":"object","properties":{"lifecycleOutcomes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["safe_refusal","pull_request_opened","pull_request_updated","pull_request_merged","pull_request_closed","deployed","recurrence_detected"]},"occurredAt":{"type":"string","format":"date-time"},"summary":{"type":"string"},"details":{"type":"object","properties":{"changedFiles":{"type":["integer","null"]},"commitSha":{"type":["string","null"]},"commits":{"type":["integer","null"]},"deployedAt":{"type":["string","null"],"format":"date-time"},"deploymentId":{"type":["string","null"]},"deploymentUrl":{"type":["string","null"]},"detectedAt":{"type":["string","null"],"format":"date-time"},"environment":{"type":["string","null"]},"mergedAt":{"type":["string","null"],"format":"date-time"},"proposalUrl":{"type":["string","null"]},"reason":{"type":["string","null"]},"serviceName":{"type":["string","null"]}},"additionalProperties":false}},"required":["id","kind","occurredAt","summary","details"]}}},"required":["lifecycleOutcomes"]}]}}}},"404":{"description":"Agent run not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/agent-runs/{run_id}/cancel":{"post":{"operationId":"agentRuns.cancel","summary":"Cancel a hosted agent run","description":"Cancel a hosted agent run","tags":["agentRuns"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"description":"Path parameter run_id","schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string"}}}}}},"responses":{"200":{"description":"Updated hosted agent run","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"intent":{"type":"string","enum":["fix","triage"]},"status":{"type":"string","enum":["created","queued","running","completed","failed","cancelled"]},"stage":{"type":"string","enum":["setup","context","execute","verify","pr","finalize","done"]},"threadId":{"type":["string","null"]},"artifact":{"type":"object","properties":{"proposalUrl":{"type":["string","null"]},"fixApplied":{"type":"boolean"},"testsPassed":{"type":["boolean","null"]},"testOutput":{"type":"string"},"ciPassed":{"type":"boolean"},"ciOutput":{"type":"string"},"ciRepairAttempts":{"type":"integer"},"verificationPassed":{"type":"boolean"},"verificationRiskLevel":{"type":"string","enum":["low","medium","high"]},"verificationSummary":{"type":"string"},"verificationModelId":{"type":"string"},"verificationProvider":{"type":"string"}},"additionalProperties":true},"errorGroupId":{"type":["string","null"]},"incidentId":{"type":["string","null"]},"sourceType":{"type":["string","null"],"enum":["runtime_error_group","deployment_error_group","ci_error_group","monitor_incident",null]},"sourceId":{"type":["string","null"]},"requestedByType":{"type":"string","enum":["user","system","automation"]},"requestedBy":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"startedAt":{"type":["string","null"],"format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"},"lastError":{"type":["string","null"]}},"required":["id","projectId","intent","status","stage","threadId","artifact","errorGroupId","incidentId","sourceType","sourceId","requestedByType","requestedBy","createdAt","updatedAt","startedAt","completedAt","lastError"]}}}},"404":{"description":"Agent run not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"dangerous"}},"/v1/projects/{project_id}/agent-runs/{run_id}/events":{"get":{"operationId":"agentRuns.events.list","summary":"List ordered redacted lifecycle events for a hosted agent run","description":"List ordered redacted lifecycle events for a hosted agent run","tags":["agentRuns"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"description":"Path parameter run_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Ordered agent run events after the requested sequence cursor","content":{"application/json":{"schema":{"type":"object","properties":{"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"runId":{"type":"string"},"projectId":{"type":"string"},"sequence":{"type":"integer"},"kind":{"type":"string","enum":["run_created","state_changed"]},"status":{"type":"string","enum":["created","queued","running","completed","failed","cancelled"]},"stage":{"type":"string","enum":["setup","context","execute","verify","pr","finalize","done"]},"message":{"type":"string"},"data":{"type":"object","additionalProperties":true},"createdAt":{"type":"string","format":"date-time"}},"required":["id","runId","projectId","sequence","kind","status","stage","message","data","createdAt"]}},"nextAfter":{"type":"integer"},"terminal":{"type":"boolean"}},"required":["events","nextAfter","terminal"]}}}},"404":{"description":"Agent run not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/alert-connectors/catalog":{"get":{"operationId":"alertConnectors.catalog","summary":"List supported inbound alert providers","description":"List supported inbound alert providers","tags":["alertConnectors"],"parameters":[],"responses":{"200":{"description":"Supported inbound alert connector providers","content":{"application/json":{"schema":{"items":{"additionalProperties":false,"properties":{"auth_methods":{"items":{"enum":["bearer","routing_key","sns_signature"],"type":"string"},"type":"array"},"capabilities":{"items":{"enum":["acknowledge","batch","resolve","test"],"type":"string"},"type":"array"},"config_fields":{"items":{"additionalProperties":false,"properties":{"control":{"enum":["boolean","severity","text"],"type":"string"},"default_value":{"type":["boolean","string"]},"description":{"type":"string"},"key":{"type":"string"},"label":{"type":"string"},"placeholder":{"type":"string"},"required":{"type":"boolean"}},"required":["control","description","key","label","required"],"type":"object"},"type":"array"},"description":{"type":"string"},"docs_url":{"format":"uri","type":"string"},"key":{"enum":["aws_cloudwatch","generic_webhook","prometheus_alertmanager","grafana","datadog","pagerduty_events_v2"],"type":"string"},"name":{"type":"string"},"required_config":{"items":{"type":"string"},"type":"array"},"setup_mode":{"enum":["api_key","signed_webhook"],"type":"string"}},"required":["auth_methods","capabilities","config_fields","description","docs_url","key","name","required_config","setup_mode"],"type":"object"},"type":"array"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":false,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/alert-connectors":{"get":{"operationId":"alertConnectors.list","summary":"List inbound alert connectors for a project","description":"List inbound alert connectors for a project","tags":["alertConnectors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Project alert connectors","content":{"application/json":{"schema":{"items":{"additionalProperties":false,"properties":{"config":{"additionalProperties":false,"properties":{"default_severity":{"description":"Fallback project incident-severity key when the provider event has none. Severity keys are project-configurable and are not a closed enum.","maxLength":64,"minLength":1,"type":"string"},"resolve_on_ok":{"type":"boolean"},"topic_arn":{"type":"string"}},"type":"object"},"created_at":{"format":"date-time","type":"string"},"display_name":{"type":"string"},"enabled":{"type":"boolean"},"id":{"type":"string"},"last_error":{"type":["string","null"]},"last_received_at":{"format":"date-time","type":["string","null"]},"previous_secret_expires_at":{"format":"date-time","type":["string","null"]},"project_id":{"type":"string"},"provider":{"enum":["aws_cloudwatch","generic_webhook","prometheus_alertmanager","grafana","datadog","pagerduty_events_v2"],"type":"string"},"secret_prefix":{"type":["string","null"]},"updated_at":{"format":"date-time","type":"string"}},"required":["config","created_at","display_name","enabled","id","last_error","last_received_at","previous_secret_expires_at","project_id","provider","secret_prefix","updated_at"],"type":"object"},"type":"array"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"post":{"operationId":"alertConnectors.create","summary":"Create an inbound alert connector","description":"Create an inbound alert connector","tags":["alertConnectors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"description":"Create one provider-specific inbound alert connector. AWS requires config.topic_arn; webhook providers accept only config.default_severity.","oneOf":[{"additionalProperties":false,"properties":{"config":{"additionalProperties":false,"properties":{"default_severity":{"description":"Fallback project incident-severity key when the provider event has none. Severity keys are project-configurable and are not a closed enum.","maxLength":64,"minLength":1,"type":"string"}},"type":"object"},"display_name":{"minLength":1,"maxLength":255,"type":"string"},"provider":{"enum":["generic_webhook"],"type":"string"}},"required":["provider"],"type":"object"},{"additionalProperties":false,"properties":{"config":{"additionalProperties":false,"properties":{"default_severity":{"description":"Fallback project incident-severity key when the provider event has none. Severity keys are project-configurable and are not a closed enum.","maxLength":64,"minLength":1,"type":"string"}},"type":"object"},"display_name":{"minLength":1,"maxLength":255,"type":"string"},"provider":{"enum":["prometheus_alertmanager"],"type":"string"}},"required":["provider"],"type":"object"},{"additionalProperties":false,"properties":{"config":{"additionalProperties":false,"properties":{"default_severity":{"description":"Fallback project incident-severity key when the provider event has none. Severity keys are project-configurable and are not a closed enum.","maxLength":64,"minLength":1,"type":"string"}},"type":"object"},"display_name":{"minLength":1,"maxLength":255,"type":"string"},"provider":{"enum":["grafana"],"type":"string"}},"required":["provider"],"type":"object"},{"additionalProperties":false,"properties":{"config":{"additionalProperties":false,"properties":{"default_severity":{"description":"Fallback project incident-severity key when the provider event has none. Severity keys are project-configurable and are not a closed enum.","maxLength":64,"minLength":1,"type":"string"}},"type":"object"},"display_name":{"minLength":1,"maxLength":255,"type":"string"},"provider":{"enum":["datadog"],"type":"string"}},"required":["provider"],"type":"object"},{"additionalProperties":false,"properties":{"config":{"additionalProperties":false,"properties":{"default_severity":{"description":"Fallback project incident-severity key when the provider event has none. Severity keys are project-configurable and are not a closed enum.","maxLength":64,"minLength":1,"type":"string"}},"type":"object"},"display_name":{"minLength":1,"maxLength":255,"type":"string"},"provider":{"enum":["pagerduty_events_v2"],"type":"string"}},"required":["provider"],"type":"object"},{"additionalProperties":false,"properties":{"config":{"additionalProperties":false,"properties":{"default_severity":{"description":"Fallback project incident-severity key when the provider event has none. Severity keys are project-configurable and are not a closed enum.","maxLength":64,"minLength":1,"type":"string"},"resolve_on_ok":{"description":"Resolve the linked incident when CloudWatch reports OK. Defaults to true.","type":"boolean"},"topic_arn":{"description":"Exact SNS topic ARN allowed to deliver CloudWatch alarm notifications.","pattern":"^arn:(aws|aws-us-gov|aws-cn):sns:[a-z0-9-]+:[0-9]{12}:[A-Za-z0-9_-]{1,256}$","type":"string"}},"required":["topic_arn"],"type":"object"},"display_name":{"minLength":1,"maxLength":255,"type":"string"},"provider":{"enum":["aws_cloudwatch"],"type":"string"}},"required":["config","provider"],"type":"object"}],"properties":{"config":{"oneOf":[{"additionalProperties":false,"properties":{"default_severity":{"description":"Fallback project incident-severity key when the provider event has none. Severity keys are project-configurable and are not a closed enum.","maxLength":64,"minLength":1,"type":"string"}},"type":"object"},{"additionalProperties":false,"properties":{"default_severity":{"description":"Fallback project incident-severity key when the provider event has none. Severity keys are project-configurable and are not a closed enum.","maxLength":64,"minLength":1,"type":"string"},"resolve_on_ok":{"description":"Resolve the linked incident when CloudWatch reports OK. Defaults to true.","type":"boolean"},"topic_arn":{"description":"Exact SNS topic ARN allowed to deliver CloudWatch alarm notifications.","pattern":"^arn:(aws|aws-us-gov|aws-cn):sns:[a-z0-9-]+:[0-9]{12}:[A-Za-z0-9_-]{1,256}$","type":"string"}},"required":["topic_arn"],"type":"object"}]},"display_name":{"minLength":1,"maxLength":255,"type":"string"},"provider":{"enum":["aws_cloudwatch","generic_webhook","prometheus_alertmanager","grafana","datadog","pagerduty_events_v2"],"type":"string"}},"required":["provider"],"type":"object"}}}},"responses":{"201":{"description":"Created connector and its one-time setup credential","content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"connector":{"additionalProperties":false,"properties":{"config":{"additionalProperties":false,"properties":{"default_severity":{"description":"Fallback project incident-severity key when the provider event has none. Severity keys are project-configurable and are not a closed enum.","maxLength":64,"minLength":1,"type":"string"},"resolve_on_ok":{"type":"boolean"},"topic_arn":{"type":"string"}},"type":"object"},"created_at":{"format":"date-time","type":"string"},"display_name":{"type":"string"},"enabled":{"type":"boolean"},"id":{"type":"string"},"last_error":{"type":["string","null"]},"last_received_at":{"format":"date-time","type":["string","null"]},"previous_secret_expires_at":{"format":"date-time","type":["string","null"]},"project_id":{"type":"string"},"provider":{"enum":["aws_cloudwatch","generic_webhook","prometheus_alertmanager","grafana","datadog","pagerduty_events_v2"],"type":"string"},"secret_prefix":{"type":["string","null"]},"updated_at":{"format":"date-time","type":"string"}},"required":["config","created_at","display_name","enabled","id","last_error","last_received_at","previous_secret_expires_at","project_id","provider","secret_prefix","updated_at"],"type":"object"},"setup":{"additionalProperties":false,"properties":{"authorization_header":{"type":["string","null"]},"endpoint":{"format":"uri","type":"string"},"routing_key":{"type":["string","null"]},"secret":{"type":["string","null"]}},"required":["authorization_header","endpoint","routing_key","secret"],"type":"object"}},"required":["connector","setup"],"type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"dangerous"}},"/v1/projects/{project_id}/alert-connectors/{connector_id}":{"get":{"operationId":"alertConnectors.get","summary":"Get an inbound alert connector","description":"Get an inbound alert connector","tags":["alertConnectors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"connector_id","in":"path","required":true,"description":"Path parameter connector_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Alert connector","content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"config":{"additionalProperties":false,"properties":{"default_severity":{"description":"Fallback project incident-severity key when the provider event has none. Severity keys are project-configurable and are not a closed enum.","maxLength":64,"minLength":1,"type":"string"},"resolve_on_ok":{"type":"boolean"},"topic_arn":{"type":"string"}},"type":"object"},"created_at":{"format":"date-time","type":"string"},"display_name":{"type":"string"},"enabled":{"type":"boolean"},"id":{"type":"string"},"last_error":{"type":["string","null"]},"last_received_at":{"format":"date-time","type":["string","null"]},"previous_secret_expires_at":{"format":"date-time","type":["string","null"]},"project_id":{"type":"string"},"provider":{"enum":["aws_cloudwatch","generic_webhook","prometheus_alertmanager","grafana","datadog","pagerduty_events_v2"],"type":"string"},"secret_prefix":{"type":["string","null"]},"updated_at":{"format":"date-time","type":"string"}},"required":["config","created_at","display_name","enabled","id","last_error","last_received_at","previous_secret_expires_at","project_id","provider","secret_prefix","updated_at"],"type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"put":{"operationId":"alertConnectors.update","summary":"Update an inbound alert connector","description":"Update an inbound alert connector","tags":["alertConnectors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"connector_id","in":"path","required":true,"description":"Path parameter connector_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"description":"Update connector fields. Config must match the connector's existing provider; AWS config includes topic_arn.","properties":{"config":{"oneOf":[{"additionalProperties":false,"properties":{"default_severity":{"description":"Fallback project incident-severity key when the provider event has none. Severity keys are project-configurable and are not a closed enum.","maxLength":64,"minLength":1,"type":"string"}},"type":"object"},{"additionalProperties":false,"properties":{"default_severity":{"description":"Fallback project incident-severity key when the provider event has none. Severity keys are project-configurable and are not a closed enum.","maxLength":64,"minLength":1,"type":"string"},"resolve_on_ok":{"description":"Resolve the linked incident when CloudWatch reports OK. Defaults to true.","type":"boolean"},"topic_arn":{"description":"Exact SNS topic ARN allowed to deliver CloudWatch alarm notifications.","pattern":"^arn:(aws|aws-us-gov|aws-cn):sns:[a-z0-9-]+:[0-9]{12}:[A-Za-z0-9_-]{1,256}$","type":"string"}},"required":["topic_arn"],"type":"object"}]},"display_name":{"minLength":1,"maxLength":255,"type":"string"},"enabled":{"type":"boolean"}},"type":"object"}}}},"responses":{"200":{"description":"Updated alert connector","content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"config":{"additionalProperties":false,"properties":{"default_severity":{"description":"Fallback project incident-severity key when the provider event has none. Severity keys are project-configurable and are not a closed enum.","maxLength":64,"minLength":1,"type":"string"},"resolve_on_ok":{"type":"boolean"},"topic_arn":{"type":"string"}},"type":"object"},"created_at":{"format":"date-time","type":"string"},"display_name":{"type":"string"},"enabled":{"type":"boolean"},"id":{"type":"string"},"last_error":{"type":["string","null"]},"last_received_at":{"format":"date-time","type":["string","null"]},"previous_secret_expires_at":{"format":"date-time","type":["string","null"]},"project_id":{"type":"string"},"provider":{"enum":["aws_cloudwatch","generic_webhook","prometheus_alertmanager","grafana","datadog","pagerduty_events_v2"],"type":"string"},"secret_prefix":{"type":["string","null"]},"updated_at":{"format":"date-time","type":"string"}},"required":["config","created_at","display_name","enabled","id","last_error","last_received_at","previous_secret_expires_at","project_id","provider","secret_prefix","updated_at"],"type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"},"delete":{"operationId":"alertConnectors.delete","summary":"Delete an inbound alert connector","description":"Delete an inbound alert connector","tags":["alertConnectors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"connector_id","in":"path","required":true,"description":"Path parameter connector_id","schema":{"type":"string"}}],"responses":{"204":{"description":"Alert connector deleted"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/alert-connectors/{connector_id}/deliveries":{"get":{"operationId":"alertConnectors.listDeliveries","summary":"List retained delivery outcomes for an active or deleted inbound alert connector using stable cursor pagination","description":"List retained delivery outcomes for an active or deleted inbound alert connector using stable cursor pagination","tags":["alertConnectors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"connector_id","in":"path","required":true,"description":"Path parameter connector_id","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Opaque next_cursor value returned by the previous page","schema":{"maxLength":512,"minLength":1,"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size from 1 to 100. Supplying limit or cursor selects the cursor-page response; omit both for the legacy first-page array.","schema":{"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Recent connector delivery outcomes","content":{"application/json":{"schema":{"oneOf":[{"description":"Legacy first-page response returned when neither limit nor cursor is supplied. New integrations should request a limit and use the cursor page response.","items":{"additionalProperties":false,"properties":{"connector_id":{"type":"string"},"error_code":{"type":["string","null"]},"error_message":{"type":["string","null"]},"external_alert_id":{"type":"string"},"id":{"type":"string"},"incident_id":{"type":["string","null"]},"outcome":{"enum":["failed","ignored","opened","resolved","updated"],"type":"string"},"processed_at":{"format":"date-time","type":"string"},"provider_event_id":{"type":["string","null"]},"received_at":{"format":"date-time","type":"string"}},"required":["connector_id","error_code","error_message","external_alert_id","id","incident_id","outcome","processed_at","provider_event_id","received_at"],"type":"object"},"type":"array"},{"additionalProperties":false,"properties":{"data":{"items":{"additionalProperties":false,"properties":{"connector_id":{"type":"string"},"error_code":{"type":["string","null"]},"error_message":{"type":["string","null"]},"external_alert_id":{"type":"string"},"id":{"type":"string"},"incident_id":{"type":["string","null"]},"outcome":{"enum":["failed","ignored","opened","resolved","updated"],"type":"string"},"processed_at":{"format":"date-time","type":"string"},"provider_event_id":{"type":["string","null"]},"received_at":{"format":"date-time","type":"string"}},"required":["connector_id","error_code","error_message","external_alert_id","id","incident_id","outcome","processed_at","provider_event_id","received_at"],"type":"object"},"type":"array"},"next_cursor":{"type":["string","null"]}},"required":["data","next_cursor"],"type":"object"}]}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/alert-connectors/{connector_id}/rotate-secret":{"post":{"operationId":"alertConnectors.rotateSecret","summary":"Rotate a generic webhook connector secret","description":"Rotate a generic webhook connector secret","tags":["alertConnectors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"connector_id","in":"path","required":true,"description":"Path parameter connector_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Rotated one-time connector setup credential","content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"connector":{"additionalProperties":false,"properties":{"config":{"additionalProperties":false,"properties":{"default_severity":{"description":"Fallback project incident-severity key when the provider event has none. Severity keys are project-configurable and are not a closed enum.","maxLength":64,"minLength":1,"type":"string"},"resolve_on_ok":{"type":"boolean"},"topic_arn":{"type":"string"}},"type":"object"},"created_at":{"format":"date-time","type":"string"},"display_name":{"type":"string"},"enabled":{"type":"boolean"},"id":{"type":"string"},"last_error":{"type":["string","null"]},"last_received_at":{"format":"date-time","type":["string","null"]},"previous_secret_expires_at":{"format":"date-time","type":["string","null"]},"project_id":{"type":"string"},"provider":{"enum":["aws_cloudwatch","generic_webhook","prometheus_alertmanager","grafana","datadog","pagerduty_events_v2"],"type":"string"},"secret_prefix":{"type":["string","null"]},"updated_at":{"format":"date-time","type":"string"}},"required":["config","created_at","display_name","enabled","id","last_error","last_received_at","previous_secret_expires_at","project_id","provider","secret_prefix","updated_at"],"type":"object"},"setup":{"additionalProperties":false,"properties":{"authorization_header":{"type":["string","null"]},"endpoint":{"format":"uri","type":"string"},"routing_key":{"type":["string","null"]},"secret":{"type":["string","null"]}},"required":["authorization_header","endpoint","routing_key","secret"],"type":"object"}},"required":["connector","setup"],"type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"dangerous"}},"/v1/projects/{project_id}/alert-connectors/{connector_id}/test":{"post":{"operationId":"alertConnectors.test","summary":"Check connector readiness and recent provider delivery","description":"Check connector readiness and recent provider delivery","tags":["alertConnectors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"connector_id","in":"path","required":true,"description":"Path parameter connector_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Connector readiness result","content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"accepted":{"type":"boolean"},"message":{"type":"string"}},"required":["accepted","message"],"type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/ai/stats":{"get":{"operationId":"ai.stats","summary":"Get aggregate AI request and session stats for a project","description":"Get aggregate AI request and session stats for a project","tags":["ai"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/ai/histogram":{"get":{"operationId":"ai.histogram","summary":"Get AI request, cost, and latency buckets over time for a project","description":"Get AI request, cost, and latency buckets over time for a project","tags":["ai"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/ai/sessions/{session_id}":{"get":{"operationId":"ai.getSession","summary":"Get AI session detail for a project","description":"Get AI session detail for a project","tags":["ai"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"session_id","in":"path","required":true,"description":"Path parameter session_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/ai/users/{user_id}":{"get":{"operationId":"ai.getUser","summary":"Get AI user detail for a project, optionally bounded by from/to timestamps","description":"Get AI user detail for a project, optionally bounded by from/to timestamps","tags":["ai"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"user_id","in":"path","required":true,"description":"Path parameter user_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/ai/fixes/stats":{"get":{"operationId":"ai.fixStats","summary":"Get hosted fixer dispatch and completion breakdowns for a project","description":"Get hosted fixer dispatch and completion breakdowns for a project","tags":["ai"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/ai/fixes/timeline":{"get":{"operationId":"ai.fixTimeline","summary":"Get hosted fixer dispatch counts over time for a project","description":"Get hosted fixer dispatch counts over time for a project","tags":["ai"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/dashboards":{"get":{"operationId":"dashboards.list","summary":"List dashboards for a project","description":"List dashboards for a project","tags":["dashboards"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"post":{"operationId":"dashboards.create","summary":"Create a dashboard","description":"Create a dashboard","tags":["dashboards"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/dashboards/{dashboard_id}":{"get":{"operationId":"dashboards.get","summary":"Get a dashboard and its widgets","description":"Get a dashboard and its widgets","tags":["dashboards"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"dashboard_id","in":"path","required":true,"description":"Path parameter dashboard_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"patch":{"operationId":"dashboards.update","summary":"Update dashboard metadata, layout, or sharing state","description":"Update dashboard metadata, layout, or sharing state","tags":["dashboards"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"dashboard_id","in":"path","required":true,"description":"Path parameter dashboard_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"},"delete":{"operationId":"dashboards.delete","summary":"Delete a dashboard and its widgets","description":"Delete a dashboard and its widgets","tags":["dashboards"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"dashboard_id","in":"path","required":true,"description":"Path parameter dashboard_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/dashboards/{dashboard_id}/widgets":{"post":{"operationId":"dashboards.createWidget","summary":"Add a widget to a dashboard","description":"Add a widget to a dashboard","tags":["dashboards"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"dashboard_id","in":"path","required":true,"description":"Path parameter dashboard_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/dashboards/{dashboard_id}/widgets/{widget_id}":{"patch":{"operationId":"dashboards.updateWidget","summary":"Update an existing dashboard widget","description":"Update an existing dashboard widget","tags":["dashboards"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"dashboard_id","in":"path","required":true,"description":"Path parameter dashboard_id","schema":{"type":"string"}},{"name":"widget_id","in":"path","required":true,"description":"Path parameter widget_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"},"delete":{"operationId":"dashboards.deleteWidget","summary":"Remove a widget from a dashboard","description":"Remove a widget from a dashboard","tags":["dashboards"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"dashboard_id","in":"path","required":true,"description":"Path parameter dashboard_id","schema":{"type":"string"}},{"name":"widget_id","in":"path","required":true,"description":"Path parameter widget_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/dashboard-templates":{"get":{"operationId":"dashboards.listTemplates","summary":"List prebuilt dashboard templates","description":"List prebuilt dashboard templates","tags":["dashboards"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/dashboards/from-template":{"post":{"operationId":"dashboards.createFromTemplate","summary":"Create a dashboard from a template","description":"Create a dashboard from a template","tags":["dashboards"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/dashboards/apply":{"post":{"operationId":"dashboards.apply","summary":"Create or update a dashboard from a dashboard definition","description":"Create or update a dashboard from a dashboard definition","tags":["dashboards"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/dashboard-query":{"post":{"operationId":"dashboards.executeQuery","summary":"Execute a dashboard widget query. Use time_range for relative windows, or provide both from and to ISO timestamps for an absolute window.","description":"Execute a dashboard widget query. Use time_range for relative windows, or provide both from and to ISO timestamps for an absolute window.","tags":["dashboards"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["ai","errors","fixes","ingestion","logs","metrics","traces","vitals"]},"aggregation":{"type":"string","enum":["count","avg","p50","p90","p95","p99","sum"]},"environment":{"type":"string","description":"Optional environment filter."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Queryable dashboard field name."},"operator":{"type":"string","enum":["eq","neq"],"description":"Filter comparison operator. Defaults to eq when omitted."},"value":{"type":"string","description":"Filter value."}},"required":["field","value"],"additionalProperties":false}},"from":{"type":"string","format":"date-time","description":"Absolute range start. Requires `to`; overrides `time_range` when present."},"group_by":{"type":"string","description":"Optional grouping field."},"metric_name":{"type":"string","description":"Metric name, or span name for traces widgets."},"metric_type":{"type":"string","enum":["gauge","sum","hist","exponential_histogram"]},"q":{"type":"string","description":"Search query for logs and errors widgets."},"service_name":{"type":"string","description":"Optional service filter for metrics widgets."},"time_range":{"type":"string","description":"Relative range such as 5m, 1h, 24h, or 7d."},"to":{"type":"string","format":"date-time","description":"Absolute range end. Requires `from`; overrides `time_range` when present."}},"required":["source","aggregation","time_range"],"additionalProperties":false}}}},"responses":{"200":{"description":"Dashboard query result","content":{"application/json":{"schema":{"type":"object","properties":{"aggregation":{"type":"string","enum":["count","avg","p50","p90","p95","p99","sum"]},"cache":{"type":"object","properties":{"age_ms":{"type":["number","null"]},"cached_at":{"type":["string","null"],"format":"date-time"},"expires_at":{"type":["string","null"],"format":"date-time"},"next_allowed_refresh_at":{"type":["string","null"],"format":"date-time"},"refresh_mode":{"type":"string","enum":["normal","force","bypass"]},"status":{"type":"string","enum":["hit","miss","stale","force","refresh_throttled","bypass"]},"ttl_ms":{"type":"number"}},"required":["status","cached_at","expires_at","age_ms","ttl_ms","next_allowed_refresh_at","refresh_mode"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string"},"group":{"type":["string","null"]},"value":{"type":"number"}},"required":["bucket","group","value"],"additionalProperties":false}},"from":{"type":"string","format":"date-time"},"granularity":{"type":"string"},"group_by":{"type":"string"},"source":{"type":"string","enum":["ai","errors","fixes","ingestion","logs","metrics","traces","vitals"]},"time_range":{"type":"string"},"to":{"type":"string","format":"date-time"}},"required":["source","aggregation","time_range","granularity","from","to","data"],"additionalProperties":false}}}},"400":{"description":"Invalid dashboard query","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["QUERY_REJECTED","QUERY_TEMPORARILY_UNAVAILABLE","UPSTREAM_QUERY_FAILED"]},"hint":{"type":"string"},"message":{"type":"string"}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Dashboard query backend is temporarily saturated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["QUERY_REJECTED","QUERY_TEMPORARILY_UNAVAILABLE","UPSTREAM_QUERY_FAILED"]},"hint":{"type":"string"},"message":{"type":"string"}},"required":["error"],"additionalProperties":false}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/dashboard-query/insight":{"post":{"operationId":"dashboards.inspectQuery","summary":"Get an AI/operator-friendly breakdown for one dashboard widget query. Use time_range for relative windows, or provide both from and to ISO timestamps for an absolute window.","description":"Get an AI/operator-friendly breakdown for one dashboard widget query. Use time_range for relative windows, or provide both from and to ISO timestamps for an absolute window.","tags":["dashboards"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["ai","errors","fixes","ingestion","logs","metrics","traces","vitals"]},"aggregation":{"type":"string","enum":["count","avg","p50","p90","p95","p99","sum"]},"environment":{"type":"string","description":"Optional environment filter."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Queryable dashboard field name."},"operator":{"type":"string","enum":["eq","neq"],"description":"Filter comparison operator. Defaults to eq when omitted."},"value":{"type":"string","description":"Filter value."}},"required":["field","value"],"additionalProperties":false}},"from":{"type":"string","format":"date-time","description":"Absolute range start. Requires `to`; overrides `time_range` when present."},"group_by":{"type":"string","description":"Optional grouping field."},"metric_name":{"type":"string","description":"Metric name, or span name for traces widgets."},"metric_type":{"type":"string","enum":["gauge","sum","hist","exponential_histogram"]},"q":{"type":"string","description":"Search query for logs and errors widgets."},"service_name":{"type":"string","description":"Optional service filter for metrics widgets."},"time_range":{"type":"string","description":"Relative range such as 5m, 1h, 24h, or 7d."},"to":{"type":"string","format":"date-time","description":"Absolute range end. Requires `from`; overrides `time_range` when present."}},"required":["source","aggregation","time_range"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/dashboards/{dashboard_id}/snapshot":{"get":{"operationId":"dashboards.snapshot","summary":"Capture every widget on a dashboard in one call — runs each widget's query in parallel and returns a per-widget summary alongside the timeseries. Built for LLM agents answering 'how does dashboard X look right now?' without doing N round-trips.","description":"Capture every widget on a dashboard in one call — runs each widget's query in parallel and returns a per-widget summary alongside the timeseries. Built for LLM agents answering 'how does dashboard X look right now?' without doing N round-trips.","tags":["dashboards"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"dashboard_id","in":"path","required":true,"description":"Path parameter dashboard_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Dashboard snapshot","content":{"application/json":{"schema":{"type":"object","properties":{"cache_summary":{"type":"object","properties":{"bypassed_widgets":{"type":"number"},"cached_widgets":{"type":"number"},"oldest_age_ms":{"type":["number","null"]},"refreshed_widgets":{"type":"number"},"throttled_widgets":{"type":"number"},"total_widgets":{"type":"number"}},"required":["total_widgets","cached_widgets","refreshed_widgets","throttled_widgets","bypassed_widgets","oldest_age_ms"],"additionalProperties":false},"description":{"type":["string","null"]},"duration_ms":{"type":"integer"},"generated_at":{"type":"string","format":"date-time"},"id":{"type":"string"},"name":{"type":"string"},"widgets":{"type":"array","items":{"type":"object","properties":{"cache":{"type":"object","properties":{"age_ms":{"type":["number","null"]},"cached_at":{"type":["string","null"],"format":"date-time"},"expires_at":{"type":["string","null"],"format":"date-time"},"next_allowed_refresh_at":{"type":["string","null"],"format":"date-time"},"refresh_mode":{"type":"string","enum":["normal","force","bypass"]},"status":{"type":"string","enum":["hit","miss","stale","force","refresh_throttled","bypass"]},"ttl_ms":{"type":"number"}},"required":["status","cached_at","expires_at","age_ms","ttl_ms","next_allowed_refresh_at","refresh_mode"],"additionalProperties":false},"chart_type":{"type":"string","enum":["line","bar","area","pie","table"]},"data":{"type":"object","properties":{"aggregation":{"type":"string","enum":["count","avg","p50","p90","p95","p99","sum"]},"cache":{"type":"object","properties":{"age_ms":{"type":["number","null"]},"cached_at":{"type":["string","null"],"format":"date-time"},"expires_at":{"type":["string","null"],"format":"date-time"},"next_allowed_refresh_at":{"type":["string","null"],"format":"date-time"},"refresh_mode":{"type":"string","enum":["normal","force","bypass"]},"status":{"type":"string","enum":["hit","miss","stale","force","refresh_throttled","bypass"]},"ttl_ms":{"type":"number"}},"required":["status","cached_at","expires_at","age_ms","ttl_ms","next_allowed_refresh_at","refresh_mode"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string"},"group":{"type":["string","null"]},"value":{"type":"number"}},"required":["bucket","group","value"],"additionalProperties":false}},"from":{"type":"string","format":"date-time"},"granularity":{"type":"string"},"group_by":{"type":"string"},"source":{"type":"string","enum":["ai","errors","fixes","ingestion","logs","metrics","traces","vitals"]},"time_range":{"type":"string"},"to":{"type":"string","format":"date-time"}},"required":["source","aggregation","time_range","granularity","from","to","data"],"additionalProperties":false},"error":{"type":"string"},"position":{"type":"object","properties":{"h":{"type":"integer"},"w":{"type":"integer"},"widget_id":{"type":"string"},"x":{"type":"integer"},"y":{"type":"integer"}},"required":["widget_id","x","y","w","h"],"additionalProperties":false},"query":{"type":"object","properties":{"source":{"type":"string","enum":["ai","errors","fixes","ingestion","logs","metrics","traces","vitals"]},"aggregation":{"type":"string","enum":["count","avg","p50","p90","p95","p99","sum"]},"environment":{"type":"string","description":"Optional environment filter."},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Queryable dashboard field name."},"operator":{"type":"string","enum":["eq","neq"],"description":"Filter comparison operator. Defaults to eq when omitted."},"value":{"type":"string","description":"Filter value."}},"required":["field","value"],"additionalProperties":false}},"from":{"type":"string","format":"date-time","description":"Absolute range start. Requires `to`; overrides `time_range` when present."},"group_by":{"type":"string","description":"Optional grouping field."},"metric_name":{"type":"string","description":"Metric name, or span name for traces widgets."},"metric_type":{"type":"string","enum":["gauge","sum","hist","exponential_histogram"]},"q":{"type":"string","description":"Search query for logs and errors widgets."},"service_name":{"type":"string","description":"Optional service filter for metrics widgets."},"time_range":{"type":"string","description":"Relative range such as 5m, 1h, 24h, or 7d."},"to":{"type":"string","format":"date-time","description":"Absolute range end. Requires `from`; overrides `time_range` when present."}},"required":["source","aggregation","time_range"],"additionalProperties":false},"status":{"type":"string","enum":["ok","empty","error"]},"summary":{"type":"string"},"title":{"type":"string"},"widget_id":{"type":"string"}},"required":["widget_id","title","chart_type","position","query","status","summary"],"additionalProperties":false}}},"required":["id","name","description","generated_at","duration_ms","widgets"],"additionalProperties":false}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/dashboards/{dashboard_id}/public":{"get":{"operationId":"dashboards.getPublic","summary":"Fetch a shared dashboard without authentication","description":"Fetch a shared dashboard without authentication","tags":["dashboards"],"parameters":[{"name":"dashboard_id","in":"path","required":true,"description":"Path parameter dashboard_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":false,"x-sensitive":false,"x-risk":"read"}},"/v1/dashboards/shared/{token}":{"get":{"operationId":"dashboards.getPublicByToken","summary":"Fetch a shared dashboard by its public sharing token","description":"Fetch a shared dashboard by its public sharing token","tags":["dashboards"],"parameters":[{"name":"token","in":"path","required":true,"description":"Path parameter token","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":false,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/automation-templates":{"get":{"operationId":"automations.listTemplates","summary":"List system-owned automation templates available to the project","description":"List system-owned automation templates available to the project","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/automations":{"get":{"operationId":"automations.list","summary":"List enabled, draft, and paused automations for a project","description":"List enabled, draft, and paused automations for a project","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"post":{"operationId":"automations.create","summary":"Create an automation from a template or fully custom config","description":"Create an automation from a template or fully custom config","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/automations/preview":{"post":{"operationId":"automations.preview","summary":"Dry-run a candidate automation config on recent data","description":"Dry-run a candidate automation config on recent data","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/automations/{automation_id}":{"get":{"operationId":"automations.get","summary":"Get a single automation configuration and recent run summary","description":"Get a single automation configuration and recent run summary","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"automation_id","in":"path","required":true,"description":"Path parameter automation_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"patch":{"operationId":"automations.update","summary":"Update, pause, resume, or rename an automation","description":"Update, pause, resume, or rename an automation","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"automation_id","in":"path","required":true,"description":"Path parameter automation_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"},"delete":{"operationId":"automations.delete","summary":"Delete an automation and its run history","description":"Delete an automation and its run history","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"automation_id","in":"path","required":true,"description":"Path parameter automation_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/automation-skills":{"get":{"operationId":"automations.listSkills","summary":"List project-scoped automation skills (markdown bundles)","description":"List project-scoped automation skills (markdown bundles)","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"post":{"operationId":"automations.upsertSkill","summary":"Create or update a project-scoped automation skill by name","description":"Create or update a project-scoped automation skill by name","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/automation-skills/{skill_id}":{"get":{"operationId":"automations.getSkill","summary":"Read a single automation skill","description":"Read a single automation skill","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"skill_id","in":"path","required":true,"description":"Path parameter skill_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"delete":{"operationId":"automations.deleteSkill","summary":"Delete a project-scoped automation skill","description":"Delete a project-scoped automation skill","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"skill_id","in":"path","required":true,"description":"Path parameter skill_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/automations/{automation_id}/runs":{"post":{"operationId":"automations.runManual","summary":"Trigger a manual run for an automation","description":"Trigger a manual run for an automation","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"automation_id","in":"path","required":true,"description":"Path parameter automation_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"},"get":{"operationId":"automations.listRuns","summary":"List recent runs for an automation","description":"List recent runs for an automation","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"automation_id","in":"path","required":true,"description":"Path parameter automation_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/automation-runs/{run_id}":{"get":{"operationId":"automations.getRun","summary":"Get a single run with its steps, outputs, and approvals","description":"Get a single run with its steps, outputs, and approvals","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"description":"Path parameter run_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/automation-runs/{run_id}/cancel":{"post":{"operationId":"automations.cancelRun","summary":"Cancel a queued or running automation run","description":"Cancel a queued or running automation run","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"description":"Path parameter run_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"dangerous"}},"/v1/projects/{project_id}/automation-runs/{run_id}/outputs":{"get":{"operationId":"automations.listRunOutputs","summary":"List outputs the runner produced for a run","description":"List outputs the runner produced for a run","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"description":"Path parameter run_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/automation-runs/{run_id}/approvals":{"get":{"operationId":"automations.listRunApprovals","summary":"List outputs that need approval before they can be emitted","description":"List outputs that need approval before they can be emitted","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"description":"Path parameter run_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/automation-runs/{run_id}/outputs/{output_id}/approve":{"post":{"operationId":"automations.approveOutput","summary":"Approve a dangerous automation output and let the runner emit it","description":"Approve a dangerous automation output and let the runner emit it","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"description":"Path parameter run_id","schema":{"type":"string"}},{"name":"output_id","in":"path","required":true,"description":"Path parameter output_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/automation-runs/{run_id}/outputs/{output_id}/reject":{"post":{"operationId":"automations.rejectOutput","summary":"Reject an automation output","description":"Reject an automation output","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"description":"Path parameter run_id","schema":{"type":"string"}},{"name":"output_id","in":"path","required":true,"description":"Path parameter output_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/automation-runs/{run_id}/outputs/{output_id}/create-pr":{"post":{"operationId":"automations.createPrFromOutput","summary":"Create a draft PR from an approved automation finding via the hosted fix agent","description":"Create a draft PR from an approved automation finding via the hosted fix agent","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"description":"Path parameter run_id","schema":{"type":"string"}},{"name":"output_id","in":"path","required":true,"description":"Path parameter output_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/automation-capabilities":{"get":{"operationId":"automations.listCapabilities","summary":"List built-in and project-defined automation capability manifests","description":"List built-in and project-defined automation capability manifests","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"post":{"operationId":"automations.createCapability","summary":"Define a project-scoped capability manifest the runner can attach to automations","description":"Define a project-scoped capability manifest the runner can attach to automations","tags":["automations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/notifications/destinations":{"get":{"operationId":"notifications.listDestinations","summary":"List notification destinations (Slack channel, webhook, email, PagerDuty service) for a project","description":"List notification destinations (Slack channel, webhook, email, PagerDuty service) for a project","tags":["notifications"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"post":{"operationId":"notifications.createDestination","summary":"Create a notification destination","description":"Create a notification destination","tags":["notifications"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/notifications/destinations/{destination_id}":{"delete":{"operationId":"notifications.deleteDestination","summary":"Delete a notification destination","description":"Delete a notification destination","tags":["notifications"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"destination_id","in":"path","required":true,"description":"Path parameter destination_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/notifications/destinations/{destination_id}/test":{"post":{"operationId":"notifications.testDestination","summary":"Send a test notification to the destination by writing a one-off outbox row that the notifications worker dispatches","description":"Send a test notification to the destination by writing a one-off outbox row that the notifications worker dispatches","tags":["notifications"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"destination_id","in":"path","required":true,"description":"Path parameter destination_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/notifications/routes":{"get":{"operationId":"notifications.listRoutes","summary":"List notification routes — scope + conditions + destination IDs","description":"List notification routes — scope + conditions + destination IDs","tags":["notifications"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"post":{"operationId":"notifications.createRoute","summary":"Create a notification route with M:N destinations","description":"Create a notification route with M:N destinations","tags":["notifications"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/notifications/routes/{route_id}/destinations":{"put":{"operationId":"notifications.setRouteDestinations","summary":"Replace the set of destinations attached to a route","description":"Replace the set of destinations attached to a route","tags":["notifications"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"route_id","in":"path","required":true,"description":"Path parameter route_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/notifications/routes/{route_id}":{"delete":{"operationId":"notifications.deleteRoute","summary":"Delete a notification route","description":"Delete a notification route","tags":["notifications"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"route_id","in":"path","required":true,"description":"Path parameter route_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/notifications/deliveries":{"get":{"operationId":"notifications.listDeliveries","summary":"List recent delivery attempts (success + failure) for the project","description":"List recent delivery attempts (success + failure) for the project","tags":["notifications"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/sourcemaps":{"get":{"operationId":"sourcemaps.list","summary":"List uploaded sourcemaps (optionally filter by service and release)","description":"List uploaded sourcemaps (optionally filter by service and release)","tags":["sourcemaps"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"post":{"operationId":"sourcemaps.upload","summary":"Upload sourcemap files for a service release (multipart)","description":"Upload sourcemap files for a service release (multipart)","tags":["sourcemaps"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/sourcemaps/{sourcemap_id}":{"delete":{"operationId":"sourcemaps.delete","summary":"Delete a sourcemap by ID","description":"Delete a sourcemap by ID","tags":["sourcemaps"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"sourcemap_id","in":"path","required":true,"description":"Path parameter sourcemap_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/api-keys":{"get":{"operationId":"apiKeys.list","summary":"List API keys for a project","description":"List API keys for a project","tags":["apiKeys"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"read"},"post":{"operationId":"apiKeys.create","summary":"Create a project API key","description":"Create a project API key","tags":["apiKeys"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expires_at":{"type":["string","null"],"description":"Optional ISO timestamp after which the key expires."},"label":{"type":"string","description":"Human-readable key label."},"scopes":{"type":"array","items":{"type":"string"},"description":"Permission scopes assigned to the new key."}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"write"}},"/v1/projects/{project_id}/api-keys/{key_id}":{"get":{"operationId":"apiKeys.get","summary":"Get API key metadata by ID","description":"Get API key metadata by ID","tags":["apiKeys"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"key_id","in":"path","required":true,"description":"Path parameter key_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"read"},"patch":{"operationId":"apiKeys.update","summary":"Update API key metadata or scopes","description":"Update API key metadata or scopes","tags":["apiKeys"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"key_id","in":"path","required":true,"description":"Path parameter key_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","description":"Updated human-readable key label."},"scopes":{"type":"array","items":{"type":"string"},"description":"Replacement permission scopes for the key."}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"write"},"delete":{"operationId":"apiKeys.delete","summary":"Revoke a project API key","description":"Revoke a project API key","tags":["apiKeys"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"key_id","in":"path","required":true,"description":"Path parameter key_id","schema":{"type":"string"}}],"responses":{"204":{"description":"API key revoked"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/github/repos":{"get":{"operationId":"github.listRepos","summary":"List GitHub App installed repos available to a project","description":"List GitHub App installed repos available to a project","tags":["github"],"parameters":[{"name":"project_id","in":"query","required":true,"description":"Query parameter project_id","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":false,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/github":{"put":{"operationId":"github.link","summary":"Link one or more GitHub repos to a project","description":"Link one or more GitHub repos to a project","tags":["github"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"},"delete":{"operationId":"github.unlink","summary":"Unlink GitHub repos from a project","description":"Unlink GitHub repos from a project","tags":["github"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/integrations/providers":{"get":{"operationId":"integrations.listProviders","summary":"List provider-agnostic integration setup metadata for CLI, API, and MCP flows","description":"List provider-agnostic integration setup metadata for CLI, API, and MCP flows","tags":["integrations"],"parameters":[],"responses":{"200":{"description":"OK"},"default":{"description":"Validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":false,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/provider-connections":{"get":{"operationId":"integrations.listConnections","summary":"List one-click provider connections for a project","description":"List one-click provider connections for a project","tags":["integrations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/provider-connections/readiness":{"get":{"operationId":"integrations.providerReadiness","summary":"List side-effect-free runtime readiness for every one-click provider","description":"List side-effect-free runtime readiness for every one-click provider","tags":["integrations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/provider-connections/{provider}":{"get":{"operationId":"integrations.getConnection","summary":"Get a one-click provider connection for a project","description":"Get a one-click provider connection for a project","tags":["integrations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"provider","in":"path","required":true,"description":"One-click provider ID","schema":{"enum":["aws","cloudflare","gcp","notion","railway","render","sentry","vercel"],"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"delete":{"operationId":"integrations.disconnectConnection","summary":"Remove a provider connection and its Squasher-owned remote resources","description":"Remove a provider connection and its Squasher-owned remote resources","tags":["integrations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"provider","in":"path","required":true,"description":"One-click provider ID","schema":{"enum":["aws","cloudflare","gcp","notion","railway","render","sentry","vercel"],"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/provider-connections/{provider}/connect-plan":{"post":{"operationId":"integrations.connectPlan","summary":"Create a short-lived authorization or infrastructure setup plan","description":"Create a short-lived authorization or infrastructure setup plan","tags":["integrations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"provider","in":"path","required":true,"description":"One-click provider ID","schema":{"enum":["aws","cloudflare","gcp","notion","railway","render","sentry","vercel"],"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"return_url":{"format":"uri","type":"string"},"settings":{"additionalProperties":true,"type":"object"}},"type":"object"}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"write"}},"/v1/projects/{project_id}/provider-connections/{provider}/reconcile":{"post":{"operationId":"integrations.reconcileConnection","summary":"Check and repair resources owned by a provider connection","description":"Check and repair resources owned by a provider connection","tags":["integrations"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"provider","in":"path","required":true,"description":"One-click provider ID","schema":{"enum":["aws","cloudflare","gcp","notion","railway","render","sentry","vercel"],"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"dangerous"}},"/v1/projects/{project_id}/infrastructure/collectors":{"get":{"operationId":"infrastructure.collectors.list","summary":"List Squasher Collectors seen from their OpenTelemetry self-metrics","description":"List Squasher Collectors seen from their OpenTelemetry self-metrics","tags":["infrastructure"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Maximum collectors to return, from 1 through 100","schema":{"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/infrastructure/overview":{"get":{"operationId":"infrastructure.collectors.overview","summary":"Get active, degraded, and offline Squasher Collector counts","description":"Get active, degraded, and offline Squasher Collector counts","tags":["infrastructure"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/log-connectors/catalog":{"get":{"operationId":"logConnectors.catalog","summary":"List supported log connector profiles","description":"List supported log connector profiles","tags":["logConnectors"],"parameters":[],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":false,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/log-connectors":{"get":{"operationId":"logConnectors.list","summary":"List log connectors configured for a project","description":"List log connectors configured for a project","tags":["logConnectors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"post":{"operationId":"logConnectors.create","summary":"Create a log connector and issue a dedicated ingest key","description":"Create a log connector and issue a dedicated ingest key","tags":["logConnectors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/log-connectors/onboard":{"post":{"operationId":"logConnectors.onboard","summary":"Create a log connector with self-serve onboarding instructions","description":"Create a log connector with self-serve onboarding instructions","tags":["logConnectors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/log-connectors/{connection_id}":{"get":{"operationId":"logConnectors.get","summary":"Get a single log connector connection","description":"Get a single log connector connection","tags":["logConnectors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"connection_id","in":"path","required":true,"description":"Path parameter connection_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"put":{"operationId":"logConnectors.update","summary":"Update a log connector connection","description":"Update a log connector connection","tags":["logConnectors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"connection_id","in":"path","required":true,"description":"Path parameter connection_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"},"delete":{"operationId":"logConnectors.delete","summary":"Delete a log connector and revoke its managed key","description":"Delete a log connector and revoke its managed key","tags":["logConnectors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"connection_id","in":"path","required":true,"description":"Path parameter connection_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/log-connectors/{connection_id}/verify":{"post":{"operationId":"logConnectors.verify","summary":"Mark a log connector as verified","description":"Mark a log connector as verified","tags":["logConnectors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"connection_id","in":"path","required":true,"description":"Path parameter connection_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/log-connectors/{connection_id}/rotate-key":{"post":{"operationId":"logConnectors.rotateKey","summary":"Rotate the managed ingest key for a connector","description":"Rotate the managed ingest key for a connector","tags":["logConnectors"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"connection_id","in":"path","required":true,"description":"Path parameter connection_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"dangerous"}},"/v1/billing/plans":{"get":{"operationId":"billing.listPlans","summary":"List available billing plans","description":"List available billing plans","tags":["billing"],"parameters":[],"responses":{"200":{"description":"OK"},"default":{"description":"Validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":false,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/ask":{"post":{"operationId":"chat.ask","summary":"Create or continue a project chat thread with a user question","description":"Create or continue a project chat thread with a user question","tags":["chat"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"source":{"type":"string","enum":["api","cli","mcp","slack","system","web"]},"thread_id":{"type":["string","null"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/ask/stream":{"post":{"operationId":"chat.askStream","summary":"Create or continue a project chat thread and stream the assistant answer","description":"Create or continue a project chat thread and stream the assistant answer","tags":["chat"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"source":{"type":"string","enum":["api","cli","mcp","slack","system","web"]},"thread_id":{"type":["string","null"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/threads":{"get":{"operationId":"chat.threads.list","summary":"List project chat threads visible to the team","description":"List project chat threads visible to the team","tags":["chat"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"incident_id","in":"query","required":false,"description":"Only return the durable thread bound to this incident; accepts its display ID or canonical UUID","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Query parameter limit","schema":{"type":"integer"}},{"name":"status","in":"query","required":false,"description":"Query parameter status","schema":{"type":"string","enum":["active","all","archived"]}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"post":{"operationId":"chat.threads.create","summary":"Create a project chat thread","description":"Create a project chat thread","tags":["chat"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"external_thread_id":{"type":["string","null"]},"source":{"type":"string","enum":["api","cli","mcp","slack","system","web"]},"title":{"type":["string","null"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/threads/search":{"get":{"operationId":"chat.threads.search","summary":"Search project chat threads by title","description":"Search project chat threads by title","tags":["chat"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/threads/{thread_id}":{"get":{"operationId":"chat.threads.get","summary":"Get a project chat thread","description":"Get a project chat thread","tags":["chat"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"thread_id","in":"path","required":true,"description":"Path parameter thread_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"delete":{"operationId":"chat.threads.delete","summary":"Delete a project chat thread and its messages","description":"Delete a project chat thread and its messages","tags":["chat"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"thread_id","in":"path","required":true,"description":"Path parameter thread_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/threads/{thread_id}/archive":{"post":{"operationId":"chat.threads.archive","summary":"Archive a project chat thread","description":"Archive a project chat thread","tags":["chat"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"thread_id","in":"path","required":true,"description":"Path parameter thread_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/threads/{thread_id}/unarchive":{"post":{"operationId":"chat.threads.unarchive","summary":"Unarchive a project chat thread","description":"Unarchive a project chat thread","tags":["chat"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"thread_id","in":"path","required":true,"description":"Path parameter thread_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/threads/{thread_id}/messages":{"get":{"operationId":"chat.messages.list","summary":"List messages in a project chat thread","description":"List messages in a project chat thread","tags":["chat"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"thread_id","in":"path","required":true,"description":"Path parameter thread_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"post":{"operationId":"chat.messages.send","summary":"Append a message to a project chat thread","description":"Append a message to a project chat thread","tags":["chat"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"thread_id","in":"path","required":true,"description":"Path parameter thread_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"author_image":{"type":["string","null"]},"author_name":{"type":["string","null"]},"external_message_id":{"type":["string","null"]},"message":{"type":"string"},"role":{"type":"string","enum":["assistant","system","user"]},"source":{"type":"string","enum":["api","cli","mcp","slack","system","web"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/query":{"post":{"operationId":"query.run","summary":"Run a safe, scoped SELECT over the public observability query model.","description":"Run a safe, scoped SELECT over the public observability query model.","tags":["query"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sql":{"type":"string","description":"SELECT statement over the public observability query model."},"long_range":{"type":"boolean","description":"Allow a 30d-90d time window when the project policy permits it."}},"required":["sql"],"additionalProperties":false}}}},"responses":{"200":{"description":"Query results","content":{"application/json":{"schema":{"type":"object","properties":{"rows":{"type":"array","items":{"type":"object","additionalProperties":true}},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"}},"required":["name","type"],"additionalProperties":false}},"scanned_rows":{"type":"integer"},"scanned_bytes":{"type":"integer"},"duration_ms":{"type":"integer"}},"required":["rows","columns","scanned_rows","scanned_bytes","duration_ms"],"additionalProperties":false}}}},"400":{"description":"Invalid, unsafe, or unsupported query","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["NOT_SELECT","PARSE_FAILED","FORBIDDEN_TABLE","MISSING_TIMESTAMP_FILTER","RANGE_TOO_LARGE","LIMIT_TOO_HIGH","FORBIDDEN_SELECT_STAR","UNKNOWN_COLUMN","CROSS_PROJECT_REFERENCE","UNSUPPORTED_STATEMENT","QUERY_REJECTED","QUERY_BUDGET_EXCEEDED","QUERY_RESULT_TOO_LARGE","QUERY_TEMPORARILY_UNAVAILABLE","UPSTREAM_QUERY_FAILED","invalid_request"]},"hint":{"type":"string"},"message":{"type":"string"}},"required":["error","message"],"additionalProperties":false}}}},"503":{"description":"Safe-query executor is unavailable or temporarily saturated","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["NOT_SELECT","PARSE_FAILED","FORBIDDEN_TABLE","MISSING_TIMESTAMP_FILTER","RANGE_TOO_LARGE","LIMIT_TOO_HIGH","FORBIDDEN_SELECT_STAR","UNKNOWN_COLUMN","CROSS_PROJECT_REFERENCE","UNSUPPORTED_STATEMENT","QUERY_REJECTED","QUERY_BUDGET_EXCEEDED","QUERY_RESULT_TOO_LARGE","QUERY_TEMPORARILY_UNAVAILABLE","UPSTREAM_QUERY_FAILED","invalid_request"]},"hint":{"type":"string"},"message":{"type":"string"}},"required":["error","message"],"additionalProperties":false}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/query/explain":{"post":{"operationId":"query.explain","summary":"EXPLAIN ESTIMATE for a safe query — returns estimated rows, bytes, budget verdict.","description":"EXPLAIN ESTIMATE for a safe query — returns estimated rows, bytes, budget verdict.","tags":["query"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sql":{"type":"string","description":"SELECT statement over the public observability query model."},"long_range":{"type":"boolean","description":"Allow a 30d-90d time window when the project policy permits it."}},"required":["sql"],"additionalProperties":false}}}},"responses":{"200":{"description":"Query cost estimate","content":{"application/json":{"schema":{"type":"object","properties":{"estimated_rows":{"type":"integer"},"estimated_bytes":{"type":"integer"},"suggested_indexes":{"type":"array","items":{"type":"string"}},"exceeds_budget":{"type":"boolean"}},"required":["estimated_rows","estimated_bytes","suggested_indexes","exceeds_budget"],"additionalProperties":false}}}},"400":{"description":"Invalid, unsafe, or unsupported query","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["NOT_SELECT","PARSE_FAILED","FORBIDDEN_TABLE","MISSING_TIMESTAMP_FILTER","RANGE_TOO_LARGE","LIMIT_TOO_HIGH","FORBIDDEN_SELECT_STAR","UNKNOWN_COLUMN","CROSS_PROJECT_REFERENCE","UNSUPPORTED_STATEMENT","QUERY_REJECTED","QUERY_BUDGET_EXCEEDED","QUERY_RESULT_TOO_LARGE","QUERY_TEMPORARILY_UNAVAILABLE","UPSTREAM_QUERY_FAILED","invalid_request"]},"hint":{"type":"string"},"message":{"type":"string"}},"required":["error","message"],"additionalProperties":false}}}},"503":{"description":"Safe-query executor is unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["NOT_SELECT","PARSE_FAILED","FORBIDDEN_TABLE","MISSING_TIMESTAMP_FILTER","RANGE_TOO_LARGE","LIMIT_TOO_HIGH","FORBIDDEN_SELECT_STAR","UNKNOWN_COLUMN","CROSS_PROJECT_REFERENCE","UNSUPPORTED_STATEMENT","QUERY_REJECTED","QUERY_BUDGET_EXCEEDED","QUERY_RESULT_TOO_LARGE","QUERY_TEMPORARILY_UNAVAILABLE","UPSTREAM_QUERY_FAILED","invalid_request"]},"hint":{"type":"string"},"message":{"type":"string"}},"required":["error","message"],"additionalProperties":false}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/replays":{"get":{"operationId":"replays.list","summary":"List recorded replay sessions for a project","description":"List recorded replay sessions for a project","tags":["replays"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/replays/search":{"get":{"operationId":"replays.search","summary":"Search recorded replay session rollups with compact field masks","description":"Search recorded replay session rollups with compact field masks","tags":["replays"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"from","in":"query","required":true,"description":"Query parameter from","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":true,"description":"Query parameter to","schema":{"type":"string","format":"date-time"}},{"name":"ai_freeform_tag","in":"query","required":false,"description":"Query parameter ai_freeform_tag","schema":{"type":"string"}},{"name":"ai_highlighted","in":"query","required":false,"description":"Query parameter ai_highlighted","schema":{"type":"boolean"}},{"name":"ai_tag","in":"query","required":false,"description":"Query parameter ai_tag","schema":{"type":"string"}},{"name":"environment","in":"query","required":false,"description":"Query parameter environment","schema":{"type":"string"}},{"name":"fields","in":"query","required":false,"description":"Comma-separated replay summary fields: session_id, started_at, ended_at, retention_expires_at, retention_state, segment_reads_allowed, deleted_at, deleted_reason, duration_ms, first_url, page_urls, message_count, interaction_count, click_count, keypress_count, mouse_activity_count, active_ms, console_log_count, console_warn_count, console_error_count, network_request_count, network_failed_count, ai_tags, ai_freeform_tags, ai_highlighted, ai_enrichment_status, ai_enriched_at, ai_enrichment_error, source, library, library_version, sdk_package, sdk_version, event_count, error_count, distinct_id, user_id, visitor_id, environment, release, storage_bytes, storage_key_prefix, created_at, segment_count","schema":{"type":"string"}},{"name":"library","in":"query","required":false,"description":"Query parameter library","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Default 25, clamped to 100","schema":{"type":"integer"}},{"name":"min_console_errors","in":"query","required":false,"description":"Query parameter min_console_errors","schema":{"type":"integer"}},{"name":"min_console_logs","in":"query","required":false,"description":"Query parameter min_console_logs","schema":{"type":"integer"}},{"name":"min_console_warnings","in":"query","required":false,"description":"Query parameter min_console_warnings","schema":{"type":"integer"}},{"name":"min_interactions","in":"query","required":false,"description":"Query parameter min_interactions","schema":{"type":"integer"}},{"name":"min_network_failed","in":"query","required":false,"description":"Query parameter min_network_failed","schema":{"type":"integer"}},{"name":"order","in":"query","required":false,"description":"Query parameter order","schema":{"type":"string","enum":["active_ms_desc","console_error_count_desc","created_at_asc","created_at_desc","interaction_count_desc","network_failed_count_desc","started_at_asc","started_at_desc"]}},{"name":"release","in":"query","required":false,"description":"Query parameter release","schema":{"type":"string"}},{"name":"source","in":"query","required":false,"description":"Query parameter source","schema":{"type":"string"}},{"name":"url","in":"query","required":false,"description":"Query parameter url","schema":{"type":"string"}}],"responses":{"200":{"description":"Compact replay search results","content":{"application/json":{"schema":{"type":"object","properties":{"fields":{"type":"array","items":{"type":"string","enum":["session_id","started_at","ended_at","retention_expires_at","retention_state","segment_reads_allowed","deleted_at","deleted_reason","duration_ms","first_url","page_urls","message_count","interaction_count","click_count","keypress_count","mouse_activity_count","active_ms","console_log_count","console_warn_count","console_error_count","network_request_count","network_failed_count","ai_tags","ai_freeform_tags","ai_highlighted","ai_enrichment_status","ai_enriched_at","ai_enrichment_error","source","library","library_version","sdk_package","sdk_version","event_count","error_count","distinct_id","user_id","visitor_id","environment","release","storage_bytes","storage_key_prefix","created_at","segment_count"]}},"limit":{"type":"integer"},"order":{"type":"string","enum":["active_ms_desc","console_error_count_desc","created_at_asc","created_at_desc","interaction_count_desc","network_failed_count_desc","started_at_asc","started_at_desc"]},"replays":{"type":"array","items":{"type":"object","properties":{"active_ms":{"type":"integer"},"ai_enriched_at":{"type":["string","null"],"format":"date-time"},"ai_enrichment_error":{"type":["string","null"]},"ai_freeform_tags":{"type":"array","items":{"type":"string"}},"ai_highlighted":{"type":"boolean"},"ai_enrichment_status":{"type":"string","enum":["failed","not_started","succeeded"]},"ai_tags":{"type":"array","items":{"type":"string"}},"click_count":{"type":"integer"},"console_error_count":{"type":"integer"},"console_log_count":{"type":"integer"},"console_warn_count":{"type":"integer"},"created_at":{"type":"string","format":"date-time"},"deleted_at":{"type":["string","null"],"format":"date-time"},"deleted_reason":{"type":["string","null"]},"distinct_id":{"type":["string","null"]},"duration_ms":{"type":"integer"},"ended_at":{"type":["string","null"],"format":"date-time"},"environment":{"type":["string","null"]},"error_count":{"type":"integer"},"event_count":{"type":"integer"},"first_url":{"type":"string"},"interaction_count":{"type":"integer"},"keypress_count":{"type":"integer"},"library":{"type":["string","null"]},"library_version":{"type":["string","null"]},"message_count":{"type":"integer"},"mouse_activity_count":{"type":"integer"},"network_failed_count":{"type":"integer"},"network_request_count":{"type":"integer"},"page_urls":{"type":"array","items":{"type":"string"}},"release":{"type":["string","null"]},"retention_expires_at":{"type":["string","null"],"format":"date-time"},"retention_state":{"type":"string","enum":["active","deleted","expired","unknown"]},"sdk_package":{"type":["string","null"]},"sdk_version":{"type":["string","null"]},"segment_count":{"type":"integer"},"segment_reads_allowed":{"type":"boolean"},"session_id":{"type":"string"},"source":{"type":["string","null"]},"started_at":{"type":"string","format":"date-time"},"storage_bytes":{"type":"integer"},"storage_key_prefix":{"type":"string"},"user_id":{"type":["string","null"]},"visitor_id":{"type":["string","null"]}},"additionalProperties":false}}},"required":["fields","limit","order","replays"],"additionalProperties":false}}}},"422":{"description":"Invalid replay search parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/replays/{session_id}":{"get":{"operationId":"replays.get","summary":"Get replay session metadata and indexed segments","description":"Get replay session metadata and indexed segments","tags":["replays"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"session_id","in":"path","required":true,"description":"Replay session UUID returned by replays.search.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/replays/{session_id}/inspect":{"get":{"operationId":"replays.inspect","summary":"Inspect a replay with a compact timeline of important moments","description":"Inspect a replay with a compact timeline of important moments","tags":["replays"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"session_id","in":"path","required":true,"description":"Replay session UUID returned by replays.search.","schema":{"type":"string","format":"uuid"}},{"name":"include","in":"query","required":false,"description":"Comma-separated timeline categories: activity, console, network, page, replay_error, segment","schema":{"type":"string"}},{"name":"exclude","in":"query","required":false,"description":"Comma-separated timeline categories to omit: activity, console, network, page, replay_error, segment","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Default 100, clamped to 200","schema":{"type":"integer"}},{"name":"slow_network_ms","in":"query","required":false,"description":"Query parameter slow_network_ms","schema":{"type":"integer"}}],"responses":{"200":{"description":"Compact replay timeline inspection","content":{"application/json":{"schema":{"type":"object","properties":{"categories":{"type":"array","items":{"type":"string","enum":["activity","console","network","page","replay_error","segment"]}},"counts":{"type":"object","properties":{"by_type":{"type":"object","additionalProperties":{"type":"integer"}},"total":{"type":"integer"},"truncated":{"type":"boolean"}},"required":["by_type","total","truncated"],"additionalProperties":false},"coverage":{"type":"object","properties":{"partial":{"type":"boolean"},"segments_loaded":{"type":"integer"},"segments_missing":{"type":"integer"}},"required":["partial","segments_loaded","segments_missing"],"additionalProperties":false},"limit":{"type":"integer"},"replay":{"type":"object","properties":{"active_ms":{"type":"integer"},"ai_enriched_at":{"type":["string","null"],"format":"date-time"},"ai_enrichment_error":{"type":["string","null"]},"ai_freeform_tags":{"type":"array","items":{"type":"string"}},"ai_highlighted":{"type":"boolean"},"ai_enrichment_status":{"type":"string","enum":["failed","not_started","succeeded"]},"ai_tags":{"type":"array","items":{"type":"string"}},"click_count":{"type":"integer"},"console_error_count":{"type":"integer"},"console_log_count":{"type":"integer"},"console_warn_count":{"type":"integer"},"created_at":{"type":"string","format":"date-time"},"deleted_at":{"type":["string","null"],"format":"date-time"},"deleted_reason":{"type":["string","null"]},"distinct_id":{"type":["string","null"]},"duration_ms":{"type":"integer"},"ended_at":{"type":["string","null"],"format":"date-time"},"environment":{"type":["string","null"]},"error_count":{"type":"integer"},"event_count":{"type":"integer"},"first_url":{"type":"string"},"interaction_count":{"type":"integer"},"keypress_count":{"type":"integer"},"library":{"type":["string","null"]},"library_version":{"type":["string","null"]},"message_count":{"type":"integer"},"mouse_activity_count":{"type":"integer"},"network_failed_count":{"type":"integer"},"network_request_count":{"type":"integer"},"page_urls":{"type":"array","items":{"type":"string"}},"release":{"type":["string","null"]},"retention_expires_at":{"type":["string","null"],"format":"date-time"},"retention_state":{"type":"string","enum":["active","deleted","expired","unknown"]},"sdk_package":{"type":["string","null"]},"sdk_version":{"type":["string","null"]},"segment_count":{"type":"integer"},"segment_reads_allowed":{"type":"boolean"},"session_id":{"type":"string"},"source":{"type":["string","null"]},"started_at":{"type":"string","format":"date-time"},"storage_bytes":{"type":"integer"},"storage_key_prefix":{"type":"string"},"user_id":{"type":["string","null"]},"visitor_id":{"type":["string","null"]}},"required":["session_id","started_at","ended_at","retention_expires_at","retention_state","segment_reads_allowed","deleted_at","deleted_reason","duration_ms","first_url","page_urls","message_count","interaction_count","click_count","keypress_count","mouse_activity_count","active_ms","console_log_count","console_warn_count","console_error_count","network_request_count","network_failed_count","ai_tags","ai_freeform_tags","ai_highlighted","ai_enrichment_status","ai_enriched_at","ai_enrichment_error","source","library","library_version","sdk_package","sdk_version","event_count","error_count","storage_bytes","storage_key_prefix","created_at","segment_count"],"additionalProperties":false},"segments":{"type":"array","items":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"ended_at":{"type":"string","format":"date-time"},"event_count":{"type":"integer"},"segment_index":{"type":"integer"},"size_bytes":{"type":"integer"},"started_at":{"type":"string","format":"date-time"},"storage_key":{"type":"string"}},"required":["created_at","ended_at","event_count","segment_index","size_bytes","started_at","storage_key"],"additionalProperties":false}},"slow_network_ms":{"type":"integer"},"timeline":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string","enum":["activity","console","network","page","replay_error","segment"]},"duration_ms":{"type":"integer"},"event_count":{"type":"integer"},"offset_ms":{"type":"integer"},"page_url":{"type":"string"},"request":{"type":"object","properties":{"duration_ms":{"type":"integer"},"method":{"type":["string","null"]},"source":{"type":["string","null"]},"status_code":{"type":["integer","null"]},"url":{"type":"string"}},"additionalProperties":false},"segment_index":{"type":"integer"},"severity":{"type":"string","enum":["error","fatal","log","warn"]},"timestamp":{"type":"string","format":"date-time"},"type":{"type":"string","enum":["active_window","console_error","console_log","console_warn","inactive_gap","network_failed","network_slow","page_visit","replay_error","segment_boundary"]}},"required":["category","offset_ms","timestamp","type"],"additionalProperties":false}},"truncated":{"type":"boolean"}},"required":["categories","counts","coverage","limit","replay","segments","slow_network_ms","timeline","truncated"],"additionalProperties":false}}}},"404":{"description":"Replay session not found or expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Invalid replay inspect parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/replays/{session_id}/events":{"get":{"operationId":"replays.events","summary":"Fetch a replay segment payload from object storage","description":"Fetch a replay segment payload from object storage","tags":["replays"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"session_id","in":"path","required":true,"description":"Replay session UUID returned by replays.search.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/remote-access/targets":{"get":{"operationId":"remoteAccess.targets.list","summary":"List sanitized verified targets available to the caller","description":"List sanitized verified targets available to the caller","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Remote access targets","content":{"application/json":{"schema":{"type":"object","properties":{"targets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string"},"environment":{"type":"string"},"enabled":{"type":"boolean"},"runner_version":{"type":["string","null"]},"verified_at":{"type":["string","null"],"format":"date-time"}},"required":["id","label","environment","enabled","runner_version","verified_at"],"additionalProperties":false}}},"required":["targets"],"additionalProperties":false}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"post":{"operationId":"remoteAccess.targets.create","summary":"Create an unverified target intent bound to a connector","description":"Create an unverified target intent bound to a connector","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":120},"environment":{"type":"string","minLength":1,"maxLength":64},"connector_id":{"type":"string","format":"uuid"},"auth_profile_id":{"type":"string","minLength":1,"maxLength":120},"policy":{"type":"object","properties":{"allowed_operations":{"type":"array","items":{"type":"string","enum":["host.disk_usage","host.kernel","host.load","host.time","service.restart","service.status"]}},"max_output_bytes":{"type":"integer","minimum":1,"maximum":10485760},"max_timeout_seconds":{"type":"integer","minimum":1,"maximum":300}},"required":["allowed_operations","max_output_bytes","max_timeout_seconds"],"additionalProperties":false}},"required":["label","environment","connector_id","auth_profile_id","policy"],"additionalProperties":false}}}},"responses":{"201":{"description":"Unverified target with connector verification request","content":{"application/json":{"schema":{"type":"object","properties":{"target":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string"},"environment":{"type":"string"},"enabled":{"type":"boolean"},"runner_version":{"type":["string","null"]},"verified_at":{"type":["string","null"],"format":"date-time"},"connector_id":{"type":"string","format":"uuid"}},"required":["id","label","environment","enabled","runner_version","verified_at","connector_id"],"additionalProperties":false},"verification_request":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"expires_at":{"type":"string","format":"date-time"}},"required":["id","expires_at"],"additionalProperties":false}},"required":["target","verification_request"],"additionalProperties":false}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"dangerous"}},"/v1/projects/{project_id}/remote-access/requests/preview":{"post":{"operationId":"remoteAccess.requests.preview","summary":"Evaluate an exact typed operation without creating or executing it","description":"Evaluate an exact typed operation without creating or executing it","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"target_id":{"type":"string","format":"uuid"},"operation":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","enum":["host.disk_usage"]},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["host.kernel"]},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["host.load"]},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["host.time"]},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["service.restart"]},"parameters":{"type":"object","properties":{"unit":{"type":"string","minLength":1,"maxLength":128}},"required":["unit"],"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["service.status"]},"parameters":{"type":"object","properties":{"unit":{"type":"string","minLength":1,"maxLength":128}},"required":["unit"],"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false}]},"timeout_seconds":{"type":"integer","minimum":1,"maximum":300}},"required":["target_id","operation","timeout_seconds"],"additionalProperties":false}}}},"responses":{"200":{"description":"Policy decision","content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","enum":["deny","execute","request_approval"]},"code":{"type":"string","enum":["approval_required","invalid_timeout","operation_not_allowed","policy_allows_execution","remediation_disabled"]},"message":{"type":"string"},"mode":{"type":"string","enum":["observe","remediate"]}},"required":["action","code","message","mode"],"additionalProperties":false}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/remote-access/requests":{"post":{"operationId":"remoteAccess.requests.create","summary":"Create an idempotent typed remote operation request","description":"Create an idempotent typed remote operation request","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"target_id":{"type":"string","format":"uuid"},"operation":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","enum":["host.disk_usage"]},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["host.kernel"]},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["host.load"]},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["host.time"]},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["service.restart"]},"parameters":{"type":"object","properties":{"unit":{"type":"string","minLength":1,"maxLength":128}},"required":["unit"],"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["service.status"]},"parameters":{"type":"object","properties":{"unit":{"type":"string","minLength":1,"maxLength":128}},"required":["unit"],"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false}]},"timeout_seconds":{"type":"integer","minimum":1,"maximum":300}},"required":["target_id","operation","timeout_seconds"],"additionalProperties":false}}}},"responses":{"200":{"description":"Existing idempotent request","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"target_id":{"type":"string","format":"uuid"},"operation_id":{"type":"string","enum":["host.disk_usage","host.kernel","host.load","host.time","service.restart","service.status"]},"status":{"type":"string","enum":["approved","cancelled","denied","expired","pending"]},"timeout_seconds":{"type":"integer"},"max_output_bytes":{"type":"integer"},"expires_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","target_id","operation_id","status","timeout_seconds","max_output_bytes","expires_at","created_at","updated_at"],"additionalProperties":false}}}},"201":{"description":"Request created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"target_id":{"type":"string","format":"uuid"},"operation_id":{"type":"string","enum":["host.disk_usage","host.kernel","host.load","host.time","service.restart","service.status"]},"status":{"type":"string","enum":["approved","cancelled","denied","expired","pending"]},"timeout_seconds":{"type":"integer"},"max_output_bytes":{"type":"integer"},"expires_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","target_id","operation_id","status","timeout_seconds","max_output_bytes","expires_at","created_at","updated_at"],"additionalProperties":false}}}},"409":{"description":"Idempotency key conflicts with another request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Request rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"write"},"get":{"operationId":"remoteAccess.requests.list","summary":"List sanitized project request state for remote access administrators","description":"List sanitized project request state for remote access administrators","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Remote access requests","content":{"application/json":{"schema":{"type":"object","properties":{"requests":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"target_id":{"type":"string","format":"uuid"},"operation_id":{"type":"string","enum":["host.disk_usage","host.kernel","host.load","host.time","service.restart","service.status"]},"status":{"type":"string","enum":["approved","cancelled","denied","expired","pending"]},"timeout_seconds":{"type":"integer"},"max_output_bytes":{"type":"integer"},"expires_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","target_id","operation_id","status","timeout_seconds","max_output_bytes","expires_at","created_at","updated_at"],"additionalProperties":false}}},"required":["requests"],"additionalProperties":false}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/remote-access/requests/{request_id}":{"get":{"operationId":"remoteAccess.requests.get","summary":"Get owner-bound request state and bounded redacted command output with remote_access:request","description":"Get owner-bound request state and bounded redacted command output with remote_access:request","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"request_id","in":"path","required":true,"description":"Path parameter request_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Remote access request","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"target_id":{"type":"string","format":"uuid"},"operation_id":{"type":"string","enum":["host.disk_usage","host.kernel","host.load","host.time","service.restart","service.status"]},"status":{"type":"string","enum":["approved","cancelled","denied","expired","pending"]},"timeout_seconds":{"type":"integer"},"max_output_bytes":{"type":"integer"},"expires_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"execution":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"request_id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["failed","running","succeeded","timed_out"]},"error_code":{"type":["string","null"]},"exit_code":{"type":["integer","null"]},"output_bytes":{"type":"integer"},"output_truncated":{"type":"boolean"},"started_at":{"type":"string","format":"date-time"},"finished_at":{"type":["string","null"],"format":"date-time"},"redacted_output":{"anyOf":[{"type":"object","properties":{"content":{"type":"string","maxLength":65536},"trust":{"type":"string","enum":["untrusted_remote_output"]},"truncated":{"type":"boolean"}},"required":["content","trust","truncated"],"additionalProperties":false},{"type":"null"}]}},"required":["id","request_id","status","error_code","exit_code","output_bytes","output_truncated","started_at","finished_at","redacted_output"],"additionalProperties":false},{"type":"null"}]}},"required":["id","target_id","operation_id","status","timeout_seconds","max_output_bytes","expires_at","created_at","updated_at","execution"],"additionalProperties":false}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/remote-access/requests/{request_id}/cancel":{"post":{"operationId":"remoteAccess.requests.cancel","summary":"Cancel pending or approved work before execution starts; running work is not interrupted","description":"Cancel pending or approved work before execution starts; running work is not interrupted","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"request_id","in":"path","required":true,"description":"Path parameter request_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Cancelled request","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"target_id":{"type":"string","format":"uuid"},"operation_id":{"type":"string","enum":["host.disk_usage","host.kernel","host.load","host.time","service.restart","service.status"]},"status":{"type":"string","enum":["approved","cancelled","denied","expired","pending"]},"timeout_seconds":{"type":"integer"},"max_output_bytes":{"type":"integer"},"expires_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","target_id","operation_id","status","timeout_seconds","max_output_bytes","expires_at","created_at","updated_at"],"additionalProperties":false}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"write"}},"/v1/projects/{project_id}/remote-access/setup-targets":{"get":{"operationId":"remoteAccess.targets.listSetup","summary":"List sanitized targets in all setup states for project administrators","description":"List sanitized targets in all setup states for project administrators","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Sanitized setup targets","content":{"application/json":{"schema":{"type":"object","properties":{"targets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string"},"environment":{"type":"string"},"enabled":{"type":"boolean"},"runner_version":{"type":["string","null"]},"verified_at":{"type":["string","null"],"format":"date-time"},"connector_id":{"type":"string","format":"uuid"}},"required":["id","label","environment","enabled","runner_version","verified_at","connector_id"],"additionalProperties":false}}},"required":["targets"],"additionalProperties":false}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/remote-access/connectors":{"post":{"operationId":"remoteAccess.connectors.create","summary":"Create a connector and return its one-time enrollment token","description":"Create a connector and return its one-time enrollment token","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":120}},"required":["label"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"dangerous"},"get":{"operationId":"remoteAccess.connectors.list","summary":"List sanitized connector status for project administration","description":"List sanitized connector status for project administration","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/remote-access/connectors/{connector_id}":{"get":{"operationId":"remoteAccess.connectors.get","summary":"Get sanitized connector status","description":"Get sanitized connector status","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"connector_id","in":"path","required":true,"description":"Path parameter connector_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/remote-access/connectors/{connector_id}/rotate":{"post":{"operationId":"remoteAccess.connectors.rotate","summary":"Invalidate connector authority and return a one-time key rotation token","description":"Invalidate connector authority and return a one-time key rotation token","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"connector_id","in":"path","required":true,"description":"Path parameter connector_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"dangerous"}},"/v1/projects/{project_id}/remote-access/connectors/{connector_id}/revoke":{"post":{"operationId":"remoteAccess.connectors.revoke","summary":"Emergency revoke a connector and all of its target authority","description":"Emergency revoke a connector and all of its target authority","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"connector_id","in":"path","required":true,"description":"Path parameter connector_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/remote-access/targets/{target_id}/verification-requests":{"post":{"operationId":"remoteAccess.targets.requestVerification","summary":"Request a new connector-signed target verification","description":"Request a new connector-signed target verification","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"target_id","in":"path","required":true,"description":"Path parameter target_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"dangerous"}},"/v1/projects/{project_id}/remote-access/targets/{target_id}/authority-bundle/reveal":{"post":{"operationId":"remoteAccess.targets.revealAuthorityBundle","summary":"Reveal the signed verified target authority bundle","description":"Reveal the signed verified target authority bundle","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"target_id","in":"path","required":true,"description":"Path parameter target_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"acknowledge_sensitive_data":{"type":"boolean","enum":[true]}},"required":["acknowledge_sensitive_data"],"additionalProperties":false}}}},"responses":{"200":{"description":"Signed verified target authority bundle","content":{"application/json":{"schema":{"type":"object","properties":{"authority_bundle":{"type":"object","properties":{"authority":{"type":"object","properties":{"activeAuthorityKeyId":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$"},"activeExecutionGrantKeyId":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$"},"authorityRootId":{"type":"string","format":"uuid"},"authorityRootKeyDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"authorityUpdateKeys":{"type":"object","additionalProperties":{"type":"object","properties":{"publicKey":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"state":{"type":"string","enum":["active","retired"]}},"required":["publicKey","state"],"additionalProperties":false}},"executionGrantKeys":{"type":"object","additionalProperties":{"type":"object","properties":{"expiresAt":{"type":"string","format":"date-time"},"notBefore":{"type":"string","format":"date-time"},"publicKey":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"state":{"type":"string","enum":["active","retired"]}},"required":["expiresAt","notBefore","publicKey","state"],"additionalProperties":false}},"authorityVersion":{"type":"integer","minimum":1},"connectorAuthorityEpoch":{"type":"integer","minimum":1},"connectorId":{"type":"string","format":"uuid"},"connectorKeyId":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$"},"destinationDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"issuedAt":{"type":"string","format":"date-time"},"policyDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"policyRevisionId":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"runtime":{"type":"object","properties":{"adapterId":{"type":"string","enum":["openssh_runner"]},"adapterProtocolVersion":{"type":"integer","enum":[1]},"catalogDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"catalogVersion":{"type":"string"},"runnerVersion":{"type":"string"}},"required":["adapterId","adapterProtocolVersion","catalogDigest","catalogVersion","runnerVersion"],"additionalProperties":false},"targetAuthorityEpoch":{"type":"integer","minimum":1},"targetId":{"type":"string","format":"uuid"},"version":{"type":"integer","enum":[1]}},"required":["activeAuthorityKeyId","activeExecutionGrantKeyId","authorityRootId","authorityRootKeyDigest","authorityUpdateKeys","executionGrantKeys","authorityVersion","connectorAuthorityEpoch","connectorId","connectorKeyId","destinationDigest","issuedAt","policyDigest","policyRevisionId","projectId","runtime","targetAuthorityEpoch","targetId","version"],"additionalProperties":false},"signature":{"type":"string","pattern":"^[A-Za-z0-9_-]{86}$"},"authorityKeyId":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$"}},"required":["authority","authorityKeyId","signature"],"additionalProperties":false}},"required":["authority_bundle"],"additionalProperties":false}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"dangerous"}},"/v1/projects/{project_id}/remote-access/targets/{target_id}/verification-bootstrap/reveal":{"post":{"operationId":"remoteAccess.targets.revealVerificationBootstrap","summary":"Reveal a signed pre-trust target bootstrap for operator installation","description":"Reveal a signed pre-trust target bootstrap for operator installation","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"target_id","in":"path","required":true,"description":"Path parameter target_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"acknowledge_sensitive_data":{"type":"boolean","enum":[true]}},"required":["acknowledge_sensitive_data"],"additionalProperties":false}}}},"responses":{"200":{"description":"Signed pre-trust bootstrap without the independently delivered fingerprint","content":{"application/json":{"schema":{"type":"object","properties":{"verification_bootstrap":{"type":"object","properties":{"bootstrap":{"type":"object","properties":{"activeAuthorityKeyId":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$"},"activeExecutionGrantKeyId":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$"},"authorityRootId":{"type":"string","format":"uuid"},"authorityRootKeyDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"authorityUpdateKeys":{"type":"object","additionalProperties":{"type":"object","properties":{"publicKey":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"state":{"type":"string","enum":["active","retired"]}},"required":["publicKey","state"],"additionalProperties":false}},"executionGrantKeys":{"type":"object","additionalProperties":{"type":"object","properties":{"expiresAt":{"type":"string","format":"date-time"},"notBefore":{"type":"string","format":"date-time"},"publicKey":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"state":{"type":"string","enum":["active","retired"]}},"required":["expiresAt","notBefore","publicKey","state"],"additionalProperties":false}},"authProfileId":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$"},"connectorAuthorityEpoch":{"type":"integer","minimum":1},"connectorId":{"type":"string","format":"uuid"},"connectorKeyId":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$"},"expectedRuntime":{"type":"object","properties":{"adapterId":{"type":"string","enum":["openssh_runner"]},"adapterProtocolVersion":{"type":"integer","enum":[1]},"catalogDigest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"catalogVersion":{"type":"string"},"runnerVersion":{"type":"string"}},"required":["adapterId","adapterProtocolVersion","catalogDigest","catalogVersion","runnerVersion"],"additionalProperties":false},"expiresAt":{"type":"string","format":"date-time"},"issuedAt":{"type":"string","format":"date-time"},"nonce":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"projectId":{"type":"string","format":"uuid"},"targetId":{"type":"string","format":"uuid"},"version":{"type":"integer","enum":[1]}},"required":["activeAuthorityKeyId","activeExecutionGrantKeyId","authorityRootId","authorityRootKeyDigest","authorityUpdateKeys","executionGrantKeys","authProfileId","connectorAuthorityEpoch","connectorId","connectorKeyId","expectedRuntime","expiresAt","issuedAt","nonce","projectId","targetId","version"],"additionalProperties":false},"signature":{"type":"string","pattern":"^[A-Za-z0-9_-]{86}$"},"authorityKeyId":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$"}},"required":["authorityKeyId","bootstrap","signature"],"additionalProperties":false}},"required":["verification_bootstrap"],"additionalProperties":false}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"dangerous"}},"/v1/projects/{project_id}/remote-access/targets/{target_id}/disable":{"post":{"operationId":"remoteAccess.targets.disable","summary":"Disable a remote access target and revoke its authority","description":"Disable a remote access target and revoke its authority","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"target_id","in":"path","required":true,"description":"Path parameter target_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/remote-access/targets/{target_id}/policy":{"get":{"operationId":"remoteAccess.policies.get","summary":"Get the current target policy","description":"Get the current target policy","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"target_id","in":"path","required":true,"description":"Path parameter target_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"put":{"operationId":"remoteAccess.policies.update","summary":"Create a new immutable target policy revision","description":"Create a new immutable target policy revision","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"target_id","in":"path","required":true,"description":"Path parameter target_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"allowed_operations":{"type":"array","items":{"type":"string","enum":["host.disk_usage","host.kernel","host.load","host.time","service.restart","service.status"]}},"max_output_bytes":{"type":"integer","minimum":1,"maximum":10485760},"max_timeout_seconds":{"type":"integer","minimum":1,"maximum":300}},"required":["allowed_operations","max_output_bytes","max_timeout_seconds"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"dangerous"}},"/v1/projects/{project_id}/remote-access/policies/validate":{"post":{"operationId":"remoteAccess.policies.validate","summary":"Validate and canonicalize a policy without changing it","description":"Validate and canonicalize a policy without changing it","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"allowed_operations":{"type":"array","items":{"type":"string","enum":["host.disk_usage","host.kernel","host.load","host.time","service.restart","service.status"]}},"max_output_bytes":{"type":"integer","minimum":1,"maximum":10485760},"max_timeout_seconds":{"type":"integer","minimum":1,"maximum":300}},"required":["allowed_operations","max_output_bytes","max_timeout_seconds"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/remote-access/approvals":{"get":{"operationId":"remoteAccess.approvals.list","summary":"List pending approval requests","description":"List pending approval requests","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Pending approvals","content":{"application/json":{"schema":{"type":"object","properties":{"approvals":{"type":"array","items":{"type":"object","properties":{"blast_radius":{"type":"string","enum":["single_host","single_service_process"]},"request":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"target_id":{"type":"string","format":"uuid"},"operation_id":{"type":"string","enum":["host.disk_usage","host.kernel","host.load","host.time","service.restart","service.status"]},"status":{"type":"string","enum":["approved","cancelled","denied","expired","pending"]},"timeout_seconds":{"type":"integer"},"max_output_bytes":{"type":"integer"},"expires_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","target_id","operation_id","status","timeout_seconds","max_output_bytes","expires_at","created_at","updated_at"],"additionalProperties":false},"mode":{"type":"string","enum":["observe","remediate"]},"decision_code":{"type":"string"},"safe_operation_display":{"type":"string"},"policy_revision":{"type":["integer","null"]},"requester_display":{"type":"string"},"safe_operation":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","enum":["host.disk_usage"]},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["host.kernel"]},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["host.load"]},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["host.time"]},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["service.restart"]},"parameters":{"type":"object","properties":{"unit":{"type":"string","minLength":1,"maxLength":128}},"required":["unit"],"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["service.status"]},"parameters":{"type":"object","properties":{"unit":{"type":"string","minLength":1,"maxLength":128}},"required":["unit"],"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false}]},"target_display":{"type":"object","properties":{"environment":{"type":"string"},"label":{"type":"string"}},"required":["environment","label"],"additionalProperties":false},"can_approve":{"type":"boolean"},"fresh_auth_required":{"type":"boolean"}},"required":["blast_radius","request","mode","decision_code","safe_operation_display","policy_revision","requester_display","safe_operation","target_display","can_approve","fresh_auth_required"],"additionalProperties":false}}},"required":["approvals"],"additionalProperties":false}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/remote-access/approvals/{request_id}":{"get":{"operationId":"remoteAccess.approvals.get","summary":"Get one sanitized approval request","description":"Get one sanitized approval request","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"request_id","in":"path","required":true,"description":"Path parameter request_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Pending approval","content":{"application/json":{"schema":{"type":"object","properties":{"blast_radius":{"type":"string","enum":["single_host","single_service_process"]},"request":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"target_id":{"type":"string","format":"uuid"},"operation_id":{"type":"string","enum":["host.disk_usage","host.kernel","host.load","host.time","service.restart","service.status"]},"status":{"type":"string","enum":["approved","cancelled","denied","expired","pending"]},"timeout_seconds":{"type":"integer"},"max_output_bytes":{"type":"integer"},"expires_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","target_id","operation_id","status","timeout_seconds","max_output_bytes","expires_at","created_at","updated_at"],"additionalProperties":false},"mode":{"type":"string","enum":["observe","remediate"]},"decision_code":{"type":"string"},"safe_operation_display":{"type":"string"},"policy_revision":{"type":["integer","null"]},"requester_display":{"type":"string"},"safe_operation":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","enum":["host.disk_usage"]},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["host.kernel"]},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["host.load"]},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["host.time"]},"parameters":{"type":"object","properties":{},"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["service.restart"]},"parameters":{"type":"object","properties":{"unit":{"type":"string","minLength":1,"maxLength":128}},"required":["unit"],"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","enum":["service.status"]},"parameters":{"type":"object","properties":{"unit":{"type":"string","minLength":1,"maxLength":128}},"required":["unit"],"additionalProperties":false}},"required":["id","parameters"],"additionalProperties":false}]},"target_display":{"type":"object","properties":{"environment":{"type":"string"},"label":{"type":"string"}},"required":["environment","label"],"additionalProperties":false},"can_approve":{"type":"boolean"},"fresh_auth_required":{"type":"boolean"}},"required":["blast_radius","request","mode","decision_code","safe_operation_display","policy_revision","requester_display","safe_operation","target_display","can_approve","fresh_auth_required"],"additionalProperties":false}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/remote-access/executions/{execution_id}":{"get":{"operationId":"remoteAccess.executions.get","summary":"Get sanitized execution status and result metadata","description":"Get sanitized execution status and result metadata","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"execution_id","in":"path","required":true,"description":"Path parameter execution_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/remote-access/audit":{"get":{"operationId":"remoteAccess.audit.list","summary":"List immutable metadata-only remote access audit events","description":"List immutable metadata-only remote access audit events","tags":["remoteAccess"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Query parameter cursor","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Query parameter limit","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/resource-history/events":{"get":{"operationId":"resourceHistory.listEvents","summary":"List resource audit events. Agents should pass resource_id for page-scoped history.","description":"List resource audit events. Agents should pass resource_id for page-scoped history.","tags":["resourceHistory"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"resource_type","in":"query","required":true,"description":"Resource type whose audit events should be listed.","schema":{"enum":["automation","dashboard","monitor","status_page"],"type":"string"}},{"name":"resource_id","in":"query","required":false,"description":"Optional resource id filter. Pair with resource_type for page-scoped history.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Maximum rows to return. Defaults to 50, max 100.","schema":{"type":"integer"}}],"responses":{"200":{"description":"Audit events","content":{"application/json":{"schema":{"additionalProperties":true,"description":"List response with a data array.","type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/resource-history/revisions":{"get":{"operationId":"resourceHistory.listRevisions","summary":"List restorable resource revisions for dashboards, automations, monitors, and status pages.","description":"List restorable resource revisions for dashboards, automations, monitors, and status pages.","tags":["resourceHistory"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"resource_type","in":"query","required":true,"description":"Resource type whose revisions should be listed.","schema":{"enum":["automation","dashboard","monitor","status_page"],"type":"string"}},{"name":"resource_id","in":"query","required":true,"description":"Resource id whose revisions should be listed.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Maximum rows to return. Defaults to 50, max 100.","schema":{"type":"integer"}}],"responses":{"200":{"description":"Resource revisions","content":{"application/json":{"schema":{"additionalProperties":true,"description":"List response with a data array.","type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/resource-history/revisions/{revision_id}/rollback":{"post":{"operationId":"resourceHistory.rollbackRevision","summary":"Restore the selected historical revision and record the rollback as a new revision.","description":"Restore the selected historical revision and record the rollback as a new revision.","tags":["resourceHistory"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"revision_id","in":"path","required":true,"description":"Path parameter revision_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Rollback result","content":{"application/json":{"schema":{"additionalProperties":true,"description":"Rollback/reapply response with the new revision id and number.","type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"dangerous"}},"/v1/projects/{project_id}/resource-history/revisions/{revision_id}/reapply":{"post":{"operationId":"resourceHistory.reapplyRevision","summary":"Reapply the selected historical revision and record the action as a new revision.","description":"Reapply the selected historical revision and record the action as a new revision.","tags":["resourceHistory"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"revision_id","in":"path","required":true,"description":"Path parameter revision_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Reapply result","content":{"application/json":{"schema":{"additionalProperties":true,"description":"Rollback/reapply response with the new revision id and number.","type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"dangerous"}},"/v1/projects/{project_id}/schema":{"get":{"operationId":"schema.get","summary":"Return the public column map for the safe observability query model.","description":"Return the public column map for the safe observability query model.","tags":["schema"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/status-pages":{"get":{"operationId":"statusPages.list","summary":"List status pages with their components and component counts","description":"List status pages with their components and component counts","tags":["statusPages"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"post":{"operationId":"statusPages.create","summary":"Create a status page. Body: { name, slug, isPublic?, customDomain?, themeConfig? }","description":"Create a status page. Body: { name, slug, isPublic?, customDomain?, themeConfig? }","tags":["statusPages"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/status-pages/{status_page_id}":{"get":{"operationId":"statusPages.get","summary":"Get one status page with its components","description":"Get one status page with its components","tags":["statusPages"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"status_page_id","in":"path","required":true,"description":"Path parameter status_page_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"patch":{"operationId":"statusPages.update","summary":"Update a status page. Body: { name?, slug?, isPublic?, customDomain?, themeConfig? }","description":"Update a status page. Body: { name?, slug?, isPublic?, customDomain?, themeConfig? }","tags":["statusPages"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"status_page_id","in":"path","required":true,"description":"Path parameter status_page_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"},"delete":{"operationId":"statusPages.delete","summary":"Delete a status page (cascades to its components and subscribers)","description":"Delete a status page (cascades to its components and subscribers)","tags":["statusPages"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"status_page_id","in":"path","required":true,"description":"Path parameter status_page_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/status-pages/{status_page_id}/components":{"get":{"operationId":"statusPages.listComponents","summary":"List components on a status page","description":"List components on a status page","tags":["statusPages"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"status_page_id","in":"path","required":true,"description":"Path parameter status_page_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"post":{"operationId":"statusPages.createComponent","summary":"Create a status component. Body: { name, description?, type?, monitorId?, externalStatusUrl?, parentComponentId? }. Health rolls up from monitorId for monitor components; static components may carry an externalStatusUrl; group components can contain child components.","description":"Create a status component. Body: { name, description?, type?, monitorId?, externalStatusUrl?, parentComponentId? }. Health rolls up from monitorId for monitor components; static components may carry an externalStatusUrl; group components can contain child components.","tags":["statusPages"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"status_page_id","in":"path","required":true,"description":"Path parameter status_page_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"description":{"type":["string","null"]},"externalStatusUrl":{"description":"Optional HTTP(S) third-party status URL for static components.","format":"uri","type":["string","null"]},"monitorId":{"description":"Optional direct backing monitor id.","type":["string","null"]},"name":{"type":"string"},"parentComponentId":{"description":"Optional parent group component id. Use null to clear.","type":["string","null"]},"type":{"description":"Component backing mode. Group components cannot include monitorId or externalStatusUrl.","enum":["monitor","static","group"],"type":"string"}},"required":["name"],"type":"object"}}}},"responses":{"201":{"description":"Created status component","content":{"application/json":{"schema":{"additionalProperties":true,"description":"Status component row, including monitor/static backing metadata.","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/status-pages/{status_page_id}/components/{component_id}":{"patch":{"operationId":"statusPages.updateComponent","summary":"Update a status component. Body: { name?, description?, type?, monitorId?, externalStatusUrl?, parentComponentId? }. Pass type:'static' or monitorId:null to clear the direct monitor link; pass parentComponentId:null to move a component out of a group.","description":"Update a status component. Body: { name?, description?, type?, monitorId?, externalStatusUrl?, parentComponentId? }. Pass type:'static' or monitorId:null to clear the direct monitor link; pass parentComponentId:null to move a component out of a group.","tags":["statusPages"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"status_page_id","in":"path","required":true,"description":"Path parameter status_page_id","schema":{"type":"string"}},{"name":"component_id","in":"path","required":true,"description":"Path parameter component_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"description":{"type":["string","null"]},"externalStatusUrl":{"description":"Optional HTTP(S) third-party status URL for static components.","format":"uri","type":["string","null"]},"monitorId":{"description":"Optional direct backing monitor id.","type":["string","null"]},"name":{"type":"string"},"parentComponentId":{"description":"Optional parent group component id. Use null to clear.","type":["string","null"]},"type":{"description":"Component backing mode. Group components cannot include monitorId or externalStatusUrl.","enum":["monitor","static","group"],"type":"string"}},"required":[],"type":"object"}}}},"responses":{"200":{"description":"Updated status component"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"},"delete":{"operationId":"statusPages.deleteComponent","summary":"Delete a status component (does not delete linked monitors)","description":"Delete a status component (does not delete linked monitors)","tags":["statusPages"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"status_page_id","in":"path","required":true,"description":"Path parameter status_page_id","schema":{"type":"string"}},{"name":"component_id","in":"path","required":true,"description":"Path parameter component_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/status-pages/{status_page_id}/components/{component_id}/link-monitor":{"post":{"operationId":"statusPages.linkMonitor","summary":"Link a monitor to a status component so its health rolls up. Body: { monitorId } or { monitorName }. Updates the component's direct monitor link.","description":"Link a monitor to a status component so its health rolls up. Body: { monitorId } or { monitorName }. Updates the component's direct monitor link.","tags":["statusPages"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"status_page_id","in":"path","required":true,"description":"Path parameter status_page_id","schema":{"type":"string"}},{"name":"component_id","in":"path","required":true,"description":"Path parameter component_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"monitorId":{"type":"string"},"monitorName":{"type":"string"}},"type":"object"}}}},"responses":{"200":{"description":"Linked monitor","content":{"application/json":{"schema":{"additionalProperties":true,"description":"Monitor link result with linkedMonitorId reflecting the component's direct link.","type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"write"}},"/v1/projects/{project_id}/status-pages/{status_page_id}/components/{component_id}/unlink-monitor":{"post":{"operationId":"statusPages.unlinkMonitor","summary":"Unlink a monitor from a status component. Body: { monitorId } or { monitorName }. Clears the component's direct monitor link.","description":"Unlink a monitor from a status component. Body: { monitorId } or { monitorName }. Clears the component's direct monitor link.","tags":["statusPages"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"status_page_id","in":"path","required":true,"description":"Path parameter status_page_id","schema":{"type":"string"}},{"name":"component_id","in":"path","required":true,"description":"Path parameter component_id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"monitorId":{"type":"string"},"monitorName":{"type":"string"}},"type":"object"}}}},"responses":{"200":{"description":"Unlinked monitor","content":{"application/json":{"schema":{"additionalProperties":true,"description":"Monitor link result with linkedMonitorId reflecting the component's direct link.","type":"object"}}}},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/status-pages/{status_page_id}/subscribers":{"get":{"operationId":"subscribers.list","summary":"List status page subscribers with channel and scoped components","description":"List status page subscribers with channel and scoped components","tags":["subscribers"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"status_page_id","in":"path","required":true,"description":"Path parameter status_page_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/status-pages/{status_page_id}/subscribers/{subscriber_id}":{"get":{"operationId":"subscribers.get","summary":"Get one status page subscriber with channel and scoped components","description":"Get one status page subscriber with channel and scoped components","tags":["subscribers"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"status_page_id","in":"path","required":true,"description":"Path parameter status_page_id","schema":{"type":"string"}},{"name":"subscriber_id","in":"path","required":true,"description":"Path parameter subscriber_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"},"delete":{"operationId":"subscribers.delete","summary":"Delete a status page subscriber for operator-driven cleanup","description":"Delete a status page subscriber for operator-driven cleanup","tags":["subscribers"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"status_page_id","in":"path","required":true,"description":"Path parameter status_page_id","schema":{"type":"string"}},{"name":"subscriber_id","in":"path","required":true,"description":"Path parameter subscriber_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":true,"x-risk":"destructive"}},"/v1/projects/{project_id}/traces":{"get":{"operationId":"traces.list","summary":"List traces for a project with filtering and pagination","description":"List traces for a project with filtering and pagination","tags":["traces"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"from","in":"query","required":false,"description":"Start of the time range","schema":{"type":"string"}},{"name":"to","in":"query","required":false,"description":"End of the time range","schema":{"type":"string"}},{"name":"environment","in":"query","required":false,"description":"Deployment environment","schema":{"type":"string"}},{"name":"namespace","in":"query","required":false,"description":"Kubernetes namespace","schema":{"type":"string"}},{"name":"service_name","in":"query","required":false,"description":"Service name","schema":{"type":"string"}},{"name":"root_span","in":"query","required":false,"description":"Exact root span name","schema":{"type":"string"}},{"name":"http_method","in":"query","required":false,"description":"HTTP request method","schema":{"type":"string"}},{"name":"http_status_code","in":"query","required":false,"description":"Three-digit HTTP response status code","schema":{"type":"string"}},{"name":"min_duration","in":"query","required":false,"description":"Minimum trace duration in milliseconds","schema":{"type":"number"}},{"name":"max_duration","in":"query","required":false,"description":"Maximum trace duration in milliseconds","schema":{"type":"number"}},{"name":"status","in":"query","required":false,"description":"Trace status","schema":{"type":"string"}},{"name":"q","in":"query","required":false,"description":"Trace ID, root span, or service search","schema":{"type":"string"}},{"name":"operation","in":"query","required":false,"description":"Normalized operation name","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Maximum rows to return","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"Rows to skip","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/trace-operations":{"get":{"operationId":"traces.listOperations","summary":"List trace operations grouped by service and normalized root span name, with sparkline + p50/p95","description":"List trace operations grouped by service and normalized root span name, with sparkline + p50/p95","tags":["traces"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/traces/{trace_id}":{"get":{"operationId":"traces.get","summary":"Get a single trace with all spans","description":"Get a single trace with all spans","tags":["traces"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"trace_id","in":"path","required":true,"description":"Path parameter trace_id","schema":{"type":"string"}},{"name":"from","in":"query","required":false,"description":"Start time (ISO 8601)","schema":{"type":"string"}},{"name":"to","in":"query","required":false,"description":"End time (ISO 8601)","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/traces/{trace_id}/errors":{"get":{"operationId":"traces.listRelatedErrors","summary":"List error groups correlated to a trace","description":"List error groups correlated to a trace","tags":["traces"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"trace_id","in":"path","required":true,"description":"Path parameter trace_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/traces/{trace_id}/logs":{"get":{"operationId":"traces.listRelatedLogs","summary":"List logs correlated to a trace id","description":"List logs correlated to a trace id","tags":["traces"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"trace_id","in":"path","required":true,"description":"Path parameter trace_id","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Maximum rows to return","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/services":{"get":{"operationId":"traces.serviceMap","summary":"Get the aggregated service-to-service call graph for a project","description":"Get the aggregated service-to-service call graph for a project","tags":["traces"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/telemetry-quality":{"get":{"operationId":"telemetryQuality.get","summary":"Audit bounded, content-free service telemetry completeness, correlation, duplication, attribute types, and cardinality","description":"Audit bounded, content-free service telemetry completeness, correlation, duplication, attribute types, and cardinality","tags":["telemetryQuality"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"from","in":"query","required":false,"description":"Query parameter from","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":false,"description":"Query parameter to","schema":{"type":"string","format":"date-time"}},{"name":"service_name","in":"query","required":false,"description":"Query parameter service_name","schema":{"type":"string"}},{"name":"environment","in":"query","required":false,"description":"Query parameter environment","schema":{"type":"string"}},{"name":"release","in":"query","required":false,"description":"Query parameter release","schema":{"type":"string"}},{"name":"include_examples","in":"query","required":false,"description":"Query parameter include_examples","schema":{"type":"boolean"}},{"name":"attribute_sample_limit","in":"query","required":false,"description":"Maximum recent log and span rows used for attribute analysis","schema":{"maximum":50000,"minimum":100,"type":"integer"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/vitals":{"get":{"operationId":"vitals.summary","summary":"Get aggregate Web Vitals summary (p50/p75/p90/p95/p99, rating distribution)","description":"Get aggregate Web Vitals summary (p50/p75/p90/p95/p99, rating distribution)","tags":["vitals"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"environment","in":"query","required":false,"description":"Query parameter environment","schema":{"type":"string"}},{"name":"metric","in":"query","required":false,"description":"Query parameter metric","schema":{"type":"string"}},{"name":"period","in":"query","required":false,"description":"Query parameter period","schema":{"type":"string"}},{"name":"url","in":"query","required":false,"description":"Query parameter url","schema":{"type":"string"}},{"name":"browser","in":"query","required":false,"description":"Query parameter browser","schema":{"type":"string"}},{"name":"call_type","in":"query","required":false,"description":"Query parameter call_type","schema":{"type":"string"}},{"name":"city","in":"query","required":false,"description":"Query parameter city","schema":{"type":"string"}},{"name":"connection","in":"query","required":false,"description":"Query parameter connection","schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"Query parameter country","schema":{"type":"string"}},{"name":"device_type","in":"query","required":false,"description":"Query parameter device_type","schema":{"type":"string"}},{"name":"error_name","in":"query","required":false,"description":"Query parameter error_name","schema":{"type":"string"}},{"name":"finish_reason","in":"query","required":false,"description":"Query parameter finish_reason","schema":{"type":"string"}},{"name":"http_status","in":"query","required":false,"description":"Query parameter http_status","schema":{"type":"string"}},{"name":"language","in":"query","required":false,"description":"Query parameter language","schema":{"type":"string"}},{"name":"model","in":"query","required":false,"description":"Query parameter model","schema":{"type":"string"}},{"name":"os","in":"query","required":false,"description":"Query parameter os","schema":{"type":"string"}},{"name":"page_path","in":"query","required":false,"description":"Query parameter page_path","schema":{"type":"string"}},{"name":"provider","in":"query","required":false,"description":"Query parameter provider","schema":{"type":"string"}},{"name":"query_string","in":"query","required":false,"description":"Query parameter query_string","schema":{"type":"string"}},{"name":"referrer","in":"query","required":false,"description":"Query parameter referrer","schema":{"type":"string"}},{"name":"region","in":"query","required":false,"description":"Query parameter region","schema":{"type":"string"}},{"name":"route","in":"query","required":false,"description":"Query parameter route","schema":{"type":"string"}},{"name":"timezone","in":"query","required":false,"description":"Query parameter timezone","schema":{"type":"string"}},{"name":"trace_id","in":"query","required":false,"description":"Query parameter trace_id","schema":{"type":"string"}},{"name":"user_id","in":"query","required":false,"description":"Query parameter user_id","schema":{"type":"string"}},{"name":"utm_campaign","in":"query","required":false,"description":"Query parameter utm_campaign","schema":{"type":"string"}},{"name":"utm_medium","in":"query","required":false,"description":"Query parameter utm_medium","schema":{"type":"string"}},{"name":"utm_source","in":"query","required":false,"description":"Query parameter utm_source","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/vitals/timeline":{"get":{"operationId":"vitals.timeline","summary":"Get time-series Web Vitals data for charting","description":"Get time-series Web Vitals data for charting","tags":["vitals"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"environment","in":"query","required":false,"description":"Query parameter environment","schema":{"type":"string"}},{"name":"granularity","in":"query","required":false,"description":"Query parameter granularity","schema":{"enum":["1h","6h","1d"],"type":"string"}},{"name":"metric","in":"query","required":true,"description":"Query parameter metric","schema":{"type":"string"}},{"name":"percentile","in":"query","required":false,"description":"Query parameter percentile","schema":{"enum":["p50","p75","p90","p95","p99"],"type":"string"}},{"name":"period","in":"query","required":false,"description":"Query parameter period","schema":{"type":"string"}},{"name":"browser","in":"query","required":false,"description":"Query parameter browser","schema":{"type":"string"}},{"name":"call_type","in":"query","required":false,"description":"Query parameter call_type","schema":{"type":"string"}},{"name":"city","in":"query","required":false,"description":"Query parameter city","schema":{"type":"string"}},{"name":"connection","in":"query","required":false,"description":"Query parameter connection","schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"Query parameter country","schema":{"type":"string"}},{"name":"device_type","in":"query","required":false,"description":"Query parameter device_type","schema":{"type":"string"}},{"name":"error_name","in":"query","required":false,"description":"Query parameter error_name","schema":{"type":"string"}},{"name":"finish_reason","in":"query","required":false,"description":"Query parameter finish_reason","schema":{"type":"string"}},{"name":"http_status","in":"query","required":false,"description":"Query parameter http_status","schema":{"type":"string"}},{"name":"language","in":"query","required":false,"description":"Query parameter language","schema":{"type":"string"}},{"name":"model","in":"query","required":false,"description":"Query parameter model","schema":{"type":"string"}},{"name":"os","in":"query","required":false,"description":"Query parameter os","schema":{"type":"string"}},{"name":"page_path","in":"query","required":false,"description":"Query parameter page_path","schema":{"type":"string"}},{"name":"provider","in":"query","required":false,"description":"Query parameter provider","schema":{"type":"string"}},{"name":"query_string","in":"query","required":false,"description":"Query parameter query_string","schema":{"type":"string"}},{"name":"referrer","in":"query","required":false,"description":"Query parameter referrer","schema":{"type":"string"}},{"name":"region","in":"query","required":false,"description":"Query parameter region","schema":{"type":"string"}},{"name":"route","in":"query","required":false,"description":"Query parameter route","schema":{"type":"string"}},{"name":"timezone","in":"query","required":false,"description":"Query parameter timezone","schema":{"type":"string"}},{"name":"trace_id","in":"query","required":false,"description":"Query parameter trace_id","schema":{"type":"string"}},{"name":"user_id","in":"query","required":false,"description":"Query parameter user_id","schema":{"type":"string"}},{"name":"utm_campaign","in":"query","required":false,"description":"Query parameter utm_campaign","schema":{"type":"string"}},{"name":"utm_medium","in":"query","required":false,"description":"Query parameter utm_medium","schema":{"type":"string"}},{"name":"utm_source","in":"query","required":false,"description":"Query parameter utm_source","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/vitals/urls":{"get":{"operationId":"vitals.urls","summary":"Get per-URL Web Vitals breakdown (slowest pages)","description":"Get per-URL Web Vitals breakdown (slowest pages)","tags":["vitals"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"environment","in":"query","required":false,"description":"Query parameter environment","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Query parameter limit","schema":{"type":"integer"}},{"name":"metric","in":"query","required":true,"description":"Query parameter metric","schema":{"type":"string"}},{"name":"period","in":"query","required":false,"description":"Query parameter period","schema":{"type":"string"}},{"name":"rating","in":"query","required":false,"description":"Query parameter rating","schema":{"type":"string"}},{"name":"browser","in":"query","required":false,"description":"Query parameter browser","schema":{"type":"string"}},{"name":"call_type","in":"query","required":false,"description":"Query parameter call_type","schema":{"type":"string"}},{"name":"city","in":"query","required":false,"description":"Query parameter city","schema":{"type":"string"}},{"name":"connection","in":"query","required":false,"description":"Query parameter connection","schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"Query parameter country","schema":{"type":"string"}},{"name":"device_type","in":"query","required":false,"description":"Query parameter device_type","schema":{"type":"string"}},{"name":"error_name","in":"query","required":false,"description":"Query parameter error_name","schema":{"type":"string"}},{"name":"finish_reason","in":"query","required":false,"description":"Query parameter finish_reason","schema":{"type":"string"}},{"name":"http_status","in":"query","required":false,"description":"Query parameter http_status","schema":{"type":"string"}},{"name":"language","in":"query","required":false,"description":"Query parameter language","schema":{"type":"string"}},{"name":"model","in":"query","required":false,"description":"Query parameter model","schema":{"type":"string"}},{"name":"os","in":"query","required":false,"description":"Query parameter os","schema":{"type":"string"}},{"name":"page_path","in":"query","required":false,"description":"Query parameter page_path","schema":{"type":"string"}},{"name":"provider","in":"query","required":false,"description":"Query parameter provider","schema":{"type":"string"}},{"name":"query_string","in":"query","required":false,"description":"Query parameter query_string","schema":{"type":"string"}},{"name":"referrer","in":"query","required":false,"description":"Query parameter referrer","schema":{"type":"string"}},{"name":"region","in":"query","required":false,"description":"Query parameter region","schema":{"type":"string"}},{"name":"route","in":"query","required":false,"description":"Query parameter route","schema":{"type":"string"}},{"name":"timezone","in":"query","required":false,"description":"Query parameter timezone","schema":{"type":"string"}},{"name":"trace_id","in":"query","required":false,"description":"Query parameter trace_id","schema":{"type":"string"}},{"name":"user_id","in":"query","required":false,"description":"Query parameter user_id","schema":{"type":"string"}},{"name":"utm_campaign","in":"query","required":false,"description":"Query parameter utm_campaign","schema":{"type":"string"}},{"name":"utm_medium","in":"query","required":false,"description":"Query parameter utm_medium","schema":{"type":"string"}},{"name":"utm_source","in":"query","required":false,"description":"Query parameter utm_source","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}},"/v1/projects/{project_id}/vitals/breakdown":{"get":{"operationId":"vitals.breakdown","summary":"Get dimensional Web Vitals breakdowns for pages, geography, devices, and tags","description":"Get dimensional Web Vitals breakdowns for pages, geography, devices, and tags","tags":["vitals"],"parameters":[{"name":"project_id","in":"path","required":true,"description":"Path parameter project_id","schema":{"type":"string"}},{"name":"dimension","in":"query","required":false,"description":"Query parameter dimension","schema":{"enum":["page_path","query_string","referrer","country","region","city","timezone","language","device_type","browser","os","utm_source","utm_medium","utm_campaign","provider","model","call_type","finish_reason","error_name","http_status","user_id","trace_id","route","connection"],"type":"string"}},{"name":"environment","in":"query","required":false,"description":"Query parameter environment","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Query parameter limit","schema":{"type":"integer"}},{"name":"metric","in":"query","required":true,"description":"Query parameter metric","schema":{"type":"string"}},{"name":"percentile","in":"query","required":false,"description":"Query parameter percentile","schema":{"enum":["p50","p75","p90","p95","p99"],"type":"string"}},{"name":"period","in":"query","required":false,"description":"Query parameter period","schema":{"type":"string"}},{"name":"rating","in":"query","required":false,"description":"Query parameter rating","schema":{"type":"string"}},{"name":"browser","in":"query","required":false,"description":"Query parameter browser","schema":{"type":"string"}},{"name":"call_type","in":"query","required":false,"description":"Query parameter call_type","schema":{"type":"string"}},{"name":"city","in":"query","required":false,"description":"Query parameter city","schema":{"type":"string"}},{"name":"connection","in":"query","required":false,"description":"Query parameter connection","schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"Query parameter country","schema":{"type":"string"}},{"name":"device_type","in":"query","required":false,"description":"Query parameter device_type","schema":{"type":"string"}},{"name":"error_name","in":"query","required":false,"description":"Query parameter error_name","schema":{"type":"string"}},{"name":"finish_reason","in":"query","required":false,"description":"Query parameter finish_reason","schema":{"type":"string"}},{"name":"http_status","in":"query","required":false,"description":"Query parameter http_status","schema":{"type":"string"}},{"name":"language","in":"query","required":false,"description":"Query parameter language","schema":{"type":"string"}},{"name":"model","in":"query","required":false,"description":"Query parameter model","schema":{"type":"string"}},{"name":"os","in":"query","required":false,"description":"Query parameter os","schema":{"type":"string"}},{"name":"page_path","in":"query","required":false,"description":"Query parameter page_path","schema":{"type":"string"}},{"name":"provider","in":"query","required":false,"description":"Query parameter provider","schema":{"type":"string"}},{"name":"query_string","in":"query","required":false,"description":"Query parameter query_string","schema":{"type":"string"}},{"name":"referrer","in":"query","required":false,"description":"Query parameter referrer","schema":{"type":"string"}},{"name":"region","in":"query","required":false,"description":"Query parameter region","schema":{"type":"string"}},{"name":"route","in":"query","required":false,"description":"Query parameter route","schema":{"type":"string"}},{"name":"timezone","in":"query","required":false,"description":"Query parameter timezone","schema":{"type":"string"}},{"name":"trace_id","in":"query","required":false,"description":"Query parameter trace_id","schema":{"type":"string"}},{"name":"user_id","in":"query","required":false,"description":"Query parameter user_id","schema":{"type":"string"}},{"name":"utm_campaign","in":"query","required":false,"description":"Query parameter utm_campaign","schema":{"type":"string"}},{"name":"utm_medium","in":"query","required":false,"description":"Query parameter utm_medium","schema":{"type":"string"}},{"name":"utm_source","in":"query","required":false,"description":"Query parameter utm_source","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"default":{"description":"Authentication, authorization, validation, rate-limit, or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-project-scoped":true,"x-sensitive":false,"x-risk":"read"}}},"components":{"schemas":{"ApiError":{"description":"A canonical error envelope or a documented legacy error response.","oneOf":[{"type":"object","description":"Canonical machine-readable Squasher API error response.","properties":{"type":{"type":"string","description":"Stable error category.","enum":["invalid_request","authentication_error","permission_error","not_found","conflict","rate_limited","internal_error","upstream_error","validation_error"]},"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Safe human-readable context."},"param":{"type":"string","description":"Request field or resource related to the error."},"doc_url":{"type":"string","format":"uri","description":"Error documentation link."},"retry_after":{"type":"number","minimum":0,"description":"Advisory retry delay in seconds."}},"required":["type","code","message"],"additionalProperties":false},{"type":"object","description":"Legacy error response retained by specialized endpoints during migration.","properties":{"error":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"}},"required":["error"],"additionalProperties":true}]}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-squasher-key","description":"Project-scoped Squasher API key."},"BearerAuth":{"type":"http","scheme":"bearer","description":"Squasher API key passed through the Authorization header."},"OAuth2":{"type":"oauth2","description":"Interactive Squasher user authorization for MCP and CLI sessions.","flows":{"authorizationCode":{"authorizationUrl":"https://mcp.squasher.ai/authorize","tokenUrl":"https://mcp.squasher.ai/token","scopes":{"mcp":"Access Squasher through an approved user session and its workspace roles."}}}}}}}