diff --git a/airbyte-integrations/connectors/source-tiktok-marketing/acceptance-test-config.yml b/airbyte-integrations/connectors/source-tiktok-marketing/acceptance-test-config.yml index 910aa6d1cdcfd..6542c741d0a2f 100644 --- a/airbyte-integrations/connectors/source-tiktok-marketing/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-tiktok-marketing/acceptance-test-config.yml @@ -60,6 +60,14 @@ acceptance_tests: bypass_reason: "No data in the integration test account. We should seed the sandbox later on." - name: pixel_events_statistics bypass_reason: "No data in the integration test account. We should seed the sandbox later on." + - name: ads_reports_by_country_daily + bypass_reason: "No data in the integration test account. We should seed the sandbox later on." + - name: ad_groups_reports_by_country_daily + bypass_reason: "No data in the integration test account. We should seed the sandbox later on." + - name: ads_reports_by_country_hourly + bypass_reason: "No data in the integration test account. We should seed the sandbox later on." + - name: ad_groups_reports_by_country_hourly + bypass_reason: "No data in the integration test account. We should seed the sandbox later on." full_refresh: tests: - config_path: "secrets/config.json" diff --git a/airbyte-integrations/connectors/source-tiktok-marketing/integration_tests/configured_catalog.json b/airbyte-integrations/connectors/source-tiktok-marketing/integration_tests/configured_catalog.json index f74f13301e3cf..7e3bef170ec16 100644 --- a/airbyte-integrations/connectors/source-tiktok-marketing/integration_tests/configured_catalog.json +++ b/airbyte-integrations/connectors/source-tiktok-marketing/integration_tests/configured_catalog.json @@ -434,6 +434,42 @@ "sync_mode": "full_refresh", "destination_sync_mode": "overwrite", "primary_key": [] + }, + { + "stream": { + "name": "ads_reports_by_country_daily", + "json_schema": {}, + "supported_sync_modes": ["full_refresh", "incremental"], + "source_defined_cursor": true, + "default_cursor_field": ["stat_time_day"], + "source_defined_primary_key": [ + ["ad_id"], + ["stat_time_day"], + ["country_code"] + ] + }, + "sync_mode": "incremental", + "destination_sync_mode": "overwrite", + "cursor_field": ["stat_time_day"], + "primary_key": [["ad_id"], ["stat_time_day"], ["country_code"]] + }, + { + "stream": { + "name": "ad_groups_reports_by_country_daily", + "json_schema": {}, + "supported_sync_modes": ["full_refresh", "incremental"], + "source_defined_cursor": true, + "default_cursor_field": ["stat_time_day"], + "source_defined_primary_key": [ + ["adgroup_id"], + ["stat_time_day"], + ["country_code"] + ] + }, + "sync_mode": "incremental", + "destination_sync_mode": "overwrite", + "cursor_field": ["stat_time_day"], + "primary_key": [["adgroup_id"], ["stat_time_day"], ["country_code"]] } ] } diff --git a/airbyte-integrations/connectors/source-tiktok-marketing/metadata.yaml b/airbyte-integrations/connectors/source-tiktok-marketing/metadata.yaml index bec612dc8a603..b0cd2a9ac894d 100644 --- a/airbyte-integrations/connectors/source-tiktok-marketing/metadata.yaml +++ b/airbyte-integrations/connectors/source-tiktok-marketing/metadata.yaml @@ -11,7 +11,7 @@ data: connectorSubtype: api connectorType: source definitionId: 4bfac00d-ce15-44ff-95b9-9e3c3e8fbd35 - dockerImageTag: 4.6.0 + dockerImageTag: 4.7.0 dockerRepository: airbyte/source-tiktok-marketing documentationUrl: https://docs.airbyte.com/integrations/sources/tiktok-marketing githubIssueLabel: source-tiktok-marketing @@ -57,6 +57,8 @@ data: - "ads_audience_reports_daily" - "ads_reports_daily" - "ads_reports_hourly" + - "ads_reports_by_country_daily" + - "ads_reports_by_country_hourly" - "advertisers_audience_reports_by_country_daily" - "advertisers_audience_reports_by_platform_daily" - "advertisers_audience_reports_daily" diff --git a/airbyte-integrations/connectors/source-tiktok-marketing/pyproject.toml b/airbyte-integrations/connectors/source-tiktok-marketing/pyproject.toml index be92c14e3a9d5..c7d4daefa30f8 100644 --- a/airbyte-integrations/connectors/source-tiktok-marketing/pyproject.toml +++ b/airbyte-integrations/connectors/source-tiktok-marketing/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "4.6.0" +version = "4.7.0" name = "source-tiktok-marketing" description = "Source implementation for Tiktok Marketing." authors = [ "Airbyte ",] diff --git a/airbyte-integrations/connectors/source-tiktok-marketing/source_tiktok_marketing/manifest.yaml b/airbyte-integrations/connectors/source-tiktok-marketing/source_tiktok_marketing/manifest.yaml index 3c0a30fcb8c4b..b66af99e1e5db 100644 --- a/airbyte-integrations/connectors/source-tiktok-marketing/source_tiktok_marketing/manifest.yaml +++ b/airbyte-integrations/connectors/source-tiktok-marketing/source_tiktok_marketing/manifest.yaml @@ -586,6 +586,80 @@ definitions: - type: CustomTransformation class_name: "source_tiktok_marketing.components.transformations.TransformEmptyMetrics" + ads_reports_by_country_daily_stream: + type: DeclarativeStream + name: ads_reports_by_country_daily + $parameters: + path: "report/integrated/get/" + data_level: "AUCTION_AD" + filtering: + [ + { + "field_name": "ad_status", + "filter_type": "IN", + "filter_value": "[\\\"STATUS_ALL\\\"]", + }, + ] + report_metrics: + [ + "campaign_name", + "campaign_id", + "adgroup_name", + "placement_type", + "tt_app_id", + "tt_app_name", + "mobile_app_id", + "promotion_type", + "dpa_target_audience_type", + "conversion", + "cost_per_conversion", + "conversion_rate", + "real_time_conversion", + "real_time_cost_per_conversion", + "real_time_conversion_rate", + "result", + "cost_per_result", + "result_rate", + "real_time_result", + "real_time_cost_per_result", + "real_time_result_rate", + "secondary_goal_result", + "cost_per_secondary_goal_result", + "secondary_goal_result_rate", + "adgroup_id", + "ad_name", + "ad_text", + "total_purchase_value", + "total_onsite_shopping_value", + "onsite_shopping", + "vta_purchase", + "vta_conversion", + "cta_purchase", + "cta_conversion", + "total_pageview", + "complete_payment", + "value_per_complete_payment", + "total_complete_payment_rate", + ] + dimensions: ["ad_id", "stat_time_day", "country_code"] + primary_key: + - ad_id + - stat_time_day + - country_code + $ref: "#/definitions/base_report_daily" + transformations: + - type: AddFields + fields: + - path: ["stat_time_day"] + value: "{{ record.dimensions.stat_time_day }}" + - path: ["ad_id"] + value: "{{ record.dimensions.ad_id }}" + - path: ["country_code"] + value_type: "string" + value: "{{ record.dimensions.country_code }}" + - type: CustomTransformation + class_name: "source_tiktok_marketing.components.transformations.TransformEmptyMetrics" + ad_groups_reports_daily_stream: type: DeclarativeStream name: ad_groups_reports_daily @@ -642,6 +716,66 @@ definitions: - type: CustomTransformation class_name: "source_tiktok_marketing.components.transformations.TransformEmptyMetrics" + ad_groups_reports_by_country_daily_stream: + type: DeclarativeStream + name: ad_groups_reports_by_country_daily + $parameters: + path: "report/integrated/get/" + data_level: "AUCTION_ADGROUP" + filtering: + [ + { + "field_name": "adgroup_status", + "filter_type": "IN", + "filter_value": "[\\\"STATUS_ALL\\\"]", + }, + ] + report_metrics: + [ + "campaign_name", + "campaign_id", + "adgroup_name", + "placement_type", + "tt_app_id", + "tt_app_name", + "mobile_app_id", + "promotion_type", + "dpa_target_audience_type", + "conversion", + "cost_per_conversion", + "conversion_rate", + "real_time_conversion", + "real_time_cost_per_conversion", + "real_time_conversion_rate", + "result", + "cost_per_result", + "result_rate", + "real_time_result", + "real_time_cost_per_result", + "real_time_result_rate", + "secondary_goal_result", + "cost_per_secondary_goal_result", + "secondary_goal_result_rate", + ] + dimensions: ["adgroup_id", "stat_time_day", "country_code"] + primary_key: + - adgroup_id + - stat_time_day + - country_code + $ref: "#/definitions/base_report_daily" + transformations: + - type: AddFields + fields: + - path: ["stat_time_day"] + value: "{{ record.dimensions.stat_time_day }}" + - path: ["adgroup_id"] + value: "{{ record.dimensions.adgroup_id }}" + - path: ["country_code"] + value_type: "string" + value: "{{ record.dimensions.country_code }}" + - type: CustomTransformation + class_name: "source_tiktok_marketing.components.transformations.TransformEmptyMetrics" + advertisers_reports_daily_stream: type: DeclarativeStream name: advertisers_reports_daily @@ -1320,6 +1454,80 @@ definitions: - type: CustomTransformation class_name: "source_tiktok_marketing.components.transformations.TransformEmptyMetrics" + ads_reports_by_country_hourly_stream: + type: DeclarativeStream + name: ads_reports_by_country_hourly + $parameters: + path: "report/integrated/get/" + data_level: "AUCTION_AD" + filtering: + [ + { + "field_name": "ad_status", + "filter_type": "IN", + "filter_value": "[\\\"STATUS_ALL\\\"]", + }, + ] + report_metrics: + [ + "campaign_name", + "campaign_id", + "adgroup_name", + "placement_type", + "tt_app_id", + "tt_app_name", + "mobile_app_id", + "promotion_type", + "dpa_target_audience_type", + "conversion", + "cost_per_conversion", + "conversion_rate", + "real_time_conversion", + "real_time_cost_per_conversion", + "real_time_conversion_rate", + "result", + "cost_per_result", + "result_rate", + "real_time_result", + "real_time_cost_per_result", + "real_time_result_rate", + "secondary_goal_result", + "cost_per_secondary_goal_result", + "secondary_goal_result_rate", + "adgroup_id", + "ad_name", + "ad_text", + "total_purchase_value", + "total_onsite_shopping_value", + "onsite_shopping", + "vta_purchase", + "vta_conversion", + "cta_purchase", + "cta_conversion", + "total_pageview", + "complete_payment", + "value_per_complete_payment", + "total_complete_payment_rate", + ] + dimensions: ["ad_id", "stat_time_hour", "country_code"] + primary_key: + - ad_id + - stat_time_hour + - country_code + $ref: "#/definitions/base_report_hourly" + transformations: + - type: AddFields + fields: + - path: ["stat_time_hour"] + value: "{{ record.dimensions.stat_time_hour }}" + - path: ["ad_id"] + value: "{{ record.dimensions.ad_id }}" + - path: ["country_code"] + value_type: "string" + value: "{{ record.dimensions.country_code }}" + - type: CustomTransformation + class_name: "source_tiktok_marketing.components.transformations.TransformEmptyMetrics" + advertisers_reports_hourly_stream: type: DeclarativeStream name: advertisers_reports_hourly @@ -1427,6 +1635,66 @@ definitions: - type: CustomTransformation class_name: "source_tiktok_marketing.components.transformations.TransformEmptyMetrics" + ad_groups_reports_by_country_hourly_stream: + type: DeclarativeStream + name: ad_groups_reports_by_country_hourly + $parameters: + path: "report/integrated/get/" + data_level: "AUCTION_ADGROUP" + filtering: + [ + { + "field_name": "adgroup_status", + "filter_type": "IN", + "filter_value": "[\\\"STATUS_ALL\\\"]", + }, + ] + report_metrics: + [ + "campaign_name", + "campaign_id", + "adgroup_name", + "placement_type", + "tt_app_id", + "tt_app_name", + "mobile_app_id", + "promotion_type", + "dpa_target_audience_type", + "conversion", + "cost_per_conversion", + "conversion_rate", + "real_time_conversion", + "real_time_cost_per_conversion", + "real_time_conversion_rate", + "result", + "cost_per_result", + "result_rate", + "real_time_result", + "real_time_cost_per_result", + "real_time_result_rate", + "secondary_goal_result", + "cost_per_secondary_goal_result", + "secondary_goal_result_rate", + ] + dimensions: ["adgroup_id", "stat_time_hour", "country_code"] + primary_key: + - adgroup_id + - stat_time_hour + - country_code + $ref: "#/definitions/base_report_hourly" + transformations: + - type: AddFields + fields: + - path: ["stat_time_hour"] + value: "{{ record.dimensions.stat_time_hour }}" + - path: ["adgroup_id"] + value: "{{ record.dimensions.adgroup_id }}" + - path: ["country_code"] + value_type: "string" + value: "{{ record.dimensions.country_code }}" + - type: CustomTransformation + class_name: "source_tiktok_marketing.components.transformations.TransformEmptyMetrics" + ads_reports_lifetime_stream: type: DeclarativeStream name: ads_reports_lifetime @@ -3558,6 +3826,11 @@ definitions: type: - "null" - integer + country_code: + description: Country code of the target audience + type: + - "null" + - string metrics: description: A list of metrics for which data should be retrieved such as views, @@ -4019,6 +4292,11 @@ definitions: type: - "null" - integer + country_code: + description: Country code within dimensions + type: + - "null" + - string audience_report: $schema: http://json-schema.org/draft-07/schema# additionalProperties: true @@ -4781,7 +5059,9 @@ streams: - $ref: "#/definitions/creative_assets_images_stream" - $ref: "#/definitions/creative_assets_videos_stream" - $ref: "#/definitions/ads_reports_daily_stream" + - $ref: "#/definitions/ads_reports_by_country_daily_stream" - $ref: "#/definitions/ad_groups_reports_daily_stream" + - $ref: "#/definitions/ad_groups_reports_by_country_daily_stream" - $ref: "#/definitions/advertisers_reports_daily_stream" - $ref: "#/definitions/campaigns_reports_daily_stream" - $ref: "#/definitions/campaigns_audience_reports_daily_stream" @@ -4798,9 +5078,11 @@ streams: - $ref: "#/definitions/advertisers_audience_reports_by_platform_daily_stream" - $ref: "#/definitions/ads_audience_reports_by_province_daily_stream" - $ref: "#/definitions/ads_reports_hourly_stream" + - $ref: "#/definitions/ads_reports_by_country_hourly_stream" - $ref: "#/definitions/advertisers_reports_hourly_stream" - $ref: "#/definitions/campaigns_reports_hourly_stream" - $ref: "#/definitions/ad_groups_reports_hourly_stream" + - $ref: "#/definitions/ad_groups_reports_by_country_hourly_stream" - $ref: "#/definitions/ads_reports_lifetime_stream" - $ref: "#/definitions/advertisers_reports_lifetime_stream" - $ref: "#/definitions/campaigns_reports_lifetime_stream" diff --git a/docs/integrations/sources/tiktok-marketing.md b/docs/integrations/sources/tiktok-marketing.md index b369a70d0aa6f..888ea1432d332 100644 --- a/docs/integrations/sources/tiktok-marketing.md +++ b/docs/integrations/sources/tiktok-marketing.md @@ -119,6 +119,10 @@ The TikTok Marketing source connector supports the following [sync modes](https: | Pixels | Prod | pixel_id | No | | PixelInstantPageEvents | Prod | - | No | | PixelEventsStatistics | Prod | - | No | +| AdsReportsByCountryDaily | Prod | ad_id, stat_time_day, country_code | No | +| AdsReportsByCountryHourly | Prod | ad_id, stat_time_hour, country_code | No | +| AdGroupsByCountryDaily | Prod | adgroup_id, stat_time_day, country_code | No | +| AdGroupsByCountryHourly | Prod | adgroup_id, stat_time_hour, country_code | No | :::info @@ -140,85 +144,86 @@ The connector is restricted by [requests limitation](https://business-api.tiktok
Expand to review -| Version | Date | Pull Request | Subject | -|:----------|:-----------|:---------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| 4.6.0 | 2025-03-09 | [55669](https://github.com/airbytehq/airbyte/pull/55669) | Add `Pixels`, `PixelInstantPageEvents`, `PixelEventsStatistics` streams | -| 4.5.0 | 2025-03-07 | [45081](https://github.com/airbytehq/airbyte/pull/45081) | Add SparkAds stream | -| 4.4.0 | 2025-03-07 | [55242](https://github.com/airbytehq/airbyte/pull/55242) | Promoting release candidate 4.4.0-rc3 to a main version. | -| 4.4.0-rc3 | 2025-03-04 | [55194](https://github.com/airbytehq/airbyte/pull/55194) | Resolve state format issue | -| 4.4.0-rc2 | 2025-02-20 | [53645)](https://github.com/airbytehq/airbyte/pull/53645) | Remove stream_state interpolation and custom cursors | -| 4.4.0-rc1 | 2025-01-29 | [51584](https://github.com/airbytehq/airbyte/pull/51584) | Update to concurrent CDK | -| 4.3.7 | 2025-01-11 | [47118](https://github.com/airbytehq/airbyte/pull/47118) | Starting with this version, the Docker image is now rootless. Please note that this and future versions will not be compatible with Airbyte versions earlier than 0.64 | -| 4.3.6 | 2024-10-12 | [46855](https://github.com/airbytehq/airbyte/pull/46855) | Update dependencies | -| 4.3.5 | 2024-10-09 | [46676](https://github.com/airbytehq/airbyte/pull/46676) | Fix error handling for codes 40100 and 50002 | -| 4.3.4 | 2024-10-05 | [46164](https://github.com/airbytehq/airbyte/pull/46164) | Update dependencies | -| 4.3.3 | 2024-09-21 | [45790](https://github.com/airbytehq/airbyte/pull/45790) | Update dependencies | -| 4.3.2 | 2024-09-14 | [45488](https://github.com/airbytehq/airbyte/pull/45488) | Update dependencies | -| 4.3.1 | 2024-09-07 | [45270](https://github.com/airbytehq/airbyte/pull/45270) | Update dependencies | -| 4.3.0 | 2024-09-03 | [44910](https://github.com/airbytehq/airbyte/pull/44910) | Migrate to CDK v4 | -| 4.2.5 | 2024-08-31 | [44954](https://github.com/airbytehq/airbyte/pull/44954) | Update dependencies | -| 4.2.4 | 2024-08-24 | [43783](https://github.com/airbytehq/airbyte/pull/43783) | Update dependencies | -| 4.2.3 | 2024-08-19 | [44048](https://github.com/airbytehq/airbyte/pull/44048) | Fix include_deleted toggle | -| 4.2.2 | 2024-08-03 | [42822](https://github.com/airbytehq/airbyte/pull/42822) | Update dependencies | -| 4.2.1 | 2024-07-20 | [42375](https://github.com/airbytehq/airbyte/pull/42375) | Update dependencies | -| 4.2.0 | 2024-07-17 | [42005](https://github.com/airbytehq/airbyte/pull/42005) | Migrate to CDK v3.5.3 | -| 4.1.0 | 2024-07-17 | [42004](https://github.com/airbytehq/airbyte/pull/42004) | Migrate to CDK v2.4.0 | -| 4.0.4 | 2024-07-13 | [41695](https://github.com/airbytehq/airbyte/pull/41695) | Update dependencies | -| 4.0.3 | 2024-07-10 | [41370](https://github.com/airbytehq/airbyte/pull/41370) | Update dependencies | -| 4.0.2 | 2024-07-09 | [41153](https://github.com/airbytehq/airbyte/pull/41153) | Update dependencies | -| 4.0.1 | 2024-07-06 | [40915](https://github.com/airbytehq/airbyte/pull/40915) | Update dependencies | -| 4.0.0 | 2024-07-01 | [38316](https://github.com/airbytehq/airbyte/pull/38316) | Migration to low-code CDK; Support include deleted statuses for Ads, Ad Groups and Campaign streams. | -| 3.9.10 | 2024-06-25 | [40373](https://github.com/airbytehq/airbyte/pull/40373) | Update dependencies | -| 3.9.9 | 2024-06-22 | [40133](https://github.com/airbytehq/airbyte/pull/40133) | Update dependencies | -| 3.9.8 | 2024-06-06 | [39253](https://github.com/airbytehq/airbyte/pull/39253) | [autopull] Upgrade base image to v1.2.2 | -| 3.9.7 | 2024-05-15 | [38250](https://github.com/airbytehq/airbyte/pull/38250) | Replace AirbyteLogger with logging.Logger and upgrade to latest base image | -| 3.9.6 | 2024-04-19 | [36665](https://github.com/airbytehq/airbyte/pull/36665) | Updating to 0.80.0 CDK | -| 3.9.5 | 2024-04-12 | [36665](https://github.com/airbytehq/airbyte/pull/36665) | Schema descriptions | -| 3.9.4 | 2024-03-20 | [36302](https://github.com/airbytehq/airbyte/pull/36302) | Don't extract state from the latest record if stream doesn't have a cursor_field | -| 3.9.3 | 2024-02-12 | [35161](https://github.com/airbytehq/airbyte/pull/35161) | Manage dependencies with Poetry. | -| 3.9.2 | 2023-11-02 | [32091](https://github.com/airbytehq/airbyte/pull/32091) | Fix incremental syncs; update docs; fix field type of `preview_url_expire_time` to `date-time`. | -| 3.9.1 | 2023-10-25 | [31812](https://github.com/airbytehq/airbyte/pull/31812) | Update `support level` in `metadata`, removed duplicated `tracking_pixel_id` field from `Ads` stream schema | -| 3.9.0 | 2023-10-23 | [31623](https://github.com/airbytehq/airbyte/pull/31623) | Add AdsAudienceReportsByProvince stream and expand base report metrics | -| 3.8.0 | 2023-10-19 | [31610](https://github.com/airbytehq/airbyte/pull/31610) | Add Creative Assets and Audiences streams | -| 3.7.1 | 2023-10-19 | [31599](https://github.com/airbytehq/airbyte/pull/31599) | Base image migration: remove Dockerfile and use the python-connector-base image | -| 3.7.0 | 2023-10-19 | [31493](https://github.com/airbytehq/airbyte/pull/31493) | Add fields to Ads stream | -| 3.6.0 | 2023-10-18 | [31537](https://github.com/airbytehq/airbyte/pull/31537) | Use default availability strategy | -| 3.5.0 | 2023-10-16 | [31445](https://github.com/airbytehq/airbyte/pull/31445) | Apply minimum date restrictions | -| 3.4.1 | 2023-08-04 | [29083](https://github.com/airbytehq/airbyte/pull/29083) | Added new `is_smart_performance_campaign` property to `ad groups` stream schema | -| 3.4.0 | 2023-07-13 | [27910](https://github.com/airbytehq/airbyte/pull/27910) | Added `include_deleted` config param - include deleted `ad_groups`, `ad`, `campaigns` to reports | -| 3.3.1 | 2023-07-06 | [25423](https://github.com/airbytehq/airbyte/pull/25423) | Add new fields to ad reports streams | -| 3.3.0 | 2023-07-05 | [27988](https://github.com/airbytehq/airbyte/pull/27988) | Add `category_exclusion_ids` field to `ad_groups` schema. | -| 3.2.1 | 2023-05-26 | [26569](https://github.com/airbytehq/airbyte/pull/26569) | Fixed syncs with `advertiser_id` provided in input configuration | -| 3.2.0 | 2023-05-25 | [26565](https://github.com/airbytehq/airbyte/pull/26565) | Change default value for `attribution window` to 3 days; add min/max validation | -| 3.1.0 | 2023-05-12 | [26024](https://github.com/airbytehq/airbyte/pull/26024) | Updated the `Ads` stream schema | -| 3.0.1 | 2023-04-07 | [24712](https://github.com/airbytehq/airbyte/pull/24712) | Added `attribution window` for \*-reports streams | -| 3.0.0 | 2023-03-29 | [24630](https://github.com/airbytehq/airbyte/pull/24630) | Migrate to v1.3 API | -| 2.0.6 | 2023-03-30 | [22134](https://github.com/airbytehq/airbyte/pull/22134) | Add `country_code` and `platform` audience reports. | -| 2.0.5 | 2023-03-29 | [22863](https://github.com/airbytehq/airbyte/pull/22863) | Specified date formatting in specification | -| 2.0.4 | 2023-02-23 | [22309](https://github.com/airbytehq/airbyte/pull/22309) | Add Advertiser ID to filter reports and streams | -| 2.0.3 | 2023-02-15 | [23091](https://github.com/airbytehq/airbyte/pull/23091) | Add more clear log message for 504 error | -| 2.0.2 | 2023-02-02 | [22309](https://github.com/airbytehq/airbyte/pull/22309) | Chunk Advertiser IDs | -| 2.0.1 | 2023-01-27 | [22044](https://github.com/airbytehq/airbyte/pull/22044) | Set `AvailabilityStrategy` for streams explicitly to `None` | -| 2.0.0 | 2022-12-20 | [20415](https://github.com/airbytehq/airbyte/pull/20415) | Update schema types for `AudienceReports` and `BasicReports` streams. | -| 1.0.1 | 2022-12-16 | [20598](https://github.com/airbytehq/airbyte/pull/20598) | Remove Audience Reports with Hourly granularity due to deprecated dimension. | -| 1.0.0 | 2022-12-05 | [19758](https://github.com/airbytehq/airbyte/pull/19758) | Convert `mobile_app_id` from integer to string in AudienceReport streams. | -| 0.1.17 | 2022-10-04 | [17557](https://github.com/airbytehq/airbyte/pull/17557) | Retry error 50002 | -| 0.1.16 | 2022-09-28 | [17326](https://github.com/airbytehq/airbyte/pull/17326) | Migrate to per-stream state | -| 0.1.15 | 2022-08-30 | [16137](https://github.com/airbytehq/airbyte/pull/16137) | Fixed bug with normalization caused by unsupported nested cursor field | -| 0.1.14 | 2022-06-29 | [13890](https://github.com/airbytehq/airbyte/pull/13890) | Removed granularity config option | -| 0.1.13 | 2022-06-28 | [13650](https://github.com/airbytehq/airbyte/pull/13650) | Added video metrics to report streams | -| 0.1.12 | 2022-05-24 | [13127](https://github.com/airbytehq/airbyte/pull/13127) | Fixed integration test | -| 0.1.11 | 2022-04-27 | [12838](https://github.com/airbytehq/airbyte/pull/12838) | Added end date configuration for tiktok | -| 0.1.10 | 2022-05-07 | [12545](https://github.com/airbytehq/airbyte/pull/12545) | Removed odd production authenication method | -| 0.1.9 | 2022-04-30 | [12500](https://github.com/airbytehq/airbyte/pull/12500) | Improve input configuration copy | -| 0.1.8 | 2022-04-28 | [12435](https://github.com/airbytehq/airbyte/pull/12435) | Updated spec descriptions | -| 0.1.7 | 2022-04-27 | [12380](https://github.com/airbytehq/airbyte/pull/12380) | Fixed spec descriptions and documentation | -| 0.1.6 | 2022-04-19 | [11378](https://github.com/airbytehq/airbyte/pull/11378) | Updated logic for stream initializations, fixed errors in schemas, updated SAT and unit tests | -| 0.1.5 | 2022-02-17 | [10398](https://github.com/airbytehq/airbyte/pull/10398) | Add Audience reports | -| 0.1.4 | 2021-12-30 | [7636](https://github.com/airbytehq/airbyte/pull/7636) | Add OAuth support | -| 0.1.3 | 2021-12-10 | [8425](https://github.com/airbytehq/airbyte/pull/8425) | Update title, description fields in spec | -| 0.1.2 | 2021-12-02 | [8292](https://github.com/airbytehq/airbyte/pull/8292) | Support reports | -| 0.1.1 | 2021-11-08 | [7499](https://github.com/airbytehq/airbyte/pull/7499) | Remove base-python dependencies | -| 0.1.0 | 2021-09-18 | [5887](https://github.com/airbytehq/airbyte/pull/5887) | Release TikTok Marketing CDK Connector | +| Version | Date | Pull Request | Subject | +|:----------|:-----------|:----------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 4.7.0 | 2025-03-10 | [55681](https://github.com/airbytehq/airbyte/pull/55681) | Ads / AdGroups report by country streams | +| 4.6.0 | 2025-03-09 | [55669](https://github.com/airbytehq/airbyte/pull/55669) | Add `Pixels`, `PixelInstantPageEvents`, `PixelEventsStatistics` streams | +| 4.5.0 | 2025-03-07 | [45081](https://github.com/airbytehq/airbyte/pull/45081) | Add SparkAds stream | +| 4.4.0 | 2025-03-07 | [55242](https://github.com/airbytehq/airbyte/pull/55242) | Promoting release candidate 4.4.0-rc3 to a main version. | +| 4.4.0-rc3 | 2025-03-04 | [55194](https://github.com/airbytehq/airbyte/pull/55194) | Resolve state format issue | +| 4.4.0-rc2 | 2025-02-20 | [53645)](https://github.com/airbytehq/airbyte/pull/53645) | Remove stream_state interpolation and custom cursors | +| 4.4.0-rc1 | 2025-01-29 | [51584](https://github.com/airbytehq/airbyte/pull/51584) | Update to concurrent CDK | +| 4.3.7 | 2025-01-11 | [47118](https://github.com/airbytehq/airbyte/pull/47118) | Starting with this version, the Docker image is now rootless. Please note that this and future versions will not be compatible with Airbyte versions earlier than 0.64 | +| 4.3.6 | 2024-10-12 | [46855](https://github.com/airbytehq/airbyte/pull/46855) | Update dependencies | +| 4.3.5 | 2024-10-09 | [46676](https://github.com/airbytehq/airbyte/pull/46676) | Fix error handling for codes 40100 and 50002 | +| 4.3.4 | 2024-10-05 | [46164](https://github.com/airbytehq/airbyte/pull/46164) | Update dependencies | +| 4.3.3 | 2024-09-21 | [45790](https://github.com/airbytehq/airbyte/pull/45790) | Update dependencies | +| 4.3.2 | 2024-09-14 | [45488](https://github.com/airbytehq/airbyte/pull/45488) | Update dependencies | +| 4.3.1 | 2024-09-07 | [45270](https://github.com/airbytehq/airbyte/pull/45270) | Update dependencies | +| 4.3.0 | 2024-09-03 | [44910](https://github.com/airbytehq/airbyte/pull/44910) | Migrate to CDK v4 | +| 4.2.5 | 2024-08-31 | [44954](https://github.com/airbytehq/airbyte/pull/44954) | Update dependencies | +| 4.2.4 | 2024-08-24 | [43783](https://github.com/airbytehq/airbyte/pull/43783) | Update dependencies | +| 4.2.3 | 2024-08-19 | [44048](https://github.com/airbytehq/airbyte/pull/44048) | Fix include_deleted toggle | +| 4.2.2 | 2024-08-03 | [42822](https://github.com/airbytehq/airbyte/pull/42822) | Update dependencies | +| 4.2.1 | 2024-07-20 | [42375](https://github.com/airbytehq/airbyte/pull/42375) | Update dependencies | +| 4.2.0 | 2024-07-17 | [42005](https://github.com/airbytehq/airbyte/pull/42005) | Migrate to CDK v3.5.3 | +| 4.1.0 | 2024-07-17 | [42004](https://github.com/airbytehq/airbyte/pull/42004) | Migrate to CDK v2.4.0 | +| 4.0.4 | 2024-07-13 | [41695](https://github.com/airbytehq/airbyte/pull/41695) | Update dependencies | +| 4.0.3 | 2024-07-10 | [41370](https://github.com/airbytehq/airbyte/pull/41370) | Update dependencies | +| 4.0.2 | 2024-07-09 | [41153](https://github.com/airbytehq/airbyte/pull/41153) | Update dependencies | +| 4.0.1 | 2024-07-06 | [40915](https://github.com/airbytehq/airbyte/pull/40915) | Update dependencies | +| 4.0.0 | 2024-07-01 | [38316](https://github.com/airbytehq/airbyte/pull/38316) | Migration to low-code CDK; Support include deleted statuses for Ads, Ad Groups and Campaign streams. | +| 3.9.10 | 2024-06-25 | [40373](https://github.com/airbytehq/airbyte/pull/40373) | Update dependencies | +| 3.9.9 | 2024-06-22 | [40133](https://github.com/airbytehq/airbyte/pull/40133) | Update dependencies | +| 3.9.8 | 2024-06-06 | [39253](https://github.com/airbytehq/airbyte/pull/39253) | [autopull] Upgrade base image to v1.2.2 | +| 3.9.7 | 2024-05-15 | [38250](https://github.com/airbytehq/airbyte/pull/38250) | Replace AirbyteLogger with logging.Logger and upgrade to latest base image | +| 3.9.6 | 2024-04-19 | [36665](https://github.com/airbytehq/airbyte/pull/36665) | Updating to 0.80.0 CDK | +| 3.9.5 | 2024-04-12 | [36665](https://github.com/airbytehq/airbyte/pull/36665) | Schema descriptions | +| 3.9.4 | 2024-03-20 | [36302](https://github.com/airbytehq/airbyte/pull/36302) | Don't extract state from the latest record if stream doesn't have a cursor_field | +| 3.9.3 | 2024-02-12 | [35161](https://github.com/airbytehq/airbyte/pull/35161) | Manage dependencies with Poetry. | +| 3.9.2 | 2023-11-02 | [32091](https://github.com/airbytehq/airbyte/pull/32091) | Fix incremental syncs; update docs; fix field type of `preview_url_expire_time` to `date-time`. | +| 3.9.1 | 2023-10-25 | [31812](https://github.com/airbytehq/airbyte/pull/31812) | Update `support level` in `metadata`, removed duplicated `tracking_pixel_id` field from `Ads` stream schema | +| 3.9.0 | 2023-10-23 | [31623](https://github.com/airbytehq/airbyte/pull/31623) | Add AdsAudienceReportsByProvince stream and expand base report metrics | +| 3.8.0 | 2023-10-19 | [31610](https://github.com/airbytehq/airbyte/pull/31610) | Add Creative Assets and Audiences streams | +| 3.7.1 | 2023-10-19 | [31599](https://github.com/airbytehq/airbyte/pull/31599) | Base image migration: remove Dockerfile and use the python-connector-base image | +| 3.7.0 | 2023-10-19 | [31493](https://github.com/airbytehq/airbyte/pull/31493) | Add fields to Ads stream | +| 3.6.0 | 2023-10-18 | [31537](https://github.com/airbytehq/airbyte/pull/31537) | Use default availability strategy | +| 3.5.0 | 2023-10-16 | [31445](https://github.com/airbytehq/airbyte/pull/31445) | Apply minimum date restrictions | +| 3.4.1 | 2023-08-04 | [29083](https://github.com/airbytehq/airbyte/pull/29083) | Added new `is_smart_performance_campaign` property to `ad groups` stream schema | +| 3.4.0 | 2023-07-13 | [27910](https://github.com/airbytehq/airbyte/pull/27910) | Added `include_deleted` config param - include deleted `ad_groups`, `ad`, `campaigns` to reports | +| 3.3.1 | 2023-07-06 | [25423](https://github.com/airbytehq/airbyte/pull/25423) | Add new fields to ad reports streams | +| 3.3.0 | 2023-07-05 | [27988](https://github.com/airbytehq/airbyte/pull/27988) | Add `category_exclusion_ids` field to `ad_groups` schema. | +| 3.2.1 | 2023-05-26 | [26569](https://github.com/airbytehq/airbyte/pull/26569) | Fixed syncs with `advertiser_id` provided in input configuration | +| 3.2.0 | 2023-05-25 | [26565](https://github.com/airbytehq/airbyte/pull/26565) | Change default value for `attribution window` to 3 days; add min/max validation | +| 3.1.0 | 2023-05-12 | [26024](https://github.com/airbytehq/airbyte/pull/26024) | Updated the `Ads` stream schema | +| 3.0.1 | 2023-04-07 | [24712](https://github.com/airbytehq/airbyte/pull/24712) | Added `attribution window` for \*-reports streams | +| 3.0.0 | 2023-03-29 | [24630](https://github.com/airbytehq/airbyte/pull/24630) | Migrate to v1.3 API | +| 2.0.6 | 2023-03-30 | [22134](https://github.com/airbytehq/airbyte/pull/22134) | Add `country_code` and `platform` audience reports. | +| 2.0.5 | 2023-03-29 | [22863](https://github.com/airbytehq/airbyte/pull/22863) | Specified date formatting in specification | +| 2.0.4 | 2023-02-23 | [22309](https://github.com/airbytehq/airbyte/pull/22309) | Add Advertiser ID to filter reports and streams | +| 2.0.3 | 2023-02-15 | [23091](https://github.com/airbytehq/airbyte/pull/23091) | Add more clear log message for 504 error | +| 2.0.2 | 2023-02-02 | [22309](https://github.com/airbytehq/airbyte/pull/22309) | Chunk Advertiser IDs | +| 2.0.1 | 2023-01-27 | [22044](https://github.com/airbytehq/airbyte/pull/22044) | Set `AvailabilityStrategy` for streams explicitly to `None` | +| 2.0.0 | 2022-12-20 | [20415](https://github.com/airbytehq/airbyte/pull/20415) | Update schema types for `AudienceReports` and `BasicReports` streams. | +| 1.0.1 | 2022-12-16 | [20598](https://github.com/airbytehq/airbyte/pull/20598) | Remove Audience Reports with Hourly granularity due to deprecated dimension. | +| 1.0.0 | 2022-12-05 | [19758](https://github.com/airbytehq/airbyte/pull/19758) | Convert `mobile_app_id` from integer to string in AudienceReport streams. | +| 0.1.17 | 2022-10-04 | [17557](https://github.com/airbytehq/airbyte/pull/17557) | Retry error 50002 | +| 0.1.16 | 2022-09-28 | [17326](https://github.com/airbytehq/airbyte/pull/17326) | Migrate to per-stream state | +| 0.1.15 | 2022-08-30 | [16137](https://github.com/airbytehq/airbyte/pull/16137) | Fixed bug with normalization caused by unsupported nested cursor field | +| 0.1.14 | 2022-06-29 | [13890](https://github.com/airbytehq/airbyte/pull/13890) | Removed granularity config option | +| 0.1.13 | 2022-06-28 | [13650](https://github.com/airbytehq/airbyte/pull/13650) | Added video metrics to report streams | +| 0.1.12 | 2022-05-24 | [13127](https://github.com/airbytehq/airbyte/pull/13127) | Fixed integration test | +| 0.1.11 | 2022-04-27 | [12838](https://github.com/airbytehq/airbyte/pull/12838) | Added end date configuration for tiktok | +| 0.1.10 | 2022-05-07 | [12545](https://github.com/airbytehq/airbyte/pull/12545) | Removed odd production authenication method | +| 0.1.9 | 2022-04-30 | [12500](https://github.com/airbytehq/airbyte/pull/12500) | Improve input configuration copy | +| 0.1.8 | 2022-04-28 | [12435](https://github.com/airbytehq/airbyte/pull/12435) | Updated spec descriptions | +| 0.1.7 | 2022-04-27 | [12380](https://github.com/airbytehq/airbyte/pull/12380) | Fixed spec descriptions and documentation | +| 0.1.6 | 2022-04-19 | [11378](https://github.com/airbytehq/airbyte/pull/11378) | Updated logic for stream initializations, fixed errors in schemas, updated SAT and unit tests | +| 0.1.5 | 2022-02-17 | [10398](https://github.com/airbytehq/airbyte/pull/10398) | Add Audience reports | +| 0.1.4 | 2021-12-30 | [7636](https://github.com/airbytehq/airbyte/pull/7636) | Add OAuth support | +| 0.1.3 | 2021-12-10 | [8425](https://github.com/airbytehq/airbyte/pull/8425) | Update title, description fields in spec | +| 0.1.2 | 2021-12-02 | [8292](https://github.com/airbytehq/airbyte/pull/8292) | Support reports | +| 0.1.1 | 2021-11-08 | [7499](https://github.com/airbytehq/airbyte/pull/7499) | Remove base-python dependencies | +| 0.1.0 | 2021-09-18 | [5887](https://github.com/airbytehq/airbyte/pull/5887) | Release TikTok Marketing CDK Connector |