You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by GitBox <gi...@apache.org> on 2022/12/12 21:42:37 UTC

[GitHub] [airflow] BasPH commented on a diff in pull request #28300: Add Public API description to Airflow documentation

BasPH commented on code in PR #28300:
URL: https://github.com/apache/airflow/pull/28300#discussion_r1046105195


##########
docs/apache-airflow/public-airflow-api.rst:
##########
@@ -0,0 +1,141 @@
+ .. 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.
+
+"Public API" of Airflow
+=======================
+
+The Public API of Apache Airflow is a set of programmatic interfaces that allow developers to interact
+with and access certain features of the Apache Airflow system. This can include operations such as
+creating and managing DAGs (directed acyclic graphs), managing tasks and their dependencies,
+and extending Airflow capabilities by writing new Executors, Plugins, Operators and Providers. The
+public API of Apache Airflow can be useful for building custom tools and integrations with other systems,
+as well as for automating certain aspects of the Airflow workflow.
+
+In general, the public API is an important part of the Airflow ecosystem and can be a powerful tool for users
+and developers who want to extend the functionality of the system.
+
+What kind of APIs are Public in Apache Airflow?
+===============================================
+
+Apache Airflow has a number of different public APIs that allow developers to interact with various
+aspects of the system. Some examples of the types of public APIs exposed as Python objects
+that are available in Apache Airflow include:
+
+* :doc:`DAG <concepts/dags>`_ (Directed Acyclic Graph) APIs, which allow developers to create, manage,
+  and access DAGs in Airflow.
+* :doc:`Task <concepts/tasks>`_ APIs, which provide access to information about individual tasks within
+  a DAG, such as their dependencies and execution status.
+* :doc:`Operator <concepts/operators>`_ APIs, which allows the developers to write their custom Operators.
+* :doc:`Decorators <howto/create-custom-decorator>`_ APIs, which allows the developers to write their
+  custom decorators to make it easier to write :doc:`TaskFlow <tutorial/taskflow>`_ DAGs.
+* :doc:`Secret Managers <security/secrets>`_ APIs, which allows the developers to write their custom
+  Secret Managers to safely access credentials and other secret configuration of their workflows.
+* :doc:`Connection management <concepts/connections>`_ APIs, which allow developers to manage
+  connections to external systems
+* :doc:`XCom <concepts/xcoms>`_, which allow developers to manage cross-task communication within Airflow.
+* :doc:`Variables <concepts/variables>`_, which allow developers to manage variables within Airflow.
+* :doc:`Executors <executor/index>`_, which allow developers to manage the execution of tasks within Airflow.
+* :doc:`Plugins <plugins>`_, which allow developers to extend internal Airflow capabilities - add new UI
+  pages, custom :doc:`TimeTables <concepts/timetable>`_, :doc:`Extra Links <howto/define_extra_link>`_,
+  :doc:`Listeners <listeners>`_ - all of which are considered public APIs.
+
+Also Airflow has a stable REST API that allows users to interact with Airflow via HTTP requests and a
+CLI that allows users to interact with Airflow via command line commands.
+
+Overall, the public APIs in Apache Airflow are designed to provide developers with a wide
+range of tools and capabilities for interacting with the system and extending its functionality.
+
+What is not part of the Public API of Apache Airflow?
+=====================================================
+
+A public API of Apache Airflow is a set of programming interfaces that are designed to be used
+by developers to access certain features and functionality of the system. As such, not everything in
+Apache Airflow is considered to be part of the public API.
+
+For example, the internal implementation details of Apache Airflow, such as the specific algorithms
+and data structures used to manage DAGs and tasks, are not considered to be part of the public API.
+These implementation details are not intended to be used by external developers, a
+nd are subject to change without notice.
+
+Additionally, certain features and functionality of Apache Airflow may not be exposed through the public API,
+either because they are not considered to be stable or because they are not intended for external use.
+In these cases, developers may not be able to access these features through the public API,
+and should instead use other available methods for interacting with the system.
+
+Similarly, :doc:`Database structure <database-erd-ref>`_ is considered to be an internal implementation
+detail of Apache Airflow and you should not assume the structure is going to be maintained in
+backwards-compatible way.

Review Comment:
   This whole section is vague to me, I'd just remove it. I think it's self-evident that when something is not mentioned as part of the public API, it isn't public.



