:mod:`airflow.providers.google.cloud.hooks.workflows`
=====================================================

.. py:module:: airflow.providers.google.cloud.hooks.workflows


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

.. py:class:: WorkflowsHook

   Bases: :class:`airflow.providers.google.common.hooks.base_google.GoogleBaseHook`

   Hook for Google GCP APIs.

   All the methods in the hook where project_id is used must be called with
   keyword arguments rather than positional.

   
   .. method:: get_workflows_client(self)

      Returns WorkflowsClient.



   
   .. method:: get_executions_client(self)

      Returns ExecutionsClient.



   
   .. method:: create_workflow(self, workflow: Dict, workflow_id: str, location: str, project_id: str, retry: Optional[Retry] = None, timeout: Optional[float] = None, metadata: Optional[Sequence[Tuple[str, str]]] = None)

      Creates a new workflow. If a workflow with the specified name
      already exists in the specified project and location, the long
      running operation will return
      [ALREADY_EXISTS][google.rpc.Code.ALREADY_EXISTS] error.

      :param workflow: Required. Workflow to be created.
      :type workflow: Dict
      :param workflow_id: Required. The ID of the workflow to be created.
      :type workflow_id: str
      :param project_id: Required. The ID of the Google Cloud project the cluster belongs to.
      :type project_id: str
      :param location: Required. The GCP region in which to handle the request.
      :type location: str
      :param retry: A retry object used to retry requests. If ``None`` is specified, requests will not be
          retried.
      :type retry: google.api_core.retry.Retry
      :param timeout: The amount of time, in seconds, to wait for the request to complete. Note that if
          ``retry`` is specified, the timeout applies to each individual attempt.
      :type timeout: float
      :param metadata: Additional metadata that is provided to the method.
      :type metadata: Sequence[Tuple[str, str]]



   
   .. method:: get_workflow(self, workflow_id: str, location: str, project_id: str, retry: Optional[Retry] = None, timeout: Optional[float] = None, metadata: Optional[Sequence[Tuple[str, str]]] = None)

      Gets details of a single Workflow.

      :param workflow_id: Required. The ID of the workflow to be created.
      :type workflow_id: str
      :param project_id: Required. The ID of the Google Cloud project the cluster belongs to.
      :type project_id: str
      :param location: Required. The GCP region in which to handle the request.
      :type location: str
      :param retry: A retry object used to retry requests. If ``None`` is specified, requests will not be
          retried.
      :type retry: google.api_core.retry.Retry
      :param timeout: The amount of time, in seconds, to wait for the request to complete. Note that if
          ``retry`` is specified, the timeout applies to each individual attempt.
      :type timeout: float
      :param metadata: Additional metadata that is provided to the method.
      :type metadata: Sequence[Tuple[str, str]]



   
   .. method:: update_workflow(self, workflow: Union[Dict, Workflow], update_mask: Optional[FieldMask] = None, retry: Optional[Retry] = None, timeout: Optional[float] = None, metadata: Optional[Sequence[Tuple[str, str]]] = None)

      Updates an existing workflow.
      Running this method has no impact on already running
      executions of the workflow. A new revision of the
      workflow may be created as a result of a successful
      update operation. In that case, such revision will be
      used in new workflow executions.

      :param workflow: Required. Workflow to be created.
      :type workflow: Dict
      :param update_mask: List of fields to be updated. If not present,
          the entire workflow will be updated.
      :type update_mask: FieldMask
      :param retry: A retry object used to retry requests. If ``None`` is specified, requests will not be
          retried.
      :type retry: google.api_core.retry.Retry
      :param timeout: The amount of time, in seconds, to wait for the request to complete. Note that if
          ``retry`` is specified, the timeout applies to each individual attempt.
      :type timeout: float
      :param metadata: Additional metadata that is provided to the method.
      :type metadata: Sequence[Tuple[str, str]]



   
   .. method:: delete_workflow(self, workflow_id: str, location: str, project_id: str, retry: Optional[Retry] = None, timeout: Optional[float] = None, metadata: Optional[Sequence[Tuple[str, str]]] = None)

      Deletes a workflow with the specified name.
      This method also cancels and deletes all running
      executions of the workflow.

      :param workflow_id: Required. The ID of the workflow to be created.
      :type workflow_id: str
      :param project_id: Required. The ID of the Google Cloud project the cluster belongs to.
      :type project_id: str
      :param location: Required. The GCP region in which to handle the request.
      :type location: str
      :param retry: A retry object used to retry requests. If ``None`` is specified, requests will not be
          retried.
      :type retry: google.api_core.retry.Retry
      :param timeout: The amount of time, in seconds, to wait for the request to complete. Note that if
          ``retry`` is specified, the timeout applies to each individual attempt.
      :type timeout: float
      :param metadata: Additional metadata that is provided to the method.
      :type metadata: Sequence[Tuple[str, str]]



   
   .. method:: list_workflows(self, location: str, project_id: str, filter_: Optional[str] = None, order_by: Optional[str] = None, retry: Optional[Retry] = None, timeout: Optional[float] = None, metadata: Optional[Sequence[Tuple[str, str]]] = None)

      Lists Workflows in a given project and location.
      The default order is not specified.

      :param filter_: Filter to restrict results to specific workflows.
      :type filter_: str
      :param order_by: Comma-separated list of fields that that
          specify the order of the results. Default sorting order for a field is ascending.
          To specify descending order for a field, append a "desc" suffix.
          If not specified, the results will be returned in an unspecified order.
      :type order_by: str
      :param project_id: Required. The ID of the Google Cloud project the cluster belongs to.
      :type project_id: str
      :param location: Required. The GCP region in which to handle the request.
      :type location: str
      :param retry: A retry object used to retry requests. If ``None`` is specified, requests will not be
          retried.
      :type retry: google.api_core.retry.Retry
      :param timeout: The amount of time, in seconds, to wait for the request to complete. Note that if
          ``retry`` is specified, the timeout applies to each individual attempt.
      :type timeout: float
      :param metadata: Additional metadata that is provided to the method.
      :type metadata: Sequence[Tuple[str, str]]



   
   .. method:: create_execution(self, workflow_id: str, location: str, project_id: str, execution: Dict, retry: Optional[Retry] = None, timeout: Optional[float] = None, metadata: Optional[Sequence[Tuple[str, str]]] = None)

      Creates a new execution using the latest revision of
      the given workflow.

      :param execution: Required. Input parameters of the execution represented as a dictionary.
      :type execution: Dict
      :param workflow_id: Required. The ID of the workflow.
      :type workflow_id: str
      :param project_id: Required. The ID of the Google Cloud project the cluster belongs to.
      :type project_id: str
      :param location: Required. The GCP region in which to handle the request.
      :type location: str
      :param retry: A retry object used to retry requests. If ``None`` is specified, requests will not be
          retried.
      :type retry: google.api_core.retry.Retry
      :param timeout: The amount of time, in seconds, to wait for the request to complete. Note that if
          ``retry`` is specified, the timeout applies to each individual attempt.
      :type timeout: float
      :param metadata: Additional metadata that is provided to the method.
      :type metadata: Sequence[Tuple[str, str]]



   
   .. method:: get_execution(self, workflow_id: str, execution_id: str, location: str, project_id: str, retry: Optional[Retry] = None, timeout: Optional[float] = None, metadata: Optional[Sequence[Tuple[str, str]]] = None)

      Returns an execution for the given ``workflow_id`` and ``execution_id``.

      :param workflow_id: Required. The ID of the workflow.
      :type workflow_id: str
      :param execution_id: Required. The ID of the execution.
      :type execution_id: str
      :param project_id: Required. The ID of the Google Cloud project the cluster belongs to.
      :type project_id: str
      :param location: Required. The GCP region in which to handle the request.
      :type location: str
      :param retry: A retry object used to retry requests. If ``None`` is specified, requests will not be
          retried.
      :type retry: google.api_core.retry.Retry
      :param timeout: The amount of time, in seconds, to wait for the request to complete. Note that if
          ``retry`` is specified, the timeout applies to each individual attempt.
      :type timeout: float
      :param metadata: Additional metadata that is provided to the method.
      :type metadata: Sequence[Tuple[str, str]]



   
   .. method:: cancel_execution(self, workflow_id: str, execution_id: str, location: str, project_id: str, retry: Optional[Retry] = None, timeout: Optional[float] = None, metadata: Optional[Sequence[Tuple[str, str]]] = None)

      Cancels an execution using the given ``workflow_id`` and ``execution_id``.

      :param workflow_id: Required. The ID of the workflow.
      :type workflow_id: str
      :param execution_id: Required. The ID of the execution.
      :type execution_id: str
      :param project_id: Required. The ID of the Google Cloud project the cluster belongs to.
      :type project_id: str
      :param location: Required. The GCP region in which to handle the request.
      :type location: str
      :param retry: A retry object used to retry requests. If ``None`` is specified, requests will not be
          retried.
      :type retry: google.api_core.retry.Retry
      :param timeout: The amount of time, in seconds, to wait for the request to complete. Note that if
          ``retry`` is specified, the timeout applies to each individual attempt.
      :type timeout: float
      :param metadata: Additional metadata that is provided to the method.
      :type metadata: Sequence[Tuple[str, str]]



   
   .. method:: list_executions(self, workflow_id: str, location: str, project_id: str, retry: Optional[Retry] = None, timeout: Optional[float] = None, metadata: Optional[Sequence[Tuple[str, str]]] = None)

      Returns a list of executions which belong to the
      workflow with the given name. The method returns
      executions of all workflow revisions. Returned
      executions are ordered by their start time (newest
      first).

      :param workflow_id: Required. The ID of the workflow to be created.
      :type workflow_id: str
      :param project_id: Required. The ID of the Google Cloud project the cluster belongs to.
      :type project_id: str
      :param location: Required. The GCP region in which to handle the request.
      :type location: str
      :param retry: A retry object used to retry requests. If ``None`` is specified, requests will not be
          retried.
      :type retry: google.api_core.retry.Retry
      :param timeout: The amount of time, in seconds, to wait for the request to complete. Note that if
          ``retry`` is specified, the timeout applies to each individual attempt.
      :type timeout: float
      :param metadata: Additional metadata that is provided to the method.
      :type metadata: Sequence[Tuple[str, str]]




