# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. --- openapi: 3.0.3 info: title: "Airflow API (Stable)" description: Apache Airflow management API. version: '1.0.0' license: name: Apache 2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html contact: name: Apache Foundation url: http://www.airflow.apache.org email: dev@airflow.apache.org servers: - url: /api/v1 description: Airfow Stable API. paths: # Database entities /connections: get: summary: Get all connection entries operationId: getConnections tags: [Connection] parameters: - $ref: '#/components/parameters/PageLimit' - $ref: '#/components/parameters/PageOffset' responses: '200': description: List of connection entry. content: application/json: schema: allOf: - $ref: '#/components/schemas/ConnectionCollection' - $ref: '#/components/schemas/CollectionInfo' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' post: summary: Create connection entry operationId: createConnection tags: [Connection] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Connection' responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/Connection' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' /connections/{connection_id}: parameters: - $ref: '#/components/parameters/ConnectionID' get: summary: Get a connection entry operationId: getConnection tags: [Connection] responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/Connection' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' patch: summary: Update a connection entry operationId: patchConnection tags: [Connection] parameters: - $ref: '#/components/parameters/UpdateMask' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Connection' responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/Connection' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' delete: summary: Delete a connection entry operationId: deleteConnection tags: [Connection] responses: '204': description: No content. '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' /dags: get: summary: Get all DAGs operationId: getDags tags: [DAG] parameters: - $ref: '#/components/parameters/PageLimit' - $ref: '#/components/parameters/PageOffset' responses: '200': description: List of DAGs. content: application/json: schema: allOf: - $ref: '#/components/schemas/DAGCollection' - $ref: '#/components/schemas/CollectionInfo' '401': $ref: '#/components/responses/Unauthenticated' /dags/{dag_id}: parameters: - $ref: '#/components/parameters/DAGID' get: summary: Get basic information about a DAG description: Presents only information available at database (DAGModel). operationId: getDag tags: [DAG] responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/DAG' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' patch: summary: Update the specific DAG operationId: updateDag tags: [DAG] responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/DAG' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' /dags/{dag_id}/dagRuns: parameters: - $ref: '#/components/parameters/DAGID' get: summary: Get all DAG Runs description: > This endpoint support reading resources across multiple DAGs by specifying a "-" as a dag_id. operationId: getDagRuns tags: [DAGRun] parameters: - $ref: '#/components/parameters/PageLimit' - $ref: '#/components/parameters/PageOffset' responses: '200': description: List of DAG Runs. content: application/json: schema: allOf: - $ref: '#/components/schemas/DAGRunCollection' - $ref: '#/components/schemas/CollectionInfo' '401': $ref: '#/components/responses/Unauthenticated' /dags/{dag_id}/dagRuns/{dag_run_id}: parameters: - $ref: '#/components/parameters/DAGID' - $ref: '#/components/parameters/DAGRunID' get: summary: Get a DAG Run operationId: getDagRun tags: [DAGRun] responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/DAGRun' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' patch: summary: Update a DAG Run operationId: updateDagRun tags: [DAGRun] parameters: - $ref: '#/components/parameters/UpdateMask' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DAGRun' responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/DAGRun' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' delete: summary: Delete a DAG Run operationId: deleteDagRun tags: [DAGRun] responses: '204': description: No content. '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' /eventLogs: get: summary: Get all log entries from event log operationId: getEventLog tags: [EventLog] parameters: - $ref: '#/components/parameters/PageLimit' - $ref: '#/components/parameters/PageOffset' responses: '200': description: List of log entries. content: application/json: schema: allOf: - $ref: '#/components/schemas/EventLogCollection' - $ref: '#/components/schemas/CollectionInfo' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' post: summary: Create event log operationId: createEventLog tags: [EventLog] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EventLog' responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/EventLog' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' /eventLogs/{event_log_id}: parameters: - $ref: '#/components/parameters/EventLogID' get: summary: Get a log entry operationId: getEventLogEntry tags: [EventLog] responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/EventLog' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' patch: summary: Update a log entry operationId: updateEventLogEntry tags: [EventLog] parameters: - $ref: '#/components/parameters/UpdateMask' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EventLog' responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/EventLog' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' delete: summary: Delete a log entry operationId: deleteEventLogEntry tags: [EventLog] responses: '204': description: No content. '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' /importErrors: get: summary: Get all import errors operationId: getImportErrors tags: [ImportError] parameters: - $ref: '#/components/parameters/PageLimit' - $ref: '#/components/parameters/PageOffset' responses: '200': description: List of import errors. content: application/json: schema: allOf: - $ref: '#/components/schemas/ImportErrorCollection' - $ref: '#/components/schemas/CollectionInfo' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' /importErrors/{import_error_id}: parameters: - $ref: '#/components/parameters/ImportErrorID' get: summary: Get an import errors operationId: getImportError tags: [ImportError] responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/ImportError' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' delete: summary: Delete an import error operationId: deleteImportError tags: [ImportError] responses: '204': description: No content. '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' /pools: get: summary: Get all pools operationId: getPools tags: [Pool] parameters: - $ref: '#/components/parameters/PageLimit' - $ref: '#/components/parameters/PageOffset' responses: '200': description: List of pools. content: application/json: schema: allOf: - $ref: '#/components/schemas/PoolCollection' - $ref: '#/components/schemas/CollectionInfo' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' post: summary: Create aa pool operationId: createPool tags: [Pool] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Pool' responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/Pool' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' /pools/{pool_id}: parameters: - $ref: '#/components/parameters/PoolID' get: summary: Get a pool operationId: getPool tags: [Pool] responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/Pool' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' patch: summary: Update a pool operationId: upadtePool tags: [Pool] parameters: - $ref: '#/components/parameters/UpdateMask' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Pool' responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/Connection' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' delete: summary: Delete a pool operationId: deletePool tags: [Pool] responses: '204': description: No content. '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' /dags/{dag_id}/taskInstances: parameters: - $ref: '#/components/parameters/DAGID' get: summary: Get list of task instance of DAG. description: > This endpoint support reading resources across multiple DAGs by specifying a "-" as a dag_id. operationId: getTaskInstances tags: [Pool] parameters: - $ref: '#/components/parameters/PageLimit' - $ref: '#/components/parameters/PageOffset' responses: '200': description: List of task instances. content: application/json: schema: allOf: - $ref: '#/components/schemas/TaskInstanceCollection' - $ref: '#/components/schemas/CollectionInfo' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' /dags/{dag_id}/taskInstances/{task_id}/{execution_date}: parameters: - $ref: '#/components/parameters/DAGID' - $ref: '#/components/parameters/TaskID' - $ref: '#/components/parameters/ExecutionDate' get: summary: Get a task instance operationId: getTaskInstance tags: [TaskInstance] responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/TaskInstance' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' patch: summary: Update a task instance operationId: updateTaskInstance tags: [TaskInstance] parameters: - $ref: '#/components/parameters/UpdateMask' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TaskInstance' responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/TaskInstance' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' delete: summary: Delete DAG Run operationId: deleteTaskInstance tags: [TaskInstance] responses: '204': description: No content. '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' /variables: get: summary: Get all variables operationId: getVariables tags: [Variable] parameters: - $ref: '#/components/parameters/PageLimit' - $ref: '#/components/parameters/PageOffset' responses: '200': description: List of variables. content: application/json: schema: allOf: - $ref: '#/components/schemas/VariableCollection' - $ref: '#/components/schemas/CollectionInfo' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' post: summary: Create a variables operationId: createVariable tags: [Variable] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Variable' responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/Variable' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' /variables/{variable_id}: parameters: - $ref: '#/components/parameters/VariableID' get: summary: Get a variables by id operationId: getVariable description: The collection does not contain data. To get data, you must get a single entity. tags: [Variable] responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/Variable' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' patch: summary: Update a variable by id operationId: updateVariable tags: [Variable] parameters: - $ref: '#/components/parameters/UpdateMask' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Variable' responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/Variable' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' delete: summary: Delete variable operationId: deleteVariable tags: [Variable] responses: '204': description: No content. '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' /variables/lookup: parameters: - $ref: '#/components/parameters/VariableKey' get: summary: Get variable using its key. description: The response contains all fields, including data. operationId: lookupVariable tags: [Variable] responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/Variable' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' /dags/{dag_id}/taskInstances/{task_id}/{execution_date}/xcomValues: parameters: - $ref: '#/components/parameters/DAGID' - $ref: '#/components/parameters/TaskID' - $ref: '#/components/parameters/ExecutionDate' get: summary: Get all XCom values description: This endpoint support reading resources across multiple Task Instances by specifying a "-" as a `dag_id`, `task_id` and `execution_date`. operationId: getXComValues tags: [XCom] parameters: - $ref: '#/components/parameters/PageLimit' - $ref: '#/components/parameters/PageOffset' responses: '200': description: List of XCom values. content: application/json: schema: allOf: - $ref: '#/components/schemas/XComCollection' - $ref: '#/components/schemas/CollectionInfo' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' post: summary: Create an XCom entry operationId: updateXComValues tags: [XCom] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/XCom' responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/XCom' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' /dags/{dag_id}/taskInstances/{task_id}/{execution_date}/xcomValues/{key}: parameters: - $ref: '#/components/parameters/DAGID' - $ref: '#/components/parameters/TaskID' - $ref: '#/components/parameters/ExecutionDate' - $ref: '#/components/parameters/XComKey' get: summary: Get an XCom entry operationId: getXComValue tags: [XCom] responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/XCom' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' patch: summary: Update an XCom entry operationId: updateXComValue tags: [XCom] parameters: - $ref: '#/components/parameters/UpdateMask' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/XCom' responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/XCom' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' delete: summary: Delete an XCom entry operationId: deleteXComValue tags: [XCom] responses: '204': description: No content. '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' # Non-database resources /dags/{dag_id}/taskInstances/{task_id}/{execution_date}/links: parameters: - $ref: '#/components/parameters/DAGID' - $ref: '#/components/parameters/TaskID' - $ref: '#/components/parameters/ExecutionDate' get: summary: Get extra links for task instance operationId: getExtraLinks tags: [TaskInstance] responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/ExtraLinkCollection' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' /dags/{dag_id}/taskInstances/{task_id}/{execution_date}/logs/{task_try_number}: parameters: - $ref: '#/components/parameters/DAGID' - $ref: '#/components/parameters/TaskID' - $ref: '#/components/parameters/ExecutionDate' - $ref: '#/components/parameters/TaskTryNumber' - $ref: '#/components/parameters/NoChunking' - $ref: '#/components/parameters/ContinuationToken' get: summary: Get logs for specific task instance operationId: getLogs tags: [TaskInstance] responses: '200': description: Content of logs. content: application/json: schema: type: object properties: continuation_token: type: string content: type: string text/plain: schema: type: string '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' /dags/{dag_id}/structure: parameters: - $ref: '#/components/parameters/DAGID' get: summary: Get simplified representation of DAG. operationId: getDagStructure tags: [DAG] responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/DagStructure' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' /dags/{dag_id}/tasks: parameters: - $ref: '#/components/parameters/DAGID' get: summary: Get tasks for DAG operationId: getTasks tags: [DAG] responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/TaskCollection' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' /dags/{dag_id}/tasks/{task_id}: parameters: - $ref: '#/components/parameters/DAGID' - $ref: '#/components/parameters/TaskID' get: summary: Get simplified representation of a task. operationId: getTask tags: [DAG] responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/Task' '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' /dagSources/{file_token}: parameters: - $ref: '#/components/parameters/FileToken' get: summary: Get source code using file token operationId: getDagSource tags: [DAG] responses: '200': description: Successful response. content: application/json: schema: type: object properties: content: type: string '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' '404': $ref: '#/components/responses/NotFound' /config: get: summary: Get current configuration operationId: getConfig tags: [Config] parameters: - $ref: '#/components/parameters/PageLimit' - $ref: '#/components/parameters/PageOffset' responses: '200': description: Return current configuration. content: application/json: schema: $ref: '#/components/schemas/Config' text/plain: schema: type: string '401': $ref: '#/components/responses/Unauthenticated' '403': $ref: '#/components/responses/PermissionDenied' components: # Reusable schemas (data models) schemas: # Database entities ConnectionCollectionItem: type: object properties: id: type: integer readOnly: true conn_id: type: string conn_type: type: string host: type: string login: type: string schema: type: string port: type: integer ConnectionCollection: type: object properties: connections: type: array items: $ref: '#/components/schemas/ConnectionCollectionItem' Connection: allOf: - $ref: '#/components/schemas/ConnectionCollectionItem' - type: object properties: password: type: string format: password extra: type: string DAG: type: object properties: dag_id: type: string readOnly: true root_dag_id: type: string readOnly: true is_paused: type: string is_subdag: type: string readOnly: true is_active: type: string readOnly: true fileloc: type: string readOnly: true owners: type: string readOnly: true description: type: string readOnly: true schedule_interval: oneOf: - $ref: '#/components/schemas/ScheduleInterval' readOnly: true tags: type: array items: $ref: '#/components/schemas/Tag' readOnly: true DAGCollection: type: object properties: dag_model: type: array items: $ref: '#/components/schemas/DAG' DAGRun: type: object properties: dag_id: type: string readOnly: true execution_date: type: string format: date-time readOnly: true start_date: type: string format: date-time end_date: type: string format: date-time state: $ref: '#/components/schemas/TaskState' run_id: type: string external_trigger: type: boolean default: true DAGRunCollection: type: object properties: dag_runs: type: array items: $ref: '#/components/schemas/DAGRun' EventLog: type: object properties: id: type: integer readOnly: true dttm: type: string readOnly: true dag_id: type: string readOnly: true task_id: type: string readOnly: true event: type: string readOnly: true execution_date: type: string readOnly: true owner: type: string readOnly: true extra: type: string readOnly: true EventLogCollection: type: object properties: event_logs: type: array items: $ref: '#/components/schemas/EventLogCollection' ImportError: type: object properties: id: type: integer readOnly: true timestamp: type: string format: datetime readOnly: true filename: type: string readOnly: true stack_trace: type: string readOnly: true ImportErrorCollection: type: object properties: import_errors: type: array items: $ref: '#/components/schemas/ImportError' Pool: type: object properties: id: type: integer readOnly: true name: type: string slots: type: integer occupied_slots: type: integer readOnly: true used_slots: type: integer readOnly: true queued_slots: type: integer readOnly: true open_slots: type: integer readOnly: true PoolCollection: type: object properties: pools: type: array items: $ref: '#/components/schemas/Pool' SLAMiss: type: object properties: task_id: type: string readOnly: true dag_id: type: string execution_date: type: string format: datetime email_sent: type: boolean timestamp: type: string format: datetime description: type: string notification_sent: type: boolean SLAMissCollection: type: object properties: sla_misses: type: array items: $ref: '#/components/schemas/SLAMiss' TaskFail: type: object properties: task_id: type: string dag_id: type: string execution_date: type: string format: datetime start_date: type: string format: datetime end_date: type: string format: datetime duration: type: integer TaskInstance: type: object properties: task_id: type: string dag_id: type: string execution_date: type: string format: datetime start_date: type: string format: datetime end_date: type: string format: datetime duration: type: number state: $ref: '#/components/schemas/TaskState' try_number: type: integer max_tries: type: integer hostname: type: string unixname: type: string job_id: type: integer pool: type: string pool_slots: type: integer queue: type: string priority_weight: type: integer operator: type: string queued_dttm: type: string pid: type: integer executor_config: type: string sla_miss: $ref: '#/components/schemas/SLAMiss' TaskInstanceCollection: type: object properties: task_instances: type: array items: $ref: '#/components/schemas/TaskInstance' VariableCollectionItem: # Divided into two schemas for sensitive data protection type: object properties: id: type: string key: type: string VariableCollection: type: object properties: task_instances: type: array items: $ref: '#/components/schemas/VariableCollectionItem' Variable: allOf: - $ref: '#/components/schemas/VariableCollectionItem' - type: object properties: value: type: string XComCollectionItem: # Divided into two schemas for sensitive data protection type: object properties: key: type: string timestamp: type: string format: datetime execution_date: type: string format: datetime task_id: type: string dag_id: type: string XComCollection: type: object properties: xcom: type: array items: $ref: '#/components/schemas/XComCollectionItem' XCom: allOf: - $ref: '#/components/schemas/XComCollectionItem' - type: object properties: value: type: string # Python objects # Based on # airflow/serialization/schema.json # but simplified to make the easier to use and to make backward compatibility easier. DagStructure: type: object properties: dag_id: type: string readOnly: true timezone: $ref: '#/components/schemas/Timezone' schedule_interval: $ref: '#/components/schemas/ScheduleInterval' catchup: type: boolean readOnly: true is_subdag: type: boolean readOnly: true fileloc: type: string readOnly: true orientation: type: string readOnly: true description: type: string readOnly: true concurrency: type: number readOnly: true start_date: type: string format: 'date-time' readOnly: true dag_run_timeout: $ref: '#/components/schemas/TimeDelta' doc_md: type: string readOnly: true default_view: type: string readOnly: true tags: type: array readOnly: true items: $ref: '#/components/schemas/Tag' DagStructureCollection: type: object properties: dag_structures: type: array items: $ref: '#/components/schemas/DagStructure' ExtraLink: type: object properties: class_ref: $ref: '#/components/schemas/ClassReference' name: type: string readOnly: true href: type: string readOnly: true ExtraLinkCollection: type: object properties: extra_links: type: array items: $ref: '#/components/schemas/ExtraLink' Task: type: object properties: class_ref: $ref: '#/components/schemas/ClassReference' task_id: type: string readOnly: true owner: type: string readOnly: true start_date: type: string format: 'date-time' readOnly: true end_date: type: string format: 'date-time' readOnly: true trigger_rule: $ref: '#/components/schemas/TriggerRule' extra_links: type: array readOnly: true items: type: object properties: class_ref: $ref: '#/components/schemas/ClassReference' depends_on_past: type: boolean readOnly: true wait_for_downstream: type: boolean readOnly: true retries: type: number readOnly: true queue: type: string readOnly: true pool: type: string readOnly: true pool_slots: type: number readOnly: true execution_timeout: $ref: '#/components/schemas/TimeDelta' retry_delay: $ref: '#/components/schemas/TimeDelta' retry_exponential_backoff: type: boolean readOnly: true priority_weight: type: number readOnly: true weight_rule: $ref: '#/components/schemas/WeightRule' ui_color: $ref: '#/components/schemas/Color' ui_fgcolor: $ref: '#/components/schemas/Color' template_fields: type: array readOnly: true items: type: string sub_dag_id: type: string readOnly: true downstream_task_ids: type: array readOnly: true items: type: string TaskCollection: type: object properties: task: type: array items: $ref: '#/components/schemas/Task' # Configuration ConfigOption: type: object properties: key: type: string readOnly: true value: type: string readOnly: true ConfigSection: type: object properties: name: type: string readOnly: true options: type: array items: $ref: '#/components/schemas/ConfigOption' Config: type: object properties: sections: type: array items: $ref: '#/components/schemas/ConfigSection' # Common data type ScheduleInterval: oneOf: - $ref: '#/components/schemas/TimeDelta' - $ref: '#/components/schemas/RelativeDelta' - $ref: '#/components/schemas/CronExpression' discriminator: propertyName: objectType TimeDelta: type: object properties: objectType: {type: string} days: {type: integer} seconds: {type: integer} microsecond: {type: integer} RelativeDelta: # TODO: Why we need these fields? type: object properties: objectType: {type: string} years: {type: integer} months: {type: integer} days: {type: integer} leapdays: {type: integer} hours: {type: integer} minutes: {type: integer} seconds: {type: integer} microseconds: {type: integer} year: {type: integer} month: {type: integer} day: {type: integer} hour: {type: integer} minute: {type: integer} second: {type: integer} microsecond: {type: integer} CronExpression: type: object properties: objectType: {type: string} value: {type: string} Timezone: type: string Tag: # Object to maintain extensibility type: object properties: name: type: string Color: type: string pattern: ^#[a-fA-F0-9]{3,6}$ ClassReference: type: object properties: module_path: type: string readOnly: true class_name: type: string readOnly: true # Generic Error: description: > [RFC7807](https://tools.ietf.org/html/rfc7807) compliant response type: object properties: type: type: string description: > A URI reference [RFC3986] that identifies the problem type. This specification encourages that, when dereferenced, it provide human-readable documentation for the problem type. title: type: string description: A short, human-readable summary of the problem type. status: type: number description: The HTTP status code generated by the API server for this occurrence of the problem. details: type: string description: A human-readable explanation specific to this occurrence of the problem. instance: type: string description: > A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced. required: - type - title - status CollectionInfo: type: object properties: total_entries: type: integer # Enums TaskState: type: string enum: - success - running - failed - upstream_failed - skipped - up_for_retry - up_for_reschedule - queued - none - scheduled DagState: type: string enum: - sucess - running - failed TriggerRule: type: string enum: - all_success - all_failed - all_done - one_success - one_failed - none_failed - none_skipped - dummy WeightRule: type: string enum: - downstream - upstream - absolute # Reusable path, query, header and cookie parameters parameters: # Pagination parameters PageOffset: in: query name: offset required: false schema: type: integer minimum: 0 description: The number of items to skip before starting to collect the result set. PageLimit: in: query name: limit required: false schema: type: integer minimum: 1 default: 100 description: The numbers of items to return. # Database entity fields ConnectionID: in: path name: connection_id schema: type: integer required: true description: The Connection ID. DAGID: in: path name: dag_id schema: type: integer required: true description: The DAG ID. DAGRunID: in: path name: dag_run_id schema: type: integer required: true description: The DAG Run ID. TaskID: in: path name: task_id schema: type: integer required: true description: The Task ID. TaskTryNumber: in: path name: task_try_number schema: type: integer required: true description: The Task Try Number. EventLogID: in: path name: event_log_id schema: type: integer required: true description: The Import Error ID. ImportErrorID: in: path name: import_error_id schema: type: integer required: true description: The Import Error ID. PoolID: in: path name: pool_id schema: type: integer required: true description: The Pool ID. VariableID: in: path name: variable_id schema: type: string required: true description: The Variable ID. VariableKey: in: query name: variable_key schema: type: string required: true description: The Variable Key. ExecutionDate: in: path name: execution_date schema: type: string format: 'date-time' required: true description: > The date-time notation as defined by [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6), E.G. `2017-07-21T17:32:28Z` # Logs NoChunking: in: query name: full_content schema: type: boolean required: false description: > A full reply will be returned. By default, only the first fragment will be returned. ContinuationToken: in: query name: token schema: type: boolean required: false description: > A token that allows you to continue fetching logs. If passed, it will specify the location from which the download should be continued. XComKey: in: path name: key schema: type: string required: true description: The XCom Key. # Other parameters FileToken: in: path name: file_token schema: type: string required: true description: > The key containing the encrypted path to the file. Encryption and encryption takes place only on the server side. This prevents the client from reading an non-DAG file. This also ensures API extensibility, because the format of encrypted data may change. UpdateMask: in: query name: update_mask schema: type: array items: type: string description: > The fields to update on the connection (connection, pool etc). If absent or empty, all modifiable fields are updated. A comma-separated list of fully qualified names of fields. style: form explode: false # Reusable request bodies requestBodies: {} # Reusable responses, such as 401 Unauthenticated or 400 Bad Request responses: # 400 'BadRequest': description: Client specified an invalid argument. content: application/json: schema: $ref: '#/components/schemas/Error' # 401 'Unauthenticated': description: Request not authenticated due to missing, invalid, authentication info. content: application/json: schema: $ref: '#/components/schemas/Error' # 403 'PermissionDenied': description: Client does not have sufficient permission. content: application/json: schema: $ref: '#/components/schemas/Error' # 404 'NotFound': description: A specified resource is not found. content: application/json: schema: $ref: '#/components/schemas/Error' # 409 'AlreadyExists': description: The resource that a client tried to create already exists. content: application/json: schema: $ref: '#/components/schemas/Error' # 500 'Unknown': description: Unknown server error. content: application/json: schema: $ref: '#/components/schemas/Error' # Reusable response headers headers: {} # Reusable examples examples: {} # Reusable links links: {} # Reusable callbacks callbacks: {} # The API will provide support for plugins to support various authorization mechanisms. # Detailed information will be available in the plugin specification. security: [] tags: - name: Config - name: Connection - name: DAG - name: DAGRun - name: EventLog - name: ImportError - name: Pool - name: TaskInstance - name: Variable - name: XCom externalDocs: url: http://airflow.apache.org/docs/stable/