##########
docs/apache-airflow/public-airflow-api.rst:
##########
@@ -0,0 +1,141 @@
+ .. 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.
+
+"Public API" of Airflow
+=======================
+
+The Public API of Apache Airflow is a set of programmatic interfaces that allow developers to interact
+with and access certain features of the Apache Airflow system. This can include operations such as
+creating and managing DAGs (directed acyclic graphs), managing tasks and their dependencies,
+and extending Airflow capabilities by writing new Executors, Plugins, Operators and Providers. The
+public API of Apache Airflow can be useful for building custom tools and integrations with other systems,
+as well as for automating certain aspects of the Airflow workflow.
+
+In general, the public API is an important part of the Airflow ecosystem and can be a powerful tool for users
+and developers who want to extend the functionality of the system.
+
+What kind of APIs are Public in Apache Airflow?
+===============================================
+
+Apache Airflow has a number of different public APIs that allow developers to interact with various
+aspects of the system. Some examples of the types of public APIs exposed as Python objects
+that are available in Apache Airflow include:
+
+* :doc:`DAG <concepts/dags>`_ (Directed Acyclic Graph) APIs, which allow developers to create, manage,
+  and access DAGs in Airflow.
+* :doc:`Task <concepts/tasks>`_ APIs, which provide access to information about individual tasks within
+  a DAG, such as their dependencies and execution status.
+* :doc:`Operator <concepts/operators>`_ APIs, which allows the developers to write their custom Operators.
+* :doc:`Decorators <howto/create-custom-decorator>`_ APIs, which allows the developers to write their
+  custom decorators to make it easier to write :doc:`TaskFlow <tutorial/taskflow>`_ DAGs.
+* :doc:`Secret Managers <security/secrets>`_ APIs, which allows the developers to write their custom
+  Secret Managers to safely access credentials and other secret configuration of their workflows.
+* :doc:`Connection management <concepts/connections>`_ APIs, which allow developers to manage
+  connections to external systems
+* :doc:`XCom <concepts/xcoms>`_, which allow developers to manage cross-task communication within Airflow.
+* :doc:`Variables <concepts/variables>`_, which allow developers to manage variables within Airflow.
+* :doc:`Executors <executor/index>`_, which allow developers to manage the execution of tasks within Airflow.
+* :doc:`Plugins <plugins>`_, which allow developers to extend internal Airflow capabilities - add new UI
+  pages, custom :doc:`TimeTables <concepts/timetable>`_, :doc:`Extra Links <howto/define_extra_link>`_,
+  :doc:`Listeners <listeners>`_ - all of which are considered public APIs.
+
+Also Airflow has a stable REST API that allows users to interact with Airflow via HTTP requests and a
+CLI that allows users to interact with Airflow via command line commands.
+
+Overall, the public APIs in Apache Airflow are designed to provide developers with a wide
+range of tools and capabilities for interacting with the system and extending its functionality.
+
+What is not part of the Public API of Apache Airflow?
+=====================================================
+
+A public API of Apache Airflow is a set of programming interfaces that are designed to be used
+by developers to access certain features and functionality of the system. As such, not everything in
+Apache Airflow is considered to be part of the public API.
+
+For example, the internal implementation details of Apache Airflow, such as the specific algorithms
+and data structures used to manage DAGs and tasks, are not considered to be part of the public API.
+These implementation details are not intended to be used by external developers, a
+nd are subject to change without notice.
+
+Additionally, certain features and functionality of Apache Airflow may not be exposed through the public API,
+either because they are not considered to be stable or because they are not intended for external use.
+In these cases, developers may not be able to access these features through the public API,
+and should instead use other available methods for interacting with the system.
+
+Similarly, :doc:`Database structure <database-erd-ref>`_ is considered to be an internal implementation
+detail of Apache Airflow and you should not assume the structure is going to be maintained in
+backwards-compatible way.
+
+Is Airflow DB part of the Public API of Airflow?
+================================================
+
+The :doc:`Airflow DB <database-erd-ref>`_ is not considered to be part of the public API of Apache Airflow.
+The Airflow DB is the internal database used by Airflow to store information about DAGs, tasks, and
+other aspects of the system's state. This database is not intended to be accessed directly by
+external developers, and the specific details of its schema and structure are not considered
+to be part of the public API.
+
+Instead, developers who want to interact with the Airflow DB should use the :doc:`stable-rest-api-ref` and
+the :doc:`stable-cli-ref`, both providing a number of different interfaces and methods for accessing and
+manipulating data in the database. These APIs are designed to be more stable and user-friendly than
+accessing the Airflow DB directly, and provide a more consistent and predictable way of interacting
+with the system.
+
+Is Stable REST API part of the Public API of Airflow?
+=====================================================
+
+The :doc:`Stable REST API <stable-cli-ref>`_ is considered to be part of the public API of Apache Airflow.
+The REST API is a set of programming interfaces that allow developers to access certain features of
+Airflow over the HTTP protocol, using a standard set of RESTful (representational state transfer) conventions.
+
+The stable REST API is considered to be part of the public API because it is designed to be used by
+external developers to interact with Airflow in a consistent and predictable way. The REST API provides
+access to many of the same features and functionality that are available through the other public APIs
+of Airflow, such as the ability to create and manage DAGs and tasks, and to monitor their status.
+
+Overall, the stable REST API is an important part of the public API of Apache Airflow, and can
+be a useful tool for developers who want to integrate Airflow with other systems or
+build custom tools and applications on top of Airflow.

Review Comment:
   Going forward, I suggest dropping "stable" and just refer to it as "the REST API".



##########
docs/apache-airflow/index.rst:
##########
@@ -79,6 +79,49 @@ seen running over time:
 Each column represents one DAG run. These are two of the most used views in Airflow, but there are several
 other views which allow you to deep dive into the state of your workflows.
 
+Customizing Airflow
+===================
+
+There are a number of ways to extend the capabilities of Apache Airflow. Some common methods
+for extending Airflow include:

Review Comment:
   "extending" has already been mentioned in the first sentence. So would leave out "for extending Airflow".
   
   Also, using "some common" suggests to me there are more methods. I'd make it explicit and write:
   
   ```suggestion
   There are several ways to extend the capabilities of Apache Airflow:
   ```



##########
docs/apache-airflow/public-airflow-api.rst:
##########
@@ -0,0 +1,141 @@
+ .. 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.
+
+"Public API" of Airflow

Review Comment:
   To me "Public API" suggest a REST API and I think "Public interfaces" suits better.



##########
docs/apache-airflow/public-airflow-api.rst:
##########
@@ -0,0 +1,141 @@
+ .. 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.
+
+"Public API" of Airflow
+=======================
+
+The Public API of Apache Airflow is a set of programmatic interfaces that allow developers to interact

Review Comment:
   "Public" isn't a name so would stick to lowercase.
   
   ```suggestion
   The public API of Apache Airflow is a set of programmatic interfaces that allow developers to interact
   ```



##########
docs/apache-airflow/index.rst:
##########
@@ -79,6 +79,49 @@ seen running over time:
 Each column represents one DAG run. These are two of the most used views in Airflow, but there are several
 other views which allow you to deep dive into the state of your workflows.
 
+Customizing Airflow
+===================
+
+There are a number of ways to extend the capabilities of Apache Airflow. Some common methods
+for extending Airflow include:
+
+* Writing :doc:`Custom Operators <howto/custom-operator>`_ : Operators are the building blocks of DAGs in
+  Airflow, and can be used to perform specific tasks within a DAG. By writing custom operators,
+  you can add new functionality to Airflow, such as the ability to connect to and interact
+  with external services, or to perform complex data transformations.
+
+* Writing :doc:`Custom Decorators <howto/create-custom-decorator>`_ : Custom decorators are a way to
+  extend the functionality of the Airflow ``@task`` decorator. By writing custom decorators,
+  you can add new functionality to Airflow, such as the ability to connect to and interact
+  with external services, or to perform complex data transformations.
+
+* Creating custom :doc:`plugins`: Airflow plugins are extensions to the core system that provide additional
+  features and functionality. By creating custom plugins, you can add new capabilities to Airflow,
+  such as adding custom UI components, creating custom macros, creating your own TimeTables,
+  adding Operator Extra Links, Listeners.
+
+* Writing custom :doc:`provider packages <apache-airflow-providers:index>`: Providers are the components
+  of Airflow that are responsible for connecting to and interacting with external services. By writing
+  custom providers, you can add support for new types of external services, such as databases or
+  cloud services, to Airflow.
+
+With all the above methods, you can use the :doc:`public-airflow-api` to write your
+custom Python code to interact with Airflow.
+
+However, you can also extend Airflow without directly integrating your Python code - via the
+:doc:`stable-rest-api-ref` and the :doc:`stable-cli-ref`. These methods allow you to interact with
+Airflow as an external system:
+
+Particularly, the doc:`stable-rest-api-ref` of Apache Airflow provides a number of methods for programmatic
+accessing and manipulating various aspects of the system. By using the public API, you can build
+custom tools and integrations with other systems, and automate certain aspects of the Airflow workflow.
+
+Overall, there are many different ways to extend the capabilities of Apache Airflow, and the specific
+approach that you choose will depend on your specific needs and requirements.
+By combining these different methods, you can create a powerful and flexible workflow management
+system that can help you automate and optimize your data pipelines.

