:py:mod:`airflow.providers.google.marketing_platform.hooks.campaign_manager`
============================================================================

.. py:module:: airflow.providers.google.marketing_platform.hooks.campaign_manager

.. autoapi-nested-parse::

   This module contains Google Campaign Manager hook.



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

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.google.marketing_platform.hooks.campaign_manager.GoogleCampaignManagerHook




.. py:class:: GoogleCampaignManagerHook(api_version = 'v3.3', gcp_conn_id = 'google_cloud_default', delegate_to = None, impersonation_chain = None)

   Bases: :py:obj:`airflow.providers.google.common.hooks.base_google.GoogleBaseHook`

   Hook for Google Campaign Manager.

   .. py:method:: get_conn(self)

      Retrieves connection to Campaign Manager.


   .. py:method:: delete_report(self, profile_id, report_id)

      Deletes a report by its ID.

      :param profile_id: The DFA user profile ID.
      :param report_id: The ID of the report.


   .. py:method:: insert_report(self, profile_id, report)

      Creates a report.

      :param profile_id: The DFA user profile ID.
      :param report: The report resource to be inserted.


   .. py:method:: list_reports(self, profile_id, max_results = None, scope = None, sort_field = None, sort_order = None)

      Retrieves list of reports.

      :param profile_id: The DFA user profile ID.
      :param max_results: Maximum number of results to return.
      :param scope: The scope that defines which results are returned.
      :param sort_field: The field by which to sort the list.
      :param sort_order: Order of sorted results.


   .. py:method:: patch_report(self, profile_id, report_id, update_mask)

      Updates a report. This method supports patch semantics.

      :param profile_id: The DFA user profile ID.
      :param report_id: The ID of the report.
      :param update_mask: The relevant portions of a report resource,
          according to the rules of patch semantics.


   .. py:method:: run_report(self, profile_id, report_id, synchronous = None)

      Runs a report.

      :param profile_id: The DFA profile ID.
      :param report_id: The ID of the report.
      :param synchronous: If set and true, tries to run the report synchronously.


   .. py:method:: update_report(self, profile_id, report_id)

      Updates a report.

      :param profile_id: The DFA user profile ID.
      :param report_id: The ID of the report.


   .. py:method:: get_report(self, file_id, profile_id, report_id)

      Retrieves a report file.

      :param profile_id: The DFA user profile ID.
      :param report_id: The ID of the report.
      :param file_id: The ID of the report file.


   .. py:method:: get_report_file(self, file_id, profile_id, report_id)

      Retrieves a media part of report file.

      :param profile_id: The DFA user profile ID.
      :param report_id: The ID of the report.
      :param file_id: The ID of the report file.
      :return: googleapiclient.http.HttpRequest


   .. py:method:: conversions_batch_insert(self, profile_id, conversions, encryption_entity_type, encryption_entity_id, encryption_source, max_failed_inserts = 0)

      Inserts conversions.

      :param profile_id: User profile ID associated with this request.
      :param conversions: Conversations to insert, should by type of Conversation:
          https://developers.google.com/doubleclick-advertisers/v3.3/conversions#resource
      :param encryption_entity_type: The encryption entity type. This should match the encryption
          configuration for ad serving or Data Transfer.
      :param encryption_entity_id: The encryption entity ID. This should match the encryption
          configuration for ad serving or Data Transfer.
      :param encryption_source: Describes whether the encrypted cookie was received from ad serving
          (the %m macro) or from Data Transfer.
      :param max_failed_inserts: The maximum number of conversions that failed to be inserted


   .. py:method:: conversions_batch_update(self, profile_id, conversions, encryption_entity_type, encryption_entity_id, encryption_source, max_failed_updates = 0)

      Updates existing conversions.

      :param profile_id: User profile ID associated with this request.
      :param conversions: Conversations to update, should by type of Conversation:
          https://developers.google.com/doubleclick-advertisers/v3.3/conversions#resource
      :param encryption_entity_type: The encryption entity type. This should match the encryption
          configuration for ad serving or Data Transfer.
      :param encryption_entity_id: The encryption entity ID. This should match the encryption
          configuration for ad serving or Data Transfer.
      :param encryption_source: Describes whether the encrypted cookie was received from ad serving
          (the %m macro) or from Data Transfer.
      :param max_failed_updates: The maximum number of conversions that failed to be updated



