components: schemas: Alert: properties: createdAt: description: The time when the alert was created in UTC, formatted as `YYYY-MM-DDTHH:MM:SSZ`. example: "2022-11-22T04:37:12Z" format: date-time type: string createdBy: $ref: '#/components/schemas/BasicSubjectProfile' deploymentId: description: The ID of the deployment the alert is associated with. type: string entityId: description: The ID of the entity the alert is associated with. type: string entityName: description: The name of the entity the alert is associated with. type: string entityType: description: The type of entity the alert is associated with. enum: - DEPLOYMENT type: string id: description: The alert's ID. type: string name: description: The alert's name. type: string notificationChannels: description: The notification channels to send alerts to. items: $ref: '#/components/schemas/AlertNotificationChannel' type: array organizationId: description: The ID of the organization the alert is associated with. type: string rules: $ref: '#/components/schemas/AlertRules' severity: description: The alert's severity. enum: - INFO - WARNING - CRITICAL type: string type: description: The alert's type. enum: - DAG_SUCCESS - DAG_FAILURE - DAG_DURATION - DAG_TIMELINESS - TASK_DURATION - TASK_FAILURE type: string updatedAt: description: The time when the alert was last updated in UTC, formatted as `YYYY-MM-DDTHH:MM:SSZ`. example: "2022-11-22T04:37:12Z" format: date-time type: string updatedBy: $ref: '#/components/schemas/BasicSubjectProfile' workspaceId: description: The ID of the workspace the alert is associated with. type: string required: - createdAt - createdBy - entityId - entityType - id - name - organizationId - rules - severity - type - updatedAt - updatedBy type: object AlertNotificationChannel: properties: createdAt: description: The time when the notification channel was created in UTC, formatted as `YYYY-MM-DDTHH:MM:SSZ`. example: "2022-11-22T04:37:12Z" format: date-time type: string definition: description: The definition of the notification. deploymentId: description: The ID of the deployment the notification channel is associated with. type: string entityId: description: The ID of the entity the notification channel is associated with. type: string entityType: description: The type of entity the notification channel is associated with. enum: - ORGANIZATION - WORKSPACE - DEPLOYMENT type: string id: description: The ID of the notification channel. type: string name: description: The name of the notification channel. type: string organizationId: description: The ID of the organization the notification channel is associated with. type: string type: description: The type of the notification channel. enum: - SLACK - EMAIL - PAGERDUTY - DAG_TRIGGER - OPSGENIE type: string updatedAt: description: The time when the notification channel was last updated in UTC, formatted as `YYYY-MM-DDTHH:MM:SSZ`. example: "2022-11-22T04:37:12Z" format: date-time type: string workspaceId: description: The ID of the workspace the notification channel is associated with. type: string required: - createdAt - definition - entityId - entityType - id - name - organizationId - type - updatedAt type: object AlertRules: properties: patternMatches: description: The alert's pattern matches to match against. items: $ref: '#/components/schemas/PatternMatch' type: array properties: description: The alert's properties used to define the alert. required: - properties type: object AlertsList: properties: alerts: description: The alerts that were created or updated. items: $ref: '#/components/schemas/Alert' type: array required: - alerts type: object AllowedIpAddressRange: properties: createdAt: description: The time the range was created in UTC. example: "2022-11-22T04:37:12Z" format: date-time type: string createdBy: $ref: '#/components/schemas/BasicSubjectProfile' id: description: The allowed IP address range's ID. type: string ipAddressRange: description: The CIDR range. type: string organizationId: description: The ID of the organization the range belongs to. type: string updatedAt: description: The time the range was last updated in UTC. example: "2022-11-22T04:37:12Z" format: date-time type: string updatedBy: $ref: '#/components/schemas/BasicSubjectProfile' required: - createdAt - id - ipAddressRange - organizationId - updatedAt type: object AllowedIpAddressRangesList: properties: allowedIpAddressRanges: description: The ranges that were created. items: $ref: '#/components/schemas/AllowedIpAddressRange' type: array required: - allowedIpAddressRanges type: object BasicSubjectProfile: properties: apiTokenName: description: The API token's name. Returned only when `SubjectType` is `SERVICEKEY`. example: my-token type: string avatarUrl: description: The URL for the user's profile image. Returned only when `SubjectType` is `USER`. example: https://avatar.url type: string fullName: description: The subject's full name. Returned only when `SubjectType` is `USER`. example: Jane Doe type: string id: description: The subject's ID. example: clm8qv74h000008mlf08scq7k type: string subjectType: description: The subject type. enum: - USER - SERVICEKEY example: USER type: string username: description: The subject's username. Returned only when `SubjectType` is `USER`. example: user1@company.com type: string required: - id type: object BulkCreateAllowedIpAddressRangesRequest: properties: allowedIpAddressRanges: description: The CIDR ranges to create. At most 1000 per request. items: type: string maxItems: 1000 minItems: 1 type: array required: - allowedIpAddressRanges type: object BulkDeleteAllowedIpAddressRangesRequest: properties: allowedIpAddressRangeIds: description: The IDs of the ranges to delete. At most 1000 per request. items: type: string maxItems: 1000 minItems: 1 type: array required: - allowedIpAddressRangeIds type: object CreateAlertRequest: discriminator: mapping: DAG_DURATION: '#/components/schemas/CreateDagDurationAlertRequest' DAG_FAILURE: '#/components/schemas/CreateDagFailureAlertRequest' DAG_SUCCESS: '#/components/schemas/CreateDagSuccessAlertRequest' DAG_TIMELINESS: '#/components/schemas/CreateDagTimelinessAlertRequest' TASK_DURATION: '#/components/schemas/CreateTaskDurationAlertRequest' TASK_FAILURE: '#/components/schemas/CreateTaskFailureAlertRequest' propertyName: type oneOf: - $ref: '#/components/schemas/CreateDagDurationAlertRequest' - $ref: '#/components/schemas/CreateDagFailureAlertRequest' - $ref: '#/components/schemas/CreateDagSuccessAlertRequest' - $ref: '#/components/schemas/CreateDagTimelinessAlertRequest' - $ref: '#/components/schemas/CreateTaskDurationAlertRequest' - $ref: '#/components/schemas/CreateTaskFailureAlertRequest' type: object CreateAlertsRequest: properties: alerts: description: The alerts to create. At most 30 per request. items: $ref: '#/components/schemas/CreateAlertRequest' maxItems: 30 minItems: 1 type: array required: - alerts type: object CreateDagDurationAlertProperties: properties: dagDurationSeconds: description: The duration of the DAG in seconds. Min 60 (1 minute), max 604800 (7 days). maximum: 604800 minimum: 60 type: integer deploymentId: description: The ID of the deployment to which the alert is scoped. type: string required: - dagDurationSeconds - deploymentId type: object CreateDagDurationAlertRequest: properties: entityId: description: The entity ID the alert is associated with. type: string entityType: description: The type of entity the alert is scoped to. enum: - DEPLOYMENT type: string name: description: The alert's name. maxLength: 500 minLength: 1 type: string notificationChannelIds: description: The notification channels to send alerts to. items: type: string maxItems: 20 minItems: 1 type: array uniqueItems: true rules: $ref: '#/components/schemas/CreateDagDurationAlertRules' severity: description: The alert's severity. enum: - INFO - WARNING - CRITICAL type: string type: description: The alert's type. enum: - DAG_SUCCESS - DAG_FAILURE - DAG_DURATION - DAG_TIMELINESS - TASK_DURATION - TASK_FAILURE type: string required: - entityId - entityType - name - notificationChannelIds - rules - severity - type type: object CreateDagDurationAlertRules: properties: patternMatches: description: The alert's pattern matches to match against. items: $ref: '#/components/schemas/PatternMatchRequest' maxItems: 50 minItems: 1 type: array properties: $ref: '#/components/schemas/CreateDagDurationAlertProperties' required: - patternMatches - properties type: object CreateDagFailureAlertProperties: properties: deploymentId: description: The ID of the deployment to which the alert is scoped. type: string required: - deploymentId type: object CreateDagFailureAlertRequest: properties: entityId: description: The entity ID the alert is associated with. type: string entityType: description: The type of entity the alert is scoped to. enum: - DEPLOYMENT type: string name: description: The alert's name. maxLength: 500 minLength: 1 type: string notificationChannelIds: description: The notification channels to send alerts to. items: type: string maxItems: 20 minItems: 1 type: array uniqueItems: true rules: $ref: '#/components/schemas/CreateDagFailureAlertRules' severity: description: The alert's severity. enum: - INFO - WARNING - CRITICAL type: string type: description: The alert's type. enum: - DAG_SUCCESS - DAG_FAILURE - DAG_DURATION - DAG_TIMELINESS - TASK_DURATION - TASK_FAILURE type: string required: - entityId - entityType - name - notificationChannelIds - rules - severity - type type: object CreateDagFailureAlertRules: properties: patternMatches: description: The alert's pattern matches to match against. items: $ref: '#/components/schemas/PatternMatchRequest' maxItems: 50 minItems: 1 type: array properties: $ref: '#/components/schemas/CreateDagFailureAlertProperties' required: - patternMatches - properties type: object CreateDagSuccessAlertProperties: properties: deploymentId: description: The ID of the deployment to which the alert is scoped. type: string required: - deploymentId type: object CreateDagSuccessAlertRequest: properties: entityId: description: The entity ID the alert is associated with. type: string entityType: description: The type of entity the alert is scoped to. enum: - DEPLOYMENT type: string name: description: The alert's name. maxLength: 500 minLength: 1 type: string notificationChannelIds: description: The notification channels to send alerts to. items: type: string maxItems: 20 minItems: 1 type: array uniqueItems: true rules: $ref: '#/components/schemas/CreateDagSuccessAlertRules' severity: description: The alert's severity. enum: - INFO - WARNING - CRITICAL type: string type: description: The alert's type. enum: - DAG_SUCCESS - DAG_FAILURE - DAG_DURATION - DAG_TIMELINESS - TASK_DURATION - TASK_FAILURE type: string required: - entityId - entityType - name - notificationChannelIds - rules - severity - type type: object CreateDagSuccessAlertRules: properties: patternMatches: description: The alert's pattern matches to match against. items: $ref: '#/components/schemas/PatternMatchRequest' maxItems: 50 minItems: 1 type: array properties: $ref: '#/components/schemas/CreateDagSuccessAlertProperties' required: - patternMatches - properties type: object CreateDagTimelinessAlertProperties: properties: dagDeadline: description: The deadline for the DAG in HH:MM 24-hour format, in UTC time. type: string daysOfWeek: description: The days of the week for the alert. items: type: string maxItems: 7 minItems: 1 type: array uniqueItems: true deploymentId: description: The ID of the deployment to which the alert is scoped. type: string lookBackPeriodSeconds: description: The look-back period in seconds. maximum: 86400 minimum: 60 type: integer required: - dagDeadline - daysOfWeek - deploymentId - lookBackPeriodSeconds type: object CreateDagTimelinessAlertRequest: properties: entityId: description: The entity ID the alert is associated with. type: string entityType: description: The type of entity the alert is scoped to. enum: - DEPLOYMENT type: string name: description: The alert's name. maxLength: 500 minLength: 1 type: string notificationChannelIds: description: The notification channels to send alerts to. items: type: string maxItems: 20 minItems: 1 type: array uniqueItems: true rules: $ref: '#/components/schemas/CreateDagTimelinessAlertRules' severity: description: The alert's severity. enum: - INFO - WARNING - CRITICAL type: string type: description: The alert's type. enum: - DAG_SUCCESS - DAG_FAILURE - DAG_DURATION - DAG_TIMELINESS - TASK_DURATION - TASK_FAILURE type: string required: - entityId - entityType - name - notificationChannelIds - rules - severity - type type: object CreateDagTimelinessAlertRules: properties: patternMatches: description: The alert's pattern matches to match against. items: $ref: '#/components/schemas/PatternMatchRequest' maxItems: 50 minItems: 1 type: array properties: $ref: '#/components/schemas/CreateDagTimelinessAlertProperties' required: - patternMatches - properties type: object CreateTaskDurationAlertProperties: properties: deploymentId: description: The ID of the deployment to which the alert is scoped. type: string taskDurationSeconds: description: The duration of the Task in seconds. maximum: 86400 minimum: 60 type: integer required: - deploymentId - taskDurationSeconds type: object CreateTaskDurationAlertRequest: properties: entityId: description: The entity ID the alert is associated with. type: string entityType: description: The type of entity the alert is scoped to. enum: - DEPLOYMENT type: string name: description: The alert's name. maxLength: 500 minLength: 1 type: string notificationChannelIds: description: The notification channels to send alerts to. items: type: string maxItems: 20 minItems: 1 type: array uniqueItems: true rules: $ref: '#/components/schemas/CreateTaskDurationAlertRules' severity: description: The alert's severity. enum: - INFO - WARNING - CRITICAL type: string type: description: The alert's type. enum: - DAG_SUCCESS - DAG_FAILURE - DAG_DURATION - DAG_TIMELINESS - TASK_DURATION - TASK_FAILURE type: string required: - entityId - entityType - name - notificationChannelIds - rules - severity - type type: object CreateTaskDurationAlertRules: properties: patternMatches: description: The alert's pattern matches to match against. items: $ref: '#/components/schemas/PatternMatchRequest' maxItems: 50 minItems: 1 type: array properties: $ref: '#/components/schemas/CreateTaskDurationAlertProperties' required: - patternMatches - properties type: object CreateTaskFailureAlertProperties: properties: deploymentId: description: The ID of the deployment to which the alert is scoped. type: string required: - deploymentId type: object CreateTaskFailureAlertRequest: properties: entityId: description: The entity ID the alert is associated with. type: string entityType: description: The type of entity the alert is scoped to. enum: - DEPLOYMENT type: string name: description: The alert's name. maxLength: 500 minLength: 1 type: string notificationChannelIds: description: The notification channels to send alerts to. items: type: string maxItems: 20 minItems: 1 type: array uniqueItems: true rules: $ref: '#/components/schemas/CreateTaskFailureAlertRules' severity: description: The alert's severity. enum: - INFO - WARNING - CRITICAL type: string type: description: The alert's type. enum: - DAG_SUCCESS - DAG_FAILURE - DAG_DURATION - DAG_TIMELINESS - TASK_DURATION - TASK_FAILURE type: string required: - entityId - entityType - name - notificationChannelIds - rules - severity - type type: object CreateTaskFailureAlertRules: properties: patternMatches: description: The alert's pattern matches to match against. items: $ref: '#/components/schemas/PatternMatchRequest' maxItems: 50 minItems: 1 type: array properties: $ref: '#/components/schemas/CreateTaskFailureAlertProperties' required: - patternMatches - properties type: object DagFailureDiagnosisRun: properties: createdAt: description: The RFC3339 timestamp when the run was created. example: "2026-05-14T12:34:56Z" type: string runId: description: The unique identifier of the diagnosis run. Use this to poll status and stream events. example: 7f3b6f5d-2c4e-4f2b-9c1d-1a2b3c4d5e6f type: string status: description: The current status of the diagnosis run. enum: - pending - running - completed - failed - timed_out example: pending type: string required: - createdAt - runId - status type: object DagFailureDiagnosisRunStatus: properties: createdAt: description: The RFC3339 timestamp when the run was created. example: "2026-05-14T12:34:56Z" type: string runId: description: The unique identifier of the diagnosis run. example: 7f3b6f5d-2c4e-4f2b-9c1d-1a2b3c4d5e6f type: string status: description: The current status of the diagnosis run. enum: - pending - running - completed - failed - timed_out example: running type: string updatedAt: description: The RFC3339 timestamp when the run was last updated. example: "2026-05-14T12:35:10Z" type: string required: - createdAt - runId - status - updatedAt type: object DeleteAlertsRequest: properties: alertIds: description: The IDs of the alerts to delete. At most 20 per request. items: type: string maxItems: 20 minItems: 1 type: array uniqueItems: true required: - alertIds type: object Error: properties: fieldErrors: description: |- FieldErrors carries one entry per failed request-validation constraint. Only present on 400 responses caused by request binding/validation. items: $ref: '#/components/schemas/FieldValidationError' type: array message: type: string requestId: type: string statusCode: maximum: 600 minimum: 400 type: integer required: - message - requestId - statusCode type: object Example: properties: createdAt: description: The time the response was generated, in UTC. format: date-time type: string id: description: The Example's ID; echoed back from the request path. example: clmaxoarx000008l2c5ayb9pt type: string proofOfConcept: description: The Example's name. Renamed to "name" for v1.0 clients via the epoch migration. example: Hello Labs type: string required: - createdAt - id - proofOfConcept type: object FieldValidationError: properties: code: type: string field: type: string message: type: string required: - code - field - message type: object PatternMatch: properties: entityType: description: The type of entity to match against. enum: - DAG_ID TASK_ID type: string operatorType: description: The type of operator to use for the pattern match. enum: - IS IS_NOT INCLUDES EXCLUDES type: string values: description: The values to match against. items: type: string type: array required: - entityType - operatorType - values type: object PatternMatchRequest: properties: entityType: description: The type of entity to match against. enum: - TASK_ID - DAG_ID type: string operatorType: description: The type of operator to use for the pattern match. enum: - IS - IS_NOT - INCLUDES - EXCLUDES type: string values: description: The values to match against. items: type: string maxItems: 100 minItems: 1 type: array required: - entityType - operatorType - values type: object RcaBlastRadius: properties: affected_dags: items: type: string type: array affected_runs: type: integer affected_tasks: type: integer downstream_consumers: items: type: string type: array scope: type: string type: object RcaCascadeLink: properties: description: type: string failure_type: type: string task_id: type: string required: - task_id type: object RcaChangeSignal: properties: correlation_to_failure_onset: type: string description: type: string signal_type: type: string timestamp: type: string type: object RcaCheck: properties: check: type: string detail: type: string passed: type: boolean required: - check type: object RcaChildDagFinding: properties: dag_id: type: string finding: type: string required: - dag_id type: object RcaCofailurePair: properties: cofailure_window_minutes: type: integer correlation_score: type: number dag_a: type: string dag_b: type: string shared_resource: type: string shared_resource_type: type: string required: - dag_a - dag_b type: object RcaDurationPercentiles: properties: p50: type: number p90: type: number p95: type: number p99: type: number type: object RcaEvidenceGap: properties: detail: type: string field_name: type: string why_missing: enum: - attempted_no_data - not_attempted - not_applicable type: string required: - field_name type: object RcaPreventionMeasure: properties: category: type: string priority: type: string recommendation: type: string type: object RcaRetryAttempt: properties: duration_sec: type: number error: type: string timestamp: type: string try_number: type: integer worker: type: string type: object RcaSessionDiagnosis: properties: affected_dags: description: Affected DAGs & child findings items: type: string type: array amplifier_description: type: string blast_radius: $ref: '#/components/schemas/RcaBlastRadius' cascade_chain: description: Cascade topology items: $ref: '#/components/schemas/RcaCascadeLink' type: array cascade_depth: type: integer change_point_date: type: string change_signals: items: $ref: '#/components/schemas/RcaChangeSignal' type: array child_dag_findings: items: $ref: '#/components/schemas/RcaChildDagFinding' type: array cofailure_pairs: description: Cofailure analysis items: $ref: '#/components/schemas/RcaCofailurePair' type: array confidence: type: number confidence_justification: type: string contributing_factors: items: type: string type: array coverage_quality: description: Coverage quality type: string dag_level_checks: description: Diagnostic checks items: $ref: '#/components/schemas/RcaCheck' type: array duration_percentiles: $ref: '#/components/schemas/RcaDurationPercentiles' effective_availability: description: Availability type: number evidence: description: Evidence items: type: string type: array evidence_gaps: items: $ref: '#/components/schemas/RcaEvidenceGap' type: array evidence_status: enum: - confirmed - hypothesis - insufficient_evidence type: string exception_class: type: string exception_message: type: string failure_onset_date: description: Temporal context type: string fleet_health_score: type: number from_dag_run_id: description: |- Provenance fields layered on by core / polaris-agent after the LLM emits: - FromDagRunId: original dag_run_id when this diagnosis was replayed from the polaris-agent dedup cache (absent on fresh diagnoses). - SessionId: durable id of the RCA session row this diagnosis was emitted from. type: string health_gap: type: string is_cascade_amplifier: type: boolean last_success_date: type: string log_classification: type: string log_signals: items: type: string type: array log_snippet: description: Log analysis type: string match_count: type: integer prevention_measures: items: $ref: '#/components/schemas/RcaPreventionMeasure' type: array priority: type: string remediation: type: string rendered_conn_ids: description: Connection context items: type: string type: array reported_success_rate: type: number root_cause: description: Root cause type: string root_cause_task: type: string root_cause_type: type: string seasonality_signal: type: string session_id: type: string severity: description: Severity & confidence type: string suggested_fix: description: Remediation & recommendations type: string summary: type: string symptoms: items: type: string type: array tasks: items: $ref: '#/components/schemas/RcaTaskDiagnosis' type: array timeline_events: description: Timeline & change signals items: $ref: '#/components/schemas/RcaTimelineEvent' type: array title: description: Core identification type: string transience: type: string trend_direction: type: string vendor_dashboard_url: type: string vendor_destination: type: string vendor_name: description: Vendor context type: string vendor_remediation: type: string required: - summary - title type: object RcaTaskDiagnosis: properties: checks: items: $ref: '#/components/schemas/RcaCheck' type: array first_attempt_error: type: string retry_attempts: items: $ref: '#/components/schemas/RcaRetryAttempt' type: array task_id: type: string task_ran: type: boolean required: - task_id type: object RcaTimelineEvent: properties: event: type: string event_type: type: string timestamp: type: string type: object StartDagFailureDiagnosisRequest: properties: dagId: description: The ID of the DAG that failed. example: my_dag type: string runId: description: The ID of the DAG run that failed. example: scheduled__2026-05-13T00:00:00+00:00 type: string skipCacheRead: description: If true, bypass any previously cached diagnosis for this DAG/run/task and force a fresh run. type: boolean taskId: description: The ID of the task that failed. Optional; if omitted, the agent diagnoses the run as a whole. example: my_task type: string tryNumbers: description: The specific task try numbers to diagnose. Optional. example: - 1 - 2 items: type: integer type: array required: - dagId - runId type: object UpdateAlertRequest: discriminator: mapping: DAG_DURATION: '#/components/schemas/UpdateDagDurationAlertRequest' DAG_FAILURE: '#/components/schemas/UpdateDagFailureAlertRequest' DAG_SUCCESS: '#/components/schemas/UpdateDagSuccessAlertRequest' DAG_TIMELINESS: '#/components/schemas/UpdateDagTimelinessAlertRequest' TASK_DURATION: '#/components/schemas/UpdateTaskDurationAlertRequest' TASK_FAILURE: '#/components/schemas/UpdateTaskFailureAlertRequest' propertyName: type oneOf: - $ref: '#/components/schemas/UpdateDagDurationAlertRequest' - $ref: '#/components/schemas/UpdateDagFailureAlertRequest' - $ref: '#/components/schemas/UpdateDagSuccessAlertRequest' - $ref: '#/components/schemas/UpdateDagTimelinessAlertRequest' - $ref: '#/components/schemas/UpdateTaskDurationAlertRequest' - $ref: '#/components/schemas/UpdateTaskFailureAlertRequest' type: object UpdateAlertsRequest: properties: alerts: description: The alerts to update. At most 30 per request. items: $ref: '#/components/schemas/UpdateAlertRequest' maxItems: 30 minItems: 1 type: array required: - alerts type: object UpdateDagDurationAlertProperties: properties: dagDurationSeconds: description: The duration of the DAG in seconds. Min 60 (1 minute), max 604800 (7 days). maximum: 604800 minimum: 60 type: integer type: object UpdateDagDurationAlertRequest: properties: id: description: The alert's ID. Required when updating alerts in bulk. type: string name: description: The alert's name. maxLength: 500 minLength: 1 type: string notificationChannelIds: description: The notification channels to send alerts to. items: type: string maxItems: 20 minItems: 1 type: array uniqueItems: true rules: $ref: '#/components/schemas/UpdateDagDurationAlertRules' severity: description: The alert's severity. enum: - INFO - WARNING - CRITICAL type: string type: description: The alert's type. enum: - DAG_SUCCESS - DAG_FAILURE - DAG_DURATION - DAG_TIMELINESS - TASK_DURATION - TASK_FAILURE type: string type: object UpdateDagDurationAlertRules: properties: patternMatches: description: The alert's pattern matches to match against. items: $ref: '#/components/schemas/PatternMatchRequest' maxItems: 50 minItems: 1 type: array properties: $ref: '#/components/schemas/UpdateDagDurationAlertProperties' type: object UpdateDagFailureAlertRequest: properties: id: description: The alert's ID. Required when updating alerts in bulk. type: string name: description: The alert's name. maxLength: 500 minLength: 1 type: string notificationChannelIds: description: The notification channels to send alerts to. items: type: string maxItems: 20 minItems: 1 type: array uniqueItems: true rules: $ref: '#/components/schemas/UpdateDagFailureAlertRules' severity: description: The alert's severity. enum: - INFO - WARNING - CRITICAL type: string type: description: The alert's type. enum: - DAG_SUCCESS - DAG_FAILURE - DAG_DURATION - DAG_TIMELINESS - TASK_DURATION - TASK_FAILURE type: string type: object UpdateDagFailureAlertRules: properties: patternMatches: description: The alert's pattern matches to match against. items: $ref: '#/components/schemas/PatternMatchRequest' maxItems: 50 minItems: 1 type: array type: object UpdateDagSuccessAlertRequest: properties: id: description: The alert's ID. Required when updating alerts in bulk. type: string name: description: The alert's name. maxLength: 500 minLength: 1 type: string notificationChannelIds: description: The notification channels to send alerts to. items: type: string maxItems: 20 minItems: 1 type: array uniqueItems: true rules: $ref: '#/components/schemas/UpdateDagSuccessAlertRules' severity: description: The alert's severity. enum: - INFO - WARNING - CRITICAL type: string type: description: The alert's type. enum: - DAG_SUCCESS - DAG_FAILURE - DAG_DURATION - DAG_TIMELINESS - TASK_DURATION - TASK_FAILURE type: string type: object UpdateDagSuccessAlertRules: properties: patternMatches: description: The alert's pattern matches to match against. items: $ref: '#/components/schemas/PatternMatchRequest' maxItems: 50 minItems: 1 type: array type: object UpdateDagTimelinessAlertProperties: properties: dagDeadline: description: The deadline for the DAG in HH:MM 24-hour format, in UTC time. type: string daysOfWeek: description: The days of the week for the alert. items: type: string maxItems: 7 minItems: 1 type: array uniqueItems: true lookBackPeriodSeconds: description: The look-back period in seconds. maximum: 86400 minimum: 60 type: integer type: object UpdateDagTimelinessAlertRequest: properties: id: description: The alert's ID. Required when updating alerts in bulk. type: string name: description: The alert's name. maxLength: 500 minLength: 1 type: string notificationChannelIds: description: The notification channels to send alerts to. items: type: string maxItems: 20 minItems: 1 type: array uniqueItems: true rules: $ref: '#/components/schemas/UpdateDagTimelinessAlertRules' severity: description: The alert's severity. enum: - INFO - WARNING - CRITICAL type: string type: description: The alert's type. enum: - DAG_SUCCESS - DAG_FAILURE - DAG_DURATION - DAG_TIMELINESS - TASK_DURATION - TASK_FAILURE type: string type: object UpdateDagTimelinessAlertRules: properties: patternMatches: description: The alert's pattern matches to match against. items: $ref: '#/components/schemas/PatternMatchRequest' maxItems: 50 minItems: 1 type: array properties: $ref: '#/components/schemas/UpdateDagTimelinessAlertProperties' type: object UpdateTaskDurationAlertProperties: properties: taskDurationSeconds: description: The duration of the Task in seconds. maximum: 86400 minimum: 60 type: integer type: object UpdateTaskDurationAlertRequest: properties: id: description: The alert's ID. Required when updating alerts in bulk. type: string name: description: The alert's name. maxLength: 500 minLength: 1 type: string notificationChannelIds: description: The notification channels to send alerts to. items: type: string maxItems: 20 minItems: 1 type: array uniqueItems: true rules: $ref: '#/components/schemas/UpdateTaskDurationAlertRules' severity: description: The alert's severity. enum: - INFO - WARNING - CRITICAL type: string type: description: The alert's type. enum: - DAG_SUCCESS - DAG_FAILURE - DAG_DURATION - DAG_TIMELINESS - TASK_DURATION - TASK_FAILURE type: string type: object UpdateTaskDurationAlertRules: properties: patternMatches: description: The alert's pattern matches to match against. items: $ref: '#/components/schemas/PatternMatchRequest' maxItems: 50 minItems: 1 type: array properties: $ref: '#/components/schemas/UpdateTaskDurationAlertProperties' type: object UpdateTaskFailureAlertRequest: properties: id: description: The alert's ID. Required when updating alerts in bulk. type: string name: description: The alert's name. maxLength: 500 minLength: 1 type: string notificationChannelIds: description: The notification channels to send alerts to. items: type: string maxItems: 20 minItems: 1 type: array uniqueItems: true rules: $ref: '#/components/schemas/UpdateTaskFailureAlertRules' severity: description: The alert's severity. enum: - INFO - WARNING - CRITICAL type: string type: description: The alert's type. enum: - DAG_SUCCESS - DAG_FAILURE - DAG_DURATION - DAG_TIMELINESS - TASK_DURATION - TASK_FAILURE type: string type: object UpdateTaskFailureAlertRules: properties: patternMatches: description: The alert's pattern matches to match against. items: $ref: '#/components/schemas/PatternMatchRequest' maxItems: 50 minItems: 1 type: array type: object securitySchemes: JWT: scheme: bearer type: http info: contact: {} description: Astro Labs API - Experimental endpoints for preview features title: Astro Labs API version: v1 openapi: 3.0.3 paths: /examples/{exampleId}: get: description: Returns a canned Example response. Exists only to exercise the labs epoch versioning surface (v1.0 to v1.1 field-rename migration); not backed by any real entity. operationId: LabsGetExample parameters: - description: The Example's ID. Any non-empty string is accepted; echoed back in the response. in: path name: exampleId required: true schema: type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/Example' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/Error' description: Bad Request "401": content: application/json: schema: $ref: '#/components/schemas/Error' description: Unauthorized security: - JWT: [] summary: Get an Example tags: - Example /organizations/{organizationId}/alerts: get: description: List alerts, including their notification channels. Supports filtering by alert and deployment IDs. operationId: LabsListAlerts parameters: - description: The ID of the Organization to which the alerts belong to. in: path name: organizationId required: true schema: type: string - description: A list of IDs for specific alerts to list. The API returns details for all alerts which have been specified in this list. At most 1000. in: query name: alertIds schema: items: type: string type: array - description: A list of deployment IDs the alerts belong to. The API returns details for all alerts belonging only to the specified Deployments. At most 1000. in: query name: deploymentIds schema: items: type: string type: array - description: The number of results to skip before returning values. in: query name: offset schema: default: 0 minimum: 0 type: integer - description: The maximum number of results to return. in: query name: limit schema: default: 20 maximum: 1000 minimum: 0 type: integer responses: "200": content: application/json: schema: $ref: '#/components/schemas/AlertsList' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/Error' description: Bad Request "401": content: application/json: schema: $ref: '#/components/schemas/Error' description: Unauthorized "403": content: application/json: schema: $ref: '#/components/schemas/Error' description: Forbidden "404": content: application/json: schema: $ref: '#/components/schemas/Error' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/Error' description: Internal Server Error security: - JWT: [] summary: List alerts tags: - Alerts x-permission: - action: organization.alerts.access /organizations/{organizationId}/allowed-ip-address-ranges: delete: description: Delete up to 1000 allowed IP address ranges for the organization in one request. The whole batch is deleted atomically. Unknown or duplicate IDs are accepted and ignored; matching rows for this organization are deleted. The IDs are supplied in the request body. operationId: LabsDeleteAllowedIpAddressRanges parameters: - description: The ID of the Organization the ranges belong to. in: path name: organizationId required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/BulkDeleteAllowedIpAddressRangesRequest' description: The request body containing the list of allowed IP address range IDs to delete. required: true x-originalParamName: body responses: "204": description: "" "400": content: application/json: schema: $ref: '#/components/schemas/Error' description: Bad Request "401": content: application/json: schema: $ref: '#/components/schemas/Error' description: Unauthorized "403": content: application/json: schema: $ref: '#/components/schemas/Error' description: Forbidden "500": content: application/json: schema: $ref: '#/components/schemas/Error' description: Internal Server Error security: - JWT: [] summary: Bulk delete allowed IP address ranges tags: - AllowedIpAddressRange x-permission: - action: organization.allowedIpAddressRanges.delete post: description: 'Create up to 1000 allowed IP address ranges for the organization in one request. The whole batch is created atomically — if any item fails validation or conflicts with an existing range, no rows are inserted. This endpoint is NOT idempotent: a retry after an unacknowledged 2xx response may return 409. Clients should list the ranges to verify state before retrying.' operationId: LabsCreateAllowedIpAddressRanges parameters: - description: The ID of the Organization the ranges will belong to. in: path name: organizationId required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/BulkCreateAllowedIpAddressRangesRequest' description: The request body containing the list of CIDR ranges to create. required: true x-originalParamName: body responses: "200": content: application/json: schema: $ref: '#/components/schemas/AllowedIpAddressRangesList' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/Error' description: Bad Request "401": content: application/json: schema: $ref: '#/components/schemas/Error' description: Unauthorized "403": content: application/json: schema: $ref: '#/components/schemas/Error' description: Forbidden "404": content: application/json: schema: $ref: '#/components/schemas/Error' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/Error' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/Error' description: Internal Server Error security: - JWT: [] summary: Bulk create allowed IP address ranges tags: - AllowedIpAddressRange x-permission: - action: organization.allowedIpAddressRanges.create /organizations/{organizationId}/create-alerts: post: description: Create up to 30 alerts in a single request. operationId: LabsCreateAlerts parameters: - description: The ID of the Organization to which the alerts will belong to. in: path name: organizationId required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateAlertsRequest' description: The request body for creating multiple alerts. required: true x-originalParamName: body responses: "200": content: application/json: schema: $ref: '#/components/schemas/AlertsList' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/Error' description: Bad Request "401": content: application/json: schema: $ref: '#/components/schemas/Error' description: Unauthorized "403": content: application/json: schema: $ref: '#/components/schemas/Error' description: Forbidden "404": content: application/json: schema: $ref: '#/components/schemas/Error' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/Error' description: Internal Server Error security: - JWT: [] summary: Bulk create alerts tags: - Alerts x-permission: - action: organization.alerts.access /organizations/{organizationId}/delete-alerts: post: description: Delete up to 20 alerts in a single request. operationId: LabsDeleteAlerts parameters: - description: The ID of the Organization the alerts belong to. in: path name: organizationId required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/DeleteAlertsRequest' description: The request body for deleting multiple alerts. required: true x-originalParamName: body responses: "204": description: "" "400": content: application/json: schema: $ref: '#/components/schemas/Error' description: Bad Request "401": content: application/json: schema: $ref: '#/components/schemas/Error' description: Unauthorized "403": content: application/json: schema: $ref: '#/components/schemas/Error' description: Forbidden "404": content: application/json: schema: $ref: '#/components/schemas/Error' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/Error' description: Internal Server Error security: - JWT: [] summary: Bulk delete alerts tags: - Alerts x-permission: - action: organization.alerts.access /organizations/{organizationId}/observability/deployments/{deploymentId}/dag-failure-diagnosis/runs: post: description: Starts an asynchronous AI-powered diagnosis run for a failed DAG run (or specific task within it) and returns a run ID. Use the run ID to poll status and stream events. operationId: LabsStartDagFailureDiagnosis parameters: - description: The ID of the Organization to which the Deployment belongs. in: path name: organizationId required: true schema: type: string - description: The Deployment's ID. in: path name: deploymentId required: true schema: type: string - description: Skip DB session dedup + Redis cache and force a fresh diagnosis run in: query name: force schema: default: false type: boolean requestBody: content: application/json: schema: $ref: '#/components/schemas/StartDagFailureDiagnosisRequest' description: The request body for starting a DAG-failure diagnosis run. required: true x-originalParamName: body responses: "200": content: application/json: schema: $ref: '#/components/schemas/DagFailureDiagnosisRun' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/Error' description: Bad Request "401": content: application/json: schema: $ref: '#/components/schemas/Error' description: Unauthorized "403": content: application/json: schema: $ref: '#/components/schemas/Error' description: Forbidden "429": content: application/json: schema: $ref: '#/components/schemas/Error' description: Too Many Requests "500": content: application/json: schema: $ref: '#/components/schemas/Error' description: Internal Server Error security: - JWT: [] summary: Start a DAG-failure diagnosis run tags: - Observability x-permission: - action: organization.deployments.get /organizations/{organizationId}/observability/deployments/{deploymentId}/dag-failure-diagnosis/runs/{diagnosisRunId}/events: get: description: Returns a Server-Sent Events stream of diagnosis events. Supports reconnection via the lastEventId query parameter. operationId: LabsGetDagFailureDiagnosisEvents parameters: - description: The ID of the Organization to which the Deployment belongs. in: path name: organizationId required: true schema: type: string - description: The Deployment's ID. in: path name: deploymentId required: true schema: type: string - description: The diagnosis run ID. in: path name: diagnosisRunId required: true schema: type: string - description: The last event ID received, used for reconnection. in: query name: lastEventId schema: type: string responses: "200": content: text/event-stream: schema: $ref: '#/components/schemas/RcaSessionDiagnosis' description: OK "401": content: text/event-stream: schema: $ref: '#/components/schemas/Error' description: Unauthorized "404": content: text/event-stream: schema: $ref: '#/components/schemas/Error' description: Not Found "500": content: text/event-stream: schema: $ref: '#/components/schemas/Error' description: Internal Server Error security: - JWT: [] summary: Stream events from a DAG-failure diagnosis run tags: - Observability x-permission: - action: organization.deployments.get /organizations/{organizationId}/observability/deployments/{deploymentId}/dag-failure-diagnosis/runs/{diagnosisRunId}/status: get: description: Returns the current status of a DAG-failure diagnosis run. operationId: LabsGetDagFailureDiagnosisStatus parameters: - description: The ID of the Organization to which the Deployment belongs. in: path name: organizationId required: true schema: type: string - description: The Deployment's ID. in: path name: deploymentId required: true schema: type: string - description: The diagnosis run ID. in: path name: diagnosisRunId required: true schema: type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/DagFailureDiagnosisRunStatus' description: OK "401": content: application/json: schema: $ref: '#/components/schemas/Error' description: Unauthorized "404": content: application/json: schema: $ref: '#/components/schemas/Error' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/Error' description: Internal Server Error security: - JWT: [] summary: Get the status of a DAG-failure diagnosis run tags: - Observability x-permission: - action: organization.deployments.get /organizations/{organizationId}/update-alerts: post: description: Update up to 30 alerts in a single request. operationId: LabsUpdateAlerts parameters: - description: The ID of the Organization to which the alerts belong to. in: path name: organizationId required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateAlertsRequest' description: The request body for updating multiple alerts. required: true x-originalParamName: body responses: "200": content: application/json: schema: $ref: '#/components/schemas/AlertsList' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/Error' description: Bad Request "401": content: application/json: schema: $ref: '#/components/schemas/Error' description: Unauthorized "403": content: application/json: schema: $ref: '#/components/schemas/Error' description: Forbidden "404": content: application/json: schema: $ref: '#/components/schemas/Error' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/Error' description: Internal Server Error security: - JWT: [] summary: Bulk update alerts tags: - Alerts x-permission: - action: organization.alerts.access security: - JWT: [] servers: - url: https://api.astronomer.io/labs/v1 tags: - description: Canned-data placeholder used to exercise the labs epoch versioning surface. Real labs endpoints register their own tags. name: Example