Review Comment:
   What message do you want to tell here? It's obvious from the list above that there are multiple options. If not necessary -> remove.



##########
docs/apache-airflow/index.rst:
##########
@@ -79,6 +79,49 @@ seen running over time:
 Each column represents one DAG run. These are two of the most used views in Airflow, but there are several
 other views which allow you to deep dive into the state of your workflows.
 
+Customizing Airflow
+===================
+
+There are a number of ways to extend the capabilities of Apache Airflow. Some common methods
+for extending Airflow include:
+
+* Writing :doc:`Custom Operators <howto/custom-operator>`_ : Operators are the building blocks of DAGs in
+  Airflow, and can be used to perform specific tasks within a DAG. By writing custom operators,
+  you can add new functionality to Airflow, such as the ability to connect to and interact
+  with external services, or to perform complex data transformations.
+
+* Writing :doc:`Custom Decorators <howto/create-custom-decorator>`_ : Custom decorators are a way to
+  extend the functionality of the Airflow ``@task`` decorator. By writing custom decorators,
+  you can add new functionality to Airflow, such as the ability to connect to and interact
+  with external services, or to perform complex data transformations.
+
+* Creating custom :doc:`plugins`: Airflow plugins are extensions to the core system that provide additional
+  features and functionality. By creating custom plugins, you can add new capabilities to Airflow,
+  such as adding custom UI components, creating custom macros, creating your own TimeTables,
+  adding Operator Extra Links, Listeners.
+
+* Writing custom :doc:`provider packages <apache-airflow-providers:index>`: Providers are the components
+  of Airflow that are responsible for connecting to and interacting with external services. By writing
+  custom providers, you can add support for new types of external services, such as databases or
+  cloud services, to Airflow.
+
+With all the above methods, you can use the :doc:`public-airflow-api` to write your
+custom Python code to interact with Airflow.
+
+However, you can also extend Airflow without directly integrating your Python code - via the
+:doc:`stable-rest-api-ref` and the :doc:`stable-cli-ref`. These methods allow you to interact with
+Airflow as an external system:
+
+Particularly, the doc:`stable-rest-api-ref` of Apache Airflow provides a number of methods for programmatic

Review Comment:
   ```suggestion
   Particularly, the doc:`stable-rest-api-ref` of Apache Airflow provides a number of methods for programmatically
   ```



##########
docs/apache-airflow/public-airflow-api.rst:
##########
@@ -0,0 +1,141 @@
+ .. 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.
+
+"Public API" of Airflow
+=======================
+
+The Public API of Apache Airflow is a set of programmatic interfaces that allow developers to interact
+with and access certain features of the Apache Airflow system. This can include operations such as
+creating and managing DAGs (directed acyclic graphs), managing tasks and their dependencies,
+and extending Airflow capabilities by writing new Executors, Plugins, Operators and Providers. The
+public API of Apache Airflow can be useful for building custom tools and integrations with other systems,
+as well as for automating certain aspects of the Airflow workflow.
+
+In general, the public API is an important part of the Airflow ecosystem and can be a powerful tool for users
+and developers who want to extend the functionality of the system.
+
+What kind of APIs are Public in Apache Airflow?

Review Comment:
   ```suggestion
   Public interfaces
   ```



##########
docs/apache-airflow/public-airflow-api.rst:
##########
@@ -0,0 +1,141 @@
+ .. 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.
+
+"Public API" of Airflow
+=======================
+
+The Public API of Apache Airflow is a set of programmatic interfaces that allow developers to interact
+with and access certain features of the Apache Airflow system. This can include operations such as
+creating and managing DAGs (directed acyclic graphs), managing tasks and their dependencies,
+and extending Airflow capabilities by writing new Executors, Plugins, Operators and Providers. The
+public API of Apache Airflow can be useful for building custom tools and integrations with other systems,
+as well as for automating certain aspects of the Airflow workflow.
+
+In general, the public API is an important part of the Airflow ecosystem and can be a powerful tool for users
+and developers who want to extend the functionality of the system.
+
+What kind of APIs are Public in Apache Airflow?
+===============================================
+
+Apache Airflow has a number of different public APIs that allow developers to interact with various
+aspects of the system. Some examples of the types of public APIs exposed as Python objects
+that are available in Apache Airflow include:
+
+* :doc:`DAG <concepts/dags>`_ (Directed Acyclic Graph) APIs, which allow developers to create, manage,
+  and access DAGs in Airflow.
+* :doc:`Task <concepts/tasks>`_ APIs, which provide access to information about individual tasks within
+  a DAG, such as their dependencies and execution status.
+* :doc:`Operator <concepts/operators>`_ APIs, which allows the developers to write their custom Operators.
+* :doc:`Decorators <howto/create-custom-decorator>`_ APIs, which allows the developers to write their
+  custom decorators to make it easier to write :doc:`TaskFlow <tutorial/taskflow>`_ DAGs.
+* :doc:`Secret Managers <security/secrets>`_ APIs, which allows the developers to write their custom
+  Secret Managers to safely access credentials and other secret configuration of their workflows.
+* :doc:`Connection management <concepts/connections>`_ APIs, which allow developers to manage
+  connections to external systems
+* :doc:`XCom <concepts/xcoms>`_, which allow developers to manage cross-task communication within Airflow.
+* :doc:`Variables <concepts/variables>`_, which allow developers to manage variables within Airflow.
+* :doc:`Executors <executor/index>`_, which allow developers to manage the execution of tasks within Airflow.
+* :doc:`Plugins <plugins>`_, which allow developers to extend internal Airflow capabilities - add new UI
+  pages, custom :doc:`TimeTables <concepts/timetable>`_, :doc:`Extra Links <howto/define_extra_link>`_,
+  :doc:`Listeners <listeners>`_ - all of which are considered public APIs.
+
+Also Airflow has a stable REST API that allows users to interact with Airflow via HTTP requests and a
+CLI that allows users to interact with Airflow via command line commands.
+
+Overall, the public APIs in Apache Airflow are designed to provide developers with a wide
+range of tools and capabilities for interacting with the system and extending its functionality.

Review Comment:
   That's nice, but I don't think it's necessary to mention for the reader. Would remove.



