{
  "__version": 1,
  "dag": {
    "_dag_id": "orders_etl",
    "description": "Nightly orders extract, validate, transform and publish.",
    "schedule_interval": "17 2 * * *",
    "timezone": "UTC",
    "start_date": "2026-01-01T00:00:00+00:00",
    "catchup": false,
    "max_active_runs": 1,
    "tags": [
      "orders",
      "etl",
      "example"
    ],
    "default_args": {
      "owner": "example-data-team",
      "retries": 2,
      "depends_on_past": false
    },
    "fileloc": "dags/orders_etl.py",
    "tasks": [
      {
        "task_id": "ingest_orders",
        "_task_type": "EmptyOperator",
        "_task_module": "airflow.operators.empty",
        "ui_color": "#e8f0fe",
        "pool": "default_pool",
        "retries": 2,
        "trigger_rule": "all_success",
        "downstream_task_ids": [
          "validate_orders"
        ]
      },
      {
        "task_id": "validate_orders",
        "_task_type": "EmptyOperator",
        "_task_module": "airflow.operators.empty",
        "ui_color": "#e8f0fe",
        "pool": "default_pool",
        "retries": 2,
        "trigger_rule": "all_success",
        "downstream_task_ids": [
          "transform_orders"
        ]
      },
      {
        "task_id": "transform_orders",
        "_task_type": "EmptyOperator",
        "_task_module": "airflow.operators.empty",
        "ui_color": "#e8f0fe",
        "pool": "default_pool",
        "retries": 2,
        "trigger_rule": "all_success",
        "downstream_task_ids": [
          "load_warehouse",
          "refresh_dashboard"
        ]
      },
      {
        "task_id": "load_warehouse",
        "_task_type": "EmptyOperator",
        "_task_module": "airflow.operators.empty",
        "ui_color": "#e8f0fe",
        "pool": "default_pool",
        "retries": 2,
        "trigger_rule": "all_success",
        "downstream_task_ids": [
          "notify_owner"
        ]
      },
      {
        "task_id": "refresh_dashboard",
        "_task_type": "EmptyOperator",
        "_task_module": "airflow.operators.empty",
        "ui_color": "#e8f0fe",
        "pool": "default_pool",
        "retries": 2,
        "trigger_rule": "all_success",
        "downstream_task_ids": [
          "notify_owner"
        ]
      },
      {
        "task_id": "notify_owner",
        "_task_type": "EmptyOperator",
        "_task_module": "airflow.operators.empty",
        "ui_color": "#e8f0fe",
        "pool": "default_pool",
        "retries": 2,
        "trigger_rule": "all_done",
        "downstream_task_ids": []
      }
    ],
    "dag_dependencies": []
  }
}
