You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by po...@apache.org on 2026/03/09 15:31:09 UTC

(airflow) branch v2-11-test updated: Upgrade airflow UI to latest reasonable dependencies. (#63158)

This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch v2-11-test
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/v2-11-test by this push:
     new f9ac51ef20a Upgrade airflow UI to latest reasonable dependencies. (#63158)
f9ac51ef20a is described below

commit f9ac51ef20a226e7c8d5a314c6c6f9c5b7152cd4
Author: Dependabot [bot] <49...@users.noreply.github.com>
AuthorDate: Mon Mar 9 16:31:01 2026 +0100

    Upgrade airflow UI to latest reasonable dependencies. (#63158)
    
    - Bump 56 npm dependencies in airflow/www (React 18→19, ESLint 9 flat config migration,
      stylelint 13→17, echarts 5→6, framer-motion 6→12, etc.)
    - Migrate ESLint from .eslintrc to flat config (eslint.config.mjs) with FlatCompat shim
    - Add jest-globals-setup.js for React 19 compatibility
    - Update webpack, jest, and alias-rest-types configs for new dependency versions
    - Adapt all www source files for React 19 API changes and updated library APIs
    - Bump uv from 0.10.7 to 0.10.9 across Dockerfiles, breeze, and CI scripts
    - Bump prek from 0.3.2 to 0.3.5 to fix stylelint hook failing to resolve
      additional_dependencies with peer deps
    - Update node version from 22.2.0 to 22.13.0 in pre-commit config
    - Remove legacy UI/API label checks from selective checks (we only have
      legacy ui)
    - Add Apache license header to new eslint.config.mjs
    - Update .stylelintrc rules for stylelint 17 compatibility
    
    Co-authored-by: dependabot[bot] <49...@users.noreply.github.com>
    Co-authored-by: Claude Opus 4.6 <no...@anthropic.com>
---
 .github/actions/install-prek/action.yml            |    4 +-
 .github/boring-cyborg.yml                          |    6 +-
 .pre-commit-config.yaml                            |   10 +-
 Dockerfile                                         |    2 +-
 Dockerfile.ci                                      |    4 +-
 RELEASE_NOTES.rst                                  |    1 +
 airflow/reproducible_build.yaml                    |    4 +-
 airflow/www/.eslintignore                          |    7 -
 airflow/www/.eslintrc                              |   67 -
 airflow/www/.stylelintrc                           |   23 +-
 airflow/www/alias-rest-types.js                    |   22 +-
 airflow/www/changes_in_2_11_dependencies.rst       |  348 +
 airflow/www/changes_in_2_11_dependencies.txt       |   86 -
 airflow/www/eslint.config.mjs                      |  154 +
 airflow/www/jest-globals-setup.js                  |   62 +
 airflow/www/jest-setup.js                          |    5 +-
 airflow/www/jest.config.js                         |   31 +-
 airflow/www/package.json                           |  116 +-
 airflow/www/static/css/bootstrap-theme.css         |   47 +-
 airflow/www/static/css/chart.css                   |    1 -
 airflow/www/static/css/graph.css                   |   12 +-
 airflow/www/static/js/api/useClearRun.ts           |    4 +-
 airflow/www/static/js/api/useClearTask.ts          |    2 +-
 airflow/www/static/js/api/useClearTaskDryRun.ts    |    4 +-
 airflow/www/static/js/api/useCreateDatasetEvent.ts |    4 +-
 airflow/www/static/js/api/useDagCode.ts            |    4 +-
 airflow/www/static/js/api/useDagDetails.ts         |    6 +-
 airflow/www/static/js/api/useDagRuns.tsx           |    2 +-
 airflow/www/static/js/api/useDags.tsx              |    2 +-
 airflow/www/static/js/api/useDataset.ts            |    2 +-
 airflow/www/static/js/api/useDatasetEvents.ts      |    2 +-
 airflow/www/static/js/api/useDatasets.ts           |    2 +-
 airflow/www/static/js/api/useDatasetsSummary.ts    |    2 +-
 airflow/www/static/js/api/useEventLogs.tsx         |    2 +-
 airflow/www/static/js/api/useExtraLinks.ts         |   12 +-
 airflow/www/static/js/api/useGraphData.ts          |    2 +-
 airflow/www/static/js/api/useGridData.ts           |    6 +-
 airflow/www/static/js/api/useHealth.ts             |    2 +-
 .../www/static/js/api/useHistoricalMetricsData.ts  |    2 +-
 airflow/www/static/js/api/useMappedInstances.ts    |    2 +-
 airflow/www/static/js/api/useMarkFailedRun.ts      |    2 +-
 airflow/www/static/js/api/useMarkFailedTask.ts     |    2 +-
 airflow/www/static/js/api/useMarkSuccessRun.ts     |    2 +-
 airflow/www/static/js/api/useMarkSuccessTask.ts    |    2 +-
 airflow/www/static/js/api/useMarkTaskDryRun.ts     |    2 +-
 airflow/www/static/js/api/usePools.ts              |    2 +-
 airflow/www/static/js/api/useQueueRun.ts           |    2 +-
 airflow/www/static/js/api/useRenderedK8s.ts        |    4 +-
 airflow/www/static/js/api/useSetDagRunNote.ts      |    4 +-
 .../www/static/js/api/useSetTaskInstanceNote.ts    |   14 +-
 airflow/www/static/js/api/useTIHistory.ts          |    2 +-
 .../www/static/js/api/useTaskFailedDependency.ts   |    4 +-
 airflow/www/static/js/api/useTaskInstance.ts       |    8 +-
 airflow/www/static/js/api/useTaskLog.ts            |    2 +-
 airflow/www/static/js/api/useTaskXcom.ts           |    6 +-
 .../www/static/js/api/useUpstreamDatasetEvents.ts  |    2 +-
 .../historical-metrics/PieChart.tsx                |    4 +-
 .../www/static/js/cluster-activity/index.test.tsx  |   12 +-
 airflow/www/static/js/cluster-activity/index.tsx   |    2 +-
 .../js/cluster-activity/live-metrics/DagRuns.tsx   |    4 +-
 .../js/cluster-activity/live-metrics/Pools.tsx     |    2 +-
 .../www/static/js/cluster-activity/useFilters.tsx  |    4 +-
 .../www/static/js/components/Clipboard.test.tsx    |    2 +-
 airflow/www/static/js/components/Clipboard.tsx     |    4 +-
 .../www/static/js/components/DatasetEventCard.tsx  |    2 +-
 .../static/js/components/InstanceTooltip.test.tsx  |   10 +-
 .../www/static/js/components/InstanceTooltip.tsx   |    2 +-
 .../www/static/js/components/LinkButton.test.tsx   |    2 +-
 .../www/static/js/components/NewTable/NewTable.tsx |    6 +-
 .../js/components/NewTable/createSkeleton.tsx      |    4 +-
 .../js/components/NewTable/searchParams.test.ts    |    6 +-
 .../static/js/components/NewTable/searchParams.ts  |    8 +-
 .../js/components/NewTable/useTableUrlState.ts     |    6 +-
 airflow/www/static/js/components/ReactMarkdown.tsx |   11 +-
 .../static/js/components/SourceTaskInstance.tsx    |    4 +-
 .../www/static/js/components/TabWithTooltip.tsx    |    2 +-
 .../www/static/js/components/Table/CardList.tsx    |    2 +-
 .../www/static/js/components/Table/Table.test.tsx  |   16 +-
 airflow/www/static/js/components/Table/index.tsx   |    2 +-
 airflow/www/static/js/components/Time.test.tsx     |    6 +-
 airflow/www/static/js/components/Tooltip.tsx       |    6 +-
 .../www/static/js/components/TriggeredDagRuns.tsx  |    2 +-
 airflow/www/static/js/components/ViewTimeDelta.tsx |    2 +-
 airflow/www/static/js/components/utils.test.ts     |    2 +-
 airflow/www/static/js/components/utils.ts          |    2 +-
 airflow/www/static/js/connection_form.js           |   20 +-
 airflow/www/static/js/context/autorefresh.tsx      |    8 +-
 airflow/www/static/js/context/containerRef.tsx     |    1 -
 airflow/www/static/js/context/timezone.tsx         |    4 +-
 airflow/www/static/js/dag.js                       |    8 +-
 airflow/www/static/js/dag/Main.tsx                 |   18 +-
 .../static/js/dag/details/NotesAccordion.test.tsx  |    8 +-
 .../www/static/js/dag/details/NotesAccordion.tsx   |    2 +-
 airflow/www/static/js/dag/details/dag/Calendar.tsx |    4 +-
 airflow/www/static/js/dag/details/dag/Dag.tsx      |   10 +-
 .../www/static/js/dag/details/dag/RunDuration.tsx  |    2 +-
 .../static/js/dag/details/dag/RunDurationChart.tsx |    6 +-
 .../static/js/dag/details/dagCode/CodeBlock.tsx    |    2 +-
 .../www/static/js/dag/details/dagRun/ClearRun.tsx  |    8 +-
 .../js/dag/details/dagRun/DatasetTriggerEvents.tsx |    2 +-
 .../www/static/js/dag/details/dagRun/MarkRunAs.tsx |    4 +-
 airflow/www/static/js/dag/details/gantt/Row.tsx    |    8 +-
 airflow/www/static/js/dag/details/gantt/index.tsx  |    4 +-
 .../static/js/dag/details/graph/DagNode.test.tsx   |    6 +-
 airflow/www/static/js/dag/details/graph/index.tsx  |   12 +-
 airflow/www/static/js/dag/details/graph/utils.ts   |    4 +-
 airflow/www/static/js/dag/details/index.tsx        |   13 +-
 .../static/js/dag/details/task/AllTaskDuration.tsx |    2 +-
 .../static/js/dag/details/task/TaskDuration.tsx    |    6 +-
 .../details/taskInstance/DatasetUpdateEvents.tsx   |    2 +-
 .../static/js/dag/details/taskInstance/Details.tsx |    8 +-
 .../js/dag/details/taskInstance/Logs/LogBlock.tsx  |    4 +-
 .../dag/details/taskInstance/Logs/LogLink.test.tsx |   12 +-
 .../js/dag/details/taskInstance/Logs/LogLink.tsx   |    6 +-
 .../dag/details/taskInstance/Logs/index.test.tsx   |   87 +-
 .../js/dag/details/taskInstance/Logs/index.tsx     |   14 +-
 .../dag/details/taskInstance/Logs/utils.test.tsx   |   20 +-
 .../js/dag/details/taskInstance/Logs/utils.ts      |   10 +-
 .../dag/details/taskInstance/MappedInstances.tsx   |    4 +-
 .../www/static/js/dag/details/taskInstance/Nav.tsx |    4 +-
 .../js/dag/details/taskInstance/Xcom/XcomEntry.tsx |    2 +-
 .../taskInstance/taskActions/MarkInstanceAs.tsx    |    2 +-
 airflow/www/static/js/dag/grid/dagRuns/Bar.tsx     |    8 +-
 .../www/static/js/dag/grid/dagRuns/index.test.tsx  |   18 +-
 airflow/www/static/js/dag/grid/index.test.tsx      |   20 +-
 .../www/static/js/dag/grid/renderTaskRows.test.tsx |    6 +-
 airflow/www/static/js/dag/index.tsx                |    2 +-
 airflow/www/static/js/dag/nav/FilterBar.tsx        |    4 +-
 airflow/www/static/js/dag/nav/LegendRow.test.tsx   |    8 +-
 airflow/www/static/js/dag/useFilters.test.tsx      |    8 +-
 airflow/www/static/js/dag/useFilters.tsx           |   10 +-
 airflow/www/static/js/dag_dependencies.js          |    6 +-
 airflow/www/static/js/dags.js                      |   20 +-
 .../www/static/js/datasets/CreateDatasetEvent.tsx  |    2 +-
 airflow/www/static/js/datasets/DatasetDetails.tsx  |    2 +-
 airflow/www/static/js/datasets/DatasetEvents.tsx   |    2 +-
 .../www/static/js/datasets/DatasetsList.test.tsx   |    4 +-
 airflow/www/static/js/datasets/DatasetsList.tsx    |    2 +-
 airflow/www/static/js/datasets/Graph/index.tsx     |    4 +-
 airflow/www/static/js/datasets/Main.tsx            |    6 +-
 airflow/www/static/js/datasets/index.tsx           |    2 +-
 airflow/www/static/js/datetime_utils.js            |    4 +-
 airflow/www/static/js/main.js                      |    8 +-
 airflow/www/static/js/task_instances.js            |    6 +-
 airflow/www/static/js/ti_log.js                    |   18 +-
 airflow/www/static/js/trigger.js                   |    6 +-
 airflow/www/static/js/types/api-generated.ts       | 4831 ++++++++-----
 .../www/static/js/types/react-table-config.d.ts    |   45 +-
 airflow/www/static/js/utils/graph.ts               |   10 +-
 airflow/www/static/js/utils/index.test.ts          |   12 +-
 airflow/www/static/js/utils/index.ts               |    8 +-
 airflow/www/static/js/utils/useKeysPress.ts        |    6 +-
 airflow/www/webpack.config.js                      |   23 +-
 airflow/www/yarn.lock                              | 7416 ++++++++------------
 dev/breeze/doc/ci/02_images.md                     |    4 +-
 dev/breeze/doc/ci/04_selective_checks.md           |    1 -
 .../commands/release_management_commands.py        |    4 +-
 dev/breeze/src/airflow_breeze/global_constants.py  |    2 +-
 .../src/airflow_breeze/utils/selective_checks.py   |   51 +-
 dev/breeze/tests/test_selective_checks.py          |  118 -
 dev/breeze/uv.lock                                 |  402 +-
 scripts/ci/install_breeze.sh                       |    2 +-
 .../ci/pre_commit/update_installers_and_prek.py    |    2 +-
 163 files changed, 7501 insertions(+), 7222 deletions(-)

diff --git a/.github/actions/install-prek/action.yml b/.github/actions/install-prek/action.yml
index 0d7129f53c1..8ee3b5e22a0 100644
--- a/.github/actions/install-prek/action.yml
+++ b/.github/actions/install-prek/action.yml
@@ -24,10 +24,10 @@ inputs:
     default: "3.10"
   uv-version:
     description: 'uv version to use'
-    default: "0.10.7"  # Keep this comment to allow automatic replacement of uv version
+    default: "0.10.9"  # Keep this comment to allow automatic replacement of uv version
   prek-version:
     description: 'prek version to use'
-    default: "0.3.2"  # Keep this comment to allow automatic replacement of prek version
+    default: "0.3.5"  # Keep this comment to allow automatic replacement of prek version
 runs:
   using: "composite"
   steps:
diff --git a/.github/boring-cyborg.yml b/.github/boring-cyborg.yml
index 0e118fa3ee3..8b8f45bb727 100644
--- a/.github/boring-cyborg.yml
+++ b/.github/boring-cyborg.yml
@@ -571,8 +571,7 @@ labelPRBasedOnFilePath:
     - .pre-commit-config.yaml
     - .rat-excludes
     - .readthedocs.yml
-    - airflow/www/.eslintignore
-    - airflow/www/.eslintrc
+    - airflow/www/eslint.config.mjs
     - airflow/www/.stylelintignore
     - airflow/www/.stylelintrc
 
@@ -592,8 +591,7 @@ labelPRBasedOnFilePath:
   area:UI:
     - airflow/www/static/**/*
     - airflow/www/templates/**/*
-    - airflow/www/.eslintignore
-    - airflow/www/.eslintrc
+    - airflow/www/eslint.config.mjs
     - airflow/www/.stylelintignore
     - airflow/www/.stylelintrc
     - airflow/www/package.json
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 7a647960395..b1631172846 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -18,8 +18,8 @@
 default_stages: [pre-commit, pre-push]
 default_language_version:
   python: python3
-  node: 22.2.0
-minimum_prek_version: '0.3.2'
+  node: 22.13.0
+minimum_prek_version: '0.3.5'
 exclude: ^.*/.*_vendor/
 repos:
   - repo: meta
@@ -244,7 +244,7 @@ repos:
         name: Check XML files with xmllint
       - id: trailing-whitespace
         name: Remove trailing whitespace at end of line
-        exclude: ^docs/apache-airflow/img/.*\.dot|^dev/breeze/doc/images/output.*$
+        exclude: ^docs/apache-airflow/img/.*\.dot|^dev/breeze/doc/images/output.*$|^airflow/www/static/js/types/api-generated\.ts$
       - id: pretty-format-json
         name: Format JSON files
         args:
@@ -732,11 +732,11 @@ repos:
         exclude: ^dev/breeze/autocomplete/.*$
       - id: lint-css
         name: stylelint
-        entry: "stylelint"
+        entry: bash -c 'stylelint --config-basedir "$(dirname "$(which stylelint)")/../lib" "$@"' --
         language: node
         files: ^airflow/www/.*\.(css|sass|scss)$
         # Keep dependency versions in sync w/ airflow/www/package.json
-        additional_dependencies: ['stylelint@13.3.1', 'stylelint-config-standard@20.0.0', 'stylelint-config-prettier@9.0.5']
+        additional_dependencies: ['stylelint@17.4.0', 'stylelint-config-standard@40.0.0']
       - id: compile-www-assets
         name: Compile www assets (manual)
         language: node
diff --git a/Dockerfile b/Dockerfile
index dc05d17fc7c..3f3dcd41151 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -55,7 +55,7 @@ ARG PYTHON_BASE_IMAGE="python:3.9-slim-bookworm"
 # Also use `force pip` label on your PR to swap all places we use `uv` to `pip`
 ARG AIRFLOW_PIP_VERSION=26.0.1
 # ARG AIRFLOW_PIP_VERSION="git+https://github.com/pypa/pip.git@main"
-ARG AIRFLOW_UV_VERSION=0.10.7
+ARG AIRFLOW_UV_VERSION=0.10.9
 ARG AIRFLOW_USE_UV="false"
 ARG UV_HTTP_TIMEOUT="300"
 ARG AIRFLOW_IMAGE_REPOSITORY="https://github.com/apache/airflow"
diff --git a/Dockerfile.ci b/Dockerfile.ci
index 0cd350201ac..ca912e79ef5 100644
--- a/Dockerfile.ci
+++ b/Dockerfile.ci
@@ -1261,9 +1261,9 @@ COPY --from=scripts common.sh install_packaging_tools.sh install_additional_depe
 # Also use `force pip` label on your PR to swap all places we use `uv` to `pip`
 ARG AIRFLOW_PIP_VERSION=26.0.1
 # ARG AIRFLOW_PIP_VERSION="git+https://github.com/pypa/pip.git@main"
-ARG AIRFLOW_UV_VERSION=0.10.7
+ARG AIRFLOW_UV_VERSION=0.10.9
 # TODO(potiuk): automate with upgrade check (possibly)
-ARG AIRFLOW_PREK_VERSION="0.3.2"
+ARG AIRFLOW_PREK_VERSION="0.3.5"
 
 ENV AIRFLOW_PIP_VERSION=${AIRFLOW_PIP_VERSION} \
     AIRFLOW_UV_VERSION=${AIRFLOW_UV_VERSION} \
diff --git a/RELEASE_NOTES.rst b/RELEASE_NOTES.rst
index 4609bc951f0..8c4442f6fb3 100644
--- a/RELEASE_NOTES.rst
+++ b/RELEASE_NOTES.rst
@@ -41,6 +41,7 @@ Bug Fixes
 Updated dependencies
 """"""""""""""""""""
 
+- Upgrade airflow UI to latest reasonable dependencies. (#63158)
 - Bump the core-ui-package-updates group across 1 directory with 87 updates (#61091)
 - bump filelock (#62952)
 - Limit Celery Provider to not install 3.17.0 as it breaks airflow 2.11 (#63046)
diff --git a/airflow/reproducible_build.yaml b/airflow/reproducible_build.yaml
index e28ff747419..516ff0f5eb0 100644
--- a/airflow/reproducible_build.yaml
+++ b/airflow/reproducible_build.yaml
@@ -1,2 +1,2 @@
-release-notes-hash: 647fdaa1d742db7f83fc191ca1a82e71
-source-date-epoch: 1773003042
+release-notes-hash: 2a113e5130206b6093f308203895c73b
+source-date-epoch: 1773064768
diff --git a/airflow/www/.eslintignore b/airflow/www/.eslintignore
deleted file mode 100644
index f70244c96f6..00000000000
--- a/airflow/www/.eslintignore
+++ /dev/null
@@ -1,7 +0,0 @@
-**/*{.,-}min.js
-**/*.sh
-**/*.py
-jqClock.min.js
-coverage/**
-static/dist/*
-static/docs/*
diff --git a/airflow/www/.eslintrc b/airflow/www/.eslintrc
deleted file mode 100644
index 29914c0cd84..00000000000
--- a/airflow/www/.eslintrc
+++ /dev/null
@@ -1,67 +0,0 @@
-{
-  "extends": ["airbnb", "airbnb/hooks", "prettier"],
-  "parser": "@babel/eslint-parser",
-  "parserOptions": {
-    "babelOptions": {
-      "presets": [
-        "@babel/preset-env",
-        "@babel/preset-react",
-        "@babel/preset-typescript"
-      ],
-      "plugins": ["@babel/plugin-transform-runtime"]
-    }
-  },
-  "plugins": ["html", "react"],
-  "rules": {
-    "no-param-reassign": 1,
-    "react/prop-types": 0,
-    "react/jsx-props-no-spreading": 0,
-    "import/extensions": [
-      "error",
-      "ignorePackages",
-      {
-        "js": "never",
-        "jsx": "never",
-        "ts": "never",
-        "tsx": "never"
-      }
-    ],
-    "import/no-extraneous-dependencies": [
-      "error",
-      {
-        "devDependencies": true,
-        "optionalDependencies": false,
-        "peerDependencies": false
-      }
-    ],
-    "react/function-component-definition": [
-      0,
-      {
-        "namedComponents": "function-declaration"
-      }
-    ]
-  },
-  "settings": {
-    "import/resolver": {
-      "node": {
-        "extensions": [".js", ".jsx", ".ts", ".tsx"]
-      }
-    }
-  },
-  // eslint that apply only to typescript files
-  "overrides": [
-    {
-      "files": ["*.ts", "*.tsx"],
-      "extends": ["airbnb-typescript", "prettier"],
-      "parser": "@typescript-eslint/parser",
-      "plugins": ["@typescript-eslint"],
-      "parserOptions": {
-        "project": "./tsconfig.json"
-      },
-      "rules": {
-        "react/require-default-props": 0,
-        "@typescript-eslint/no-explicit-any": 1
-      }
-    }
-  ]
-}
diff --git a/airflow/www/.stylelintrc b/airflow/www/.stylelintrc
index 2e8ff5864a4..cbbc1d5c369 100644
--- a/airflow/www/.stylelintrc
+++ b/airflow/www/.stylelintrc
@@ -1,3 +1,24 @@
 {
-  "extends": ["stylelint-config-standard", "stylelint-config-prettier"]
+  "extends": ["stylelint-config-standard"],
+  "rules": {
+    "alpha-value-notation": null,
+    "color-function-alias-notation": null,
+    "color-function-notation": null,
+    "declaration-property-value-no-unknown": null,
+    "function-url-quotes": null,
+    "media-feature-range-notation": null,
+    "number-max-precision": null,
+    "property-no-deprecated": null,
+    "property-no-vendor-prefix": null,
+    "selector-class-pattern": null,
+    "selector-id-pattern": null,
+    "selector-not-notation": null,
+    "value-keyword-case": null,
+    "value-no-vendor-prefix": null,
+    "at-rule-no-vendor-prefix": null,
+    "selector-no-vendor-prefix": null,
+    "media-feature-name-no-vendor-prefix": null,
+    "declaration-block-no-redundant-longhand-properties": null,
+    "keyframes-name-pattern": null
+  }
 }
diff --git a/airflow/www/alias-rest-types.js b/airflow/www/alias-rest-types.js
index c2767acca6e..3d7d7df04b3 100644
--- a/airflow/www/alias-rest-types.js
+++ b/airflow/www/alias-rest-types.js
@@ -64,14 +64,14 @@ const generateVariableAliases = (node, operationPath, operationName) => {
     node,
     "requestBody",
     "content",
-    "application/json"
+    "application/json",
   );
 
   if (hasPath) variableTypes.push(`${operationPath}['parameters']['path']`);
   if (hasQuery) variableTypes.push(`${operationPath}['parameters']['query']`);
   if (hasBody)
     variableTypes.push(
-      `${operationPath}['requestBody']['content']['application/json']`
+      `${operationPath}['requestBody']['content']['application/json']`,
     );
 
   if (variableTypes.length === 0) return "";
@@ -79,7 +79,7 @@ const generateVariableAliases = (node, operationPath, operationName) => {
   return [
     typeName,
     `export type ${typeName} = CamelCasedPropertiesDeep<${variableTypes.join(
-      " & "
+      " & ",
     )}>;`,
   ];
 };
@@ -91,14 +91,14 @@ const generateAliases = (rootNode, writeText, prefix = "") => {
     // Response Data Types
     if (ts.isInterfaceDeclaration(node) && node.name?.text === "components") {
       const schemaMemberNames = findNode(node, "schemas").type.members.map(
-        (n) => n.name?.text
+        (n) => n.name?.text,
       );
 
       const types = schemaMemberNames.map((n) => [
         `${n}`,
         `export type ${n} = CamelCasedPropertiesDeep<${prefixPath(
           prefix,
-          "components"
+          "components",
         )}['schemas']['${n}']>;`,
       ]);
       if (types.length) {
@@ -122,8 +122,8 @@ const generateAliases = (rootNode, writeText, prefix = "") => {
           generateVariableAliases(
             findNode(path, m),
             `${prefixPath(prefix, "paths")}['${path.name?.text}']['${m}']`,
-            `${path.name.text}${toPascalCase(m)}`
-          )
+            `${path.name.text}${toPascalCase(m)}`,
+          ),
         );
         types.push(...methodTypes.filter((m) => !!m));
       });
@@ -148,8 +148,8 @@ const generateAliases = (rootNode, writeText, prefix = "") => {
         generateVariableAliases(
           operation,
           `${prefixPath(prefix, "operations")}['${operation.name.text}']`,
-          operation.name.text
-        )
+          operation.name.text,
+        ),
       );
       if (types.length) {
         writeText.push(["comment", `Types for operation variables ${prefix}`]);
@@ -164,7 +164,7 @@ const generateAliases = (rootNode, writeText, prefix = "") => {
         generateAliases(
           external.type,
           writeText,
-          `external['${external.name.text}']`
+          `external['${external.name.text}']`,
         );
       });
     }
@@ -198,7 +198,7 @@ function generate(file) {
   const writeText = [];
   writeText.push(["block", license]);
   writeText.push(["comment", "eslint-disable"]);
-  // eslint-disable-next-line quotes
+
   writeText.push([
     "block",
     `import type { CamelCasedPropertiesDeep } from 'type-fest';`,
diff --git a/airflow/www/changes_in_2_11_dependencies.rst b/airflow/www/changes_in_2_11_dependencies.rst
new file mode 100644
index 00000000000..9af5bb2b5a1
--- /dev/null
+++ b/airflow/www/changes_in_2_11_dependencies.rst
@@ -0,0 +1,348 @@
+ .. 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.
+
+Airflow 2.11.2rc1 — Frontend Dependency Changes
+================================================
+
+Full summary of all upgrades grouped by risk level.
+Based on actual ``package.json`` diff between 2.11.1 and 2.11.2rc1.
+
+
+HIGH RISK — Major version bumps with known breaking changes
+-----------------------------------------------------------
+
++------------------------------+------------+------------+----------------------------------------------------------------+
+| Package                      | Old        | New        | Breaking Changes                                               |
++==============================+============+============+================================================================+
+| react / react-dom            | ^18.0.0    | ^19.2.4    | Major upgrade to React 19. New hooks (use, useActionState,     |
+|                              |            |            | useFormStatus, useOptimistic), ref as prop, async transitions, |
+|                              |            |            | Suspense changes, removal of legacy APIs (forwardRef less      |
+|                              |            |            | needed, string refs removed, defaultProps deprecated for       |
+|                              |            |            | function components). react-dom/client changes.                |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| react-router-dom             | ^6.3.0     | ^7.13.1    | Major v7 upgrade. Route definition API changes, loader/action  |
+|                              |            |            | patterns changed, new framework mode, createBrowserRouter      |
+|                              |            |            | recommended over BrowserRouter.                                |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| echarts                      | ^5.4.2     | ^6.0.0     | Breaking API changes in chart options, deprecated configs      |
+|                              |            |            | removed, default themes changed. May silently render charts    |
+|                              |            |            | differently.                                                   |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| framer-motion                | ^6.0.0     | ^11.18.2   | API overhaul across 5 major versions. AnimatePresence exit     |
+|                              |            |            | animations changed, useAnimation -> useAnimationControls,      |
+|                              |            |            | layout animation API changed.                                  |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| eslint                       | ^8.6.0     | ^9.27.0    | Flat config is now the default. .eslintrc files deprecated in  |
+|                              |            |            | favor of eslint.config.js. Many plugin/config APIs changed.    |
+|                              |            |            | --ext and --ignore-path removed.                               |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| jest                         | ^27.3.1    | ^30.2.0    | Complete rewrite. Test globals imported differently,           |
+|                              |            |            | jest.config.js format changes, timer mocking API changes,      |
+|                              |            |            | snapshot format changed.                                       |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| typescript                   | ^4.6.3     | ^5.9.3     | Enum behavior changes, decorator support changes,              |
+|                              |            |            | moduleResolution defaults changed. May surface new type        |
+|                              |            |            | errors.                                                        |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| swagger-ui-dist              | 4.1.3      | 5.32.0     | CSS class names changed, rendering differences, bundled CSS    |
+|                              |            |            | restructured.                                                  |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| react-markdown               | ^8.0.4     | ^10.1.0    | Major v9 and v10. Moved to ESM-only, plugin API changes,      |
+|                              |            |            | remark/rehype ecosystem alignment, component prop changes.     |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| d3-shape                     | ^2.1.0     | ^3.2.0     | d3.line().curve() defaults changed, some curve types renamed.  |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| moment-timezone              | ^0.5.43    | ^0.6.0     | Timezone data format changed, some edge-case parsing           |
+|                              |            |            | differences.                                                   |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| elkjs                        | ^0.7.1     | ^0.11.1    | Layout algorithm changes -- graph layouts may render           |
+|                              |            |            | differently.                                                   |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| color                        | ^4.2.3     | ^5.0.3     | Major v5. API changes in color manipulation methods.           |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| camelcase-keys               | ^7.0.0     | ^10.0.2    | Major v8/v9/v10. ESM-only since v8, API surface changes.       |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| type-fest                    | ^2.17.0    | ^5.4.4     | Major v3/v4/v5. Type definitions changed/renamed/removed       |
+|                              |            |            | across versions.                                               |
++------------------------------+------------+------------+----------------------------------------------------------------+
+
+
+MEDIUM RISK — Dev/build tooling or breaking changes less likely to affect runtime
+---------------------------------------------------------------------------------
+
+Testing & code quality
+^^^^^^^^^^^^^^^^^^^^^^
+
++------------------------------+------------+------------+----------------------------------------------------------------+
+| Package                      | Old        | New        | Breaking Changes                                               |
++==============================+============+============+================================================================+
+| @typescript-eslint/*         | ^5.x       | ^8.56.1    | New rules enabled by default, some rules removed/renamed,      |
+|                              |            |            | stricter defaults. Many new lint errors likely.                |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| @testing-library/react       | ^13.0.0    | ^16.3.2    | renderHook now exported from main, cleanup behavior changed,   |
+|                              |            |            | act() wrapping changes. Requires React 18+.                    |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| @testing-library/jest-dom    | ^5.16.0    | ^6.9.1     | Matchers now use @jest/expect instead of jest-jasmine2. Some   |
+|                              |            |            | matchers renamed.                                              |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| prettier                     | ^2.8.4     | ^3.8.1     | Trailing commas now default to all, different formatting for   |
+|                              |            |            | various constructs. Will change code formatting.               |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| openapi-typescript           | ^5.4.1     | ^7.13.0    | Generated types may have different structure.                  |
+|                              |            |            | generate-api-types script output may change.                   |
++------------------------------+------------+------------+----------------------------------------------------------------+
+
+UI libraries
+^^^^^^^^^^^^
+
++------------------------------+------------+------------+----------------------------------------------------------------+
+| Package                      | Old        | New        | Breaking Changes                                               |
++==============================+============+============+================================================================+
+| react-syntax-highlighter     | ^15.5.0    | ^16.1.1    | Theme/style import paths may have changed.                     |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| remark-gfm                   | ^3.0.1     | ^4.0.1     | Major v4. ESM-only, unified/remark ecosystem v11 alignment.    |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| @chakra-ui/react             | 2.4.2      | 2.10.9     | Minor within v2, but large jump. Theme token changes,          |
+|                              |            |            | component API additions, some deprecations.                    |
++------------------------------+------------+------------+----------------------------------------------------------------+
+
+Webpack loaders & plugins
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
++--------------------------------+------------+------------+--------------------------------------------------------------+
+| Package                        | Old        | New        | Breaking Changes                                             |
++================================+============+============+==============================================================+
+| webpack-cli                    | ^4.0.0     | ^6.0.1     | CLI argument changes, config resolution changes.             |
++--------------------------------+------------+------------+--------------------------------------------------------------+
+| copy-webpack-plugin            | ^6.0.3     | ^14.0.0    | Config format changes, pattern/globOptions API may differ.   |
++--------------------------------+------------+------------+--------------------------------------------------------------+
+| css-loader                     | 5.2.7      | 7.1.4      | Major v6/v7. modules option defaults changed, url() handling |
+|                                |            |            | changes.                                                     |
++--------------------------------+------------+------------+--------------------------------------------------------------+
+| css-minimizer-webpack-plugin   | ^4.0.0     | ^8.0.0     | Multiple major bumps. Configuration API changes.             |
++--------------------------------+------------+------------+--------------------------------------------------------------+
+| style-loader                   | ^1.2.1     | ^4.0.0     | Major v2/v3/v4. injectType option changes, esModule default  |
+|                                |            |            | changed.                                                     |
++--------------------------------+------------+------------+--------------------------------------------------------------+
+| imports-loader                 | ^1.1.0     | ^5.0.0     | Syntax and configuration API changes.                        |
++--------------------------------+------------+------------+--------------------------------------------------------------+
+| mini-css-extract-plugin        | ^1.6.2     | ^2.10.0    | Major v2. experimentalUseImportModule removed, config        |
+|                                |            |            | changes.                                                     |
++--------------------------------+------------+------------+--------------------------------------------------------------+
+| webpack-manifest-plugin        | ^4.0.0     | ^6.0.1     | Output format and seed option changes.                       |
++--------------------------------+------------+------------+--------------------------------------------------------------+
+| babel-loader                   | ^9.1.0     | ^10.0.0    | Major v10. Requires Babel 7.12+, config resolution changes.  |
++--------------------------------+------------+------------+--------------------------------------------------------------+
+| clean-webpack-plugin           | ^3.0.0     | ^4.0.0     | Output cleaning behavior changes.                            |
++--------------------------------+------------+------------+--------------------------------------------------------------+
+
+Linting & formatting
+^^^^^^^^^^^^^^^^^^^^
+
++------------------------------+------------+------------+----------------------------------------------------------------+
+| Package                      | Old        | New        | Breaking Changes                                               |
++==============================+============+============+================================================================+
+| stylelint                    | ^15.10.1   | ^17.4.0    | Major v16/v17. Config format changes, rule renames, stricter   |
+|                              |            |            | defaults.                                                      |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| stylelint-config-standard    | ^20.0.0    | ^40.0.0    | Rule changes and additions tracking stylelint.                 |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| eslint-config-airbnb-ts      | ^17.0.0    | ^18.0.0    | Updated peer deps and rule changes.                            |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| eslint-config-prettier       | ^8.6.0     | ^10.1.8    | Some removed rules, adapted for ESLint 9 flat config.          |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| eslint-plugin-html           | ^6.0.2     | ^8.1.4     | ESLint 9 flat config support.                                  |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| eslint-plugin-promise        | ^4.2.1     | ^7.2.1     | Rule renames and additions, ESLint 9 support.                  |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| eslint-plugin-react-hooks    | ^4.5.0     | ^7.0.1     | Stricter rules, new violations detected.                       |
++------------------------------+------------+------------+----------------------------------------------------------------+
+| eslint-plugin-standard       | ^4.0.1     | ^5.0.0     | Some rules removed or renamed.                                 |
++------------------------------+------------+------------+----------------------------------------------------------------+
+
+Other
+^^^^^
+
++------------------------------+------------+------------+----------------------------------------------------------------+
+| Package                      | Old        | New        | Breaking Changes                                               |
++==============================+============+============+================================================================+
+| tsconfig-paths               | ^3.14.2    | ^4.2.0     | Major v4. Path resolution behavior changes.                    |
++------------------------------+------------+------------+----------------------------------------------------------------+
+
+
+LOW RISK — Minor/patch-level or backwards-compatible changes
+------------------------------------------------------------
+
++--------------------+--------------+--------------+------------------------------------------+
+| Package            | Old          | New          | Notes                                    |
++====================+==============+==============+==========================================+
+| axios              | ^1.6.0       | ^1.13.6      | Minor within v1, backwards compatible    |
++--------------------+--------------+--------------+------------------------------------------+
+| webpack            | ^5.94.0      | ^5.105.4     | Minor within v5                          |
++--------------------+--------------+--------------+------------------------------------------+
+| react-icons        | ^5.2.1       | ^5.6.0       | Minor within v5                          |
++--------------------+--------------+--------------+------------------------------------------+
+| url-loader         | 4.1.0        | 4.1.1        | Patch bump                               |
++--------------------+--------------+--------------+------------------------------------------+
+
+
+New packages added
+------------------
+
++------------------------------+------------+----------------------------------------------------------------+
+| Package                      | Version    | Notes                                                          |
++==============================+============+================================================================+
+| @eslint/eslintrc             | ^3.3.1     | Compatibility layer for eslintrc configs in ESLint 9 flat      |
+|                              |            | config                                                         |
++------------------------------+------------+----------------------------------------------------------------+
+| @testing-library/dom         | ^10.0.0    | New direct dependency (was likely transitive before)           |
++------------------------------+------------+----------------------------------------------------------------+
+| eslint-import-resolver-ts    | ^4.4.3     | TypeScript import resolution for eslint-plugin-import          |
++------------------------------+------------+----------------------------------------------------------------+
+| globals                      | ^17.4.0    | Global variable definitions for ESLint 9 flat config           |
++------------------------------+------------+----------------------------------------------------------------+
+| jest-environment-jsdom       | ^30.2.0    | jsdom environment for Jest 30 (now a separate package)         |
++------------------------------+------------+----------------------------------------------------------------+
+
+
+Packages removed
+----------------
+
++------------------------------+---------------------------------------------------------+
+| Package                      | Notes                                                   |
++==============================+=========================================================+
+| stylelint-config-prettier    | No longer needed with stylelint 17 + prettier 3         |
++------------------------------+---------------------------------------------------------+
+
+
+Script changes
+--------------
+
+- ``lint`` command: removed ``--ignore-path=.eslintignore`` ``--ext .js,.jsx,.ts,.tsx`` flags
+  (not supported in ESLint 9)
+- ``lint`` command: removed ``tsc`` step (was: ``eslint ... && tsc``, now: ``eslint ...`` only)
+
+
+Key areas to manually verify
+-----------------------------
+
+1. **React 19** — THE BIGGEST CHANGE. All components should be tested. ``forwardRef`` patterns,
+   string refs, ``defaultProps`` on function components, legacy context, and many deprecated APIs
+   are removed. ``ReactDOM.render`` is gone (must use ``createRoot``).
+2. **react-router-dom v7** — Route definitions, navigation hooks, and loader/action patterns may
+   have changed.
+3. **echarts 6** — All charts should be visually verified; rendering defaults changed.
+4. **framer-motion 11** — Animation components should be visually checked; API changed across
+   5 major versions.
+5. **ESLint 9 (flat config)** — ``.eslintrc`` must be migrated to ``eslint.config.js``. The
+   ``@eslint/eslintrc`` compat layer is added.
+6. **swagger-ui-dist 5** — The API docs page styling may look different.
+7. **prettier 3** — Running ``yarn format`` will reformat many files (trailing commas, etc.).
+8. **jest 30** — The test config (``jest.config.js``, ``babel.config.js``) may need updates.
+   ``jest-environment-jsdom`` now separate.
+9. **react-markdown 10** — Markdown rendering in the UI should be verified. Plugin API changed.
+10. **Webpack build pipeline** — Many loaders and plugins jumped multiple major versions. Build
+    may need config adjustments.
+
+
+Impact Assessment
+-----------------
+
+.. note::
+
+   This excludes build and lint issues already verified and fixed.
+
+
+HIGH IMPACT (will likely cause build/test/runtime failures)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+**1. React 19** (``^18`` → ``^19.2.4``) — Impact: **LOW** despite being a major bump
+
+- The codebase is clean: all functional components, hooks-only, no class components
+- No ``defaultProps``, no string refs, no legacy context, no ``ReactDOM.render``
+- 5 files use ``forwardRef`` — still works in React 19 (just no longer required)
+- ``@types/react`` jumped to ``^19.2.14`` which may surface type errors on ``children`` prop
+  (no longer implicit)
+- **Verdict:** Runtime likely fine, but TypeScript compilation may break on implicit ``children``
+
+**2. Jest 30** (``^27`` → ``^30``) — Impact: **MEDIUM-HIGH**
+
+- ``jest.config.js`` exists and uses ``testEnvironment: "jsdom"`` — now requires separate
+  ``jest-environment-jsdom`` package (added)
+- ``jest-globals-setup.js`` already patches React 19 ``AggregateError`` — someone has partially
+  adapted
+- ``babel-jest`` jumped to ``^30.2.0`` to match
+- Snapshot format changes may cause all snapshot tests to fail on first run (fixable with
+  ``--updateSnapshot``)
+
+
+MEDIUM IMPACT (may cause visual or functional differences)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+**3. echarts 6** — Impact: **MEDIUM** (4 files)
+
+- Used in ``ReactECharts.tsx``, ``RunDurationChart.tsx``, ``Calendar.tsx``,
+  ``AllTaskDuration.tsx``
+- Uses ``init()``, ``setOption()``, ``on()``, ``dispose()`` — core APIs, likely stable
+- Chart rendering defaults may change — visual verification needed
+
+**4. react-router-dom v7** (``^6`` → ``^7``) — Impact: **LOW** despite major bump
+
+- Only 13 files use it, all with basic patterns: ``useSearchParams``, ``BrowserRouter``,
+  ``MemoryRouter``
+- No ``Routes``/``Route`` components, no ``useNavigate``, no ``useParams``, no loaders/actions
+- v7 is largely backward-compatible with v6 patterns for these basic APIs
+- **Verdict:** Likely works without changes
+
+**5. react-markdown 10** (``^8`` → ``^10``) — Impact: **MEDIUM** (1 file)
+
+- ``ReactMarkdown.tsx`` uses ``Components`` type and ``ReactMarkdownOptions`` from
+  ``react-markdown/lib/react-markdown``
+- The internal import path ``react-markdown/lib/react-markdown`` will almost certainly break
+  in v10
+- Plugin API (``remarkPlugins``) and ``components`` prop may have changed
+
+**6. elkjs 0.11** (``^0.7`` → ``^0.11``) — Impact: **LOW-MEDIUM** (4 files)
+
+- Uses ``new ELK()``, ``elk.layout()``, layout options — core API likely stable
+- Layout algorithm changes may render DAG graphs differently — visual verification needed
+
+**7. framer-motion 11** (``^6`` → ``^11``) — Impact: **LOW** (1 file only)
+
+- Only ``Tooltip.tsx`` uses it: ``motion.div``, ``AnimatePresence``, ``variants``,
+  ``initial``/``animate``/``exit``
+- These core APIs survived across versions
+- Should work but worth a visual check on tooltip animations
+
+
+LOW IMPACT
+^^^^^^^^^^
+
+- **color v5** — 2 files, simple ``.hex()`` calls, likely compatible
+- **camelcase-keys v10** — 1 file, uses ``camelcaseKeys(data, { deep, stopPaths })`` — API
+  likely stable but ESM-only since v8
+- **prettier 3** — Will reformat files on ``yarn format`` (trailing commas). Not a runtime issue
+- **swagger-ui-dist 5** — Not imported in source code (served statically). CSS may look different
+- **d3-shape v3** — Not actually used in source code despite being installed
+- **moment-timezone 0.6** — Not directly imported in source code
+- **type-fest v5** — Types only, may cause compilation errors
+
+
+Recommended verification order
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Visual check: echarts charts, DAG graph layouts (elkjs), tooltip animations, swagger API docs page
diff --git a/airflow/www/changes_in_2_11_dependencies.txt b/airflow/www/changes_in_2_11_dependencies.txt
deleted file mode 100644
index 45f280b1cc1..00000000000
--- a/airflow/www/changes_in_2_11_dependencies.txt
+++ /dev/null
@@ -1,86 +0,0 @@
-Here's the full summary of all upgrades that made it into the commit, grouped by risk level:
-
-  HIGH RISK — Major version bumps with known breaking changes
-
-  ┌─────────────────┬─────────┬──────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
-  │     Package     │   Old   │   New    │                                                                                   Breaking Changes                                                                                    │
-  ├─────────────────┼─────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
-  │ jquery          │ >=3.5.0 │ >=4.0.0  │ Dropped IE support, removed deprecated APIs ($.isFunction, $.isArray, $.trim, $.isWindow), removed jQuery.cssNumber, jQuery.type(). .focus()/.blur() no longer trigger native events. │
-  ├─────────────────┼─────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
-  │ framer-motion   │ ^6.0.0  │ ^12.34.3 │ Complete API overhaul across 6 major versions. AnimatePresence exit animations changed, useAnimation → useAnimationControls, layout animation API changed, motion.div prop changes.   │
-  ├─────────────────┼─────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
-  │ echarts         │ ^5.4.2  │ ^6.0.0   │ Breaking API changes in chart options, deprecated configs removed, default themes changed. May silently render charts differently.                                                    │
-  ├─────────────────┼─────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
-  │ d3-shape        │ ^2.1.0  │ ^3.2.0   │ d3.line().curve() defaults changed, some curve types renamed.                                                                                                                         │
-  ├─────────────────┼─────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
-  │ typescript      │ ^4.6.3  │ ^5.9.3   │ enum behavior changes, decorator support changes, moduleResolution defaults changed. May surface new type errors.                                                                     │
-  ├─────────────────┼─────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
-  │ jest            │ ^27.3.1 │ ^30.2.0  │ Complete rewrite. Test globals (expect, describe, it) now imported differently, jest.config.js format changes, timer mocking API changes, snapshot format changed.                    │
-  ├─────────────────┼─────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
-  │ swagger-ui-dist │ 4.1.3   │ 5.31.2   │ CSS class names changed, rendering differences, bundled CSS restructured.                                                                                                             │
-  ├─────────────────┼─────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
-  │ moment-timezone │ ^0.5.43 │ ^0.6.0   │ Timezone data format changed, some edge-case parsing differences.                                                                                                                     │
-  ├─────────────────┼─────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
-  │ elkjs           │ ^0.7.1  │ ^0.11.0  │ Layout algorithm changes — graph layouts may render differently.                                                                                                                      │
-  └─────────────────┴─────────┴──────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
-
-  MEDIUM RISK — Breaking changes less likely to affect this codebase
-
-  ┌───────────────────────────┬─────────┬─────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
-  │          Package          │   Old   │   New   │                                               Breaking Changes                                                │
-  ├───────────────────────────┼─────────┼─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
-  │ @testing-library/jest-dom │ ^5.16.0 │ ^6.9.1  │ Matchers now use @jest/expect instead of jest-jasmine2. Some matchers renamed.                                │
-  ├───────────────────────────┼─────────┼─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
-  │ @testing-library/react    │ ^13.0.0 │ ^16.3.2 │ renderHook now exported from main, cleanup behavior changed, act() wrapping changes.                          │
-  ├───────────────────────────┼─────────┼─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
-  │ @typescript-eslint/*      │ ^5.x    │ ^7.18.0 │ New rules enabled by default, some rules removed/renamed, stricter defaults. May flag new lint errors.        │
-  ├───────────────────────────┼─────────┼─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
-  │ prettier                  │ ^2.8.4  │ ^3.8.1  │ Trailing commas now default to all, different formatting for various constructs. Will change code formatting. │
-  ├───────────────────────────┼─────────┼─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
-  │ openapi-typescript        │ ^5.4.1  │ ^7.13.0 │ Generated types may have different structure. generate-api-types script output may change.                    │
-  ├───────────────────────────┼─────────┼─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
-  │ webpack-cli               │ ^4.0.0  │ ^6.0.1  │ CLI argument changes, config resolution changes.                                                              │
-  ├───────────────────────────┼─────────┼─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
-  │ react-syntax-highlighter  │ ^15.5.0 │ ^16.1.0 │ Theme/style import paths may have changed.                                                                    │
-  ├───────────────────────────┼─────────┼─────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
-  │ @chakra-ui/react          │ 2.4.2   │ 2.4.2   │ Not upgraded (kept at base) — but note the pinned chakra-react-select@4.0.3 is fragile.                       │
-  └───────────────────────────┴─────────┴─────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
-
-  LOW RISK — Minor/patch-level or backwards-compatible changes
-
-  ┌───────────────────────┬──────────────┬────────────┬────────────────────────────────────────┐
-  │        Package        │     Old      │    New     │                 Notes                  │
-  ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
-  │ @babel/*              │ ^7.24.x      │ ^7.28-29.x │ Minor bumps, backwards compatible      │
-  ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
-  │ axios                 │ ^1.6.0       │ ^1.13.5    │ Minor within v1, backwards compatible  │
-  ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
-  │ @emotion/*            │ ^11.9.x      │ ^11.14.x   │ Minor within v11                       │
-  ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
-  │ @tanstack/react-table │ ^8.13.2      │ ^8.21.3    │ Minor within v8                        │
-  ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
-  │ react / react-dom     │ ^18.0.0      │ ^18.3.1    │ Minor within v18, backwards compatible │
-  ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
-  │ react-query           │ ^3.39.1      │ ^3.39.3    │ Patch bump                             │
-  ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
-  │ react-router-dom      │ ^6.3.0       │ ^6.30.3    │ Minor within v6, backwards compatible  │
-  ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
-  │ reactflow             │ ^11.7.4      │ ^11.11.4   │ Minor within v11                       │
-  ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
-  │ lodash                │ ^4.17.21     │ ^4.17.23   │ Patch bump                             │
-  ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
-  │ webpack               │ ^5.94.0      │ ^5.105.2   │ Minor within v5                        │
-  ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
-  │ redoc                 │ ^2.0.0-rc.72 │ ^2.5.2     │ Now a stable release instead of RC     │
-  ├───────────────────────┼──────────────┼────────────┼────────────────────────────────────────┤
-  │ validator             │ ^13.9.0      │ ^13.15.26  │ Minor within v13                       │
-  └───────────────────────┴──────────────┴────────────┴────────────────────────────────────────┘
-
-  Key areas to manually verify
-
-  1. jQuery 4 — Any legacy JS templates using deprecated jQuery APIs ($.isFunction, $.trim, etc.) will break silently
-  2. framer-motion 12 — All animation components should be visually checked; the API changed significantly across 6 major versions
-  3. echarts 6 — All charts should be visually verified; rendering defaults changed
-  4. swagger-ui-dist 5 — The API docs page styling may look different
-  5. prettier 3 — Running yarn format will reformat many files (trailing commas, etc.)
-  6. jest 30 — The test config (jest.config.js, babel.config.js) may need updates if CI reveals issues beyond what we've fixed
diff --git a/airflow/www/eslint.config.mjs b/airflow/www/eslint.config.mjs
new file mode 100644
index 00000000000..59d788781c2
--- /dev/null
+++ b/airflow/www/eslint.config.mjs
@@ -0,0 +1,154 @@
+/*!
+ * 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.
+ */
+
+import { FlatCompat } from "@eslint/eslintrc";
+import path from "node:path";
+import { fileURLToPath } from "node:url";
+import globals from "globals";
+
+const compat = new FlatCompat({
+  baseDirectory: path.dirname(fileURLToPath(import.meta.url)),
+});
+
+export default [
+  {
+    ignores: [
+      "**/*{.,-}min.js",
+      "**/*.sh",
+      "**/*.py",
+      "jqClock.min.js",
+      "coverage/**",
+      "static/dist/**",
+      "static/docs/**",
+    ],
+  },
+  ...compat.config({
+    extends: ["airbnb", "airbnb/hooks", "prettier"],
+    parser: "@babel/eslint-parser",
+    parserOptions: {
+      babelOptions: {
+        presets: [
+          "@babel/preset-env",
+          "@babel/preset-react",
+          "@babel/preset-typescript",
+        ],
+        plugins: ["@babel/plugin-transform-runtime"],
+      },
+    },
+    plugins: ["html", "react"],
+    rules: {
+      "no-param-reassign": 1,
+      "react/prop-types": 0,
+      "react/jsx-props-no-spreading": 0,
+      "no-unused-vars": [
+        "error",
+        {
+          vars: "all",
+          args: "after-used",
+          argsIgnorePattern: "^_",
+          caughtErrorsIgnorePattern: "^_",
+          ignoreRestSiblings: true,
+        },
+      ],
+      "import/extensions": [
+        "error",
+        "ignorePackages",
+        {
+          js: "never",
+          jsx: "never",
+          ts: "never",
+          tsx: "never",
+        },
+      ],
+      "import/no-extraneous-dependencies": [
+        "error",
+        {
+          devDependencies: true,
+          optionalDependencies: false,
+          peerDependencies: false,
+        },
+      ],
+      "react/function-component-definition": [
+        0,
+        {
+          namedComponents: "function-declaration",
+        },
+      ],
+    },
+    settings: {
+      "import/resolver": {
+        typescript: {
+          project: "./tsconfig.json",
+        },
+        node: {
+          extensions: [".js", ".jsx", ".ts", ".tsx"],
+        },
+      },
+    },
+    overrides: [
+      {
+        files: ["*.ts", "*.tsx"],
+        parser: "@typescript-eslint/parser",
+        plugins: ["@typescript-eslint"],
+        parserOptions: {
+          project: "./tsconfig.json",
+        },
+        extends: ["prettier"],
+        rules: {
+          "react/require-default-props": 0,
+          "@typescript-eslint/no-explicit-any": 1,
+          // Allow JSX in .tsx files
+          "react/jsx-filename-extension": [
+            "error",
+            { extensions: [".jsx", ".tsx"] },
+          ],
+          // TypeScript handles these natively
+          "no-undef": "off",
+          "no-unused-vars": "off",
+          "@typescript-eslint/no-unused-vars": [
+            "error",
+            {
+              vars: "all",
+              args: "after-used",
+              argsIgnorePattern: "^_",
+              caughtErrorsIgnorePattern: "^_",
+              ignoreRestSiblings: true,
+            },
+          ],
+          "no-shadow": "off",
+          "@typescript-eslint/no-shadow": "error",
+          "no-use-before-define": "off",
+          "@typescript-eslint/no-use-before-define": "error",
+          "no-redeclare": "off",
+          "@typescript-eslint/no-redeclare": "error",
+        },
+      },
+    ],
+  }),
+  // Environment globals for specific files
+  {
+    files: ["jest-globals-setup.js", "jest-setup.js", "jest.config.js"],
+    languageOptions: {
+      globals: {
+        ...globals.node,
+        globalThis: "readonly",
+      },
+    },
+  },
+];
diff --git a/airflow/www/jest-globals-setup.js b/airflow/www/jest-globals-setup.js
new file mode 100644
index 00000000000..e24035ade93
--- /dev/null
+++ b/airflow/www/jest-globals-setup.js
@@ -0,0 +1,62 @@
+/*!
+ * 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.
+ */
+
+const { TextEncoder, TextDecoder } = require("util");
+
+if (typeof globalThis.TextEncoder === "undefined") {
+  globalThis.TextEncoder = TextEncoder;
+}
+if (typeof globalThis.TextDecoder === "undefined") {
+  globalThis.TextDecoder = TextDecoder;
+}
+
+// Mock window.matchMedia for Chakra UI's useMediaQuery
+if (typeof globalThis.window !== "undefined" && !globalThis.window.matchMedia) {
+  // eslint-disable-next-line func-names
+  globalThis.window.matchMedia = function (query) {
+    return {
+      matches: false,
+      media: query,
+      onchange: null,
+      addListener() {},
+      removeListener() {},
+      addEventListener() {},
+      removeEventListener() {},
+      dispatchEvent() {
+        return false;
+      },
+    };
+  };
+}
+
+// Unwrap React 19 AggregateError for readable test failure messages
+const OrigAggregateError = globalThis.AggregateError;
+if (OrigAggregateError) {
+  const patchedAE = function AggregateError(errors, message) {
+    const ae = new OrigAggregateError(errors, message);
+    if (errors && errors.length > 0) {
+      ae.message = `${message || "AggregateError"}\n  Caused by:\n${errors
+        .map((e) => `  - ${e.stack || e.message || e}`)
+        .join("\n")}`;
+    }
+    return ae;
+  };
+  patchedAE.prototype = OrigAggregateError.prototype;
+  globalThis.AggregateError = patchedAE;
+}
diff --git a/airflow/www/jest-setup.js b/airflow/www/jest-setup.js
index ecf79db5cb1..28d60495622 100644
--- a/airflow/www/jest-setup.js
+++ b/airflow/www/jest-setup.js
@@ -1,5 +1,5 @@
 // We need this lint rule for now because these are only dev-dependencies
-/* eslint-disable import/no-extraneous-dependencies */
+
 /*!
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -24,10 +24,9 @@ import axios from "axios";
 import { setLogger } from "react-query";
 import "jest-canvas-mock";
 
-// eslint-disable-next-line import/no-extraneous-dependencies
 import moment from "moment-timezone";
 
-axios.defaults.adapter = require("axios/lib/adapters/http");
+axios.defaults.adapter = "http";
 
 axios.interceptors.response.use((res) => res.data || res);
 
diff --git a/airflow/www/jest.config.js b/airflow/www/jest.config.js
index 333a061268c..8097ddf3f0a 100644
--- a/airflow/www/jest.config.js
+++ b/airflow/www/jest.config.js
@@ -23,6 +23,7 @@ const config = {
     "^.+\\.[jt]sx?$": "babel-jest",
   },
   testEnvironment: "jsdom",
+  setupFiles: ["./jest-globals-setup.js"],
   setupFilesAfterEnv: ["./jest-setup.js"],
   moduleDirectories: ["node_modules"],
   moduleNameMapper: {
@@ -30,34 +31,8 @@ const config = {
     "^src/(.*)$": "<rootDir>/static/js/$1",
   },
   transformIgnorePatterns: [
-    `node_modules/(?!${[
-      // specify modules that needs to be transformed for jest. (esm modules)
-      "ansi_up",
-      "axios",
-      "bail",
-      "ccount",
-      "character-entities",
-      "comma-separated-tokens",
-      "decode-named-character-reference",
-      "escape-string-regexp",
-      "hast",
-      "is-plain-obj",
-      "markdown-table",
-      "mdast",
-      "micromark",
-      "property-information",
-      "react-markdown",
-      "remark-gfm",
-      "remark-parse",
-      "remark-rehype",
-      "space-separated-tokens",
-      "trim-lines",
-      "trough",
-      "unified",
-      "unist",
-      "vfile",
-      "vfile-message",
-    ].join("|")})`,
+    // Many dependencies are ESM-only, so we transform all node_modules via babel-jest.
+    "/node_modules/.cache/",
   ],
 };
 
diff --git a/airflow/www/package.json b/airflow/www/package.json
index 1a33b804869..2cfcae5ae39 100644
--- a/airflow/www/package.json
+++ b/airflow/www/package.json
@@ -7,8 +7,8 @@
     "dev": "NODE_ENV=development webpack --watch --progress --devtool eval-cheap-source-map --mode development",
     "prod": "NODE_ENV=production node --max_old_space_size=4096 ./node_modules/webpack/bin/webpack.js --mode production --progress",
     "build": "NODE_ENV=production webpack --progress --mode production",
-    "lint": "eslint --ignore-path=.eslintignore --max-warnings=0 --ext .js,.jsx,.ts,.tsx .",
-    "lint:fix": "eslint --fix --ignore-path=.eslintignore --ext .js,.jsx,.ts,.tsx .",
+    "lint": "eslint --max-warnings=0 .",
+    "lint:fix": "eslint --fix .",
     "format": "yarn prettier --write .",
     "generate-api-types": "npx openapi-typescript \"../api_connexion/openapi/v1.yaml\" --output static/js/types/api-generated.ts && node alias-rest-types.js static/js/types/api-generated.ts"
   },
@@ -48,58 +48,62 @@
     "@babel/preset-env": "^7.24.7",
     "@babel/preset-react": "^7.24.7",
     "@babel/preset-typescript": "^7.24.7",
-    "@testing-library/jest-dom": "^5.16.0",
-    "@testing-library/react": "^13.0.0",
-    "@types/color": "^3.0.3",
+    "@eslint/eslintrc": "^3.3.1",
+    "@testing-library/dom": "^10.0.0",
+    "@testing-library/jest-dom": "^6.9.1",
+    "@testing-library/react": "^16.3.2",
+    "@types/color": "^4.2.0",
     "@types/json-to-pretty-yaml": "^1.2.1",
-    "@types/react": "^18.0.12",
-    "@types/react-dom": "^18.0.5",
+    "@types/react": "^19.2.14",
+    "@types/react-dom": "^19.2.3",
     "@types/react-syntax-highlighter": "^15.5.6",
     "@types/react-table": "^7.7.12",
-    "@typescript-eslint/eslint-plugin": "^5.13.0",
-    "@typescript-eslint/parser": "^5.0.0",
-    "babel-jest": "^27.3.1",
-    "babel-loader": "^9.1.0",
-    "clean-webpack-plugin": "^3.0.0",
-    "copy-webpack-plugin": "^6.0.3",
-    "css-loader": "5.2.7",
-    "css-minimizer-webpack-plugin": "^4.0.0",
-    "eslint": "^8.6.0",
+    "@typescript-eslint/eslint-plugin": "^8.56.1",
+    "@typescript-eslint/parser": "^8.56.1",
+    "babel-jest": "^30.2.0",
+    "babel-loader": "^10.0.0",
+    "clean-webpack-plugin": "^4.0.0",
+    "copy-webpack-plugin": "^14.0.0",
+    "css-loader": "7.1.4",
+    "css-minimizer-webpack-plugin": "^8.0.0",
+    "eslint": "^9.27.0",
     "eslint-config-airbnb": "^19.0.4",
-    "eslint-config-airbnb-typescript": "^17.0.0",
-    "eslint-config-prettier": "^8.6.0",
-    "eslint-plugin-html": "^6.0.2",
+    "eslint-config-airbnb-typescript": "^18.0.0",
+    "eslint-config-prettier": "^10.1.8",
+    "eslint-import-resolver-typescript": "^4.4.3",
+    "eslint-plugin-html": "^8.1.4",
     "eslint-plugin-import": "^2.27.5",
     "eslint-plugin-jsx-a11y": "^6.5.0",
     "eslint-plugin-node": "^11.1.0",
-    "eslint-plugin-promise": "^4.2.1",
+    "eslint-plugin-promise": "^7.2.1",
     "eslint-plugin-react": "^7.30.0",
-    "eslint-plugin-react-hooks": "^4.5.0",
-    "eslint-plugin-standard": "^4.0.1",
+    "eslint-plugin-react-hooks": "^7.0.1",
+    "eslint-plugin-standard": "^5.0.0",
     "file-loader": "^6.0.0",
-    "imports-loader": "^1.1.0",
-    "jest": "^27.3.1",
+    "globals": "^17.4.0",
+    "imports-loader": "^5.0.0",
+    "jest": "^30.2.0",
     "jest-canvas-mock": "^2.5.1",
-    "mini-css-extract-plugin": "^1.6.2",
+    "jest-environment-jsdom": "^30.2.0",
+    "mini-css-extract-plugin": "^2.10.0",
     "moment": "^2.29.4",
     "moment-locales-webpack-plugin": "^1.2.0",
-    "openapi-typescript": "^5.4.1",
-    "prettier": "^2.8.4",
-    "style-loader": "^1.2.1",
-    "stylelint": "^15.10.1",
-    "stylelint-config-prettier": "^9.0.5",
-    "stylelint-config-standard": "^20.0.0",
-    "terser-webpack-plugin": "<5.0.0",
-    "typescript": "^4.6.3",
-    "url-loader": "4.1.0",
+    "openapi-typescript": "^7.13.0",
+    "prettier": "^3.8.1",
+    "style-loader": "^4.0.0",
+    "stylelint": "^17.4.0",
+    "stylelint-config-standard": "^40.0.0",
+    "terser-webpack-plugin": "<6.0.0",
+    "typescript": "^5.9.3",
+    "url-loader": "4.1.1",
     "web-worker": "^1.2.0",
-    "webpack": "^5.94.0",
-    "webpack-cli": "^4.0.0",
+    "webpack": "^5.105.4",
+    "webpack-cli": "^6.0.1",
     "webpack-license-plugin": "^4.2.1",
-    "webpack-manifest-plugin": "^4.0.0"
+    "webpack-manifest-plugin": "^6.0.1"
   },
   "dependencies": {
-    "@chakra-ui/react": "2.4.2",
+    "@chakra-ui/react": "2.10.9",
     "@emotion/cache": "^11.9.3",
     "@emotion/react": "^11.9.3",
     "@emotion/styled": "^11",
@@ -107,42 +111,42 @@
     "@visx/group": "^2.10.0",
     "@visx/shape": "^2.12.2",
     "ansi_up": "^6.0.2",
-    "axios": "^1.6.0",
+    "axios": "^1.13.6",
     "bootstrap-3-typeahead": "^4.0.2",
-    "camelcase-keys": "^7.0.0",
+    "camelcase-keys": "^10.0.2",
     "chakra-react-select": "^4.0.0",
     "codemirror": "^5.59.1",
-    "color": "^4.2.3",
+    "color": "^5.0.3",
     "d3": "^3.4.4",
     "d3-selection": "^3.0.0",
-    "d3-shape": "^2.1.0",
+    "d3-shape": "^3.2.0",
     "d3-tip": "^0.9.1",
     "dagre-d3": "^0.6.4",
-    "echarts": "^5.4.2",
-    "elkjs": "^0.7.1",
+    "echarts": "^6.0.0",
+    "elkjs": "^0.11.1",
     "eonasdan-bootstrap-datetimepicker": "^4.17.47",
-    "framer-motion": "^6.0.0",
+    "framer-motion": "^11.18.2",
     "jquery": ">=3.5.0",
     "jshint": "^2.13.4",
     "json-to-pretty-yaml": "^1.2.2",
     "lodash": "^4.17.21",
-    "moment-timezone": "^0.5.43",
-    "react": "^18.0.0",
-    "react-dom": "^18.0.0",
-    "react-icons": "^5.2.1",
+    "moment-timezone": "^0.6.0",
+    "react": "^19.2.4",
+    "react-dom": "^19.2.4",
+    "react-icons": "^5.6.0",
     "react-json-view": "^1.21.3",
-    "react-markdown": "^8.0.4",
+    "react-markdown": "^10.1.0",
     "react-query": "^3.39.1",
-    "react-router-dom": "^6.3.0",
-    "react-syntax-highlighter": "^15.5.0",
+    "react-router-dom": "^7.13.1",
+    "react-syntax-highlighter": "^16.1.1",
     "react-table": "^7.8.0",
     "react-textarea-autosize": "^8.3.4",
     "reactflow": "^11.7.4",
     "redoc": "^2.0.0-rc.72",
-    "remark-gfm": "^3.0.1",
-    "swagger-ui-dist": "4.1.3",
-    "tsconfig-paths": "^3.14.2",
-    "type-fest": "^2.17.0",
+    "remark-gfm": "^4.0.1",
+    "swagger-ui-dist": "5.32.0",
+    "tsconfig-paths": "^4.2.0",
+    "type-fest": "^5.4.4",
     "url-search-params-polyfill": "^8.1.0",
     "validator": "^13.9.0"
   },
diff --git a/airflow/www/static/css/bootstrap-theme.css b/airflow/www/static/css/bootstrap-theme.css
index 94e1ee58877..73caa181b05 100644
--- a/airflow/www/static/css/bootstrap-theme.css
+++ b/airflow/www/static/css/bootstrap-theme.css
@@ -1887,17 +1887,24 @@ output {
   border-radius: 4px;
   -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
   box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -webkit-transition: border-color ease-in-out 0.15s,
+  -webkit-transition:
+    border-color ease-in-out 0.15s,
+    box-shadow ease-in-out 0.15s;
+  -o-transition:
+    border-color ease-in-out 0.15s,
+    box-shadow ease-in-out 0.15s;
+  transition:
+    border-color ease-in-out 0.15s,
     box-shadow ease-in-out 0.15s;
-  -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
-  transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
 }
 .form-control:focus {
   border-color: #66afe9;
   outline: 0;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075),
+  -webkit-box-shadow:
+    inset 0 1px 1px rgba(0, 0, 0, 0.075),
     0 0 8px rgba(102, 175, 233, 0.6);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075),
+  box-shadow:
+    inset 0 1px 1px rgba(0, 0, 0, 0.075),
     0 0 8px rgba(102, 175, 233, 0.6);
 }
 .form-control::-moz-placeholder {
@@ -2123,8 +2130,12 @@ select[multiple].form-group-lg .form-control {
 }
 .has-success .form-control:focus {
   border-color: #366f4c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
+  -webkit-box-shadow:
+    inset 0 1px 1px rgba(0, 0, 0, 0.075),
+    0 0 6px #67b168;
+  box-shadow:
+    inset 0 1px 1px rgba(0, 0, 0, 0.075),
+    0 0 6px #67b168;
 }
 .has-success .input-group-addon {
   color: #1b8e49;
@@ -2153,8 +2164,12 @@ select[multiple].form-group-lg .form-control {
 }
 .has-warning .form-control:focus {
   border-color: #66512c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
+  -webkit-box-shadow:
+    inset 0 1px 1px rgba(0, 0, 0, 0.075),
+    0 0 6px #c0a16b;
+  box-shadow:
+    inset 0 1px 1px rgba(0, 0, 0, 0.075),
+    0 0 6px #c0a16b;
 }
 .has-warning .input-group-addon {
   color: #8a6d3b;
@@ -2183,8 +2198,12 @@ select[multiple].form-group-lg .form-control {
 }
 .has-error .form-control:focus {
   border-color: #843534;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
+  -webkit-box-shadow:
+    inset 0 1px 1px rgba(0, 0, 0, 0.075),
+    0 0 6px #ce8483;
+  box-shadow:
+    inset 0 1px 1px rgba(0, 0, 0, 0.075),
+    0 0 6px #ce8483;
 }
 .has-error .input-group-addon {
   color: #e43921;
@@ -3637,9 +3656,11 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
   padding: 10px 15px;
   border-top: 1px solid transparent;
   border-bottom: 1px solid transparent;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1),
+  -webkit-box-shadow:
+    inset 0 1px 0 rgba(255, 255, 255, 0.1),
     0 1px 0 rgba(255, 255, 255, 0.1);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1),
+  box-shadow:
+    inset 0 1px 0 rgba(255, 255, 255, 0.1),
     0 1px 0 rgba(255, 255, 255, 0.1);
   margin-top: 8px;
   margin-bottom: 8px;
diff --git a/airflow/www/static/css/chart.css b/airflow/www/static/css/chart.css
index b7968d55ca3..9fc68c9255d 100644
--- a/airflow/www/static/css/chart.css
+++ b/airflow/www/static/css/chart.css
@@ -43,7 +43,6 @@ rect.state {
 
 .tooltip.in {
   opacity: 1;
-  filter: alpha(opacity=100);
 }
 
 .axis path,
diff --git a/airflow/www/static/css/graph.css b/airflow/www/static/css/graph.css
index f175a7e025d..beb00b1f44d 100644
--- a/airflow/www/static/css/graph.css
+++ b/airflow/www/static/css/graph.css
@@ -25,7 +25,9 @@ svg {
   stroke: #51504f;
   stroke-width: 1px;
   fill: #fff;
-  transition: stroke 0.2s ease-in-out, opacity 0.2s ease-in-out;
+  transition:
+    stroke 0.2s ease-in-out,
+    opacity 0.2s ease-in-out;
 }
 
 .node rect[data-highlight="highlight"] {
@@ -53,7 +55,9 @@ svg {
   stroke: #51504f;
   stroke-width: 1px;
   fill: none;
-  transition: stroke 0.2s ease-in-out, opacity 0.2s ease-in-out;
+  transition:
+    stroke 0.2s ease-in-out,
+    opacity 0.2s ease-in-out;
 }
 
 .edgePath[data-highlight="fade"],
@@ -70,7 +74,9 @@ svg {
   stroke: none !important;
   fill: #51504f;
   stroke-width: 0 !important;
-  transition: fill 0.2s ease-in-out, opacity 0.2s ease-in-out;
+  transition:
+    fill 0.2s ease-in-out,
+    opacity 0.2s ease-in-out;
 }
 
 .edgePath[data-highlight="highlight"] .arrowhead {
diff --git a/airflow/www/static/js/api/useClearRun.ts b/airflow/www/static/js/api/useClearRun.ts
index 8835b3caec3..fabbcc5b16d 100644
--- a/airflow/www/static/js/api/useClearRun.ts
+++ b/airflow/www/static/js/api/useClearRun.ts
@@ -36,6 +36,7 @@ export default function useClearRun(dagId: string, runId: string) {
     ["dagRunClear", dagId, runId],
     ({
       confirmed = false,
+      // eslint-disable-next-line camelcase
       only_failed = false,
     }: {
       confirmed: boolean;
@@ -44,6 +45,7 @@ export default function useClearRun(dagId: string, runId: string) {
       const params = new URLSearchParamsWrapper({
         csrf_token: csrfToken,
         confirmed,
+        // eslint-disable-next-line camelcase
         only_failed,
         dag_id: dagId,
         dag_run_id: runId,
@@ -63,6 +65,6 @@ export default function useClearRun(dagId: string, runId: string) {
         }
       },
       onError: (error: Error) => errorToast({ error }),
-    }
+    },
   );
 }
diff --git a/airflow/www/static/js/api/useClearTask.ts b/airflow/www/static/js/api/useClearTask.ts
index b4f80e5a7bf..e7f663d9ee0 100644
--- a/airflow/www/static/js/api/useClearTask.ts
+++ b/airflow/www/static/js/api/useClearTask.ts
@@ -112,6 +112,6 @@ export default function useClearTask({
       onError: (error: Error, { confirmed }) => {
         if (confirmed) errorToast({ error });
       },
-    }
+    },
   );
 }
diff --git a/airflow/www/static/js/api/useClearTaskDryRun.ts b/airflow/www/static/js/api/useClearTaskDryRun.ts
index 33986a9b486..570aff2b00f 100644
--- a/airflow/www/static/js/api/useClearTaskDryRun.ts
+++ b/airflow/www/static/js/api/useClearTaskDryRun.ts
@@ -101,10 +101,10 @@ const useClearTaskDryRun = ({
           headers: {
             "Content-Type": "application/x-www-form-urlencoded",
           },
-        }
+        },
       );
     },
-    { enabled }
+    { enabled },
   );
 
 export default useClearTaskDryRun;
diff --git a/airflow/www/static/js/api/useCreateDatasetEvent.ts b/airflow/www/static/js/api/useCreateDatasetEvent.ts
index f14b35ee375..feb206b3997 100644
--- a/airflow/www/static/js/api/useCreateDatasetEvent.ts
+++ b/airflow/www/static/js/api/useCreateDatasetEvent.ts
@@ -43,13 +43,13 @@ export default function useCreateDatasetEvent({ datasetId, uri }: Props) {
         {
           dataset_uri: uri,
           extra: extra || {},
-        }
+        },
       ),
     {
       onSuccess: () => {
         queryClient.invalidateQueries(["datasets-events", datasetId]);
       },
       onError: (error: Error) => errorToast({ error }),
-    }
+    },
   );
 }
diff --git a/airflow/www/static/js/api/useDagCode.ts b/airflow/www/static/js/api/useDagCode.ts
index c6856cd7433..c6f562af182 100644
--- a/airflow/www/static/js/api/useDagCode.ts
+++ b/airflow/www/static/js/api/useDagCode.ts
@@ -32,7 +32,7 @@ export default function useDagCode() {
       const fileToken = dagData?.fileToken || "";
       const dagSourceApiUrl = getMetaValue("dag_source_api").replace(
         "_FILE_TOKEN_",
-        fileToken
+        fileToken,
       );
       return axios.get<AxiosResponse, string>(dagSourceApiUrl, {
         headers: { Accept: "text/plain" },
@@ -40,6 +40,6 @@ export default function useDagCode() {
     },
     {
       enabled: !!dagData?.fileToken,
-    }
+    },
   );
 }
diff --git a/airflow/www/static/js/api/useDagDetails.ts b/airflow/www/static/js/api/useDagDetails.ts
index 16c8e4397ce..57b6ff2cd92 100644
--- a/airflow/www/static/js/api/useDagDetails.ts
+++ b/airflow/www/static/js/api/useDagDetails.ts
@@ -29,7 +29,7 @@ const dagDetailsApiUrl = getMetaValue("dag_details_api");
 
 const combineResults = (
   dagData: DAG,
-  dagDetailsData: DAGDetail
+  dagDetailsData: DAGDetail,
 ): Omit<DAGDetail, "defaultView"> => ({ ...dagData, ...dagDetailsData });
 
 const useDagDetails = () => {
@@ -39,13 +39,13 @@ const useDagDetails = () => {
     () => axios.get<AxiosResponse, API.DAGDetail>(dagDetailsApiUrl),
     {
       enabled: !!dagData,
-    }
+    },
   );
   return {
     ...dagDetailsResult,
     data: combineResults(
       dagData || {},
-      dagDetailsResult.data ? dagDetailsResult.data : {}
+      dagDetailsResult.data ? dagDetailsResult.data : {},
     ),
   };
 };
diff --git a/airflow/www/static/js/api/useDagRuns.tsx b/airflow/www/static/js/api/useDagRuns.tsx
index 5bc1a437488..5af0ecaf53a 100644
--- a/airflow/www/static/js/api/useDagRuns.tsx
+++ b/airflow/www/static/js/api/useDagRuns.tsx
@@ -43,7 +43,7 @@ const useDagRuns = ({
       }),
     {
       refetchInterval: (autoRefreshInterval || 1) * 1000,
-    }
+    },
   );
 };
 
diff --git a/airflow/www/static/js/api/useDags.tsx b/airflow/www/static/js/api/useDags.tsx
index 8939da21d96..3052bfa0c69 100644
--- a/airflow/www/static/js/api/useDags.tsx
+++ b/airflow/www/static/js/api/useDags.tsx
@@ -34,7 +34,7 @@ const useDags = ({ paused }: API.GetDagsVariables) =>
       }),
     {
       refetchInterval: (autoRefreshInterval || 1) * 1000,
-    }
+    },
   );
 
 export default useDags;
diff --git a/airflow/www/static/js/api/useDataset.ts b/airflow/www/static/js/api/useDataset.ts
index 4793464fac3..146ed7d6ed5 100644
--- a/airflow/www/static/js/api/useDataset.ts
+++ b/airflow/www/static/js/api/useDataset.ts
@@ -31,7 +31,7 @@ export default function useDataset({ uri }: Props) {
   return useQuery(["dataset", uri], () => {
     const datasetUrl = getMetaValue("dataset_api").replace(
       "__URI__",
-      encodeURIComponent(uri)
+      encodeURIComponent(uri),
     );
     return axios.get<AxiosResponse, API.Dataset>(datasetUrl);
   });
diff --git a/airflow/www/static/js/api/useDatasetEvents.ts b/airflow/www/static/js/api/useDatasetEvents.ts
index 30e4670a87d..03dd0183ef8 100644
--- a/airflow/www/static/js/api/useDatasetEvents.ts
+++ b/airflow/www/static/js/api/useDatasetEvents.ts
@@ -76,7 +76,7 @@ const useDatasetEvents = ({
     {
       keepPreviousData: true,
       ...options,
-    }
+    },
   );
   return {
     ...query,
diff --git a/airflow/www/static/js/api/useDatasets.ts b/airflow/www/static/js/api/useDatasets.ts
index db46415062c..8a0a5de17fe 100644
--- a/airflow/www/static/js/api/useDatasets.ts
+++ b/airflow/www/static/js/api/useDatasets.ts
@@ -44,6 +44,6 @@ export default function useDatasets({ dagIds, enabled = true }: Props) {
     },
     {
       enabled,
-    }
+    },
   );
 }
diff --git a/airflow/www/static/js/api/useDatasetsSummary.ts b/airflow/www/static/js/api/useDatasetsSummary.ts
index 6f902946f62..8c90bf5f24c 100644
--- a/airflow/www/static/js/api/useDatasetsSummary.ts
+++ b/airflow/www/static/js/api/useDatasetsSummary.ts
@@ -76,7 +76,7 @@ export default function useDatasetsSummary({
     },
     {
       keepPreviousData: true,
-    }
+    },
   );
   return {
     ...query,
diff --git a/airflow/www/static/js/api/useEventLogs.tsx b/airflow/www/static/js/api/useEventLogs.tsx
index 4b5cc92ce59..f7d231d8d2c 100644
--- a/airflow/www/static/js/api/useEventLogs.tsx
+++ b/airflow/www/static/js/api/useEventLogs.tsx
@@ -80,6 +80,6 @@ export default function useEventLogs({
     {
       refetchInterval: isRefreshOn && (autoRefreshInterval || 1) * 1000,
       keepPreviousData: true,
-    }
+    },
   );
 }
diff --git a/airflow/www/static/js/api/useExtraLinks.ts b/airflow/www/static/js/api/useExtraLinks.ts
index e4140d7d4c8..0a861925997 100644
--- a/airflow/www/static/js/api/useExtraLinks.ts
+++ b/airflow/www/static/js/api/useExtraLinks.ts
@@ -52,13 +52,13 @@ export default function useExtraLinks({
           const tryNumberParam =
             tryNumber !== undefined ? `&try_number=${tryNumber}` : "";
           const url = `${extraLinksUrl}?task_id=${encodeURIComponent(
-            taskId
+            taskId,
           )}&dag_id=${encodeURIComponent(
-            dagId
+            dagId,
           )}&execution_date=${encodeURIComponent(
-            executionDate
+            executionDate,
           )}&link_name=${encodeURIComponent(
-            link
+            link,
           )}&map_index=${definedMapIndex}${tryNumberParam}`;
           try {
             const datum = await axios.get<AxiosResponse, LinkData>(url);
@@ -74,9 +74,9 @@ export default function useExtraLinks({
               url: "",
             };
           }
-        })
+        }),
       );
       return data;
-    }
+    },
   );
 }
diff --git a/airflow/www/static/js/api/useGraphData.ts b/airflow/www/static/js/api/useGraphData.ts
index e7a94156ef2..82f747c098b 100644
--- a/airflow/www/static/js/api/useGraphData.ts
+++ b/airflow/www/static/js/api/useGraphData.ts
@@ -54,7 +54,7 @@ const useGraphData = () => {
         [FILTER_DOWNSTREAM_PARAM]: filterDownstream,
       };
       return axios.get<AxiosResponse, GraphData>(graphDataUrl, { params });
-    }
+    },
   );
 };
 
diff --git a/airflow/www/static/js/api/useGridData.ts b/airflow/www/static/js/api/useGridData.ts
index 6bed9dfd71c..16f88ed8cf7 100644
--- a/airflow/www/static/js/api/useGridData.ts
+++ b/airflow/www/static/js/api/useGridData.ts
@@ -122,13 +122,13 @@ const useGridData = () => {
         // If the run id cannot be found in the response, try fetching it to see if its real and then adjust the base date filter
         try {
           const selectedRun = await axios.get<AxiosResponse, API.DAGRun>(
-            dagRunUrl
+            dagRunUrl,
           );
           if (selectedRun?.executionDate) {
             onBaseDateChange(selectedRun.executionDate);
           }
           // otherwise the run_id isn't valid and we should unselect it
-        } catch (e) {
+        } catch (_e) {
           onSelect({ taskId });
         }
       }
@@ -160,7 +160,7 @@ const useGridData = () => {
         throw error;
       },
       select: formatOrdering,
-    }
+    },
   );
   return {
     ...query,
diff --git a/airflow/www/static/js/api/useHealth.ts b/airflow/www/static/js/api/useHealth.ts
index ab86698507c..d34de9ea005 100644
--- a/airflow/www/static/js/api/useHealth.ts
+++ b/airflow/www/static/js/api/useHealth.ts
@@ -31,7 +31,7 @@ const useHealth = () =>
     async () => axios.get<AxiosResponse, API.HealthInfo>(healthUrl),
     {
       refetchInterval: (autoRefreshInterval || 1) * 1000,
-    }
+    },
   );
 
 export default useHealth;
diff --git a/airflow/www/static/js/api/useHistoricalMetricsData.ts b/airflow/www/static/js/api/useHistoricalMetricsData.ts
index d14ce13fb69..1a0dfefa8c3 100644
--- a/airflow/www/static/js/api/useHistoricalMetricsData.ts
+++ b/airflow/www/static/js/api/useHistoricalMetricsData.ts
@@ -34,7 +34,7 @@ const useHistoricalMetricsData = (startDate: string, endDate: string) =>
       }),
     {
       refetchInterval: (autoRefreshInterval || 1) * 1000,
-    }
+    },
   );
 
 export default useHistoricalMetricsData;
diff --git a/airflow/www/static/js/api/useMappedInstances.ts b/airflow/www/static/js/api/useMappedInstances.ts
index 0d76e70305c..bdb268f9dba 100644
--- a/airflow/www/static/js/api/useMappedInstances.ts
+++ b/airflow/www/static/js/api/useMappedInstances.ts
@@ -51,6 +51,6 @@ export default function useMappedInstances({
       refetchInterval: isRefreshOn && (autoRefreshInterval || 1) * 1000,
       // staleTime should be similar to the refresh interval
       staleTime: (autoRefreshInterval || 1) * 1000,
-    }
+    },
   );
 }
diff --git a/airflow/www/static/js/api/useMarkFailedRun.ts b/airflow/www/static/js/api/useMarkFailedRun.ts
index 11a94e4264d..c071bee6ffc 100644
--- a/airflow/www/static/js/api/useMarkFailedRun.ts
+++ b/airflow/www/static/js/api/useMarkFailedRun.ts
@@ -56,6 +56,6 @@ export default function useMarkFailedRun(dagId: string, runId: string) {
         }
       },
       onError: (error: Error) => errorToast({ error }),
-    }
+    },
   );
 }
diff --git a/airflow/www/static/js/api/useMarkFailedTask.ts b/airflow/www/static/js/api/useMarkFailedTask.ts
index a3fbe554016..a24ac822c4c 100644
--- a/airflow/www/static/js/api/useMarkFailedTask.ts
+++ b/airflow/www/static/js/api/useMarkFailedTask.ts
@@ -101,6 +101,6 @@ export default function useMarkFailedTask({
         startRefresh();
       },
       onError: (error: Error) => errorToast({ error }),
-    }
+    },
   );
 }
diff --git a/airflow/www/static/js/api/useMarkSuccessRun.ts b/airflow/www/static/js/api/useMarkSuccessRun.ts
index 119fb29839d..4aedc7ee92c 100644
--- a/airflow/www/static/js/api/useMarkSuccessRun.ts
+++ b/airflow/www/static/js/api/useMarkSuccessRun.ts
@@ -55,6 +55,6 @@ export default function useMarkSuccessRun(dagId: string, runId: string) {
         }
       },
       onError: (error: Error) => errorToast({ error }),
-    }
+    },
   );
 }
diff --git a/airflow/www/static/js/api/useMarkSuccessTask.ts b/airflow/www/static/js/api/useMarkSuccessTask.ts
index 3676684b6a8..e3d1a8bb2c8 100644
--- a/airflow/www/static/js/api/useMarkSuccessTask.ts
+++ b/airflow/www/static/js/api/useMarkSuccessTask.ts
@@ -101,6 +101,6 @@ export default function useMarkSuccessTask({
         startRefresh();
       },
       onError: (error: Error) => errorToast({ error }),
-    }
+    },
   );
 }
diff --git a/airflow/www/static/js/api/useMarkTaskDryRun.ts b/airflow/www/static/js/api/useMarkTaskDryRun.ts
index 51478299410..ad42bb7b7c0 100644
--- a/airflow/www/static/js/api/useMarkTaskDryRun.ts
+++ b/airflow/www/static/js/api/useMarkTaskDryRun.ts
@@ -87,7 +87,7 @@ const useMarkTaskDryRun = ({
         params,
       });
     },
-    { enabled }
+    { enabled },
   );
 
 export default useMarkTaskDryRun;
diff --git a/airflow/www/static/js/api/usePools.ts b/airflow/www/static/js/api/usePools.ts
index 664626a2ab4..cf9172ec284 100644
--- a/airflow/www/static/js/api/usePools.ts
+++ b/airflow/www/static/js/api/usePools.ts
@@ -34,7 +34,7 @@ const usePools = () => {
     async () => axios.get<AxiosResponse, API.PoolCollection>(poolsUrl),
     {
       refetchInterval: isRefreshOn && (autoRefreshInterval || 1) * 1000,
-    }
+    },
   );
 };
 
diff --git a/airflow/www/static/js/api/useQueueRun.ts b/airflow/www/static/js/api/useQueueRun.ts
index 28157a1879e..366e4996bf1 100644
--- a/airflow/www/static/js/api/useQueueRun.ts
+++ b/airflow/www/static/js/api/useQueueRun.ts
@@ -54,6 +54,6 @@ export default function useQueueRun(dagId: string, runId: string) {
         }
       },
       onError: (error: Error) => errorToast({ error }),
-    }
+    },
   );
 }
diff --git a/airflow/www/static/js/api/useRenderedK8s.ts b/airflow/www/static/js/api/useRenderedK8s.ts
index f959c5f6262..7c551f2f4a2 100644
--- a/airflow/www/static/js/api/useRenderedK8s.ts
+++ b/airflow/www/static/js/api/useRenderedK8s.ts
@@ -27,7 +27,7 @@ const url = getMetaValue("rendered_k8s_data_url");
 const useRenderedK8s = (
   runId: string | null,
   taskId: string | null,
-  mapIndex?: number
+  mapIndex?: number,
 ) =>
   useQuery(
     ["rendered_k8s", runId, taskId, mapIndex],
@@ -37,7 +37,7 @@ const useRenderedK8s = (
       }),
     {
       enabled: !!runId && !!taskId,
-    }
+    },
   );
 
 export default useRenderedK8s;
diff --git a/airflow/www/static/js/api/useSetDagRunNote.ts b/airflow/www/static/js/api/useSetDagRunNote.ts
index 7f561d47fee..3aca5aaa5cb 100644
--- a/airflow/www/static/js/api/useSetDagRunNote.ts
+++ b/airflow/www/static/js/api/useSetDagRunNote.ts
@@ -53,7 +53,7 @@ export default function useSetDagRunNote({ dagId, runId }: Props) {
             : {
                 ...oldGridData,
                 dagRuns: oldGridData.dagRuns.map((dr) =>
-                  dr.runId === runId ? { ...dr, note } : dr
+                  dr.runId === runId ? { ...dr, note } : dr,
                 ),
               };
 
@@ -61,6 +61,6 @@ export default function useSetDagRunNote({ dagId, runId }: Props) {
         queryClient.setQueriesData("gridData", updateGridData);
       },
       onError: (error: Error) => errorToast({ error }),
-    }
+    },
   );
 }
diff --git a/airflow/www/static/js/api/useSetTaskInstanceNote.ts b/airflow/www/static/js/api/useSetTaskInstanceNote.ts
index caca6c28065..f8dcca2a25a 100644
--- a/airflow/www/static/js/api/useSetTaskInstanceNote.ts
+++ b/airflow/www/static/js/api/useSetTaskInstanceNote.ts
@@ -27,7 +27,7 @@ import type { API } from "src/types";
 
 const setTaskInstancesNoteURI = getMetaValue("set_task_instance_note");
 const setMappedTaskInstancesNoteURI = getMetaValue(
-  "set_mapped_task_instance_note"
+  "set_mapped_task_instance_note",
 );
 
 interface Props {
@@ -64,7 +64,7 @@ export default function useSetTaskInstanceNote({
         const note = data.note ?? null;
 
         const updateMappedInstancesResult = (
-          oldMappedInstances?: API.TaskInstanceCollection
+          oldMappedInstances?: API.TaskInstanceCollection,
         ) => {
           if (!oldMappedInstances) {
             return {
@@ -80,13 +80,13 @@ export default function useSetTaskInstanceNote({
               ti.taskId === taskId &&
               ti.mapIndex === mapIndex
                 ? { ...ti, note }
-                : ti
+                : ti,
             ),
           };
         };
 
         const updateTaskInstanceResult = (
-          oldTaskInstance?: API.TaskInstance
+          oldTaskInstance?: API.TaskInstance,
         ) => {
           if (!oldTaskInstance) throw new Error("Unknown value...");
           if (
@@ -113,17 +113,17 @@ export default function useSetTaskInstanceNote({
           await queryClient.cancelQueries("mappedInstances");
           queryClient.setQueriesData(
             "mappedInstances",
-            updateMappedInstancesResult
+            updateMappedInstancesResult,
           );
         }
 
         await queryClient.cancelQueries("taskInstance");
         queryClient.setQueriesData(
           ["taskInstance", dagId, runId, taskId, mapIndex],
-          updateTaskInstanceResult
+          updateTaskInstanceResult,
         );
       },
       onError: (error: Error) => errorToast({ error }),
-    }
+    },
   );
 }
diff --git a/airflow/www/static/js/api/useTIHistory.ts b/airflow/www/static/js/api/useTIHistory.ts
index 1d1ee1d40f5..fd9c3a6b659 100644
--- a/airflow/www/static/js/api/useTIHistory.ts
+++ b/airflow/www/static/js/api/useTIHistory.ts
@@ -57,6 +57,6 @@ export default function useTIHistory({
     {
       refetchInterval: isRefreshOn && (autoRefreshInterval || 1) * 1000,
       ...options,
-    }
+    },
   );
 }
diff --git a/airflow/www/static/js/api/useTaskFailedDependency.ts b/airflow/www/static/js/api/useTaskFailedDependency.ts
index 08168deebff..355f923fade 100644
--- a/airflow/www/static/js/api/useTaskFailedDependency.ts
+++ b/airflow/www/static/js/api/useTaskFailedDependency.ts
@@ -48,7 +48,7 @@ export default function useTaskFailedDependency({
         .replace("_DAG_RUN_ID_", runId)
         .replace(
           "_TASK_ID_/0/dependencies",
-          `_TASK_ID_/${mapIndex}/dependencies`
+          `_TASK_ID_/${mapIndex}/dependencies`,
         )
         .replace("_TASK_ID_", taskId);
 
@@ -58,6 +58,6 @@ export default function useTaskFailedDependency({
       >(url);
       return datum;
     },
-    { refetchInterval: isRefreshOn && (autoRefreshInterval || 1) * 1000 }
+    { refetchInterval: isRefreshOn && (autoRefreshInterval || 1) * 1000 },
   );
 }
diff --git a/airflow/www/static/js/api/useTaskInstance.ts b/airflow/www/static/js/api/useTaskInstance.ts
index c5a96f3e440..3dc2eff0ae4 100644
--- a/airflow/www/static/js/api/useTaskInstance.ts
+++ b/airflow/www/static/js/api/useTaskInstance.ts
@@ -27,8 +27,10 @@ import type { SetOptional } from "type-fest";
 
 const taskInstanceApi = getMetaValue("task_instance_api");
 
-interface Props
-  extends SetOptional<API.GetMappedTaskInstanceVariables, "mapIndex"> {
+interface Props extends SetOptional<
+  API.GetMappedTaskInstanceVariables,
+  "mapIndex"
+> {
   options?: UseQueryOptions<API.TaskInstance>;
 }
 
@@ -59,7 +61,7 @@ const useTaskInstance = ({
     {
       refetchInterval: isRefreshOn && (autoRefreshInterval || 1) * 1000,
       ...options,
-    }
+    },
   );
 };
 
diff --git a/airflow/www/static/js/api/useTaskLog.ts b/airflow/www/static/js/api/useTaskLog.ts
index a5e9bab69f8..1aea4eeaeac 100644
--- a/airflow/www/static/js/api/useTaskLog.ts
+++ b/airflow/www/static/js/api/useTaskLog.ts
@@ -76,7 +76,7 @@ const useTaskLog = ({
     {
       refetchInterval:
         expectingLogs && isRefreshOn && (autoRefreshInterval || 1) * 1000,
-    }
+    },
   );
 };
 
diff --git a/airflow/www/static/js/api/useTaskXcom.ts b/airflow/www/static/js/api/useTaskXcom.ts
index d8758e60b90..78ade8c25d2 100644
--- a/airflow/www/static/js/api/useTaskXcom.ts
+++ b/airflow/www/static/js/api/useTaskXcom.ts
@@ -43,8 +43,8 @@ export const useTaskXcomCollection = ({
       getMetaValue("task_xcom_entries_api")
         .replace("_DAG_RUN_ID_", dagRunId)
         .replace("_TASK_ID_", taskId),
-      { params: { map_index: mapIndex } }
-    )
+      { params: { map_index: mapIndex } },
+    ),
   );
 
 export const useTaskXcomEntry = ({
@@ -69,5 +69,5 @@ export const useTaskXcomEntry = ({
     },
     {
       enabled: !!xcomKey,
-    }
+    },
   );
diff --git a/airflow/www/static/js/api/useUpstreamDatasetEvents.ts b/airflow/www/static/js/api/useUpstreamDatasetEvents.ts
index 32d1c7aeff2..83623627bee 100644
--- a/airflow/www/static/js/api/useUpstreamDatasetEvents.ts
+++ b/airflow/www/static/js/api/useUpstreamDatasetEvents.ts
@@ -39,7 +39,7 @@ const useUpstreamDatasetEvents = ({ dagId, dagRunId, options }: Props) => {
   const query = useQuery<DatasetEventCollection>(
     ["upstreamDatasetEvents", dagRunId],
     () => axios.get(upstreamEventsUrl),
-    options
+    options,
   );
 
   return {
diff --git a/airflow/www/static/js/cluster-activity/historical-metrics/PieChart.tsx b/airflow/www/static/js/cluster-activity/historical-metrics/PieChart.tsx
index a1aa86cc5ac..547b0c64baa 100644
--- a/airflow/www/static/js/cluster-activity/historical-metrics/PieChart.tsx
+++ b/airflow/www/static/js/cluster-activity/historical-metrics/PieChart.tsx
@@ -41,7 +41,7 @@ type SeriesData = Array<SeriesPoint>;
 const camelCaseColorPalette = mapKeys(stateColors, (_, k) => camelCase(k));
 
 const formatData = (
-  data: HistoricalMetricsData[keyof HistoricalMetricsData] | undefined
+  data: HistoricalMetricsData[keyof HistoricalMetricsData] | undefined,
 ): [number, SeriesData] => {
   if (data === undefined) return [0, []];
 
@@ -96,7 +96,7 @@ const PieChart = ({
       if (color === undefined) {
         // eslint-disable-next-line no-console
         console.warn(
-          `The color for ${d.name} is missing from the palette, defaulting to black`
+          `The color for ${d.name} is missing from the palette, defaulting to black`,
         );
         color = "black";
       }
diff --git a/airflow/www/static/js/cluster-activity/index.test.tsx b/airflow/www/static/js/cluster-activity/index.test.tsx
index 3381a5be873..ce7fe3ddbf3 100644
--- a/airflow/www/static/js/cluster-activity/index.test.tsx
+++ b/airflow/www/static/js/cluster-activity/index.test.tsx
@@ -111,7 +111,7 @@ describe("Test ToggleGroups", () => {
         ({
           data: mockHistoricalMetricsData,
           isSuccess: true,
-        } as never as UseQueryResult<HistoricalMetricsData>)
+        }) as never as UseQueryResult<HistoricalMetricsData>,
     );
 
     jest.spyOn(useHealthModule, "default").mockImplementation(
@@ -119,7 +119,7 @@ describe("Test ToggleGroups", () => {
         ({
           data: mockHealthData,
           isSuccess: true,
-        } as never as UseQueryResult<API.HealthInfo>)
+        }) as never as UseQueryResult<API.HealthInfo>,
     );
 
     jest.spyOn(useDagsModule, "default").mockImplementation(
@@ -127,7 +127,7 @@ describe("Test ToggleGroups", () => {
         ({
           data: mockDagsData,
           isSuccess: true,
-        } as never as UseQueryResult<API.DAGCollection>)
+        }) as never as UseQueryResult<API.DAGCollection>,
     );
 
     jest.spyOn(useDagRunsModule, "default").mockImplementation(
@@ -135,7 +135,7 @@ describe("Test ToggleGroups", () => {
         ({
           data: mockDagRunsData,
           isSuccess: true,
-        } as never as UseQueryResult<API.DAGRunCollection>)
+        }) as never as UseQueryResult<API.DAGRunCollection>,
     );
 
     jest.spyOn(usePoolsModule, "default").mockImplementation(
@@ -143,7 +143,7 @@ describe("Test ToggleGroups", () => {
         ({
           data: mockPoolsData,
           isSuccess: true,
-        } as never as UseQueryResult<API.PoolCollection>)
+        }) as never as UseQueryResult<API.PoolCollection>,
     );
   });
 
@@ -152,7 +152,7 @@ describe("Test ToggleGroups", () => {
       <ClusterActivity />,
       {
         wrapper: Wrapper,
-      }
+      },
     );
 
     expect(getAllByTestId("echart-container")).toHaveLength(4);
diff --git a/airflow/www/static/js/cluster-activity/index.tsx b/airflow/www/static/js/cluster-activity/index.tsx
index 01b21b0dd84..debaad78b5f 100644
--- a/airflow/www/static/js/cluster-activity/index.tsx
+++ b/airflow/www/static/js/cluster-activity/index.tsx
@@ -59,6 +59,6 @@ if (mainElement) {
   reactRoot.render(
     <App cache={cache}>
       <ClusterActivity />
-    </App>
+    </App>,
   );
 }
diff --git a/airflow/www/static/js/cluster-activity/live-metrics/DagRuns.tsx b/airflow/www/static/js/cluster-activity/live-metrics/DagRuns.tsx
index 7f2b169359e..e28641dc562 100644
--- a/airflow/www/static/js/cluster-activity/live-metrics/DagRuns.tsx
+++ b/airflow/www/static/js/cluster-activity/live-metrics/DagRuns.tsx
@@ -81,7 +81,7 @@ const DagRuns = (props: BoxProps) => {
                             href={`dags/${
                               dagRun.dagId
                             }/grid?dag_run_id=${encodeURIComponent(
-                              dagRun.dagRunId as string
+                              dagRun.dagRunId as string,
                             )}`}
                           >
                             {dagRun.dagId}
@@ -90,7 +90,7 @@ const DagRuns = (props: BoxProps) => {
                         <Td>{dagRun.runType}</Td>
                         <Td>
                           {formatDuration(
-                            getDuration(dagRun.startDate, dagRun.endDate)
+                            getDuration(dagRun.startDate, dagRun.endDate),
                           )}
                         </Td>
                       </Tr>
diff --git a/airflow/www/static/js/cluster-activity/live-metrics/Pools.tsx b/airflow/www/static/js/cluster-activity/live-metrics/Pools.tsx
index 037f5cce6d1..0be9329a723 100644
--- a/airflow/www/static/js/cluster-activity/live-metrics/Pools.tsx
+++ b/airflow/www/static/js/cluster-activity/live-metrics/Pools.tsx
@@ -33,7 +33,7 @@ import type { API } from "src/types";
 import LoadingWrapper from "src/components/LoadingWrapper";
 
 const formatData = (
-  data?: API.PoolCollection
+  data?: API.PoolCollection,
 ): Array<[string, number, number, number, number, number]> =>
   data?.pools?.map((pool) => [
     pool.name || "",
diff --git a/airflow/www/static/js/cluster-activity/useFilters.tsx b/airflow/www/static/js/cluster-activity/useFilters.tsx
index 2e1c415223d..296835cc153 100644
--- a/airflow/www/static/js/cluster-activity/useFilters.tsx
+++ b/airflow/www/static/js/cluster-activity/useFilters.tsx
@@ -73,12 +73,12 @@ const useFilters = (): FilterHookReturn => {
   const onStartDateChange = makeOnChangeFn(
     START_DATE_PARAM,
     // @ts-ignore
-    (localDate: string) => moment(localDate).utc().format()
+    (localDate: string) => moment(localDate).utc().format(),
   );
 
   const onEndDateChange = makeOnChangeFn(END_DATE_PARAM, (localDate: string) =>
     // @ts-ignore
-    moment(localDate).utc().format()
+    moment(localDate).utc().format(),
   );
 
   const clearFilters = () => {
diff --git a/airflow/www/static/js/components/Clipboard.test.tsx b/airflow/www/static/js/components/Clipboard.test.tsx
index 1d7b39bdb46..ec179230541 100644
--- a/airflow/www/static/js/components/Clipboard.test.tsx
+++ b/airflow/www/static/js/components/Clipboard.test.tsx
@@ -35,7 +35,7 @@ describe("ClipboardButton", () => {
     fireEvent.click(button);
     expect(window.prompt).toHaveBeenCalledWith(
       "Copy to clipboard: Ctrl+C, Enter",
-      "lorem ipsum"
+      "lorem ipsum",
     );
     window.prompt = windowPrompt;
   });
diff --git a/airflow/www/static/js/components/Clipboard.tsx b/airflow/www/static/js/components/Clipboard.tsx
index 11b2547c1e6..85cd87a7946 100644
--- a/airflow/www/static/js/components/Clipboard.tsx
+++ b/airflow/www/static/js/components/Clipboard.tsx
@@ -41,7 +41,7 @@ export const ClipboardButton = forwardRef(
       "aria-label": ariaLabel = "Copy",
       ...rest
     },
-    ref
+    ref,
   ) => {
     const { setValue, hasCopied, onCopy } = useClipboard(value);
     const containerRef = useContainerRef();
@@ -80,7 +80,7 @@ export const ClipboardButton = forwardRef(
         )}
       </Tooltip>
     );
-  }
+  },
 );
 
 interface Props {
diff --git a/airflow/www/static/js/components/DatasetEventCard.tsx b/airflow/www/static/js/components/DatasetEventCard.tsx
index 2367c8efa9b..1ce870bd27c 100644
--- a/airflow/www/static/js/components/DatasetEventCard.tsx
+++ b/airflow/www/static/js/components/DatasetEventCard.tsx
@@ -85,7 +85,7 @@ const DatasetEventCard = ({
                 color="blue.600"
                 ml={2}
                 href={`${datasetsUrl}?uri=${encodeURIComponent(
-                  datasetEvent.datasetUri
+                  datasetEvent.datasetUri,
                 )}`}
               >
                 {datasetEvent.datasetUri}
diff --git a/airflow/www/static/js/components/InstanceTooltip.test.tsx b/airflow/www/static/js/components/InstanceTooltip.test.tsx
index c52a4656636..8687798ad24 100644
--- a/airflow/www/static/js/components/InstanceTooltip.test.tsx
+++ b/airflow/www/static/js/components/InstanceTooltip.test.tsx
@@ -48,7 +48,7 @@ describe("Test Task InstanceTooltip", () => {
         }}
         instance={instance}
       />,
-      { wrapper: Wrapper }
+      { wrapper: Wrapper },
     );
 
     expect(getByText("Trigger Rule: all_failed")).toBeDefined();
@@ -68,7 +68,7 @@ describe("Test Task InstanceTooltip", () => {
         }}
         instance={{ ...instance, mappedStates: { success: 2 } }}
       />,
-      { wrapper: Wrapper }
+      { wrapper: Wrapper },
     );
 
     expect(getByText("Overall Status: success")).toBeDefined();
@@ -102,7 +102,7 @@ describe("Test Task InstanceTooltip", () => {
         }}
         instance={instance}
       />,
-      { wrapper: Wrapper }
+      { wrapper: Wrapper },
     );
 
     expect(getByText("Overall Status: success")).toBeDefined();
@@ -116,7 +116,7 @@ describe("Test Task InstanceTooltip", () => {
         group={{ id: "task", label: "task", instances: [] }}
         instance={{ ...instance, note: "note" }}
       />,
-      { wrapper: Wrapper }
+      { wrapper: Wrapper },
     );
 
     expect(getByText("Contains a note")).toBeInTheDocument();
@@ -128,7 +128,7 @@ describe("Test Task InstanceTooltip", () => {
         group={{ id: "task", label: "task", instances: [] }}
         instance={{ ...instance, startDate: null }}
       />,
-      { wrapper: Wrapper }
+      { wrapper: Wrapper },
     );
 
     expect(getByText("Status: success")).toBeDefined();
diff --git a/airflow/www/static/js/components/InstanceTooltip.tsx b/airflow/www/static/js/components/InstanceTooltip.tsx
index f7d83f347c0..81ea54dfd7e 100644
--- a/airflow/www/static/js/components/InstanceTooltip.tsx
+++ b/airflow/www/static/js/components/InstanceTooltip.tsx
@@ -79,7 +79,7 @@ const InstanceTooltip = ({
             {childState}
             {": "}
             {key}
-          </Text>
+          </Text>,
         );
       }
     });
diff --git a/airflow/www/static/js/components/LinkButton.test.tsx b/airflow/www/static/js/components/LinkButton.test.tsx
index fe11d8e8bf2..163270233d4 100644
--- a/airflow/www/static/js/components/LinkButton.test.tsx
+++ b/airflow/www/static/js/components/LinkButton.test.tsx
@@ -29,7 +29,7 @@ describe("Test LinkButton Component.", () => {
     const { getByText, container } = render(
       <LinkButton>
         <div>The link</div>
-      </LinkButton>
+      </LinkButton>,
     );
 
     expect(getByText("The link")).toBeDefined();
diff --git a/airflow/www/static/js/components/NewTable/NewTable.tsx b/airflow/www/static/js/components/NewTable/NewTable.tsx
index a357d42605d..7cb0bae614c 100644
--- a/airflow/www/static/js/components/NewTable/NewTable.tsx
+++ b/airflow/www/static/js/components/NewTable/NewTable.tsx
@@ -117,7 +117,7 @@ export const NewTable = <TData extends RowData>({
         if (!isEqual(old, updated)) onStateChange(updated);
       }
     },
-    [onStateChange]
+    [onStateChange],
   );
 
   const tableInstance = useReactTable({
@@ -149,7 +149,7 @@ export const NewTable = <TData extends RowData>({
   const upperCount = Math.min(
     (pageIndex + 1) * pageSize,
     pageIndex * pageSize + data.length,
-    total
+    total,
   );
   const canPrevious = tableInstance.getCanPreviousPage();
   const canNext = tableInstance.getCanNextPage() && data.length === pageSize;
@@ -205,7 +205,7 @@ export const NewTable = <TData extends RowData>({
                         ))}
                     </Th>
                   );
-                }
+                },
               )}
             </Tr>
           ))}
diff --git a/airflow/www/static/js/components/NewTable/createSkeleton.tsx b/airflow/www/static/js/components/NewTable/createSkeleton.tsx
index cb0a228c765..2d210011e21 100644
--- a/airflow/www/static/js/components/NewTable/createSkeleton.tsx
+++ b/airflow/www/static/js/components/NewTable/createSkeleton.tsx
@@ -24,7 +24,7 @@ import type { ColumnDef } from "@tanstack/react-table";
 
 function createSkeleton<TData, TValue>(
   skeletonCount: number,
-  columnDefs: ColumnDef<TData, TValue>[]
+  columnDefs: ColumnDef<TData, TValue>[],
 ) {
   const colDefs = columnDefs.map((colDef) => ({
     ...colDef,
@@ -39,7 +39,7 @@ function createSkeleton<TData, TValue>(
     ),
   }));
 
-  const data = [...Array(skeletonCount)].map(() => ({} as TData));
+  const data = [...Array(skeletonCount)].map(() => ({}) as TData);
 
   return { columns: colDefs, data };
 }
diff --git a/airflow/www/static/js/components/NewTable/searchParams.test.ts b/airflow/www/static/js/components/NewTable/searchParams.test.ts
index edff0cc0d53..569f15132d8 100644
--- a/airflow/www/static/js/components/NewTable/searchParams.test.ts
+++ b/airflow/www/static/js/components/NewTable/searchParams.test.ts
@@ -31,7 +31,7 @@ describe("searchParams", () => {
         sorting: [{ id: "name", desc: false }],
       };
       expect(stateToSearchParams(state).toString()).toEqual(
-        "limit=20&offset=1&sort.name=asc"
+        "limit=20&offset=1&sort.name=asc",
       );
     });
   });
@@ -46,8 +46,8 @@ describe("searchParams", () => {
               pageSize: 5,
             },
             sorting: [],
-          }
-        )
+          },
+        ),
       ).toEqual({
         pagination: {
           pageIndex: 0,
diff --git a/airflow/www/static/js/components/NewTable/searchParams.ts b/airflow/www/static/js/components/NewTable/searchParams.ts
index 3e6fcd7c2ec..bdd7b927315 100644
--- a/airflow/www/static/js/components/NewTable/searchParams.ts
+++ b/airflow/www/static/js/components/NewTable/searchParams.ts
@@ -28,7 +28,7 @@ export const SORT_PARAM = "sort.";
 
 export const stateToSearchParams = (
   state: TableState,
-  defaultTableState?: TableState
+  defaultTableState?: TableState,
 ): URLSearchParams => {
   const queryParams = new URLSearchParams(window.location.search);
   if (isEqual(state.pagination, defaultTableState?.pagination)) {
@@ -54,7 +54,7 @@ export const stateToSearchParams = (
 
 export const searchParamsToState = (
   searchParams: URLSearchParams,
-  defaultState: TableState
+  defaultState: TableState,
 ) => {
   let urlState: Partial<TableState> = {};
   const pageIndex = searchParams.get(OFFSET_PARAM);
@@ -102,7 +102,7 @@ interface CoreServiceQueryParams {
  * @returns
  */
 export const buildQueryParams = (
-  state?: Partial<TableState>
+  state?: Partial<TableState>,
 ): CoreServiceQueryParams => {
   let queryParams = {};
   if (state?.pagination) {
@@ -115,7 +115,7 @@ export const buildQueryParams = (
   }
   if (state?.sorting) {
     const sorts = state.sorting.map(
-      ({ id, desc }) => `${id}:${desc ? "desc" : "asc"}`
+      ({ id, desc }) => `${id}:${desc ? "desc" : "asc"}`,
     );
     queryParams = {
       ...queryParams,
diff --git a/airflow/www/static/js/components/NewTable/useTableUrlState.ts b/airflow/www/static/js/components/NewTable/useTableUrlState.ts
index 8f1caeb4064..fc3b9f0979a 100644
--- a/airflow/www/static/js/components/NewTable/useTableUrlState.ts
+++ b/airflow/www/static/js/components/NewTable/useTableUrlState.ts
@@ -44,7 +44,7 @@ export const useTableURLState = (defaultState?: Partial<TableState>) => {
         replace: true,
       });
     },
-    [setSearchParams]
+    [setSearchParams],
   );
 
   const tableURLState = useMemo(
@@ -53,12 +53,12 @@ export const useTableURLState = (defaultState?: Partial<TableState>) => {
         ...defaultTableState,
         ...defaultState,
       }),
-    [searchParams, defaultState]
+    [searchParams, defaultState],
   );
 
   const requestParams = useMemo(
     () => buildQueryParams(tableURLState),
-    [tableURLState]
+    [tableURLState],
   );
 
   return {
diff --git a/airflow/www/static/js/components/ReactMarkdown.tsx b/airflow/www/static/js/components/ReactMarkdown.tsx
index b6c65327722..dfd86385f25 100644
--- a/airflow/www/static/js/components/ReactMarkdown.tsx
+++ b/airflow/www/static/js/components/ReactMarkdown.tsx
@@ -56,12 +56,11 @@ const fontSizeMapping = {
 
 const makeHeading =
   (h: keyof typeof fontSizeMapping) =>
-  ({ children, ...props }: PropsWithChildren) =>
-    (
-      <Heading as={h} fontSize={fontSizeMapping[h]} {...props} my={3}>
-        {children}
-      </Heading>
-    );
+  ({ children, ...props }: PropsWithChildren) => (
+    <Heading as={h} fontSize={fontSizeMapping[h]} {...props} my={3}>
+      {children}
+    </Heading>
+  );
 
 const components = {
   p: ({ children }: PropsWithChildren) => <Text>{children}</Text>,
diff --git a/airflow/www/static/js/components/SourceTaskInstance.tsx b/airflow/www/static/js/components/SourceTaskInstance.tsx
index fd64faddb4b..443626e6250 100644
--- a/airflow/www/static/js/components/SourceTaskInstance.tsx
+++ b/airflow/www/static/js/components/SourceTaskInstance.tsx
@@ -58,9 +58,9 @@ const SourceTaskInstance = ({
 
   let url = `${gridUrl?.replace(
     dagId,
-    sourceDagId || ""
+    sourceDagId || "",
   )}?dag_run_id=${encodeURIComponent(
-    sourceRunId || ""
+    sourceRunId || "",
   )}&task_id=${encodeURIComponent(sourceTaskId || "")}`;
 
   if (
diff --git a/airflow/www/static/js/components/TabWithTooltip.tsx b/airflow/www/static/js/components/TabWithTooltip.tsx
index dfe2ffaa596..cf870907131 100644
--- a/airflow/www/static/js/components/TabWithTooltip.tsx
+++ b/airflow/www/static/js/components/TabWithTooltip.tsx
@@ -43,7 +43,7 @@ const TabWithTooltip = React.forwardRef<HTMLDivElement, TabProps>(
         </Button>
       </Box>
     );
-  }
+  },
 );
 
 export default TabWithTooltip;
diff --git a/airflow/www/static/js/components/Table/CardList.tsx b/airflow/www/static/js/components/Table/CardList.tsx
index 786336be9e2..a9058844263 100644
--- a/airflow/www/static/js/components/Table/CardList.tsx
+++ b/airflow/www/static/js/components/Table/CardList.tsx
@@ -122,7 +122,7 @@ export const CardList = <TData extends Record<string, unknown>>({
     },
     useSortBy,
     usePagination,
-    ...selectProps
+    ...selectProps,
   );
 
   const handleNext = () => {
diff --git a/airflow/www/static/js/components/Table/Table.test.tsx b/airflow/www/static/js/components/Table/Table.test.tsx
index 36d9b22456e..c9a28022baf 100644
--- a/airflow/www/static/js/components/Table/Table.test.tsx
+++ b/airflow/www/static/js/components/Table/Table.test.tsx
@@ -55,7 +55,7 @@ describe("Test Table", () => {
   test("Displays correct data", async () => {
     const { getAllByRole, getByText, queryByTitle } = render(
       <Table data={data} columns={columns} />,
-      { wrapper: ChakraWrapper }
+      { wrapper: ChakraWrapper },
     );
 
     const rows = getAllByRole("row");
@@ -84,7 +84,7 @@ describe("Test Table", () => {
   test("Shows empty state", async () => {
     const { getAllByRole, getByText } = render(
       <Table data={[]} columns={columns} />,
-      { wrapper: ChakraWrapper }
+      { wrapper: ChakraWrapper },
     );
 
     const rows = getAllByRole("row");
@@ -116,7 +116,7 @@ describe("Test Table", () => {
   test("With manual pagination", async () => {
     const { getAllByRole, queryByText, getByTitle } = render(
       <PaginatedTable />,
-      { wrapper: ChakraWrapper }
+      { wrapper: ChakraWrapper },
     );
 
     const name1 = data[0].firstName;
@@ -215,10 +215,10 @@ describe("Test Table", () => {
     const ascendingData = sortBy(data, [(o) => o.firstName]);
 
     const ascendingFirstRowName = within(ascendingRows[1]).queryByText(
-      ascendingData[0].firstName
+      ascendingData[0].firstName,
     );
     const ascendingLastRowName = within(ascendingRows[5]).queryByText(
-      ascendingData[4].firstName
+      ascendingData[4].firstName,
     );
     expect(ascendingFirstRowName).toBeInTheDocument();
     expect(ascendingLastRowName).toBeInTheDocument();
@@ -230,10 +230,10 @@ describe("Test Table", () => {
     const descendingData = sortBy(data, [(o) => o.firstName]).reverse();
 
     const descendingFirstRowName = within(descendingRows[1]).queryByText(
-      descendingData[0].firstName
+      descendingData[0].firstName,
     );
     const descendingLastRowName = within(descendingRows[5]).queryByText(
-      descendingData[4].firstName
+      descendingData[4].firstName,
     );
     expect(descendingFirstRowName).toBeInTheDocument();
     expect(descendingLastRowName).toBeInTheDocument();
@@ -242,7 +242,7 @@ describe("Test Table", () => {
   test("Shows checkboxes", async () => {
     const { getAllByTitle } = render(
       <Table data={data} columns={columns} selectRows={() => {}} />,
-      { wrapper: ChakraWrapper }
+      { wrapper: ChakraWrapper },
     );
 
     const checkboxes = getAllByTitle("Toggle Row Selected");
diff --git a/airflow/www/static/js/components/Table/index.tsx b/airflow/www/static/js/components/Table/index.tsx
index ea7a7786cb2..d87eb8b8e99 100644
--- a/airflow/www/static/js/components/Table/index.tsx
+++ b/airflow/www/static/js/components/Table/index.tsx
@@ -162,7 +162,7 @@ export const Table = ({
     },
     useSortBy,
     usePagination,
-    ...selectProps
+    ...selectProps,
   );
 
   const handleNext = () => {
diff --git a/airflow/www/static/js/components/Time.test.tsx b/airflow/www/static/js/components/Time.test.tsx
index bddeb833cfb..1074d0ab1c9 100644
--- a/airflow/www/static/js/components/Time.test.tsx
+++ b/airflow/www/static/js/components/Time.test.tsx
@@ -54,7 +54,7 @@ describe("Test Time and TimezoneProvider", () => {
     expect(samoaTime).toBeDefined();
     expect(samoaTime.title).toEqual(
       // @ts-ignore
-      moment.utc(now).format(defaultFormatWithTZ)
+      moment.utc(now).format(defaultFormatWithTZ),
     );
   });
 
@@ -62,7 +62,7 @@ describe("Test Time and TimezoneProvider", () => {
     const now = new Date();
     const { getByText, queryByText } = render(
       <Time dateTime={now.toISOString()} />,
-      { wrapper: Wrapper }
+      { wrapper: Wrapper },
     );
 
     // @ts-ignore
@@ -80,7 +80,7 @@ describe("Test Time and TimezoneProvider", () => {
     expect(utcTime).toBeNull();
     const estTime = getByText(
       // @ts-ignore
-      moment(now).tz("EST").format(defaultFormatWithTZ)
+      moment(now).tz("EST").format(defaultFormatWithTZ),
     );
     expect(estTime).toBeDefined();
     // @ts-ignore
diff --git a/airflow/www/static/js/components/Tooltip.tsx b/airflow/www/static/js/components/Tooltip.tsx
index 72a55b0862d..4d81ebdbecf 100644
--- a/airflow/www/static/js/components/Tooltip.tsx
+++ b/airflow/www/static/js/components/Tooltip.tsx
@@ -35,9 +35,7 @@ import {
 import { motion, AnimatePresence } from "framer-motion";
 
 export interface TooltipProps
-  extends HTMLChakraProps<"div">,
-    ThemingProps<"Tooltip">,
-    UseTooltipProps {
+  extends HTMLChakraProps<"div">, ThemingProps<"Tooltip">, UseTooltipProps {
   /**
    * The React component to use as the
    * trigger for the tooltip
@@ -140,7 +138,7 @@ const Tooltip = forwardRef<TooltipProps, "div">((props, ref) => {
   };
   const trigger: React.ReactElement = React.cloneElement(
     child,
-    tooltip.getTriggerProps(child.props, child.ref)
+    tooltip.getTriggerProps(child.props, child.ref),
   );
 
   const tooltipProps = tooltip.getTooltipProps({}, ref);
diff --git a/airflow/www/static/js/components/TriggeredDagRuns.tsx b/airflow/www/static/js/components/TriggeredDagRuns.tsx
index 5303c9e4567..566a8c22f7b 100644
--- a/airflow/www/static/js/components/TriggeredDagRuns.tsx
+++ b/airflow/www/static/js/components/TriggeredDagRuns.tsx
@@ -46,7 +46,7 @@ const TriggeredDagRuns = ({ createdDagRuns, showLink = true }: CardProps) => {
         const runId = (run as unknown as { dagRunId: string }).dagRunId;
         const url = `${gridUrl.replace(
           dagId,
-          run.dagId || ""
+          run.dagId || "",
         )}?dag_run_id=${encodeURIComponent(runId)}`;
 
         return (
diff --git a/airflow/www/static/js/components/ViewTimeDelta.tsx b/airflow/www/static/js/components/ViewTimeDelta.tsx
index 2a0bb868c58..23897090b43 100644
--- a/airflow/www/static/js/components/ViewTimeDelta.tsx
+++ b/airflow/www/static/js/components/ViewTimeDelta.tsx
@@ -52,7 +52,7 @@ const ViewTimeDelta = ({ data }: Props) => {
               <Text mr={1} key={unit}>
                 {data[unit]} {unit}
               </Text>
-            )
+            ),
         )}
     </Flex>
   );
diff --git a/airflow/www/static/js/components/utils.test.ts b/airflow/www/static/js/components/utils.test.ts
index 8df59388144..e4f78eee738 100644
--- a/airflow/www/static/js/components/utils.test.ts
+++ b/airflow/www/static/js/components/utils.test.ts
@@ -79,6 +79,6 @@ describe("JSON Parsing.", () => {
         expect(contentJson).not.toBeNull();
         expect(contentFormatted.length).toBeGreaterThan(0);
       }
-    }
+    },
   );
 });
diff --git a/airflow/www/static/js/components/utils.ts b/airflow/www/static/js/components/utils.ts
index 533c0504b70..cec249bbc02 100644
--- a/airflow/www/static/js/components/utils.ts
+++ b/airflow/www/static/js/components/utils.ts
@@ -29,7 +29,7 @@ const jsonParse = (content: unknown) => {
     }
     contentFormatted = JSON.stringify(contentJson, null, 4);
     isJson = contentJson != null && typeof contentJson === "object"; // ensure numbers/bool are not treated as JSON
-  } catch (e) {
+  } catch (_e) {
     // skip
   }
   return [isJson, contentJson, contentFormatted];
diff --git a/airflow/www/static/js/connection_form.js b/airflow/www/static/js/connection_form.js
index 886ff208d71..25e9bd49ae2 100644
--- a/airflow/www/static/js/connection_form.js
+++ b/airflow/www/static/js/connection_form.js
@@ -44,7 +44,7 @@ function getConnTypesToControlsMap() {
   const connTypesToControlsMap = new Map();
 
   const extraFormControls = Array.from(
-    document.querySelectorAll("[id^='extra__'")
+    document.querySelectorAll("[id^='extra__'"),
   );
   extraFormControls.forEach((control) => {
     const connTypeEnd = control.id.indexOf("__", "extra__".length);
@@ -80,7 +80,7 @@ function restoreFieldBehaviours() {
       elem.innerText = elem.dataset.origText;
       // eslint-disable-next-line no-param-reassign
       delete elem.dataset.origText;
-    }
+    },
   );
 
   Array.from(document.querySelectorAll(".form-control")).forEach((elem) => {
@@ -145,7 +145,7 @@ function handleTestConnection(connectionType, testableConnections) {
       .prop("disabled", true)
       .attr(
         "title",
-        "Testing connections is disabled in Airflow configuration. Contact your deployment admin to enable it."
+        "Testing connections is disabled in Airflow configuration. Contact your deployment admin to enable it.",
       );
     return;
   }
@@ -163,7 +163,7 @@ function handleTestConnection(connectionType, testableConnections) {
       .attr(
         "title",
         "This connection type does not currently support testing via " +
-          "Airflow REST API."
+          "Airflow REST API.",
       );
   }
 }
@@ -172,7 +172,7 @@ $(document).ready(() => {
   const fieldBehavioursElem = document.getElementById("field_behaviours");
   const config = JSON.parse(decode(fieldBehavioursElem.textContent));
   const testableConnsElem = document.getElementById(
-    "testable_connection_types"
+    "testable_connection_types",
   );
   const testableConns = decode(testableConnsElem.textContent);
 
@@ -187,7 +187,7 @@ $(document).ready(() => {
   // Create a test connection button & insert it right next to the save (submit) button
   const testConnBtn = $(
     '<button id="test-connection" type="button" class="btn btn-sm btn-primary" ' +
-      'style="margin-left: 3px; pointer-events: all">Test\n <i class="fa fa-rocket"></i></button>'
+      'style="margin-left: 3px; pointer-events: all">Test\n <i class="fa fa-rocket"></i></button>',
   );
 
   // Disable the Test Connection button if Airflow REST APIs are not enabled.
@@ -197,12 +197,12 @@ $(document).ready(() => {
       .attr(
         "title",
         "Airflow REST APIs have been disabled. " +
-          "See api->auth_backends section of the Airflow configuration."
+          "See api->auth_backends section of the Airflow configuration.",
       );
   }
 
   $(testConnBtn).insertAfter(
-    $("form#model_form div.well.well-sm button:submit")
+    $("form#model_form div.well.well-sm button:submit"),
   );
 
   /**
@@ -248,7 +248,7 @@ $(document).ready(() => {
     } else {
       alertBox = $(
         `<div class="alert ${alertClass}">\n` +
-          `<button type="button" class="close" data-dismiss="alert">×</button>\n${message}</div>`
+          `<button type="button" class="close" data-dismiss="alert">×</button>\n${message}</div>`,
       );
 
       $(".container .row").prepend(alertBox).show();
@@ -257,7 +257,7 @@ $(document).ready(() => {
 
   displayAlert(
     "warning",
-    "Warning: Fields that are currently populated can be modified but cannot be deleted. To delete data from a field, delete the Connection object and create a new one."
+    "Warning: Fields that are currently populated can be modified but cannot be deleted. To delete data from a field, delete the Connection object and create a new one.",
   );
 
   function hideAlert() {
diff --git a/airflow/www/static/js/context/autorefresh.tsx b/airflow/www/static/js/context/autorefresh.tsx
index 45f84068a4b..0593aa1103a 100644
--- a/airflow/www/static/js/context/autorefresh.tsx
+++ b/airflow/www/static/js/context/autorefresh.tsx
@@ -34,7 +34,7 @@ const autoRefreshKey = "disabledAutoRefresh";
 
 const initialIsPaused = getMetaValue("is_paused") === "True";
 const isRefreshDisabled = JSON.parse(
-  localStorage.getItem(autoRefreshKey) || "false"
+  localStorage.getItem(autoRefreshKey) || "false",
 );
 
 type RefreshContext = {
@@ -67,7 +67,7 @@ export const AutoRefreshProvider = ({ children }: PropsWithChildren) => {
 
   const startRefresh = useCallback(
     () => isRefreshAllowed && setRefresh(true),
-    [isRefreshAllowed, setRefresh]
+    [isRefreshAllowed, setRefresh],
   );
 
   const refetchInterval = isRefreshOn && (autoRefreshInterval || 1) * 1000;
@@ -85,7 +85,7 @@ export const AutoRefreshProvider = ({ children }: PropsWithChildren) => {
         onToggle();
       }
     },
-    [isRefreshAllowed, isRefreshOn, onToggle]
+    [isRefreshAllowed, isRefreshOn, onToggle],
   );
 
   useEffect(() => {
@@ -117,7 +117,7 @@ export const AutoRefreshProvider = ({ children }: PropsWithChildren) => {
       startRefresh,
       isPaused,
     }),
-    [isPaused, isRefreshOn, startRefresh, toggleRefresh, refetchInterval]
+    [isPaused, isRefreshOn, startRefresh, toggleRefresh, refetchInterval],
   );
 
   return (
diff --git a/airflow/www/static/js/context/containerRef.tsx b/airflow/www/static/js/context/containerRef.tsx
index 563c0ec5577..df8925a1d53 100644
--- a/airflow/www/static/js/context/containerRef.tsx
+++ b/airflow/www/static/js/context/containerRef.tsx
@@ -19,7 +19,6 @@
 
 import React, { PropsWithChildren, useContext, useRef } from "react";
 
-// eslint-disable-next-line max-len
 const ContainerRefContext = React.createContext<
   React.RefObject<HTMLDivElement> | undefined
 >(undefined);
diff --git a/airflow/www/static/js/context/timezone.tsx b/airflow/www/static/js/context/timezone.tsx
index 85c23f497af..a1b4fd2b9cc 100644
--- a/airflow/www/static/js/context/timezone.tsx
+++ b/airflow/www/static/js/context/timezone.tsx
@@ -34,7 +34,7 @@ const TimezoneContext = React.createContext({ timezone: "UTC" });
 export const TimezoneProvider = ({ children }: PropsWithChildren) => {
   const [timezone, setTimezone] = useState(
     // @ts-ignores: defaultZone not recognize in moment.
-    (moment.defaultZone && moment.defaultZone.name) || "UTC"
+    (moment.defaultZone && moment.defaultZone.name) || "UTC",
   );
 
   const handleChange = (e: CustomEvent<string>) => {
@@ -46,7 +46,7 @@ export const TimezoneProvider = ({ children }: PropsWithChildren) => {
     return () => {
       document.removeEventListener(
         TimezoneEvent,
-        handleChange as EventListener
+        handleChange as EventListener,
       );
     };
   });
diff --git a/airflow/www/static/js/dag.js b/airflow/www/static/js/dag.js
index 159126f623f..6111a167137 100644
--- a/airflow/www/static/js/dag.js
+++ b/airflow/www/static/js/dag.js
@@ -59,7 +59,7 @@ $("#pause_resume").on("change", function onChange() {
   if (requireConfirmation) {
     // eslint-disable-next-line no-alert
     const confirmation = window.confirm(
-      `Are you sure you want to ${isPaused ? "resume" : "pause"} this DAG?`
+      `Are you sure you want to ${isPaused ? "resume" : "pause"} this DAG?`,
     );
     if (!confirmation) {
       $input.prop("checked", !isPaused);
@@ -67,7 +67,7 @@ $("#pause_resume").on("change", function onChange() {
     }
   }
   const url = `${pausedUrl}?is_paused=${isPaused}&dag_id=${encodeURIComponent(
-    id
+    id,
   )}`;
   // Remove focus on element so the tooltip will go away
   $input.trigger("blur");
@@ -92,7 +92,7 @@ $("#next-run").on("mouseover", () => {
     let newTitle = "";
     if (nextRun.createAfter) {
       newTitle += `<strong>Run After:</strong> ${formatDateTime(
-        nextRun.createAfter
+        nextRun.createAfter,
       )}<br>`;
       newTitle += `Next Run: ${approxTimeFromNow(nextRun.createAfter)}<br><br>`;
     }
@@ -113,7 +113,7 @@ $(".next-dataset-triggered").on("click", (e) => {
     openDatasetModal(dagId, summary, nextDatasets, nextDatasetsError);
   } else {
     window.location.href = `${datasetsUrl}?uri=${encodeURIComponent(
-      singleDatasetUri
+      singleDatasetUri,
     )}`;
   }
 });
diff --git a/airflow/www/static/js/dag/Main.tsx b/airflow/www/static/js/dag/Main.tsx
index 1a0fb7b54a8..25fdcd4a1cd 100644
--- a/airflow/www/static/js/dag/Main.tsx
+++ b/airflow/www/static/js/dag/Main.tsx
@@ -53,22 +53,22 @@ const collapsedWidth = "32px";
 const gridWidthKey = "grid-width";
 const saveWidth = debounce(
   (w) => localStorage.setItem(gridWidthKey, w),
-  hoverDelay
+  hoverDelay,
 );
 
 const footerHeight =
   parseInt(
     getComputedStyle(
-      document.getElementsByTagName("body")[0]
+      document.getElementsByTagName("body")[0],
     ).paddingBottom.replace("px", ""),
-    10
+    10,
   ) || 0;
 const headerHeight =
   parseInt(
     getComputedStyle(
-      document.getElementsByTagName("body")[0]
+      document.getElementsByTagName("body")[0],
     ).paddingTop.replace("px", ""),
-    10
+    10,
   ) || 0;
 
 const Main = () => {
@@ -101,7 +101,7 @@ const Main = () => {
   // Add a debounced delay to not constantly trigger highlighting certain task states
   const onStatusHover = debounce(
     (state) => setHoveredTaskState(state),
-    hoverDelay
+    hoverDelay,
   );
 
   const onStatusLeave = () => {
@@ -126,7 +126,7 @@ const Main = () => {
           setIsGridCollapsed(collapse);
         }
     },
-    [isGridCollapsed]
+    [isGridCollapsed],
   );
 
   const resize = useCallback(
@@ -157,7 +157,7 @@ const Main = () => {
       }
       oldGridElX.current = e.x;
     },
-    [gridRef, onToggleGridCollapse]
+    [gridRef, onToggleGridCollapse],
   );
 
   useEffect(() => {
@@ -182,7 +182,7 @@ const Main = () => {
 
   useKeysPress(
     keyboardShortcutIdentifier.toggleShortcutCheatSheet,
-    onToggleShortcut
+    onToggleShortcut,
   );
 
   const isFullScreen = isFilterCollapsed && isGridCollapsed;
diff --git a/airflow/www/static/js/dag/details/NotesAccordion.test.tsx b/airflow/www/static/js/dag/details/NotesAccordion.test.tsx
index a70b73446bc..2664ae782c1 100644
--- a/airflow/www/static/js/dag/details/NotesAccordion.test.tsx
+++ b/airflow/www/static/js/dag/details/NotesAccordion.test.tsx
@@ -46,7 +46,7 @@ describe("Test DagRun / Task Instance Notes", () => {
 
     const { getByText } = render(
       <NotesAccordion dagId="dagId" runId="runId" />,
-      { wrapper: Wrapper }
+      { wrapper: Wrapper },
     );
 
     await waitFor(() => expect(getByText("Add Note")).toBeVisible());
@@ -60,7 +60,7 @@ describe("Test DagRun / Task Instance Notes", () => {
 
     const { queryByText, getByText } = render(
       <NotesAccordion dagId="dagId" runId="runId" initialValue="I am a note" />,
-      { wrapper: Wrapper }
+      { wrapper: Wrapper },
     );
 
     const changeButton = getByText("Edit Note");
@@ -82,7 +82,7 @@ describe("Test DagRun / Task Instance Notes", () => {
 
     const { getByText } = render(
       <NotesAccordion dagId="dagId" runId="runId" initialValue="I am a note" />,
-      { wrapper: Wrapper }
+      { wrapper: Wrapper },
     );
 
     const changeButton = getByText("Edit Note");
@@ -99,7 +99,7 @@ describe("Test DagRun / Task Instance Notes", () => {
 
     const { getByTestId, getByText, queryByText } = render(
       <NotesAccordion dagId="dagId" runId="runId" initialValue="I am a note" />,
-      { wrapper: Wrapper }
+      { wrapper: Wrapper },
     );
 
     const changeButton = getByText("Edit Note");
diff --git a/airflow/www/static/js/dag/details/NotesAccordion.tsx b/airflow/www/static/js/dag/details/NotesAccordion.tsx
index 04408d72511..12ae6031c0e 100644
--- a/airflow/www/static/js/dag/details/NotesAccordion.tsx
+++ b/airflow/www/static/js/dag/details/NotesAccordion.tsx
@@ -61,7 +61,7 @@ const NotesAccordion = ({
   const [note, setNote] = useState(initialValue ?? "");
   const [editMode, setEditMode] = useState(false);
   const [accordionIndexes, setAccordionIndexes] = useState<Array<number>>(
-    canEdit ? [0] : []
+    canEdit ? [0] : [],
   );
   const textAreaRef = useRef<HTMLTextAreaElement>(null);
 
diff --git a/airflow/www/static/js/dag/details/dag/Calendar.tsx b/airflow/www/static/js/dag/details/dag/Calendar.tsx
index 0ac7e739bc6..66708b13eba 100644
--- a/airflow/www/static/js/dag/details/dag/Calendar.tsx
+++ b/airflow/www/static/js/dag/details/dag/Calendar.tsx
@@ -92,7 +92,7 @@ const Calendar = () => {
         type: "heatmap",
         coordinateSystem: "calendar",
         data: proportions.filter(
-          (p) => typeof p[0] === "string" && p[0].startsWith(y.toString())
+          (p) => typeof p[0] === "string" && p[0].startsWith(y.toString()),
         ),
       });
       seriesOption.push({
@@ -102,7 +102,7 @@ const Calendar = () => {
         symbolSize: 4,
         data: dagStates
           .filter(
-            (ds) => ds.date.startsWith(y.toString()) && ds.state === "planned"
+            (ds) => ds.date.startsWith(y.toString()) && ds.state === "planned",
           )
           .map((ds) => [ds.date, ds.count]),
       });
diff --git a/airflow/www/static/js/dag/details/dag/Dag.tsx b/airflow/www/static/js/dag/details/dag/Dag.tsx
index 7cfd36f5164..c3ecefe0d4c 100644
--- a/airflow/www/static/js/dag/details/dag/Dag.tsx
+++ b/airflow/www/static/js/dag/details/dag/Dag.tsx
@@ -117,7 +117,7 @@ const Dag = () => {
             </Flex>
           </Td>
           <Td>{key}</Td>
-        </Tr>
+        </Tr>,
       );
     }
   });
@@ -142,7 +142,7 @@ const Dag = () => {
   // render dag and dag_details data
   const renderDagDetailsData = (
     data: DAG | DAGDetail,
-    excludekeys: Array<string>
+    excludekeys: Array<string>,
   ) => (
     <>
       {Object.entries(data).map(
@@ -152,7 +152,7 @@ const Dag = () => {
               <Td>{toSentenceCase(key)}</Td>
               <Td>{parseStringData(String(value))}</Td>
             </Tr>
-          )
+          ),
       )}
     </>
   );
@@ -251,7 +251,7 @@ const Dag = () => {
                         {JSON.stringify(
                           dagDetailsData.datasetExpression,
                           null,
-                          2
+                          2,
                         )}
                       </pre>
                     </Code>
@@ -284,7 +284,7 @@ const Dag = () => {
                           size="xs"
                           href={tagIndexUrl.replace(
                             "_TAG_NAME_",
-                            tag?.name || ""
+                            tag?.name || "",
                           )}
                           mr={3}
                         >
diff --git a/airflow/www/static/js/dag/details/dag/RunDuration.tsx b/airflow/www/static/js/dag/details/dag/RunDuration.tsx
index c7aaad9255b..a5693ff41e5 100644
--- a/airflow/www/static/js/dag/details/dag/RunDuration.tsx
+++ b/airflow/www/static/js/dag/details/dag/RunDuration.tsx
@@ -28,7 +28,7 @@ const LANDING_TIME_KEY = "showLandingTimes";
 const RunDuration = () => {
   const storedValue = localStorage.getItem(LANDING_TIME_KEY);
   const [showLandingTimes, setShowLandingTimes] = useState(
-    storedValue ? JSON.parse(storedValue) : true
+    storedValue ? JSON.parse(storedValue) : true,
   );
   const onChange = () => {
     localStorage.setItem(LANDING_TIME_KEY, (!showLandingTimes).toString());
diff --git a/airflow/www/static/js/dag/details/dag/RunDurationChart.tsx b/airflow/www/static/js/dag/details/dag/RunDurationChart.tsx
index 023e0990519..6e174279f50 100644
--- a/airflow/www/static/js/dag/details/dag/RunDurationChart.tsx
+++ b/airflow/www/static/js/dag/details/dag/RunDurationChart.tsx
@@ -58,19 +58,19 @@ const RunDurationChart = ({ showLandingTimes }: Props) => {
   const durations: (RunDuration | {})[] = dagRuns.map((dagRun) => {
     // @ts-ignore
     const landingDuration = moment.duration(
-      getDuration(dagRun.dataIntervalEnd, dagRun.queuedAt || dagRun.startDate)
+      getDuration(dagRun.dataIntervalEnd, dagRun.queuedAt || dagRun.startDate),
     );
 
     // @ts-ignore
     const runDuration = moment.duration(
-      dagRun.startDate ? getDuration(dagRun.startDate, dagRun?.endDate) : 0
+      dagRun.startDate ? getDuration(dagRun.startDate, dagRun?.endDate) : 0,
     );
 
     // @ts-ignore
     const queuedDuration = moment.duration(
       dagRun.queuedAt && dagRun.startDate && dagRun.startDate > dagRun.queuedAt
         ? getDuration(dagRun.queuedAt, dagRun.startDate)
-        : 0
+        : 0,
     );
 
     if (showLandingTimes) {
diff --git a/airflow/www/static/js/dag/details/dagCode/CodeBlock.tsx b/airflow/www/static/js/dag/details/dagCode/CodeBlock.tsx
index baa673bbe11..fd97c698477 100644
--- a/airflow/www/static/js/dag/details/dagCode/CodeBlock.tsx
+++ b/airflow/www/static/js/dag/details/dagCode/CodeBlock.tsx
@@ -31,7 +31,7 @@ interface Props {
 }
 export default function CodeBlock({ code }: Props) {
   const [codeWrap, setCodeWrap] = useState(
-    getMetaValue("default_wrap") === "True"
+    getMetaValue("default_wrap") === "True",
   );
   const toggleCodeWrap = () => setCodeWrap(!codeWrap);
 
diff --git a/airflow/www/static/js/dag/details/dagRun/ClearRun.tsx b/airflow/www/static/js/dag/details/dagRun/ClearRun.tsx
index fdc111654f9..507c619675c 100644
--- a/airflow/www/static/js/dag/details/dagRun/ClearRun.tsx
+++ b/airflow/www/static/js/dag/details/dagRun/ClearRun.tsx
@@ -76,12 +76,12 @@ const reducer = (state: State, action: Action): State => {
 const ClearRun = ({ runId, ...otherProps }: Props) => {
   const { mutateAsync: onClear, isLoading: isClearLoading } = useClearRun(
     dagId,
-    runId
+    runId,
   );
 
   const { mutateAsync: onQueue, isLoading: isQueueLoading } = useQueueRun(
     dagId,
-    runId
+    runId,
   );
 
   const clearExistingTasks = () => {
@@ -100,7 +100,7 @@ const ClearRun = ({ runId, ...otherProps }: Props) => {
 
   const storedValue = localStorage.getItem("doNotShowClearRunModal");
   const [doNotShowAgain, setDoNotShowAgain] = useState(
-    storedValue ? JSON.parse(storedValue) : false
+    storedValue ? JSON.parse(storedValue) : false,
   );
 
   const confirmClearExisting = () => {
@@ -124,7 +124,7 @@ const ClearRun = ({ runId, ...otherProps }: Props) => {
   const confirmAction = () => {
     localStorage.setItem(
       "doNotShowClearRunModal",
-      JSON.stringify(doNotShowAgain)
+      JSON.stringify(doNotShowAgain),
     );
     if (stateReducer.confirmingAction === "failed") {
       clearFailedTasks();
diff --git a/airflow/www/static/js/dag/details/dagRun/DatasetTriggerEvents.tsx b/airflow/www/static/js/dag/details/dagRun/DatasetTriggerEvents.tsx
index 5fa585830b4..e635e611749 100644
--- a/airflow/www/static/js/dag/details/dagRun/DatasetTriggerEvents.tsx
+++ b/airflow/www/static/js/dag/details/dagRun/DatasetTriggerEvents.tsx
@@ -63,7 +63,7 @@ const DatasetTriggerEvents = ({ runId }: Props) => {
         accessor: "extra",
       },
     ],
-    []
+    [],
   );
 
   const data = useMemo(() => datasetEvents, [datasetEvents]);
diff --git a/airflow/www/static/js/dag/details/dagRun/MarkRunAs.tsx b/airflow/www/static/js/dag/details/dagRun/MarkRunAs.tsx
index f42cc3ac4f6..d2caa212947 100644
--- a/airflow/www/static/js/dag/details/dagRun/MarkRunAs.tsx
+++ b/airflow/www/static/js/dag/details/dagRun/MarkRunAs.tsx
@@ -84,7 +84,7 @@ const MarkRunAs = ({ runId, state, ...otherProps }: Props) => {
 
   const storedValue = localStorage.getItem("doNotShowMarkRunModal");
   const [doNotShowAgain, setDoNotShowAgain] = useState(
-    storedValue ? JSON.parse(storedValue) : false
+    storedValue ? JSON.parse(storedValue) : false,
   );
 
   const markAsFailed = () => {
@@ -114,7 +114,7 @@ const MarkRunAs = ({ runId, state, ...otherProps }: Props) => {
   const confirmAction = () => {
     localStorage.setItem(
       "doNotShowMarkRunModal",
-      JSON.stringify(doNotShowAgain)
+      JSON.stringify(doNotShowAgain),
     );
     if (stateReducer.confirmingAction === "failed") {
       markAsFailed();
diff --git a/airflow/www/static/js/dag/details/gantt/Row.tsx b/airflow/www/static/js/dag/details/gantt/Row.tsx
index 9abd626962e..f671f5a7542 100644
--- a/airflow/www/static/js/dag/details/gantt/Row.tsx
+++ b/airflow/www/static/js/dag/details/gantt/Row.tsx
@@ -37,7 +37,7 @@ interface Props {
   setGanttDuration?: (
     queued: string | null | undefined,
     start: string | null | undefined,
-    end: string | null | undefined
+    end: string | null | undefined,
   ) => void;
 }
 
@@ -75,7 +75,7 @@ const Row = ({
       setGanttDuration(
         instance?.queuedDttm,
         instance?.startDate,
-        instance?.endDate
+        instance?.endDate,
       );
     }
   }, [instance, setGanttDuration]);
@@ -85,7 +85,7 @@ const Row = ({
     tiHistory?.taskInstances?.forEach(
       (tih) =>
         setGanttDuration &&
-        setGanttDuration(tih.queuedWhen, tih.startDate, tih.endDate)
+        setGanttDuration(tih.queuedWhen, tih.startDate, tih.endDate),
     );
   }, [tiHistory, setGanttDuration]);
 
@@ -125,7 +125,7 @@ const Row = ({
                 ganttStartDate={ganttStartDate}
                 ganttEndDate={ganttEndDate}
               />
-            )
+            ),
         )}
       </Box>
       {isOpen &&
diff --git a/airflow/www/static/js/dag/details/gantt/index.tsx b/airflow/www/static/js/dag/details/gantt/index.tsx
index 1ed5c353deb..ca5fcd0c09a 100644
--- a/airflow/www/static/js/dag/details/gantt/index.tsx
+++ b/airflow/www/static/js/dag/details/gantt/index.tsx
@@ -118,7 +118,7 @@ const Gantt = ({
     (
       queued: string | null | undefined,
       start: string | null | undefined,
-      end: string | null | undefined
+      end: string | null | undefined,
     ) => {
       if (
         queued &&
@@ -139,7 +139,7 @@ const Gantt = ({
         setEndDate(moment().add(1, "s").toString());
       }
     },
-    [startDate, endDate, setStartDate, setEndDate]
+    [startDate, endDate, setStartDate, setEndDate],
   );
 
   // Reset state when the dagrun changes
diff --git a/airflow/www/static/js/dag/details/graph/DagNode.test.tsx b/airflow/www/static/js/dag/details/graph/DagNode.test.tsx
index 7c6dea7584a..1a91225faea 100644
--- a/airflow/www/static/js/dag/details/graph/DagNode.test.tsx
+++ b/airflow/www/static/js/dag/details/graph/DagNode.test.tsx
@@ -92,7 +92,7 @@ describe("Test Graph Node", () => {
       />,
       {
         wrapper: Wrapper,
-      }
+      },
     );
 
     expect(getByText("success")).toBeInTheDocument();
@@ -107,7 +107,7 @@ describe("Test Graph Node", () => {
       />,
       {
         wrapper: Wrapper,
-      }
+      },
     );
 
     expect(getByText("success")).toBeInTheDocument();
@@ -119,7 +119,7 @@ describe("Test Graph Node", () => {
       <DagNode {...mockNode} data={{ ...mockNode.data, isActive: false }} />,
       {
         wrapper: Wrapper,
-      }
+      },
     );
 
     expect(getByTestId("node")).toHaveStyle("opacity: 0.3");
diff --git a/airflow/www/static/js/dag/details/graph/index.tsx b/airflow/www/static/js/dag/details/graph/index.tsx
index 7293cc99dfb..0ce05df7e1b 100644
--- a/airflow/www/static/js/dag/details/graph/index.tsx
+++ b/airflow/www/static/js/dag/details/graph/index.tsx
@@ -66,7 +66,7 @@ type DatasetExpression = {
 const getUpstreamDatasets = (
   datasetExpression: DatasetExpression,
   firstChildId: string,
-  level = 0
+  level = 0,
 ) => {
   let edges: WebserverEdge[] = [];
   let nodes: DepNode[] = [];
@@ -119,7 +119,7 @@ const getUpstreamDatasets = (
       const data = getUpstreamDatasets(
         nestedExpression,
         `${type}-${level}`,
-        level + 1
+        level + 1,
       );
       edges = [...edges, ...data.edges];
       nodes = [...nodes, ...data.nodes];
@@ -160,7 +160,7 @@ const Graph = ({ openGroupIds, onToggleGroups, hoveredTaskState }: Props) => {
   const { nodes: upstreamDatasetNodes, edges: upstreamDatasetEdges } =
     getUpstreamDatasets(
       dagDetails.datasetExpression as DatasetExpression,
-      data?.nodes?.children?.[0]?.id ?? ""
+      data?.nodes?.children?.[0]?.id ?? "",
     );
 
   const {
@@ -187,7 +187,7 @@ const Graph = ({ openGroupIds, onToggleGroups, hoveredTaskState }: Props) => {
     datasetEdges = [...upstreamDatasetEdges];
     datasetsCollection?.datasets?.forEach((dataset) => {
       const producingTask = dataset?.producingTasks?.find(
-        (t) => t.dagId === dagId
+        (t) => t.dagId === dagId,
       );
       if (dataset.uri) {
         // check that the task is in the graph
@@ -279,7 +279,7 @@ const Graph = ({ openGroupIds, onToggleGroups, hoveredTaskState }: Props) => {
       isZoomedOut,
       upstreamDatasetEvents,
       downstreamDatasetEvents,
-    ]
+    ],
   );
 
   // Zoom to/from nodes when changing selection, maintain zoom level when changing task selection
@@ -299,7 +299,7 @@ const Graph = ({ openGroupIds, onToggleGroups, hoveredTaskState }: Props) => {
 
   // merge & dedupe edges
   const flatEdges = [...(graphData?.edges || []), ...(nodeEdges || [])].filter(
-    (value, index, self) => index === self.findIndex((t) => t.id === value.id)
+    (value, index, self) => index === self.findIndex((t) => t.id === value.id),
   );
 
   const edges = buildEdges({
diff --git a/airflow/www/static/js/dag/details/graph/utils.ts b/airflow/www/static/js/dag/details/graph/utils.ts
index 93c8b9c2530..a4bc3e5c5da 100644
--- a/airflow/www/static/js/dag/details/graph/utils.ts
+++ b/airflow/www/static/js/dag/details/graph/utils.ts
@@ -153,7 +153,7 @@ export const nodeColor = ({
 
 export const nodeStrokeColor = (
   { data: { isSelected } }: ReactFlowNode<CustomNodeProps>,
-  colors: Record<string, string>
+  colors: Record<string, string>,
 ) => (isSelected ? colors.blue[500] : "");
 
 interface Edge extends ElkExtendedEdge {
@@ -200,7 +200,7 @@ export const buildEdges = ({
               isZoomedOut,
               ...e.data.rest,
               labels: e.data.rest.labels?.map((l) =>
-                l.x && l.y ? { ...l, x: l.x + parentX, y: l.y + parentY } : l
+                l.x && l.y ? { ...l, x: l.x + parentX, y: l.y + parentY } : l,
               ),
               isSelected,
               sections: e.data.rest.sections.map((s) => ({
diff --git a/airflow/www/static/js/dag/details/index.tsx b/airflow/www/static/js/dag/details/index.tsx
index 0046d339972..aa3e42ab3f3 100644
--- a/airflow/www/static/js/dag/details/index.tsx
+++ b/airflow/www/static/js/dag/details/index.tsx
@@ -117,7 +117,7 @@ const indexToTab = (
   runId: string | null,
   taskId: string | null,
   isGroup: boolean,
-  isMappedTaskSummary: boolean
+  isMappedTaskSummary: boolean,
 ) => {
   const isTaskInstance = !!(
     taskId &&
@@ -210,13 +210,20 @@ const Details = ({
         runId,
         taskId,
         isGroup,
-        isMappedTaskSummary
+        isMappedTaskSummary,
       );
       if (newTab) params.set(TAB_PARAM, newTab);
       else params.delete(TAB_PARAM);
       setSearchParams(params);
     },
-    [setSearchParams, searchParams, runId, taskId, isGroup, isMappedTaskSummary]
+    [
+      setSearchParams,
+      searchParams,
+      runId,
+      taskId,
+      isGroup,
+      isMappedTaskSummary,
+    ],
   );
 
   useEffect(() => {
diff --git a/airflow/www/static/js/dag/details/task/AllTaskDuration.tsx b/airflow/www/static/js/dag/details/task/AllTaskDuration.tsx
index ebb10a52750..5380faecbbb 100644
--- a/airflow/www/static/js/dag/details/task/AllTaskDuration.tsx
+++ b/airflow/www/static/js/dag/details/task/AllTaskDuration.tsx
@@ -82,7 +82,7 @@ const AllTaskDuration = ({ showBar }: Props) => {
         .duration(
           instance.startDate
             ? getDuration(instance.startDate, instance?.endDate)
-            : 0
+            : 0,
         )
         .asSeconds();
 
diff --git a/airflow/www/static/js/dag/details/task/TaskDuration.tsx b/airflow/www/static/js/dag/details/task/TaskDuration.tsx
index f3a6ba0531c..bc20962a480 100644
--- a/airflow/www/static/js/dag/details/task/TaskDuration.tsx
+++ b/airflow/www/static/js/dag/details/task/TaskDuration.tsx
@@ -65,7 +65,7 @@ const TaskDuration = () => {
     const runDuration = moment.duration(
       instance.startDate
         ? getDuration(instance.startDate, instance?.endDate)
-        : 0
+        : 0,
     );
 
     // @ts-ignore
@@ -74,7 +74,7 @@ const TaskDuration = () => {
         instance.startDate &&
         instance.startDate > instance.queuedDttm
         ? getDuration(instance.queuedDttm, instance.startDate)
-        : 0
+        : 0,
     );
 
     if (runDuration.asSeconds() > maxDuration) {
@@ -139,7 +139,7 @@ const TaskDuration = () => {
       ${
         queuedDttm
           ? `Total duration: ${(queuedDurationUnit + runDurationUnit).toFixed(
-              2
+              2,
             )} ${unit}<br>`
           : ""
       }
diff --git a/airflow/www/static/js/dag/details/taskInstance/DatasetUpdateEvents.tsx b/airflow/www/static/js/dag/details/taskInstance/DatasetUpdateEvents.tsx
index 48c987a8296..29a74d1a767 100644
--- a/airflow/www/static/js/dag/details/taskInstance/DatasetUpdateEvents.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/DatasetUpdateEvents.tsx
@@ -66,7 +66,7 @@ const DatasetUpdateEvents = ({ runId, taskId }: Props) => {
         accessor: "extra",
       },
     ],
-    []
+    [],
   );
 
   const data = useMemo(() => datasetEvents, [datasetEvents]);
diff --git a/airflow/www/static/js/dag/details/taskInstance/Details.tsx b/airflow/www/static/js/dag/details/taskInstance/Details.tsx
index d5bb4210d25..27bfa6bb1fd 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Details.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/Details.tsx
@@ -63,7 +63,7 @@ const Details = ({ gridInstance, taskInstance, group }: Props) => {
   });
 
   const [selectedTryNumber, setSelectedTryNumber] = useState(
-    finalTryNumber || 1
+    finalTryNumber || 1,
   );
 
   // update state if the final try number changes
@@ -72,7 +72,7 @@ const Details = ({ gridInstance, taskInstance, group }: Props) => {
   }, [finalTryNumber]);
 
   const tryInstance = tiHistory?.taskInstances?.find(
-    (ti) => ti.tryNumber === selectedTryNumber
+    (ti) => ti.tryNumber === selectedTryNumber,
   );
 
   const instance =
@@ -121,7 +121,7 @@ const Details = ({ gridInstance, taskInstance, group }: Props) => {
                 {key}
               </Flex>
             </Td>
-          </Tr>
+          </Tr>,
         );
       }
     });
@@ -334,7 +334,7 @@ const Details = ({ gridInstance, taskInstance, group }: Props) => {
                   if (typeof field !== "string") {
                     try {
                       field = JSON.stringify(field);
-                    } catch (e) {
+                    } catch (_e) {
                       // skip
                     }
                   }
diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/LogBlock.tsx b/airflow/www/static/js/dag/details/taskInstance/Logs/LogBlock.tsx
index 3cab6085062..ab33c5b4169 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Logs/LogBlock.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/Logs/LogBlock.tsx
@@ -74,7 +74,7 @@ const LogBlock = ({
     if (target.id?.endsWith(unfoldIdSuffix)) {
       const gId = target.id.substring(
         0,
-        target.id.length - unfoldIdSuffix.length
+        target.id.length - unfoldIdSuffix.length,
       );
       // remember the folding state if logs re-loaded
       unfoldedGroups.push(gId);
@@ -87,7 +87,7 @@ const LogBlock = ({
     } else if (target.id?.endsWith(foldIdSuffix)) {
       const gId = target.id.substring(
         0,
-        target.id.length - foldIdSuffix.length
+        target.id.length - foldIdSuffix.length,
       );
       // remember the folding state if logs re-loaded
       if (unfoldedGroups.indexOf(gId) >= 0) {
diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/LogLink.test.tsx b/airflow/www/static/js/dag/details/taskInstance/Logs/LogLink.test.tsx
index 3c20df7eedf..1845491d02e 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Logs/LogLink.test.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/Logs/LogLink.test.tsx
@@ -33,7 +33,7 @@ describe("Test LogLink Component.", () => {
         taskId="dummyTaskId"
         executionDate="2020:01:01T01:00+00:00"
         isInternal
-      />
+      />,
     );
 
     expect(getByText("Download")).toBeDefined();
@@ -42,8 +42,8 @@ describe("Test LogLink Component.", () => {
     expect(linkElement).not.toHaveAttribute("target");
     expect(
       linkElement?.href.includes(
-        `?dag_id=dummyDagId&task_id=dummyTaskId&execution_date=2020%3A01%3A01T01%3A00%2B00%3A00&map_index=-1&try_number=${tryNumber}&format=file`
-      )
+        `?dag_id=dummyDagId&task_id=dummyTaskId&execution_date=2020%3A01%3A01T01%3A00%2B00%3A00&map_index=-1&try_number=${tryNumber}&format=file`,
+      ),
     ).toBeTruthy();
   });
 
@@ -57,7 +57,7 @@ describe("Test LogLink Component.", () => {
         taskId="dummyTaskId"
         executionDate="2020:01:01T01:00+00:00"
         mapIndex={mapIndex}
-      />
+      />,
     );
 
     expect(getByText(tryNumber)).toBeDefined();
@@ -66,8 +66,8 @@ describe("Test LogLink Component.", () => {
     expect(linkElement).toHaveAttribute("target", "_blank");
     expect(
       linkElement?.href.includes(
-        `?dag_id=dummyDagId&task_id=dummyTaskId&execution_date=2020%3A01%3A01T01%3A00%2B00%3A00&map_index=${mapIndex}&try_number=${tryNumber}`
-      )
+        `?dag_id=dummyDagId&task_id=dummyTaskId&execution_date=2020%3A01%3A01T01%3A00%2B00%3A00&map_index=${mapIndex}&try_number=${tryNumber}`,
+      ),
     ).toBeTruthy();
   });
 });
diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/LogLink.tsx b/airflow/www/static/js/dag/details/taskInstance/Logs/LogLink.tsx
index 72a203c7bf8..f853ff75890 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Logs/LogLink.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/Logs/LogLink.tsx
@@ -46,11 +46,11 @@ const LogLink = ({
   let fullMetadataUrl = `${
     isInternal ? logsWithMetadataUrl : externalLogUrl
   }?dag_id=${encodeURIComponent(dagId)}&task_id=${encodeURIComponent(
-    taskId
+    taskId,
   )}&execution_date=${encodeURIComponent(
-    executionDate
+    executionDate,
   )}&map_index=${encodeURIComponent(
-    mapIndex?.toString() ?? "-1"
+    mapIndex?.toString() ?? "-1",
   )}&try_number=${tryNumber}`;
 
   if (isInternal) {
diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/index.test.tsx b/airflow/www/static/js/dag/details/taskInstance/Logs/index.test.tsx
index 74db45a7d2f..abc0a9ef8d0 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Logs/index.test.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/Logs/index.test.tsx
@@ -21,6 +21,7 @@
 
 import React from "react";
 import { render, fireEvent } from "@testing-library/react";
+import { ChakraProvider } from "@chakra-ui/react";
 import type { UseQueryResult } from "react-query";
 
 import * as utils from "src/utils";
@@ -104,27 +105,29 @@ describe("Test Logs Component.", () => {
   test("Test Logs Content", () => {
     const tryNumber = 2;
     const { getByText } = render(
-      <Logs
-        dagId="dummyDagId"
-        dagRunId="dummyDagRunId"
-        taskId="dummyTaskId"
-        executionDate="2020:01:01T01:00+00:00"
-        tryNumber={tryNumber}
-      />
+      <ChakraProvider>
+        <Logs
+          dagId="dummyDagId"
+          dagRunId="dummyDagRunId"
+          taskId="dummyTaskId"
+          executionDate="2020:01:01T01:00+00:00"
+          tryNumber={tryNumber}
+        />
+      </ChakraProvider>,
     );
     expect(
       getByText("[2022-06-04, 00:00:01 UTC] {taskinstance.py:1329} INFO -", {
         exact: false,
-      })
+      }),
     ).toBeDefined();
     expect(
       getByText(
         "[2022-06-04, 00:00:01 UTC] {standard_task_runner.py:81} INFO - Job 1626: Subtask section_1.get_entry_group",
-        { exact: false }
-      )
+        { exact: false },
+      ),
     ).toBeDefined();
     expect(
-      getByText("AIRFLOW_CTX_DAG_ID=test_ui_grid", { exact: false })
+      getByText("AIRFLOW_CTX_DAG_ID=test_ui_grid", { exact: false }),
     ).toBeDefined();
 
     expect(useTaskLogMock).toHaveBeenLastCalledWith({
@@ -149,14 +152,16 @@ describe("Test Logs Component.", () => {
 
       const tryNumber = 2;
       const { getByTestId } = render(
-        <Logs
-          dagId="dummyDagId"
-          dagRunId="dummyDagRunId"
-          taskId="dummyTaskId"
-          executionDate="2020:01:01T01:00+00:00"
-          mapIndex={1}
-          tryNumber={tryNumber}
-        />
+        <ChakraProvider>
+          <Logs
+            dagId="dummyDagId"
+            dagRunId="dummyDagRunId"
+            taskId="dummyTaskId"
+            executionDate="2020:01:01T01:00+00:00"
+            mapIndex={1}
+            tryNumber={tryNumber}
+          />
+        </ChakraProvider>,
       );
 
       const wrapCheckbox = getByTestId("wrap-checkbox");
@@ -165,34 +170,36 @@ describe("Test Logs Component.", () => {
       } else {
         expect(wrapCheckbox.getAttribute("data-checked")).toBeNull();
       }
-    }
+    },
   );
 
   test("Test Logs Content Mapped Task", () => {
     const tryNumber = 2;
     const { getByText } = render(
-      <Logs
-        dagId="dummyDagId"
-        dagRunId="dummyDagRunId"
-        taskId="dummyTaskId"
-        executionDate="2020:01:01T01:00+00:00"
-        mapIndex={1}
-        tryNumber={tryNumber}
-      />
+      <ChakraProvider>
+        <Logs
+          dagId="dummyDagId"
+          dagRunId="dummyDagRunId"
+          taskId="dummyTaskId"
+          executionDate="2020:01:01T01:00+00:00"
+          mapIndex={1}
+          tryNumber={tryNumber}
+        />
+      </ChakraProvider>,
     );
     expect(
       getByText("[2022-06-04, 00:00:01 UTC] {taskinstance.py:1329} INFO -", {
         exact: false,
-      })
+      }),
     ).toBeDefined();
     expect(
       getByText(
         "[2022-06-04, 00:00:01 UTC] {standard_task_runner.py:81} INFO - Job 1626: Subtask section_1.get_entry_group",
-        { exact: false }
-      )
+        { exact: false },
+      ),
     ).toBeDefined();
     expect(
-      getByText("AIRFLOW_CTX_DAG_ID=test_ui_grid", { exact: false })
+      getByText("AIRFLOW_CTX_DAG_ID=test_ui_grid", { exact: false }),
     ).toBeDefined();
 
     expect(useTaskLogMock).toHaveBeenLastCalledWith({
@@ -207,13 +214,15 @@ describe("Test Logs Component.", () => {
   test("Test Logs Attempt Select Button", () => {
     const tryNumber = 2;
     const { getByText, getByTestId } = render(
-      <Logs
-        dagId="dummyDagId"
-        dagRunId="dummyDagRunId"
-        taskId="dummyTaskId"
-        executionDate="2020:01:01T01:00+00:00"
-        tryNumber={tryNumber}
-      />
+      <ChakraProvider>
+        <Logs
+          dagId="dummyDagId"
+          dagRunId="dummyDagRunId"
+          taskId="dummyTaskId"
+          executionDate="2020:01:01T01:00+00:00"
+          tryNumber={tryNumber}
+        />
+      </ChakraProvider>,
     );
     // Internal Log Attempt buttons.
     expect(getByText("1")).toBeDefined();
diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/index.tsx b/airflow/www/static/js/dag/details/taskInstance/Logs/index.tsx
index 2647e590d84..40a3e26e198 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Logs/index.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/Logs/index.tsx
@@ -56,7 +56,7 @@ const logLevelOptions: Array<LogLevelOption> = Object.values(LogLevel).map(
     label: value,
     value,
     color: logLevelColorMapping[value],
-  })
+  }),
 );
 
 interface Props {
@@ -79,11 +79,11 @@ const Logs = ({
   state,
 }: Props) => {
   const [selectedTryNumber, setSelectedTryNumber] = useState(
-    finalTryNumber || 1
+    finalTryNumber || 1,
   );
   const [wrap, setWrap] = useState(getMetaValue("default_wrap") === "True");
   const [logLevelFilters, setLogLevelFilters] = useState<Array<LogLevelOption>>(
-    []
+    [],
   );
   const [fileSourceFilters, setFileSourceFilters] = useState<
     Array<FileSourceOption>
@@ -127,9 +127,9 @@ const Logs = ({
         timezone,
         logLevelFilters.map((option) => option.value),
         fileSourceFilters.map((option) => option.value),
-        unfoldedLogGroups
+        unfoldedLogGroups,
       ),
-    [data, fileSourceFilters, logLevelFilters, timezone, unfoldedLogGroups]
+    [data, fileSourceFilters, logLevelFilters, timezone, unfoldedLogGroups],
   );
 
   useEffect(() => {
@@ -145,7 +145,7 @@ const Logs = ({
       fileSourceFilters.reduce(
         (isSourceMissing, option) =>
           isSourceMissing || !fileSources.includes(option.value),
-        false
+        false,
       )
     ) {
       setFileSourceFilters([]);
@@ -168,7 +168,7 @@ const Logs = ({
                   tryNumber={tryNumber}
                   mapIndex={mapIndex}
                 />
-              )
+              ),
             )}
           </Flex>
         </Box>
diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/utils.test.tsx b/airflow/www/static/js/dag/details/taskInstance/Logs/utils.test.tsx
index 57cad4314f6..d2549939a3c 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Logs/utils.test.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/Logs/utils.test.tsx
@@ -81,7 +81,7 @@ describe("Test Logs Utils.", () => {
       "UTC",
       [],
       [],
-      []
+      [],
     );
 
     expect(parsedLogs).toContain("2022-06-04, 00:00:01 UTC");
@@ -102,7 +102,7 @@ describe("Test Logs Utils.", () => {
       expectedNumberOfFileSources: 4,
       expectedLogs: `${mockTaskLogInfoBegin}${mockTaskLogInfoEndWithWarningAndUrl.replace(
         mockTaskLogWarning,
-        ""
+        "",
       )}`,
     },
     {
@@ -124,7 +124,7 @@ describe("Test Logs Utils.", () => {
         null,
         logLevelFilters,
         [],
-        []
+        [],
       );
 
       expect(fileSources).toHaveLength(expectedNumberOfFileSources);
@@ -135,7 +135,7 @@ describe("Test Logs Utils.", () => {
       lines.forEach((line, index) => {
         expect(line).toContain(expectedLines[index]);
       });
-    }
+    },
   );
 
   test("parseLogs function with file source filter", () => {
@@ -144,7 +144,7 @@ describe("Test Logs Utils.", () => {
       null,
       [],
       ["taskinstance.py"],
-      []
+      [],
     );
     const expectedLogs = `[2022-06-04 00:00:01,901] {taskinstance.py:1132} INFO - Dependencies all met for <TaskInstance: test_ui_grid.section_1.get_entry_group scheduled__2022-06-03T00:00:00+00:00 [queued]>
 [2022-06-04 00:00:01,906] {taskinstance.py:1132} INFO - Dependencies all met for <TaskInstance: test_ui_grid.section_1.get_entry_group scheduled__2022-06-03T00:00:00+00:00 [queued]>
@@ -175,7 +175,7 @@ ${mockTaskLogWarning}
       null,
       [LogLevel.INFO, LogLevel.WARNING],
       ["taskinstance.py"],
-      []
+      [],
     );
 
     expect(fileSources).toEqual([
@@ -195,19 +195,19 @@ ${mockTaskLogWarning}
       null,
       [LogLevel.INFO, LogLevel.WARNING],
       ["taskinstance.py"],
-      []
+      [],
     );
 
     // remove the last line which is empty
     const lines = parsedLogs!.split("\n").filter((line) => line.length > 0);
     expect(lines[lines.length - 1]).toContain(
-      '<a href="https://apple.com" target="_blank" rel="noopener noreferrer" style="color: blue; text-decoration: underline;">https://apple.com</a>'
+      '<a href="https://apple.com" target="_blank" rel="noopener noreferrer" style="color: blue; text-decoration: underline;">https://apple.com</a>',
     );
     expect(lines[lines.length - 1]).toContain(
-      '<a href="https://google.com" target="_blank" rel="noopener noreferrer" style="color: blue; text-decoration: underline;">https://google.com</a>'
+      '<a href="https://google.com" target="_blank" rel="noopener noreferrer" style="color: blue; text-decoration: underline;">https://google.com</a>',
     );
     expect(lines[lines.length - 1]).toContain(
-      '<a href="https://something.logs/_dashboard/?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-1d,to:now))&amp;_a=(columns:!(_source),filters:!((&#x27;$state&#x27;:(store:appState))))" target="_blank" rel="noopener noreferrer" style="color: blue; text-decoration: underline;">https://something.logs/_dashboard/?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-1d,to:now))&amp;_a=(columns:!(_source),filters:!((&#x27;$state&#x27;:(store:appState))))</a>'
+      '<a href="https://something.logs/_dashboard/?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-1d,to:now))&amp;_a=(columns:!(_source),filters:!((&#x27;$state&#x27;:(store:appState))))" target="_blank" rel="noopener noreferrer" style="color: blue; text-decoration: underline;">https://something.logs/_dashboard/?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-1d,to:now))&amp;_a=(columns:!(_source),filters:!((&#x27;$state&#x27;:(store:appState))))</a>',
     );
   });
 });
diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/utils.ts b/airflow/www/static/js/dag/details/taskInstance/Logs/utils.ts
index b35a713484e..31fc4f3e3fb 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Logs/utils.ts
+++ b/airflow/www/static/js/dag/details/taskInstance/Logs/utils.ts
@@ -61,7 +61,7 @@ export const parseLogs = (
   timezone: string | null,
   logLevelFilters: Array<string>,
   fileSourceFilters: Array<string>,
-  unfoldedLogGroups: Array<string>
+  unfoldedLogGroups: Array<string>,
 ) => {
   if (!data) {
     return {};
@@ -72,7 +72,7 @@ export const parseLogs = (
 
   try {
     lines = data.split("\n");
-  } catch (err) {
+  } catch (_err) {
     warning = "Unable to show logs. There was an error parsing logs.";
     return { warning };
   }
@@ -141,7 +141,7 @@ export const parseLogs = (
       errorKeywords,
       warningKeywords,
       logGroupStart,
-      logGroupEnd
+      logGroupEnd,
     );
     // for lines with color convert to nice HTML
     const coloredLine = ansiUp.ansi_to_html(parsedLine);
@@ -151,7 +151,7 @@ export const parseLogs = (
       .replace(
         urlRegex,
         (url) =>
-          `<a href="${url}" target="_blank" rel="noopener noreferrer" style="color: blue; text-decoration: underline;">${url}</a>`
+          `<a href="${url}" target="_blank" rel="noopener noreferrer" style="color: blue; text-decoration: underline;">${url}</a>`,
       )
       .replace(logGroupStart, (textLine) => {
         const unfoldIdSuffix = "_unfold";
@@ -167,7 +167,7 @@ export const parseLogs = (
       })
       .replace(
         logGroupEnd,
-        " <span style='color:#0060df;'>&#9650;&#9650;&#9650; Log group end</span></span>"
+        " <span style='color:#0060df;'>&#9650;&#9650;&#9650; Log group end</span></span>",
       );
     parsedLines.push(lineWithHyperlinks);
   });
diff --git a/airflow/www/static/js/dag/details/taskInstance/MappedInstances.tsx b/airflow/www/static/js/dag/details/taskInstance/MappedInstances.tsx
index 68db258d109..d126a113fca 100644
--- a/airflow/www/static/js/dag/details/taskInstance/MappedInstances.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/MappedInstances.tsx
@@ -85,7 +85,7 @@ const MappedInstances = ({ dagId, runId, taskId, onRowClicked }: Props) => {
         startDate: <Time dateTime={mi.startDate} />,
         endDate: <Time dateTime={mi.endDate} />,
       })),
-    [taskInstances]
+    [taskInstances],
   );
 
   const columns = useMemo(
@@ -121,7 +121,7 @@ const MappedInstances = ({ dagId, runId, taskId, onRowClicked }: Props) => {
         disableSortBy: true,
       },
     ],
-    []
+    [],
   );
 
   return (
diff --git a/airflow/www/static/js/dag/details/taskInstance/Nav.tsx b/airflow/www/static/js/dag/details/taskInstance/Nav.tsx
index e24088085a9..36853f7b17b 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Nav.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/Nav.tsx
@@ -63,7 +63,7 @@ const Nav = forwardRef<HTMLDivElement, Props>(
 
     const subDagLink = appendSearchParams(
       gridUrl.replace(dagId, `${dagId}.${taskId}`),
-      subDagParams
+      subDagParams,
     );
 
     // TODO: base subdag zooming as its own attribute instead of via operator name
@@ -84,7 +84,7 @@ const Nav = forwardRef<HTMLDivElement, Props>(
         </LinkButton>
       </Flex>
     );
-  }
+  },
 );
 
 export default Nav;
diff --git a/airflow/www/static/js/dag/details/taskInstance/Xcom/XcomEntry.tsx b/airflow/www/static/js/dag/details/taskInstance/Xcom/XcomEntry.tsx
index 4e2b9dc2dc5..da59d520ced 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Xcom/XcomEntry.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/Xcom/XcomEntry.tsx
@@ -79,7 +79,7 @@ const XcomEntry = ({
     if (typeof xcom.value !== "string") {
       try {
         xcomString = JSON.stringify(xcom.value);
-      } catch (e) {
+      } catch (_e) {
         // skip
       }
     } else {
diff --git a/airflow/www/static/js/dag/details/taskInstance/taskActions/MarkInstanceAs.tsx b/airflow/www/static/js/dag/details/taskInstance/taskActions/MarkInstanceAs.tsx
index d2373b4dddc..b00d61d8ebd 100644
--- a/airflow/www/static/js/dag/details/taskInstance/taskActions/MarkInstanceAs.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/taskActions/MarkInstanceAs.tsx
@@ -109,7 +109,7 @@ const MarkAsModal = ({
       downstream,
       mapIndexes,
       enabled: isOpen,
-    }
+    },
   );
 
   const { mutateAsync: markFailedMutation, isLoading: isMarkFailedLoading } =
diff --git a/airflow/www/static/js/dag/grid/dagRuns/Bar.tsx b/airflow/www/static/js/dag/grid/dagRuns/Bar.tsx
index 0e8bd1d4c50..c6395084a74 100644
--- a/airflow/www/static/js/dag/grid/dagRuns/Bar.tsx
+++ b/airflow/www/static/js/dag/grid/dagRuns/Bar.tsx
@@ -66,8 +66,8 @@ const DagRunBar = ({
     if (!isSelected) {
       const els = Array.from(
         containerRef?.current?.getElementsByClassName(
-          `js-${runId}`
-        ) as HTMLCollectionOf<HTMLElement>
+          `js-${runId}`,
+        ) as HTMLCollectionOf<HTMLElement>,
       );
       els.forEach((e) => {
         e.style.backgroundColor = hoverBlue;
@@ -77,8 +77,8 @@ const DagRunBar = ({
   const onMouseLeave = () => {
     const els = Array.from(
       containerRef?.current?.getElementsByClassName(
-        `js-${runId}`
-      ) as HTMLCollectionOf<HTMLElement>
+        `js-${runId}`,
+      ) as HTMLCollectionOf<HTMLElement>,
     );
     els.forEach((e) => {
       e.style.backgroundColor = "";
diff --git a/airflow/www/static/js/dag/grid/dagRuns/index.test.tsx b/airflow/www/static/js/dag/grid/dagRuns/index.test.tsx
index ebbb1f86e0c..bcb688ed4e0 100644
--- a/airflow/www/static/js/dag/grid/dagRuns/index.test.tsx
+++ b/airflow/www/static/js/dag/grid/dagRuns/index.test.tsx
@@ -90,7 +90,7 @@ describe("Test DagRuns", () => {
       () =>
         ({
           data,
-        } as any)
+        }) as any,
     );
     const { queryAllByTestId, getByText, queryByText } = render(<DagRuns />, {
       wrapper: TableWrapper,
@@ -102,7 +102,7 @@ describe("Test DagRuns", () => {
     expect(getByText("00:01:26")).toBeInTheDocument();
     expect(
       // @ts-ignore
-      queryByText(moment.utc(dagRuns[0].executionDate).format("MMM DD, HH:mm"))
+      queryByText(moment.utc(dagRuns[0].executionDate).format("MMM DD, HH:mm")),
     ).toBeNull();
 
     spy.mockRestore();
@@ -117,12 +117,12 @@ describe("Test DagRuns", () => {
       () =>
         ({
           data,
-        } as any)
+        }) as any,
     );
     const { getByText } = render(<DagRuns />, { wrapper: TableWrapper });
     expect(
       // @ts-ignore
-      getByText(moment.utc(datestring).format("MMM DD, HH:mm"))
+      getByText(moment.utc(datestring).format("MMM DD, HH:mm")),
     ).toBeInTheDocument();
     spy.mockRestore();
   });
@@ -136,12 +136,12 @@ describe("Test DagRuns", () => {
       () =>
         ({
           data,
-        } as any)
+        }) as any,
     );
     const { queryAllByText } = render(<DagRuns />, { wrapper: TableWrapper });
     expect(
       // @ts-ignore
-      queryAllByText(moment.utc(datestring).format("MMM DD, HH:mm"))
+      queryAllByText(moment.utc(datestring).format("MMM DD, HH:mm")),
     ).toHaveLength(1);
     spy.mockRestore();
   });
@@ -155,12 +155,12 @@ describe("Test DagRuns", () => {
       () =>
         ({
           data,
-        } as any)
+        }) as any,
     );
     const { queryAllByText } = render(<DagRuns />, { wrapper: TableWrapper });
     expect(
       // @ts-ignore
-      queryAllByText(moment.utc(datestring).format("MMM DD, HH:mm"))
+      queryAllByText(moment.utc(datestring).format("MMM DD, HH:mm")),
     ).toHaveLength(2);
     spy.mockRestore();
   });
@@ -170,7 +170,7 @@ describe("Test DagRuns", () => {
       () =>
         ({
           data: { groups: {}, dagRuns: [] },
-        } as any)
+        }) as any,
     );
 
     const { queryByTestId } = render(<DagRuns />, { wrapper: TableWrapper });
diff --git a/airflow/www/static/js/dag/grid/index.test.tsx b/airflow/www/static/js/dag/grid/index.test.tsx
index b6eb000b768..dd5ff6eaa01 100644
--- a/airflow/www/static/js/dag/grid/index.test.tsx
+++ b/airflow/www/static/js/dag/grid/index.test.tsx
@@ -195,7 +195,7 @@ describe("Test ToggleGroups", () => {
   test("Group defaults to closed", () => {
     const { getByText, getAllByTestId } = render(
       <Grid openGroupIds={[]} onToggleGroups={() => {}} />,
-      { wrapper: Wrapper }
+      { wrapper: Wrapper },
     );
 
     const groupName1 = getByText("group_1");
@@ -232,7 +232,7 @@ describe("Test ToggleGroups", () => {
   test("Expand/collapse buttons toggle nested groups", async () => {
     const { getByText, queryAllByTestId, getByTitle } = render(
       <GridWithGroups />,
-      { wrapper: Wrapper }
+      { wrapper: Wrapper },
     );
 
     const expandButton = getByTitle(EXPAND);
@@ -248,21 +248,21 @@ describe("Test ToggleGroups", () => {
     fireEvent.click(collapseButton);
 
     await waitFor(() =>
-      expect(queryAllByTestId("task-instance")).toHaveLength(2)
+      expect(queryAllByTestId("task-instance")).toHaveLength(2),
     );
     expect(queryAllByTestId("close-group")).toHaveLength(0);
 
     fireEvent.click(expandButton);
 
     await waitFor(() =>
-      expect(queryAllByTestId("task-instance")).toHaveLength(6)
+      expect(queryAllByTestId("task-instance")).toHaveLength(6),
     );
   });
 
   test("Toggling a group does not affect groups with the same label", async () => {
     const { getByTitle, getByTestId, queryAllByTestId } = render(
       <GridWithGroups />,
-      { wrapper: Wrapper }
+      { wrapper: Wrapper },
     );
 
     const expandButton = getByTitle(EXPAND);
@@ -270,7 +270,7 @@ describe("Test ToggleGroups", () => {
     fireEvent.click(expandButton);
 
     await waitFor(() =>
-      expect(queryAllByTestId("task-instance")).toHaveLength(6)
+      expect(queryAllByTestId("task-instance")).toHaveLength(6),
     );
 
     const group2Task1 = getByTestId("group_2.task_1");
@@ -280,7 +280,7 @@ describe("Test ToggleGroups", () => {
 
     // We only expect group_2.task_1 to be affected, not group_1.task_1
     await waitFor(() =>
-      expect(queryAllByTestId("task-instance")).toHaveLength(5)
+      expect(queryAllByTestId("task-instance")).toHaveLength(5),
     );
   });
 
@@ -288,7 +288,7 @@ describe("Test ToggleGroups", () => {
     const openGroupIds = ["group_1", "group_1.task_1"];
     const { rerender, queryAllByTestId } = render(
       <Grid openGroupIds={openGroupIds} onToggleGroups={() => {}} />,
-      { wrapper: Wrapper }
+      { wrapper: Wrapper },
     );
 
     const taskElements = queryAllByTestId("task-instance");
@@ -303,7 +303,7 @@ describe("Test ToggleGroups", () => {
         hoveredTaskState="success"
         openGroupIds={openGroupIds}
         onToggleGroups={() => {}}
-      />
+      />,
     );
 
     taskElements.forEach((taskElement) => {
@@ -315,7 +315,7 @@ describe("Test ToggleGroups", () => {
         hoveredTaskState="failed"
         openGroupIds={openGroupIds}
         onToggleGroups={() => {}}
-      />
+      />,
     );
 
     taskElements.forEach((taskElement) => {
diff --git a/airflow/www/static/js/dag/grid/renderTaskRows.test.tsx b/airflow/www/static/js/dag/grid/renderTaskRows.test.tsx
index e9aec21e218..f082c0768fe 100644
--- a/airflow/www/static/js/dag/grid/renderTaskRows.test.tsx
+++ b/airflow/www/static/js/dag/grid/renderTaskRows.test.tsx
@@ -71,7 +71,7 @@ describe("Test renderTaskRows", () => {
 
     const { queryByTestId, getByText } = render(
       <>{renderTaskRows({ task, dagRunIds: ["run1"] })}</>,
-      { wrapper: TableWrapper }
+      { wrapper: TableWrapper },
     );
 
     expect(getByText("group_1")).toBeInTheDocument();
@@ -96,7 +96,7 @@ describe("Test renderTaskRows", () => {
 
     const { queryByTestId, getByText } = render(
       <>{renderTaskRows({ task, dagRunIds: [] })}</>,
-      { wrapper: TableWrapper }
+      { wrapper: TableWrapper },
     );
 
     expect(getByText("group_1")).toBeInTheDocument();
@@ -128,7 +128,7 @@ describe("Test renderTaskRows", () => {
 
     const { queryByTestId, getByText } = render(
       <>{renderTaskRows({ task, dagRunIds: ["run1"] })}</>,
-      { wrapper: TableWrapper }
+      { wrapper: TableWrapper },
     );
 
     expect(getByText("group_1")).toBeInTheDocument();
diff --git a/airflow/www/static/js/dag/index.tsx b/airflow/www/static/js/dag/index.tsx
index 47ed13c9a02..d8f2fd2e1c8 100644
--- a/airflow/www/static/js/dag/index.tsx
+++ b/airflow/www/static/js/dag/index.tsx
@@ -49,6 +49,6 @@ if (mainElement) {
   reactRoot.render(
     <App cache={cache}>
       <Main />
-    </App>
+    </App>,
   );
 }
diff --git a/airflow/www/static/js/dag/nav/FilterBar.tsx b/airflow/www/static/js/dag/nav/FilterBar.tsx
index db642393926..6035107cf3b 100644
--- a/airflow/www/static/js/dag/nav/FilterBar.tsx
+++ b/airflow/www/static/js/dag/nav/FilterBar.tsx
@@ -143,7 +143,7 @@ const FilterBar = () => {
                 typeOptions.every((typeOption) => "value" in typeOption)
               ) {
                 onRunTypeChange(
-                  typeOptions.map((typeOption) => typeOption.value)
+                  typeOptions.map((typeOption) => typeOption.value),
                 );
               }
             }}
@@ -162,7 +162,7 @@ const FilterBar = () => {
                 stateOptions.every((stateOption) => "value" in stateOption)
               ) {
                 onRunStateChange(
-                  stateOptions.map((stateOption) => stateOption.value)
+                  stateOptions.map((stateOption) => stateOption.value),
                 );
               }
             }}
diff --git a/airflow/www/static/js/dag/nav/LegendRow.test.tsx b/airflow/www/static/js/dag/nav/LegendRow.test.tsx
index 69a8d230e26..8aff5b2bccb 100644
--- a/airflow/www/static/js/dag/nav/LegendRow.test.tsx
+++ b/airflow/www/static/js/dag/nav/LegendRow.test.tsx
@@ -29,7 +29,7 @@ describe("Test LegendRow", () => {
     const onStatusHover = jest.fn();
     const onStatusLeave = jest.fn();
     const { getByText } = render(
-      <LegendRow onStatusHover={onStatusHover} onStatusLeave={onStatusLeave} />
+      <LegendRow onStatusHover={onStatusHover} onStatusLeave={onStatusLeave} />,
     );
 
     Object.keys(stateColors).forEach((taskState) => {
@@ -52,15 +52,15 @@ describe("Test LegendRow", () => {
         <LegendRow
           onStatusHover={onStatusHover}
           onStatusLeave={onStatusLeave}
-        />
+        />,
       );
       const successElement = getByText(state);
       fireEvent.mouseEnter(successElement);
       await waitFor(() =>
-        expect(onStatusHover).toHaveBeenCalledWith(expectedSetValue)
+        expect(onStatusHover).toHaveBeenCalledWith(expectedSetValue),
       );
       fireEvent.mouseLeave(successElement);
       await waitFor(() => expect(onStatusLeave).toHaveBeenLastCalledWith());
-    }
+    },
   );
 });
diff --git a/airflow/www/static/js/dag/useFilters.test.tsx b/airflow/www/static/js/dag/useFilters.test.tsx
index bc532df0eee..b44c18c00b7 100644
--- a/airflow/www/static/js/dag/useFilters.test.tsx
+++ b/airflow/www/static/js/dag/useFilters.test.tsx
@@ -51,7 +51,7 @@ describe("Test useFilters hook", () => {
   test("Initial values when url does not have query params", async () => {
     const { result } = renderHook<FilterHookReturn, undefined>(
       () => useFilters(),
-      { wrapper: RouterWrapper }
+      { wrapper: RouterWrapper },
     );
     const {
       filters: {
@@ -109,12 +109,12 @@ describe("Test useFilters hook", () => {
   ])("Test $fnName functions", async ({ fnName, paramName, paramValue }) => {
     const { result } = renderHook<FilterHookReturn, undefined>(
       () => useFilters(),
-      { wrapper: RouterWrapper }
+      { wrapper: RouterWrapper },
     );
 
     await act(async () => {
       result.current[fnName](
-        paramValue as "string" & string[] & FilterTasksProps
+        paramValue as "string" & string[] & FilterTasksProps,
       );
     });
 
@@ -138,7 +138,7 @@ describe("Test useFilters hook", () => {
   test("Test onFilterTasksChange ", async () => {
     const { result } = renderHook<FilterHookReturn, undefined>(
       () => useFilters(),
-      { wrapper: RouterWrapper }
+      { wrapper: RouterWrapper },
     );
 
     await act(async () => {
diff --git a/airflow/www/static/js/dag/useFilters.tsx b/airflow/www/static/js/dag/useFilters.tsx
index 5a1a49b6865..3dd33f72285 100644
--- a/airflow/www/static/js/dag/useFilters.tsx
+++ b/airflow/www/static/js/dag/useFilters.tsx
@@ -57,7 +57,7 @@ export interface UtilFunctions {
   onRunStateChange: (values: string[]) => void;
   onFilterTasksChange: (args: FilterTasksProps) => void;
   transformArrayToMultiSelectOptions: (
-    options: string[] | null
+    options: string[] | null,
   ) => { label: string; value: string }[];
   clearFilters: () => void;
   resetRoot: () => void;
@@ -133,7 +133,7 @@ const useFilters = (): FilterHookReturn => {
     };
 
   const transformArrayToMultiSelectOptions = (
-    options: string[] | null
+    options: string[] | null,
   ): { label: string; value: string }[] =>
     options === null
       ? []
@@ -142,16 +142,16 @@ const useFilters = (): FilterHookReturn => {
   const onBaseDateChange = makeOnChangeFn(
     BASE_DATE_PARAM,
     // @ts-ignore
-    (localDate: string) => moment(localDate).utc().format()
+    (localDate: string) => moment(localDate).utc().format(),
   );
   const onNumRunsChange = makeOnChangeFn(NUM_RUNS_PARAM);
   const onRunTypeChange = makeMultiSelectOnChangeFn(
     RUN_TYPE_PARAM,
-    filtersOptions.runTypes
+    filtersOptions.runTypes,
   );
   const onRunStateChange = makeMultiSelectOnChangeFn(
     RUN_STATE_PARAM,
-    filtersOptions.dagStates
+    filtersOptions.dagStates,
   );
 
   const onFilterTasksChange = ({
diff --git a/airflow/www/static/js/dag_dependencies.js b/airflow/www/static/js/dag_dependencies.js
index e1af621a1bb..32660509ae4 100644
--- a/airflow/www/static/js/dag_dependencies.js
+++ b/airflow/www/static/js/dag_dependencies.js
@@ -31,7 +31,7 @@ const duration = 500;
 let nodes = dagNodes;
 const fullNodes = nodes;
 const filteredNodes = nodes.filter((n) =>
-  edges.some((e) => e.u === n.id || e.v === n.id)
+  edges.some((e) => e.u === n.id || e.v === n.id),
 );
 
 // Preparation of DagreD3 data structures
@@ -70,7 +70,7 @@ function setUpZoomSupport() {
   zoom = d3.behavior.zoom().on("zoom", () => {
     innerSvg.attr(
       "transform",
-      `translate(${d3.event.translate})scale(${d3.event.scale})`
+      `translate(${d3.event.translate})scale(${d3.event.scale})`,
     );
   });
   svg.call(zoom);
@@ -88,7 +88,7 @@ function setUpZoomSupport() {
   // Calculate applicable scale for zoom
   const zoomScale = Math.min(
     Math.min(width / graphWidth, height / graphHeight),
-    1.5 // cap zoom level to 1.5 so nodes are not too large
+    1.5, // cap zoom level to 1.5 so nodes are not too large
   );
 
   zoom.translate([width / 2 - (graphWidth * zoomScale) / 2 + padding, padding]);
diff --git a/airflow/www/static/js/dags.js b/airflow/www/static/js/dags.js
index da4b0cb6b61..ae80f83184a 100644
--- a/airflow/www/static/js/dags.js
+++ b/airflow/www/static/js/dags.js
@@ -102,7 +102,7 @@ $.each($("[id^=toggle]"), function toggleId() {
   $input.on("change", () => {
     const isPaused = $input.is(":checked");
     const url = `${pausedUrl}?is_paused=${isPaused}&dag_id=${encodeURIComponent(
-      dagId
+      dagId,
     )}`;
     $input.removeClass("switch-input--error");
     // Remove focus on element so the tooltip will go away
@@ -177,8 +177,8 @@ function lastDagRunsHandler(error, json) {
       .attr(
         "href",
         `${graphUrl}?dag_id=${encodeURIComponent(
-          dagId
-        )}&execution_date=${encodeURIComponent(executionDate)}`
+          dagId,
+        )}&execution_date=${encodeURIComponent(executionDate)}`,
       )
       .html("")
       .insert(isoDateToTimeEl.bind(null, executionDate, { title: false }));
@@ -196,7 +196,7 @@ d3.selectAll(".js-last-run-tooltip").on(
   function mouseoverLastRun() {
     const lastRunData = JSON.parse(d3.select(this).attr("data-lastrun"));
     d3.select(this).attr("data-original-title", tiTooltip(lastRunData));
-  }
+  },
 );
 
 function formatCount(count) {
@@ -240,7 +240,7 @@ function drawDagStats(selector, dagId, states) {
     .append("circle")
     .attr(
       "id",
-      (d) => `${selector}-${dagId.replace(/\./g, "_")}-${d.state || "none"}`
+      (d) => `${selector}-${dagId.replace(/\./g, "_")}-${d.state || "none"}`,
     )
     .attr("class", "has-svg-tooltip")
     .attr("stroke-width", (d) => {
@@ -314,7 +314,7 @@ function nextRunDatasetsSummaryHandler(_, json) {
           $(el).text(newSummary);
         }
       }
-    }
+    },
   );
 }
 
@@ -439,7 +439,7 @@ function handleRefresh({ activeDagsOnly = false } = {}) {
     d3.json(taskStatsUrl)
       .header("X-CSRFToken", csrfToken)
       .post(params, (error, json) =>
-        refreshDagStatsHandler(TASK_INSTANCE, json)
+        refreshDagStatsHandler(TASK_INSTANCE, json),
       );
     d3.json(nextRunDatasetsSummaryUrl)
       .header("X-CSRFToken", csrfToken)
@@ -502,7 +502,7 @@ $(".js-next-run-tooltip").each((i, run) => {
       const [createAfter, intervalStart, intervalEnd] = nextRunData.split(",");
       let newTitle = "";
       newTitle += `<strong>Run After:</strong> ${formatDateTime(
-        createAfter
+        createAfter,
       )}<br>`;
       newTitle += `Next Run: ${approxTimeFromNow(createAfter)}<br><br>`;
       newTitle += "<strong>Data Interval</strong><br>";
@@ -536,7 +536,7 @@ $(".next-dataset-triggered").on("click", (e) => {
       openDatasetModal(dagId, summary, nextDatasets[dagId], nextDatasetsError);
   } else {
     window.location.href = `${datasetsUrl}?uri=${encodeURIComponent(
-      singleDatasetUri
+      singleDatasetUri,
     )}`;
   }
 });
@@ -544,7 +544,7 @@ $(".next-dataset-triggered").on("click", (e) => {
 const getTooltipInfo = throttle(
   (dagId, run, setNextDatasets) =>
     getDatasetTooltipInfo(dagId, run, setNextDatasets),
-  1000
+  1000,
 );
 
 $(".js-dataset-triggered").each((i, cell) => {
diff --git a/airflow/www/static/js/datasets/CreateDatasetEvent.tsx b/airflow/www/static/js/datasets/CreateDatasetEvent.tsx
index 39de1143715..9c7fd2b081c 100644
--- a/airflow/www/static/js/datasets/CreateDatasetEvent.tsx
+++ b/airflow/www/static/js/datasets/CreateDatasetEvent.tsx
@@ -45,7 +45,7 @@ interface Props {
 function checkJsonString(str: string) {
   try {
     JSON.parse(str);
-  } catch (e) {
+  } catch (_e) {
     return false;
   }
   return true;
diff --git a/airflow/www/static/js/datasets/DatasetDetails.tsx b/airflow/www/static/js/datasets/DatasetDetails.tsx
index 715c2bf3086..fdb9d9dce74 100644
--- a/airflow/www/static/js/datasets/DatasetDetails.tsx
+++ b/airflow/www/static/js/datasets/DatasetDetails.tsx
@@ -58,7 +58,7 @@ const DatasetDetails = ({ uri }: Props) => {
               if (!task.taskId || !task.dagId) return null;
               const url = `${gridUrl?.replace(
                 "__DAG_ID__",
-                task.dagId
+                task.dagId,
               )}?&task_id=${encodeURIComponent(task.taskId)}`;
               return (
                 <Link
diff --git a/airflow/www/static/js/datasets/DatasetEvents.tsx b/airflow/www/static/js/datasets/DatasetEvents.tsx
index 5cec8803082..ff4a54783bc 100644
--- a/airflow/www/static/js/datasets/DatasetEvents.tsx
+++ b/airflow/www/static/js/datasets/DatasetEvents.tsx
@@ -80,7 +80,7 @@ const Events = ({ datasetId, showLabel }: Props) => {
         accessor: "extra",
       },
     ],
-    []
+    [],
   );
 
   const data = useMemo(() => datasetEvents, [datasetEvents]);
diff --git a/airflow/www/static/js/datasets/DatasetsList.test.tsx b/airflow/www/static/js/datasets/DatasetsList.test.tsx
index 89d0e9f4905..8875a832d37 100644
--- a/airflow/www/static/js/datasets/DatasetsList.test.tsx
+++ b/airflow/www/static/js/datasets/DatasetsList.test.tsx
@@ -88,7 +88,7 @@ describe("Test Datasets List", () => {
 
     const { getByText, queryAllByTestId } = render(
       <DatasetsList onSelect={() => {}} />,
-      { wrapper: Wrapper }
+      { wrapper: Wrapper },
     );
 
     const listItems = queryAllByTestId("dataset-list-item");
@@ -112,7 +112,7 @@ describe("Test Datasets List", () => {
 
     const { getByText, queryAllByTestId, getByTestId } = render(
       <DatasetsList onSelect={() => {}} />,
-      { wrapper: Wrapper }
+      { wrapper: Wrapper },
     );
 
     const listItems = queryAllByTestId("dataset-list-item");
diff --git a/airflow/www/static/js/datasets/DatasetsList.tsx b/airflow/www/static/js/datasets/DatasetsList.tsx
index ffc0c4a08e7..f1c4a6596a6 100644
--- a/airflow/www/static/js/datasets/DatasetsList.tsx
+++ b/airflow/www/static/js/datasets/DatasetsList.tsx
@@ -93,7 +93,7 @@ const DatasetsList = ({ onSelect }: Props) => {
         Cell: TimeCell,
       },
     ],
-    []
+    [],
   );
 
   const data = useMemo(() => datasets, [datasets]);
diff --git a/airflow/www/static/js/datasets/Graph/index.tsx b/airflow/www/static/js/datasets/Graph/index.tsx
index 9157a8a1a26..13699614283 100644
--- a/airflow/www/static/js/datasets/Graph/index.tsx
+++ b/airflow/www/static/js/datasets/Graph/index.tsx
@@ -94,7 +94,7 @@ const Graph = ({ selectedNodeId, onSelect }: Props) => {
         },
         isSelected: selectedNodeId === c.value.label,
         isHighlighted: edges.some(
-          (e) => e.data.rest.isSelected && e.id.includes(c.id)
+          (e) => e.data.rest.isSelected && e.id.includes(c.id),
         ),
       },
       type: "custom",
@@ -114,7 +114,7 @@ const Graph = ({ selectedNodeId, onSelect }: Props) => {
         y + (node.data.height || 0) / 2,
         {
           duration: 1000,
-        }
+        },
       );
     }
   }, [setCenter, node]);
diff --git a/airflow/www/static/js/datasets/Main.tsx b/airflow/www/static/js/datasets/Main.tsx
index 3d9b5e51c38..2257367c154 100644
--- a/airflow/www/static/js/datasets/Main.tsx
+++ b/airflow/www/static/js/datasets/Main.tsx
@@ -99,11 +99,11 @@ const Datasets = () => {
   const containerRef = useContainerRef();
 
   const selectedUri = decodeURIComponent(
-    searchParams.get(DATASET_URI_PARAM) || ""
+    searchParams.get(DATASET_URI_PARAM) || "",
   );
 
   const selectedTimestamp = decodeURIComponent(
-    searchParams.get(TIMESTAMP_PARAM) || ""
+    searchParams.get(TIMESTAMP_PARAM) || "",
   );
   const selectedDagId = searchParams.get(DAG_ID_PARAM) || undefined;
 
@@ -118,7 +118,7 @@ const Datasets = () => {
       else params.delete(TAB_PARAM);
       setSearchParams(params);
     },
-    [setSearchParams, searchParams, selectedUri]
+    [setSearchParams, searchParams, selectedUri],
   );
 
   const onSelect = ({ uri, timestamp, dagId }: OnSelectProps = {}) => {
diff --git a/airflow/www/static/js/datasets/index.tsx b/airflow/www/static/js/datasets/index.tsx
index 63f33d91788..3572bc2112f 100644
--- a/airflow/www/static/js/datasets/index.tsx
+++ b/airflow/www/static/js/datasets/index.tsx
@@ -46,6 +46,6 @@ if (mainElement) {
   reactRoot.render(
     <App cache={cache}>
       <Datasets />
-    </App>
+    </App>,
   );
 }
diff --git a/airflow/www/static/js/datetime_utils.js b/airflow/www/static/js/datetime_utils.js
index dc910e8c23a..3833b2d7787 100644
--- a/airflow/www/static/js/datetime_utils.js
+++ b/airflow/www/static/js/datetime_utils.js
@@ -48,7 +48,7 @@ export function isoDateToTimeEl(datetime, options) {
   if (addTitle) {
     el.setAttribute(
       "title",
-      dateTimeObj.isUTC() ? "" : `UTC: ${dateTimeObj.clone().utc().format()}`
+      dateTimeObj.isUTC() ? "" : `UTC: ${dateTimeObj.clone().utc().format()}`,
     );
   }
   el.innerText = dateTimeObj.format(defaultFormat);
@@ -90,7 +90,7 @@ export function updateAllDateTimes() {
     // eslint-disable-next-line no-underscore-dangle
     if (dt._isValid) {
       $el.text(
-        dt.format($el.data("with-tz") ? defaultFormatWithTZ : defaultFormat)
+        dt.format($el.data("with-tz") ? defaultFormatWithTZ : defaultFormat),
       );
     }
     if ($el.attr("title") !== undefined) {
diff --git a/airflow/www/static/js/main.js b/airflow/www/static/js/main.js
index de62a444dbc..b936a17b65a 100644
--- a/airflow/www/static/js/main.js
+++ b/airflow/www/static/js/main.js
@@ -161,8 +161,8 @@ function initializeUITimezone() {
   if (Airflow.serverTimezone !== "UTC") {
     $("#timezone-server a").html(
       `${formatTimezone(
-        Airflow.serverTimezone
-      )} <span class="label label-primary">Server</span>`
+        Airflow.serverTimezone,
+      )} <span class="label label-primary">Server</span>`,
     );
     $("#timezone-server").show();
   }
@@ -171,7 +171,7 @@ function initializeUITimezone() {
     $("#timezone-local a")
       .attr("data-timezone", local)
       .html(
-        `${formatTimezone(local)} <span class="label label-info">Local</span>`
+        `${formatTimezone(local)} <span class="label label-info">Local</span>`,
       );
   } else {
     $("#timezone-local").hide();
@@ -186,7 +186,7 @@ function initializeUITimezone() {
       moment.tz.names().map((tzName) => {
         const category = tzName.split("/", 1)[0];
         return { category, name: tzName.replace("_", " "), tzName };
-      })
+      }),
     ),
     showHintOnFocus: "all",
     showCategoryHeader: true,
diff --git a/airflow/www/static/js/task_instances.js b/airflow/www/static/js/task_instances.js
index 47a5dccb6f3..0ae59d72d91 100644
--- a/airflow/www/static/js/task_instances.js
+++ b/airflow/www/static/js/task_instances.js
@@ -52,7 +52,7 @@ function generateTooltipDateTimes(startTime, endTime, dagTimezone) {
   if (localTZ !== "UTC") {
     startDate.tz(localTZ);
     tooltipHTML += `<br><strong>Local: ${startDate.format(
-      tzFormat
+      tzFormat,
     )}</strong><br>`;
     const localEndDate =
       endDate && endDate instanceof moment ? endDate.tz(localTZ) : endDate;
@@ -63,7 +63,7 @@ function generateTooltipDateTimes(startTime, endTime, dagTimezone) {
   if (dagTz !== "UTC" && dagTz !== localTZ) {
     startDate.tz(dagTz);
     tooltipHTML += `<br><strong>DAG's TZ: ${startDate.format(
-      tzFormat
+      tzFormat,
     )}</strong><br>`;
     const dagTZEndDate =
       endDate && endDate instanceof moment ? endDate.tz(dagTz) : endDate;
@@ -90,7 +90,7 @@ export default function tiTooltip(ti, task, { includeTryNumber = false } = {}) {
     numMap.forEach((key, val) => {
       if (key > 0) {
         tt += `<span style="margin-left: 15px">${escapeHtml(val)}: ${escapeHtml(
-          key
+          key,
         )}</span><br />`;
       }
     });
diff --git a/airflow/www/static/js/ti_log.js b/airflow/www/static/js/ti_log.js
index 1fd66acee6d..5ef7909b7ba 100644
--- a/airflow/www/static/js/ti_log.js
+++ b/airflow/www/static/js/ti_log.js
@@ -71,7 +71,7 @@ function autoTailingLog(tryNumber, metadata = null, autoTailing = false) {
   console.debug(
     `Auto-tailing log for dag_id: ${dagId}, task_id: ${taskId}, ` +
       `execution_date: ${executionDate}, map_index: ${mapIndex}, try_number: ${tryNumber}, ` +
-      `metadata: ${JSON.stringify(metadata)}`
+      `metadata: ${JSON.stringify(metadata)}`,
   );
 
   return Promise.resolve(
@@ -85,7 +85,7 @@ function autoTailingLog(tryNumber, metadata = null, autoTailing = false) {
         try_number: tryNumber,
         metadata: JSON.stringify(metadata),
       },
-    })
+    }),
   ).then((res) => {
     // Stop recursive call to backend when error occurs.
     if (!res) {
@@ -147,21 +147,21 @@ function autoTailingLog(tryNumber, metadata = null, autoTailing = false) {
           .replace(
             urlRegex,
             (url) =>
-              `<a href="${url}" target="_blank" rel="noopener noreferrer">${url}</a>`
+              `<a href="${url}" target="_blank" rel="noopener noreferrer">${url}</a>`,
           )
           .replaceAll(
             dateRegex,
             (date) =>
               `<time datetime="${date}+00:00" data-with-tz="true">${formatDateTime(
-                `${date}+00:00`
-              )}</time>`
+                `${date}+00:00`,
+              )}</time>`,
           )
           .replaceAll(
             iso8601Regex,
             (date) =>
               `<time datetime="${date}" data-with-tz="true">${formatDateTime(
-                `${date}`
-              )}</time>`
+                `${date}`,
+              )}</time>`,
           )
           .replaceAll(logGroupStart, (line) => {
             const gName = line.substring(17);
@@ -172,7 +172,7 @@ function autoTailingLog(tryNumber, metadata = null, autoTailing = false) {
           })
           .replaceAll(
             logGroupEnd,
-            " <span style='color:#0060df;'>&#9650;&#9650;&#9650; Log group end</span></span>"
+            " <span style='color:#0060df;'>&#9650;&#9650;&#9650; Log group end</span></span>",
           );
         logBlock.innerHTML += `${linkifiedMessage}`;
       });
@@ -242,7 +242,7 @@ $(document).ready(() => {
   });
 
   console.debug(
-    `Attaching log grouping event handler for ${TOTAL_ATTEMPTS} attempts`
+    `Attaching log grouping event handler for ${TOTAL_ATTEMPTS} attempts`,
   );
   for (let i = 1; i <= TOTAL_ATTEMPTS; i += 1) {
     document.getElementById(`log-group-${i}`).onclick = handleLogGroupClick;
diff --git a/airflow/www/static/js/trigger.js b/airflow/www/static/js/trigger.js
index 012930afa89..881741cdfd3 100644
--- a/airflow/www/static/js/trigger.js
+++ b/airflow/www/static/js/trigger.js
@@ -75,7 +75,7 @@ function updateJSONconf() {
           } else {
             params[keyName] = null;
           }
-        } catch (e) {
+        } catch (_e) {
           // ignore JSON parsing errors
           // we don't want to bother users during entry, error will be displayed before submit
         }
@@ -206,7 +206,7 @@ function initForm() {
           if (textValue.trim().length > 0) {
             JSON.parse(textValue);
           }
-        } catch (ex) {
+        } catch (_ex) {
           // eslint-disable-next-line no-alert
           window.alert(`Invalid JSON entered, please correct:\n\n${textValue}`);
           cm.focus();
@@ -241,7 +241,7 @@ function setRecentConfig(e) {
   try {
     dropdownJson = JSON.parse(dropdownValue);
     value = JSON.stringify(dropdownJson, null, 4);
-  } catch (err) {
+  } catch (_err) {
     // eslint-disable-next-line no-console
     console.error(`config is not valid JSON format: ${dropdownValue}`);
   }
diff --git a/airflow/www/static/js/types/api-generated.ts b/airflow/www/static/js/types/api-generated.ts
index f2c052800e4..3bc35e4be2a 100644
--- a/airflow/www/static/js/types/api-generated.ts
+++ b/airflow/www/static/js/types/api-generated.ts
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-/* eslint-disable */
+ 
 import type { CamelCasedPropertiesDeep } from "type-fest";
 /**
  * This file was auto-generated by openapi-typescript.
@@ -26,925 +26,1728 @@ import type { CamelCasedPropertiesDeep } from "type-fest";
 
 export interface paths {
   "/connections": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
+    /** List connections */
     get: operations["get_connections"];
+    put?: never;
+    /** Create a connection */
     post: operations["post_connection"];
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/connections/{connection_id}": {
-    get: operations["get_connection"];
-    delete: operations["delete_connection"];
-    patch: operations["patch_connection"];
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The connection ID. */
+        /** @description The connection ID. */
         connection_id: components["parameters"]["ConnectionID"];
       };
+      cookie?: never;
     };
+    /** Get a connection */
+    get: operations["get_connection"];
+    put?: never;
+    post?: never;
+    /** Delete a connection */
+    delete: operations["delete_connection"];
+    options?: never;
+    head?: never;
+    /** Update a connection */
+    patch: operations["patch_connection"];
+    trace?: never;
   };
   "/connections/test": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
+    get?: never;
+    put?: never;
     /**
-     * Test a connection.
+     * Test a connection
+     * @description Test a connection.
      *
-     * For security reasons, the test connection functionality is disabled by default across Airflow UI, API and CLI.
-     * For more information on capabilities of users, see the documentation:
-     * https://airflow.apache.org/docs/apache-airflow/stable/security/security_model.html#capabilities-of-authenticated-ui-users.
-     * It is strongly advised to not enable the feature until you make sure that only
-     * highly trusted UI/API users have "edit connection" permissions.
+     *     For security reasons, the test connection functionality is disabled by default across Airflow UI, API and CLI.
+     *     For more information on capabilities of users, see the documentation:
+     *     https://airflow.apache.org/docs/apache-airflow/stable/security/security_model.html#capabilities-of-authenticated-ui-users.
+     *     It is strongly advised to not enable the feature until you make sure that only
+     *     highly trusted UI/API users have "edit connection" permissions.
      *
-     * Set the "test_connection" flag to "Enabled" in the "core" section of Airflow configuration (airflow.cfg) to enable testing of collections.
-     * It can also be controlled by the environment variable `AIRFLOW__CORE__TEST_CONNECTION`.
+     *     Set the "test_connection" flag to "Enabled" in the "core" section of Airflow configuration (airflow.cfg) to enable testing of collections.
+     *     It can also be controlled by the environment variable `AIRFLOW__CORE__TEST_CONNECTION`.
      *
-     * *New in version 2.2.0*
+     *     *New in version 2.2.0*
      */
     post: operations["test_connection"];
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/dags": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
     /**
-     * List DAGs in the database.
-     * `dag_id_pattern` can be set to match dags of a specific pattern
+     * List DAGs
+     * @description List DAGs in the database.
+     *     `dag_id_pattern` can be set to match dags of a specific pattern
      */
     get: operations["get_dags"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
     /**
-     * Update DAGs of a given dag_id_pattern using UpdateMask.
-     * This endpoint allows specifying `~` as the dag_id_pattern to update all DAGs.
-     * *New in version 2.3.0*
+     * Update DAGs
+     * @description Update DAGs of a given dag_id_pattern using UpdateMask.
+     *     This endpoint allows specifying `~` as the dag_id_pattern to update all DAGs.
+     *     *New in version 2.3.0*
      */
     patch: operations["patch_dags"];
+    trace?: never;
   };
   "/dags/{dag_id}": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path: {
+        /** @description The DAG ID. */
+        dag_id: components["parameters"]["DAGID"];
+      };
+      cookie?: never;
+    };
     /**
-     * Presents only information available in database (DAGModel).
-     * If you need detailed information, consider using GET /dags/{dag_id}/details.
+     * Get basic information about a DAG
+     * @description Presents only information available in database (DAGModel).
+     *     If you need detailed information, consider using GET /dags/{dag_id}/details.
      */
     get: operations["get_dag"];
+    put?: never;
+    post?: never;
     /**
-     * Deletes all metadata related to the DAG, including finished DAG Runs and Tasks.
-     * Logs are not deleted. This action cannot be undone.
+     * Delete a DAG
+     * @description Deletes all metadata related to the DAG, including finished DAG Runs and Tasks.
+     *     Logs are not deleted. This action cannot be undone.
      *
-     * *New in version 2.2.0*
+     *     *New in version 2.2.0*
      */
     delete: operations["delete_dag"];
+    options?: never;
+    head?: never;
+    /** Update a DAG */
     patch: operations["patch_dag"];
+    trace?: never;
+  };
+  "/dags/{dag_id}/clearTaskInstances": {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
       };
+      cookie?: never;
     };
-  };
-  "/dags/{dag_id}/clearTaskInstances": {
-    /** Clears a set of task instances associated with the DAG for a specified date range. */
+    get?: never;
+    put?: never;
+    /**
+     * Clear a set of task instances
+     * @description Clears a set of task instances associated with the DAG for a specified date range.
+     */
     post: operations["post_clear_task_instances"];
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
+  };
+  "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/setNote": {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
+        /** @description The DAG run ID. */
+        dag_run_id: components["parameters"]["DAGRunID"];
+        /** @description The task ID. */
+        task_id: components["parameters"]["TaskID"];
       };
+      cookie?: never;
     };
-  };
-  "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/setNote": {
+    get?: never;
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
     /**
-     * Update the manual user note of a non-mapped Task Instance.
+     * Update the TaskInstance note.
+     * @description Update the manual user note of a non-mapped Task Instance.
      *
-     * *New in version 2.5.0*
+     *     *New in version 2.5.0*
      */
     patch: operations["set_task_instance_note"];
+    trace?: never;
+  };
+  "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/{map_index}/setNote": {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
+        /** @description The DAG run ID. */
         dag_run_id: components["parameters"]["DAGRunID"];
-        /** The task ID. */
+        /** @description The task ID. */
         task_id: components["parameters"]["TaskID"];
+        /** @description The map index. */
+        map_index: components["parameters"]["MapIndex"];
       };
+      cookie?: never;
     };
-  };
-  "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/{map_index}/setNote": {
+    get?: never;
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
     /**
-     * Update the manual user note of a mapped Task Instance.
+     * Update the TaskInstance note.
+     * @description Update the manual user note of a mapped Task Instance.
      *
-     * *New in version 2.5.0*
+     *     *New in version 2.5.0*
      */
     patch: operations["set_mapped_task_instance_note"];
+    trace?: never;
+  };
+  "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/dependencies": {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
+        /** @description The DAG run ID. */
         dag_run_id: components["parameters"]["DAGRunID"];
-        /** The task ID. */
+        /** @description The task ID. */
         task_id: components["parameters"]["TaskID"];
-        /** The map index. */
-        map_index: components["parameters"]["MapIndex"];
       };
+      cookie?: never;
     };
-  };
-  "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/dependencies": {
     /**
      * Get task dependencies blocking task from getting scheduled.
+     * @description Get task dependencies blocking task from getting scheduled.
      *
-     * *New in version 2.10.0*
+     *     *New in version 2.10.0*
      */
     get: operations["get_task_instance_dependencies"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
+  };
+  "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/{map_index}/dependencies": {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
+        /** @description The DAG run ID. */
         dag_run_id: components["parameters"]["DAGRunID"];
-        /** The task ID. */
+        /** @description The task ID. */
         task_id: components["parameters"]["TaskID"];
+        /** @description The map index. */
+        map_index: components["parameters"]["MapIndex"];
       };
+      cookie?: never;
     };
-  };
-  "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/{map_index}/dependencies": {
     /**
      * Get task dependencies blocking task from getting scheduled.
+     * @description Get task dependencies blocking task from getting scheduled.
      *
-     * *New in version 2.10.0*
+     *     *New in version 2.10.0*
      */
     get: operations["get_mapped_task_instance_dependencies"];
-    parameters: {
-      path: {
-        /** The DAG ID. */
-        dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
-        dag_run_id: components["parameters"]["DAGRunID"];
-        /** The task ID. */
-        task_id: components["parameters"]["TaskID"];
-        /** The map index. */
-        map_index: components["parameters"]["MapIndex"];
-      };
-    };
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/dags/{dag_id}/updateTaskInstancesState": {
-    /** Updates the state for multiple task instances simultaneously. */
-    post: operations["post_set_task_instances_state"];
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
       };
+      cookie?: never;
     };
+    get?: never;
+    put?: never;
+    /**
+     * Set a state of task instances
+     * @description Updates the state for multiple task instances simultaneously.
+     */
+    post: operations["post_set_task_instances_state"];
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/dags/{dag_id}/dagRuns": {
-    /** This endpoint allows specifying `~` as the dag_id to retrieve DAG runs for all DAGs. */
-    get: operations["get_dag_runs"];
-    /** This will initiate a dagrun. If DAG is paused then dagrun state will remain queued, and the task won't run. */
-    post: operations["post_dag_run"];
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
       };
+      cookie?: never;
     };
+    /**
+     * List DAG runs
+     * @description This endpoint allows specifying `~` as the dag_id to retrieve DAG runs for all DAGs.
+     */
+    get: operations["get_dag_runs"];
+    put?: never;
+    /**
+     * Trigger a new DAG run.
+     * @description This will initiate a dagrun. If DAG is paused then dagrun state will remain queued, and the task won't run.
+     */
+    post: operations["post_dag_run"];
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/dags/~/dagRuns/list": {
-    /** This endpoint is a POST to allow filtering across a large number of DAG IDs, where as a GET it would run in to maximum HTTP request URL length limit. */
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
+    get?: never;
+    put?: never;
+    /**
+     * List DAG runs (batch)
+     * @description This endpoint is a POST to allow filtering across a large number of DAG IDs, where as a GET it would run in to maximum HTTP request URL length limit.
+     */
     post: operations["get_dag_runs_batch"];
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/dags/{dag_id}/dagRuns/{dag_run_id}": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path: {
+        /** @description The DAG ID. */
+        dag_id: components["parameters"]["DAGID"];
+        /** @description The DAG run ID. */
+        dag_run_id: components["parameters"]["DAGRunID"];
+      };
+      cookie?: never;
+    };
+    /** Get a DAG run */
     get: operations["get_dag_run"];
+    put?: never;
+    post?: never;
+    /** Delete a DAG run */
     delete: operations["delete_dag_run"];
+    options?: never;
+    head?: never;
     /**
-     * Modify a DAG run.
+     * Modify a DAG run
+     * @description Modify a DAG run.
      *
-     * *New in version 2.2.0*
+     *     *New in version 2.2.0*
      */
     patch: operations["update_dag_run_state"];
+    trace?: never;
+  };
+  "/dags/{dag_id}/dagRuns/{dag_run_id}/clear": {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
+        /** @description The DAG run ID. */
         dag_run_id: components["parameters"]["DAGRunID"];
       };
+      cookie?: never;
     };
-  };
-  "/dags/{dag_id}/dagRuns/{dag_run_id}/clear": {
+    get?: never;
+    put?: never;
     /**
-     * Clear a DAG run.
+     * Clear a DAG run
+     * @description Clear a DAG run.
      *
-     * *New in version 2.4.0*
+     *     *New in version 2.4.0*
      */
     post: operations["clear_dag_run"];
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
+  };
+  "/dags/{dag_id}/dagRuns/{dag_run_id}/upstreamDatasetEvents": {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
+        /** @description The DAG run ID. */
         dag_run_id: components["parameters"]["DAGRunID"];
       };
+      cookie?: never;
     };
-  };
-  "/dags/{dag_id}/dagRuns/{dag_run_id}/upstreamDatasetEvents": {
     /**
-     * Get datasets for a dag run.
+     * Get dataset events for a DAG run
+     * @description Get datasets for a dag run.
      *
-     * *New in version 2.4.0*
+     *     *New in version 2.4.0*
      */
     get: operations["get_upstream_dataset_events"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
+  };
+  "/dags/{dag_id}/dagRuns/{dag_run_id}/setNote": {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
+        /** @description The DAG run ID. */
         dag_run_id: components["parameters"]["DAGRunID"];
       };
+      cookie?: never;
     };
-  };
-  "/dags/{dag_id}/dagRuns/{dag_run_id}/setNote": {
+    get?: never;
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
     /**
-     * Update the manual user note of a DagRun.
+     * Update the DagRun note.
+     * @description Update the manual user note of a DagRun.
      *
-     * *New in version 2.5.0*
+     *     *New in version 2.5.0*
      */
     patch: operations["set_dag_run_note"];
+    trace?: never;
+  };
+  "/dags/{dag_id}/datasets/queuedEvent/{uri}": {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
-        dag_run_id: components["parameters"]["DAGRunID"];
+        /** @description The encoded Dataset URI */
+        uri: components["parameters"]["DatasetURI"];
       };
+      cookie?: never;
     };
-  };
-  "/dags/{dag_id}/datasets/queuedEvent/{uri}": {
     /**
-     * Get a queued Dataset event for a DAG.
+     * Get a queued Dataset event for a DAG
+     * @description Get a queued Dataset event for a DAG.
      *
-     * *New in version 2.9.0*
+     *     *New in version 2.9.0*
      */
     get: operations["get_dag_dataset_queued_event"];
+    put?: never;
+    post?: never;
     /**
      * Delete a queued Dataset event for a DAG.
+     * @description Delete a queued Dataset event for a DAG.
      *
-     * *New in version 2.9.0*
+     *     *New in version 2.9.0*
      */
     delete: operations["delete_dag_dataset_queued_event"];
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
+  };
+  "/dags/{dag_id}/datasets/queuedEvent": {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The encoded Dataset URI */
-        uri: components["parameters"]["DatasetURI"];
       };
+      cookie?: never;
     };
-  };
-  "/dags/{dag_id}/datasets/queuedEvent": {
     /**
      * Get queued Dataset events for a DAG.
+     * @description Get queued Dataset events for a DAG.
      *
-     * *New in version 2.9.0*
+     *     *New in version 2.9.0*
      */
     get: operations["get_dag_dataset_queued_events"];
+    put?: never;
+    post?: never;
     /**
      * Delete queued Dataset events for a DAG.
+     * @description Delete queued Dataset events for a DAG.
      *
-     * *New in version 2.9.0*
+     *     *New in version 2.9.0*
      */
     delete: operations["delete_dag_dataset_queued_events"];
-    parameters: {
-      path: {
-        /** The DAG ID. */
-        dag_id: components["parameters"]["DAGID"];
-      };
-    };
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/parseDagFile/{file_token}": {
-    /** Request re-parsing of existing DAG files using a file token. */
-    put: operations["reparse_dag_file"];
     parameters: {
+      query?: never;
+      header?: never;
       path: {
         /**
-         * 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.
+         * @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.
          */
         file_token: components["parameters"]["FileToken"];
       };
+      cookie?: never;
     };
+    get?: never;
+    /**
+     * Request re-parsing of a DAG file
+     * @description Request re-parsing of existing DAG files using a file token.
+     */
+    put: operations["reparse_dag_file"];
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/datasets/queuedEvent/{uri}": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path: {
+        /** @description The encoded Dataset URI */
+        uri: components["parameters"]["DatasetURI"];
+      };
+      cookie?: never;
+    };
     /**
-     * Get queued Dataset events for a Dataset
+     * Get queued Dataset events for a Dataset.
+     * @description Get queued Dataset events for a Dataset
      *
-     * *New in version 2.9.0*
+     *     *New in version 2.9.0*
      */
     get: operations["get_dataset_queued_events"];
+    put?: never;
+    post?: never;
     /**
      * Delete queued Dataset events for a Dataset.
+     * @description Delete queued Dataset events for a Dataset.
      *
-     * *New in version 2.9.0*
+     *     *New in version 2.9.0*
      */
     delete: operations["delete_dataset_queued_events"];
-    parameters: {
-      path: {
-        /** The encoded Dataset URI */
-        uri: components["parameters"]["DatasetURI"];
-      };
-    };
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/eventLogs": {
-    /** List log entries from event log. */
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
+    /**
+     * List log entries
+     * @description List log entries from event log.
+     */
     get: operations["get_event_logs"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/eventLogs/{event_log_id}": {
-    get: operations["get_event_log"];
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The event log ID. */
+        /** @description The event log ID. */
         event_log_id: components["parameters"]["EventLogID"];
       };
+      cookie?: never;
     };
+    /** Get a log entry */
+    get: operations["get_event_log"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/importErrors": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
+    /** List import errors */
     get: operations["get_import_errors"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/importErrors/{import_error_id}": {
-    get: operations["get_import_error"];
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The import error ID. */
+        /** @description The import error ID. */
         import_error_id: components["parameters"]["ImportErrorID"];
       };
+      cookie?: never;
     };
+    /** Get an import error */
+    get: operations["get_import_error"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/pools": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
+    /** List pools */
     get: operations["get_pools"];
+    put?: never;
+    /** Create a pool */
     post: operations["post_pool"];
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/pools/{pool_name}": {
-    get: operations["get_pool"];
-    delete: operations["delete_pool"];
-    patch: operations["patch_pool"];
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The pool name. */
+        /** @description The pool name. */
         pool_name: components["parameters"]["PoolName"];
       };
+      cookie?: never;
     };
+    /** Get a pool */
+    get: operations["get_pool"];
+    put?: never;
+    post?: never;
+    /** Delete a pool */
+    delete: operations["delete_pool"];
+    options?: never;
+    head?: never;
+    /** Update a pool */
+    patch: operations["patch_pool"];
+    trace?: never;
   };
   "/providers": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
     /**
-     * Get a list of providers.
+     * List providers
+     * @description Get a list of providers.
      *
-     * *New in version 2.1.0*
+     *     *New in version 2.1.0*
      */
     get: operations["get_providers"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances": {
-    /** This endpoint allows specifying `~` as the dag_id, dag_run_id to retrieve DAG runs for all DAGs and DAG runs. */
-    get: operations["get_task_instances"];
     parameters: {
-      path: {
-        /** The DAG ID. */
-        dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
-        dag_run_id: components["parameters"]["DAGRunID"];
-      };
-      query: {
+      query?: {
         /**
-         * Returns objects greater or equal to the specified date.
+         * @description Returns objects greater or equal to the specified date.
          *
-         * This can be combined with execution_date_lte parameter to receive only the selected period.
+         *     This can be combined with execution_date_lte parameter to receive only the selected period.
          */
         execution_date_gte?: components["parameters"]["FilterExecutionDateGTE"];
         /**
-         * Returns objects less than or equal to the specified date.
+         * @description Returns objects less than or equal to the specified date.
          *
-         * This can be combined with execution_date_gte parameter to receive only the selected period.
+         *     This can be combined with execution_date_gte parameter to receive only the selected period.
          */
         execution_date_lte?: components["parameters"]["FilterExecutionDateLTE"];
         /**
-         * Returns objects greater or equal the specified date.
+         * @description Returns objects greater or equal the specified date.
          *
-         * This can be combined with start_date_lte parameter to receive only the selected period.
+         *     This can be combined with start_date_lte parameter to receive only the selected period.
          */
         start_date_gte?: components["parameters"]["FilterStartDateGTE"];
         /**
-         * Returns objects less or equal the specified date.
+         * @description Returns objects less or equal the specified date.
          *
-         * This can be combined with start_date_gte parameter to receive only the selected period.
+         *     This can be combined with start_date_gte parameter to receive only the selected period.
          */
         start_date_lte?: components["parameters"]["FilterStartDateLTE"];
         /**
-         * Returns objects greater or equal the specified date.
+         * @description Returns objects greater or equal the specified date.
          *
-         * This can be combined with start_date_lte parameter to receive only the selected period.
+         *     This can be combined with start_date_lte parameter to receive only the selected period.
          */
         end_date_gte?: components["parameters"]["FilterEndDateGTE"];
         /**
-         * Returns objects less than or equal to the specified date.
+         * @description Returns objects less than or equal to the specified date.
          *
-         * This can be combined with start_date_gte parameter to receive only the selected period.
+         *     This can be combined with start_date_gte parameter to receive only the selected period.
          */
         end_date_lte?: components["parameters"]["FilterEndDateLTE"];
         /**
-         * Returns objects greater or equal the specified date.
+         * @description Returns objects greater or equal the specified date.
          *
-         * This can be combined with updated_at_lte parameter to receive only the selected period.
+         *     This can be combined with updated_at_lte parameter to receive only the selected period.
          *
-         * *New in version 2.6.0*
+         *     *New in version 2.6.0*
          */
         updated_at_gte?: components["parameters"]["FilterUpdatedAtGTE"];
         /**
-         * Returns objects less or equal the specified date.
+         * @description Returns objects less or equal the specified date.
          *
-         * This can be combined with updated_at_gte parameter to receive only the selected period.
+         *     This can be combined with updated_at_gte parameter to receive only the selected period.
          *
-         * *New in version 2.6.0*
+         *     *New in version 2.6.0*
          */
         updated_at_lte?: components["parameters"]["FilterUpdatedAtLTE"];
         /**
-         * Returns objects greater than or equal to the specified values.
+         * @description Returns objects greater than or equal to the specified values.
          *
-         * This can be combined with duration_lte parameter to receive only the selected period.
+         *     This can be combined with duration_lte parameter to receive only the selected period.
          */
         duration_gte?: components["parameters"]["FilterDurationGTE"];
         /**
-         * Returns objects less than or equal to the specified values.
+         * @description Returns objects less than or equal to the specified values.
          *
-         * This can be combined with duration_gte parameter to receive only the selected range.
+         *     This can be combined with duration_gte parameter to receive only the selected range.
          */
         duration_lte?: components["parameters"]["FilterDurationLTE"];
-        /** The value can be repeated to retrieve multiple matching values (OR condition). */
+        /** @description The value can be repeated to retrieve multiple matching values (OR condition). */
         state?: components["parameters"]["FilterState"];
-        /** The value can be repeated to retrieve multiple matching values (OR condition). */
+        /** @description The value can be repeated to retrieve multiple matching values (OR condition). */
         pool?: components["parameters"]["FilterPool"];
-        /** The value can be repeated to retrieve multiple matching values (OR condition). */
+        /** @description The value can be repeated to retrieve multiple matching values (OR condition). */
         queue?: components["parameters"]["FilterQueue"];
-        /** The value can be repeated to retrieve multiple matching values (OR condition). */
+        /** @description The value can be repeated to retrieve multiple matching values (OR condition). */
         executor?: components["parameters"]["FilterExecutor"];
       };
+      header?: never;
+      path: {
+        /** @description The DAG ID. */
+        dag_id: components["parameters"]["DAGID"];
+        /** @description The DAG run ID. */
+        dag_run_id: components["parameters"]["DAGRunID"];
+      };
+      cookie?: never;
     };
+    /**
+     * List task instances
+     * @description This endpoint allows specifying `~` as the dag_id, dag_run_id to retrieve DAG runs for all DAGs and DAG runs.
+     */
+    get: operations["get_task_instances"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path: {
+        /** @description The DAG ID. */
+        dag_id: components["parameters"]["DAGID"];
+        /** @description The DAG run ID. */
+        dag_run_id: components["parameters"]["DAGRunID"];
+        /** @description The task ID. */
+        task_id: components["parameters"]["TaskID"];
+      };
+      cookie?: never;
+    };
+    /** Get a task instance */
     get: operations["get_task_instance"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
     /**
-     * Updates the state for single task instance.
-     * *New in version 2.5.0*
+     * Updates the state of a task instance
+     * @description Updates the state for single task instance.
+     *     *New in version 2.5.0*
      */
     patch: operations["patch_task_instance"];
+    trace?: never;
+  };
+  "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/{map_index}": {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
+        /** @description The DAG run ID. */
         dag_run_id: components["parameters"]["DAGRunID"];
-        /** The task ID. */
+        /** @description The task ID. */
         task_id: components["parameters"]["TaskID"];
+        /** @description The map index. */
+        map_index: components["parameters"]["MapIndex"];
       };
+      cookie?: never;
     };
-  };
-  "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/{map_index}": {
     /**
-     * Get details of a mapped task instance.
+     * Get a mapped task instance
+     * @description Get details of a mapped task instance.
      *
-     * *New in version 2.3.0*
+     *     *New in version 2.3.0*
      */
     get: operations["get_mapped_task_instance"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
     /**
-     * Updates the state for single mapped task instance.
-     * *New in version 2.5.0*
+     * Updates the state of a mapped task instance
+     * @description Updates the state for single mapped task instance.
+     *     *New in version 2.5.0*
      */
     patch: operations["patch_mapped_task_instance"];
+    trace?: never;
+  };
+  "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/listMapped": {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
+        /** @description The DAG run ID. */
         dag_run_id: components["parameters"]["DAGRunID"];
-        /** The task ID. */
+        /** @description The task ID. */
         task_id: components["parameters"]["TaskID"];
-        /** The map index. */
-        map_index: components["parameters"]["MapIndex"];
       };
+      cookie?: never;
     };
-  };
-  "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/listMapped": {
     /**
-     * Get details of all mapped task instances.
+     * List mapped task instances
+     * @description Get details of all mapped task instances.
      *
-     * *New in version 2.3.0*
+     *     *New in version 2.3.0*
      */
     get: operations["get_mapped_task_instances"];
-    parameters: {
-      path: {
-        /** The DAG ID. */
-        dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
-        dag_run_id: components["parameters"]["DAGRunID"];
-        /** The task ID. */
-        task_id: components["parameters"]["TaskID"];
-      };
-    };
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/dags/~/dagRuns/~/taskInstances/list": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
+    get?: never;
+    put?: never;
     /**
-     * List task instances from all DAGs and DAG runs.
-     * This endpoint is a POST to allow filtering across a large number of DAG IDs, where as a GET it would run in to maximum HTTP request URL length limits.
+     * List task instances (batch)
+     * @description List task instances from all DAGs and DAG runs.
+     *     This endpoint is a POST to allow filtering across a large number of DAG IDs, where as a GET it would run in to maximum HTTP request URL length limits.
      */
     post: operations["get_task_instances_batch"];
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/tries/{task_try_number}": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
     /**
-     * Get details of a task instance try.
+     * get taskinstance try
+     * @description Get details of a task instance try.
      *
-     * *New in version 2.10.0*
+     *     *New in version 2.10.0*
      */
     get: operations["get_task_instance_try_details"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/tries": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
     /**
-     * Get details of all task instance tries.
+     * List task instance tries
+     * @description Get details of all task instance tries.
      *
-     * *New in version 2.10.0*
+     *     *New in version 2.10.0*
      */
     get: operations["get_task_instance_tries"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/{map_index}/tries": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
     /**
-     * Get details of all task instance tries.
+     * List mapped task instance tries
+     * @description Get details of all task instance tries.
      *
-     * *New in version 2.10.0*
+     *     *New in version 2.10.0*
      */
     get: operations["get_mapped_task_instance_tries"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/{map_index}/tries/{task_try_number}": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
     /**
-     * Get details of a mapped task instance try.
+     * get mapped taskinstance try
+     * @description Get details of a mapped task instance try.
      *
-     * *New in version 2.10.0*
+     *     *New in version 2.10.0*
      */
     get: operations["get_mapped_task_instance_try_details"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/variables": {
-    /** The collection does not contain data. To get data, you must get a single entity. */
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
+    /**
+     * List variables
+     * @description The collection does not contain data. To get data, you must get a single entity.
+     */
     get: operations["get_variables"];
+    put?: never;
+    /** Create a variable */
     post: operations["post_variables"];
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/variables/{variable_key}": {
-    /** Get a variable by key. */
-    get: operations["get_variable"];
-    delete: operations["delete_variable"];
-    /** Update a variable by key. */
-    patch: operations["patch_variable"];
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The variable Key. */
+        /** @description The variable Key. */
         variable_key: components["parameters"]["VariableKey"];
       };
+      cookie?: never;
     };
+    /**
+     * Get a variable
+     * @description Get a variable by key.
+     */
+    get: operations["get_variable"];
+    put?: never;
+    post?: never;
+    /** Delete a variable */
+    delete: operations["delete_variable"];
+    options?: never;
+    head?: never;
+    /**
+     * Update a variable
+     * @description Update a variable by key.
+     */
+    patch: operations["patch_variable"];
+    trace?: never;
   };
   "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/xcomEntries": {
-    /** This endpoint allows specifying `~` as the dag_id, dag_run_id, task_id to retrieve XCOM entries for for all DAGs, DAG runs and task instances. XCom values won't be returned as they can be large. Use this endpoint to get a list of XCom entries and then fetch individual entry to get value. */
-    get: operations["get_xcom_entries"];
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
+        /** @description The DAG run ID. */
         dag_run_id: components["parameters"]["DAGRunID"];
-        /** The task ID. */
+        /** @description The task ID. */
         task_id: components["parameters"]["TaskID"];
       };
+      cookie?: never;
     };
+    /**
+     * List XCom entries
+     * @description This endpoint allows specifying `~` as the dag_id, dag_run_id, task_id to retrieve XCOM entries for for all DAGs, DAG runs and task instances. XCom values won't be returned as they can be large. Use this endpoint to get a list of XCom entries and then fetch individual entry to get value.
+     */
+    get: operations["get_xcom_entries"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/xcomEntries/{xcom_key}": {
-    get: operations["get_xcom_entry"];
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
+        /** @description The DAG run ID. */
         dag_run_id: components["parameters"]["DAGRunID"];
-        /** The task ID. */
+        /** @description The task ID. */
         task_id: components["parameters"]["TaskID"];
-        /** The XCom key. */
+        /** @description The XCom key. */
         xcom_key: components["parameters"]["XComKey"];
       };
+      cookie?: never;
     };
+    /** Get an XCom entry */
+    get: operations["get_xcom_entry"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/links": {
-    /** List extra links for task instance. */
-    get: operations["get_extra_links"];
     parameters: {
+      query?: {
+        /** @description Filter on map index for mapped task. */
+        map_index?: components["parameters"]["FilterMapIndex"];
+      };
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
+        /** @description The DAG run ID. */
         dag_run_id: components["parameters"]["DAGRunID"];
-        /** The task ID. */
+        /** @description The task ID. */
         task_id: components["parameters"]["TaskID"];
       };
-      query: {
-        /** Filter on map index for mapped task. */
-        map_index?: components["parameters"]["FilterMapIndex"];
-      };
+      cookie?: never;
     };
-  };
-  "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/logs/{task_try_number}": {
     /**
-     * Get logs for a specific task instance and its try number.
-     * To get log from specific character position, following way of using
-     * URLSafeSerializer can be used.
-     *
-     * Example:
-     * ```
-     * from itsdangerous.url_safe import URLSafeSerializer
-     *
-     * request_url = f"api/v1/dags/{DAG_ID}/dagRuns/{RUN_ID}/taskInstances/{TASK_ID}/logs/1"
-     * key = app.config["SECRET_KEY"]
-     * serializer = URLSafeSerializer(key)
-     * token = serializer.dumps({"log_pos": 10000})
-     *
-     * response = self.client.get(
-     *     request_url,
-     *     query_string={"token": token},
-     *     headers={"Accept": "text/plain"},
-     *     environ_overrides={"REMOTE_USER": "test"},
-     * )
-     * continuation_token = response.json["continuation_token"]
-     *     metadata = URLSafeSerializer(key).loads(continuation_token)
-     *     log_pos = metadata["log_pos"]
-     *     end_of_log = metadata["end_of_log"]
-     * ```
-     * If log_pos is passed as 10000 like the above example, it renders the logs starting
-     * from char position 10000 to last (not the end as the logs may be tailing behind in
-     * running state). This way pagination can be done with metadata as part of the token.
+     * List extra links
+     * @description List extra links for task instance.
      */
-    get: operations["get_log"];
+    get: operations["get_extra_links"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
+  };
+  "/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/logs/{task_try_number}": {
     parameters: {
-      path: {
-        /** The DAG ID. */
-        dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
-        dag_run_id: components["parameters"]["DAGRunID"];
-        /** The task ID. */
-        task_id: components["parameters"]["TaskID"];
-        /** The task try number. */
-        task_try_number: components["parameters"]["TaskTryNumber"];
-      };
-      query: {
+      query?: {
         /**
-         * A full content will be returned.
-         * By default, only the first fragment will be returned.
+         * @description A full content will be returned.
+         *     By default, only the first fragment will be returned.
          */
         full_content?: components["parameters"]["FullContent"];
-        /** Filter on map index for mapped task. */
+        /** @description Filter on map index for mapped task. */
         map_index?: components["parameters"]["FilterMapIndex"];
         /**
-         * A token that allows you to continue fetching logs.
-         * If passed, it will specify the location from which the download should be continued.
+         * @description A token that allows you to continue fetching logs.
+         *     If passed, it will specify the location from which the download should be continued.
          */
         token?: components["parameters"]["ContinuationToken"];
       };
+      header?: never;
+      path: {
+        /** @description The DAG ID. */
+        dag_id: components["parameters"]["DAGID"];
+        /** @description The DAG run ID. */
+        dag_run_id: components["parameters"]["DAGRunID"];
+        /** @description The task ID. */
+        task_id: components["parameters"]["TaskID"];
+        /** @description The task try number. */
+        task_try_number: components["parameters"]["TaskTryNumber"];
+      };
+      cookie?: never;
     };
+    /**
+     * Get logs
+     * @description Get logs for a specific task instance and its try number.
+     *     To get log from specific character position, following way of using
+     *     URLSafeSerializer can be used.
+     *
+     *     Example:
+     *     ```
+     *     from itsdangerous.url_safe import URLSafeSerializer
+     *
+     *     request_url = f"api/v1/dags/{DAG_ID}/dagRuns/{RUN_ID}/taskInstances/{TASK_ID}/logs/1"
+     *     key = app.config["SECRET_KEY"]
+     *     serializer = URLSafeSerializer(key)
+     *     token = serializer.dumps({"log_pos": 10000})
+     *
+     *     response = self.client.get(
+     *         request_url,
+     *         query_string={"token": token},
+     *         headers={"Accept": "text/plain"},
+     *         environ_overrides={"REMOTE_USER": "test"},
+     *     )
+     *     continuation_token = response.json["continuation_token"]
+     *         metadata = URLSafeSerializer(key).loads(continuation_token)
+     *         log_pos = metadata["log_pos"]
+     *         end_of_log = metadata["end_of_log"]
+     *     ```
+     *     If log_pos is passed as 10000 like the above example, it renders the logs starting
+     *     from char position 10000 to last (not the end as the logs may be tailing behind in
+     *     running state). This way pagination can be done with metadata as part of the token.
+     */
+    get: operations["get_log"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/dags/{dag_id}/details": {
-    /** The response contains many DAG attributes, so the response can be large. If possible, consider using GET /dags/{dag_id}. */
-    get: operations["get_dag_details"];
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
       };
+      cookie?: never;
     };
+    /**
+     * Get a simplified representation of DAG
+     * @description The response contains many DAG attributes, so the response can be large. If possible, consider using GET /dags/{dag_id}.
+     */
+    get: operations["get_dag_details"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/dags/{dag_id}/tasks": {
-    get: operations["get_tasks"];
     parameters: {
-      path: {
-        /** The DAG ID. */
-        dag_id: components["parameters"]["DAGID"];
-      };
-      query: {
+      query?: {
         /**
-         * The name of the field to order the results by.
-         * Prefix a field name with `-` to reverse the sort order.
+         * @description The name of the field to order the results by.
+         *     Prefix a field name with `-` to reverse the sort order.
          *
-         * *New in version 2.1.0*
+         *     *New in version 2.1.0*
          */
         order_by?: components["parameters"]["OrderBy"];
       };
+      header?: never;
+      path: {
+        /** @description The DAG ID. */
+        dag_id: components["parameters"]["DAGID"];
+      };
+      cookie?: never;
     };
+    /** Get tasks for DAG */
+    get: operations["get_tasks"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/dags/{dag_id}/tasks/{task_id}": {
-    get: operations["get_task"];
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The task ID. */
+        /** @description The task ID. */
         task_id: components["parameters"]["TaskID"];
       };
+      cookie?: never;
     };
+    /** Get simplified representation of a task */
+    get: operations["get_task"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/dagStats": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
+    /** List Dag statistics */
     get: operations["get_dag_stats"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/dagSources/{file_token}": {
-    /** Get a source code using file token. */
-    get: operations["get_dag_source"];
     parameters: {
+      query?: never;
+      header?: never;
       path: {
         /**
-         * 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.
+         * @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.
          */
         file_token: components["parameters"]["FileToken"];
       };
+      cookie?: never;
     };
+    /**
+     * Get a source code
+     * @description Get a source code using file token.
+     */
+    get: operations["get_dag_source"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/dagWarnings": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
+    /** List dag warnings */
     get: operations["get_dag_warnings"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/datasets": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
+    /** List datasets */
     get: operations["get_datasets"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/datasets/{uri}": {
-    /** Get a dataset by uri. */
-    get: operations["get_dataset"];
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The encoded Dataset URI */
+        /** @description The encoded Dataset URI */
         uri: components["parameters"]["DatasetURI"];
       };
+      cookie?: never;
     };
+    /**
+     * Get a dataset
+     * @description Get a dataset by uri.
+     */
+    get: operations["get_dataset"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/datasets/events": {
-    /** Get dataset events */
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
+    /**
+     * Get dataset events
+     * @description Get dataset events
+     */
     get: operations["get_dataset_events"];
-    /** Create dataset event */
+    put?: never;
+    /**
+     * Create dataset event
+     * @description Create dataset event
+     */
     post: operations["create_dataset_event"];
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/config": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
+    /** Get current configuration */
     get: operations["get_config"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/config/section/{section}/option/{option}": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
+    /** Get a option from configuration */
     get: operations["get_value"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/health": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
     /**
-     * Get the status of Airflow's metadatabase, triggerer and scheduler. It includes info about
-     * metadatabase and last heartbeat of scheduler and triggerer.
+     * Get instance status
+     * @description Get the status of Airflow's metadatabase, triggerer and scheduler. It includes info about
+     *     metadatabase and last heartbeat of scheduler and triggerer.
      */
     get: operations["get_health"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/version": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
+    /** Get version information */
     get: operations["get_version"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/plugins": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
     /**
-     * Get a list of loaded plugins.
+     * Get a list of loaded plugins
+     * @description Get a list of loaded plugins.
      *
-     * *New in version 2.1.0*
+     *     *New in version 2.1.0*
      */
     get: operations["get_plugins"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/roles": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
     /**
-     * Get a list of roles.
+     * List roles
+     * @deprecated
+     * @description Get a list of roles.
      *
-     * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+     *     *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
      */
     get: operations["get_roles"];
+    put?: never;
     /**
-     * Create a new role.
+     * Create a role
+     * @deprecated
+     * @description Create a new role.
      *
-     * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+     *     *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
      */
     post: operations["post_role"];
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/roles/{role_name}": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path: {
+        /** @description The role name */
+        role_name: components["parameters"]["RoleName"];
+      };
+      cookie?: never;
+    };
     /**
-     * Get a role.
+     * Get a role
+     * @deprecated
+     * @description Get a role.
      *
-     * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+     *     *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
      */
     get: operations["get_role"];
+    put?: never;
+    post?: never;
     /**
-     * Delete a role.
+     * Delete a role
+     * @deprecated
+     * @description Delete a role.
      *
-     * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+     *     *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
      */
     delete: operations["delete_role"];
+    options?: never;
+    head?: never;
     /**
-     * Update a role.
+     * Update a role
+     * @deprecated
+     * @description Update a role.
      *
-     * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+     *     *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
      */
     patch: operations["patch_role"];
-    parameters: {
-      path: {
-        /** The role name */
-        role_name: components["parameters"]["RoleName"];
-      };
-    };
+    trace?: never;
   };
   "/permissions": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
     /**
-     * Get a list of permissions.
+     * List permissions
+     * @deprecated
+     * @description Get a list of permissions.
      *
-     * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+     *     *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
      */
     get: operations["get_permissions"];
+    put?: never;
+    post?: never;
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/users": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
     /**
-     * Get a list of users.
+     * List users
+     * @deprecated
+     * @description Get a list of users.
      *
-     * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+     *     *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
      */
     get: operations["get_users"];
+    put?: never;
     /**
-     * Create a new user with unique username and email.
+     * Create a user
+     * @deprecated
+     * @description Create a new user with unique username and email.
      *
-     * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+     *     *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
      */
     post: operations["post_user"];
+    delete?: never;
+    options?: never;
+    head?: never;
+    patch?: never;
+    trace?: never;
   };
   "/users/{username}": {
+    parameters: {
+      query?: never;
+      header?: never;
+      path: {
+        /**
+         * @description The username of the user.
+         *
+         *     *New in version 2.1.0*
+         */
+        username: components["parameters"]["Username"];
+      };
+      cookie?: never;
+    };
     /**
-     * Get a user with a specific username.
+     * Get a user
+     * @deprecated
+     * @description Get a user with a specific username.
      *
-     * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+     *     *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
      */
     get: operations["get_user"];
+    put?: never;
+    post?: never;
     /**
-     * Delete a user with a specific username.
+     * Delete a user
+     * @deprecated
+     * @description Delete a user with a specific username.
      *
-     * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+     *     *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
      */
     delete: operations["delete_user"];
+    options?: never;
+    head?: never;
     /**
-     * Update fields for a user.
+     * Update a user
+     * @deprecated
+     * @description Update fields for a user.
      *
-     * *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
+     *     *This API endpoint is deprecated, please use the endpoint `/auth/fab/v1` for this operation instead.*
      */
     patch: operations["patch_user"];
-    parameters: {
-      path: {
-        /**
-         * The username of the user.
-         *
-         * *New in version 2.1.0*
-         */
-        username: components["parameters"]["Username"];
-      };
-    };
+    trace?: never;
   };
 }
-
+export type webhooks = Record<string, never>;
 export interface components {
   schemas: {
     /**
      * @description A user object.
      *
-     * *New in version 2.1.0*
+     *     *New in version 2.1.0*
      */
     UserCollectionItem: {
       /**
        * @description The user's first name.
        *
-       * *Changed in version 2.4.0*&#58; The requirement for this to be non-empty was removed.
+       *     *Changed in version 2.4.0*&#58; The requirement for this to be non-empty was removed.
        */
       first_name?: string;
       /**
        * @description The user's last name.
        *
-       * *Changed in version 2.4.0*&#58; The requirement for this to be non-empty was removed.
+       *     *Changed in version 2.4.0*&#58; The requirement for this to be non-empty was removed.
        */
       last_name?: string;
       /**
        * @description The username.
        *
-       * *Changed in version 2.2.0*&#58; A minimum character length requirement ('minLength') is added.
+       *     *Changed in version 2.2.0*&#58; A minimum character length requirement ('minLength') is added.
        */
       username?: string;
       /**
        * @description The user's email.
        *
-       * *Changed in version 2.2.0*&#58; A minimum character length requirement ('minLength') is added.
+       *     *Changed in version 2.2.0*&#58; A minimum character length requirement ('minLength') is added.
        */
       email?: string;
       /** @description Whether the user is active */
-      active?: boolean | null;
+      readonly active?: boolean | null;
       /**
        * Format: datetime
        * @description The last user login
        */
-      last_login?: string | null;
+      readonly last_login?: string | null;
       /** @description The login count */
-      login_count?: number | null;
+      readonly login_count?: number | null;
       /** @description The number of times the login failed */
-      failed_login_count?: number | null;
+      readonly failed_login_count?: number | null;
       /**
        * @description User roles.
        *
-       * *Changed in version 2.2.0*&#58; Field is no longer read-only.
+       *     *Changed in version 2.2.0*&#58; Field is no longer read-only.
        */
       roles?: ({
         name?: string;
@@ -953,17 +1756,17 @@ export interface components {
        * Format: datetime
        * @description The date user was created
        */
-      created_on?: string | null;
+      readonly created_on?: string | null;
       /**
        * Format: datetime
        * @description The date user was changed
        */
-      changed_on?: string | null;
+      readonly changed_on?: string | null;
     };
     /**
      * @description A user object with sensitive data.
      *
-     * *New in version 2.1.0*
+     *     *New in version 2.1.0*
      */
     User: components["schemas"]["UserCollectionItem"] & {
       password?: string;
@@ -971,14 +1774,14 @@ export interface components {
     /**
      * @description Collection of users.
      *
-     * *New in version 2.1.0*
+     *     *New in version 2.1.0*
      */
     UserCollection: {
       users?: components["schemas"]["UserCollectionItem"][];
     } & components["schemas"]["CollectionInfo"];
     /**
      * @description Connection collection item.
-     * The password and extra fields are only available when retrieving a single object due to the sensitivity of this data.
+     *     The password and extra fields are only available when retrieving a single object due to the sensitivity of this data.
      */
     ConnectionCollectionItem: {
       /** @description The connection ID. */
@@ -999,7 +1802,7 @@ export interface components {
     /**
      * @description Collection of connections.
      *
-     * *Changed in version 2.1.0*&#58; 'total_entries' field is added.
+     *     *Changed in version 2.1.0*&#58; 'total_entries' field is added.
      */
     ConnectionCollection: {
       connections?: components["schemas"]["ConnectionCollectionItem"][];
@@ -1017,7 +1820,7 @@ export interface components {
     /**
      * @description Connection test results.
      *
-     * *New in version 2.2.0*
+     *     *New in version 2.2.0*
      */
     ConnectionTest: {
       /** @description The status of the request. */
@@ -1028,146 +1831,146 @@ export interface components {
     /** @description DAG */
     DAG: {
       /** @description The ID of the DAG. */
-      dag_id?: string;
+      readonly dag_id?: string;
       /**
        * @description Human centric display text for the DAG.
        *
-       * *New in version 2.9.0*
+       *     *New in version 2.9.0*
        */
-      dag_display_name?: string;
+      readonly dag_display_name?: string;
       /** @description If the DAG is SubDAG then it is the top level DAG identifier. Otherwise, null. */
-      root_dag_id?: string | null;
+      readonly root_dag_id?: string | null;
       /** @description Whether the DAG is paused. */
       is_paused?: boolean | null;
       /**
        * @description Whether the DAG is currently seen by the scheduler(s).
        *
-       * *New in version 2.1.1*
+       *     *New in version 2.1.1*
        *
-       * *Changed in version 2.2.0*&#58; Field is read-only.
+       *     *Changed in version 2.2.0*&#58; Field is read-only.
        */
-      is_active?: boolean | null;
+      readonly is_active?: boolean | null;
       /** @description Whether the DAG is SubDAG. */
-      is_subdag?: boolean;
+      readonly is_subdag?: boolean;
       /**
        * Format: date-time
        * @description The last time the DAG was parsed.
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
-      last_parsed_time?: string | null;
+      readonly last_parsed_time?: string | null;
       /**
        * Format: date-time
        * @description The last time the DAG was pickled.
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
-      last_pickled?: string | null;
+      readonly last_pickled?: string | null;
       /**
        * Format: date-time
        * @description Time when the DAG last received a refresh signal
-       * (e.g. the DAG's "refresh" button was clicked in the web UI)
+       *     (e.g. the DAG's "refresh" button was clicked in the web UI)
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
-      last_expired?: string | null;
+      readonly last_expired?: string | null;
       /**
        * @description Whether (one of) the scheduler is scheduling this DAG at the moment
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
-      scheduler_lock?: boolean | null;
+      readonly scheduler_lock?: boolean | null;
       /**
        * @description Foreign key to the latest pickle_id
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
-      pickle_id?: string | null;
+      readonly pickle_id?: string | null;
       /**
        * @description Default view of the DAG inside the webserver
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
-      default_view?: string | null;
+      readonly default_view?: string | null;
       /** @description The absolute path to the file. */
-      fileloc?: string;
+      readonly fileloc?: string;
       /** @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. */
-      file_token?: string;
-      owners?: string[];
+      readonly file_token?: string;
+      readonly owners?: string[];
       /** @description User-provided DAG description, which can consist of several sentences or paragraphs that describe DAG contents. */
-      description?: string | null;
+      readonly description?: string | null;
       schedule_interval?: components["schemas"]["ScheduleInterval"];
       /**
        * @description Timetable/Schedule Interval description.
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
-      timetable_description?: string | null;
+      readonly timetable_description?: string | null;
       /** @description List of tags. */
-      tags?: components["schemas"]["Tag"][] | null;
+      readonly tags?: components["schemas"]["Tag"][] | null;
       /**
        * @description Maximum number of active tasks that can be run on the DAG
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
-      max_active_tasks?: number | null;
+      readonly max_active_tasks?: number | null;
       /**
        * @description Maximum number of active DAG runs for the DAG
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
-      max_active_runs?: number | null;
+      readonly max_active_runs?: number | null;
       /**
        * @description Whether the DAG has task concurrency limits
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
-      has_task_concurrency_limits?: boolean | null;
+      readonly has_task_concurrency_limits?: boolean | null;
       /**
        * @description Whether the DAG has import errors
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
-      has_import_errors?: boolean | null;
+      readonly has_import_errors?: boolean | null;
       /**
        * Format: date-time
        * @description The logical date of the next dag run.
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
-      next_dagrun?: string | null;
+      readonly next_dagrun?: string | null;
       /**
        * Format: date-time
        * @description The start of the interval of the next dag run.
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
-      next_dagrun_data_interval_start?: string | null;
+      readonly next_dagrun_data_interval_start?: string | null;
       /**
        * Format: date-time
        * @description The end of the interval of the next dag run.
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
-      next_dagrun_data_interval_end?: string | null;
+      readonly next_dagrun_data_interval_end?: string | null;
       /**
        * Format: date-time
        * @description Earliest time at which this ``next_dagrun`` can be created.
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
-      next_dagrun_create_after?: string | null;
+      readonly next_dagrun_create_after?: string | null;
       /**
        * @description (experimental) The maximum number of consecutive DAG failures before DAG is automatically paused.
        *
-       * *New in version 2.9.0*
+       *     *New in version 2.9.0*
        */
-      max_consecutive_failed_dag_runs?: number | null;
+      readonly max_consecutive_failed_dag_runs?: number | null;
     };
     /**
      * @description Collection of DAGs.
      *
-     * *Changed in version 2.1.0*&#58; 'total_entries' field is added.
+     *     *Changed in version 2.1.0*&#58; 'total_entries' field is added.
      */
     DAGCollection: {
       dags?: components["schemas"]["DAG"][];
@@ -1176,51 +1979,51 @@ export interface components {
       /**
        * @description Run ID.
        *
-       * The value of this field can be set only when creating the object. If you try to modify the
-       * field of an existing object, the request fails with an BAD_REQUEST error.
+       *     The value of this field can be set only when creating the object. If you try to modify the
+       *     field of an existing object, the request fails with an BAD_REQUEST error.
        *
-       * If not provided, a value will be generated based on execution_date.
+       *     If not provided, a value will be generated based on execution_date.
        *
-       * If the specified dag_run_id is in use, the creation request fails with an ALREADY_EXISTS error.
+       *     If the specified dag_run_id is in use, the creation request fails with an ALREADY_EXISTS error.
        *
-       * This together with DAG_ID are a unique key.
+       *     This together with DAG_ID are a unique key.
        */
       dag_run_id?: string | null;
-      dag_id?: string;
+      readonly dag_id?: string;
       /**
        * Format: date-time
        * @description The logical date (previously called execution date). This is the time or interval covered by
-       * this DAG run, according to the DAG definition.
+       *     this DAG run, according to the DAG definition.
        *
-       * The value of this field can be set only when creating the object. If you try to modify the
-       * field of an existing object, the request fails with an BAD_REQUEST error.
+       *     The value of this field can be set only when creating the object. If you try to modify the
+       *     field of an existing object, the request fails with an BAD_REQUEST error.
        *
-       * This together with DAG_ID are a unique key.
+       *     This together with DAG_ID are a unique key.
        *
-       * *New in version 2.2.0*
+       *     *New in version 2.2.0*
        */
       logical_date?: string | null;
       /**
        * Format: date-time
        * @deprecated
        * @description The execution date. This is the same as logical_date, kept for backwards compatibility.
-       * If both this field and logical_date are provided but with different values, the request
-       * will fail with an BAD_REQUEST error.
+       *     If both this field and logical_date are provided but with different values, the request
+       *     will fail with an BAD_REQUEST error.
        *
-       * *Changed in version 2.2.0*&#58; Field becomes nullable.
+       *     *Changed in version 2.2.0*&#58; Field becomes nullable.
        *
-       * *Deprecated since version 2.2.0*&#58; Use 'logical_date' instead.
+       *     *Deprecated since version 2.2.0*&#58; Use 'logical_date' instead.
        */
       execution_date?: string | null;
       /**
        * Format: date-time
        * @description The start time. The time when DAG run was actually created.
        *
-       * *Changed in version 2.1.3*&#58; Field becomes nullable.
+       *     *Changed in version 2.1.3*&#58; Field becomes nullable.
        */
-      start_date?: string | null;
+      readonly start_date?: string | null;
       /** Format: date-time */
-      end_date?: string | null;
+      readonly end_date?: string | null;
       /**
        * Format: date-time
        * @description The beginning of the interval the DAG run covers.
@@ -1232,29 +2035,33 @@ export interface components {
        */
       data_interval_end?: string | null;
       /** Format: date-time */
-      last_scheduling_decision?: string | null;
+      readonly last_scheduling_decision?: string | null;
       /** @enum {string} */
-      run_type?: "backfill" | "manual" | "scheduled" | "dataset_triggered";
+      readonly run_type?:
+        | "backfill"
+        | "manual"
+        | "scheduled"
+        | "dataset_triggered";
       state?: components["schemas"]["DagState"];
-      external_trigger?: boolean;
+      readonly external_trigger?: boolean;
       /**
        * @description JSON object describing additional configuration parameters.
        *
-       * The value of this field can be set only when creating the object. If you try to modify the
-       * field of an existing object, the request fails with an BAD_REQUEST error.
+       *     The value of this field can be set only when creating the object. If you try to modify the
+       *     field of an existing object, the request fails with an BAD_REQUEST error.
        */
-      conf?: { [key: string]: unknown };
+      conf?: Record<string, never>;
       /**
        * @description Contains manually entered notes by the user about the DagRun.
        *
-       * *New in version 2.5.0*
+       *     *New in version 2.5.0*
        */
       note?: string | null;
     };
     /**
      * @description Modify the state of a DAG run.
      *
-     * *New in version 2.2.0*
+     *     *New in version 2.2.0*
      */
     UpdateDagRunState: {
       /**
@@ -1266,7 +2073,7 @@ export interface components {
     /**
      * @description Collection of DAG runs.
      *
-     * *Changed in version 2.1.0*&#58; 'total_entries' field is added.
+     *     *Changed in version 2.1.0*&#58; 'total_entries' field is added.
      */
     DAGRunCollection: {
       dag_runs?: components["schemas"]["DAGRun"][];
@@ -1290,16 +2097,16 @@ export interface components {
     };
     DagWarning: {
       /** @description The dag_id. */
-      dag_id?: string;
+      readonly dag_id?: string;
       /** @description The warning type for the dag warning. */
-      warning_type?: string;
+      readonly warning_type?: string;
       /** @description The message for the dag warning. */
-      message?: string;
+      readonly message?: string;
       /**
        * Format: datetime
        * @description The time when this warning was logged.
        */
-      timestamp?: string;
+      readonly timestamp?: string;
     };
     /** @description Collection of DAG warnings. */
     DagWarningCollection: {
@@ -1312,60 +2119,60 @@ export interface components {
     /** @description Log of user operations via CLI or Web UI. */
     EventLog: {
       /** @description The event log ID */
-      event_log_id?: number;
+      readonly event_log_id?: number;
       /**
        * Format: date-time
        * @description The time when these events happened.
        */
-      when?: string;
+      readonly when?: string;
       /** @description The DAG ID */
-      dag_id?: string | null;
+      readonly dag_id?: string | null;
       /** @description The Task ID */
-      task_id?: string | null;
+      readonly task_id?: string | null;
       /** @description The DAG Run ID */
-      run_id?: string | null;
+      readonly run_id?: string | null;
       /** @description The Map Index */
-      map_index?: number | null;
+      readonly map_index?: number | null;
       /** @description The Try Number */
-      try_number?: number | null;
+      readonly try_number?: number | null;
       /** @description A key describing the type of event. */
-      event?: string;
+      readonly event?: string;
       /**
        * Format: date-time
        * @description When the event was dispatched for an object having execution_date, the value of this field.
        */
-      execution_date?: string | null;
+      readonly execution_date?: string | null;
       /** @description Name of the user who triggered these events a. */
-      owner?: string | null;
+      readonly owner?: string | null;
       /** @description Other information that was not included in the other fields, e.g. the complete CLI command. */
-      extra?: string | null;
+      readonly extra?: string | null;
     };
     /**
      * @description Collection of event logs.
      *
-     * *Changed in version 2.1.0*&#58; 'total_entries' field is added.
-     * *Changed in version 2.10.0*&#58; 'try_number' and 'map_index' fields are added.
+     *     *Changed in version 2.1.0*&#58; 'total_entries' field is added.
+     *     *Changed in version 2.10.0*&#58; 'try_number' and 'map_index' fields are added.
      */
     EventLogCollection: {
       event_logs?: components["schemas"]["EventLog"][];
     } & components["schemas"]["CollectionInfo"];
     ImportError: {
       /** @description The import error ID. */
-      import_error_id?: number;
+      readonly import_error_id?: number;
       /**
        * Format: datetime
        * @description The time when this error was created.
        */
-      timestamp?: string;
+      readonly timestamp?: string;
       /** @description The filename */
-      filename?: string;
+      readonly filename?: string;
       /** @description The full stackstrace. */
-      stack_trace?: string;
+      readonly stack_trace?: string;
     };
     /**
      * @description Collection of import errors.
      *
-     * *Changed in version 2.1.0*&#58; 'total_entries' field is added.
+     *     *Changed in version 2.1.0*&#58; 'total_entries' field is added.
      */
     ImportErrorCollection: {
       import_errors?: components["schemas"]["ImportError"][];
@@ -1388,12 +2195,12 @@ export interface components {
        * Format: datetime
        * @description The time the scheduler last did a heartbeat.
        */
-      latest_scheduler_heartbeat?: string | null;
+      readonly latest_scheduler_heartbeat?: string | null;
     };
     /**
      * @description The status and the latest triggerer heartbeat.
      *
-     * *New in version 2.6.2*
+     *     *New in version 2.6.2*
      */
     TriggererStatus: {
       status?: components["schemas"]["HealthStatus"];
@@ -1401,12 +2208,12 @@ export interface components {
        * Format: datetime
        * @description The time the triggerer last did a heartbeat.
        */
-      latest_triggerer_heartbeat?: string | null;
+      readonly latest_triggerer_heartbeat?: string | null;
     };
     /**
      * @description The status and the latest dag processor heartbeat.
      *
-     * *New in version 2.6.3*
+     *     *New in version 2.6.3*
      */
     DagProcessorStatus: {
       status?: components["schemas"]["HealthStatus"];
@@ -1414,7 +2221,7 @@ export interface components {
        * Format: datetime
        * @description The time the dag processor last did a heartbeat.
        */
-      latest_dag_processor_heartbeat?: string | null;
+      readonly latest_dag_processor_heartbeat?: string | null;
     };
     /** @description The pool */
     Pool: {
@@ -1423,38 +2230,38 @@ export interface components {
       /** @description The maximum number of slots that can be assigned to tasks. One job may occupy one or more slots. */
       slots?: number;
       /** @description The number of slots used by running/queued tasks at the moment. May include deferred tasks if 'include_deferred' is set to true. */
-      occupied_slots?: number;
+      readonly occupied_slots?: number;
       /** @description The number of slots used by running tasks at the moment. */
-      running_slots?: number;
+      readonly running_slots?: number;
       /** @description The number of slots used by queued tasks at the moment. */
-      queued_slots?: number;
+      readonly queued_slots?: number;
       /** @description The number of free slots at the moment. */
-      open_slots?: number;
+      readonly open_slots?: number;
       /** @description The number of slots used by scheduled tasks at the moment. */
-      scheduled_slots?: number;
+      readonly scheduled_slots?: number;
       /**
        * @description The number of slots used by deferred tasks at the moment. Relevant if 'include_deferred' is set to true.
        *
-       * *New in version 2.7.0*
+       *     *New in version 2.7.0*
        */
-      deferred_slots?: number;
+      readonly deferred_slots?: number;
       /**
        * @description The description of the pool.
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
       description?: string | null;
       /**
        * @description If set to true, deferred tasks are considered when calculating open pool slots.
        *
-       * *New in version 2.7.0*
+       *     *New in version 2.7.0*
        */
       include_deferred?: boolean;
     };
     /**
      * @description Collection of pools.
      *
-     * *Changed in version 2.1.0*&#58; 'total_entries' field is added.
+     *     *Changed in version 2.1.0*&#58; 'total_entries' field is added.
      */
     PoolCollection: {
       pools?: components["schemas"]["Pool"][];
@@ -1462,7 +2269,7 @@ export interface components {
     /**
      * @description The provider
      *
-     * *New in version 2.1.0*
+     *     *New in version 2.1.0*
      */
     Provider: {
       /** @description The package name of the provider. */
@@ -1475,14 +2282,14 @@ export interface components {
     /**
      * @description Collection of providers.
      *
-     * *New in version 2.1.0*
+     *     *New in version 2.1.0*
      */
     ProviderCollection: {
       providers?: components["schemas"]["Provider"][];
     };
     SLAMiss: {
       /** @description The task ID. */
-      task_id?: string;
+      readonly task_id?: string;
       /** @description The DAG ID. */
       dag_id?: string;
       /** Format: datetime */
@@ -1528,14 +2335,14 @@ export interface components {
       /**
        * @description Human centric display text for the task.
        *
-       * *New in version 2.9.0*
+       *     *New in version 2.9.0*
        */
       task_display_name?: string;
       dag_id?: string;
       /**
        * @description The DagRun ID for this task instance
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
       dag_run_id?: string;
       /** Format: datetime */
@@ -1563,7 +2370,7 @@ export interface components {
       /**
        * @description Executor the task is configured to run on or None (which indicates the default executor)
        *
-       * *New in version 2.10.0*
+       *     *New in version 2.10.0*
        */
       executor?: string | null;
       executor_config?: string;
@@ -1571,28 +2378,28 @@ export interface components {
       /**
        * @description Rendered name of an expanded task instance, if the task is mapped.
        *
-       * *New in version 2.9.0*
+       *     *New in version 2.9.0*
        */
       rendered_map_index?: string | null;
       /**
        * @description JSON object describing rendered fields.
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
-      rendered_fields?: { [key: string]: unknown };
+      rendered_fields?: Record<string, never>;
       trigger?: components["schemas"]["Trigger"];
       triggerer_job?: components["schemas"]["Job"];
       /**
        * @description Contains manually entered notes by the user about the TaskInstance.
        *
-       * *New in version 2.5.0*
+       *     *New in version 2.5.0*
        */
       note?: string | null;
     };
     /**
      * @description Collection of task instances.
      *
-     * *Changed in version 2.1.0*&#58; 'total_entries' field is added.
+     *     *Changed in version 2.1.0*&#58; 'total_entries' field is added.
      */
     TaskInstanceCollection: {
       task_instances?: components["schemas"]["TaskInstance"][];
@@ -1602,14 +2409,14 @@ export interface components {
       /**
        * @description Human centric display text for the task.
        *
-       * *New in version 2.9.0*
+       *     *New in version 2.9.0*
        */
       task_display_name?: string;
       dag_id?: string;
       /**
        * @description The DagRun ID for this task instance
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
       dag_run_id?: string;
       /** Format: datetime */
@@ -1635,7 +2442,7 @@ export interface components {
       /**
        * @description Executor the task is configured to run on or None (which indicates the default executor)
        *
-       * *New in version 2.10.0*
+       *     *New in version 2.10.0*
        */
       executor?: string | null;
       executor_config?: string;
@@ -1643,41 +2450,41 @@ export interface components {
     /**
      * @description Collection of task instances .
      *
-     * *Changed in version 2.1.0*&#58; 'total_entries' field is added.
+     *     *Changed in version 2.1.0*&#58; 'total_entries' field is added.
      */
     TaskInstanceHistoryCollection: {
       task_instances_history?: components["schemas"]["TaskInstanceHistory"][];
     } & components["schemas"]["CollectionInfo"];
     TaskInstanceReference: {
       /** @description The task ID. */
-      task_id?: string;
+      readonly task_id?: string;
       /** @description The DAG ID. */
-      dag_id?: string;
+      readonly dag_id?: string;
       /** Format: datetime */
-      execution_date?: string;
+      readonly execution_date?: string;
       /** @description The DAG run ID. */
-      dag_run_id?: string;
+      readonly dag_run_id?: string;
     };
     TaskInstanceReferenceCollection: {
       task_instances?: components["schemas"]["TaskInstanceReference"][];
     };
     /**
      * @description XCom entry collection item.
-     * The value field are only available when retrieving a single object due to the sensitivity of this data.
+     *     The value field are only available when retrieving a single object due to the sensitivity of this data.
      */
     VariableCollectionItem: {
       key?: string;
       /**
        * @description The description of the variable.
        *
-       * *New in version 2.4.0*
+       *     *New in version 2.4.0*
        */
       description?: string | null;
     };
     /**
      * @description Collection of variables.
      *
-     * *Changed in version 2.1.0*&#58; 'total_entries' field is added.
+     *     *Changed in version 2.1.0*&#58; 'total_entries' field is added.
      */
     VariableCollection: {
       variables?: components["schemas"]["VariableCollectionItem"][];
@@ -1689,7 +2496,7 @@ export interface components {
     /**
      * @description XCom entry collection item.
      *
-     * The value field is only available when reading a single object due to the size of the value.
+     *     The value field is only available when reading a single object due to the size of the value.
      */
     XComCollectionItem: {
       key?: string;
@@ -1704,7 +2511,7 @@ export interface components {
     /**
      * @description Collection of XCom entries.
      *
-     * *Changed in version 2.1.0*&#58; 'total_entries' field is added.
+     *     *Changed in version 2.1.0*&#58; 'total_entries' field is added.
      */
     XComCollection: {
       xcom_entries?: components["schemas"]["XComCollectionItem"][];
@@ -1712,80 +2519,80 @@ export interface components {
     /** @description Full representations of XCom entry. */
     XCom: components["schemas"]["XComCollectionItem"] & {
       /** @description The value(s), */
-      value?: Partial<string> &
-        Partial<number> &
-        Partial<number> &
-        Partial<boolean> &
-        Partial<unknown[]> &
-        Partial<{ [key: string]: unknown } | null>;
+      value?:
+        | string
+        | number
+        | boolean
+        | unknown[]
+        | (Record<string, never> | null);
     };
     /**
      * @description DAG details.
      *
-     * For details see:
-     * [airflow.models.dag.DAG](https://airflow.apache.org/docs/apache-airflow/stable/_api/airflow/models/dag/index.html#airflow.models.dag.DAG)
+     *     For details see:
+     *     [airflow.models.dag.DAG](https://airflow.apache.org/docs/apache-airflow/stable/_api/airflow/models/dag/index.html#airflow.models.dag.DAG)
      */
     DAGDetail: components["schemas"]["DAG"] & {
-      timezone?: components["schemas"]["Timezone"] | null;
-      catchup?: boolean | null;
-      orientation?: string | null;
-      concurrency?: number | null;
+      timezone?: components["schemas"]["Timezone"];
+      readonly catchup?: boolean | null;
+      readonly orientation?: string | null;
+      readonly concurrency?: number | null;
       /**
        * Format: date-time
        * @description The DAG's start date.
        *
-       * *Changed in version 2.0.1*&#58; Field becomes nullable.
+       *     *Changed in version 2.0.1*&#58; Field becomes nullable.
        */
-      start_date?: string | null;
-      dag_run_timeout?: components["schemas"]["TimeDelta"] | null;
+      readonly start_date?: string | null;
+      dag_run_timeout?: components["schemas"]["TimeDelta"];
       /** @description Nested dataset any/all conditions */
-      dataset_expression?: { [key: string]: unknown } | null;
-      doc_md?: string | null;
-      default_view?: string | null;
+      dataset_expression?: Record<string, never> | null;
+      readonly doc_md?: string | null;
+      readonly default_view?: string | null;
       /**
        * @description User-specified DAG params.
        *
-       * *New in version 2.0.1*
+       *     *New in version 2.0.1*
        */
-      params?: { [key: string]: unknown };
+      readonly params?: Record<string, never>;
       /**
        * Format: date-time
        * @description The DAG's end date.
        *
-       * *New in version 2.3.0*.
+       *     *New in version 2.3.0*.
        */
-      end_date?: string | null;
+      readonly end_date?: string | null;
       /**
        * @description Whether the DAG is paused upon creation.
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
-      is_paused_upon_creation?: boolean | null;
+      readonly is_paused_upon_creation?: boolean | null;
       /**
        * Format: date-time
        * @description The last time the DAG was parsed.
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
-      last_parsed?: string | null;
+      readonly last_parsed?: string | null;
       /**
        * @description The template search path.
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
       template_search_path?: string[] | null;
       /**
        * @description Whether to render templates as native Python objects.
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
-      render_template_as_native_obj?: boolean | null;
+      readonly render_template_as_native_obj?: boolean | null;
     };
     /** @description Additional links containing additional information about the task. */
     ExtraLink: {
       class_ref?: components["schemas"]["ClassReference"];
-      name?: string;
-      href?: string;
+      readonly name?: string;
+      readonly href?: string;
     };
     /** @description The collection of extra links. */
     ExtraLinkCollection: {
@@ -1793,45 +2600,45 @@ export interface components {
     };
     /**
      * @description For details see:
-     * [airflow.models.baseoperator.BaseOperator](https://airflow.apache.org/docs/apache-airflow/stable/_api/airflow/models/baseoperator/index.html#airflow.models.baseoperator.BaseOperator)
+     *     [airflow.models.baseoperator.BaseOperator](https://airflow.apache.org/docs/apache-airflow/stable/_api/airflow/models/baseoperator/index.html#airflow.models.baseoperator.BaseOperator)
      */
     Task: {
       class_ref?: components["schemas"]["ClassReference"];
-      task_id?: string;
-      task_display_name?: string;
-      owner?: string;
+      readonly task_id?: string;
+      readonly task_display_name?: string;
+      readonly owner?: string;
       /** Format: date-time */
-      start_date?: string | null;
+      readonly start_date?: string | null;
       /** Format: date-time */
-      end_date?: string | null;
+      readonly end_date?: string | null;
       trigger_rule?: components["schemas"]["TriggerRule"];
-      extra_links?: {
+      readonly extra_links?: {
         class_ref?: components["schemas"]["ClassReference"];
       }[];
-      depends_on_past?: boolean;
-      is_mapped?: boolean;
-      wait_for_downstream?: boolean;
-      retries?: number;
-      queue?: string | null;
-      executor?: string | null;
-      pool?: string;
-      pool_slots?: number;
+      readonly depends_on_past?: boolean;
+      readonly is_mapped?: boolean;
+      readonly wait_for_downstream?: boolean;
+      readonly retries?: number;
+      readonly queue?: string | null;
+      readonly executor?: string | null;
+      readonly pool?: string;
+      readonly pool_slots?: number;
       execution_timeout?: components["schemas"]["TimeDelta"];
       retry_delay?: components["schemas"]["TimeDelta"];
-      retry_exponential_backoff?: boolean;
-      priority_weight?: number;
+      readonly retry_exponential_backoff?: boolean;
+      readonly priority_weight?: number;
       weight_rule?: components["schemas"]["WeightRule"];
       ui_color?: components["schemas"]["Color"];
       ui_fgcolor?: components["schemas"]["Color"];
-      template_fields?: string[];
+      readonly template_fields?: string[];
       sub_dag?: components["schemas"]["DAG"];
-      downstream_task_ids?: string[];
+      readonly downstream_task_ids?: string[];
       /**
        * @description Task documentation in markdown.
        *
-       * *New in version 2.10.0*
+       *     *New in version 2.10.0*
        */
-      doc_md?: string | null;
+      readonly doc_md?: string | null;
     };
     /** @description Collection of tasks. */
     TaskCollection: {
@@ -1840,7 +2647,7 @@ export interface components {
     /**
      * @description A plugin Item.
      *
-     * *New in version 2.1.0*
+     *     *New in version 2.1.0*
      */
     PluginCollectionItem: {
       /** @description The name of the plugin */
@@ -1854,9 +2661,9 @@ export interface components {
       /** @description The flask blueprints */
       flask_blueprints?: (string | null)[];
       /** @description The appuilder views */
-      appbuilder_views?: ({ [key: string]: unknown } | null)[];
+      appbuilder_views?: (Record<string, never> | null)[];
       /** @description The Flask Appbuilder menu items */
-      appbuilder_menu_items?: ({ [key: string]: unknown } | null)[];
+      appbuilder_menu_items?: (Record<string, never> | null)[];
       /** @description The global operator extra links */
       global_operator_extra_links?: (string | null)[];
       /** @description Operator extra links */
@@ -1873,7 +2680,7 @@ export interface components {
     /**
      * @description A collection of plugin.
      *
-     * *New in version 2.1.0*
+     *     *New in version 2.1.0*
      */
     PluginCollection: {
       plugins?: components["schemas"]["PluginCollectionItem"][];
@@ -1881,13 +2688,13 @@ export interface components {
     /**
      * @description a role item.
      *
-     * *New in version 2.1.0*
+     *     *New in version 2.1.0*
      */
     Role: {
       /**
        * @description The name of the role
        *
-       * *Changed in version 2.3.0*&#58; A minimum character length requirement ('minLength') is added.
+       *     *Changed in version 2.3.0*&#58; A minimum character length requirement ('minLength') is added.
        */
       name?: string;
       actions?: components["schemas"]["ActionResource"][];
@@ -1895,7 +2702,7 @@ export interface components {
     /**
      * @description A collection of roles.
      *
-     * *New in version 2.1.0*
+     *     *New in version 2.1.0*
      */
     RoleCollection: {
       roles?: components["schemas"]["Role"][];
@@ -1903,7 +2710,7 @@ export interface components {
     /**
      * @description An action Item.
      *
-     * *New in version 2.1.0*
+     *     *New in version 2.1.0*
      */
     Action: {
       /** @description The name of the permission "action" */
@@ -1912,7 +2719,7 @@ export interface components {
     /**
      * @description A collection of actions.
      *
-     * *New in version 2.1.0*
+     *     *New in version 2.1.0*
      */
     ActionCollection: {
       actions?: components["schemas"]["Action"][];
@@ -1920,7 +2727,7 @@ export interface components {
     /**
      * @description A resource on which permissions are granted.
      *
-     * *New in version 2.1.0*
+     *     *New in version 2.1.0*
      */
     Resource: {
       /** @description The name of the resource */
@@ -1929,7 +2736,7 @@ export interface components {
     /**
      * @description The Action-Resource item.
      *
-     * *New in version 2.1.0*
+     *     *New in version 2.1.0*
      */
     ActionResource: {
       /** @description The permission action */
@@ -1940,7 +2747,7 @@ export interface components {
     /**
      * @description A dataset item.
      *
-     * *New in version 2.4.0*
+     *     *New in version 2.4.0*
      */
     Dataset: {
       /** @description The dataset id */
@@ -1948,7 +2755,7 @@ export interface components {
       /** @description The dataset uri */
       uri?: string;
       /** @description The dataset extra */
-      extra?: { [key: string]: unknown } | null;
+      extra?: Record<string, never> | null;
       /** @description The dataset creation time */
       created_at?: string;
       /** @description The dataset update time */
@@ -1959,7 +2766,7 @@ export interface components {
     /**
      * @description A datasets reference to an upstream task.
      *
-     * *New in version 2.4.0*
+     *     *New in version 2.4.0*
      */
     TaskOutletDatasetReference: {
       /** @description The DAG ID that updates the dataset. */
@@ -1974,7 +2781,7 @@ export interface components {
     /**
      * @description A datasets reference to a downstream DAG.
      *
-     * *New in version 2.4.0*
+     *     *New in version 2.4.0*
      */
     DagScheduleDatasetReference: {
       /** @description The DAG ID that depends on the dataset. */
@@ -1987,7 +2794,7 @@ export interface components {
     /**
      * @description A collection of datasets.
      *
-     * *New in version 2.4.0*
+     *     *New in version 2.4.0*
      */
     DatasetCollection: {
       datasets?: components["schemas"]["Dataset"][];
@@ -1995,7 +2802,7 @@ export interface components {
     /**
      * @description A dataset event.
      *
-     * *New in version 2.4.0*
+     *     *New in version 2.4.0*
      */
     DatasetEvent: {
       /** @description The dataset id */
@@ -2003,7 +2810,7 @@ export interface components {
       /** @description The URI of the dataset */
       dataset_uri?: string;
       /** @description The dataset event extra */
-      extra?: { [key: string]: unknown } | null;
+      extra?: Record<string, never> | null;
       /** @description The DAG ID that updated the dataset. */
       source_dag_id?: string | null;
       /** @description The task ID that updated the dataset. */
@@ -2020,7 +2827,7 @@ export interface components {
       /** @description The URI of the dataset */
       dataset_uri: string;
       /** @description The dataset event extra */
-      extra?: { [key: string]: unknown } | null;
+      extra?: Record<string, never> | null;
     };
     QueuedEvent: {
       /** @description The datata uri. */
@@ -2036,7 +2843,7 @@ export interface components {
     /**
      * @description A collection of Dataset Dag Run Queues.
      *
-     * *New in version 2.9.0*
+     *     *New in version 2.9.0*
      */
     QueuedEventCollection: {
       datasets?: components["schemas"]["QueuedEvent"][];
@@ -2044,51 +2851,51 @@ export interface components {
     BasicDAGRun: {
       /** @description Run ID. */
       run_id?: string;
-      dag_id?: string;
+      readonly dag_id?: string;
       /**
        * Format: date-time
        * @description The logical date (previously called execution date). This is the time or interval covered by
-       * this DAG run, according to the DAG definition.
+       *     this DAG run, according to the DAG definition.
        *
-       * The value of this field can be set only when creating the object. If you try to modify the
-       * field of an existing object, the request fails with an BAD_REQUEST error.
+       *     The value of this field can be set only when creating the object. If you try to modify the
+       *     field of an existing object, the request fails with an BAD_REQUEST error.
        *
-       * This together with DAG_ID are a unique key.
+       *     This together with DAG_ID are a unique key.
        *
-       * *New in version 2.2.0*
+       *     *New in version 2.2.0*
        */
       logical_date?: string;
       /**
        * Format: date-time
        * @description The start time. The time when DAG run was actually created.
        *
-       * *Changed in version 2.1.3*&#58; Field becomes nullable.
+       *     *Changed in version 2.1.3*&#58; Field becomes nullable.
        */
-      start_date?: string | null;
+      readonly start_date?: string | null;
       /** Format: date-time */
-      end_date?: string | null;
+      readonly end_date?: string | null;
       /** Format: date-time */
-      data_interval_start?: string | null;
+      readonly data_interval_start?: string | null;
       /** Format: date-time */
-      data_interval_end?: string | null;
+      readonly data_interval_end?: string | null;
       state?: components["schemas"]["DagState"];
     };
     /**
      * @description A collection of dataset events.
      *
-     * *New in version 2.4.0*
+     *     *New in version 2.4.0*
      */
     DatasetEventCollection: {
       dataset_events?: components["schemas"]["DatasetEvent"][];
     } & components["schemas"]["CollectionInfo"];
     /** @description The option of configuration. */
     ConfigOption: {
-      key?: string;
-      value?: string;
+      readonly key?: string;
+      readonly value?: string;
     };
     /** @description The section of configuration. */
     ConfigSection: {
-      name?: string;
+      readonly name?: string;
       options?: components["schemas"]["ConfigOption"][];
     };
     /** @description The configuration. */
@@ -2105,24 +2912,22 @@ export interface components {
     ClearDagRun: {
       /**
        * @description If set, don't actually run this operation. The response will contain a list of task instances
-       * planned to be cleaned, but not modified in any way.
-       *
+       *     planned to be cleaned, but not modified in any way.
        * @default true
        */
-      dry_run?: boolean;
+      dry_run: boolean;
     };
     ClearTaskInstances: {
       /**
        * @description If set, don't actually run this operation. The response will contain a list of task instances
-       * planned to be cleaned, but not modified in any way.
-       *
+       *     planned to be cleaned, but not modified in any way.
        * @default true
        */
-      dry_run?: boolean;
+      dry_run: boolean;
       /**
        * @description A list of task ids to clear.
        *
-       * *New in version 2.1.0*
+       *     *New in version 2.1.0*
        */
       task_ids?: string[];
       /**
@@ -2139,12 +2944,12 @@ export interface components {
        * @description Only clear failed tasks.
        * @default true
        */
-      only_failed?: boolean;
+      only_failed: boolean;
       /**
        * @description Only clear running tasks.
        * @default false
        */
-      only_running?: boolean;
+      only_running: boolean;
       /** @description Clear tasks in subdags and clear external tasks indicated by ExternalTaskMarker. */
       include_subdags?: boolean;
       /** @description Clear tasks in the parent dag of the subdag. */
@@ -2157,31 +2962,30 @@ export interface components {
        * @description If set to true, upstream tasks are also affected.
        * @default false
        */
-      include_upstream?: boolean;
+      include_upstream: boolean;
       /**
        * @description If set to true, downstream tasks are also affected.
        * @default false
        */
-      include_downstream?: boolean;
+      include_downstream: boolean;
       /**
        * @description If set to True, also tasks from future DAG Runs are affected.
        * @default false
        */
-      include_future?: boolean;
+      include_future: boolean;
       /**
        * @description If set to True, also tasks from past DAG Runs are affected.
        * @default false
        */
-      include_past?: boolean;
+      include_past: boolean;
     };
     UpdateTaskInstancesState: {
       /**
        * @description If set, don't actually run this operation. The response will contain a list of task instances
-       * planned to be affected, but won't be modified in any way.
-       *
+       *     planned to be affected, but won't be modified in any way.
        * @default true
        */
-      dry_run?: boolean;
+      dry_run: boolean;
       /** @description The task ID. */
       task_id?: string;
       /**
@@ -2192,7 +2996,7 @@ export interface components {
       /**
        * @description The task instance's DAG run ID. Either set this or execution_date but not both.
        *
-       * *New in version 2.3.0*
+       *     *New in version 2.3.0*
        */
       dag_run_id?: string;
       /** @description If set to true, upstream tasks are also affected. */
@@ -2208,11 +3012,10 @@ export interface components {
     UpdateTaskInstance: {
       /**
        * @description If set, don't actually run this operation. The response will contain the task instance
-       * planned to be affected, but won't be modified in any way.
-       *
+       *     planned to be affected, but won't be modified in any way.
        * @default true
        */
-      dry_run?: boolean;
+      dry_run: boolean;
       new_state?: components["schemas"]["UpdateTaskState"];
     };
     SetTaskInstanceNote: {
@@ -2222,9 +3025,9 @@ export interface components {
     ListDagRunsForm: {
       /**
        * @description The name of the field to order the results by. Prefix a field name
-       * with `-` to reverse the sort order.
+       *     with `-` to reverse the sort order.
        *
-       * *New in version 2.1.0*
+       *     *New in version 2.1.0*
        */
       order_by?: string;
       /** @description The number of items to skip before starting to collect the result set. */
@@ -2233,57 +3036,57 @@ export interface components {
        * @description The numbers of items to return.
        * @default 100
        */
-      page_limit?: number;
+      page_limit: number;
       /**
        * @description Return objects with specific DAG IDs.
-       * The value can be repeated to retrieve multiple matching values (OR condition).
+       *     The value can be repeated to retrieve multiple matching values (OR condition).
        */
       dag_ids?: string[];
       /**
        * @description Return objects with specific states.
-       * The value can be repeated to retrieve multiple matching values (OR condition).
+       *     The value can be repeated to retrieve multiple matching values (OR condition).
        */
       states?: string[];
       /**
        * Format: date-time
        * @description Returns objects greater or equal to the specified date.
        *
-       * This can be combined with execution_date_lte key to receive only the selected period.
+       *     This can be combined with execution_date_lte key to receive only the selected period.
        */
       execution_date_gte?: string;
       /**
        * Format: date-time
        * @description Returns objects less than or equal to the specified date.
        *
-       * This can be combined with execution_date_gte key to receive only the selected period.
+       *     This can be combined with execution_date_gte key to receive only the selected period.
        */
       execution_date_lte?: string;
       /**
        * Format: date-time
        * @description Returns objects greater or equal the specified date.
        *
-       * This can be combined with start_date_lte key to receive only the selected period.
+       *     This can be combined with start_date_lte key to receive only the selected period.
        */
       start_date_gte?: string;
       /**
        * Format: date-time
        * @description Returns objects less or equal the specified date.
        *
-       * This can be combined with start_date_gte parameter to receive only the selected period
+       *     This can be combined with start_date_gte parameter to receive only the selected period
        */
       start_date_lte?: string;
       /**
        * Format: date-time
        * @description Returns objects greater or equal the specified date.
        *
-       * This can be combined with end_date_lte parameter to receive only the selected period.
+       *     This can be combined with end_date_lte parameter to receive only the selected period.
        */
       end_date_gte?: string;
       /**
        * Format: date-time
        * @description Returns objects less than or equal to the specified date.
        *
-       * This can be combined with end_date_gte parameter to receive only the selected period.
+       *     This can be combined with end_date_gte parameter to receive only the selected period.
        */
       end_date_lte?: string;
     };
@@ -2294,76 +3097,76 @@ export interface components {
        * @description The numbers of items to return.
        * @default 100
        */
-      page_limit?: number;
+      page_limit: number;
       /**
        * @description Return objects with specific DAG IDs.
-       * The value can be repeated to retrieve multiple matching values (OR condition).
+       *     The value can be repeated to retrieve multiple matching values (OR condition).
        */
       dag_ids?: string[];
       /**
        * @description Return objects with specific DAG Run IDs.
-       * The value can be repeated to retrieve multiple matching values (OR condition).
-       * *New in version 2.7.1*
+       *     The value can be repeated to retrieve multiple matching values (OR condition).
+       *     *New in version 2.7.1*
        */
       dag_run_ids?: string[];
       /**
        * @description Return objects with specific task IDs.
-       * The value can be repeated to retrieve multiple matching values (OR condition).
-       * *New in version 2.7.1*
+       *     The value can be repeated to retrieve multiple matching values (OR condition).
+       *     *New in version 2.7.1*
        */
       task_ids?: string[];
       /**
        * Format: date-time
        * @description Returns objects greater or equal to the specified date.
        *
-       * This can be combined with execution_date_lte parameter to receive only the selected period.
+       *     This can be combined with execution_date_lte parameter to receive only the selected period.
        */
       execution_date_gte?: string;
       /**
        * Format: date-time
        * @description Returns objects less than or equal to the specified date.
        *
-       * This can be combined with execution_date_gte parameter to receive only the selected period.
+       *     This can be combined with execution_date_gte parameter to receive only the selected period.
        */
       execution_date_lte?: string;
       /**
        * Format: date-time
        * @description Returns objects greater or equal the specified date.
        *
-       * This can be combined with start_date_lte parameter to receive only the selected period.
+       *     This can be combined with start_date_lte parameter to receive only the selected period.
        */
       start_date_gte?: string;
       /**
        * Format: date-time
        * @description Returns objects less or equal the specified date.
        *
-       * This can be combined with start_date_gte parameter to receive only the selected period.
+       *     This can be combined with start_date_gte parameter to receive only the selected period.
        */
       start_date_lte?: string;
       /**
        * Format: date-time
        * @description Returns objects greater or equal the specified date.
        *
-       * This can be combined with start_date_lte parameter to receive only the selected period.
+       *     This can be combined with start_date_lte parameter to receive only the selected period.
        */
       end_date_gte?: string;
       /**
        * Format: date-time
        * @description Returns objects less than or equal to the specified date.
        *
-       * This can be combined with start_date_gte parameter to receive only the selected period.
+       *     This can be combined with start_date_gte parameter to receive only the selected period.
        */
       end_date_lte?: string;
       /**
        * @description Returns objects greater than or equal to the specified values.
        *
-       * This can be combined with duration_lte parameter to receive only the selected period.
+       *     This can be combined with duration_lte parameter to receive only the selected period.
        */
       duration_gte?: number;
       /**
        * @description Returns objects less than or equal to the specified values.
        *
-       * This can be combined with duration_gte parameter to receive only the selected range.
+       *     This can be combined with duration_gte parameter to receive only the selected range.
        */
       duration_lte?: number;
       /** @description The value can be repeated to retrieve multiple matching values (OR condition). */
@@ -2377,12 +3180,14 @@ export interface components {
     };
     /**
      * @description Schedule interval. Defines how often DAG runs, this object gets added to your latest task instance's
-     * execution_date to figure out the next schedule.
+     *     execution_date to figure out the next schedule.
      */
     ScheduleInterval:
-      | (Partial<components["schemas"]["TimeDelta"]> &
-          Partial<components["schemas"]["RelativeDelta"]> &
-          Partial<components["schemas"]["CronExpression"]>)
+      | (
+          | components["schemas"]["TimeDelta"]
+          | components["schemas"]["RelativeDelta"]
+          | components["schemas"]["CronExpression"]
+        )
       | null;
     /** @description Time delta */
     TimeDelta: {
@@ -2424,15 +3229,15 @@ export interface components {
     Color: string;
     /** @description Class reference */
     ClassReference: {
-      module_path?: string;
-      class_name?: string;
+      readonly module_path?: string;
+      readonly class_name?: string;
     };
     /** @description [RFC7807](https://tools.ietf.org/html/rfc7807) compliant response. */
     Error: {
       /**
        * @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.
+       *     encourages that, when dereferenced, it provide human-readable documentation for
+       *     the problem type.
        */
       type: string;
       /** @description A short, human-readable summary of the problem type. */
@@ -2443,7 +3248,7 @@ export interface components {
       detail?: string;
       /**
        * @description A URI reference that identifies the specific occurrence of the problem. It may or may
-       * not yield further information if dereferenced.
+       *     not yield further information if dereferenced.
        */
       instance?: string;
     };
@@ -2451,70 +3256,63 @@ export interface components {
     CollectionInfo: {
       /**
        * @description Count of total objects in the current result set before pagination parameters
-       * (limit, offset) are applied.
+       *     (limit, offset) are applied.
        */
       total_entries?: number;
     };
     /**
      * @description Task state.
      *
-     * *Changed in version 2.0.2*&#58; 'removed' is added as a possible value.
-     *
-     * *Changed in version 2.2.0*&#58; 'deferred' is added as a possible value.
+     *     *Changed in version 2.0.2*&#58; 'removed' is added as a possible value.
      *
-     * *Changed in version 2.4.0*&#58; 'sensing' state has been removed.
-     * *Changed in version 2.4.2*&#58; 'restarting' is added as a possible value
+     *     *Changed in version 2.2.0*&#58; 'deferred' is added as a possible value.
      *
-     * *Changed in version 2.7.0*&#58; Field becomes nullable and null primitive is added as a possible value.
-     * *Changed in version 2.7.0*&#58; 'none' state is deprecated in favor of null.
+     *     *Changed in version 2.4.0*&#58; 'sensing' state has been removed.
+     *     *Changed in version 2.4.2*&#58; 'restarting' is added as a possible value
      *
+     *     *Changed in version 2.7.0*&#58; Field becomes nullable and null primitive is added as a possible value.
+     *     *Changed in version 2.7.0*&#58; 'none' state is deprecated in favor of null.
      * @enum {string|null}
      */
     TaskState:
-      | (
-          | null
-          | "success"
-          | "running"
-          | "failed"
-          | "upstream_failed"
-          | "skipped"
-          | "up_for_retry"
-          | "up_for_reschedule"
-          | "queued"
-          | "none"
-          | "scheduled"
-          | "deferred"
-          | "removed"
-          | "restarting"
-        )
-      | null;
+      | null
+      | "success"
+      | "running"
+      | "failed"
+      | "upstream_failed"
+      | "skipped"
+      | "up_for_retry"
+      | "up_for_reschedule"
+      | "queued"
+      | "none"
+      | "scheduled"
+      | "deferred"
+      | "removed"
+      | "restarting";
     /**
      * @description Expected new state. Only a subset of TaskState are available.
      *
-     * Other states are managed directly by the scheduler or the workers and cannot be updated manually through the REST API.
-     *
+     *     Other states are managed directly by the scheduler or the workers and cannot be updated manually through the REST API.
      * @enum {string}
      */
     UpdateTaskState: "success" | "failed" | "skipped";
     /**
      * @description DAG State.
      *
-     * *Changed in version 2.1.3*&#58; 'queued' is added as a possible value.
-     *
+     *     *Changed in version 2.1.3*&#58; 'queued' is added as a possible value.
      * @enum {string}
      */
     DagState: "queued" | "running" | "success" | "failed";
     /**
      * @description Trigger rule.
      *
-     * *Changed in version 2.2.0*&#58; 'none_failed_min_one_success' is added as a possible value. Deprecated 'dummy' and 'always' is added as a possible value
-     *
-     * *Changed in version 2.3.0*&#58; 'all_skipped' is added as a possible value.
+     *     *Changed in version 2.2.0*&#58; 'none_failed_min_one_success' is added as a possible value. Deprecated 'dummy' and 'always' is added as a possible value
      *
-     * *Changed in version 2.5.0*&#58; 'one_done' is added as a possible value.
+     *     *Changed in version 2.3.0*&#58; 'all_skipped' is added as a possible value.
      *
-     * *Changed in version 2.7.0*&#58; 'all_done_setup_success' is added as a possible value.
+     *     *Changed in version 2.5.0*&#58; 'one_done' is added as a possible value.
      *
+     *     *Changed in version 2.7.0*&#58; 'all_done_setup_success' is added as a possible value.
      * @enum {string}
      */
     TriggerRule:
@@ -2538,53 +3336,77 @@ export interface components {
      * @description Health status
      * @enum {string|null}
      */
-    HealthStatus: ("healthy" | "unhealthy") | null;
+    HealthStatus: "healthy" | "unhealthy" | null;
   };
   responses: {
-    /** Client specified an invalid argument. */
+    /** @description Client specified an invalid argument. */
     BadRequest: {
+      headers: {
+        [name: string]: unknown;
+      };
       content: {
         "application/json": components["schemas"]["Error"];
       };
     };
-    /** Request not authenticated due to missing, invalid, authentication info. */
+    /** @description Request not authenticated due to missing, invalid, authentication info. */
     Unauthenticated: {
+      headers: {
+        [name: string]: unknown;
+      };
       content: {
         "application/json": components["schemas"]["Error"];
       };
     };
-    /** Client does not have sufficient permission. */
+    /** @description Client does not have sufficient permission. */
     PermissionDenied: {
+      headers: {
+        [name: string]: unknown;
+      };
       content: {
         "application/json": components["schemas"]["Error"];
       };
     };
-    /** A specified resource is not found. */
+    /** @description A specified resource is not found. */
     NotFound: {
+      headers: {
+        [name: string]: unknown;
+      };
       content: {
         "application/json": components["schemas"]["Error"];
       };
     };
-    /** Request method is known by the server but is not supported by the target resource. */
+    /** @description Request method is known by the server but is not supported by the target resource. */
     MethodNotAllowed: {
+      headers: {
+        [name: string]: unknown;
+      };
       content: {
         "application/json": components["schemas"]["Error"];
       };
     };
-    /** A specified Accept header is not allowed. */
+    /** @description A specified Accept header is not allowed. */
     NotAcceptable: {
+      headers: {
+        [name: string]: unknown;
+      };
       content: {
         "application/json": components["schemas"]["Error"];
       };
     };
-    /** An existing resource conflicts with the request. */
+    /** @description An existing resource conflicts with the request. */
     AlreadyExists: {
+      headers: {
+        [name: string]: unknown;
+      };
       content: {
         "application/json": components["schemas"]["Error"];
       };
     };
-    /** Unknown server error. */
+    /** @description Unknown server error. */
     Unknown: {
+      headers: {
+        [name: string]: unknown;
+      };
       content: {
         "application/json": components["schemas"]["Error"];
       };
@@ -2598,7 +3420,7 @@ export interface components {
     /**
      * @description The username of the user.
      *
-     * *New in version 2.1.0*
+     *     *New in version 2.1.0*
      */
     Username: string;
     /** @description The role name */
@@ -2635,12 +3457,12 @@ export interface components {
     VariableKey: string;
     /**
      * @description A full content will be returned.
-     * By default, only the first fragment will be returned.
+     *     By default, only the first fragment will be returned.
      */
     FullContent: boolean;
     /**
      * @description A token that allows you to continue fetching logs.
-     * If passed, it will specify the location from which the download should be continued.
+     *     If passed, it will specify the location from which the download should be continued.
      */
     ContinuationToken: string;
     /** @description The XCom key. */
@@ -2648,49 +3470,49 @@ export interface components {
     /**
      * @description Returns objects greater or equal to the specified date.
      *
-     * This can be combined with execution_date_lte parameter to receive only the selected period.
+     *     This can be combined with execution_date_lte parameter to receive only the selected period.
      */
     FilterExecutionDateGTE: string;
     /**
      * @description Returns objects less than or equal to the specified date.
      *
-     * This can be combined with execution_date_gte parameter to receive only the selected period.
+     *     This can be combined with execution_date_gte parameter to receive only the selected period.
      */
     FilterExecutionDateLTE: string;
     /**
      * @description Returns objects greater or equal the specified date.
      *
-     * This can be combined with start_date_lte parameter to receive only the selected period.
+     *     This can be combined with start_date_lte parameter to receive only the selected period.
      */
     FilterStartDateGTE: string;
     /**
      * @description Returns objects less or equal the specified date.
      *
-     * This can be combined with start_date_gte parameter to receive only the selected period.
+     *     This can be combined with start_date_gte parameter to receive only the selected period.
      */
     FilterStartDateLTE: string;
     /**
      * @description Returns objects greater or equal the specified date.
      *
-     * This can be combined with start_date_lte parameter to receive only the selected period.
+     *     This can be combined with start_date_lte parameter to receive only the selected period.
      */
     FilterEndDateGTE: string;
     /**
      * @description Returns objects less than or equal to the specified date.
      *
-     * This can be combined with start_date_gte parameter to receive only the selected period.
+     *     This can be combined with start_date_gte parameter to receive only the selected period.
      */
     FilterEndDateLTE: string;
     /**
      * @description Returns objects greater than or equal to the specified values.
      *
-     * This can be combined with duration_lte parameter to receive only the selected period.
+     *     This can be combined with duration_lte parameter to receive only the selected period.
      */
     FilterDurationGTE: number;
     /**
      * @description Returns objects less than or equal to the specified values.
      *
-     * This can be combined with duration_gte parameter to receive only the selected range.
+     *     This can be combined with duration_gte parameter to receive only the selected range.
      */
     FilterDurationLTE: number;
     /** @description The value can be repeated to retrieve multiple matching values (OR condition). */
@@ -2704,7 +3526,7 @@ export interface components {
     /**
      * @description List of tags to filter results.
      *
-     * *New in version 2.2.0*
+     *     *New in version 2.2.0*
      */
     FilterTags: string[];
     /** @description The Dataset ID that updated the dataset. */
@@ -2723,37 +3545,37 @@ export interface components {
     FilterTryNumber: number;
     /**
      * @description The name of the field to order the results by.
-     * Prefix a field name with `-` to reverse the sort order.
+     *     Prefix a field name with `-` to reverse the sort order.
      *
-     * *New in version 2.1.0*
+     *     *New in version 2.1.0*
      */
     OrderBy: string;
     /**
      * @description Only filter active DAGs.
      *
-     * *New in version 2.1.1*
+     *     *New in version 2.1.1*
      */
     OnlyActive: boolean;
     /**
      * @description Returns objects less or equal the specified date.
      *
-     * This can be combined with updated_at_gte parameter to receive only the selected period.
+     *     This can be combined with updated_at_gte parameter to receive only the selected period.
      *
-     * *New in version 2.6.0*
+     *     *New in version 2.6.0*
      */
     FilterUpdatedAtLTE: string;
     /**
      * @description Returns objects greater or equal the specified date.
      *
-     * This can be combined with updated_at_lte parameter to receive only the selected period.
+     *     This can be combined with updated_at_lte parameter to receive only the selected period.
      *
-     * *New in version 2.6.0*
+     *     *New in version 2.6.0*
      */
     FilterUpdatedAtGTE: string;
     /**
      * @description Only filter paused/unpaused DAGs. If absent or null, it returns paused and unpaused DAGs.
      *
-     * *New in version 2.6.0*
+     *     *New in version 2.6.0*
      */
     Paused: boolean;
     /** @description Only filter the XCom records which have the provided key. */
@@ -2766,42 +3588,50 @@ export interface components {
     FilterRunID: string;
     /**
      * @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.
+     *     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.
      */
     FileToken: string;
     /**
      * @description The fields to update on the resource. If absent or empty, all modifiable fields are updated.
-     * A comma-separated list of fully qualified names of fields.
+     *     A comma-separated list of fully qualified names of fields.
      */
     UpdateMask: string[];
     /** @description List of field for return. */
     ReturnFields: string[];
   };
-  requestBodies: {};
-  headers: {};
+  requestBodies: never;
+  headers: never;
+  pathItems: never;
 }
-
+export type $defs = Record<string, never>;
 export interface operations {
   get_connections: {
     parameters: {
-      query: {
-        /** The numbers of items to return. */
+      query?: {
+        /** @description The numbers of items to return. */
         limit?: components["parameters"]["PageLimit"];
-        /** The number of items to skip before starting to collect the result set. */
+        /** @description The number of items to skip before starting to collect the result set. */
         offset?: components["parameters"]["PageOffset"];
         /**
-         * The name of the field to order the results by.
-         * Prefix a field name with `-` to reverse the sort order.
+         * @description The name of the field to order the results by.
+         *     Prefix a field name with `-` to reverse the sort order.
          *
-         * *New in version 2.1.0*
+         *     *New in version 2.1.0*
          */
         order_by?: components["parameters"]["OrderBy"];
       };
+      header?: never;
+      path?: never;
+      cookie?: never;
     };
+    requestBody?: never;
     responses: {
-      /** Success. */
+      /** @description Success. */
       200: {
+        headers: {
+          [name: string]: unknown;
+        };
         content: {
           "application/json": components["schemas"]["ConnectionCollection"];
         };
@@ -2811,9 +3641,23 @@ export interface operations {
     };
   };
   post_connection: {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
+    requestBody: {
+      content: {
+        "application/json": components["schemas"]["Connection"];
+      };
+    };
     responses: {
-      /** Success. */
+      /** @description Success. */
       200: {
+        headers: {
+          [name: string]: unknown;
+        };
         content: {
           "application/json": components["schemas"]["Connection"];
         };
@@ -2822,22 +3666,24 @@ export interface operations {
       401: components["responses"]["Unauthenticated"];
       403: components["responses"]["PermissionDenied"];
     };
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["Connection"];
-      };
-    };
   };
   get_connection: {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The connection ID. */
+        /** @description The connection ID. */
         connection_id: components["parameters"]["ConnectionID"];
       };
+      cookie?: never;
     };
+    requestBody?: never;
     responses: {
-      /** Success. */
+      /** @description Success. */
       200: {
+        headers: {
+          [name: string]: unknown;
+        };
         content: {
           "application/json": components["schemas"]["Connection"];
         };
@@ -2849,14 +3695,23 @@ export interface operations {
   };
   delete_connection: {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The connection ID. */
+        /** @description The connection ID. */
         connection_id: components["parameters"]["ConnectionID"];
       };
+      cookie?: never;
     };
+    requestBody?: never;
     responses: {
-      /** Success. */
-      204: never;
+      /** @description Success. */
+      204: {
+        headers: {
+          [name: string]: unknown;
+        };
+        content?: never;
+      };
       400: components["responses"]["BadRequest"];
       401: components["responses"]["Unauthenticated"];
       403: components["responses"]["PermissionDenied"];
@@ -2865,21 +3720,31 @@ export interface operations {
   };
   patch_connection: {
     parameters: {
-      path: {
-        /** The connection ID. */
-        connection_id: components["parameters"]["ConnectionID"];
-      };
-      query: {
+      query?: {
         /**
-         * The fields to update on the resource. If absent or empty, all modifiable fields are updated.
-         * A comma-separated list of fully qualified names of fields.
+         * @description The fields to update on the resource. If absent or empty, all modifiable fields are updated.
+         *     A comma-separated list of fully qualified names of fields.
          */
         update_mask?: components["parameters"]["UpdateMask"];
       };
+      header?: never;
+      path: {
+        /** @description The connection ID. */
+        connection_id: components["parameters"]["ConnectionID"];
+      };
+      cookie?: never;
+    };
+    requestBody: {
+      content: {
+        "application/json": components["schemas"]["Connection"];
+      };
     };
     responses: {
-      /** Success. */
+      /** @description Success. */
       200: {
+        headers: {
+          [name: string]: unknown;
+        };
         content: {
           "application/json": components["schemas"]["Connection"];
         };
@@ -2889,30 +3754,25 @@ export interface operations {
       403: components["responses"]["PermissionDenied"];
       404: components["responses"]["NotFound"];
     };
+  };
+  test_connection: {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
     requestBody: {
       content: {
         "application/json": components["schemas"]["Connection"];
       };
     };
-  };
-  /**
-   * Test a connection.
-   *
-   * For security reasons, the test connection functionality is disabled by default across Airflow UI, API and CLI.
-   * For more information on capabilities of users, see the documentation:
-   * https://airflow.apache.org/docs/apache-airflow/stable/security/security_model.html#capabilities-of-authenticated-ui-users.
-   * It is strongly advised to not enable the feature until you make sure that only
-   * highly trusted UI/API users have "edit connection" permissions.
-   *
-   * Set the "test_connection" flag to "Enabled" in the "core" section of Airflow configuration (airflow.cfg) to enable testing of collections.
-   * It can also be controlled by the environment variable `AIRFLOW__CORE__TEST_CONNECTION`.
-   *
-   * *New in version 2.2.0*
-   */
-  test_connection: {
     responses: {
-      /** Success. */
+      /** @description Success. */
       200: {
+        headers: {
+          [name: string]: unknown;
+        };
         content: {
           "application/json": components["schemas"]["ConnectionTest"];
         };
@@ -2922,57 +3782,55 @@ export interface operations {
       403: components["responses"]["PermissionDenied"];
       404: components["responses"]["NotFound"];
     };
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["Connection"];
-      };
-    };
   };
-  /**
-   * List DAGs in the database.
-   * `dag_id_pattern` can be set to match dags of a specific pattern
-   */
   get_dags: {
     parameters: {
-      query: {
-        /** The numbers of items to return. */
+      query?: {
+        /** @description The numbers of items to return. */
         limit?: components["parameters"]["PageLimit"];
-        /** The number of items to skip before starting to collect the result set. */
+        /** @description The number of items to skip before starting to collect the result set. */
         offset?: components["parameters"]["PageOffset"];
         /**
-         * The name of the field to order the results by.
-         * Prefix a field name with `-` to reverse the sort order.
+         * @description The name of the field to order the results by.
+         *     Prefix a field name with `-` to reverse the sort order.
          *
-         * *New in version 2.1.0*
+         *     *New in version 2.1.0*
          */
         order_by?: components["parameters"]["OrderBy"];
         /**
-         * List of tags to filter results.
+         * @description List of tags to filter results.
          *
-         * *New in version 2.2.0*
+         *     *New in version 2.2.0*
          */
         tags?: components["parameters"]["FilterTags"];
         /**
-         * Only filter active DAGs.
+         * @description Only filter active DAGs.
          *
-         * *New in version 2.1.1*
+         *     *New in version 2.1.1*
          */
         only_active?: components["parameters"]["OnlyActive"];
         /**
-         * Only filter paused/unpaused DAGs. If absent or null, it returns paused and unpaused DAGs.
+         * @description Only filter paused/unpaused DAGs. If absent or null, it returns paused and unpaused DAGs.
          *
-         * *New in version 2.6.0*
+         *     *New in version 2.6.0*
          */
         paused?: components["parameters"]["Paused"];
-        /** List of field for return. */
+        /** @description List of field for return. */
         fields?: components["parameters"]["ReturnFields"];
-        /** If set, only return DAGs with dag_ids matching this pattern. */
+        /** @description If set, only return DAGs with dag_ids matching this pattern. */
         dag_id_pattern?: string;
       };
+      header?: never;
+      path?: never;
+      cookie?: never;
     };
+    requestBody?: never;
     responses: {
-      /** Success. */
+      /** @description Success. */
       200: {
+        headers: {
+          [name: string]: unknown;
+        };
         content: {
           "application/json": components["schemas"]["DAGCollection"];
         };
@@ -2980,42 +3838,53 @@ export interface operations {
       401: components["responses"]["Unauthenticated"];
     };
   };
-  /**
-   * Update DAGs of a given dag_id_pattern using UpdateMask.
-   * This endpoint allows specifying `~` as the dag_id_pattern to update all DAGs.
-   * *New in version 2.3.0*
-   */
   patch_dags: {
     parameters: {
       query: {
-        /** The numbers of items to return. */
+        /** @description The numbers of items to return. */
         limit?: components["parameters"]["PageLimit"];
-        /** The number of items to skip before starting to collect the result set. */
+        /** @description The number of items to skip before starting to collect the result set. */
         offset?: components["parameters"]["PageOffset"];
         /**
-         * List of tags to filter results.
+         * @description List of tags to filter results.
          *
-         * *New in version 2.2.0*
+         *     *New in version 2.2.0*
          */
         tags?: components["parameters"]["FilterTags"];
         /**
-         * The fields to update on the resource. If absent or empty, all modifiable fields are updated.
-         * A comma-separated list of fully qualified names of fields.
+         * @description The fields to update on the resource. If absent or empty, all modifiable fields are updated.
+         *     A comma-separated list of fully qualified names of fields.
          */
         update_mask?: components["parameters"]["UpdateMask"];
         /**
-         * Only filter active DAGs.
+         * @description Only filter active DAGs.
          *
-         * *New in version 2.1.1*
+         *     *New in version 2.1.1*
          */
         only_active?: components["parameters"]["OnlyActive"];
-        /** If set, only update DAGs with dag_ids matching this pattern. */
+        /** @description If set, only update DAGs with dag_ids matching this pattern. */
         dag_id_pattern: string;
       };
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
+    requestBody: {
+      content: {
+        /**
+         * @example {
+         *       "is_paused": true
+         *     }
+         */
+        "application/json": components["schemas"]["DAG"];
+      };
     };
     responses: {
-      /** Success. */
+      /** @description Success. */
       200: {
+        headers: {
+          [name: string]: unknown;
+        };
         content: {
           "application/json": components["schemas"]["DAGCollection"];
         };
@@ -3024,30 +3893,27 @@ export interface operations {
       403: components["responses"]["PermissionDenied"];
       404: components["responses"]["NotFound"];
     };
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["DAG"];
-      };
-    };
   };
-  /**
-   * Presents only information available in database (DAGModel).
-   * If you need detailed information, consider using GET /dags/{dag_id}/details.
-   */
   get_dag: {
     parameters: {
+      query?: {
+        /** @description List of field for return. */
+        fields?: components["parameters"]["ReturnFields"];
+      };
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
       };
-      query: {
-        /** List of field for return. */
-        fields?: components["parameters"]["ReturnFields"];
-      };
+      cookie?: never;
     };
+    requestBody?: never;
     responses: {
-      /** Success. */
+      /** @description Success. */
       200: {
+        headers: {
+          [name: string]: unknown;
+        };
         content: {
           "application/json": components["schemas"]["DAG"];
         };
@@ -3057,22 +3923,25 @@ export interface operations {
       404: components["responses"]["NotFound"];
     };
   };
-  /**
-   * Deletes all metadata related to the DAG, including finished DAG Runs and Tasks.
-   * Logs are not deleted. This action cannot be undone.
-   *
-   * *New in version 2.2.0*
-   */
   delete_dag: {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
       };
+      cookie?: never;
     };
+    requestBody?: never;
     responses: {
-      /** Success. */
-      204: never;
+      /** @description Success. */
+      204: {
+        headers: {
+          [name: string]: unknown;
+        };
+        content?: never;
+      };
       400: components["responses"]["BadRequest"];
       401: components["responses"]["Unauthenticated"];
       403: components["responses"]["PermissionDenied"];
@@ -3082,21 +3951,36 @@ export interface operations {
   };
   patch_dag: {
     parameters: {
+      query?: {
+        /**
+         * @description The fields to update on the resource. If absent or empty, all modifiable fields are updated.
+         *     A comma-separated list of fully qualified names of fields.
+         */
+        update_mask?: components["parameters"]["UpdateMask"];
+      };
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
       };
-      query: {
+      cookie?: never;
+    };
+    requestBody: {
+      content: {
         /**
-         * The fields to update on the resource. If absent or empty, all modifiable fields are updated.
-         * A comma-separated list of fully qualified names of fields.
+         * @example {
+         *       "is_paused": true
+         *     }
          */
-        update_mask?: components["parameters"]["UpdateMask"];
+        "application/json": components["schemas"]["DAG"];
       };
     };
     responses: {
-      /** Success. */
+      /** @description Success. */
       200: {
+        headers: {
+          [name: string]: unknown;
+        };
         content: {
           "application/json": components["schemas"]["DAG"];
         };
@@ -3105,23 +3989,29 @@ export interface operations {
       403: components["responses"]["PermissionDenied"];
       404: components["responses"]["NotFound"];
     };
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["DAG"];
-      };
-    };
   };
-  /** Clears a set of task instances associated with the DAG for a specified date range. */
   post_clear_task_instances: {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
       };
+      cookie?: never;
+    };
+    /** @description Parameters of action */
+    requestBody: {
+      content: {
+        "application/json": components["schemas"]["ClearTaskInstances"];
+      };
     };
     responses: {
-      /** Success. */
+      /** @description Success. */
       200: {
+        headers: {
+          [name: string]: unknown;
+        };
         content: {
           "application/json": components["schemas"]["TaskInstanceReferenceCollection"];
         };
@@ -3130,32 +4020,33 @@ export interface operations {
       403: components["responses"]["PermissionDenied"];
       404: components["responses"]["NotFound"];
     };
-    /** Parameters of action */
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["ClearTaskInstances"];
-      };
-    };
   };
-  /**
-   * Update the manual user note of a non-mapped Task Instance.
-   *
-   * *New in version 2.5.0*
-   */
   set_task_instance_note: {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
+        /** @description The DAG run ID. */
         dag_run_id: components["parameters"]["DAGRunID"];
-        /** The task ID. */
+        /** @description The task ID. */
         task_id: components["parameters"]["TaskID"];
       };
+      cookie?: never;
+    };
+    /** @description Parameters of set Task Instance note. */
+    requestBody: {
+      content: {
+        "application/json": components["schemas"]["SetTaskInstanceNote"];
+      };
     };
     responses: {
-      /** Success. */
+      /** @description Success. */
       200: {
+        headers: {
+          [name: string]: unknown;
+        };
         content: {
           "application/json": components["schemas"]["TaskInstance"];
         };
@@ -3165,34 +4056,35 @@ export interface operations {
       403: components["responses"]["PermissionDenied"];
       404: components["responses"]["NotFound"];
     };
-    /** Parameters of set Task Instance note. */
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["SetTaskInstanceNote"];
-      };
-    };
   };
-  /**
-   * Update the manual user note of a mapped Task Instance.
-   *
-   * *New in version 2.5.0*
-   */
   set_mapped_task_instance_note: {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
+        /** @description The DAG run ID. */
         dag_run_id: components["parameters"]["DAGRunID"];
-        /** The task ID. */
+        /** @description The task ID. */
         task_id: components["parameters"]["TaskID"];
-        /** The map index. */
+        /** @description The map index. */
         map_index: components["parameters"]["MapIndex"];
       };
+      cookie?: never;
+    };
+    /** @description Parameters of set Task Instance note. */
+    requestBody: {
+      content: {
+        "application/json": components["schemas"]["SetTaskInstanceNote"];
+      };
     };
     responses: {
-      /** Success. */
+      /** @description Success. */
       200: {
+        headers: {
+          [name: string]: unknown;
+        };
         content: {
           "application/json": components["schemas"]["TaskInstance"];
         };
@@ -3202,32 +4094,28 @@ export interface operations {
       403: components["responses"]["PermissionDenied"];
       404: components["responses"]["NotFound"];
     };
-    /** Parameters of set Task Instance note. */
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["SetTaskInstanceNote"];
-      };
-    };
   };
-  /**
-   * Get task dependencies blocking task from getting scheduled.
-   *
-   * *New in version 2.10.0*
-   */
   get_task_instance_dependencies: {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
+        /** @description The DAG run ID. */
         dag_run_id: components["parameters"]["DAGRunID"];
-        /** The task ID. */
+        /** @description The task ID. */
         task_id: components["parameters"]["TaskID"];
       };
+      cookie?: never;
     };
+    requestBody?: never;
     responses: {
-      /** Success. */
+      /** @description Success. */
       200: {
+        headers: {
+          [name: string]: unknown;
+        };
         content: {
           "application/json": components["schemas"]["TaskInstanceDependencyCollection"];
         };
@@ -3238,27 +4126,29 @@ export interface operations {
       404: components["responses"]["NotFound"];
     };
   };
-  /**
-   * Get task dependencies blocking task from getting scheduled.
-   *
-   * *New in version 2.10.0*
-   */
   get_mapped_task_instance_dependencies: {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
+        /** @description The DAG run ID. */
         dag_run_id: components["parameters"]["DAGRunID"];
-        /** The task ID. */
+        /** @description The task ID. */
         task_id: components["parameters"]["TaskID"];
-        /** The map index. */
+        /** @description The map index. */
         map_index: components["parameters"]["MapIndex"];
       };
+      cookie?: never;
     };
+    requestBody?: never;
     responses: {
-      /** Success. */
+      /** @description Success. */
       200: {
+        headers: {
+          [name: string]: unknown;
+        };
         content: {
           "application/json": components["schemas"]["TaskInstanceDependencyCollection"];
         };
@@ -3269,17 +4159,28 @@ export interface operations {
       404: components["responses"]["NotFound"];
     };
   };
-  /** Updates the state for multiple task instances simultaneously. */
   post_set_task_instances_state: {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
       };
+      cookie?: never;
+    };
+    /** @description Parameters of action */
+    requestBody: {
+      content: {
+        "application/json": components["schemas"]["UpdateTaskInstancesState"];
+      };
     };
     responses: {
-      /** Success. */
+      /** @description Success. */
       200: {
+        headers: {
+          [name: string]: unknown;
+        };
         content: {
           "application/json": components["schemas"]["TaskInstanceReferenceCollection"];
         };
@@ -3288,93 +4189,92 @@ export interface operations {
       403: components["responses"]["PermissionDenied"];
       404: components["responses"]["NotFound"];
     };
-    /** Parameters of action */
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["UpdateTaskInstancesState"];
-      };
-    };
   };
-  /** This endpoint allows specifying `~` as the dag_id to retrieve DAG runs for all DAGs. */
   get_dag_runs: {
     parameters: {
-      path: {
-        /** The DAG ID. */
-        dag_id: components["parameters"]["DAGID"];
-      };
-      query: {
-        /** The numbers of items to return. */
+      query?: {
+        /** @description The numbers of items to return. */
         limit?: components["parameters"]["PageLimit"];
-        /** The number of items to skip before starting to collect the result set. */
+        /** @description The number of items to skip before starting to collect the result set. */
         offset?: components["parameters"]["PageOffset"];
         /**
-         * Returns objects greater or equal to the specified date.
+         * @description Returns objects greater or equal to the specified date.
          *
-         * This can be combined with execution_date_lte parameter to receive only the selected period.
+         *     This can be combined with execution_date_lte parameter to receive only the selected period.
          */
         execution_date_gte?: components["parameters"]["FilterExecutionDateGTE"];
         /**
-         * Returns objects less than or equal to the specified date.
+         * @description Returns objects less than or equal to the specified date.
          *
-         * This can be combined with execution_date_gte parameter to receive only the selected period.
+         *     This can be combined with execution_date_gte parameter to receive only the selected period.
          */
         execution_date_lte?: components["parameters"]["FilterExecutionDateLTE"];
         /**
-         * Returns objects greater or equal the specified date.
+         * @description Returns objects greater or equal the specified date.
          *
-         * This can be combined with start_date_lte parameter to receive only the selected period.
+         *     This can be combined with start_date_lte parameter to receive only the selected period.
          */
         start_date_gte?: components["parameters"]["FilterStartDateGTE"];
         /**
-         * Returns objects less or equal the specified date.
+         * @description Returns objects less or equal the specified date.
          *
-         * This can be combined with start_date_gte parameter to receive only the selected period.
+         *     This can be combined with start_date_gte parameter to receive only the selected period.
          */
         start_date_lte?: components["parameters"]["FilterStartDateLTE"];
         /**
-         * Returns objects greater or equal the specified date.
+         * @description Returns objects greater or equal the specified date.
          *
-         * This can be combined with start_date_lte parameter to receive only the selected period.
+         *     This can be combined with start_date_lte parameter to receive only the selected period.
          */
         end_date_gte?: components["parameters"]["FilterEndDateGTE"];
         /**
-         * Returns objects less than or equal to the specified date.
+         * @description Returns objects less than or equal to the specified date.
          *
-         * This can be combined with start_date_gte parameter to receive only the selected period.
+         *     This can be combined with start_date_gte parameter to receive only the selected period.
          */
         end_date_lte?: components["parameters"]["FilterEndDateLTE"];
         /**
-         * Returns objects greater or equal the specified date.
+         * @description Returns objects greater or equal the specified date.
          *
-         * This can be combined with updated_at_lte parameter to receive only the selected period.
+         *     This can be combined with updated_at_lte parameter to receive only the selected period.
          *
-         * *New in version 2.6.0*
+         *     *New in version 2.6.0*
          */
         updated_at_gte?: components["parameters"]["FilterUpdatedAtGTE"];
         /**
-         * Returns objects less or equal the specified date.
+         * @description Returns objects less or equal the specified date.
          *
-         * This can be combined with updated_at_gte parameter to receive only the selected period.
+         *     This can be combined with updated_at_gte parameter to receive only the selected period.
          *
-         * *New in version 2.6.0*
+         *     *New in version 2.6.0*
          */
         updated_at_lte?: components["parameters"]["FilterUpdatedAtLTE"];
-        /** The value can be repeated to retrieve multiple matching values (OR condition). */
+        /** @description The value can be repeated to retrieve multiple matching values (OR condition). */
         state?: components["parameters"]["FilterState"];
         /**
-         * The name of the field to order the results by.
-         * Prefix a field name with `-` to reverse the sort order.
+         * @description The name of the field to order the results by.
+         *     Prefix a field name with `-` to reverse the sort order.
          *
-         * *New in version 2.1.0*
+         *     *New in version 2.1.0*
          */
         order_by?: components["parameters"]["OrderBy"];
-        /** List of field for return. */
+        /** @description List of field for return. */
         fields?: components["parameters"]["ReturnFields"];
       };
+      header?: never;
+      path: {
+        /** @description The DAG ID. */
+        dag_id: components["parameters"]["DAGID"];
+      };
+      cookie?: never;
     };
+    requestBody?: never;
     responses: {
-      /** List of DAG runs. */
+      /** @description List of DAG runs. */
       200: {
+        headers: {
+          [name: string]: unknown;
+        };
         content: {
           "application/json": components["schemas"]["DAGRunCollection"];
         };
@@ -3382,17 +4282,27 @@ export interface operations {
       401: components["responses"]["Unauthenticated"];
     };
   };
-  /** This will initiate a dagrun. If DAG is paused then dagrun state will remain queued, and the task won't run. */
   post_dag_run: {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
       };
+      cookie?: never;
+    };
+    requestBody: {
+      content: {
+        "application/json": components["schemas"]["DAGRun"];
+      };
     };
     responses: {
-      /** Success. */
+      /** @description Success. */
       200: {
+        headers: {
+          [name: string]: unknown;
+        };
         content: {
           "application/json": components["schemas"]["DAGRun"];
         };
@@ -3403,17 +4313,25 @@ export interface operations {
       404: components["responses"]["NotFound"];
       409: components["responses"]["AlreadyExists"];
     };
+  };
+  get_dag_runs_batch: {
+    parameters: {
+      query?: never;
+      header?: never;
+      path?: never;
+      cookie?: never;
+    };
     requestBody: {
       content: {
-        "application/json": components["schemas"]["DAGRun"];
+        "application/json": components["schemas"]["ListDagRunsForm"];
       };
     };
-  };
-  /** This endpoint is a POST to allow filtering across a large number of DAG IDs, where as a GET it would run in to maximum HTTP request URL length limit. */
-  get_dag_runs_batch: {
     responses: {
-      /** Success. */
+      /** @description Success. */
       200: {
+        headers: {
+          [name: string]: unknown;
+        };
         content: {
           "application/json": components["schemas"]["DAGRunCollection"];
         };
@@ -3422,28 +4340,29 @@ export interface operations {
       401: components["responses"]["Unauthenticated"];
       403: components["responses"]["PermissionDenied"];
     };
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["ListDagRunsForm"];
-      };
-    };
   };
   get_dag_run: {
     parameters: {
+      query?: {
+        /** @description List of field for return. */
+        fields?: components["parameters"]["ReturnFields"];
+      };
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
+        /** @description The DAG run ID. */
         dag_run_id: components["parameters"]["DAGRunID"];
       };
-      query: {
-        /** List of field for return. */
-        fields?: components["parameters"]["ReturnFields"];
-      };
+      cookie?: never;
     };
+    requestBody?: never;
     responses: {
-      /** Success. */
+      /** @description Success. */
       200: {
+        headers: {
+          [name: string]: unknown;
+        };
         content: {
           "application/json": components["schemas"]["DAGRun"];
         };
@@ -3455,39 +4374,54 @@ export interface operations {
   };
   delete_dag_run: {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
+        /** @description The DAG run ID. */
         dag_run_id: components["parameters"]["DAGRunID"];
       };
+      cookie?: never;
     };
+    requestBody?: never;
     responses: {
-      /** Success. */
-      204: never;
+      /** @description Success. */
+      204: {
+        headers: {
+          [name: string]: unknown;
+        };
+        content?: never;
+      };
       400: components["responses"]["BadRequest"];
       401: components["responses"]["Unauthenticated"];
       403: components["responses"]["PermissionDenied"];
       404: components["responses"]["NotFound"];
     };
   };
-  /**
-   * Modify a DAG run.
-   *
-   * *New in version 2.2.0*
-   */
   update_dag_run_state: {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
+        /** @description The DAG run ID. */
         dag_run_id: components["parameters"]["DAGRunID"];
       };
+      cookie?: never;
+    };
+    requestBody: {
+      content: {
+        "application/json": components["schemas"]["UpdateDagRunState"];
+      };
     };
     responses: {
-      /** Success. */
+      /** @description Success. */
       200: {
+        headers: {
+          [name: string]: unknown;
+        };
         content: {
           "application/json": components["schemas"]["DAGRun"];
         };
@@ -3497,32 +4431,34 @@ export interface operations {
       403: components["responses"]["PermissionDenied"];
       404: components["responses"]["NotFound"];
     };
-    requestBody: {
-      content: {
-        "application/json": components["schemas"]["UpdateDagRunState"];
-      };
-    };
   };
-  /**
-   * Clear a DAG run.
-   *
-   * *New in version 2.4.0*
-   */
   clear_dag_run: {
     parameters: {
+      query?: never;
+      header?: never;
       path: {
-        /** The DAG ID. */
+        /** @description The DAG ID. */
         dag_id: components["parameters"]["DAGID"];
-        /** The DAG run ID. */
+        /** @description The DAG run ID. */
         dag_run_id: components["parameters"]["DAGRunID"];
       };
... 14909 lines suppressed ...