##########
docs/apache-airflow/index.rst:
##########
@@ -79,6 +79,49 @@ seen running over time:
 Each column represents one DAG run. These are two of the most used views in Airflow, but there are several
 other views which allow you to deep dive into the state of your workflows.
 
+Customizing Airflow
+===================
+
+There are a number of ways to extend the capabilities of Apache Airflow. Some common methods
+for extending Airflow include:
+
+* Writing :doc:`Custom Operators <howto/custom-operator>`_ : Operators are the building blocks of DAGs in
+  Airflow, and can be used to perform specific tasks within a DAG. By writing custom operators,
+  you can add new functionality to Airflow, such as the ability to connect to and interact
+  with external services, or to perform complex data transformations.
+
+* Writing :doc:`Custom Decorators <howto/create-custom-decorator>`_ : Custom decorators are a way to
+  extend the functionality of the Airflow ``@task`` decorator. By writing custom decorators,
+  you can add new functionality to Airflow, such as the ability to connect to and interact
+  with external services, or to perform complex data transformations.
+
+* Creating custom :doc:`plugins`: Airflow plugins are extensions to the core system that provide additional
+  features and functionality. By creating custom plugins, you can add new capabilities to Airflow,
+  such as adding custom UI components, creating custom macros, creating your own TimeTables,
+  adding Operator Extra Links, Listeners.
+
+* Writing custom :doc:`provider packages <apache-airflow-providers:index>`: Providers are the components
+  of Airflow that are responsible for connecting to and interacting with external services. By writing
+  custom providers, you can add support for new types of external services, such as databases or
+  cloud services, to Airflow.
+
+With all the above methods, you can use the :doc:`public-airflow-api` to write your
+custom Python code to interact with Airflow.
+
+However, you can also extend Airflow without directly integrating your Python code - via the
+:doc:`stable-rest-api-ref` and the :doc:`stable-cli-ref`. These methods allow you to interact with
+Airflow as an external system:
+
+Particularly, the doc:`stable-rest-api-ref` of Apache Airflow provides a number of methods for programmatic

Review Comment:
   Remove redundant text
   
   ```suggestion
   Particularly, the doc:`stable-rest-api-ref` provides a number of methods for programmatic
   ```



##########
docs/apache-airflow/public-airflow-api.rst:
##########
@@ -0,0 +1,141 @@
+ .. 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.
+
+"Public API" of Airflow
+=======================
+
+The Public API of Apache Airflow is a set of programmatic interfaces that allow developers to interact
+with and access certain features of the Apache Airflow system. This can include operations such as
+creating and managing DAGs (directed acyclic graphs), managing tasks and their dependencies,
+and extending Airflow capabilities by writing new Executors, Plugins, Operators and Providers. The
+public API of Apache Airflow can be useful for building custom tools and integrations with other systems,
+as well as for automating certain aspects of the Airflow workflow.
+
+In general, the public API is an important part of the Airflow ecosystem and can be a powerful tool for users
+and developers who want to extend the functionality of the system.
+
+What kind of APIs are Public in Apache Airflow?
+===============================================
+
+Apache Airflow has a number of different public APIs that allow developers to interact with various
+aspects of the system. Some examples of the types of public APIs exposed as Python objects
+that are available in Apache Airflow include:
+
+* :doc:`DAG <concepts/dags>`_ (Directed Acyclic Graph) APIs, which allow developers to create, manage,
+  and access DAGs in Airflow.
+* :doc:`Task <concepts/tasks>`_ APIs, which provide access to information about individual tasks within
+  a DAG, such as their dependencies and execution status.
+* :doc:`Operator <concepts/operators>`_ APIs, which allows the developers to write their custom Operators.
+* :doc:`Decorators <howto/create-custom-decorator>`_ APIs, which allows the developers to write their
+  custom decorators to make it easier to write :doc:`TaskFlow <tutorial/taskflow>`_ DAGs.
+* :doc:`Secret Managers <security/secrets>`_ APIs, which allows the developers to write their custom
+  Secret Managers to safely access credentials and other secret configuration of their workflows.
+* :doc:`Connection management <concepts/connections>`_ APIs, which allow developers to manage
+  connections to external systems
+* :doc:`XCom <concepts/xcoms>`_, which allow developers to manage cross-task communication within Airflow.
+* :doc:`Variables <concepts/variables>`_, which allow developers to manage variables within Airflow.
+* :doc:`Executors <executor/index>`_, which allow developers to manage the execution of tasks within Airflow.
+* :doc:`Plugins <plugins>`_, which allow developers to extend internal Airflow capabilities - add new UI
+  pages, custom :doc:`TimeTables <concepts/timetable>`_, :doc:`Extra Links <howto/define_extra_link>`_,
+  :doc:`Listeners <listeners>`_ - all of which are considered public APIs.
+
+Also Airflow has a stable REST API that allows users to interact with Airflow via HTTP requests and a
+CLI that allows users to interact with Airflow via command line commands.

Review Comment:
   Add links to REST API & CLI docs.



##########
docs/apache-airflow/public-airflow-api.rst:
##########
@@ -0,0 +1,141 @@
+ .. 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.
+
+"Public API" of Airflow

Review Comment:
   Why quotes? Suggests to me it isn't public.



