Created
April 4, 2020 11:04
-
-
Save dlamblin/07b8a07c71410daeced54b4135cbe203 to your computer and use it in GitHub Desktop.
OpenAPI schemas for The Airflow API, which has been experimental and without a clear schema
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 (Experimental)" | |
description: Apache Airflow management API. | |
version: '0.1.10.0' | |
license: | |
name: Apache 2.0 | |
url: http://www.apache.org/licenses/LICENSE-2.0.html | |
contact: | |
name: Bigdata Platform and Data Infrastructure / Apache Foundation | |
url: https://wiki.coupang.net/display/DE/Using+Rest+API | |
https://bts.coupang.net/projects/BDP/issues | |
http://www.airflow.apache.org | |
email: [email protected] | |
servers: | |
- url: /api/experimental | |
description: Airflow Stable API. | |
paths: | |
/dags/{dag_id}: | |
parameters: | |
- $ref: '#/components/parameters/DAGID' | |
delete: | |
summary: Delete a DAG | |
operationId: deleteDag | |
tags: [DAG] | |
responses: | |
'204': | |
description: No content. | |
'400': | |
$ref: '#/components/responses/BadRequest' | |
'401': | |
$ref: '#/components/responses/Unauthenticated' | |
'403': | |
$ref: '#/components/responses/PermissionDenied' | |
/dags/{dag_id}/dag_runs: | |
parameters: | |
- $ref: '#/components/parameters/DAGID' | |
# get: | |
# summary: Get all DAG Runs | |
# description: This endpoint supports 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: | |
# $ref: '#/components/schemas/DAGRunCollection' | |
# '401': | |
# $ref: '#/components/responses/Unauthenticated' | |
post: | |
summary: Create a DAG Run | |
operationId: createDagRun | |
tags: [DAGRun] | |
requestBody: | |
required: true | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/DAGRunCreate' | |
responses: | |
'200': | |
description: List of DAG Runs. | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/Message' | |
'400': | |
$ref: '#/components/responses/BadRequest' | |
'401': | |
$ref: '#/components/responses/Unauthenticated' | |
'403': | |
$ref: '#/components/responses/PermissionDenied' | |
/dags/{dag_id}/tasks/{task_id}: | |
parameters: | |
- $ref: '#/components/parameters/DAGID' | |
- $ref: '#/components/parameters/TaskID' | |
get: | |
summary: Get a 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' | |
/dags/{dag_id}/dag_runs/{execution_date}/tasks/{task_id}: | |
parameters: | |
- $ref: '#/components/parameters/DAGID' | |
- $ref: '#/components/parameters/ExecutionDate' | |
- $ref: '#/components/parameters/TaskID' | |
get: | |
summary: Get a representation of a task instance | |
description: Get a representation of a task instance's details. This call's return values | |
vary drastically depeding on the task's operator type. IE HiveOperator returns hive_cli_hook | |
and hql fields amoung others which SparkOperator would not return. | |
E.G. curl "http://$APIHOST/api/experimental/dags/api_test/dag_runs/2019-04-20T00:00:00+00:00/tasks/test_task" | |
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' | |
# curl --header "Content-Type:\ application/json" --data "{}" -X POST "http://$APIHOST/api/experimental/dags/bdp_smoke_test_v1/dag_runs" | |
# { | |
# "message": "Created <DagRun bdp_smoke_test_v1 @ 2020-04-04 09:02:30+00:00: manual__2020-04-04T09:02:30+00:00, externally triggered: True>" | |
# } | |
/latest_runs: | |
get: | |
summary: Get the latest DAG Runs | |
description: Get the latest DAG Runs formatted for the UI | |
E.G. curl -X GET "http://$APIHOST/api/experimental/latest_runs" | |
operationId: getLatestRuns | |
tags: [DAGRun] | |
responses: | |
'200': | |
description: List of latest DAG runs. | |
content: | |
application/json: | |
schema: | |
allOf: | |
- $ref: '#/components/schemas/LatestDAGRunCollection' | |
'401': | |
$ref: '#/components/responses/Unauthenticated' | |
'403': | |
$ref: '#/components/responses/PermissionDenied' | |
/pools: | |
get: | |
summary: Get all pools | |
description: Get all pools. | |
E.G. curl -X GET "http://$APIHOST/api/experimental/pools" | |
operationId: getPools | |
tags: [Pool] | |
responses: | |
'200': | |
description: List of pools. | |
content: | |
application/json: | |
schema: | |
allOf: | |
- $ref: '#/components/schemas/PoolCollection' | |
'401': | |
$ref: '#/components/responses/Unauthenticated' | |
'403': | |
$ref: '#/components/responses/PermissionDenied' | |
post: | |
summary: Create pool | |
description: Create a pool. | |
E.G. curl --header "Content-Type:\ application/json" | |
--data '{"name":"apitest","id":41,"slots":0}' | |
-X POST "http://$APIHOST/api/experimental/pools" | |
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_name}: | |
parameters: | |
- $ref: '#/components/parameters/PoolName' | |
get: | |
summary: Get pool | |
description: Get a pool. | |
E.G. curl -X GET "http://$APIHOST/api/experimental/pools/apitest" | |
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' | |
delete: | |
summary: Delete a pool | |
description: Delete a pool. | |
curl -X DELETE "http://$APIHOST/api/experimental/pools/apitest" | |
operationId: deletePool | |
tags: [Pool] | |
responses: | |
'204': | |
description: No content. | |
'400': | |
$ref: '#/components/responses/BadRequest' | |
'401': | |
$ref: '#/components/responses/Unauthenticated' | |
'403': | |
$ref: '#/components/responses/PermissionDenied' | |
components: | |
# Reusable schemas (data models) | |
schemas: | |
# Database entities | |
Message: | |
type: object | |
properties: | |
message: | |
type: string | |
readOnly: true | |
DAGRunCreate: | |
type: object | |
properties: | |
execution_date: | |
type: string | |
format: date-time | |
readOnly: true | |
run_id: | |
type: string | |
readOnly: true | |
conf: | |
type: string | |
readOnly: true | |
LatestDAGRun: | |
type: object | |
properties: | |
dag_id: | |
type: string | |
readOnly: true | |
dag_run_url: | |
type: string | |
readOnly: true | |
execution_date: | |
type: string | |
format: date-time | |
readOnly: true | |
start_date: | |
type: string | |
format: date-time | |
LatestDAGRunCollection: | |
type: object | |
properties: | |
dag_runs: | |
type: array | |
items: | |
$ref: '#/components/schemas/LatestDAGRun' | |
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: 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 | |
TaskInstance: | |
type: object | |
properties: | |
task_id: | |
type: string | |
readOnly: true | |
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' | |
#Actual example: | |
# { | |
# "adhoc": "False", | |
# "depends_on_past": "False", | |
# "email": "['[email protected]']", | |
# "email_on_failure": "True", | |
# "email_on_retry": "True", | |
# "end_date": "None", | |
# "execution_timeout": "None", | |
# "executor_config": "{}", | |
# "hive_cli_conn_id": "hive_cli_default", | |
# "hiveconf_jinja_translate": "False", | |
# "hiveconfs": "{}", | |
# "hook": "None", | |
# "hql": "\n show databases;\n ", | |
# "inlets": "[]", | |
# "lineage_data": "None", | |
# "mapred_job_name": "None", | |
# "mapred_queue": "root.deteam", | |
# "mapred_queue_priority": "None", | |
# "max_retry_delay": "None", | |
# "on_demand_portal_spec": "None", | |
# "on_failure_callback": "None", | |
# "on_retry_callback": "None", | |
# "on_success_callback": "None", | |
# "outlets": "[]", | |
# "owner": "jyulpark", | |
# "params": "{}", | |
# "pool": "None", | |
# "portal_spec": "None", | |
# "priority_weight": "1", | |
# "queue": "default", | |
# "resources": "{'cpus': {'_name': 'CPU', …}}", | |
# "retries": "1", | |
# "retry_delay": "0:05:00", | |
# "retry_exponential_backoff": "False", | |
# "run_as": "jyulpark", | |
# "run_as_user": "None", | |
# "schema": "default", | |
# "script_begin_tag": "None", | |
# "sla": "None", | |
# "start_date": "2020-04-01 00:00:00+00:00", | |
# "task_concurrency": "None", | |
# "task_id": "hive_test", | |
# "trigger_rule": "all_success", | |
# "wait_for_downstream": "False", | |
# "weight_rule": "downstream" | |
# } | |
Task: | |
type: object | |
properties: | |
adhoc: | |
type: boolean | |
readOnly: true | |
email: | |
type: string | |
readOnly: true | |
email_on_failure: | |
type: boolean | |
readOnly: true | |
email_on_retry: | |
type: boolean | |
readOnly: true | |
end_date: | |
type: string | |
format: 'date-time' | |
readOnly: true | |
execution_timeout: | |
$ref: '#/components/schemas/TimeDelta' | |
executor_config: | |
type: string | |
readOnly: true | |
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 | |
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 | |
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 | |
TimeDelta: | |
type: object | |
properties: | |
objectType: {type: string} | |
days: {type: integer} | |
seconds: {type: integer} | |
# TODO: Are we sure this shouldn't be microseconds instead? | |
microsecond: {type: integer} | |
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 | |
# Enums | |
# TODO: If these aren't generated there should at least be a linting test for synchronization | |
TaskState: | |
type: string | |
enum: | |
- success | |
- running | |
- failed | |
- upstream_failed | |
- skipped | |
- up_for_retry | |
- up_for_reschedule | |
- queued | |
- none | |
- scheduled | |
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: | |
DAGID: | |
in: path | |
name: dag_id | |
schema: | |
type: string | |
required: true | |
description: The DAG ID. | |
TaskID: | |
in: path | |
name: task_id | |
schema: | |
type: string | |
required: true | |
description: The Task ID. | |
PoolName: | |
in: path | |
name: pool_name | |
schema: | |
type: string | |
required: true | |
description: The Pool Name. | |
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`. | |
# 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' | |
tags: | |
- name: DAG | |
- name: DAGRun | |
- name: Pool | |
- name: TaskInstance | |
externalDocs: | |
url: http://airflow.apache.org/docs/1.10.1/api.html |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 (Experimental)" | |
description: Apache Airflow management API. | |
version: '0.1.10.9' | |
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: [email protected] | |
servers: | |
- url: /api/Experimental | |
description: Airflow 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 entries. | |
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 a 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 in 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' | |
# TODO: Can DAGs be triggered like /api/experimental/dags/<DAG_ID>/dag_runs (POST)? | |
/dags/{dag_id}/dagRuns: | |
parameters: | |
- $ref: '#/components/parameters/DAGID' | |
get: | |
summary: Get all DAG Runs | |
description: This endpoint supports 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 error | |
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 a 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: updatePool | |
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/Pool' | |
'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 instances 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 variable | |
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 variable 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 a variable by id | |
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 a variable by 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 supports reading resources across multiple Task Instances by specifying | |
"-" as `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' | |
# TODO: Would be more consistent: post should add, patch with update_mask should update. | |
post: | |
summary: Update XCom entries | |
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 a 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 | |
value: | |
type: string | |
is_encrypted: | |
type: boolean | |
VariableCollection: | |
type: object | |
properties: | |
task_instances: | |
type: array | |
items: | |
$ref: '#/components/schemas/VariableCollectionItem' | |
# TODO: VariableCollectionItem already has a "value" | |
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} | |
# TODO: Are we sure this shouldn't be microseconds instead? | |
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 | |
# TODO: If these aren't generated there should at least be a linting test for synchronization | |
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 Event Log 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 task 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 decryption 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 object (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/1.10.9/api.html |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment