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


##########
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.

Review Comment:
   This one assumes that the discussion is completed.



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to