:py:mod:`airflow.providers.asana.operators.asana_tasks`
=======================================================

.. py:module:: airflow.providers.asana.operators.asana_tasks


Module Contents
---------------

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.asana.operators.asana_tasks.AsanaCreateTaskOperator
   airflow.providers.asana.operators.asana_tasks.AsanaUpdateTaskOperator
   airflow.providers.asana.operators.asana_tasks.AsanaDeleteTaskOperator
   airflow.providers.asana.operators.asana_tasks.AsanaFindTaskOperator




.. py:class:: AsanaCreateTaskOperator(*, conn_id, name, task_parameters = None, **kwargs)

   Bases: :py:obj:`airflow.models.BaseOperator`

   This operator can be used to create Asana tasks. For more information on
   Asana optional task parameters, see https://developers.asana.com/docs/create-a-task

   .. seealso::
       For more information on how to use this operator, take a look at the guide:
       :ref:`howto/operator:AsanaCreateTaskOperator`

   :param conn_id: The Asana connection to use.
   :param name: Name of the Asana task.
   :param task_parameters: Any of the optional task creation parameters.
       See https://developers.asana.com/docs/create-a-task for a complete list.
       You must specify at least one of 'workspace', 'parent', or 'projects'
       either here or in the connection.

   .. py:method:: execute(self, context)

      This is the main method to derive when creating an operator.
      Context is the same dictionary used as when rendering jinja templates.

      Refer to get_template_context for more context.



.. py:class:: AsanaUpdateTaskOperator(*, conn_id, asana_task_gid, task_parameters, **kwargs)

   Bases: :py:obj:`airflow.models.BaseOperator`

   This operator can be used to update Asana tasks.
   For more information on Asana optional task parameters, see
   https://developers.asana.com/docs/update-a-task

   .. seealso::
       For more information on how to use this operator, take a look at the guide:
       :ref:`howto/operator:AsanaUpdateTaskOperator`

   :param conn_id: The Asana connection to use.
   :param asana_task_gid: Asana task ID to update
   :param task_parameters: Any task parameters that should be updated.
       See https://developers.asana.com/docs/update-a-task for a complete list.

   .. py:method:: execute(self, context)

      This is the main method to derive when creating an operator.
      Context is the same dictionary used as when rendering jinja templates.

      Refer to get_template_context for more context.



.. py:class:: AsanaDeleteTaskOperator(*, conn_id, asana_task_gid, **kwargs)

   Bases: :py:obj:`airflow.models.BaseOperator`

   This operator can be used to delete Asana tasks.

   .. seealso::
       For more information on how to use this operator, take a look at the guide:
       :ref:`howto/operator:AsanaDeleteTaskOperator`

   :param conn_id: The Asana connection to use.
   :param asana_task_gid: Asana Task ID to delete.

   .. py:method:: execute(self, context)

      This is the main method to derive when creating an operator.
      Context is the same dictionary used as when rendering jinja templates.

      Refer to get_template_context for more context.



.. py:class:: AsanaFindTaskOperator(*, conn_id, search_parameters = None, **kwargs)

   Bases: :py:obj:`airflow.models.BaseOperator`

   This operator can be used to retrieve Asana tasks that match various filters.
   See https://developers.asana.com/docs/update-a-task for a list of possible filters.

   .. seealso::
       For more information on how to use this operator, take a look at the guide:
       :ref:`howto/operator:AsanaFindTaskOperator`

   :param conn_id: The Asana connection to use.
   :param search_parameters: The parameters used to find relevant tasks. You must
       specify at least one of `project`, `section`, `tag`, `user_task_list`, or both
       `assignee` and `workspace` either here or in the connection.

   .. py:method:: execute(self, context)

      This is the main method to derive when creating an operator.
      Context is the same dictionary used as when rendering jinja templates.

      Refer to get_template_context for more context.