##########
docs/apache-airflow/public-airflow-api.rst:
##########
@@ -0,0 +1,141 @@
+ .. 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.
+
+"Public API" of Airflow
+=======================
+
+The Public API of Apache Airflow is a set of programmatic interfaces that allow developers to interact
+with and access certain features of the Apache Airflow system. This can include operations such as
+creating and managing DAGs (directed acyclic graphs), managing tasks and their dependencies,
+and extending Airflow capabilities by writing new Executors, Plugins, Operators and Providers. The
+public API of Apache Airflow can be useful for building custom tools and integrations with other systems,
+as well as for automating certain aspects of the Airflow workflow.
+
+In general, the public API is an important part of the Airflow ecosystem and can be a powerful tool for users
+and developers who want to extend the functionality of the system.
+
+What kind of APIs are Public in Apache Airflow?
+===============================================
+
+Apache Airflow has a number of different public APIs that allow developers to interact with various
+aspects of the system. Some examples of the types of public APIs exposed as Python objects
+that are available in Apache Airflow include:
+
+* :doc:`DAG <concepts/dags>`_ (Directed Acyclic Graph) APIs, which allow developers to create, manage,
+  and access DAGs in Airflow.
+* :doc:`Task <concepts/tasks>`_ APIs, which provide access to information about individual tasks within
+  a DAG, such as their dependencies and execution status.
+* :doc:`Operator <concepts/operators>`_ APIs, which allows the developers to write their custom Operators.
+* :doc:`Decorators <howto/create-custom-decorator>`_ APIs, which allows the developers to write their
+  custom decorators to make it easier to write :doc:`TaskFlow <tutorial/taskflow>`_ DAGs.
+* :doc:`Secret Managers <security/secrets>`_ APIs, which allows the developers to write their custom
+  Secret Managers to safely access credentials and other secret configuration of their workflows.
+* :doc:`Connection management <concepts/connections>`_ APIs, which allow developers to manage
+  connections to external systems
+* :doc:`XCom <concepts/xcoms>`_, which allow developers to manage cross-task communication within Airflow.
+* :doc:`Variables <concepts/variables>`_, which allow developers to manage variables within Airflow.
+* :doc:`Executors <executor/index>`_, which allow developers to manage the execution of tasks within Airflow.
+* :doc:`Plugins <plugins>`_, which allow developers to extend internal Airflow capabilities - add new UI
+  pages, custom :doc:`TimeTables <concepts/timetable>`_, :doc:`Extra Links <howto/define_extra_link>`_,
+  :doc:`Listeners <listeners>`_ - all of which are considered public APIs.
+
+Also Airflow has a stable REST API that allows users to interact with Airflow via HTTP requests and a
+CLI that allows users to interact with Airflow via command line commands.
+
+Overall, the public APIs in Apache Airflow are designed to provide developers with a wide
+range of tools and capabilities for interacting with the system and extending its functionality.
+
+What is not part of the Public API of Apache Airflow?
+=====================================================
+
+A public API of Apache Airflow is a set of programming interfaces that are designed to be used
+by developers to access certain features and functionality of the system. As such, not everything in
+Apache Airflow is considered to be part of the public API.
+
+For example, the internal implementation details of Apache Airflow, such as the specific algorithms
+and data structures used to manage DAGs and tasks, are not considered to be part of the public API.
+These implementation details are not intended to be used by external developers, a
+nd are subject to change without notice.
+
+Additionally, certain features and functionality of Apache Airflow may not be exposed through the public API,
+either because they are not considered to be stable or because they are not intended for external use.
+In these cases, developers may not be able to access these features through the public API,
+and should instead use other available methods for interacting with the system.
+
+Similarly, :doc:`Database structure <database-erd-ref>`_ is considered to be an internal implementation
+detail of Apache Airflow and you should not assume the structure is going to be maintained in
+backwards-compatible way.
+
+Is Airflow DB part of the Public API of Airflow?
+================================================
+
+The :doc:`Airflow DB <database-erd-ref>`_ is not considered to be part of the public API of Apache Airflow.
+The Airflow DB is the internal database used by Airflow to store information about DAGs, tasks, and
+other aspects of the system's state. This database is not intended to be accessed directly by
+external developers, and the specific details of its schema and structure are not considered
+to be part of the public API.
+
+Instead, developers who want to interact with the Airflow DB should use the :doc:`stable-rest-api-ref` and
+the :doc:`stable-cli-ref`, both providing a number of different interfaces and methods for accessing and
+manipulating data in the database. These APIs are designed to be more stable and user-friendly than
+accessing the Airflow DB directly, and provide a more consistent and predictable way of interacting
+with the system.
+
+Is Stable REST API part of the Public API of Airflow?
+=====================================================
+
+The :doc:`Stable REST API <stable-cli-ref>`_ is considered to be part of the public API of Apache Airflow.
+The REST API is a set of programming interfaces that allow developers to access certain features of
+Airflow over the HTTP protocol, using a standard set of RESTful (representational state transfer) conventions.
+
+The stable REST API is considered to be part of the public API because it is designed to be used by
+external developers to interact with Airflow in a consistent and predictable way. The REST API provides
+access to many of the same features and functionality that are available through the other public APIs
+of Airflow, such as the ability to create and manage DAGs and tasks, and to monitor their status.
+
+Overall, the stable REST API is an important part of the public API of Apache Airflow, and can
+be a useful tool for developers who want to integrate Airflow with other systems or
+build custom tools and applications on top of Airflow.
+
+Which classes and packages are a public API of Apache Airflow?
+==============================================================
+
+The specific classes and packages that are considered to be part of the public API of Apache
+Airflow can vary depending on the version of Airflow that you are using. In general, however, the
+public API of Airflow consists of a number of different classes and packages that provide access
+to the core features and functionality of the system.
+
+Some examples of the classes and packages that may be considered as the public API of Apache Airflow include:
+
+* The :class:`~airflow.models.dag.DAG`, which provides a way to define and manage DAGs in Airflow.
+* The :class:`~airflow.models.baseoperator.BaseOperator`, which provides a way write custom operators.
+* The :class:`~airflow.hooks.base.BaseHook`, which provides a way write custom hooks.
+* The :class:`~airflow.decorators.base.TaskDecorator`, which provides a way write custom hooks.
+* :class:`~airflow.models.connection.Connection`, :class:`~airflow.models.variable.Variable` and
+  :class:`~airflow.models.xcom.XCom` classes that are used to access and manage environment of execution of
+  the tasks and allow to perform an inter-task communication.
+* :class:`~airflow.executors.base_executor.BaseExecutor` - the Executors are the components of
+  Airflow that are responsible for executing tasks. There are a number of different executor implementations
+  available in Airflow, each with its own unique characteristics and capabilities. You can develop your own
+  executors in the way that suits your needs.
+
+.. note::
+
+    Originally Executors had a number of internal details and coupling with internal Airflow core logic
+    that made it difficult to write your own executors. But as of
+    Airflow 2.6.0 and `AIP-51 <https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-51+Removing+Executor+Coupling+from+Core+Airflow>`_
+    this is no longer the case. The Executors are now fully decoupled and are a part of the public API.

Review Comment:
   IMO it doesn't add value to mention the history of executor development. Would remove



##########
docs/apache-airflow/public-airflow-api.rst:
##########
@@ -0,0 +1,141 @@
+ .. 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.
+
+"Public API" of Airflow
+=======================
+
+The Public API of Apache Airflow is a set of programmatic interfaces that allow developers to interact
+with and access certain features of the Apache Airflow system. This can include operations such as
+creating and managing DAGs (directed acyclic graphs), managing tasks and their dependencies,
+and extending Airflow capabilities by writing new Executors, Plugins, Operators and Providers. The
+public API of Apache Airflow can be useful for building custom tools and integrations with other systems,
+as well as for automating certain aspects of the Airflow workflow.
+
+In general, the public API is an important part of the Airflow ecosystem and can be a powerful tool for users
+and developers who want to extend the functionality of the system.

Review Comment:
   What message do you want to tell here? If not necessary -> remove.



