apache-airflow-providers-google 9.0.0rc1__py3-none-any.whl → 10.0.0rc1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- airflow/providers/google/cloud/hooks/automl.py +5 -6
- airflow/providers/google/cloud/hooks/bigquery.py +5 -6
- airflow/providers/google/cloud/hooks/bigquery_dts.py +11 -8
- airflow/providers/google/cloud/hooks/bigtable.py +5 -6
- airflow/providers/google/cloud/hooks/cloud_build.py +14 -11
- airflow/providers/google/cloud/hooks/cloud_composer.py +16 -0
- airflow/providers/google/cloud/hooks/cloud_memorystore.py +5 -14
- airflow/providers/google/cloud/hooks/cloud_sql.py +5 -7
- airflow/providers/google/cloud/hooks/cloud_storage_transfer_service.py +5 -5
- airflow/providers/google/cloud/hooks/compute.py +5 -6
- airflow/providers/google/cloud/hooks/compute_ssh.py +8 -12
- airflow/providers/google/cloud/hooks/datacatalog.py +5 -9
- airflow/providers/google/cloud/hooks/dataflow.py +14 -6
- airflow/providers/google/cloud/hooks/dataform.py +8 -0
- airflow/providers/google/cloud/hooks/datafusion.py +13 -6
- airflow/providers/google/cloud/hooks/dataplex.py +5 -8
- airflow/providers/google/cloud/hooks/dataproc.py +13 -8
- airflow/providers/google/cloud/hooks/dataproc_metastore.py +8 -0
- airflow/providers/google/cloud/hooks/datastore.py +5 -6
- airflow/providers/google/cloud/hooks/dlp.py +5 -9
- airflow/providers/google/cloud/hooks/functions.py +5 -6
- airflow/providers/google/cloud/hooks/gcs.py +6 -6
- airflow/providers/google/cloud/hooks/gdm.py +5 -6
- airflow/providers/google/cloud/hooks/kms.py +5 -9
- airflow/providers/google/cloud/hooks/kubernetes_engine.py +6 -4
- airflow/providers/google/cloud/hooks/life_sciences.py +5 -9
- airflow/providers/google/cloud/hooks/mlengine.py +8 -0
- airflow/providers/google/cloud/hooks/natural_language.py +5 -9
- airflow/providers/google/cloud/hooks/os_login.py +5 -6
- airflow/providers/google/cloud/hooks/pubsub.py +5 -5
- airflow/providers/google/cloud/hooks/secret_manager.py +5 -9
- airflow/providers/google/cloud/hooks/spanner.py +5 -6
- airflow/providers/google/cloud/hooks/speech_to_text.py +5 -9
- airflow/providers/google/cloud/hooks/stackdriver.py +5 -6
- airflow/providers/google/cloud/hooks/tasks.py +5 -9
- airflow/providers/google/cloud/hooks/text_to_speech.py +5 -9
- airflow/providers/google/cloud/hooks/translate.py +5 -6
- airflow/providers/google/cloud/hooks/vertex_ai/auto_ml.py +5 -5
- airflow/providers/google/cloud/hooks/vertex_ai/batch_prediction_job.py +5 -6
- airflow/providers/google/cloud/hooks/vertex_ai/custom_job.py +5 -6
- airflow/providers/google/cloud/hooks/vertex_ai/dataset.py +8 -0
- airflow/providers/google/cloud/hooks/vertex_ai/endpoint_service.py +8 -0
- airflow/providers/google/cloud/hooks/vertex_ai/hyperparameter_tuning_job.py +5 -6
- airflow/providers/google/cloud/hooks/vertex_ai/model_service.py +8 -0
- airflow/providers/google/cloud/hooks/video_intelligence.py +5 -9
- airflow/providers/google/cloud/hooks/vision.py +5 -6
- airflow/providers/google/cloud/hooks/workflows.py +8 -0
- airflow/providers/google/cloud/operators/bigquery.py +1 -148
- airflow/providers/google/cloud/operators/cloud_build.py +0 -13
- airflow/providers/google/cloud/operators/cloud_composer.py +2 -68
- airflow/providers/google/cloud/operators/cloud_storage_transfer_service.py +0 -21
- airflow/providers/google/cloud/operators/dataflow.py +2 -72
- airflow/providers/google/cloud/operators/dataform.py +5 -141
- airflow/providers/google/cloud/operators/datafusion.py +0 -102
- airflow/providers/google/cloud/operators/dataplex.py +3 -61
- airflow/providers/google/cloud/operators/dataproc.py +5 -13
- airflow/providers/google/cloud/operators/datastore.py +2 -86
- airflow/providers/google/cloud/operators/gcs.py +1 -43
- airflow/providers/google/cloud/operators/mlengine.py +1 -123
- airflow/providers/google/cloud/operators/pubsub.py +0 -61
- airflow/providers/google/cloud/operators/stackdriver.py +0 -101
- airflow/providers/google/cloud/operators/vertex_ai/auto_ml.py +0 -26
- airflow/providers/google/cloud/operators/vertex_ai/batch_prediction_job.py +0 -41
- airflow/providers/google/cloud/operators/vertex_ai/custom_job.py +0 -39
- airflow/providers/google/cloud/operators/vertex_ai/dataset.py +0 -71
- airflow/providers/google/cloud/operators/vertex_ai/endpoint_service.py +0 -71
- airflow/providers/google/cloud/operators/vertex_ai/hyperparameter_tuning_job.py +0 -35
- airflow/providers/google/cloud/operators/vertex_ai/model_service.py +0 -41
- airflow/providers/google/cloud/sensors/bigquery.py +0 -24
- airflow/providers/google/cloud/sensors/cloud_composer.py +0 -10
- airflow/providers/google/cloud/sensors/dataflow.py +0 -42
- airflow/providers/google/cloud/sensors/dataform.py +0 -12
- airflow/providers/google/cloud/sensors/datafusion.py +0 -11
- airflow/providers/google/cloud/sensors/dataplex.py +0 -10
- airflow/providers/google/cloud/sensors/gcs.py +0 -44
- airflow/providers/google/cloud/sensors/pubsub.py +0 -11
- airflow/providers/google/cloud/transfers/adls_to_gcs.py +0 -12
- airflow/providers/google/cloud/transfers/azure_fileshare_to_gcs.py +0 -12
- airflow/providers/google/cloud/transfers/bigquery_to_bigquery.py +0 -10
- airflow/providers/google/cloud/transfers/bigquery_to_gcs.py +0 -11
- airflow/providers/google/cloud/transfers/bigquery_to_mssql.py +0 -11
- airflow/providers/google/cloud/transfers/bigquery_to_mysql.py +0 -11
- airflow/providers/google/cloud/transfers/calendar_to_gcs.py +0 -12
- airflow/providers/google/cloud/transfers/cassandra_to_gcs.py +0 -11
- airflow/providers/google/cloud/transfers/gcs_to_bigquery.py +0 -13
- airflow/providers/google/cloud/transfers/gcs_to_gcs.py +0 -11
- airflow/providers/google/cloud/transfers/gcs_to_local.py +0 -11
- airflow/providers/google/cloud/transfers/gcs_to_sftp.py +0 -11
- airflow/providers/google/cloud/transfers/gdrive_to_gcs.py +0 -12
- airflow/providers/google/cloud/transfers/gdrive_to_local.py +0 -11
- airflow/providers/google/cloud/transfers/local_to_gcs.py +0 -9
- airflow/providers/google/cloud/transfers/s3_to_gcs.py +0 -11
- airflow/providers/google/cloud/transfers/sftp_to_gcs.py +0 -11
- airflow/providers/google/cloud/transfers/sheets_to_gcs.py +0 -12
- airflow/providers/google/cloud/transfers/sql_to_gcs.py +0 -11
- airflow/providers/google/cloud/triggers/bigquery_dts.py +0 -12
- airflow/providers/google/cloud/triggers/cloud_build.py +0 -11
- airflow/providers/google/cloud/triggers/cloud_composer.py +0 -9
- airflow/providers/google/cloud/triggers/dataflow.py +0 -7
- airflow/providers/google/cloud/triggers/datafusion.py +0 -11
- airflow/providers/google/cloud/triggers/dataproc.py +2 -8
- airflow/providers/google/cloud/triggers/kubernetes_engine.py +0 -4
- airflow/providers/google/cloud/triggers/mlengine.py +0 -3
- airflow/providers/google/common/hooks/discovery_api.py +0 -7
- airflow/providers/google/firebase/hooks/firestore.py +0 -10
- airflow/providers/google/get_provider_info.py +1 -0
- airflow/providers/google/marketing_platform/example_dags/example_display_video.py +0 -64
- airflow/providers/google/marketing_platform/hooks/campaign_manager.py +3 -3
- airflow/providers/google/marketing_platform/hooks/display_video.py +7 -38
- airflow/providers/google/marketing_platform/operators/campaign_manager.py +22 -22
- airflow/providers/google/marketing_platform/operators/display_video.py +0 -284
- airflow/providers/google/marketing_platform/sensors/campaign_manager.py +3 -3
- airflow/providers/google/marketing_platform/sensors/display_video.py +0 -65
- airflow/providers/google/suite/transfers/gcs_to_gdrive.py +0 -4
- airflow/providers/google/suite/transfers/gcs_to_sheets.py +0 -4
- airflow/providers/google_vendor/googleads/interceptors/interceptor.py +1 -1
- {apache_airflow_providers_google-9.0.0rc1.dist-info → apache_airflow_providers_google-10.0.0rc1.dist-info}/METADATA +34 -4
- {apache_airflow_providers_google-9.0.0rc1.dist-info → apache_airflow_providers_google-10.0.0rc1.dist-info}/RECORD +123 -123
- {apache_airflow_providers_google-9.0.0rc1.dist-info → apache_airflow_providers_google-10.0.0rc1.dist-info}/LICENSE +0 -0
- {apache_airflow_providers_google-9.0.0rc1.dist-info → apache_airflow_providers_google-10.0.0rc1.dist-info}/NOTICE +0 -0
- {apache_airflow_providers_google-9.0.0rc1.dist-info → apache_airflow_providers_google-10.0.0rc1.dist-info}/WHEEL +0 -0
- {apache_airflow_providers_google-9.0.0rc1.dist-info → apache_airflow_providers_google-10.0.0rc1.dist-info}/entry_points.txt +0 -0
- {apache_airflow_providers_google-9.0.0rc1.dist-info → apache_airflow_providers_google-10.0.0rc1.dist-info}/top_level.txt +0 -0
@@ -36,9 +36,6 @@ class TemplateJobStartTrigger(BaseTrigger):
|
|
36
36
|
:param location: Optional. the location where job is executed. If set to None then
|
37
37
|
the value of DEFAULT_DATAFLOW_LOCATION will be used
|
38
38
|
:param gcp_conn_id: The connection ID to use connecting to Google Cloud.
|
39
|
-
:param delegate_to: The account to impersonate using domain-wide delegation of authority,
|
40
|
-
if any. For this to work, the service account making the request must have
|
41
|
-
domain-wide delegation enabled.
|
42
39
|
:param impersonation_chain: Optional. Service account to impersonate using short-term
|
43
40
|
credentials, or chained list of accounts required to get the access_token
|
44
41
|
of the last account in the list, which will be impersonated in the request.
|
@@ -57,7 +54,6 @@ class TemplateJobStartTrigger(BaseTrigger):
|
|
57
54
|
project_id: str | None,
|
58
55
|
location: str = DEFAULT_DATAFLOW_LOCATION,
|
59
56
|
gcp_conn_id: str = "google_cloud_default",
|
60
|
-
delegate_to: str | None = None,
|
61
57
|
poll_sleep: int = 10,
|
62
58
|
impersonation_chain: str | Sequence[str] | None = None,
|
63
59
|
cancel_timeout: int | None = 5 * 60,
|
@@ -68,7 +64,6 @@ class TemplateJobStartTrigger(BaseTrigger):
|
|
68
64
|
self.job_id = job_id
|
69
65
|
self.location = location
|
70
66
|
self.gcp_conn_id = gcp_conn_id
|
71
|
-
self.delegate_to = delegate_to
|
72
67
|
self.poll_sleep = poll_sleep
|
73
68
|
self.impersonation_chain = impersonation_chain
|
74
69
|
self.cancel_timeout = cancel_timeout
|
@@ -82,7 +77,6 @@ class TemplateJobStartTrigger(BaseTrigger):
|
|
82
77
|
"job_id": self.job_id,
|
83
78
|
"location": self.location,
|
84
79
|
"gcp_conn_id": self.gcp_conn_id,
|
85
|
-
"delegate_to": self.delegate_to,
|
86
80
|
"poll_sleep": self.poll_sleep,
|
87
81
|
"impersonation_chain": self.impersonation_chain,
|
88
82
|
"cancel_timeout": self.cancel_timeout,
|
@@ -143,7 +137,6 @@ class TemplateJobStartTrigger(BaseTrigger):
|
|
143
137
|
def _get_async_hook(self) -> AsyncDataflowHook:
|
144
138
|
return AsyncDataflowHook(
|
145
139
|
gcp_conn_id=self.gcp_conn_id,
|
146
|
-
delegate_to=self.delegate_to,
|
147
140
|
poll_sleep=self.poll_sleep,
|
148
141
|
impersonation_chain=self.impersonation_chain,
|
149
142
|
cancel_timeout=self.cancel_timeout,
|
@@ -17,7 +17,6 @@
|
|
17
17
|
from __future__ import annotations
|
18
18
|
|
19
19
|
import asyncio
|
20
|
-
import warnings
|
21
20
|
from typing import Any, AsyncIterator, Sequence
|
22
21
|
|
23
22
|
from airflow.providers.google.cloud.hooks.datafusion import DataFusionAsyncHook
|
@@ -36,9 +35,6 @@ class DataFusionStartPipelineTrigger(BaseTrigger):
|
|
36
35
|
can create a namespace.
|
37
36
|
:param gcp_conn_id: Reference to google cloud connection id
|
38
37
|
:param poll_interval: polling period in seconds to check for the status
|
39
|
-
:param delegate_to: The account to impersonate using domain-wide delegation of authority,
|
40
|
-
if any. For this to work, the service account making the request must have
|
41
|
-
domain-wide delegation enabled.
|
42
38
|
:param impersonation_chain: Optional service account to impersonate using short-term
|
43
39
|
credentials, or chained list of accounts required to get the access_token
|
44
40
|
of the last account in the list, which will be impersonated in the request.
|
@@ -58,7 +54,6 @@ class DataFusionStartPipelineTrigger(BaseTrigger):
|
|
58
54
|
poll_interval: float = 3.0,
|
59
55
|
gcp_conn_id: str = "google_cloud_default",
|
60
56
|
impersonation_chain: str | Sequence[str] | None = None,
|
61
|
-
delegate_to: str | None = None,
|
62
57
|
success_states: list[str] | None = None,
|
63
58
|
):
|
64
59
|
super().__init__()
|
@@ -69,11 +64,6 @@ class DataFusionStartPipelineTrigger(BaseTrigger):
|
|
69
64
|
self.poll_interval = poll_interval
|
70
65
|
self.gcp_conn_id = gcp_conn_id
|
71
66
|
self.impersonation_chain = impersonation_chain
|
72
|
-
if delegate_to:
|
73
|
-
warnings.warn(
|
74
|
-
"'delegate_to' parameter is deprecated, please use 'impersonation_chain'", DeprecationWarning
|
75
|
-
)
|
76
|
-
self.delegate_to = delegate_to
|
77
67
|
self.success_states = success_states
|
78
68
|
|
79
69
|
def serialize(self) -> tuple[str, dict[str, Any]]:
|
@@ -131,6 +121,5 @@ class DataFusionStartPipelineTrigger(BaseTrigger):
|
|
131
121
|
pipeline_name=self.pipeline_name,
|
132
122
|
pipeline_id=self.pipeline_id,
|
133
123
|
gcp_conn_id=self.gcp_conn_id,
|
134
|
-
delegate_to=self.delegate_to,
|
135
124
|
impersonation_chain=self.impersonation_chain,
|
136
125
|
)
|
@@ -38,7 +38,6 @@ class DataprocBaseTrigger(BaseTrigger):
|
|
38
38
|
region: str,
|
39
39
|
project_id: str | None = None,
|
40
40
|
gcp_conn_id: str = "google_cloud_default",
|
41
|
-
delegate_to: str | None = None,
|
42
41
|
impersonation_chain: str | Sequence[str] | None = None,
|
43
42
|
polling_interval_seconds: int = 30,
|
44
43
|
):
|
@@ -48,13 +47,11 @@ class DataprocBaseTrigger(BaseTrigger):
|
|
48
47
|
self.gcp_conn_id = gcp_conn_id
|
49
48
|
self.impersonation_chain = impersonation_chain
|
50
49
|
self.polling_interval_seconds = polling_interval_seconds
|
51
|
-
self.delegate_to = delegate_to
|
52
50
|
|
53
51
|
def get_async_hook(self):
|
54
52
|
return DataprocAsyncHook(
|
55
53
|
gcp_conn_id=self.gcp_conn_id,
|
56
54
|
impersonation_chain=self.impersonation_chain,
|
57
|
-
delegate_to=self.delegate_to,
|
58
55
|
)
|
59
56
|
|
60
57
|
|
@@ -77,10 +74,9 @@ class DataprocSubmitTrigger(DataprocBaseTrigger):
|
|
77
74
|
:param polling_interval_seconds: polling period in seconds to check for the status
|
78
75
|
"""
|
79
76
|
|
80
|
-
def __init__(self, job_id: str,
|
77
|
+
def __init__(self, job_id: str, **kwargs):
|
81
78
|
self.job_id = job_id
|
82
|
-
|
83
|
-
super().__init__(delegate_to=self.delegate_to, **kwargs)
|
79
|
+
super().__init__(**kwargs)
|
84
80
|
|
85
81
|
def serialize(self):
|
86
82
|
return (
|
@@ -90,7 +86,6 @@ class DataprocSubmitTrigger(DataprocBaseTrigger):
|
|
90
86
|
"project_id": self.project_id,
|
91
87
|
"region": self.region,
|
92
88
|
"gcp_conn_id": self.gcp_conn_id,
|
93
|
-
"delegate_to": self.delegate_to,
|
94
89
|
"impersonation_chain": self.impersonation_chain,
|
95
90
|
"polling_interval_seconds": self.polling_interval_seconds,
|
96
91
|
},
|
@@ -309,7 +304,6 @@ class DataprocWorkflowTrigger(DataprocBaseTrigger):
|
|
309
304
|
"project_id": self.project_id,
|
310
305
|
"region": self.region,
|
311
306
|
"gcp_conn_id": self.gcp_conn_id,
|
312
|
-
"delegate_to": self.delegate_to,
|
313
307
|
"impersonation_chain": self.impersonation_chain,
|
314
308
|
"polling_interval_seconds": self.polling_interval_seconds,
|
315
309
|
},
|
@@ -129,7 +129,6 @@ class GKEOperationTrigger(BaseTrigger):
|
|
129
129
|
project_id: str | None,
|
130
130
|
location: str,
|
131
131
|
gcp_conn_id: str = "google_cloud_default",
|
132
|
-
delegate_to: str | None = None,
|
133
132
|
impersonation_chain: str | Sequence[str] | None = None,
|
134
133
|
poll_interval: int = 10,
|
135
134
|
):
|
@@ -139,7 +138,6 @@ class GKEOperationTrigger(BaseTrigger):
|
|
139
138
|
self.project_id = project_id
|
140
139
|
self.location = location
|
141
140
|
self.gcp_conn_id = gcp_conn_id
|
142
|
-
self.delegate_to = delegate_to
|
143
141
|
self.impersonation_chain = impersonation_chain
|
144
142
|
self.poll_interval = poll_interval
|
145
143
|
|
@@ -154,7 +152,6 @@ class GKEOperationTrigger(BaseTrigger):
|
|
154
152
|
"project_id": self.project_id,
|
155
153
|
"location": self.location,
|
156
154
|
"gcp_conn_id": self.gcp_conn_id,
|
157
|
-
"delegate_to": self.delegate_to,
|
158
155
|
"impersonation_chain": self.impersonation_chain,
|
159
156
|
"poll_interval": self.poll_interval,
|
160
157
|
},
|
@@ -209,7 +206,6 @@ class GKEOperationTrigger(BaseTrigger):
|
|
209
206
|
self._hook = GKEAsyncHook(
|
210
207
|
gcp_conn_id=self.gcp_conn_id,
|
211
208
|
location=self.location,
|
212
|
-
delegate_to=self.delegate_to,
|
213
209
|
impersonation_chain=self.impersonation_chain,
|
214
210
|
)
|
215
211
|
return self._hook
|
@@ -49,7 +49,6 @@ class MLEngineStartTrainingJobTrigger(BaseTrigger):
|
|
49
49
|
labels: dict[str, str] | None = None,
|
50
50
|
gcp_conn_id: str = "google_cloud_default",
|
51
51
|
impersonation_chain: str | Sequence[str] | None = None,
|
52
|
-
delegate_to: str | None = None,
|
53
52
|
):
|
54
53
|
super().__init__()
|
55
54
|
self.log.info("Using the connection %s .", conn_id)
|
@@ -68,7 +67,6 @@ class MLEngineStartTrainingJobTrigger(BaseTrigger):
|
|
68
67
|
self.labels = labels
|
69
68
|
self.gcp_conn_id = gcp_conn_id
|
70
69
|
self.impersonation_chain = impersonation_chain
|
71
|
-
self.delegate_to = delegate_to
|
72
70
|
|
73
71
|
def serialize(self) -> tuple[str, dict[str, Any]]:
|
74
72
|
"""Serializes MLEngineStartTrainingJobTrigger arguments and classpath."""
|
@@ -119,6 +117,5 @@ class MLEngineStartTrainingJobTrigger(BaseTrigger):
|
|
119
117
|
def _get_async_hook(self) -> MLEngineAsyncHook:
|
120
118
|
return MLEngineAsyncHook(
|
121
119
|
gcp_conn_id=self.conn_id,
|
122
|
-
delegate_to=self.delegate_to,
|
123
120
|
impersonation_chain=self.impersonation_chain,
|
124
121
|
)
|
@@ -18,7 +18,6 @@
|
|
18
18
|
"""This module allows you to connect to the Google Discovery API Service and query it."""
|
19
19
|
from __future__ import annotations
|
20
20
|
|
21
|
-
import warnings
|
22
21
|
from typing import Sequence
|
23
22
|
|
24
23
|
from googleapiclient.discovery import Resource, build
|
@@ -54,16 +53,10 @@ class GoogleDiscoveryApiHook(GoogleBaseHook):
|
|
54
53
|
api_service_name: str,
|
55
54
|
api_version: str,
|
56
55
|
gcp_conn_id: str = "google_cloud_default",
|
57
|
-
delegate_to: str | None = None,
|
58
56
|
impersonation_chain: str | Sequence[str] | None = None,
|
59
57
|
) -> None:
|
60
|
-
if delegate_to:
|
61
|
-
warnings.warn(
|
62
|
-
"'delegate_to' parameter is deprecated, please use 'impersonation_chain'", DeprecationWarning
|
63
|
-
)
|
64
58
|
super().__init__(
|
65
59
|
gcp_conn_id=gcp_conn_id,
|
66
|
-
delegate_to=delegate_to,
|
67
60
|
impersonation_chain=impersonation_chain,
|
68
61
|
)
|
69
62
|
self.api_service_name = api_service_name
|
@@ -19,7 +19,6 @@
|
|
19
19
|
from __future__ import annotations
|
20
20
|
|
21
21
|
import time
|
22
|
-
import warnings
|
23
22
|
from typing import Sequence
|
24
23
|
|
25
24
|
from googleapiclient.discovery import build, build_from_document
|
@@ -40,9 +39,6 @@ class CloudFirestoreHook(GoogleBaseHook):
|
|
40
39
|
|
41
40
|
:param api_version: API version used (for example v1 or v1beta1).
|
42
41
|
:param gcp_conn_id: The connection ID to use when fetching connection info.
|
43
|
-
:param delegate_to: The account to impersonate using domain-wide delegation of authority,
|
44
|
-
if any. For this to work, the service account making the request must have
|
45
|
-
domain-wide delegation enabled.
|
46
42
|
:param impersonation_chain: Optional service account to impersonate using short-term
|
47
43
|
credentials, or chained list of accounts required to get the access_token
|
48
44
|
of the last account in the list, which will be impersonated in the request.
|
@@ -59,16 +55,10 @@ class CloudFirestoreHook(GoogleBaseHook):
|
|
59
55
|
self,
|
60
56
|
api_version: str = "v1",
|
61
57
|
gcp_conn_id: str = "google_cloud_default",
|
62
|
-
delegate_to: str | None = None,
|
63
58
|
impersonation_chain: str | Sequence[str] | None = None,
|
64
59
|
) -> None:
|
65
|
-
if delegate_to:
|
66
|
-
warnings.warn(
|
67
|
-
"'delegate_to' parameter is deprecated, please use 'impersonation_chain'", DeprecationWarning
|
68
|
-
)
|
69
60
|
super().__init__(
|
70
61
|
gcp_conn_id=gcp_conn_id,
|
71
|
-
delegate_to=delegate_to,
|
72
62
|
impersonation_chain=impersonation_chain,
|
73
63
|
)
|
74
64
|
self.api_version = api_version
|
@@ -29,6 +29,7 @@ def get_provider_info():
|
|
29
29
|
"description": "Google services including:\n\n - `Google Ads <https://ads.google.com/>`__\n - `Google Cloud (GCP) <https://cloud.google.com/>`__\n - `Google Firebase <https://firebase.google.com/>`__\n - `Google LevelDB <https://github.com/google/leveldb/>`__\n - `Google Marketing Platform <https://marketingplatform.google.com/>`__\n - `Google Workspace <https://workspace.google.com/>`__ (formerly Google Suite)\n",
|
30
30
|
"suspended": False,
|
31
31
|
"versions": [
|
32
|
+
"10.0.0",
|
32
33
|
"9.0.0",
|
33
34
|
"8.12.0",
|
34
35
|
"8.11.0",
|
@@ -30,20 +30,16 @@ from airflow.providers.google.cloud.transfers.gcs_to_bigquery import GCSToBigQue
|
|
30
30
|
from airflow.providers.google.marketing_platform.hooks.display_video import GoogleDisplayVideo360Hook
|
31
31
|
from airflow.providers.google.marketing_platform.operators.display_video import (
|
32
32
|
GoogleDisplayVideo360CreateQueryOperator,
|
33
|
-
GoogleDisplayVideo360CreateReportOperator,
|
34
33
|
GoogleDisplayVideo360CreateSDFDownloadTaskOperator,
|
35
34
|
GoogleDisplayVideo360DeleteReportOperator,
|
36
35
|
GoogleDisplayVideo360DownloadLineItemsOperator,
|
37
|
-
GoogleDisplayVideo360DownloadReportOperator,
|
38
36
|
GoogleDisplayVideo360DownloadReportV2Operator,
|
39
37
|
GoogleDisplayVideo360RunQueryOperator,
|
40
|
-
GoogleDisplayVideo360RunReportOperator,
|
41
38
|
GoogleDisplayVideo360SDFtoGCSOperator,
|
42
39
|
GoogleDisplayVideo360UploadLineItemsOperator,
|
43
40
|
)
|
44
41
|
from airflow.providers.google.marketing_platform.sensors.display_video import (
|
45
42
|
GoogleDisplayVideo360GetSDFDownloadOperationSensor,
|
46
|
-
GoogleDisplayVideo360ReportSensor,
|
47
43
|
GoogleDisplayVideo360RunQuerySensor,
|
48
44
|
)
|
49
45
|
|
@@ -60,24 +56,6 @@ GMP_PARTNER_ID = os.environ.get("GMP_PARTNER_ID", 123)
|
|
60
56
|
ENTITY_TYPE = os.environ.get("GMP_ENTITY_TYPE", "LineItem")
|
61
57
|
ERF_SOURCE_OBJECT = GoogleDisplayVideo360Hook.erf_uri(GMP_PARTNER_ID, ENTITY_TYPE)
|
62
58
|
|
63
|
-
REPORT = {
|
64
|
-
"kind": "doubleclickbidmanager#query",
|
65
|
-
"metadata": {
|
66
|
-
"title": "Polidea Test Report",
|
67
|
-
"dataRange": "LAST_7_DAYS",
|
68
|
-
"format": "CSV",
|
69
|
-
"sendNotification": False,
|
70
|
-
},
|
71
|
-
"params": {
|
72
|
-
"type": "TYPE_GENERAL",
|
73
|
-
"groupBys": ["FILTER_DATE", "FILTER_PARTNER"],
|
74
|
-
"filters": [{"type": "FILTER_PARTNER", "value": 1486931}],
|
75
|
-
"metrics": ["METRIC_IMPRESSIONS", "METRIC_CLICKS"],
|
76
|
-
"includeInviteData": True,
|
77
|
-
},
|
78
|
-
"schedule": {"frequency": "ONE_TIME"},
|
79
|
-
}
|
80
|
-
|
81
59
|
REPORT_V2 = {
|
82
60
|
"metadata": {
|
83
61
|
"title": "Airflow Test Report",
|
@@ -109,48 +87,6 @@ DOWNLOAD_LINE_ITEMS_REQUEST: dict = {"filterType": ADVERTISER_ID, "format": "CSV
|
|
109
87
|
|
110
88
|
START_DATE = datetime(2021, 1, 1)
|
111
89
|
|
112
|
-
with models.DAG(
|
113
|
-
"example_display_video",
|
114
|
-
start_date=START_DATE,
|
115
|
-
catchup=False,
|
116
|
-
) as dag1:
|
117
|
-
# [START howto_google_display_video_createquery_report_operator]
|
118
|
-
create_report = GoogleDisplayVideo360CreateReportOperator(body=REPORT, task_id="create_report")
|
119
|
-
report_id = cast(str, XComArg(create_report, key="report_id"))
|
120
|
-
# [END howto_google_display_video_createquery_report_operator]
|
121
|
-
|
122
|
-
# [START howto_google_display_video_runquery_report_operator]
|
123
|
-
run_report = GoogleDisplayVideo360RunReportOperator(
|
124
|
-
report_id=report_id, parameters=PARAMETERS, task_id="run_report"
|
125
|
-
)
|
126
|
-
# [END howto_google_display_video_runquery_report_operator]
|
127
|
-
|
128
|
-
# [START howto_google_display_video_wait_report_operator]
|
129
|
-
wait_for_report = GoogleDisplayVideo360ReportSensor(task_id="wait_for_report", report_id=report_id)
|
130
|
-
# [END howto_google_display_video_wait_report_operator]
|
131
|
-
|
132
|
-
# [START howto_google_display_video_getquery_report_operator]
|
133
|
-
get_report = GoogleDisplayVideo360DownloadReportOperator(
|
134
|
-
report_id=report_id,
|
135
|
-
task_id="get_report",
|
136
|
-
bucket_name=BUCKET,
|
137
|
-
report_name="test1.csv",
|
138
|
-
)
|
139
|
-
# [END howto_google_display_video_getquery_report_operator]
|
140
|
-
|
141
|
-
# [START howto_google_display_video_deletequery_report_operator]
|
142
|
-
delete_report = GoogleDisplayVideo360DeleteReportOperator(report_id=report_id, task_id="delete_report")
|
143
|
-
# [END howto_google_display_video_deletequery_report_operator]
|
144
|
-
|
145
|
-
run_report >> wait_for_report >> get_report >> delete_report
|
146
|
-
|
147
|
-
# Task dependencies created via `XComArgs`:
|
148
|
-
# create_report >> run_report
|
149
|
-
# create_report >> wait_for_report
|
150
|
-
# create_report >> get_report
|
151
|
-
# create_report >> delete_report
|
152
|
-
|
153
|
-
|
154
90
|
with models.DAG(
|
155
91
|
"example_display_video_misc",
|
156
92
|
start_date=START_DATE,
|
@@ -34,7 +34,7 @@ class GoogleCampaignManagerHook(GoogleBaseHook):
|
|
34
34
|
|
35
35
|
def __init__(
|
36
36
|
self,
|
37
|
-
api_version: str = "
|
37
|
+
api_version: str = "v4",
|
38
38
|
gcp_conn_id: str = "google_cloud_default",
|
39
39
|
delegate_to: str | None = None,
|
40
40
|
impersonation_chain: str | Sequence[str] | None = None,
|
@@ -236,7 +236,7 @@ class GoogleCampaignManagerHook(GoogleBaseHook):
|
|
236
236
|
|
237
237
|
:param profile_id: User profile ID associated with this request.
|
238
238
|
:param conversions: Conversations to insert, should by type of Conversation:
|
239
|
-
https://developers.google.com/doubleclick-advertisers/
|
239
|
+
https://developers.google.com/doubleclick-advertisers/rest/v4/conversions/batchinsert
|
240
240
|
:param encryption_entity_type: The encryption entity type. This should match the encryption
|
241
241
|
configuration for ad serving or Data Transfer.
|
242
242
|
:param encryption_entity_id: The encryption entity ID. This should match the encryption
|
@@ -280,7 +280,7 @@ class GoogleCampaignManagerHook(GoogleBaseHook):
|
|
280
280
|
|
281
281
|
:param profile_id: User profile ID associated with this request.
|
282
282
|
:param conversions: Conversations to update, should by type of Conversation:
|
283
|
-
https://developers.google.com/doubleclick-advertisers/
|
283
|
+
https://developers.google.com/doubleclick-advertisers/rest/v4/conversions/batchupdate
|
284
284
|
:param encryption_entity_type: The encryption entity type. This should match the encryption
|
285
285
|
configuration for ad serving or Data Transfer.
|
286
286
|
:param encryption_entity_id: The encryption entity ID. This should match the encryption
|
@@ -18,7 +18,6 @@
|
|
18
18
|
"""This module contains Google DisplayVideo hook."""
|
19
19
|
from __future__ import annotations
|
20
20
|
|
21
|
-
import warnings
|
22
21
|
from typing import Any, Sequence
|
23
22
|
|
24
23
|
from googleapiclient.discovery import Resource, build
|
@@ -43,11 +42,6 @@ class GoogleDisplayVideo360Hook(GoogleBaseHook):
|
|
43
42
|
delegate_to=delegate_to,
|
44
43
|
impersonation_chain=impersonation_chain,
|
45
44
|
)
|
46
|
-
if api_version in ["v1", "v1.1"]:
|
47
|
-
warnings.warn(
|
48
|
-
f"API {api_version} is deprecated and shortly will be removed please use v2",
|
49
|
-
DeprecationWarning,
|
50
|
-
)
|
51
45
|
self.api_version = api_version
|
52
46
|
|
53
47
|
def get_conn(self) -> Resource:
|
@@ -99,10 +93,7 @@ class GoogleDisplayVideo360Hook(GoogleBaseHook):
|
|
99
93
|
|
100
94
|
:param query: Query object to be passed to request body.
|
101
95
|
"""
|
102
|
-
|
103
|
-
response = self.get_conn().queries().createquery(body=query).execute(num_retries=self.num_retries)
|
104
|
-
else:
|
105
|
-
response = self.get_conn().queries().create(body=query).execute(num_retries=self.num_retries)
|
96
|
+
response = self.get_conn().queries().create(body=query).execute(num_retries=self.num_retries)
|
106
97
|
return response
|
107
98
|
|
108
99
|
def delete_query(self, query_id: str) -> None:
|
@@ -111,10 +102,7 @@ class GoogleDisplayVideo360Hook(GoogleBaseHook):
|
|
111
102
|
|
112
103
|
:param query_id: Query ID to delete.
|
113
104
|
"""
|
114
|
-
|
115
|
-
self.get_conn().queries().deletequery(queryId=query_id).execute(num_retries=self.num_retries)
|
116
|
-
else:
|
117
|
-
self.get_conn().queries().delete(queryId=query_id).execute(num_retries=self.num_retries)
|
105
|
+
self.get_conn().queries().delete(queryId=query_id).execute(num_retries=self.num_retries)
|
118
106
|
|
119
107
|
def get_query(self, query_id: str) -> dict:
|
120
108
|
"""
|
@@ -122,20 +110,12 @@ class GoogleDisplayVideo360Hook(GoogleBaseHook):
|
|
122
110
|
|
123
111
|
:param query_id: Query ID to retrieve.
|
124
112
|
"""
|
125
|
-
|
126
|
-
response = (
|
127
|
-
self.get_conn().queries().getquery(queryId=query_id).execute(num_retries=self.num_retries)
|
128
|
-
)
|
129
|
-
else:
|
130
|
-
response = self.get_conn().queries().get(queryId=query_id).execute(num_retries=self.num_retries)
|
113
|
+
response = self.get_conn().queries().get(queryId=query_id).execute(num_retries=self.num_retries)
|
131
114
|
return response
|
132
115
|
|
133
116
|
def list_queries(self) -> list[dict]:
|
134
117
|
"""Retrieves stored queries."""
|
135
|
-
|
136
|
-
response = self.get_conn().queries().listqueries().execute(num_retries=self.num_retries)
|
137
|
-
else:
|
138
|
-
response = self.get_conn().queries().list().execute(num_retries=self.num_retries)
|
118
|
+
response = self.get_conn().queries().list().execute(num_retries=self.num_retries)
|
139
119
|
return response.get("queries", [])
|
140
120
|
|
141
121
|
def run_query(self, query_id: str, params: dict[str, Any] | None) -> dict:
|
@@ -145,20 +125,9 @@ class GoogleDisplayVideo360Hook(GoogleBaseHook):
|
|
145
125
|
:param query_id: Query ID to run.
|
146
126
|
:param params: Parameters for the report.
|
147
127
|
"""
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
.queries()
|
152
|
-
.runquery(queryId=query_id, body=params)
|
153
|
-
.execute(num_retries=self.num_retries)
|
154
|
-
)
|
155
|
-
else:
|
156
|
-
return (
|
157
|
-
self.get_conn()
|
158
|
-
.queries()
|
159
|
-
.run(queryId=query_id, body=params)
|
160
|
-
.execute(num_retries=self.num_retries)
|
161
|
-
)
|
128
|
+
return (
|
129
|
+
self.get_conn().queries().run(queryId=query_id, body=params).execute(num_retries=self.num_retries)
|
130
|
+
)
|
162
131
|
|
163
132
|
def get_report(self, query_id: str, report_id: str) -> dict:
|
164
133
|
"""
|
@@ -40,7 +40,7 @@ class GoogleCampaignManagerDeleteReportOperator(BaseOperator):
|
|
40
40
|
|
41
41
|
.. seealso::
|
42
42
|
Check official API docs:
|
43
|
-
https://developers.google.com/doubleclick-advertisers/
|
43
|
+
`https://developers.google.com/doubleclick-advertisers/rest/v4/reports/delete`
|
44
44
|
|
45
45
|
.. seealso::
|
46
46
|
For more information on how to use this operator, take a look at the guide:
|
@@ -49,7 +49,7 @@ class GoogleCampaignManagerDeleteReportOperator(BaseOperator):
|
|
49
49
|
:param profile_id: The DFA user profile ID.
|
50
50
|
:param report_name: The name of the report to delete.
|
51
51
|
:param report_id: The ID of the report.
|
52
|
-
:param api_version: The version of the api that will be requested for example '
|
52
|
+
:param api_version: The version of the api that will be requested, for example 'v4'.
|
53
53
|
:param gcp_conn_id: The connection ID to use when fetching connection info.
|
54
54
|
:param delegate_to: The account to impersonate using domain-wide delegation of authority,
|
55
55
|
if any. For this to work, the service account making the request must have
|
@@ -80,7 +80,7 @@ class GoogleCampaignManagerDeleteReportOperator(BaseOperator):
|
|
80
80
|
profile_id: str,
|
81
81
|
report_name: str | None = None,
|
82
82
|
report_id: str | None = None,
|
83
|
-
api_version: str = "
|
83
|
+
api_version: str = "v4",
|
84
84
|
gcp_conn_id: str = "google_cloud_default",
|
85
85
|
delegate_to: str | None = None,
|
86
86
|
impersonation_chain: str | Sequence[str] | None = None,
|
@@ -127,7 +127,7 @@ class GoogleCampaignManagerDownloadReportOperator(BaseOperator):
|
|
127
127
|
|
128
128
|
.. seealso::
|
129
129
|
Check official API docs:
|
130
|
-
https://developers.google.com/doubleclick-advertisers/
|
130
|
+
`https://developers.google.com/doubleclick-advertisers/rest/v4/reports/get`
|
131
131
|
|
132
132
|
.. seealso::
|
133
133
|
For more information on how to use this operator, take a look at the guide:
|
@@ -140,7 +140,7 @@ class GoogleCampaignManagerDownloadReportOperator(BaseOperator):
|
|
140
140
|
:param report_name: The report name to set when uploading the local file.
|
141
141
|
:param gzip: Option to compress local file or file data for upload
|
142
142
|
:param chunk_size: File will be downloaded in chunks of this many bytes.
|
143
|
-
:param api_version: The version of the api that will be requested for example '
|
143
|
+
:param api_version: The version of the api that will be requested, for example 'v4'.
|
144
144
|
:param gcp_conn_id: The connection ID to use when fetching connection info.
|
145
145
|
:param delegate_to: The account to impersonate using domain-wide delegation of authority,
|
146
146
|
if any. For this to work, the service account making the request must have
|
@@ -178,7 +178,7 @@ class GoogleCampaignManagerDownloadReportOperator(BaseOperator):
|
|
178
178
|
report_name: str | None = None,
|
179
179
|
gzip: bool = True,
|
180
180
|
chunk_size: int = 10 * 1024 * 1024,
|
181
|
-
api_version: str = "
|
181
|
+
api_version: str = "v4",
|
182
182
|
gcp_conn_id: str = "google_cloud_default",
|
183
183
|
delegate_to: str | None = None,
|
184
184
|
impersonation_chain: str | Sequence[str] | None = None,
|
@@ -259,7 +259,7 @@ class GoogleCampaignManagerInsertReportOperator(BaseOperator):
|
|
259
259
|
|
260
260
|
.. seealso::
|
261
261
|
Check official API docs:
|
262
|
-
https://developers.google.com/doubleclick-advertisers/
|
262
|
+
`https://developers.google.com/doubleclick-advertisers/rest/v4/reports/insert`
|
263
263
|
|
264
264
|
.. seealso::
|
265
265
|
For more information on how to use this operator, take a look at the guide:
|
@@ -267,7 +267,7 @@ class GoogleCampaignManagerInsertReportOperator(BaseOperator):
|
|
267
267
|
|
268
268
|
:param profile_id: The DFA user profile ID.
|
269
269
|
:param report: Report to be created.
|
270
|
-
:param api_version: The version of the api that will be requested for example '
|
270
|
+
:param api_version: The version of the api that will be requested, for example 'v4'.
|
271
271
|
:param gcp_conn_id: The connection ID to use when fetching connection info.
|
272
272
|
:param delegate_to: The account to impersonate using domain-wide delegation of authority,
|
273
273
|
if any. For this to work, the service account making the request must have
|
@@ -298,7 +298,7 @@ class GoogleCampaignManagerInsertReportOperator(BaseOperator):
|
|
298
298
|
*,
|
299
299
|
profile_id: str,
|
300
300
|
report: dict[str, Any],
|
301
|
-
api_version: str = "
|
301
|
+
api_version: str = "v4",
|
302
302
|
gcp_conn_id: str = "google_cloud_default",
|
303
303
|
delegate_to: str | None = None,
|
304
304
|
impersonation_chain: str | Sequence[str] | None = None,
|
@@ -339,7 +339,7 @@ class GoogleCampaignManagerRunReportOperator(BaseOperator):
|
|
339
339
|
|
340
340
|
.. seealso::
|
341
341
|
Check official API docs:
|
342
|
-
https://developers.google.com/doubleclick-advertisers/
|
342
|
+
`https://developers.google.com/doubleclick-advertisers/rest/v4/reports/run`
|
343
343
|
|
344
344
|
.. seealso::
|
345
345
|
For more information on how to use this operator, take a look at the guide:
|
@@ -348,7 +348,7 @@ class GoogleCampaignManagerRunReportOperator(BaseOperator):
|
|
348
348
|
:param profile_id: The DFA profile ID.
|
349
349
|
:param report_id: The ID of the report.
|
350
350
|
:param synchronous: If set and true, tries to run the report synchronously.
|
351
|
-
:param api_version: The version of the api that will be requested for example '
|
351
|
+
:param api_version: The version of the api that will be requested, for example 'v4'.
|
352
352
|
:param gcp_conn_id: The connection ID to use when fetching connection info.
|
353
353
|
:param delegate_to: The account to impersonate using domain-wide delegation of authority,
|
354
354
|
if any. For this to work, the service account making the request must have
|
@@ -379,7 +379,7 @@ class GoogleCampaignManagerRunReportOperator(BaseOperator):
|
|
379
379
|
profile_id: str,
|
380
380
|
report_id: str,
|
381
381
|
synchronous: bool = False,
|
382
|
-
api_version: str = "
|
382
|
+
api_version: str = "v4",
|
383
383
|
gcp_conn_id: str = "google_cloud_default",
|
384
384
|
delegate_to: str | None = None,
|
385
385
|
impersonation_chain: str | Sequence[str] | None = None,
|
@@ -419,15 +419,15 @@ class GoogleCampaignManagerBatchInsertConversionsOperator(BaseOperator):
|
|
419
419
|
|
420
420
|
.. seealso::
|
421
421
|
Check official API docs:
|
422
|
-
https://developers.google.com/doubleclick-advertisers/
|
422
|
+
`https://developers.google.com/doubleclick-advertisers/rest/v4/conversions/batchinsert`
|
423
423
|
|
424
424
|
.. seealso::
|
425
425
|
For more information on how to use this operator, take a look at the guide:
|
426
426
|
:ref:`howto/operator:GoogleCampaignManagerBatchInsertConversionsOperator`
|
427
427
|
|
428
428
|
:param profile_id: User profile ID associated with this request.
|
429
|
-
:param conversions:
|
430
|
-
https://developers.google.com/doubleclick-advertisers/
|
429
|
+
:param conversions: Conversions to insert, should be type of Conversion:
|
430
|
+
https://developers.google.com/doubleclick-advertisers/rest/v4/conversions
|
431
431
|
:param encryption_entity_type: The encryption entity type. This should match the encryption
|
432
432
|
configuration for ad serving or Data Transfer.
|
433
433
|
:param encryption_entity_id: The encryption entity ID. This should match the encryption
|
@@ -435,7 +435,7 @@ class GoogleCampaignManagerBatchInsertConversionsOperator(BaseOperator):
|
|
435
435
|
:param encryption_source: Describes whether the encrypted cookie was received from ad serving
|
436
436
|
(the %m macro) or from Data Transfer.
|
437
437
|
:param max_failed_inserts: The maximum number of conversions that failed to be inserted
|
438
|
-
:param api_version: The version of the api that will be requested for example '
|
438
|
+
:param api_version: The version of the api that will be requested, for example 'v4'.
|
439
439
|
:param gcp_conn_id: The connection ID to use when fetching connection info.
|
440
440
|
:param delegate_to: The account to impersonate using domain-wide delegation of authority,
|
441
441
|
if any. For this to work, the service account making the request must have
|
@@ -468,7 +468,7 @@ class GoogleCampaignManagerBatchInsertConversionsOperator(BaseOperator):
|
|
468
468
|
encryption_entity_id: int,
|
469
469
|
encryption_source: str,
|
470
470
|
max_failed_inserts: int = 0,
|
471
|
-
api_version: str = "
|
471
|
+
api_version: str = "v4",
|
472
472
|
gcp_conn_id: str = "google_cloud_default",
|
473
473
|
delegate_to: str | None = None,
|
474
474
|
impersonation_chain: str | Sequence[str] | None = None,
|
@@ -510,15 +510,15 @@ class GoogleCampaignManagerBatchUpdateConversionsOperator(BaseOperator):
|
|
510
510
|
|
511
511
|
.. seealso::
|
512
512
|
Check official API docs:
|
513
|
-
https://developers.google.com/doubleclick-advertisers/
|
513
|
+
`https://developers.google.com/doubleclick-advertisers/rest/v4/conversions/batchupdate`
|
514
514
|
|
515
515
|
.. seealso::
|
516
516
|
For more information on how to use this operator, take a look at the guide:
|
517
517
|
:ref:`howto/operator:GoogleCampaignManagerBatchUpdateConversionsOperator`
|
518
518
|
|
519
519
|
:param profile_id: User profile ID associated with this request.
|
520
|
-
:param conversions: Conversations to update, should
|
521
|
-
https://developers.google.com/doubleclick-advertisers/
|
520
|
+
:param conversions: Conversations to update, should be type of Conversion:
|
521
|
+
https://developers.google.com/doubleclick-advertisers/rest/v4/conversions
|
522
522
|
:param encryption_entity_type: The encryption entity type. This should match the encryption
|
523
523
|
configuration for ad serving or Data Transfer.
|
524
524
|
:param encryption_entity_id: The encryption entity ID. This should match the encryption
|
@@ -526,7 +526,7 @@ class GoogleCampaignManagerBatchUpdateConversionsOperator(BaseOperator):
|
|
526
526
|
:param encryption_source: Describes whether the encrypted cookie was received from ad serving
|
527
527
|
(the %m macro) or from Data Transfer.
|
528
528
|
:param max_failed_updates: The maximum number of conversions that failed to be updated
|
529
|
-
:param api_version: The version of the api that will be requested for example '
|
529
|
+
:param api_version: The version of the api that will be requested, for example 'v4'.
|
530
530
|
:param gcp_conn_id: The connection ID to use when fetching connection info.
|
531
531
|
:param delegate_to: The account to impersonate using domain-wide delegation of authority,
|
532
532
|
if any. For this to work, the service account making the request must have
|
@@ -559,7 +559,7 @@ class GoogleCampaignManagerBatchUpdateConversionsOperator(BaseOperator):
|
|
559
559
|
encryption_entity_id: int,
|
560
560
|
encryption_source: str,
|
561
561
|
max_failed_updates: int = 0,
|
562
|
-
api_version: str = "
|
562
|
+
api_version: str = "v4",
|
563
563
|
gcp_conn_id: str = "google_cloud_default",
|
564
564
|
delegate_to: str | None = None,
|
565
565
|
impersonation_chain: str | Sequence[str] | None = None,
|