ad-m commented on a change in pull request #7549: [AIRFLOW-6929][DONT-MERGE] Add OpenAPI spec URL: https://github.com/apache/airflow/pull/7549#discussion_r389101039
########## File path: openapi.yaml ########## @@ -0,0 +1,2094 @@ +# 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 + +servers: + - url: /api/v1 + description: Airfow Stable API + +paths: + # Database entities + /connections/: + get: + summary: Get all conneciton entry + 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 conneciton entry + tags: [Connection] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Connection' + responses: + '200': + description: Successfull 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 connection entry + tags: [Connection] + responses: + '200': + description: Successfull 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 + tags: [Connection] + parameters: + - $ref: '#/components/parameters/UpdateMask' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Connection' + + responses: + '200': + description: Successfull 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 connection entry + 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 + 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 DAG. + description: It's contains only information from database (DAGModel). + tags: [DAG] + responses: + '200': + description: Successfull 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 the specific DAG + tags: [DAG] + responses: + '200': + description: Successfull 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 specify a "-" as a dag_id. + 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/DAGRunID' + + get: + summary: Get DAG Run + tags: [DAGRun] + responses: + '200': + description: Successfull 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 + tags: [DAGRun] + parameters: + - $ref: '#/components/parameters/UpdateMask' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DAGRun' + + responses: + '200': + description: Successfull 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 DAG Run. + 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 log entries from event log + 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 + tags: [EventLog] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EventLog' + responses: + '200': + description: Successfull 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 log entry + tags: [EventLog] + responses: + '200': + description: Successfull 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 + tags: [EventLog] + parameters: + - $ref: '#/components/parameters/UpdateMask' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EventLog' + + responses: + '200': + description: Successfull 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 + 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 import error + tags: [ImportError] + parameters: + - $ref: '#/components/parameters/PageLimit' + - $ref: '#/components/parameters/PageOffset' + responses: + '200': + description: List of import error + 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 import errors + tags: [ImportError] + responses: + '200': + description: Successfull 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 import error + 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 + 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 pool. + tags: [Pool] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Pool' + responses: + '200': + description: Successfull 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 pool. + tags: [Pool] + responses: + '200': + description: Successfull 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 + tags: [Pool] + parameters: + - $ref: '#/components/parameters/UpdateMask' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Pool' + + responses: + '200': + description: Successfull 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 pool. + 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/: + get: + summary: Get list of task instance. + description: This endpoint support reading resources across multiple DAGs by specify a "-" as a dag_id. + 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 task instance + tags: [TaskInstance] + responses: + '200': + description: Successfull 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 + tags: [TaskInstance] + parameters: + - $ref: '#/components/parameters/UpdateMask' + requestBody: + required: true + + content: + application/json: + schema: + $ref: '#/components/schemas/TaskInstance' + + responses: + '200': + description: Successfull 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 DAG Run + tags: [TaskInstance] + responses: + '204': + description: No content + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthenticated' + '403': + $ref: '#/components/responses/PermissionDenied' + + /taskReschedules/: + get: + summary: Get task reschedule + tags: [TaskReschedule] + parameters: + - $ref: '#/components/parameters/PageLimit' + - $ref: '#/components/parameters/PageOffset' + responses: + '200': + description: List of task reschedule + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/TaskRescheduleCollection' + - $ref: '#/components/schemas/CollectionInfo' + '401': + $ref: '#/components/responses/Unauthenticated' + '403': + $ref: '#/components/responses/PermissionDenied' + + /taskReschedules/{task_reschedule_id}: + parameters: + - $ref: '#/components/parameters/TaskRescheduleID' + + get: + summary: Get task reschedule + tags: [TaskReschedule] + responses: + '200': + description: Successfull response + content: + application/json: + schema: + $ref: '#/components/schemas/TaskReschedule' + '401': + $ref: '#/components/responses/Unauthenticated' + '403': + $ref: '#/components/responses/PermissionDenied' + '404': + $ref: '#/components/responses/NotFound' + + delete: + summary: Delete task reschedule + tags: [TaskReschedule] + 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 + 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 variables + tags: [Variable] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Connection' + responses: + '200': + description: Successfull response + content: + application/json: + schema: + $ref: '#/components/schemas/Connection' + '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 variables. + description: The collection does not contain data. To get data, you must get a single entity + tags: [Variable] + responses: + '200': + description: Successfull 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 + tags: [Variable] + parameters: + - $ref: '#/components/parameters/UpdateMask' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Connection' + + responses: + '200': + description: Successfull 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 variable + 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 variable key. + description: The response contains all fields, including data. + tags: [Variable] + responses: + '200': + description: Successfull 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/: + get: + summary: Get all XCom values + description: + This endpoint support reading resources across multiple Task Instancce by specify a + "-" as a `dag_id`, `task_id` and `execution_date`. + 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: Upddate the XCom entry + tags: [XCom] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Connection' + responses: + '200': + description: Successfull response + content: + application/json: + schema: + $ref: '#/components/schemas/Connection' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthenticated' + '403': + $ref: '#/components/responses/PermissionDenied' + + /dags/{dag_id}/taskInstances/{task_id}/{execution_date}/xcomValues/{xom_key}: + parameters: + - $ref: '#/components/parameters/DAGID' + - $ref: '#/components/parameters/TaskID' + - $ref: '#/components/parameters/ExecutionDate' + - $ref: '#/components/parameters/XComKey' + + get: + summary: Get XCom entry + tags: [XCom] + responses: + '200': + description: Successfull 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 a XCom entry + tags: [XCom] + parameters: + - $ref: '#/components/parameters/UpdateMask' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Connection' + + responses: + '200': + description: Successfull 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 XCom entry + 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 + tags: [TaskInstance] + responses: + '200': + description: Successfull 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/{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 taskk instance + 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. + tags: [DAG] + responses: + '200': + description: Successfull 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 task for DAG + tags: [DAG] + responses: + '200': + description: Successfull 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 Task. + tags: [DAG] + responses: + '200': + description: Successfull 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. + tags: [DAG] + responses: + '200': + description: Successfull 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 configuratiin + 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: + is_encrypted: + type: string + readOnly: true + 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 + 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: integer + 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: int + 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: + dag-runs: + type: array + items: + $ref: '#/components/schemas/EventLogCollection' + + ImportError: + type: object + properties: + id: + type: integer + readOnly: true + timestamp: + type: datetime + readOnly: true + filename: + type: string + readOnly: true + stacktrace: + type: string + readOnly: true + + ImportErrorCollection: + type: object + properties: + dag-runs: + 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: datetime + email_sent: + type: boolean + timestamp: + type: 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: datetime + start_date: + type: datetime + end_date: + type: datetime + duration: + type: integer + + TaskInstance: + type: object + properties: + task_id: + type: string + dag_id: + type: string + execution_date: + type: datetime + start_date: + type: datetime + end_date: + type: 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' + + TaskReschedule: + type: object + properties: + id: + type: string + task_id: + type: string + dag_id: + type: string + execution_date: + type: datetime + try_number: + type: integer + start_date: + type: datetime + end_date: + type: datetime + duration: + type: integer + reschedule_date: + type: datetime + + TaskRescheduleCollection: + type: object + properties: + task-instances: + type: array + items: + $ref: '#/components/schemas/TaskReschedule' + + VariableCollectionItem: + # Divided into two schemas for sensitive data protection + type: object + properties: + id: + type: string + key: + type: string + value: + type: string + is_encrypted: + type: boolean + + 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: datetime + execution_date: + type: datetime + task_id: + type: string + dag_id: + type: string + + XComCollection: + type: object + properties: + task-instances: + 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: + task-instances: + 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: + task-instances: + 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-instances: + 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. + required: falase Review comment: Cambridge Dictionary does not know word ```falAse```: https://dictionary.cambridge.org/spellcheck/english/?q=falase Cambridge Dictionary known word ```false```: https://dictionary.cambridge.org/spellcheck/english-polish/?q=false I propose to use terms known to humanity and to avoid word-formation in technical documentation. Zrobiłeś literówkę, więc ją po prostu napraw. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services