##########
docs/apache-airflow/public-airflow-api.rst:
##########
@@ -0,0 +1,141 @@
+ .. 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.
+
+"Public API" of Airflow
+=======================
+
+The Public API of Apache Airflow is a set of programmatic interfaces that allow developers to interact
+with and access certain features of the Apache Airflow system. This can include operations such as
+creating and managing DAGs (directed acyclic graphs), managing tasks and their dependencies,
+and extending Airflow capabilities by writing new Executors, Plugins, Operators and Providers. The

Review Comment:
   ```suggestion
   and extending Airflow's capabilities by writing new executors, plugins, operators, and providers. The
   ```



##########
docs/apache-airflow/public-airflow-api.rst:
##########
@@ -0,0 +1,141 @@
+ .. 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.
+
+"Public API" of Airflow
+=======================
+
+The Public API of Apache Airflow is a set of programmatic interfaces that allow developers to interact
+with and access certain features of the Apache Airflow system. This can include operations such as
+creating and managing DAGs (directed acyclic graphs), managing tasks and their dependencies,
+and extending Airflow capabilities by writing new Executors, Plugins, Operators and Providers. The
+public API of Apache Airflow can be useful for building custom tools and integrations with other systems,
+as well as for automating certain aspects of the Airflow workflow.
+
+In general, the public API is an important part of the Airflow ecosystem and can be a powerful tool for users
+and developers who want to extend the functionality of the system.
+
+What kind of APIs are Public in Apache Airflow?
+===============================================
+
+Apache Airflow has a number of different public APIs that allow developers to interact with various
+aspects of the system. Some examples of the types of public APIs exposed as Python objects
+that are available in Apache Airflow include:
+
+* :doc:`DAG <concepts/dags>`_ (Directed Acyclic Graph) APIs, which allow developers to create, manage,
+  and access DAGs in Airflow.
+* :doc:`Task <concepts/tasks>`_ APIs, which provide access to information about individual tasks within
+  a DAG, such as their dependencies and execution status.
+* :doc:`Operator <concepts/operators>`_ APIs, which allows the developers to write their custom Operators.
+* :doc:`Decorators <howto/create-custom-decorator>`_ APIs, which allows the developers to write their
+  custom decorators to make it easier to write :doc:`TaskFlow <tutorial/taskflow>`_ DAGs.
+* :doc:`Secret Managers <security/secrets>`_ APIs, which allows the developers to write their custom
+  Secret Managers to safely access credentials and other secret configuration of their workflows.
+* :doc:`Connection management <concepts/connections>`_ APIs, which allow developers to manage
+  connections to external systems
+* :doc:`XCom <concepts/xcoms>`_, which allow developers to manage cross-task communication within Airflow.
+* :doc:`Variables <concepts/variables>`_, which allow developers to manage variables within Airflow.
+* :doc:`Executors <executor/index>`_, which allow developers to manage the execution of tasks within Airflow.
+* :doc:`Plugins <plugins>`_, which allow developers to extend internal Airflow capabilities - add new UI
+  pages, custom :doc:`TimeTables <concepts/timetable>`_, :doc:`Extra Links <howto/define_extra_link>`_,
+  :doc:`Listeners <listeners>`_ - all of which are considered public APIs.
+
+Also Airflow has a stable REST API that allows users to interact with Airflow via HTTP requests and a
+CLI that allows users to interact with Airflow via command line commands.
+
+Overall, the public APIs in Apache Airflow are designed to provide developers with a wide
+range of tools and capabilities for interacting with the system and extending its functionality.
+
+What is not part of the Public API of Apache Airflow?
+=====================================================
+
+A public API of Apache Airflow is a set of programming interfaces that are designed to be used
+by developers to access certain features and functionality of the system. As such, not everything in
+Apache Airflow is considered to be part of the public API.
+
+For example, the internal implementation details of Apache Airflow, such as the specific algorithms
+and data structures used to manage DAGs and tasks, are not considered to be part of the public API.
+These implementation details are not intended to be used by external developers, a
+nd are subject to change without notice.
+
+Additionally, certain features and functionality of Apache Airflow may not be exposed through the public API,
+either because they are not considered to be stable or because they are not intended for external use.
+In these cases, developers may not be able to access these features through the public API,
+and should instead use other available methods for interacting with the system.
+
+Similarly, :doc:`Database structure <database-erd-ref>`_ is considered to be an internal implementation
+detail of Apache Airflow and you should not assume the structure is going to be maintained in
+backwards-compatible way.
+
+Is Airflow DB part of the Public API of Airflow?
+================================================
+
+The :doc:`Airflow DB <database-erd-ref>`_ is not considered to be part of the public API of Apache Airflow.
+The Airflow DB is the internal database used by Airflow to store information about DAGs, tasks, and
+other aspects of the system's state. This database is not intended to be accessed directly by
+external developers, and the specific details of its schema and structure are not considered
+to be part of the public API.
+
+Instead, developers who want to interact with the Airflow DB should use the :doc:`stable-rest-api-ref` and
+the :doc:`stable-cli-ref`, both providing a number of different interfaces and methods for accessing and
+manipulating data in the database. These APIs are designed to be more stable and user-friendly than
+accessing the Airflow DB directly, and provide a more consistent and predictable way of interacting
+with the system.
+
+Is Stable REST API part of the Public API of Airflow?
+=====================================================
+
+The :doc:`Stable REST API <stable-cli-ref>`_ is considered to be part of the public API of Apache Airflow.
+The REST API is a set of programming interfaces that allow developers to access certain features of
+Airflow over the HTTP protocol, using a standard set of RESTful (representational state transfer) conventions.
+
+The stable REST API is considered to be part of the public API because it is designed to be used by
+external developers to interact with Airflow in a consistent and predictable way. The REST API provides
+access to many of the same features and functionality that are available through the other public APIs
+of Airflow, such as the ability to create and manage DAGs and tasks, and to monitor their status.
+
+Overall, the stable REST API is an important part of the public API of Apache Airflow, and can
+be a useful tool for developers who want to integrate Airflow with other systems or
+build custom tools and applications on top of Airflow.

Review Comment:
   IMO this section can be written in one word: "yes".
   
   There's already a list above of components that are considered public, therefore I'd remove this section and add it there.



