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

bugraoz pushed a commit to branch v3-1-test
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/v3-1-test by this push:
     new 79cc1e45430 Sync airflowctl from main to v3-1-test to include all 
changes in integration tests (#57171)
79cc1e45430 is described below

commit 79cc1e454302cea41be71414710e81d7a16bcc97
Author: Bugra Ozturk <[email protected]>
AuthorDate: Sun Oct 26 00:06:21 2025 +0200

    Sync airflowctl from main to v3-1-test to include all changes in 
integration tests (#57171)
    
    * Sync airflowctl from main to v3.1 to include all changes in integration 
tests
    
    * Remove changed help images, update backfill in integration
    
    * Regenerate datamodels
    
    * Fix mypy checks
---
 .../tests/airflowctl_tests/conftest.py             |   2 +-
 airflow-ctl/docs/howto/index.rst                   |  56 +++++++-
 airflow-ctl/docs/images/command_hashes.txt         |   8 +-
 ...flowctl_api_network_architecture_diagram.md5sum |   1 +
 ...airflowctl_api_network_architecture_diagram.png | Bin 0 -> 63371 bytes
 .../airflowctl_api_network_architecture_diagram.py |  86 ++++++++++++
 airflow-ctl/docs/images/output_backfill.svg        | 125 ++++++++++++++++++
 airflow-ctl/docs/images/output_backfills.svg       | 125 ------------------
 airflow-ctl/docs/images/output_dag.svg             | 145 ---------------------
 airflow-ctl/docs/images/output_dags.svg            | 145 +++++++++++++++++++++
 airflow-ctl/docs/images/output_main.svg            | 116 ++++++++---------
 airflow-ctl/docs/images/output_version.svg         |  59 +++++----
 airflow-ctl/src/airflowctl/api/client.py           |  10 +-
 airflow-ctl/src/airflowctl/api/operations.py       |  49 ++++---
 airflow-ctl/src/airflowctl/ctl/cli_config.py       |  39 ++++--
 .../src/airflowctl/ctl/commands/version_command.py |   8 +-
 .../tests/airflow_ctl/api/test_operations.py       |   4 +-
 .../ctl/commands/test_version_command.py           |  11 +-
 .../tests/airflow_ctl/ctl/test_cli_config.py       |  13 +-
 .../in_container/run_capture_airflowctl_help.py    |   4 +-
 20 files changed, 581 insertions(+), 425 deletions(-)

diff --git a/airflow-ctl-tests/tests/airflowctl_tests/conftest.py 
b/airflow-ctl-tests/tests/airflowctl_tests/conftest.py
index 202f5d3ca4e..720403e3c64 100644
--- a/airflow-ctl-tests/tests/airflowctl_tests/conftest.py
+++ b/airflow-ctl-tests/tests/airflowctl_tests/conftest.py
@@ -235,7 +235,7 @@ def test_commands(login_command, date_param):
     # Define test commands to run with actual running API server
     return [
         login_command,
-        "backfills list",
+        "backfill list",
         "config get --section core --option executor",
         "connections create --connection-id=test_con --conn-type=mysql 
--password=TEST_PASS -o json",
         "connections list",
diff --git a/airflow-ctl/docs/howto/index.rst b/airflow-ctl/docs/howto/index.rst
index 602c0174e6e..12946aed449 100644
--- a/airflow-ctl/docs/howto/index.rst
+++ b/airflow-ctl/docs/howto/index.rst
@@ -28,13 +28,24 @@ configuring an airflowctl environment.
 
 
 How to use airflowctl
-----------------------
+---------------------
 
 **Important Note**
 ''''''''''''''''''
 airflowctl needs the Airflow API running to be able to work. Please, see the 
login section below before use.
 Otherwise, you may get errors.
 
+Datetime Usage
+''''''''''''''
+For datetime parameters, date should be timezone aware and in ISO format.
+For example: ``2025-10-10T10:00:00+00:00``
+Let's take example of triggering a DAG run with a logical date, run after and 
a note.
+
+.. code-block:: bash
+
+  airflowctl dagrun trigger --dag-id="example_bash_operator" 
--logical-date="2025-09-06T00:00:00+00:00" 
--run-after="2025-09-06T00:00:00+00:00" --note="Triggered from airflowctl"
+
+
 Login
 '''''
 airflowctl needs to be able to connect to the Airflow API. You should pass API 
URL as a parameter to the command
@@ -66,7 +77,39 @@ In both cases token is securely stored in the keyring 
backend. Only configuratio
 is the API URL and the environment name. The token is stored in the keyring 
backend and is not persisted in the
 configuration file. The keyring backend is used to securely store the token 
and is not accessible to the user.
 
+What is authentication for ``airflowctl``?
+``````````````````````````````````````````
+For ``airflowctl`` to be able to communicate with the Airflow API, it needs to 
authenticate itself and acquire token.
+This is done using either a token or a username and password.
+The token can be acquired from the Airflow API or generated using a username 
and password.
+
+.. image:: ../images/diagrams/airflowctl_api_network_architecture_diagram.png
+  :target: 
https://raw.githubusercontent.com/apache/airflow/main/airflow-ctl/docs/images/diagrams/airflowctl_api_network_architecture_diagram.png
+  :width: 100%
+  :alt: airflowctl Auth Login Help
+
+Parameter Details for airflowctl auth login
+```````````````````````````````````````````
+
+**--api-url**: This parameter is required. (e.g. ``http://localhost:8080``)
+The default value is ``http://localhost:8080``. Full URL of the Airflow API. 
Without any ``/api/*`` suffixes.
+If you are running the ``airflowctl`` in ``breeze`` container, it is optional.
+
+**--api-token**: This parameter is optional.
+If you are setting the token via the environment variable 
``AIRFLOW_CLI_TOKEN``, you can skip using this parameter.
+
+**--username**: This parameter is optional.
+If you are not using ``--api-token`` or the environment variable 
``AIRFLOW_CLI_TOKEN``, you must provide a username to authentication along with 
``--password``.
 
+**--password**: This parameter is optional.
+If you provide a username via ``--username`` this is the required password to 
authenticate.
+
+**--env**: This parameter is optional.
+The name of the environment to create or update. The default value is 
``production``.
+This parameter is useful when you want to manage multiple Airflow environments.
+
+More Usage and Help Pictures
+''''''''''''''''''''''''''''
 For more information use
 
 .. code-block:: bash
@@ -88,7 +131,6 @@ You can use the command ``airflowctl --help`` to see the 
list of available comma
   :width: 60%
   :alt: airflowctl Help
 
-
 All Available Group Command References
 --------------------------------------
 
@@ -109,10 +151,10 @@ These visual references show the full command syntax, 
options, and parameters fo
   :width: 60%
   :alt: airflowctl Auth Command
 
-**Backfills**
+**Backfill**
 '''''''''''''
-.. image:: ../images/output_backfills.svg
-  :target: 
https://raw.githubusercontent.com/apache/airflow/main/airflow-ctl/docs/images/output_backfills.svg
+.. image:: ../images/output_backfill.svg
+  :target: 
https://raw.githubusercontent.com/apache/airflow/main/airflow-ctl/docs/images/output_backfill.svg
   :width: 60%
   :alt: airflowctl Backfills Command
 
@@ -132,8 +174,8 @@ These visual references show the full command syntax, 
options, and parameters fo
 
 **Dags**
 ''''''''
-.. image:: ../images/output_dag.svg
-  :target: 
https://raw.githubusercontent.com/apache/airflow/main/airflow-ctl/docs/images/output_dag.svg
+.. image:: ../images/output_dags.svg
+  :target: 
https://raw.githubusercontent.com/apache/airflow/main/airflow-ctl/docs/images/output_dags.svg
   :width: 60%
   :alt: airflowctl Dag Command
 
diff --git a/airflow-ctl/docs/images/command_hashes.txt 
b/airflow-ctl/docs/images/command_hashes.txt
index 8865ab3e198..80a7ac0cbf4 100644
--- a/airflow-ctl/docs/images/command_hashes.txt
+++ b/airflow-ctl/docs/images/command_hashes.txt
@@ -1,14 +1,14 @@
-main:8d768c837899829dfd21d37253d2fb44
+main:deacf21c6300eae16afbf8cbd538f1ef
 assets:b3ae2b933e54528bf486ff28e887804d
 auth:f396d4bce90215599dde6ad0a8f30f29
-backfills:725109470cd2613de8cc8af022fb54bc
+backfill:bbce9859a2d1ce054ad22db92dea8c05
 config:cb175bedf29e8a2c2c6a2ebd13d770a7
 connections:a16225e1c7d28488d0da612752669b4b
-dag:0c06fff60c0cc6618c8de05915506605
+dags:6928d0192e95fde5b0c092e0ea5a0703
 dagrun:ec1b6098822419967e621687bd7e5e4b
 jobs:7f8680afff230eb9940bc7fca727bd52
 pools:03fc7d948cbecf16ff8d640eb8f0ce43
 providers:1c0afb2dff31d93ab2934b032a2250ab
 variables:0b04188937b3c364204ef4cc9a541c62
-version:000176f03a175890b12181c8569e2d0f
+version:d4a7a6229b3a204f114283b62eac789b
 auth login:5277c653ff6dce51f37472dc0bda9775
diff --git 
a/airflow-ctl/docs/images/diagrams/airflowctl_api_network_architecture_diagram.md5sum
 
b/airflow-ctl/docs/images/diagrams/airflowctl_api_network_architecture_diagram.md5sum
new file mode 100644
index 00000000000..d3ecab853e6
--- /dev/null
+++ 
b/airflow-ctl/docs/images/diagrams/airflowctl_api_network_architecture_diagram.md5sum
@@ -0,0 +1 @@
+ea755b0b93dd0524e7ed0ef42b83a888
diff --git 
a/airflow-ctl/docs/images/diagrams/airflowctl_api_network_architecture_diagram.png
 
b/airflow-ctl/docs/images/diagrams/airflowctl_api_network_architecture_diagram.png
new file mode 100644
index 00000000000..b79bafcc618
Binary files /dev/null and 
b/airflow-ctl/docs/images/diagrams/airflowctl_api_network_architecture_diagram.png
 differ
diff --git 
a/airflow-ctl/docs/images/diagrams/airflowctl_api_network_architecture_diagram.py
 
b/airflow-ctl/docs/images/diagrams/airflowctl_api_network_architecture_diagram.py
new file mode 100644
index 00000000000..0894fb955df
--- /dev/null
+++ 
b/airflow-ctl/docs/images/diagrams/airflowctl_api_network_architecture_diagram.py
@@ -0,0 +1,86 @@
+# 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.
+from __future__ import annotations
+
+from pathlib import Path
+
+from diagrams import Cluster, Diagram, Edge
+from diagrams.onprem.client import User
+from diagrams.onprem.compute import Server
+from rich.console import Console
+
+MY_DIR = Path(__file__).parent
+MY_FILENAME = Path(__file__).with_suffix("").name
+
+console = Console(width=400, color_system="standard")
+
+graph_attr = {
+    "concentrate": "false",
+    "splines": "splines",
+}
+
+edge_attr = {
+    "minlen": "1",
+}
+
+
+def generate_airflowctl_api_network_diagram():
+    image_file = (MY_DIR / MY_FILENAME).with_suffix(".png")
+
+    console.print(f"[bright_blue]Generating network diagram {image_file}")
+    with Diagram(
+        name="airflowctl<->API Network Diagram",
+        show=False,
+        direction="LR",
+        filename=MY_FILENAME,
+        edge_attr=edge_attr,
+        graph_attr=graph_attr,
+    ):
+        # Machine network with client
+        with Cluster("Machine Network", graph_attr={"margin": "30", "width": 
"10"}):
+            client = User("Client\n(The machine/host has the airflowctl 
installed)")
+
+        # Airflow deployment network with API server
+        with Cluster("Apache Airflow Deployment Network", 
graph_attr={"margin": "30"}):
+            api_server = Server("Apache Airflow API Server\n(e.g. DNS: 
https://airflow.internal.api.com)")
+
+        # Edges representing the flows
+        (
+            client
+            >> Edge(
+                color="blue",
+                style="solid",
+                label="Login Request\n(if not manually used in --api-token or 
env var. Authentication done with username/password)",
+            )
+            >> api_server
+        )
+
+        (
+            api_server
+            >> Edge(
+                color="darkgreen",
+                style="solid",
+                label="Returns Token",
+            )
+            >> client
+        )
+
+    console.print(f"[green]Generated network diagram {image_file}")
+
+
+if __name__ == "__main__":
+    generate_airflowctl_api_network_diagram()
diff --git a/airflow-ctl/docs/images/output_backfill.svg 
b/airflow-ctl/docs/images/output_backfill.svg
new file mode 100644
index 00000000000..239a37ab8ea
--- /dev/null
+++ b/airflow-ctl/docs/images/output_backfill.svg
@@ -0,0 +1,125 @@
+<svg class="rich-terminal" viewBox="0 0 811 464.79999999999995" 
xmlns="http://www.w3.org/2000/svg";>
+    <!-- Generated with Rich https://www.textualize.io -->
+    <style>
+
+    @font-face {
+        font-family: "Fira Code";
+        src: local("FiraCode-Regular"),
+                
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2";)
 format("woff2"),
+                
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff";)
 format("woff");
+        font-style: normal;
+        font-weight: 400;
+    }
+    @font-face {
+        font-family: "Fira Code";
+        src: local("FiraCode-Bold"),
+                
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2";)
 format("woff2"),
+                
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff";)
 format("woff");
+        font-style: bold;
+        font-weight: 700;
+    }
+
+    .terminal-1327991341-matrix {
+        font-family: Fira Code, monospace;
+        font-size: 20px;
+        line-height: 24.4px;
+        font-variant-east-asian: full-width;
+    }
+
+    .terminal-1327991341-title {
+        font-size: 18px;
+        font-weight: bold;
+        font-family: arial;
+    }
+
+    .terminal-1327991341-r1 { fill: #ff8700 }
+.terminal-1327991341-r2 { fill: #c5c8c6 }
+.terminal-1327991341-r3 { fill: #808080 }
+.terminal-1327991341-r4 { fill: #68a0b3 }
+    </style>
+
+    <defs>
+    <clipPath id="terminal-1327991341-clip-terminal">
+      <rect x="0" y="0" width="792.0" height="413.79999999999995" />
+    </clipPath>
+    <clipPath id="terminal-1327991341-line-0">
+    <rect x="0" y="1.5" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1327991341-line-1">
+    <rect x="0" y="25.9" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1327991341-line-2">
+    <rect x="0" y="50.3" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1327991341-line-3">
+    <rect x="0" y="74.7" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1327991341-line-4">
+    <rect x="0" y="99.1" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1327991341-line-5">
+    <rect x="0" y="123.5" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1327991341-line-6">
+    <rect x="0" y="147.9" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1327991341-line-7">
+    <rect x="0" y="172.3" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1327991341-line-8">
+    <rect x="0" y="196.7" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1327991341-line-9">
+    <rect x="0" y="221.1" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1327991341-line-10">
+    <rect x="0" y="245.5" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1327991341-line-11">
+    <rect x="0" y="269.9" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1327991341-line-12">
+    <rect x="0" y="294.3" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1327991341-line-13">
+    <rect x="0" y="318.7" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1327991341-line-14">
+    <rect x="0" y="343.1" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1327991341-line-15">
+    <rect x="0" y="367.5" width="793" height="24.65"/>
+            </clipPath>
+    </defs>
+
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="809" height="462.8" rx="8"/>
+            <g transform="translate(26,22)">
+            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
+            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
+            <circle cx="44" cy="0" r="7" fill="#28c840"/>
+            </g>
+        
+    <g transform="translate(9, 41)" 
clip-path="url(#terminal-1327991341-clip-terminal)">
+    
+    <g class="terminal-1327991341-matrix">
+    <text class="terminal-1327991341-r1" x="0" y="20" textLength="73.2" 
clip-path="url(#terminal-1327991341-line-0)">Usage:</text><text 
class="terminal-1327991341-r3" x="85.4" y="20" textLength="231.8" 
clip-path="url(#terminal-1327991341-line-0)">airflowctl&#160;backfill</text><text
 class="terminal-1327991341-r2" x="317.2" y="20" textLength="24.4" 
clip-path="url(#terminal-1327991341-line-0)">&#160;[</text><text 
class="terminal-1327991341-r4" x="341.6" y="20" textLength="24.4" clip-path=" 
[...]
+</text><text class="terminal-1327991341-r2" x="793" y="44.4" textLength="12.2" 
clip-path="url(#terminal-1327991341-line-1)">
+</text><text class="terminal-1327991341-r2" x="0" y="68.8" textLength="329.4" 
clip-path="url(#terminal-1327991341-line-2)">Perform&#160;Backfill&#160;operations</text><text
 class="terminal-1327991341-r2" x="793" y="68.8" textLength="12.2" 
clip-path="url(#terminal-1327991341-line-2)">
+</text><text class="terminal-1327991341-r2" x="793" y="93.2" textLength="12.2" 
clip-path="url(#terminal-1327991341-line-3)">
+</text><text class="terminal-1327991341-r1" x="0" y="117.6" textLength="256.2" 
clip-path="url(#terminal-1327991341-line-4)">Positional&#160;Arguments:</text><text
 class="terminal-1327991341-r2" x="793" y="117.6" textLength="12.2" 
clip-path="url(#terminal-1327991341-line-4)">
+</text><text class="terminal-1327991341-r4" x="24.4" y="142" textLength="85.4" 
clip-path="url(#terminal-1327991341-line-5)">COMMAND</text><text 
class="terminal-1327991341-r2" x="793" y="142" textLength="12.2" 
clip-path="url(#terminal-1327991341-line-5)">
+</text><text class="terminal-1327991341-r4" x="48.8" y="166.4" 
textLength="73.2" 
clip-path="url(#terminal-1327991341-line-6)">cancel</text><text 
class="terminal-1327991341-r2" x="219.6" y="166.4" textLength="292.8" 
clip-path="url(#terminal-1327991341-line-6)">Perform&#160;cancel&#160;operation</text><text
 class="terminal-1327991341-r2" x="793" y="166.4" textLength="12.2" 
clip-path="url(#terminal-1327991341-line-6)">
+</text><text class="terminal-1327991341-r4" x="48.8" y="190.8" 
textLength="73.2" 
clip-path="url(#terminal-1327991341-line-7)">create</text><text 
class="terminal-1327991341-r2" x="219.6" y="190.8" textLength="292.8" 
clip-path="url(#terminal-1327991341-line-7)">Perform&#160;create&#160;operation</text><text
 class="terminal-1327991341-r2" x="793" y="190.8" textLength="12.2" 
clip-path="url(#terminal-1327991341-line-7)">
+</text><text class="terminal-1327991341-r4" x="48.8" y="215.2" 
textLength="170.8" 
clip-path="url(#terminal-1327991341-line-8)">create-dry-run</text><text 
class="terminal-1327991341-r2" x="793" y="215.2" textLength="12.2" 
clip-path="url(#terminal-1327991341-line-8)">
+</text><text class="terminal-1327991341-r2" x="219.6" y="239.6" 
textLength="390.4" 
clip-path="url(#terminal-1327991341-line-9)">Perform&#160;create_dry_run&#160;operation</text><text
 class="terminal-1327991341-r2" x="793" y="239.6" textLength="12.2" 
clip-path="url(#terminal-1327991341-line-9)">
+</text><text class="terminal-1327991341-r4" x="48.8" y="264" textLength="36.6" 
clip-path="url(#terminal-1327991341-line-10)">get</text><text 
class="terminal-1327991341-r2" x="219.6" y="264" textLength="256.2" 
clip-path="url(#terminal-1327991341-line-10)">Perform&#160;get&#160;operation</text><text
 class="terminal-1327991341-r2" x="793" y="264" textLength="12.2" 
clip-path="url(#terminal-1327991341-line-10)">
+</text><text class="terminal-1327991341-r4" x="48.8" y="288.4" 
textLength="48.8" 
clip-path="url(#terminal-1327991341-line-11)">list</text><text 
class="terminal-1327991341-r2" x="219.6" y="288.4" textLength="268.4" 
clip-path="url(#terminal-1327991341-line-11)">Perform&#160;list&#160;operation</text><text
 class="terminal-1327991341-r2" x="793" y="288.4" textLength="12.2" 
clip-path="url(#terminal-1327991341-line-11)">
+</text><text class="terminal-1327991341-r4" x="48.8" y="312.8" textLength="61" 
clip-path="url(#terminal-1327991341-line-12)">pause</text><text 
class="terminal-1327991341-r2" x="219.6" y="312.8" textLength="280.6" 
clip-path="url(#terminal-1327991341-line-12)">Perform&#160;pause&#160;operation</text><text
 class="terminal-1327991341-r2" x="793" y="312.8" textLength="12.2" 
clip-path="url(#terminal-1327991341-line-12)">
+</text><text class="terminal-1327991341-r4" x="48.8" y="337.2" 
textLength="85.4" 
clip-path="url(#terminal-1327991341-line-13)">unpause</text><text 
class="terminal-1327991341-r2" x="219.6" y="337.2" textLength="305" 
clip-path="url(#terminal-1327991341-line-13)">Perform&#160;unpause&#160;operation</text><text
 class="terminal-1327991341-r2" x="793" y="337.2" textLength="12.2" 
clip-path="url(#terminal-1327991341-line-13)">
+</text><text class="terminal-1327991341-r2" x="793" y="361.6" 
textLength="12.2" clip-path="url(#terminal-1327991341-line-14)">
+</text><text class="terminal-1327991341-r1" x="0" y="386" textLength="97.6" 
clip-path="url(#terminal-1327991341-line-15)">Options:</text><text 
class="terminal-1327991341-r2" x="793" y="386" textLength="12.2" 
clip-path="url(#terminal-1327991341-line-15)">
+</text><text class="terminal-1327991341-r4" x="24.4" y="410.4" 
textLength="24.4" clip-path="url(#terminal-1327991341-line-16)">-h</text><text 
class="terminal-1327991341-r2" x="48.8" y="410.4" textLength="24.4" 
clip-path="url(#terminal-1327991341-line-16)">,&#160;</text><text 
class="terminal-1327991341-r4" x="73.2" y="410.4" textLength="73.2" 
clip-path="url(#terminal-1327991341-line-16)">--help</text><text 
class="terminal-1327991341-r2" x="219.6" y="410.4" textLength="378.2" 
clip-path="ur [...]
+</text>
+    </g>
+    </g>
+</svg>
diff --git a/airflow-ctl/docs/images/output_backfills.svg 
b/airflow-ctl/docs/images/output_backfills.svg
deleted file mode 100644
index d620c4962b4..00000000000
--- a/airflow-ctl/docs/images/output_backfills.svg
+++ /dev/null
@@ -1,125 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 811 464.79999999999995" 
xmlns="http://www.w3.org/2000/svg";>
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2";)
 format("woff2"),
-                
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff";)
 format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2";)
 format("woff2"),
-                
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff";)
 format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .terminal-3862596371-matrix {
-        font-family: Fira Code, monospace;
-        font-size: 20px;
-        line-height: 24.4px;
-        font-variant-east-asian: full-width;
-    }
-
-    .terminal-3862596371-title {
-        font-size: 18px;
-        font-weight: bold;
-        font-family: arial;
-    }
-
-    .terminal-3862596371-r1 { fill: #ff8700 }
-.terminal-3862596371-r2 { fill: #c5c8c6 }
-.terminal-3862596371-r3 { fill: #808080 }
-.terminal-3862596371-r4 { fill: #68a0b3 }
-    </style>
-
-    <defs>
-    <clipPath id="terminal-3862596371-clip-terminal">
-      <rect x="0" y="0" width="792.0" height="413.79999999999995" />
-    </clipPath>
-    <clipPath id="terminal-3862596371-line-0">
-    <rect x="0" y="1.5" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3862596371-line-1">
-    <rect x="0" y="25.9" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3862596371-line-2">
-    <rect x="0" y="50.3" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3862596371-line-3">
-    <rect x="0" y="74.7" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3862596371-line-4">
-    <rect x="0" y="99.1" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3862596371-line-5">
-    <rect x="0" y="123.5" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3862596371-line-6">
-    <rect x="0" y="147.9" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3862596371-line-7">
-    <rect x="0" y="172.3" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3862596371-line-8">
-    <rect x="0" y="196.7" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3862596371-line-9">
-    <rect x="0" y="221.1" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3862596371-line-10">
-    <rect x="0" y="245.5" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3862596371-line-11">
-    <rect x="0" y="269.9" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3862596371-line-12">
-    <rect x="0" y="294.3" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3862596371-line-13">
-    <rect x="0" y="318.7" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3862596371-line-14">
-    <rect x="0" y="343.1" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-3862596371-line-15">
-    <rect x="0" y="367.5" width="793" height="24.65"/>
-            </clipPath>
-    </defs>
-
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="809" height="462.8" rx="8"/>
-            <g transform="translate(26,22)">
-            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
-            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
-            <circle cx="44" cy="0" r="7" fill="#28c840"/>
-            </g>
-        
-    <g transform="translate(9, 41)" 
clip-path="url(#terminal-3862596371-clip-terminal)">
-    
-    <g class="terminal-3862596371-matrix">
-    <text class="terminal-3862596371-r1" x="0" y="20" textLength="73.2" 
clip-path="url(#terminal-3862596371-line-0)">Usage:</text><text 
class="terminal-3862596371-r3" x="85.4" y="20" textLength="244" 
clip-path="url(#terminal-3862596371-line-0)">airflowctl&#160;backfills</text><text
 class="terminal-3862596371-r2" x="329.4" y="20" textLength="24.4" 
clip-path="url(#terminal-3862596371-line-0)">&#160;[</text><text 
class="terminal-3862596371-r4" x="353.8" y="20" textLength="24.4" clip-path="u 
[...]
-</text><text class="terminal-3862596371-r2" x="793" y="44.4" textLength="12.2" 
clip-path="url(#terminal-3862596371-line-1)">
-</text><text class="terminal-3862596371-r2" x="0" y="68.8" textLength="341.6" 
clip-path="url(#terminal-3862596371-line-2)">Perform&#160;Backfills&#160;operations</text><text
 class="terminal-3862596371-r2" x="793" y="68.8" textLength="12.2" 
clip-path="url(#terminal-3862596371-line-2)">
-</text><text class="terminal-3862596371-r2" x="793" y="93.2" textLength="12.2" 
clip-path="url(#terminal-3862596371-line-3)">
-</text><text class="terminal-3862596371-r1" x="0" y="117.6" textLength="256.2" 
clip-path="url(#terminal-3862596371-line-4)">Positional&#160;Arguments:</text><text
 class="terminal-3862596371-r2" x="793" y="117.6" textLength="12.2" 
clip-path="url(#terminal-3862596371-line-4)">
-</text><text class="terminal-3862596371-r4" x="24.4" y="142" textLength="85.4" 
clip-path="url(#terminal-3862596371-line-5)">COMMAND</text><text 
class="terminal-3862596371-r2" x="793" y="142" textLength="12.2" 
clip-path="url(#terminal-3862596371-line-5)">
-</text><text class="terminal-3862596371-r4" x="48.8" y="166.4" 
textLength="73.2" 
clip-path="url(#terminal-3862596371-line-6)">cancel</text><text 
class="terminal-3862596371-r2" x="219.6" y="166.4" textLength="292.8" 
clip-path="url(#terminal-3862596371-line-6)">Perform&#160;cancel&#160;operation</text><text
 class="terminal-3862596371-r2" x="793" y="166.4" textLength="12.2" 
clip-path="url(#terminal-3862596371-line-6)">
-</text><text class="terminal-3862596371-r4" x="48.8" y="190.8" 
textLength="73.2" 
clip-path="url(#terminal-3862596371-line-7)">create</text><text 
class="terminal-3862596371-r2" x="219.6" y="190.8" textLength="292.8" 
clip-path="url(#terminal-3862596371-line-7)">Perform&#160;create&#160;operation</text><text
 class="terminal-3862596371-r2" x="793" y="190.8" textLength="12.2" 
clip-path="url(#terminal-3862596371-line-7)">
-</text><text class="terminal-3862596371-r4" x="48.8" y="215.2" 
textLength="170.8" 
clip-path="url(#terminal-3862596371-line-8)">create-dry-run</text><text 
class="terminal-3862596371-r2" x="793" y="215.2" textLength="12.2" 
clip-path="url(#terminal-3862596371-line-8)">
-</text><text class="terminal-3862596371-r2" x="219.6" y="239.6" 
textLength="390.4" 
clip-path="url(#terminal-3862596371-line-9)">Perform&#160;create_dry_run&#160;operation</text><text
 class="terminal-3862596371-r2" x="793" y="239.6" textLength="12.2" 
clip-path="url(#terminal-3862596371-line-9)">
-</text><text class="terminal-3862596371-r4" x="48.8" y="264" textLength="36.6" 
clip-path="url(#terminal-3862596371-line-10)">get</text><text 
class="terminal-3862596371-r2" x="219.6" y="264" textLength="256.2" 
clip-path="url(#terminal-3862596371-line-10)">Perform&#160;get&#160;operation</text><text
 class="terminal-3862596371-r2" x="793" y="264" textLength="12.2" 
clip-path="url(#terminal-3862596371-line-10)">
-</text><text class="terminal-3862596371-r4" x="48.8" y="288.4" 
textLength="48.8" 
clip-path="url(#terminal-3862596371-line-11)">list</text><text 
class="terminal-3862596371-r2" x="219.6" y="288.4" textLength="268.4" 
clip-path="url(#terminal-3862596371-line-11)">Perform&#160;list&#160;operation</text><text
 class="terminal-3862596371-r2" x="793" y="288.4" textLength="12.2" 
clip-path="url(#terminal-3862596371-line-11)">
-</text><text class="terminal-3862596371-r4" x="48.8" y="312.8" textLength="61" 
clip-path="url(#terminal-3862596371-line-12)">pause</text><text 
class="terminal-3862596371-r2" x="219.6" y="312.8" textLength="280.6" 
clip-path="url(#terminal-3862596371-line-12)">Perform&#160;pause&#160;operation</text><text
 class="terminal-3862596371-r2" x="793" y="312.8" textLength="12.2" 
clip-path="url(#terminal-3862596371-line-12)">
-</text><text class="terminal-3862596371-r4" x="48.8" y="337.2" 
textLength="85.4" 
clip-path="url(#terminal-3862596371-line-13)">unpause</text><text 
class="terminal-3862596371-r2" x="219.6" y="337.2" textLength="305" 
clip-path="url(#terminal-3862596371-line-13)">Perform&#160;unpause&#160;operation</text><text
 class="terminal-3862596371-r2" x="793" y="337.2" textLength="12.2" 
clip-path="url(#terminal-3862596371-line-13)">
-</text><text class="terminal-3862596371-r2" x="793" y="361.6" 
textLength="12.2" clip-path="url(#terminal-3862596371-line-14)">
-</text><text class="terminal-3862596371-r1" x="0" y="386" textLength="97.6" 
clip-path="url(#terminal-3862596371-line-15)">Options:</text><text 
class="terminal-3862596371-r2" x="793" y="386" textLength="12.2" 
clip-path="url(#terminal-3862596371-line-15)">
-</text><text class="terminal-3862596371-r4" x="24.4" y="410.4" 
textLength="24.4" clip-path="url(#terminal-3862596371-line-16)">-h</text><text 
class="terminal-3862596371-r2" x="48.8" y="410.4" textLength="24.4" 
clip-path="url(#terminal-3862596371-line-16)">,&#160;</text><text 
class="terminal-3862596371-r4" x="73.2" y="410.4" textLength="73.2" 
clip-path="url(#terminal-3862596371-line-16)">--help</text><text 
class="terminal-3862596371-r2" x="219.6" y="410.4" textLength="378.2" 
clip-path="ur [...]
-</text>
-    </g>
-    </g>
-</svg>
diff --git a/airflow-ctl/docs/images/output_dag.svg 
b/airflow-ctl/docs/images/output_dag.svg
deleted file mode 100644
index f9192776445..00000000000
--- a/airflow-ctl/docs/images/output_dag.svg
+++ /dev/null
@@ -1,145 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 811 586.8" 
xmlns="http://www.w3.org/2000/svg";>
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2";)
 format("woff2"),
-                
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff";)
 format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2";)
 format("woff2"),
-                
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff";)
 format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .terminal-4138665746-matrix {
-        font-family: Fira Code, monospace;
-        font-size: 20px;
-        line-height: 24.4px;
-        font-variant-east-asian: full-width;
-    }
-
-    .terminal-4138665746-title {
-        font-size: 18px;
-        font-weight: bold;
-        font-family: arial;
-    }
-
-    .terminal-4138665746-r1 { fill: #ff8700 }
-.terminal-4138665746-r2 { fill: #c5c8c6 }
-.terminal-4138665746-r3 { fill: #808080 }
-.terminal-4138665746-r4 { fill: #68a0b3 }
-    </style>
-
-    <defs>
-    <clipPath id="terminal-4138665746-clip-terminal">
-      <rect x="0" y="0" width="792.0" height="535.8" />
-    </clipPath>
-    <clipPath id="terminal-4138665746-line-0">
-    <rect x="0" y="1.5" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4138665746-line-1">
-    <rect x="0" y="25.9" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4138665746-line-2">
-    <rect x="0" y="50.3" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4138665746-line-3">
-    <rect x="0" y="74.7" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4138665746-line-4">
-    <rect x="0" y="99.1" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4138665746-line-5">
-    <rect x="0" y="123.5" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4138665746-line-6">
-    <rect x="0" y="147.9" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4138665746-line-7">
-    <rect x="0" y="172.3" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4138665746-line-8">
-    <rect x="0" y="196.7" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4138665746-line-9">
-    <rect x="0" y="221.1" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4138665746-line-10">
-    <rect x="0" y="245.5" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4138665746-line-11">
-    <rect x="0" y="269.9" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4138665746-line-12">
-    <rect x="0" y="294.3" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4138665746-line-13">
-    <rect x="0" y="318.7" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4138665746-line-14">
-    <rect x="0" y="343.1" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4138665746-line-15">
-    <rect x="0" y="367.5" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4138665746-line-16">
-    <rect x="0" y="391.9" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4138665746-line-17">
-    <rect x="0" y="416.3" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4138665746-line-18">
-    <rect x="0" y="440.7" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4138665746-line-19">
-    <rect x="0" y="465.1" width="793" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-4138665746-line-20">
-    <rect x="0" y="489.5" width="793" height="24.65"/>
-            </clipPath>
-    </defs>
-
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="809" height="584.8" rx="8"/>
-            <g transform="translate(26,22)">
-            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
-            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
-            <circle cx="44" cy="0" r="7" fill="#28c840"/>
-            </g>
-        
-    <g transform="translate(9, 41)" 
clip-path="url(#terminal-4138665746-clip-terminal)">
-    
-    <g class="terminal-4138665746-matrix">
-    <text class="terminal-4138665746-r1" x="0" y="20" textLength="73.2" 
clip-path="url(#terminal-4138665746-line-0)">Usage:</text><text 
class="terminal-4138665746-r3" x="85.4" y="20" textLength="170.8" 
clip-path="url(#terminal-4138665746-line-0)">airflowctl&#160;dag</text><text 
class="terminal-4138665746-r2" x="256.2" y="20" textLength="24.4" 
clip-path="url(#terminal-4138665746-line-0)">&#160;[</text><text 
class="terminal-4138665746-r4" x="280.6" y="20" textLength="24.4" 
clip-path="url(# [...]
-</text><text class="terminal-4138665746-r2" x="793" y="44.4" textLength="12.2" 
clip-path="url(#terminal-4138665746-line-1)">
-</text><text class="terminal-4138665746-r2" x="0" y="68.8" textLength="268.4" 
clip-path="url(#terminal-4138665746-line-2)">Perform&#160;Dag&#160;operations</text><text
 class="terminal-4138665746-r2" x="793" y="68.8" textLength="12.2" 
clip-path="url(#terminal-4138665746-line-2)">
-</text><text class="terminal-4138665746-r2" x="793" y="93.2" textLength="12.2" 
clip-path="url(#terminal-4138665746-line-3)">
-</text><text class="terminal-4138665746-r1" x="0" y="117.6" textLength="256.2" 
clip-path="url(#terminal-4138665746-line-4)">Positional&#160;Arguments:</text><text
 class="terminal-4138665746-r2" x="793" y="117.6" textLength="12.2" 
clip-path="url(#terminal-4138665746-line-4)">
-</text><text class="terminal-4138665746-r4" x="24.4" y="142" textLength="85.4" 
clip-path="url(#terminal-4138665746-line-5)">COMMAND</text><text 
class="terminal-4138665746-r2" x="793" y="142" textLength="12.2" 
clip-path="url(#terminal-4138665746-line-5)">
-</text><text class="terminal-4138665746-r4" x="48.8" y="166.4" 
textLength="73.2" 
clip-path="url(#terminal-4138665746-line-6)">delete</text><text 
class="terminal-4138665746-r2" x="268.4" y="166.4" textLength="292.8" 
clip-path="url(#terminal-4138665746-line-6)">Perform&#160;delete&#160;operation</text><text
 class="terminal-4138665746-r2" x="793" y="166.4" textLength="12.2" 
clip-path="url(#terminal-4138665746-line-6)">
-</text><text class="terminal-4138665746-r4" x="48.8" y="190.8" 
textLength="36.6" clip-path="url(#terminal-4138665746-line-7)">get</text><text 
class="terminal-4138665746-r2" x="268.4" y="190.8" textLength="256.2" 
clip-path="url(#terminal-4138665746-line-7)">Perform&#160;get&#160;operation</text><text
 class="terminal-4138665746-r2" x="793" y="190.8" textLength="12.2" 
clip-path="url(#terminal-4138665746-line-7)">
-</text><text class="terminal-4138665746-r4" x="48.8" y="215.2" 
textLength="134.2" 
clip-path="url(#terminal-4138665746-line-8)">get-details</text><text 
class="terminal-4138665746-r2" x="268.4" y="215.2" textLength="353.8" 
clip-path="url(#terminal-4138665746-line-8)">Perform&#160;get_details&#160;operation</text><text
 class="terminal-4138665746-r2" x="793" y="215.2" textLength="12.2" 
clip-path="url(#terminal-4138665746-line-8)">
-</text><text class="terminal-4138665746-r4" x="48.8" y="239.6" 
textLength="195.2" 
clip-path="url(#terminal-4138665746-line-9)">get-import-error</text><text 
class="terminal-4138665746-r2" x="268.4" y="239.6" textLength="414.8" 
clip-path="url(#terminal-4138665746-line-9)">Perform&#160;get_import_error&#160;operation</text><text
 class="terminal-4138665746-r2" x="793" y="239.6" textLength="12.2" 
clip-path="url(#terminal-4138665746-line-9)">
-</text><text class="terminal-4138665746-r4" x="48.8" y="264" 
textLength="109.8" 
clip-path="url(#terminal-4138665746-line-10)">get-stats</text><text 
class="terminal-4138665746-r2" x="268.4" y="264" textLength="329.4" 
clip-path="url(#terminal-4138665746-line-10)">Perform&#160;get_stats&#160;operation</text><text
 class="terminal-4138665746-r2" x="793" y="264" textLength="12.2" 
clip-path="url(#terminal-4138665746-line-10)">
-</text><text class="terminal-4138665746-r4" x="48.8" y="288.4" 
textLength="97.6" 
clip-path="url(#terminal-4138665746-line-11)">get-tags</text><text 
class="terminal-4138665746-r2" x="268.4" y="288.4" textLength="317.2" 
clip-path="url(#terminal-4138665746-line-11)">Perform&#160;get_tags&#160;operation</text><text
 class="terminal-4138665746-r2" x="793" y="288.4" textLength="12.2" 
clip-path="url(#terminal-4138665746-line-11)">
-</text><text class="terminal-4138665746-r4" x="48.8" y="312.8" 
textLength="134.2" 
clip-path="url(#terminal-4138665746-line-12)">get-version</text><text 
class="terminal-4138665746-r2" x="268.4" y="312.8" textLength="353.8" 
clip-path="url(#terminal-4138665746-line-12)">Perform&#160;get_version&#160;operation</text><text
 class="terminal-4138665746-r2" x="793" y="312.8" textLength="12.2" 
clip-path="url(#terminal-4138665746-line-12)">
-</text><text class="terminal-4138665746-r4" x="48.8" y="337.2" 
textLength="48.8" 
clip-path="url(#terminal-4138665746-line-13)">list</text><text 
class="terminal-4138665746-r2" x="268.4" y="337.2" textLength="268.4" 
clip-path="url(#terminal-4138665746-line-13)">Perform&#160;list&#160;operation</text><text
 class="terminal-4138665746-r2" x="793" y="337.2" textLength="12.2" 
clip-path="url(#terminal-4138665746-line-13)">
-</text><text class="terminal-4138665746-r4" x="48.8" y="361.6" 
textLength="219.6" 
clip-path="url(#terminal-4138665746-line-14)">list-import-errors</text><text 
class="terminal-4138665746-r2" x="793" y="361.6" textLength="12.2" 
clip-path="url(#terminal-4138665746-line-14)">
-</text><text class="terminal-4138665746-r2" x="268.4" y="386" 
textLength="439.2" 
clip-path="url(#terminal-4138665746-line-15)">Perform&#160;list_import_errors&#160;operation</text><text
 class="terminal-4138665746-r2" x="793" y="386" textLength="12.2" 
clip-path="url(#terminal-4138665746-line-15)">
-</text><text class="terminal-4138665746-r4" x="48.8" y="410.4" 
textLength="146.4" 
clip-path="url(#terminal-4138665746-line-16)">list-version</text><text 
class="terminal-4138665746-r2" x="268.4" y="410.4" textLength="366" 
clip-path="url(#terminal-4138665746-line-16)">Perform&#160;list_version&#160;operation</text><text
 class="terminal-4138665746-r2" x="793" y="410.4" textLength="12.2" 
clip-path="url(#terminal-4138665746-line-16)">
-</text><text class="terminal-4138665746-r4" x="48.8" y="434.8" 
textLength="146.4" 
clip-path="url(#terminal-4138665746-line-17)">list-warning</text><text 
class="terminal-4138665746-r2" x="268.4" y="434.8" textLength="366" 
clip-path="url(#terminal-4138665746-line-17)">Perform&#160;list_warning&#160;operation</text><text
 class="terminal-4138665746-r2" x="793" y="434.8" textLength="12.2" 
clip-path="url(#terminal-4138665746-line-17)">
-</text><text class="terminal-4138665746-r4" x="48.8" y="459.2" textLength="61" 
clip-path="url(#terminal-4138665746-line-18)">patch</text><text 
class="terminal-4138665746-r2" x="268.4" y="459.2" textLength="280.6" 
clip-path="url(#terminal-4138665746-line-18)">Perform&#160;patch&#160;operation</text><text
 class="terminal-4138665746-r2" x="793" y="459.2" textLength="12.2" 
clip-path="url(#terminal-4138665746-line-18)">
-</text><text class="terminal-4138665746-r2" x="793" y="483.6" 
textLength="12.2" clip-path="url(#terminal-4138665746-line-19)">
-</text><text class="terminal-4138665746-r1" x="0" y="508" textLength="97.6" 
clip-path="url(#terminal-4138665746-line-20)">Options:</text><text 
class="terminal-4138665746-r2" x="793" y="508" textLength="12.2" 
clip-path="url(#terminal-4138665746-line-20)">
-</text><text class="terminal-4138665746-r4" x="24.4" y="532.4" 
textLength="24.4" clip-path="url(#terminal-4138665746-line-21)">-h</text><text 
class="terminal-4138665746-r2" x="48.8" y="532.4" textLength="24.4" 
clip-path="url(#terminal-4138665746-line-21)">,&#160;</text><text 
class="terminal-4138665746-r4" x="73.2" y="532.4" textLength="73.2" 
clip-path="url(#terminal-4138665746-line-21)">--help</text><text 
class="terminal-4138665746-r2" x="268.4" y="532.4" textLength="378.2" 
clip-path="ur [...]
-</text>
-    </g>
-    </g>
-</svg>
diff --git a/airflow-ctl/docs/images/output_dags.svg 
b/airflow-ctl/docs/images/output_dags.svg
new file mode 100644
index 00000000000..73c7b63a48f
--- /dev/null
+++ b/airflow-ctl/docs/images/output_dags.svg
@@ -0,0 +1,145 @@
+<svg class="rich-terminal" viewBox="0 0 811 586.8" 
xmlns="http://www.w3.org/2000/svg";>
+    <!-- Generated with Rich https://www.textualize.io -->
+    <style>
+
+    @font-face {
+        font-family: "Fira Code";
+        src: local("FiraCode-Regular"),
+                
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2";)
 format("woff2"),
+                
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff";)
 format("woff");
+        font-style: normal;
+        font-weight: 400;
+    }
+    @font-face {
+        font-family: "Fira Code";
+        src: local("FiraCode-Bold"),
+                
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2";)
 format("woff2"),
+                
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff";)
 format("woff");
+        font-style: bold;
+        font-weight: 700;
+    }
+
+    .terminal-3052996798-matrix {
+        font-family: Fira Code, monospace;
+        font-size: 20px;
+        line-height: 24.4px;
+        font-variant-east-asian: full-width;
+    }
+
+    .terminal-3052996798-title {
+        font-size: 18px;
+        font-weight: bold;
+        font-family: arial;
+    }
+
+    .terminal-3052996798-r1 { fill: #ff8700 }
+.terminal-3052996798-r2 { fill: #c5c8c6 }
+.terminal-3052996798-r3 { fill: #808080 }
+.terminal-3052996798-r4 { fill: #68a0b3 }
+    </style>
+
+    <defs>
+    <clipPath id="terminal-3052996798-clip-terminal">
+      <rect x="0" y="0" width="792.0" height="535.8" />
+    </clipPath>
+    <clipPath id="terminal-3052996798-line-0">
+    <rect x="0" y="1.5" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3052996798-line-1">
+    <rect x="0" y="25.9" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3052996798-line-2">
+    <rect x="0" y="50.3" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3052996798-line-3">
+    <rect x="0" y="74.7" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3052996798-line-4">
+    <rect x="0" y="99.1" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3052996798-line-5">
+    <rect x="0" y="123.5" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3052996798-line-6">
+    <rect x="0" y="147.9" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3052996798-line-7">
+    <rect x="0" y="172.3" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3052996798-line-8">
+    <rect x="0" y="196.7" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3052996798-line-9">
+    <rect x="0" y="221.1" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3052996798-line-10">
+    <rect x="0" y="245.5" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3052996798-line-11">
+    <rect x="0" y="269.9" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3052996798-line-12">
+    <rect x="0" y="294.3" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3052996798-line-13">
+    <rect x="0" y="318.7" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3052996798-line-14">
+    <rect x="0" y="343.1" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3052996798-line-15">
+    <rect x="0" y="367.5" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3052996798-line-16">
+    <rect x="0" y="391.9" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3052996798-line-17">
+    <rect x="0" y="416.3" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3052996798-line-18">
+    <rect x="0" y="440.7" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3052996798-line-19">
+    <rect x="0" y="465.1" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3052996798-line-20">
+    <rect x="0" y="489.5" width="793" height="24.65"/>
+            </clipPath>
+    </defs>
+
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="809" height="584.8" rx="8"/>
+            <g transform="translate(26,22)">
+            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
+            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
+            <circle cx="44" cy="0" r="7" fill="#28c840"/>
+            </g>
+        
+    <g transform="translate(9, 41)" 
clip-path="url(#terminal-3052996798-clip-terminal)">
+    
+    <g class="terminal-3052996798-matrix">
+    <text class="terminal-3052996798-r1" x="0" y="20" textLength="73.2" 
clip-path="url(#terminal-3052996798-line-0)">Usage:</text><text 
class="terminal-3052996798-r3" x="85.4" y="20" textLength="183" 
clip-path="url(#terminal-3052996798-line-0)">airflowctl&#160;dags</text><text 
class="terminal-3052996798-r2" x="268.4" y="20" textLength="24.4" 
clip-path="url(#terminal-3052996798-line-0)">&#160;[</text><text 
class="terminal-3052996798-r4" x="292.8" y="20" textLength="24.4" 
clip-path="url(#t [...]
+</text><text class="terminal-3052996798-r2" x="793" y="44.4" textLength="12.2" 
clip-path="url(#terminal-3052996798-line-1)">
+</text><text class="terminal-3052996798-r2" x="0" y="68.8" textLength="280.6" 
clip-path="url(#terminal-3052996798-line-2)">Perform&#160;Dags&#160;operations</text><text
 class="terminal-3052996798-r2" x="793" y="68.8" textLength="12.2" 
clip-path="url(#terminal-3052996798-line-2)">
+</text><text class="terminal-3052996798-r2" x="793" y="93.2" textLength="12.2" 
clip-path="url(#terminal-3052996798-line-3)">
+</text><text class="terminal-3052996798-r1" x="0" y="117.6" textLength="256.2" 
clip-path="url(#terminal-3052996798-line-4)">Positional&#160;Arguments:</text><text
 class="terminal-3052996798-r2" x="793" y="117.6" textLength="12.2" 
clip-path="url(#terminal-3052996798-line-4)">
+</text><text class="terminal-3052996798-r4" x="24.4" y="142" textLength="85.4" 
clip-path="url(#terminal-3052996798-line-5)">COMMAND</text><text 
class="terminal-3052996798-r2" x="793" y="142" textLength="12.2" 
clip-path="url(#terminal-3052996798-line-5)">
+</text><text class="terminal-3052996798-r4" x="48.8" y="166.4" 
textLength="73.2" 
clip-path="url(#terminal-3052996798-line-6)">delete</text><text 
class="terminal-3052996798-r2" x="268.4" y="166.4" textLength="292.8" 
clip-path="url(#terminal-3052996798-line-6)">Perform&#160;delete&#160;operation</text><text
 class="terminal-3052996798-r2" x="793" y="166.4" textLength="12.2" 
clip-path="url(#terminal-3052996798-line-6)">
+</text><text class="terminal-3052996798-r4" x="48.8" y="190.8" 
textLength="36.6" clip-path="url(#terminal-3052996798-line-7)">get</text><text 
class="terminal-3052996798-r2" x="268.4" y="190.8" textLength="256.2" 
clip-path="url(#terminal-3052996798-line-7)">Perform&#160;get&#160;operation</text><text
 class="terminal-3052996798-r2" x="793" y="190.8" textLength="12.2" 
clip-path="url(#terminal-3052996798-line-7)">
+</text><text class="terminal-3052996798-r4" x="48.8" y="215.2" 
textLength="134.2" 
clip-path="url(#terminal-3052996798-line-8)">get-details</text><text 
class="terminal-3052996798-r2" x="268.4" y="215.2" textLength="353.8" 
clip-path="url(#terminal-3052996798-line-8)">Perform&#160;get_details&#160;operation</text><text
 class="terminal-3052996798-r2" x="793" y="215.2" textLength="12.2" 
clip-path="url(#terminal-3052996798-line-8)">
+</text><text class="terminal-3052996798-r4" x="48.8" y="239.6" 
textLength="195.2" 
clip-path="url(#terminal-3052996798-line-9)">get-import-error</text><text 
class="terminal-3052996798-r2" x="268.4" y="239.6" textLength="414.8" 
clip-path="url(#terminal-3052996798-line-9)">Perform&#160;get_import_error&#160;operation</text><text
 class="terminal-3052996798-r2" x="793" y="239.6" textLength="12.2" 
clip-path="url(#terminal-3052996798-line-9)">
+</text><text class="terminal-3052996798-r4" x="48.8" y="264" 
textLength="109.8" 
clip-path="url(#terminal-3052996798-line-10)">get-stats</text><text 
class="terminal-3052996798-r2" x="268.4" y="264" textLength="329.4" 
clip-path="url(#terminal-3052996798-line-10)">Perform&#160;get_stats&#160;operation</text><text
 class="terminal-3052996798-r2" x="793" y="264" textLength="12.2" 
clip-path="url(#terminal-3052996798-line-10)">
+</text><text class="terminal-3052996798-r4" x="48.8" y="288.4" 
textLength="97.6" 
clip-path="url(#terminal-3052996798-line-11)">get-tags</text><text 
class="terminal-3052996798-r2" x="268.4" y="288.4" textLength="317.2" 
clip-path="url(#terminal-3052996798-line-11)">Perform&#160;get_tags&#160;operation</text><text
 class="terminal-3052996798-r2" x="793" y="288.4" textLength="12.2" 
clip-path="url(#terminal-3052996798-line-11)">
+</text><text class="terminal-3052996798-r4" x="48.8" y="312.8" 
textLength="134.2" 
clip-path="url(#terminal-3052996798-line-12)">get-version</text><text 
class="terminal-3052996798-r2" x="268.4" y="312.8" textLength="353.8" 
clip-path="url(#terminal-3052996798-line-12)">Perform&#160;get_version&#160;operation</text><text
 class="terminal-3052996798-r2" x="793" y="312.8" textLength="12.2" 
clip-path="url(#terminal-3052996798-line-12)">
+</text><text class="terminal-3052996798-r4" x="48.8" y="337.2" 
textLength="48.8" 
clip-path="url(#terminal-3052996798-line-13)">list</text><text 
class="terminal-3052996798-r2" x="268.4" y="337.2" textLength="268.4" 
clip-path="url(#terminal-3052996798-line-13)">Perform&#160;list&#160;operation</text><text
 class="terminal-3052996798-r2" x="793" y="337.2" textLength="12.2" 
clip-path="url(#terminal-3052996798-line-13)">
+</text><text class="terminal-3052996798-r4" x="48.8" y="361.6" 
textLength="219.6" 
clip-path="url(#terminal-3052996798-line-14)">list-import-errors</text><text 
class="terminal-3052996798-r2" x="793" y="361.6" textLength="12.2" 
clip-path="url(#terminal-3052996798-line-14)">
+</text><text class="terminal-3052996798-r2" x="268.4" y="386" 
textLength="439.2" 
clip-path="url(#terminal-3052996798-line-15)">Perform&#160;list_import_errors&#160;operation</text><text
 class="terminal-3052996798-r2" x="793" y="386" textLength="12.2" 
clip-path="url(#terminal-3052996798-line-15)">
+</text><text class="terminal-3052996798-r4" x="48.8" y="410.4" 
textLength="146.4" 
clip-path="url(#terminal-3052996798-line-16)">list-version</text><text 
class="terminal-3052996798-r2" x="268.4" y="410.4" textLength="366" 
clip-path="url(#terminal-3052996798-line-16)">Perform&#160;list_version&#160;operation</text><text
 class="terminal-3052996798-r2" x="793" y="410.4" textLength="12.2" 
clip-path="url(#terminal-3052996798-line-16)">
+</text><text class="terminal-3052996798-r4" x="48.8" y="434.8" 
textLength="146.4" 
clip-path="url(#terminal-3052996798-line-17)">list-warning</text><text 
class="terminal-3052996798-r2" x="268.4" y="434.8" textLength="366" 
clip-path="url(#terminal-3052996798-line-17)">Perform&#160;list_warning&#160;operation</text><text
 class="terminal-3052996798-r2" x="793" y="434.8" textLength="12.2" 
clip-path="url(#terminal-3052996798-line-17)">
+</text><text class="terminal-3052996798-r4" x="48.8" y="459.2" 
textLength="73.2" 
clip-path="url(#terminal-3052996798-line-18)">update</text><text 
class="terminal-3052996798-r2" x="268.4" y="459.2" textLength="292.8" 
clip-path="url(#terminal-3052996798-line-18)">Perform&#160;update&#160;operation</text><text
 class="terminal-3052996798-r2" x="793" y="459.2" textLength="12.2" 
clip-path="url(#terminal-3052996798-line-18)">
+</text><text class="terminal-3052996798-r2" x="793" y="483.6" 
textLength="12.2" clip-path="url(#terminal-3052996798-line-19)">
+</text><text class="terminal-3052996798-r1" x="0" y="508" textLength="97.6" 
clip-path="url(#terminal-3052996798-line-20)">Options:</text><text 
class="terminal-3052996798-r2" x="793" y="508" textLength="12.2" 
clip-path="url(#terminal-3052996798-line-20)">
+</text><text class="terminal-3052996798-r4" x="24.4" y="532.4" 
textLength="24.4" clip-path="url(#terminal-3052996798-line-21)">-h</text><text 
class="terminal-3052996798-r2" x="48.8" y="532.4" textLength="24.4" 
clip-path="url(#terminal-3052996798-line-21)">,&#160;</text><text 
class="terminal-3052996798-r4" x="73.2" y="532.4" textLength="73.2" 
clip-path="url(#terminal-3052996798-line-21)">--help</text><text 
class="terminal-3052996798-r2" x="268.4" y="532.4" textLength="378.2" 
clip-path="ur [...]
+</text>
+    </g>
+    </g>
+</svg>
diff --git a/airflow-ctl/docs/images/output_main.svg 
b/airflow-ctl/docs/images/output_main.svg
index c2489613f08..f6c7225a4eb 100644
--- a/airflow-ctl/docs/images/output_main.svg
+++ b/airflow-ctl/docs/images/output_main.svg
@@ -19,99 +19,99 @@
         font-weight: 700;
     }
 
-    .terminal-1369337233-matrix {
+    .terminal-3400494481-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1369337233-title {
+    .terminal-3400494481-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1369337233-r1 { fill: #ff8700 }
-.terminal-1369337233-r2 { fill: #c5c8c6 }
-.terminal-1369337233-r3 { fill: #808080 }
-.terminal-1369337233-r4 { fill: #68a0b3 }
+    .terminal-3400494481-r1 { fill: #ff8700 }
+.terminal-3400494481-r2 { fill: #c5c8c6 }
+.terminal-3400494481-r3 { fill: #808080 }
+.terminal-3400494481-r4 { fill: #68a0b3 }
     </style>
 
     <defs>
-    <clipPath id="terminal-1369337233-clip-terminal">
+    <clipPath id="terminal-3400494481-clip-terminal">
       <rect x="0" y="0" width="792.0" height="609.0" />
     </clipPath>
-    <clipPath id="terminal-1369337233-line-0">
+    <clipPath id="terminal-3400494481-line-0">
     <rect x="0" y="1.5" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-1">
+<clipPath id="terminal-3400494481-line-1">
     <rect x="0" y="25.9" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-2">
+<clipPath id="terminal-3400494481-line-2">
     <rect x="0" y="50.3" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-3">
+<clipPath id="terminal-3400494481-line-3">
     <rect x="0" y="74.7" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-4">
+<clipPath id="terminal-3400494481-line-4">
     <rect x="0" y="99.1" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-5">
+<clipPath id="terminal-3400494481-line-5">
     <rect x="0" y="123.5" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-6">
+<clipPath id="terminal-3400494481-line-6">
     <rect x="0" y="147.9" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-7">
+<clipPath id="terminal-3400494481-line-7">
     <rect x="0" y="172.3" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-8">
+<clipPath id="terminal-3400494481-line-8">
     <rect x="0" y="196.7" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-9">
+<clipPath id="terminal-3400494481-line-9">
     <rect x="0" y="221.1" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-10">
+<clipPath id="terminal-3400494481-line-10">
     <rect x="0" y="245.5" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-11">
+<clipPath id="terminal-3400494481-line-11">
     <rect x="0" y="269.9" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-12">
+<clipPath id="terminal-3400494481-line-12">
     <rect x="0" y="294.3" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-13">
+<clipPath id="terminal-3400494481-line-13">
     <rect x="0" y="318.7" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-14">
+<clipPath id="terminal-3400494481-line-14">
     <rect x="0" y="343.1" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-15">
+<clipPath id="terminal-3400494481-line-15">
     <rect x="0" y="367.5" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-16">
+<clipPath id="terminal-3400494481-line-16">
     <rect x="0" y="391.9" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-17">
+<clipPath id="terminal-3400494481-line-17">
     <rect x="0" y="416.3" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-18">
+<clipPath id="terminal-3400494481-line-18">
     <rect x="0" y="440.7" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-19">
+<clipPath id="terminal-3400494481-line-19">
     <rect x="0" y="465.1" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-20">
+<clipPath id="terminal-3400494481-line-20">
     <rect x="0" y="489.5" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-21">
+<clipPath id="terminal-3400494481-line-21">
     <rect x="0" y="513.9" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-22">
+<clipPath id="terminal-3400494481-line-22">
     <rect x="0" y="538.3" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1369337233-line-23">
+<clipPath id="terminal-3400494481-line-23">
     <rect x="0" y="562.7" width="793" height="24.65"/>
             </clipPath>
     </defs>
@@ -123,34 +123,34 @@
             <circle cx="44" cy="0" r="7" fill="#28c840"/>
             </g>
         
-    <g transform="translate(9, 41)" 
clip-path="url(#terminal-1369337233-clip-terminal)">
+    <g transform="translate(9, 41)" 
clip-path="url(#terminal-3400494481-clip-terminal)">
     
-    <g class="terminal-1369337233-matrix">
-    <text class="terminal-1369337233-r1" x="0" y="20" textLength="73.2" 
clip-path="url(#terminal-1369337233-line-0)">Usage:</text><text 
class="terminal-1369337233-r3" x="85.4" y="20" textLength="122" 
clip-path="url(#terminal-1369337233-line-0)">airflowctl</text><text 
class="terminal-1369337233-r2" x="207.4" y="20" textLength="24.4" 
clip-path="url(#terminal-1369337233-line-0)">&#160;[</text><text 
class="terminal-1369337233-r4" x="231.8" y="20" textLength="24.4" 
clip-path="url(#terminal-13 [...]
-</text><text class="terminal-1369337233-r2" x="793" y="44.4" textLength="12.2" 
clip-path="url(#terminal-1369337233-line-1)">
-</text><text class="terminal-1369337233-r1" x="0" y="68.8" textLength="256.2" 
clip-path="url(#terminal-1369337233-line-2)">Positional&#160;Arguments:</text><text
 class="terminal-1369337233-r2" x="793" y="68.8" textLength="12.2" 
clip-path="url(#terminal-1369337233-line-2)">
-</text><text class="terminal-1369337233-r4" x="24.4" y="93.2" 
textLength="195.2" 
clip-path="url(#terminal-1369337233-line-3)">GROUP_OR_COMMAND</text><text 
class="terminal-1369337233-r2" x="793" y="93.2" textLength="12.2" 
clip-path="url(#terminal-1369337233-line-3)">
-</text><text class="terminal-1369337233-r2" x="793" y="117.6" 
textLength="12.2" clip-path="url(#terminal-1369337233-line-4)">
-</text><text class="terminal-1369337233-r4" x="0" y="142" textLength="122" 
clip-path="url(#terminal-1369337233-line-5)">&#160;&#160;&#160;&#160;Groups</text><text
 class="terminal-1369337233-r2" x="793" y="142" textLength="12.2" 
clip-path="url(#terminal-1369337233-line-5)">
-</text><text class="terminal-1369337233-r4" x="73.2" y="166.4" 
textLength="73.2" 
clip-path="url(#terminal-1369337233-line-6)">assets</text><text 
class="terminal-1369337233-r2" x="244" y="166.4" textLength="305" 
clip-path="url(#terminal-1369337233-line-6)">Perform&#160;Assets&#160;operations</text><text
 class="terminal-1369337233-r2" x="793" y="166.4" textLength="12.2" 
clip-path="url(#terminal-1369337233-line-6)">
-</text><text class="terminal-1369337233-r4" x="73.2" y="190.8" 
textLength="48.8" clip-path="url(#terminal-1369337233-line-7)">auth</text><text 
class="terminal-1369337233-r2" x="244" y="190.8" textLength="512.4" 
clip-path="url(#terminal-1369337233-line-7)">Manage&#160;authentication&#160;for&#160;CLI.&#160;Either&#160;pass</text><text
 class="terminal-1369337233-r2" x="793" y="190.8" textLength="12.2" 
clip-path="url(#terminal-1369337233-line-7)">
-</text><text class="terminal-1369337233-r2" x="244" y="215.2" 
textLength="500.2" 
clip-path="url(#terminal-1369337233-line-8)">token&#160;from&#160;environment&#160;variable/parameter</text><text
 class="terminal-1369337233-r2" x="793" y="215.2" textLength="12.2" 
clip-path="url(#terminal-1369337233-line-8)">
-</text><text class="terminal-1369337233-r2" x="244" y="239.6" textLength="366" 
clip-path="url(#terminal-1369337233-line-9)">or&#160;pass&#160;username&#160;and&#160;password.</text><text
 class="terminal-1369337233-r2" x="793" y="239.6" textLength="12.2" 
clip-path="url(#terminal-1369337233-line-9)">
-</text><text class="terminal-1369337233-r4" x="73.2" y="264" 
textLength="109.8" 
clip-path="url(#terminal-1369337233-line-10)">backfills</text><text 
class="terminal-1369337233-r2" x="244" y="264" textLength="341.6" 
clip-path="url(#terminal-1369337233-line-10)">Perform&#160;Backfills&#160;operations</text><text
 class="terminal-1369337233-r2" x="793" y="264" textLength="12.2" 
clip-path="url(#terminal-1369337233-line-10)">
-</text><text class="terminal-1369337233-r4" x="73.2" y="288.4" 
textLength="73.2" 
clip-path="url(#terminal-1369337233-line-11)">config</text><text 
class="terminal-1369337233-r2" x="244" y="288.4" textLength="305" 
clip-path="url(#terminal-1369337233-line-11)">Perform&#160;Config&#160;operations</text><text
 class="terminal-1369337233-r2" x="793" y="288.4" textLength="12.2" 
clip-path="url(#terminal-1369337233-line-11)">
-</text><text class="terminal-1369337233-r4" x="73.2" y="312.8" 
textLength="134.2" 
clip-path="url(#terminal-1369337233-line-12)">connections</text><text 
class="terminal-1369337233-r2" x="244" y="312.8" textLength="366" 
clip-path="url(#terminal-1369337233-line-12)">Perform&#160;Connections&#160;operations</text><text
 class="terminal-1369337233-r2" x="793" y="312.8" textLength="12.2" 
clip-path="url(#terminal-1369337233-line-12)">
-</text><text class="terminal-1369337233-r4" x="73.2" y="337.2" 
textLength="36.6" clip-path="url(#terminal-1369337233-line-13)">dag</text><text 
class="terminal-1369337233-r2" x="244" y="337.2" textLength="268.4" 
clip-path="url(#terminal-1369337233-line-13)">Perform&#160;Dag&#160;operations</text><text
 class="terminal-1369337233-r2" x="793" y="337.2" textLength="12.2" 
clip-path="url(#terminal-1369337233-line-13)">
-</text><text class="terminal-1369337233-r4" x="73.2" y="361.6" 
textLength="73.2" 
clip-path="url(#terminal-1369337233-line-14)">dagrun</text><text 
class="terminal-1369337233-r2" x="244" y="361.6" textLength="305" 
clip-path="url(#terminal-1369337233-line-14)">Perform&#160;DagRun&#160;operations</text><text
 class="terminal-1369337233-r2" x="793" y="361.6" textLength="12.2" 
clip-path="url(#terminal-1369337233-line-14)">
-</text><text class="terminal-1369337233-r4" x="73.2" y="386" textLength="48.8" 
clip-path="url(#terminal-1369337233-line-15)">jobs</text><text 
class="terminal-1369337233-r2" x="244" y="386" textLength="280.6" 
clip-path="url(#terminal-1369337233-line-15)">Perform&#160;Jobs&#160;operations</text><text
 class="terminal-1369337233-r2" x="793" y="386" textLength="12.2" 
clip-path="url(#terminal-1369337233-line-15)">
-</text><text class="terminal-1369337233-r4" x="73.2" y="410.4" textLength="61" 
clip-path="url(#terminal-1369337233-line-16)">pools</text><text 
class="terminal-1369337233-r2" x="244" y="410.4" textLength="292.8" 
clip-path="url(#terminal-1369337233-line-16)">Perform&#160;Pools&#160;operations</text><text
 class="terminal-1369337233-r2" x="793" y="410.4" textLength="12.2" 
clip-path="url(#terminal-1369337233-line-16)">
-</text><text class="terminal-1369337233-r4" x="73.2" y="434.8" 
textLength="109.8" 
clip-path="url(#terminal-1369337233-line-17)">providers</text><text 
class="terminal-1369337233-r2" x="244" y="434.8" textLength="341.6" 
clip-path="url(#terminal-1369337233-line-17)">Perform&#160;Providers&#160;operations</text><text
 class="terminal-1369337233-r2" x="793" y="434.8" textLength="12.2" 
clip-path="url(#terminal-1369337233-line-17)">
-</text><text class="terminal-1369337233-r4" x="73.2" y="459.2" 
textLength="109.8" 
clip-path="url(#terminal-1369337233-line-18)">variables</text><text 
class="terminal-1369337233-r2" x="244" y="459.2" textLength="341.6" 
clip-path="url(#terminal-1369337233-line-18)">Perform&#160;Variables&#160;operations</text><text
 class="terminal-1369337233-r2" x="793" y="459.2" textLength="12.2" 
clip-path="url(#terminal-1369337233-line-18)">
-</text><text class="terminal-1369337233-r2" x="793" y="483.6" 
textLength="12.2" clip-path="url(#terminal-1369337233-line-19)">
-</text><text class="terminal-1369337233-r4" x="0" y="508" textLength="158.6" 
clip-path="url(#terminal-1369337233-line-20)">&#160;&#160;&#160;&#160;Commands:</text><text
 class="terminal-1369337233-r2" x="793" y="508" textLength="12.2" 
clip-path="url(#terminal-1369337233-line-20)">
-</text><text class="terminal-1369337233-r4" x="73.2" y="532.4" 
textLength="85.4" 
clip-path="url(#terminal-1369337233-line-21)">version</text><text 
class="terminal-1369337233-r2" x="244" y="532.4" textLength="292.8" 
clip-path="url(#terminal-1369337233-line-21)">Show&#160;version&#160;information</text><text
 class="terminal-1369337233-r2" x="793" y="532.4" textLength="12.2" 
clip-path="url(#terminal-1369337233-line-21)">
-</text><text class="terminal-1369337233-r2" x="793" y="556.8" 
textLength="12.2" clip-path="url(#terminal-1369337233-line-22)">
-</text><text class="terminal-1369337233-r1" x="0" y="581.2" textLength="97.6" 
clip-path="url(#terminal-1369337233-line-23)">Options:</text><text 
class="terminal-1369337233-r2" x="793" y="581.2" textLength="12.2" 
clip-path="url(#terminal-1369337233-line-23)">
-</text><text class="terminal-1369337233-r4" x="24.4" y="605.6" 
textLength="24.4" clip-path="url(#terminal-1369337233-line-24)">-h</text><text 
class="terminal-1369337233-r2" x="48.8" y="605.6" textLength="24.4" 
clip-path="url(#terminal-1369337233-line-24)">,&#160;</text><text 
class="terminal-1369337233-r4" x="73.2" y="605.6" textLength="73.2" 
clip-path="url(#terminal-1369337233-line-24)">--help</text><text 
class="terminal-1369337233-r2" x="244" y="605.6" textLength="378.2" 
clip-path="url( [...]
+    <g class="terminal-3400494481-matrix">
+    <text class="terminal-3400494481-r1" x="0" y="20" textLength="73.2" 
clip-path="url(#terminal-3400494481-line-0)">Usage:</text><text 
class="terminal-3400494481-r3" x="85.4" y="20" textLength="122" 
clip-path="url(#terminal-3400494481-line-0)">airflowctl</text><text 
class="terminal-3400494481-r2" x="207.4" y="20" textLength="24.4" 
clip-path="url(#terminal-3400494481-line-0)">&#160;[</text><text 
class="terminal-3400494481-r4" x="231.8" y="20" textLength="24.4" 
clip-path="url(#terminal-34 [...]
+</text><text class="terminal-3400494481-r2" x="793" y="44.4" textLength="12.2" 
clip-path="url(#terminal-3400494481-line-1)">
+</text><text class="terminal-3400494481-r1" x="0" y="68.8" textLength="256.2" 
clip-path="url(#terminal-3400494481-line-2)">Positional&#160;Arguments:</text><text
 class="terminal-3400494481-r2" x="793" y="68.8" textLength="12.2" 
clip-path="url(#terminal-3400494481-line-2)">
+</text><text class="terminal-3400494481-r4" x="24.4" y="93.2" 
textLength="195.2" 
clip-path="url(#terminal-3400494481-line-3)">GROUP_OR_COMMAND</text><text 
class="terminal-3400494481-r2" x="793" y="93.2" textLength="12.2" 
clip-path="url(#terminal-3400494481-line-3)">
+</text><text class="terminal-3400494481-r2" x="793" y="117.6" 
textLength="12.2" clip-path="url(#terminal-3400494481-line-4)">
+</text><text class="terminal-3400494481-r4" x="0" y="142" textLength="122" 
clip-path="url(#terminal-3400494481-line-5)">&#160;&#160;&#160;&#160;Groups</text><text
 class="terminal-3400494481-r2" x="793" y="142" textLength="12.2" 
clip-path="url(#terminal-3400494481-line-5)">
+</text><text class="terminal-3400494481-r4" x="73.2" y="166.4" 
textLength="73.2" 
clip-path="url(#terminal-3400494481-line-6)">assets</text><text 
class="terminal-3400494481-r2" x="244" y="166.4" textLength="305" 
clip-path="url(#terminal-3400494481-line-6)">Perform&#160;Assets&#160;operations</text><text
 class="terminal-3400494481-r2" x="793" y="166.4" textLength="12.2" 
clip-path="url(#terminal-3400494481-line-6)">
+</text><text class="terminal-3400494481-r4" x="73.2" y="190.8" 
textLength="48.8" clip-path="url(#terminal-3400494481-line-7)">auth</text><text 
class="terminal-3400494481-r2" x="244" y="190.8" textLength="512.4" 
clip-path="url(#terminal-3400494481-line-7)">Manage&#160;authentication&#160;for&#160;CLI.&#160;Either&#160;pass</text><text
 class="terminal-3400494481-r2" x="793" y="190.8" textLength="12.2" 
clip-path="url(#terminal-3400494481-line-7)">
+</text><text class="terminal-3400494481-r2" x="244" y="215.2" 
textLength="500.2" 
clip-path="url(#terminal-3400494481-line-8)">token&#160;from&#160;environment&#160;variable/parameter</text><text
 class="terminal-3400494481-r2" x="793" y="215.2" textLength="12.2" 
clip-path="url(#terminal-3400494481-line-8)">
+</text><text class="terminal-3400494481-r2" x="244" y="239.6" textLength="366" 
clip-path="url(#terminal-3400494481-line-9)">or&#160;pass&#160;username&#160;and&#160;password.</text><text
 class="terminal-3400494481-r2" x="793" y="239.6" textLength="12.2" 
clip-path="url(#terminal-3400494481-line-9)">
+</text><text class="terminal-3400494481-r4" x="73.2" y="264" textLength="97.6" 
clip-path="url(#terminal-3400494481-line-10)">backfill</text><text 
class="terminal-3400494481-r2" x="244" y="264" textLength="329.4" 
clip-path="url(#terminal-3400494481-line-10)">Perform&#160;Backfill&#160;operations</text><text
 class="terminal-3400494481-r2" x="793" y="264" textLength="12.2" 
clip-path="url(#terminal-3400494481-line-10)">
+</text><text class="terminal-3400494481-r4" x="73.2" y="288.4" 
textLength="73.2" 
clip-path="url(#terminal-3400494481-line-11)">config</text><text 
class="terminal-3400494481-r2" x="244" y="288.4" textLength="305" 
clip-path="url(#terminal-3400494481-line-11)">Perform&#160;Config&#160;operations</text><text
 class="terminal-3400494481-r2" x="793" y="288.4" textLength="12.2" 
clip-path="url(#terminal-3400494481-line-11)">
+</text><text class="terminal-3400494481-r4" x="73.2" y="312.8" 
textLength="134.2" 
clip-path="url(#terminal-3400494481-line-12)">connections</text><text 
class="terminal-3400494481-r2" x="244" y="312.8" textLength="366" 
clip-path="url(#terminal-3400494481-line-12)">Perform&#160;Connections&#160;operations</text><text
 class="terminal-3400494481-r2" x="793" y="312.8" textLength="12.2" 
clip-path="url(#terminal-3400494481-line-12)">
+</text><text class="terminal-3400494481-r4" x="73.2" y="337.2" 
textLength="73.2" 
clip-path="url(#terminal-3400494481-line-13)">dagrun</text><text 
class="terminal-3400494481-r2" x="244" y="337.2" textLength="305" 
clip-path="url(#terminal-3400494481-line-13)">Perform&#160;DagRun&#160;operations</text><text
 class="terminal-3400494481-r2" x="793" y="337.2" textLength="12.2" 
clip-path="url(#terminal-3400494481-line-13)">
+</text><text class="terminal-3400494481-r4" x="73.2" y="361.6" 
textLength="48.8" 
clip-path="url(#terminal-3400494481-line-14)">dags</text><text 
class="terminal-3400494481-r2" x="244" y="361.6" textLength="280.6" 
clip-path="url(#terminal-3400494481-line-14)">Perform&#160;Dags&#160;operations</text><text
 class="terminal-3400494481-r2" x="793" y="361.6" textLength="12.2" 
clip-path="url(#terminal-3400494481-line-14)">
+</text><text class="terminal-3400494481-r4" x="73.2" y="386" textLength="48.8" 
clip-path="url(#terminal-3400494481-line-15)">jobs</text><text 
class="terminal-3400494481-r2" x="244" y="386" textLength="280.6" 
clip-path="url(#terminal-3400494481-line-15)">Perform&#160;Jobs&#160;operations</text><text
 class="terminal-3400494481-r2" x="793" y="386" textLength="12.2" 
clip-path="url(#terminal-3400494481-line-15)">
+</text><text class="terminal-3400494481-r4" x="73.2" y="410.4" textLength="61" 
clip-path="url(#terminal-3400494481-line-16)">pools</text><text 
class="terminal-3400494481-r2" x="244" y="410.4" textLength="292.8" 
clip-path="url(#terminal-3400494481-line-16)">Perform&#160;Pools&#160;operations</text><text
 class="terminal-3400494481-r2" x="793" y="410.4" textLength="12.2" 
clip-path="url(#terminal-3400494481-line-16)">
+</text><text class="terminal-3400494481-r4" x="73.2" y="434.8" 
textLength="109.8" 
clip-path="url(#terminal-3400494481-line-17)">providers</text><text 
class="terminal-3400494481-r2" x="244" y="434.8" textLength="341.6" 
clip-path="url(#terminal-3400494481-line-17)">Perform&#160;Providers&#160;operations</text><text
 class="terminal-3400494481-r2" x="793" y="434.8" textLength="12.2" 
clip-path="url(#terminal-3400494481-line-17)">
+</text><text class="terminal-3400494481-r4" x="73.2" y="459.2" 
textLength="109.8" 
clip-path="url(#terminal-3400494481-line-18)">variables</text><text 
class="terminal-3400494481-r2" x="244" y="459.2" textLength="341.6" 
clip-path="url(#terminal-3400494481-line-18)">Perform&#160;Variables&#160;operations</text><text
 class="terminal-3400494481-r2" x="793" y="459.2" textLength="12.2" 
clip-path="url(#terminal-3400494481-line-18)">
+</text><text class="terminal-3400494481-r2" x="793" y="483.6" 
textLength="12.2" clip-path="url(#terminal-3400494481-line-19)">
+</text><text class="terminal-3400494481-r4" x="0" y="508" textLength="158.6" 
clip-path="url(#terminal-3400494481-line-20)">&#160;&#160;&#160;&#160;Commands:</text><text
 class="terminal-3400494481-r2" x="793" y="508" textLength="12.2" 
clip-path="url(#terminal-3400494481-line-20)">
+</text><text class="terminal-3400494481-r4" x="73.2" y="532.4" 
textLength="85.4" 
clip-path="url(#terminal-3400494481-line-21)">version</text><text 
class="terminal-3400494481-r2" x="244" y="532.4" textLength="292.8" 
clip-path="url(#terminal-3400494481-line-21)">Show&#160;version&#160;information</text><text
 class="terminal-3400494481-r2" x="793" y="532.4" textLength="12.2" 
clip-path="url(#terminal-3400494481-line-21)">
+</text><text class="terminal-3400494481-r2" x="793" y="556.8" 
textLength="12.2" clip-path="url(#terminal-3400494481-line-22)">
+</text><text class="terminal-3400494481-r1" x="0" y="581.2" textLength="97.6" 
clip-path="url(#terminal-3400494481-line-23)">Options:</text><text 
class="terminal-3400494481-r2" x="793" y="581.2" textLength="12.2" 
clip-path="url(#terminal-3400494481-line-23)">
+</text><text class="terminal-3400494481-r4" x="24.4" y="605.6" 
textLength="24.4" clip-path="url(#terminal-3400494481-line-24)">-h</text><text 
class="terminal-3400494481-r2" x="48.8" y="605.6" textLength="24.4" 
clip-path="url(#terminal-3400494481-line-24)">,&#160;</text><text 
class="terminal-3400494481-r4" x="73.2" y="605.6" textLength="73.2" 
clip-path="url(#terminal-3400494481-line-24)">--help</text><text 
class="terminal-3400494481-r2" x="244" y="605.6" textLength="378.2" 
clip-path="url( [...]
 </text>
     </g>
     </g>
diff --git a/airflow-ctl/docs/images/output_version.svg 
b/airflow-ctl/docs/images/output_version.svg
index 8a1da141ff4..a7ce436c8b8 100644
--- a/airflow-ctl/docs/images/output_version.svg
+++ b/airflow-ctl/docs/images/output_version.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 811 196.39999999999998" 
xmlns="http://www.w3.org/2000/svg";>
+<svg class="rich-terminal" viewBox="0 0 811 269.6" 
xmlns="http://www.w3.org/2000/svg";>
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,62 +19,75 @@
         font-weight: 700;
     }
 
-    .terminal-3100774986-matrix {
+    .terminal-3399644434-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-3100774986-title {
+    .terminal-3399644434-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-3100774986-r1 { fill: #ff8700 }
-.terminal-3100774986-r2 { fill: #c5c8c6 }
-.terminal-3100774986-r3 { fill: #808080 }
-.terminal-3100774986-r4 { fill: #68a0b3 }
+    .terminal-3399644434-r1 { fill: #ff8700 }
+.terminal-3399644434-r2 { fill: #c5c8c6 }
+.terminal-3399644434-r3 { fill: #808080 }
+.terminal-3399644434-r4 { fill: #68a0b3 }
+.terminal-3399644434-r5 { fill: #00af87 }
     </style>
 
     <defs>
-    <clipPath id="terminal-3100774986-clip-terminal">
-      <rect x="0" y="0" width="792.0" height="145.39999999999998" />
+    <clipPath id="terminal-3399644434-clip-terminal">
+      <rect x="0" y="0" width="792.0" height="218.6" />
     </clipPath>
-    <clipPath id="terminal-3100774986-line-0">
+    <clipPath id="terminal-3399644434-line-0">
     <rect x="0" y="1.5" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3100774986-line-1">
+<clipPath id="terminal-3399644434-line-1">
     <rect x="0" y="25.9" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3100774986-line-2">
+<clipPath id="terminal-3399644434-line-2">
     <rect x="0" y="50.3" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3100774986-line-3">
+<clipPath id="terminal-3399644434-line-3">
     <rect x="0" y="74.7" width="793" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3100774986-line-4">
+<clipPath id="terminal-3399644434-line-4">
     <rect x="0" y="99.1" width="793" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-3399644434-line-5">
+    <rect x="0" y="123.5" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3399644434-line-6">
+    <rect x="0" y="147.9" width="793" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3399644434-line-7">
+    <rect x="0" y="172.3" width="793" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="809" height="194.4" rx="8"/>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="809" height="267.6" rx="8"/>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
             <circle cx="44" cy="0" r="7" fill="#28c840"/>
             </g>
         
-    <g transform="translate(9, 41)" 
clip-path="url(#terminal-3100774986-clip-terminal)">
+    <g transform="translate(9, 41)" 
clip-path="url(#terminal-3399644434-clip-terminal)">
     
-    <g class="terminal-3100774986-matrix">
-    <text class="terminal-3100774986-r1" x="0" y="20" textLength="73.2" 
clip-path="url(#terminal-3100774986-line-0)">Usage:</text><text 
class="terminal-3100774986-r3" x="85.4" y="20" textLength="219.6" 
clip-path="url(#terminal-3100774986-line-0)">airflowctl&#160;version</text><text
 class="terminal-3100774986-r2" x="305" y="20" textLength="24.4" 
clip-path="url(#terminal-3100774986-line-0)">&#160;[</text><text 
class="terminal-3100774986-r4" x="329.4" y="20" textLength="24.4" 
clip-path="url [...]
-</text><text class="terminal-3100774986-r2" x="793" y="44.4" textLength="12.2" 
clip-path="url(#terminal-3100774986-line-1)">
-</text><text class="terminal-3100774986-r2" x="0" y="68.8" textLength="292.8" 
clip-path="url(#terminal-3100774986-line-2)">Show&#160;version&#160;information</text><text
 class="terminal-3100774986-r2" x="793" y="68.8" textLength="12.2" 
clip-path="url(#terminal-3100774986-line-2)">
-</text><text class="terminal-3100774986-r2" x="793" y="93.2" textLength="12.2" 
clip-path="url(#terminal-3100774986-line-3)">
-</text><text class="terminal-3100774986-r1" x="0" y="117.6" textLength="97.6" 
clip-path="url(#terminal-3100774986-line-4)">Options:</text><text 
class="terminal-3100774986-r2" x="793" y="117.6" textLength="12.2" 
clip-path="url(#terminal-3100774986-line-4)">
-</text><text class="terminal-3100774986-r4" x="24.4" y="142" textLength="24.4" 
clip-path="url(#terminal-3100774986-line-5)">-h</text><text 
class="terminal-3100774986-r2" x="48.8" y="142" textLength="24.4" 
clip-path="url(#terminal-3100774986-line-5)">,&#160;</text><text 
class="terminal-3100774986-r4" x="73.2" y="142" textLength="73.2" 
clip-path="url(#terminal-3100774986-line-5)">--help</text><text 
class="terminal-3100774986-r2" x="170.8" y="142" textLength="378.2" 
clip-path="url(#terminal [...]
+    <g class="terminal-3399644434-matrix">
+    <text class="terminal-3399644434-r1" x="0" y="20" textLength="73.2" 
clip-path="url(#terminal-3399644434-line-0)">Usage:</text><text 
class="terminal-3399644434-r3" x="85.4" y="20" textLength="219.6" 
clip-path="url(#terminal-3399644434-line-0)">airflowctl&#160;version</text><text
 class="terminal-3399644434-r2" x="305" y="20" textLength="24.4" 
clip-path="url(#terminal-3399644434-line-0)">&#160;[</text><text 
class="terminal-3399644434-r4" x="329.4" y="20" textLength="24.4" 
clip-path="url [...]
+</text><text class="terminal-3399644434-r2" x="793" y="44.4" textLength="12.2" 
clip-path="url(#terminal-3399644434-line-1)">
+</text><text class="terminal-3399644434-r2" x="0" y="68.8" textLength="292.8" 
clip-path="url(#terminal-3399644434-line-2)">Show&#160;version&#160;information</text><text
 class="terminal-3399644434-r2" x="793" y="68.8" textLength="12.2" 
clip-path="url(#terminal-3399644434-line-2)">
+</text><text class="terminal-3399644434-r2" x="793" y="93.2" textLength="12.2" 
clip-path="url(#terminal-3399644434-line-3)">
+</text><text class="terminal-3399644434-r1" x="0" y="117.6" textLength="97.6" 
clip-path="url(#terminal-3399644434-line-4)">Options:</text><text 
class="terminal-3399644434-r2" x="793" y="117.6" textLength="12.2" 
clip-path="url(#terminal-3399644434-line-4)">
+</text><text class="terminal-3399644434-r4" x="24.4" y="142" textLength="24.4" 
clip-path="url(#terminal-3399644434-line-5)">-h</text><text 
class="terminal-3399644434-r2" x="48.8" y="142" textLength="24.4" 
clip-path="url(#terminal-3399644434-line-5)">,&#160;</text><text 
class="terminal-3399644434-r4" x="73.2" y="142" textLength="73.2" 
clip-path="url(#terminal-3399644434-line-5)">--help</text><text 
class="terminal-3399644434-r2" x="256.2" y="142" textLength="378.2" 
clip-path="url(#terminal [...]
+</text><text class="terminal-3399644434-r4" x="24.4" y="166.4" 
textLength="24.4" clip-path="url(#terminal-3399644434-line-6)">-e</text><text 
class="terminal-3399644434-r2" x="48.8" y="166.4" textLength="24.4" 
clip-path="url(#terminal-3399644434-line-6)">,&#160;</text><text 
class="terminal-3399644434-r4" x="73.2" y="166.4" textLength="61" 
clip-path="url(#terminal-3399644434-line-6)">--env</text><text 
class="terminal-3399644434-r5" x="146.4" y="166.4" textLength="36.6" 
clip-path="url(#term [...]
+</text><text class="terminal-3399644434-r4" x="24.4" y="190.8" 
textLength="97.6" 
clip-path="url(#terminal-3399644434-line-7)">--remote</text><text 
class="terminal-3399644434-r2" x="256.2" y="190.8" textLength="536.8" 
clip-path="url(#terminal-3399644434-line-7)">Fetch&#160;the&#160;Airflow&#160;version&#160;in&#160;remote&#160;server,&#160;</text><text
 class="terminal-3399644434-r2" x="793" y="190.8" textLength="12.2" 
clip-path="url(#terminal-3399644434-line-7)">
+</text><text class="terminal-3399644434-r2" x="0" y="215.2" textLength="597.8" 
clip-path="url(#terminal-3399644434-line-8)">otherwise&#160;only&#160;shows&#160;the&#160;local&#160;airflowctl&#160;version</text><text
 class="terminal-3399644434-r2" x="793" y="215.2" textLength="12.2" 
clip-path="url(#terminal-3399644434-line-8)">
 </text>
     </g>
     </g>
diff --git a/airflow-ctl/src/airflowctl/api/client.py 
b/airflow-ctl/src/airflowctl/api/client.py
index 09947833baf..355304ae37a 100644
--- a/airflow-ctl/src/airflowctl/api/client.py
+++ b/airflow-ctl/src/airflowctl/api/client.py
@@ -36,11 +36,11 @@ from uuid6 import uuid7
 from airflowctl import __version__ as version
 from airflowctl.api.operations import (
     AssetsOperations,
-    BackfillsOperations,
+    BackfillOperations,
     ConfigOperations,
     ConnectionsOperations,
-    DagOperations,
     DagRunOperations,
+    DagsOperations,
     JobsOperations,
     LoginOperations,
     PoolsOperations,
@@ -244,7 +244,7 @@ class Client(httpx.Client):
     @property
     def backfills(self):
         """Operations related to backfills."""
-        return BackfillsOperations(self)
+        return BackfillOperations(self)
 
     @lru_cache()  # type: ignore[prop-decorator]
     @property
@@ -262,7 +262,7 @@ class Client(httpx.Client):
     @property
     def dags(self):
         """Operations related to DAGs."""
-        return DagOperations(self)
+        return DagsOperations(self)
 
     @lru_cache()  # type: ignore[prop-decorator]
     @property
@@ -316,7 +316,7 @@ def get_client(kind: Literal[ClientKind.CLI, 
ClientKind.AUTH] = ClientKind.CLI):
         api_client = Client(
             base_url=credentials.api_url or "http://localhost:8080";,
             limits=httpx.Limits(max_keepalive_connections=1, 
max_connections=1),
-            token=credentials.api_token or "",
+            token=credentials.api_token or str(os.getenv("AIRFLOW_CLI_TOKEN", 
"")),
             kind=kind,
         )
         yield api_client
diff --git a/airflow-ctl/src/airflowctl/api/operations.py 
b/airflow-ctl/src/airflowctl/api/operations.py
index fe56661d2d0..a2cb27eafc4 100644
--- a/airflow-ctl/src/airflowctl/api/operations.py
+++ b/airflow-ctl/src/airflowctl/api/operations.py
@@ -190,7 +190,7 @@ class LoginOperations:
         """Login to the API server."""
         try:
             return LoginResponse.model_validate_json(
-                self.client.post("/token/cli", json=login.model_dump()).content
+                self.client.post("/token/cli", 
json=login.model_dump(mode="json")).content
             )
         except ServerResponseError as e:
             raise e
@@ -229,7 +229,10 @@ class AssetsOperations(BaseOperations):
     ) -> AssetEventResponse | ServerResponseError:
         """Create an asset event."""
         try:
-            self.response = self.client.post("assets/events", 
json=asset_event_body.model_dump())
+            # Ensure extra is initialised before sent to API
+            if asset_event_body.extra is None:
+                asset_event_body.extra = {}
+            self.response = self.client.post("assets/events", 
json=asset_event_body.model_dump(mode="json"))
             return 
AssetEventResponse.model_validate_json(self.response.content)
         except ServerResponseError as e:
             raise e
@@ -293,13 +296,13 @@ class AssetsOperations(BaseOperations):
             raise e
 
 
-class BackfillsOperations(BaseOperations):
+class BackfillOperations(BaseOperations):
     """Backfill operations."""
 
     def create(self, backfill: BackfillPostBody) -> BackfillResponse | 
ServerResponseError:
         """Create a backfill."""
         try:
-            self.response = self.client.post("backfills", 
data=backfill.model_dump())
+            self.response = self.client.post("backfills", 
data=backfill.model_dump(mode="json"))
             return BackfillResponse.model_validate_json(self.response.content)
         except ServerResponseError as e:
             raise e
@@ -307,7 +310,7 @@ class BackfillsOperations(BaseOperations):
     def create_dry_run(self, backfill: BackfillPostBody) -> BackfillResponse | 
ServerResponseError:
         """Create a dry run backfill."""
         try:
-            self.response = self.client.post("backfills/dry_run", 
data=backfill.model_dump())
+            self.response = self.client.post("backfills/dry_run", 
data=backfill.model_dump(mode="json"))
             return BackfillResponse.model_validate_json(self.response.content)
         except ServerResponseError as e:
             raise e
@@ -391,7 +394,7 @@ class ConnectionsOperations(BaseOperations):
     ) -> ConnectionResponse | ServerResponseError:
         """Create a connection."""
         try:
-            self.response = self.client.post("connections", 
json=connection.model_dump())
+            self.response = self.client.post("connections", 
json=connection.model_dump(mode="json"))
             return 
ConnectionResponse.model_validate_json(self.response.content)
         except ServerResponseError as e:
             raise e
@@ -399,7 +402,7 @@ class ConnectionsOperations(BaseOperations):
     def bulk(self, connections: BulkBodyConnectionBody) -> BulkResponse | 
ServerResponseError:
         """CRUD multiple connections."""
         try:
-            self.response = self.client.patch("connections", 
json=connections.model_dump())
+            self.response = self.client.patch("connections", 
json=connections.model_dump(mode="json"))
             return BulkResponse.model_validate_json(self.response.content)
         except ServerResponseError as e:
             raise e
@@ -427,7 +430,7 @@ class ConnectionsOperations(BaseOperations):
         """Update a connection."""
         try:
             self.response = self.client.patch(
-                f"connections/{connection.connection_id}", 
json=connection.model_dump()
+                f"connections/{connection.connection_id}", 
json=connection.model_dump(mode="json")
             )
             return 
ConnectionResponse.model_validate_json(self.response.content)
         except ServerResponseError as e:
@@ -439,14 +442,14 @@ class ConnectionsOperations(BaseOperations):
     ) -> ConnectionTestResponse | ServerResponseError:
         """Test a connection."""
         try:
-            self.response = self.client.post("connections/test", 
json=connection.model_dump())
+            self.response = self.client.post("connections/test", 
json=connection.model_dump(mode="json"))
             return 
ConnectionTestResponse.model_validate_json(self.response.content)
         except ServerResponseError as e:
             raise e
 
 
-class DagOperations(BaseOperations):
-    """Dag operations."""
+class DagsOperations(BaseOperations):
+    """Dags operations."""
 
     def get(self, dag_id: str) -> DAGResponse | ServerResponseError:
         """Get a DAG."""
@@ -472,9 +475,9 @@ class DagOperations(BaseOperations):
         """List DAGs."""
         return super().execute_list(path="dags", 
data_model=DAGCollectionResponse)
 
-    def patch(self, dag_id: str, dag_body: DAGPatchBody) -> DAGResponse | 
ServerResponseError:
+    def update(self, dag_id: str, dag_body: DAGPatchBody) -> DAGResponse | 
ServerResponseError:
         try:
-            self.response = self.client.patch(f"dags/{dag_id}", 
json=dag_body.model_dump())
+            self.response = self.client.patch(f"dags/{dag_id}", 
json=dag_body.model_dump(mode="json"))
             return DAGResponse.model_validate_json(self.response.content)
         except ServerResponseError as e:
             raise e
@@ -557,7 +560,9 @@ class DagRunOperations(BaseOperations):
         if trigger_dag_run.conf is None:
             trigger_dag_run.conf = {}
         try:
-            self.response = self.client.post(f"dags/{dag_id}/dagRuns", 
json=trigger_dag_run.model_dump())
+            self.response = self.client.post(
+                f"dags/{dag_id}/dagRuns", 
json=trigger_dag_run.model_dump(mode="json")
+            )
             return DAGRunResponse.model_validate_json(self.response.content)
         except ServerResponseError as e:
             raise e
@@ -592,7 +597,7 @@ class PoolsOperations(BaseOperations):
     def create(self, pool: PoolBody) -> PoolResponse | ServerResponseError:
         """Create a pool."""
         try:
-            self.response = self.client.post("pools", json=pool.model_dump())
+            self.response = self.client.post("pools", 
json=pool.model_dump(mode="json"))
             return PoolResponse.model_validate_json(self.response.content)
         except ServerResponseError as e:
             raise e
@@ -600,7 +605,7 @@ class PoolsOperations(BaseOperations):
     def bulk(self, pools: BulkBodyPoolBody) -> BulkResponse | 
ServerResponseError:
         """CRUD multiple pools."""
         try:
-            self.response = self.client.patch("pools", json=pools.model_dump())
+            self.response = self.client.patch("pools", 
json=pools.model_dump(mode="json"))
             return BulkResponse.model_validate_json(self.response.content)
         except ServerResponseError as e:
             raise e
@@ -616,7 +621,9 @@ class PoolsOperations(BaseOperations):
     def update(self, pool_body: PoolPatchBody) -> PoolResponse | 
ServerResponseError:
         """Update a pool."""
         try:
-            self.response = self.client.patch(f"pools/{pool_body.pool}", 
json=pool_body.model_dump())
+            self.response = self.client.patch(
+                f"pools/{pool_body.pool}", 
json=pool_body.model_dump(mode="json")
+            )
             return PoolResponse.model_validate_json(self.response.content)
         except ServerResponseError as e:
             raise e
@@ -648,7 +655,7 @@ class VariablesOperations(BaseOperations):
     def create(self, variable: VariableBody) -> VariableResponse | 
ServerResponseError:
         """Create a variable."""
         try:
-            self.response = self.client.post("variables", 
json=variable.model_dump())
+            self.response = self.client.post("variables", 
json=variable.model_dump(mode="json"))
             return VariableResponse.model_validate_json(self.response.content)
         except ServerResponseError as e:
             raise e
@@ -656,7 +663,7 @@ class VariablesOperations(BaseOperations):
     def bulk(self, variables: BulkBodyVariableBody) -> BulkResponse | 
ServerResponseError:
         """CRUD multiple variables."""
         try:
-            self.response = self.client.patch("variables", 
json=variables.model_dump())
+            self.response = self.client.patch("variables", 
json=variables.model_dump(mode="json"))
             return BulkResponse.model_validate_json(self.response.content)
         except ServerResponseError as e:
             raise e
@@ -672,7 +679,9 @@ class VariablesOperations(BaseOperations):
     def update(self, variable: VariableBody) -> VariableResponse | 
ServerResponseError:
         """Update a variable."""
         try:
-            self.response = self.client.patch(f"variables/{variable.key}", 
json=variable.model_dump())
+            self.response = self.client.patch(
+                f"variables/{variable.key}", 
json=variable.model_dump(mode="json")
+            )
             return VariableResponse.model_validate_json(self.response.content)
         except ServerResponseError as e:
             raise e
diff --git a/airflow-ctl/src/airflowctl/ctl/cli_config.py 
b/airflow-ctl/src/airflowctl/ctl/cli_config.py
index fb6a7dfde0d..b4b283c658a 100644
--- a/airflow-ctl/src/airflowctl/ctl/cli_config.py
+++ b/airflow-ctl/src/airflowctl/ctl/cli_config.py
@@ -83,7 +83,7 @@ def safe_call_command(function: Callable, args: 
Iterable[Arg]) -> None:
     except AirflowCtlNotFoundException as e:
         rich.print(f"command failed due to {e}")
         sys.exit(1)
-    except httpx.RemoteProtocolError as e:
+    except (httpx.RemoteProtocolError, httpx.ReadError) as e:
         rich.print(f"[red]Remote protocol error: {e}[/red]")
         if "Server disconnected without sending a response." in str(e):
             rich.print(
@@ -93,7 +93,7 @@ def safe_call_command(function: Callable, args: 
Iterable[Arg]) -> None:
     except httpx.ReadTimeout as e:
         rich.print(f"[red]Read timeout error: {e}[/red]")
         if "timed out" in str(e):
-            rich.print("Please check if the server is running and the API 
ready to accept calls.[/red]")
+            rich.print("[red]Please check if the server is running and the API 
ready to accept calls.[/red]")
     except ServerResponseError as e:
         rich.print(f"Server response error: {e}")
         if "Client error message:" in str(e):
@@ -296,6 +296,14 @@ ARG_CONFIG_VERBOSE = Arg(
     action="store_true",
 )
 
+# Version Command Args
+ARG_REMOTE = Arg(
+    flags=("--remote",),
+    help="Fetch the Airflow version in remote server, otherwise only shows the 
local airflowctl version",
+    default=False,
+    action="store_true",
+)
+
 
 class ActionCommand(NamedTuple):
     """Single CLI command."""
@@ -452,7 +460,7 @@ class CommandFactory:
         return type_name in primitive_types
 
     @staticmethod
-    def _python_type_from_string(type_name: str) -> type:
+    def _python_type_from_string(type_name: str | type) -> type | Callable:
         """
         Return the corresponding Python *type* for a primitive type name 
string.
 
@@ -462,7 +470,9 @@ class CommandFactory:
         leading to type errors or unexpected behaviour when invoking the REST
         API.
         """
-        mapping: dict[str, type] = {
+        if "|" in str(type_name):
+            type_name = [t.strip() for t in str(type_name).split("|") if 
t.strip() != "None"].pop()
+        mapping: dict[str, type | Callable] = {
             "int": int,
             "float": float,
             "bool": bool,
@@ -473,15 +483,18 @@ class CommandFactory:
             "tuple": tuple,
             "set": set,
             "datetime.datetime": datetime.datetime,
+            "dict[str, typing.Any]": dict,
         }
         # Default to ``str`` to preserve previous behaviour for any 
unrecognised
         # type names while still allowing the CLI to function.
-        return mapping.get(type_name, str)
+        if isinstance(type_name, type):
+            type_name = type_name.__name__
+        return mapping.get(str(type_name), str)
 
     @staticmethod
     def _create_arg(
         arg_flags: tuple,
-        arg_type: type,
+        arg_type: type | Callable,
         arg_help: str,
         arg_action: argparse.BooleanOptionalAction | None,
         arg_dest: str | None = None,
@@ -514,7 +527,7 @@ class CommandFactory:
                 commands.append(
                     self._create_arg(
                         arg_flags=("--" + 
self._sanitize_arg_parameter_key(field),),
-                        arg_type=field_type.annotation,
+                        
arg_type=self._python_type_from_string(field_type.annotation),
                         arg_action=argparse.BooleanOptionalAction if 
field_type.annotation is bool else None,  # type: ignore
                         arg_help=f"{field} for {parameter_key} operation",
                         arg_default=False if field_type.annotation is bool 
else None,
@@ -529,7 +542,7 @@ class CommandFactory:
                 commands.append(
                     self._create_arg(
                         arg_flags=("--" + 
self._sanitize_arg_parameter_key(field),),
-                        arg_type=annotation,
+                        arg_type=self._python_type_from_string(annotation),
                         arg_action=argparse.BooleanOptionalAction if 
annotation is bool else None,  # type: ignore
                         arg_help=f"{field} for {parameter_key} operation",
                         arg_default=False if annotation is bool else None,
@@ -544,12 +557,11 @@ class CommandFactory:
             for parameter in operation.get("parameters"):
                 for parameter_key, parameter_type in parameter.items():
                     if self._is_primitive_type(type_name=parameter_type):
-                        python_type = 
self._python_type_from_string(parameter_type)
                         is_bool = parameter_type == "bool"
                         args.append(
                             self._create_arg(
                                 arg_flags=("--" + 
self._sanitize_arg_parameter_key(parameter_key),),
-                                arg_type=None if is_bool else python_type,
+                                
arg_type=self._python_type_from_string(parameter_type),
                                 arg_action=argparse.BooleanOptionalAction if 
is_bool else None,
                                 arg_help=f"{parameter_key} for 
{operation.get('name')} operation in {operation.get('parent').name}",
                                 arg_default=False if is_bool else None,
@@ -563,7 +575,7 @@ class CommandFactory:
                         )
 
             if any(operation.get("name").startswith(cmd) for cmd in 
self.output_command_list):
-                args.extend([ARG_OUTPUT])
+                args.extend([ARG_OUTPUT, ARG_AUTH_ENVIRONMENT])
 
             self.args_map[(operation.get("name"), 
operation.get("parent").name)] = args
 
@@ -852,7 +864,10 @@ core_commands: list[CLICommand] = [
         help="Show version information",
         description="Show version information",
         
func=lazy_load_command("airflowctl.ctl.commands.version_command.version_info"),
-        args=(),
+        args=(
+            ARG_AUTH_ENVIRONMENT,
+            ARG_REMOTE,
+        ),
     ),
     GroupCommand(
         name="variables",
diff --git a/airflow-ctl/src/airflowctl/ctl/commands/version_command.py 
b/airflow-ctl/src/airflowctl/ctl/commands/version_command.py
index 8eae1fcea39..bfaa49a6682 100644
--- a/airflow-ctl/src/airflowctl/ctl/commands/version_command.py
+++ b/airflow-ctl/src/airflowctl/ctl/commands/version_command.py
@@ -16,8 +16,6 @@
 # under the License.
 from __future__ import annotations
 
-import sys
-
 import rich
 
 from airflowctl import __version__ as airflowctl_version
@@ -28,11 +26,9 @@ from airflowctl.api.client import NEW_API_CLIENT, 
ClientKind, provide_api_client
 def version_info(arg, api_client=NEW_API_CLIENT):
     """Get version information."""
     version_dict = {"airflowctl_version": airflowctl_version}
-    try:
+    if arg.remote:
         version_response = api_client.version.get()
         version_dict.update(version_response.model_dump())
         rich.print(version_dict)
-    except Exception as e:
-        rich.print(f"[red]Error fetching version information: {e}[/red]")
+    else:
         rich.print(version_dict)
-        sys.exit(1)
diff --git a/airflow-ctl/tests/airflow_ctl/api/test_operations.py 
b/airflow-ctl/tests/airflow_ctl/api/test_operations.py
index 4aa5da45b1b..785fed87dcc 100644
--- a/airflow-ctl/tests/airflow_ctl/api/test_operations.py
+++ b/airflow-ctl/tests/airflow_ctl/api/test_operations.py
@@ -811,13 +811,13 @@ class TestDagOperations:
         response = client.dags.list()
         assert response == self.dag_collection_response
 
-    def test_patch(self):
+    def test_update(self):
         def handle_request(request: httpx.Request) -> httpx.Response:
             assert request.url.path == "/api/v2/dags/dag_id"
             return httpx.Response(200, 
json=json.loads(self.dag_response.model_dump_json()))
 
         client = make_api_client(transport=httpx.MockTransport(handle_request))
-        response = client.dags.patch(dag_id="dag_id", 
dag_body=self.dag_patch_body)
+        response = client.dags.update(dag_id="dag_id", 
dag_body=self.dag_patch_body)
         assert response == self.dag_response
 
     def test_delete(self):
diff --git a/airflow-ctl/tests/airflow_ctl/ctl/commands/test_version_command.py 
b/airflow-ctl/tests/airflow_ctl/ctl/commands/test_version_command.py
index b5deacabb1b..fee0487d3f7 100644
--- a/airflow-ctl/tests/airflow_ctl/ctl/commands/test_version_command.py
+++ b/airflow-ctl/tests/airflow_ctl/ctl/commands/test_version_command.py
@@ -48,19 +48,16 @@ class TestVersionCommand:
 
     parser = cli_parser.get_parser()
 
-    def test_ctl_version(self, mock_client):
+    def test_ctl_version_remote(self, mock_client):
         with redirect_stdout(StringIO()) as stdout:
-            version_info(self.parser.parse_args(["version"]), 
api_client=mock_client)
+            version_info(self.parser.parse_args(["version", "--remote"]), 
api_client=mock_client)
             assert "version" in stdout.getvalue()
             assert "git_version" in stdout.getvalue()
             assert "airflowctl_version" in stdout.getvalue()
 
-    def test_ctl_version_exception(self, mock_client):
+    def test_ctl_version_only_local_version(self, mock_client):
         """Test the version command with an exception."""
-        mock_client.version.get.side_effect = Exception("Test exception")
         with redirect_stdout(StringIO()) as stdout:
-            with pytest.raises(SystemExit):
-                version_info(self.parser.parse_args(["version"]), 
api_client=mock_client)
+            version_info(self.parser.parse_args(["version"]), 
api_client=mock_client)
             output = stdout.getvalue()
-        assert "Error fetching version information: Test exception" in output
         assert "airflowctl_version" in output
diff --git a/airflow-ctl/tests/airflow_ctl/ctl/test_cli_config.py 
b/airflow-ctl/tests/airflow_ctl/ctl/test_cli_config.py
index 1e4f5728a25..c0ac022a256 100644
--- a/airflow-ctl/tests/airflow_ctl/ctl/test_cli_config.py
+++ b/airflow-ctl/tests/airflow_ctl/ctl/test_cli_config.py
@@ -17,14 +17,11 @@
 
 from __future__ import annotations
 
-import datetime
 from argparse import BooleanOptionalAction
 from textwrap import dedent
-from typing import Any
 
 import pytest
 
-from airflowctl.api.datamodels.generated import ReprocessBehavior
 from airflowctl.ctl.cli_config import ActionCommand, CommandFactory, 
GroupCommand, merge_commands
 
 
@@ -59,7 +56,7 @@ def test_args_create():
                 "help": "from_date for backfill operation",
                 "action": None,
                 "default": None,
-                "type": datetime.datetime,
+                "type": str,
                 "dest": None,
             },
         ),
@@ -69,7 +66,7 @@ def test_args_create():
                 "help": "to_date for backfill operation",
                 "action": None,
                 "default": None,
-                "type": datetime.datetime,
+                "type": str,
                 "dest": None,
             },
         ),
@@ -89,7 +86,7 @@ def test_args_create():
                 "help": "dag_run_conf for backfill operation",
                 "action": None,
                 "default": None,
-                "type": dict[str, Any],
+                "type": dict,
                 "dest": None,
             },
         ),
@@ -99,7 +96,7 @@ def test_args_create():
                 "help": "reprocess_behavior for backfill operation",
                 "action": None,
                 "default": None,
-                "type": ReprocessBehavior,
+                "type": str,
                 "dest": None,
             },
         ),
@@ -228,7 +225,7 @@ class TestCommandFactory:
                 class BackfillsOperations(BaseOperations):
                     def create(self, backfill: BackfillPostBody) -> 
BackfillResponse | ServerResponseError:
                         try:
-                            self.response = self.client.post("backfills", 
data=backfill.model_dump())
+                            self.response = self.client.post("backfills", 
json=backfill.model_dump(mode="json"))
                             return 
BackfillResponse.model_validate_json(self.response.content)
                         except ServerResponseError as e:
                             raise e
diff --git a/scripts/in_container/run_capture_airflowctl_help.py 
b/scripts/in_container/run_capture_airflowctl_help.py
index 874b0bc6a82..665325e3e41 100644
--- a/scripts/in_container/run_capture_airflowctl_help.py
+++ b/scripts/in_container/run_capture_airflowctl_help.py
@@ -38,10 +38,10 @@ COMMANDS = [
     "",  # for `airflowctl -h`, main help
     "assets",
     "auth",
-    "backfills",
+    "backfill",
     "config",
     "connections",
-    "dag",
+    "dags",
     "dagrun",
     "jobs",
     "pools",

Reply via email to