airbyte-source-google-ads 4.1.4.dev202512101647__tar.gz → 4.1.4.dev202602051752__tar.gz
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.
- {airbyte_source_google_ads-4.1.4.dev202512101647 → airbyte_source_google_ads-4.1.4.dev202602051752}/PKG-INFO +1 -1
- {airbyte_source_google_ads-4.1.4.dev202512101647 → airbyte_source_google_ads-4.1.4.dev202602051752}/pyproject.toml +1 -1
- {airbyte_source_google_ads-4.1.4.dev202512101647 → airbyte_source_google_ads-4.1.4.dev202602051752}/source_google_ads/components.py +1 -0
- {airbyte_source_google_ads-4.1.4.dev202512101647 → airbyte_source_google_ads-4.1.4.dev202602051752}/source_google_ads/manifest.yaml +8 -40
- {airbyte_source_google_ads-4.1.4.dev202512101647 → airbyte_source_google_ads-4.1.4.dev202602051752}/source_google_ads/spec.json +10 -0
- {airbyte_source_google_ads-4.1.4.dev202512101647 → airbyte_source_google_ads-4.1.4.dev202602051752}/README.md +0 -0
- {airbyte_source_google_ads-4.1.4.dev202512101647 → airbyte_source_google_ads-4.1.4.dev202602051752}/source_google_ads/__init__.py +0 -0
- {airbyte_source_google_ads-4.1.4.dev202512101647 → airbyte_source_google_ads-4.1.4.dev202602051752}/source_google_ads/config_migrations.py +0 -0
- {airbyte_source_google_ads-4.1.4.dev202512101647 → airbyte_source_google_ads-4.1.4.dev202602051752}/source_google_ads/google_ads.py +0 -0
- {airbyte_source_google_ads-4.1.4.dev202512101647 → airbyte_source_google_ads-4.1.4.dev202602051752}/source_google_ads/models.py +0 -0
- {airbyte_source_google_ads-4.1.4.dev202512101647 → airbyte_source_google_ads-4.1.4.dev202602051752}/source_google_ads/run.py +0 -0
- {airbyte_source_google_ads-4.1.4.dev202512101647 → airbyte_source_google_ads-4.1.4.dev202602051752}/source_google_ads/schemas/customer_client.json +0 -0
- {airbyte_source_google_ads-4.1.4.dev202512101647 → airbyte_source_google_ads-4.1.4.dev202602051752}/source_google_ads/schemas/service_accounts.json +0 -0
- {airbyte_source_google_ads-4.1.4.dev202512101647 → airbyte_source_google_ads-4.1.4.dev202602051752}/source_google_ads/source.py +0 -0
- {airbyte_source_google_ads-4.1.4.dev202512101647 → airbyte_source_google_ads-4.1.4.dev202602051752}/source_google_ads/streams.py +0 -0
- {airbyte_source_google_ads-4.1.4.dev202512101647 → airbyte_source_google_ads-4.1.4.dev202602051752}/source_google_ads/utils.py +0 -0
|
@@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",]
|
|
|
3
3
|
build-backend = "poetry.core.masonry.api"
|
|
4
4
|
|
|
5
5
|
[tool.poetry]
|
|
6
|
-
version = "4.1.4.dev.
|
|
6
|
+
version = "4.1.4.dev.202602051752"
|
|
7
7
|
name = "airbyte-source-google-ads"
|
|
8
8
|
description = "Source implementation for Google Ads."
|
|
9
9
|
authors = [ "Airbyte <contact@airbyte.io>",]
|
|
@@ -697,6 +697,7 @@ class CustomGAQueryHttpRequester(HttpRequester):
|
|
|
697
697
|
def __post_init__(self, parameters: Mapping[str, Any]):
|
|
698
698
|
super().__post_init__(parameters=parameters)
|
|
699
699
|
self.query = GAQL.parse(parameters.get("query"))
|
|
700
|
+
self.stream_response = True
|
|
700
701
|
|
|
701
702
|
@staticmethod
|
|
702
703
|
def is_metrics_in_custom_query(query: GAQL) -> bool:
|
|
@@ -65,27 +65,15 @@ definitions:
|
|
|
65
65
|
field_path:
|
|
66
66
|
- results
|
|
67
67
|
|
|
68
|
-
cursor_paginator:
|
|
69
|
-
type: DefaultPaginator
|
|
70
|
-
pagination_strategy:
|
|
71
|
-
type: CursorPagination
|
|
72
|
-
cursor_value: "{{ response.get('nextPageToken', '') }}"
|
|
73
|
-
stop_condition: "{{ response.get('nextPageToken', '') is none }}"
|
|
74
|
-
page_token_option:
|
|
75
|
-
type: RequestOption
|
|
76
|
-
inject_into: body_json
|
|
77
|
-
field_path: ["page_token"]
|
|
78
|
-
|
|
79
68
|
base_retriever:
|
|
80
69
|
type: SimpleRetriever
|
|
81
70
|
requester:
|
|
82
71
|
$ref: "#/definitions/stream_requester"
|
|
83
72
|
record_selector:
|
|
84
73
|
$ref: "#/definitions/base_selector"
|
|
85
|
-
paginator:
|
|
86
|
-
$ref: "#/definitions/cursor_paginator"
|
|
87
74
|
decoder:
|
|
88
|
-
type:
|
|
75
|
+
type: CustomDecoder
|
|
76
|
+
class_name: "source_google_ads.components.GoogleAdsStreamingDecoder"
|
|
89
77
|
|
|
90
78
|
stream_base:
|
|
91
79
|
type: DeclarativeStream
|
|
@@ -158,7 +146,7 @@ definitions:
|
|
|
158
146
|
datetime_format: "%Y-%m-%d"
|
|
159
147
|
lookback_window: P{{ config.get('conversion_window_days', 14) }}D
|
|
160
148
|
cursor_granularity: P1D
|
|
161
|
-
step:
|
|
149
|
+
step: P{{ config.get('step_days', 14) }}D
|
|
162
150
|
start_datetime:
|
|
163
151
|
type: MinMaxDatetime
|
|
164
152
|
datetime: "{{ config.get('start_date', day_delta(-365 * 2, format='%Y-%m-%d')) }}"
|
|
@@ -199,7 +187,7 @@ definitions:
|
|
|
199
187
|
$ref: "#/schemas"
|
|
200
188
|
authenticator:
|
|
201
189
|
$ref: "#/definitions/authenticator"
|
|
202
|
-
url_base: "https://googleads.googleapis.com/v20/{{ stream_partition['customer_id'] }}/googleAds:
|
|
190
|
+
url_base: "https://googleads.googleapis.com/v20/{{ stream_partition['customer_id'] }}/googleAds:searchStream"
|
|
203
191
|
http_method: POST
|
|
204
192
|
error_handler:
|
|
205
193
|
$ref: "#/definitions/base_error_handler"
|
|
@@ -224,7 +212,7 @@ definitions:
|
|
|
224
212
|
incremental_stream:
|
|
225
213
|
$ref: "#/definitions/incremental_stream_base"
|
|
226
214
|
$parameters:
|
|
227
|
-
url_base: "https://googleads.googleapis.com/v20/{{ stream_partition['parent_slice']['customer_id'] }}/googleAds:
|
|
215
|
+
url_base: "https://googleads.googleapis.com/v20/{{ stream_partition['parent_slice']['customer_id'] }}/googleAds:searchStream"
|
|
228
216
|
retriever:
|
|
229
217
|
type: CustomRetriever
|
|
230
218
|
class_name: "source_google_ads.components.CriterionRetriever"
|
|
@@ -240,8 +228,6 @@ definitions:
|
|
|
240
228
|
http_method: POST
|
|
241
229
|
error_handler:
|
|
242
230
|
$ref: "#/definitions/base_error_handler"
|
|
243
|
-
paginator:
|
|
244
|
-
$ref: "#/definitions/cursor_paginator"
|
|
245
231
|
record_selector:
|
|
246
232
|
type: RecordSelector
|
|
247
233
|
extractor:
|
|
@@ -297,8 +283,6 @@ definitions:
|
|
|
297
283
|
$ref: "#/definitions/base_requester"
|
|
298
284
|
url_base: "https://googleads.googleapis.com/v20/customers:listAccessibleCustomers"
|
|
299
285
|
http_method: GET
|
|
300
|
-
paginator:
|
|
301
|
-
type: NoPagination
|
|
302
286
|
record_selector:
|
|
303
287
|
extractor:
|
|
304
288
|
type: CustomRecordExtractor
|
|
@@ -422,11 +406,6 @@ definitions:
|
|
|
422
406
|
parent_key: "clientCustomer"
|
|
423
407
|
partition_field: "customer_id"
|
|
424
408
|
stream: "#/definitions/customer_client"
|
|
425
|
-
decoder:
|
|
426
|
-
type: CustomDecoder
|
|
427
|
-
class_name: "source_google_ads.components.GoogleAdsStreamingDecoder"
|
|
428
|
-
paginator:
|
|
429
|
-
type: NoPagination
|
|
430
409
|
transformations:
|
|
431
410
|
- type: CustomTransformation
|
|
432
411
|
class_name: "source_google_ads.components.KeysToSnakeCaseGoogleAdsTransformation"
|
|
@@ -487,13 +466,6 @@ definitions:
|
|
|
487
466
|
|
|
488
467
|
ad_group_ad_stream:
|
|
489
468
|
$ref: "#/definitions/incremental_stream_base"
|
|
490
|
-
retriever:
|
|
491
|
-
$ref: "#/definitions/incremental_stream_base/retriever"
|
|
492
|
-
paginator:
|
|
493
|
-
type: NoPagination
|
|
494
|
-
decoder:
|
|
495
|
-
type: CustomDecoder
|
|
496
|
-
class_name: "source_google_ads.components.GoogleAdsStreamingDecoder"
|
|
497
469
|
name: ad_group_ad
|
|
498
470
|
primary_key:
|
|
499
471
|
- ad_group.id
|
|
@@ -665,12 +637,10 @@ definitions:
|
|
|
665
637
|
$ref: "#/schemas/click_view"
|
|
666
638
|
authenticator:
|
|
667
639
|
$ref: "#/definitions/authenticator"
|
|
668
|
-
url_base: "https://googleads.googleapis.com/v20/{{ stream_partition['customer_id'] }}/googleAds:
|
|
640
|
+
url_base: "https://googleads.googleapis.com/v20/{{ stream_partition['customer_id'] }}/googleAds:searchStream"
|
|
669
641
|
http_method: POST
|
|
670
642
|
error_handler:
|
|
671
643
|
$ref: "#/definitions/base_error_handler"
|
|
672
|
-
paginator:
|
|
673
|
-
$ref: "#/definitions/cursor_paginator"
|
|
674
644
|
incremental_sync:
|
|
675
645
|
type: DatetimeBasedCursor
|
|
676
646
|
cursor_field: segments.date
|
|
@@ -859,8 +829,6 @@ definitions:
|
|
|
859
829
|
error_handler:
|
|
860
830
|
$ref: "#/definitions/base_error_handler"
|
|
861
831
|
name: change_status
|
|
862
|
-
paginator:
|
|
863
|
-
$ref: "#/definitions/cursor_paginator"
|
|
864
832
|
pagination_reset:
|
|
865
833
|
type: PaginationReset
|
|
866
834
|
action: SPLIT_USING_CURSOR
|
|
@@ -896,7 +864,7 @@ definitions:
|
|
|
896
864
|
cursor_field: change_status.last_change_date_time
|
|
897
865
|
datetime_format: "%Y-%m-%d %H:%M:%S.%f"
|
|
898
866
|
cursor_granularity: PT0.000001S
|
|
899
|
-
step:
|
|
867
|
+
step: P{{ config.get('step_days', 14) }}D
|
|
900
868
|
start_datetime:
|
|
901
869
|
type: MinMaxDatetime
|
|
902
870
|
datetime: "{{ day_delta(-90, format='%Y-%m-%d %H:%M:%S.%f') }}"
|
|
@@ -1004,7 +972,7 @@ definitions:
|
|
|
1004
972
|
"datetime_format": "%Y-%m-%d",
|
|
1005
973
|
"lookback_window": "P{{ config.get('conversion_window_days', 14) }}D",
|
|
1006
974
|
"cursor_granularity": "P1D",
|
|
1007
|
-
"step": "
|
|
975
|
+
"step": "P{{ config.get('step_days', 14) }}D",
|
|
1008
976
|
"start_datetime": {
|
|
1009
977
|
"type": "MinMaxDatetime",
|
|
1010
978
|
"datetime": "{{ config.get('start_date', day_delta(-365 * 2, format='%Y-%m-%d')) }}",
|
|
@@ -131,6 +131,16 @@
|
|
|
131
131
|
"default": 14,
|
|
132
132
|
"examples": [14],
|
|
133
133
|
"order": 6
|
|
134
|
+
},
|
|
135
|
+
"step_days": {
|
|
136
|
+
"title": "Step (Days)",
|
|
137
|
+
"type": "integer",
|
|
138
|
+
"description": "The number of days per request slice for incremental streams. Smaller values reduce the amount of data per request, which can help avoid timeouts and connection errors for accounts with large data volumes. Default is 14 days.",
|
|
139
|
+
"minimum": 1,
|
|
140
|
+
"maximum": 30,
|
|
141
|
+
"default": 14,
|
|
142
|
+
"examples": [1, 7, 14],
|
|
143
|
+
"order": 7
|
|
134
144
|
}
|
|
135
145
|
}
|
|
136
146
|
},
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|