Openapi.Yaml Dag Structure
DAG
DAG is a JSON Structure definition published by Apache Airflow, describing 26 properties. It conforms to the https://json-structure.org/meta/core/v0/# meta-schema.
Properties
Meta-schema: https://json-structure.org/meta/core/v0/#
JSON Structure
{
"$schema": "https://json-structure.org/meta/core/v0/#",
"$id": "https://raw.githubusercontent.com/api-evangelist/apache-airflow/refs/heads/main/json-structure/openapi.yaml-dag-structure.json",
"name": "DAG",
"description": "DAG",
"type": "object",
"properties": {
"dag_id": {
"description": "The ID of the DAG.",
"readOnly": true,
"type": "string"
},
"default_view": {
"description": "Default view of the DAG inside the webserver\n\n*New in version 2.3.0*\n",
"nullable": true,
"readOnly": true,
"type": "string"
},
"description": {
"description": "User-provided DAG description, which can consist of several sentences or paragraphs that describe DAG contents.\n",
"nullable": true,
"readOnly": true,
"type": "string"
},
"file_token": {
"description": "The key containing the encrypted path to the file. Encryption and decryption take place only on the server. This prevents the client from reading an non-DAG file. This also ensures API extensibility, because the format of encrypted data may change.\n",
"readOnly": true,
"type": "string"
},
"fileloc": {
"description": "The absolute path to the file.",
"readOnly": true,
"type": "string"
},
"has_import_errors": {
"description": "Whether the DAG has import errors\n\n*New in version 2.3.0*\n",
"nullable": true,
"readOnly": true,
"type": "boolean"
},
"has_task_concurrency_limits": {
"description": "Whether the DAG has task concurrency limits\n\n*New in version 2.3.0*\n",
"nullable": true,
"readOnly": true,
"type": "boolean"
},
"is_active": {
"description": "Whether the DAG is currently seen by the scheduler(s).\n\n*New in version 2.1.1*\n\n*Changed in version 2.2.0*: Field is read-only.\n",
"nullable": true,
"readOnly": true,
"type": "boolean"
},
"is_paused": {
"description": "Whether the DAG is paused.",
"nullable": true,
"type": "boolean"
},
"is_subdag": {
"description": "Whether the DAG is SubDAG.",
"readOnly": true,
"type": "boolean"
},
"last_expired": {
"description": "Time when the DAG last received a refresh signal\n(e.g. the DAG's \"refresh\" button was clicked in the web UI)\n\n*New in version 2.3.0*\n",
"format": "date-time",
"nullable": true,
"readOnly": true,
"type": "string"
},
"last_parsed_time": {
"description": "The last time the DAG was parsed.\n\n*New in version 2.3.0*\n",
"format": "date-time",
"nullable": true,
"readOnly": true,
"type": "string"
},
"last_pickled": {
"description": "The last time the DAG was pickled.\n\n*New in version 2.3.0*\n",
"format": "date-time",
"nullable": true,
"readOnly": true,
"type": "string"
},
"max_active_runs": {
"description": "Maximum number of active DAG runs for the DAG\n\n*New in version 2.3.0*\n",
"nullable": true,
"readOnly": true,
"type": "integer"
},
"max_active_tasks": {
"description": "Maximum number of active tasks that can be run on the DAG\n\n*New in version 2.3.0*\n",
"nullable": true,
"readOnly": true,
"type": "integer"
},
"next_dagrun": {
"description": "The logical date of the next dag run.\n\n*New in version 2.3.0*\n",
"format": "date-time",
"nullable": true,
"readOnly": true,
"type": "string"
},
"next_dagrun_create_after": {
"description": "Earliest time at which this ``next_dagrun`` can be created.\n\n*New in version 2.3.0*\n",
"format": "date-time",
"nullable": true,
"readOnly": true,
"type": "string"
},
"next_dagrun_data_interval_end": {
"description": "The end of the interval of the next dag run.\n\n*New in version 2.3.0*\n",
"format": "date-time",
"nullable": true,
"readOnly": true,
"type": "string"
},
"next_dagrun_data_interval_start": {
"description": "The start of the interval of the next dag run.\n\n*New in version 2.3.0*\n",
"format": "date-time",
"nullable": true,
"readOnly": true,
"type": "string"
},
"owners": {
"items": {
"type": "string"
},
"readOnly": true,
"type": "array"
},
"pickle_id": {
"description": "Foreign key to the latest pickle_id\n\n*New in version 2.3.0*\n",
"nullable": true,
"readOnly": true,
"type": "string"
},
"root_dag_id": {
"description": "If the DAG is SubDAG then it is the top level DAG identifier. Otherwise, null.",
"nullable": true,
"readOnly": true,
"type": "string"
},
"schedule_interval": {
"$ref": "#/components/schemas/ScheduleInterval"
},
"scheduler_lock": {
"description": "Whether (one of) the scheduler is scheduling this DAG at the moment\n\n*New in version 2.3.0*\n",
"nullable": true,
"readOnly": true,
"type": "boolean"
},
"tags": {
"description": "List of tags.",
"items": {
"$ref": "#/components/schemas/Tag"
},
"nullable": true,
"readOnly": true,
"type": "array"
},
"timetable_description": {
"description": "Timetable/Schedule Interval description.\n\n*New in version 2.3.0*\n",
"nullable": true,
"readOnly": true,
"type": "string"
}
}
}
Work with this as data
Every JSON Structure here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for json structure
4 MCP tools reach this
find_json_structuresBrowse and filter every JSON Structure in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-structures/openapi.yaml-dag-structure"
curl "https://apis.io/api/v1/json-structures?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.