: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()

      Retrieves connection to Campaign Manager.


   .. py:method:: delete_report(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(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(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(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(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(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(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(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(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(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