##########
docs/apache-airflow/public-airflow-api.rst:
##########
@@ -0,0 +1,141 @@
+ .. 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.
+
+"Public API" of Airflow
+=======================
+
+The Public API of Apache Airflow is a set of programmatic interfaces that allow developers to interact
+with and access certain features of the Apache Airflow system. This can include operations such as
+creating and managing DAGs (directed acyclic graphs), managing tasks and their dependencies,
+and extending Airflow capabilities by writing new Executors, Plugins, Operators and Providers. The
+public API of Apache Airflow can be useful for building custom tools and integrations with other systems,
+as well as for automating certain aspects of the Airflow workflow.
+
+In general, the public API is an important part of the Airflow ecosystem and can be a powerful tool for users
+and developers who want to extend the functionality of the system.
+
+What kind of APIs are Public in Apache Airflow?
+===============================================
+
+Apache Airflow has a number of different public APIs that allow developers to interact with various
+aspects of the system. Some examples of the types of public APIs exposed as Python objects
+that are available in Apache Airflow include:
+
+* :doc:`DAG <concepts/dags>`_ (Directed Acyclic Graph) APIs, which allow developers to create, manage,
+  and access DAGs in Airflow.
+* :doc:`Task <concepts/tasks>`_ APIs, which provide access to information about individual tasks within
+  a DAG, such as their dependencies and execution status.
+* :doc:`Operator <concepts/operators>`_ APIs, which allows the developers to write their custom Operators.
+* :doc:`Decorators <howto/create-custom-decorator>`_ APIs, which allows the developers to write their
+  custom decorators to make it easier to write :doc:`TaskFlow <tutorial/taskflow>`_ DAGs.
+* :doc:`Secret Managers <security/secrets>`_ APIs, which allows the developers to write their custom
+  Secret Managers to safely access credentials and other secret configuration of their workflows.
+* :doc:`Connection management <concepts/connections>`_ APIs, which allow developers to manage
+  connections to external systems
+* :doc:`XCom <concepts/xcoms>`_, which allow developers to manage cross-task communication within Airflow.
+* :doc:`Variables <concepts/variables>`_, which allow developers to manage variables within Airflow.
+* :doc:`Executors <executor/index>`_, which allow developers to manage the execution of tasks within Airflow.
+* :doc:`Plugins <plugins>`_, which allow developers to extend internal Airflow capabilities - add new UI
+  pages, custom :doc:`TimeTables <concepts/timetable>`_, :doc:`Extra Links <howto/define_extra_link>`_,
+  :doc:`Listeners <listeners>`_ - all of which are considered public APIs.
+
+Also Airflow has a stable REST API that allows users to interact with Airflow via HTTP requests and a
+CLI that allows users to interact with Airflow via command line commands.
+
+Overall, the public APIs in Apache Airflow are designed to provide developers with a wide
+range of tools and capabilities for interacting with the system and extending its functionality.
+
+What is not part of the Public API of Apache Airflow?
+=====================================================
+
+A public API of Apache Airflow is a set of programming interfaces that are designed to be used
+by developers to access certain features and functionality of the system. As such, not everything in
+Apache Airflow is considered to be part of the public API.
+
+For example, the internal implementation details of Apache Airflow, such as the specific algorithms
+and data structures used to manage DAGs and tasks, are not considered to be part of the public API.
+These implementation details are not intended to be used by external developers, a
+nd are subject to change without notice.
+
+Additionally, certain features and functionality of Apache Airflow may not be exposed through the public API,
+either because they are not considered to be stable or because they are not intended for external use.
+In these cases, developers may not be able to access these features through the public API,
+and should instead use other available methods for interacting with the system.
+
+Similarly, :doc:`Database structure <database-erd-ref>`_ is considered to be an internal implementation
+detail of Apache Airflow and you should not assume the structure is going to be maintained in
+backwards-compatible way.
+
+Is Airflow DB part of the Public API of Airflow?
+================================================
+
+The :doc:`Airflow DB <database-erd-ref>`_ is not considered to be part of the public API of Apache Airflow.
+The Airflow DB is the internal database used by Airflow to store information about DAGs, tasks, and
+other aspects of the system's state. This database is not intended to be accessed directly by
+external developers, and the specific details of its schema and structure are not considered
+to be part of the public API.
+
+Instead, developers who want to interact with the Airflow DB should use the :doc:`stable-rest-api-ref` and
+the :doc:`stable-cli-ref`, both providing a number of different interfaces and methods for accessing and
+manipulating data in the database. These APIs are designed to be more stable and user-friendly than
+accessing the Airflow DB directly, and provide a more consistent and predictable way of interacting
+with the system.
+
+Is Stable REST API part of the Public API of Airflow?
+=====================================================
+
+The :doc:`Stable REST API <stable-cli-ref>`_ is considered to be part of the public API of Apache Airflow.
+The REST API is a set of programming interfaces that allow developers to access certain features of
+Airflow over the HTTP protocol, using a standard set of RESTful (representational state transfer) conventions.
+
+The stable REST API is considered to be part of the public API because it is designed to be used by
+external developers to interact with Airflow in a consistent and predictable way. The REST API provides
+access to many of the same features and functionality that are available through the other public APIs
+of Airflow, such as the ability to create and manage DAGs and tasks, and to monitor their status.
+
+Overall, the stable REST API is an important part of the public API of Apache Airflow, and can
+be a useful tool for developers who want to integrate Airflow with other systems or
+build custom tools and applications on top of Airflow.
+
+Which classes and packages are a public API of Apache Airflow?
+==============================================================
+
+The specific classes and packages that are considered to be part of the public API of Apache
+Airflow can vary depending on the version of Airflow that you are using. In general, however, the
+public API of Airflow consists of a number of different classes and packages that provide access
+to the core features and functionality of the system.
+
+Some examples of the classes and packages that may be considered as the public API of Apache Airflow include:

Review Comment:
   Is it not possible to create a complete list? I think the list of interfaces remains fairly static over versions.



##########
docs/apache-airflow/index.rst:
##########
@@ -79,6 +79,49 @@ seen running over time:
 Each column represents one DAG run. These are two of the most used views in Airflow, but there are several
 other views which allow you to deep dive into the state of your workflows.
 
+Customizing Airflow
+===================
+
+There are a number of ways to extend the capabilities of Apache Airflow. Some common methods
+for extending Airflow include:
+
+* Writing :doc:`Custom Operators <howto/custom-operator>`_ : Operators are the building blocks of DAGs in
+  Airflow, and can be used to perform specific tasks within a DAG. By writing custom operators,
+  you can add new functionality to Airflow, such as the ability to connect to and interact
+  with external services, or to perform complex data transformations.
+
+* Writing :doc:`Custom Decorators <howto/create-custom-decorator>`_ : Custom decorators are a way to
+  extend the functionality of the Airflow ``@task`` decorator. By writing custom decorators,
+  you can add new functionality to Airflow, such as the ability to connect to and interact
+  with external services, or to perform complex data transformations.
+
+* Creating custom :doc:`plugins`: Airflow plugins are extensions to the core system that provide additional
+  features and functionality. By creating custom plugins, you can add new capabilities to Airflow,
+  such as adding custom UI components, creating custom macros, creating your own TimeTables,
+  adding Operator Extra Links, Listeners.
+
+* Writing custom :doc:`provider packages <apache-airflow-providers:index>`: Providers are the components
+  of Airflow that are responsible for connecting to and interacting with external services. By writing
+  custom providers, you can add support for new types of external services, such as databases or
+  cloud services, to Airflow.
+
+With all the above methods, you can use the :doc:`public-airflow-api` to write your
+custom Python code to interact with Airflow.
+
+However, you can also extend Airflow without directly integrating your Python code - via the
+:doc:`stable-rest-api-ref` and the :doc:`stable-cli-ref`. These methods allow you to interact with
+Airflow as an external system:

Review Comment:
   Would structure this doc starting with the three key points:
   
   1. Extend Python code
   2. REST API
   3. CLI
   
   And then go deeper into each of the three. This gives the reader an immediate understanding of what's possible instead of having to read through all the options of point nr 1 first.



##########
docs/apache-airflow/public-airflow-api.rst:
##########
@@ -0,0 +1,141 @@
+ .. 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.
+
+"Public API" of Airflow
+=======================
+
+The Public API of Apache Airflow is a set of programmatic interfaces that allow developers to interact
+with and access certain features of the Apache Airflow system. This can include operations such as
+creating and managing DAGs (directed acyclic graphs), managing tasks and their dependencies,
+and extending Airflow capabilities by writing new Executors, Plugins, Operators and Providers. The
+public API of Apache Airflow can be useful for building custom tools and integrations with other systems,
+as well as for automating certain aspects of the Airflow workflow.
+
+In general, the public API is an important part of the Airflow ecosystem and can be a powerful tool for users
+and developers who want to extend the functionality of the system.
+
+What kind of APIs are Public in Apache Airflow?
+===============================================
+
+Apache Airflow has a number of different public APIs that allow developers to interact with various
+aspects of the system. Some examples of the types of public APIs exposed as Python objects
+that are available in Apache Airflow include:
+
+* :doc:`DAG <concepts/dags>`_ (Directed Acyclic Graph) APIs, which allow developers to create, manage,
+  and access DAGs in Airflow.
+* :doc:`Task <concepts/tasks>`_ APIs, which provide access to information about individual tasks within
+  a DAG, such as their dependencies and execution status.
+* :doc:`Operator <concepts/operators>`_ APIs, which allows the developers to write their custom Operators.
+* :doc:`Decorators <howto/create-custom-decorator>`_ APIs, which allows the developers to write their
+  custom decorators to make it easier to write :doc:`TaskFlow <tutorial/taskflow>`_ DAGs.
+* :doc:`Secret Managers <security/secrets>`_ APIs, which allows the developers to write their custom
+  Secret Managers to safely access credentials and other secret configuration of their workflows.
+* :doc:`Connection management <concepts/connections>`_ APIs, which allow developers to manage
+  connections to external systems
+* :doc:`XCom <concepts/xcoms>`_, which allow developers to manage cross-task communication within Airflow.
+* :doc:`Variables <concepts/variables>`_, which allow developers to manage variables within Airflow.
+* :doc:`Executors <executor/index>`_, which allow developers to manage the execution of tasks within Airflow.
+* :doc:`Plugins <plugins>`_, which allow developers to extend internal Airflow capabilities - add new UI
+  pages, custom :doc:`TimeTables <concepts/timetable>`_, :doc:`Extra Links <howto/define_extra_link>`_,
+  :doc:`Listeners <listeners>`_ - all of which are considered public APIs.
+
+Also Airflow has a stable REST API that allows users to interact with Airflow via HTTP requests and a
+CLI that allows users to interact with Airflow via command line commands.
+
+Overall, the public APIs in Apache Airflow are designed to provide developers with a wide
+range of tools and capabilities for interacting with the system and extending its functionality.
+
+What is not part of the Public API of Apache Airflow?
+=====================================================
+
+A public API of Apache Airflow is a set of programming interfaces that are designed to be used
+by developers to access certain features and functionality of the system. As such, not everything in
+Apache Airflow is considered to be part of the public API.
+
+For example, the internal implementation details of Apache Airflow, such as the specific algorithms
+and data structures used to manage DAGs and tasks, are not considered to be part of the public API.
+These implementation details are not intended to be used by external developers, a
+nd are subject to change without notice.
+
+Additionally, certain features and functionality of Apache Airflow may not be exposed through the public API,
+either because they are not considered to be stable or because they are not intended for external use.
+In these cases, developers may not be able to access these features through the public API,
+and should instead use other available methods for interacting with the system.
+
+Similarly, :doc:`Database structure <database-erd-ref>`_ is considered to be an internal implementation
+detail of Apache Airflow and you should not assume the structure is going to be maintained in
+backwards-compatible way.
+
+Is Airflow DB part of the Public API of Airflow?
+================================================
+
+The :doc:`Airflow DB <database-erd-ref>`_ is not considered to be part of the public API of Apache Airflow.
+The Airflow DB is the internal database used by Airflow to store information about DAGs, tasks, and
+other aspects of the system's state. This database is not intended to be accessed directly by
+external developers, and the specific details of its schema and structure are not considered
+to be part of the public API.
+
+Instead, developers who want to interact with the Airflow DB should use the :doc:`stable-rest-api-ref` and
+the :doc:`stable-cli-ref`, both providing a number of different interfaces and methods for accessing and
+manipulating data in the database. These APIs are designed to be more stable and user-friendly than
+accessing the Airflow DB directly, and provide a more consistent and predictable way of interacting
+with the system.
+
+Is Stable REST API part of the Public API of Airflow?
+=====================================================
+
+The :doc:`Stable REST API <stable-cli-ref>`_ is considered to be part of the public API of Apache Airflow.
+The REST API is a set of programming interfaces that allow developers to access certain features of
+Airflow over the HTTP protocol, using a standard set of RESTful (representational state transfer) conventions.
+
+The stable REST API is considered to be part of the public API because it is designed to be used by
+external developers to interact with Airflow in a consistent and predictable way. The REST API provides
+access to many of the same features and functionality that are available through the other public APIs
+of Airflow, such as the ability to create and manage DAGs and tasks, and to monitor their status.
+
+Overall, the stable REST API is an important part of the public API of Apache Airflow, and can
+be a useful tool for developers who want to integrate Airflow with other systems or
+build custom tools and applications on top of Airflow.

Review Comment:
   Instead of long stories, would keep it concise, and create a bullet list of items that are (and if needed -- are not) part of the public APIs. That reads much easier than having to distill the correct information from text.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org