@getlatedev/node 0.2.1189 → 0.2.1190

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.
package/dist/index.d.mts CHANGED
@@ -2540,12 +2540,54 @@ type AdAnalyticsResponse = {
2540
2540
  * keys are ABSENT rather than 0. `audiencePenetration` is available here only: it
2541
2541
  * is not part of the stored metrics series.
2542
2542
  *
2543
+ * TikTok rows are keyed by TikTok's own dimension name (`country_code` for
2544
+ * `country`, `platform` for `publisher_platform`). `placement` rows carry the
2545
+ * label TikTok Ads Manager shows (`TikTok`, `TikTok Ad Network`, `News Feed App Series`)
2546
+ * in `placement` and TikTok's API value (`PLACEMENT_TIKTOK`, `PLACEMENT_PANGLE`,
2547
+ * `PLACEMENT_GLOBAL_APP_BUNDLE`) in `placementRaw`; a value without a known label
2548
+ * carries the raw value in both.
2549
+ *
2550
+ * A requested dimension with no data in the range is an empty array.
2551
+ *
2543
2552
  */
2544
2553
  breakdowns?: {
2545
2554
  [key: string]: Array<{
2546
2555
  [key: string]: unknown;
2547
2556
  }>;
2548
2557
  };
2558
+ /**
2559
+ * Requested breakdowns this platform cannot break down by (e.g. region on TikTok, any breakdown on Google). Absent when every requested breakdown is supported.
2560
+ */
2561
+ unsupportedBreakdowns?: Array<(string)>;
2562
+ /**
2563
+ * Guidance for some names in unsupportedBreakdowns, keyed by that name (e.g. placement on Meta points at publisher_platform and platform_position; platform_position on TikTok points at placement). Absent when no unsupported name has a hint.
2564
+ */
2565
+ breakdownHints?: {
2566
+ [key: string]: (string);
2567
+ };
2568
+ /**
2569
+ * TikTok only: breakdowns the platform failed to return (rate limit, permission, rejected query). Each one is an empty array under breakdowns; summary and daily are unaffected. Absent when every breakdown answered.
2570
+ */
2571
+ breakdownErrors?: Array<{
2572
+ breakdown?: string;
2573
+ /**
2574
+ * The platform's error message.
2575
+ */
2576
+ message?: string;
2577
+ }>;
2578
+ /**
2579
+ * TikTok only: TikTok metric names TikTok refused for a breakdown, keyed by the requested breakdown (e.g. total_purchase and total_purchase_value have no relation to platform, ac or language). Every row value derived from a refused metric is null in that breakdown (purchaseValue and roas, or the matching actions and actionValues entries), never a number computed without it. Absent when no metric was refused.
2580
+ */
2581
+ breakdownDroppedMetrics?: {
2582
+ [key: string]: Array<(string)>;
2583
+ };
2584
+ /**
2585
+ * TikTok only, present when the requested range is longer than the 365 days TikTok serves per breakdown: the window the breakdowns cover (the last 365 days of the range). summary and daily still cover the full range.
2586
+ */
2587
+ breakdownsRange?: {
2588
+ fromDate?: string;
2589
+ toDate?: string;
2590
+ };
2549
2591
  };
2550
2592
  };
2551
2593
  /**
@@ -5062,12 +5104,54 @@ type CampaignAnalyticsResponse = {
5062
5104
  * keys are ABSENT rather than 0. `audiencePenetration` is available here only: it
5063
5105
  * is not part of the stored metrics series.
5064
5106
  *
5107
+ * TikTok rows are keyed by TikTok's own dimension name (`country_code` for
5108
+ * `country`, `platform` for `publisher_platform`). `placement` rows carry the
5109
+ * label TikTok Ads Manager shows (`TikTok`, `TikTok Ad Network`, `News Feed App Series`)
5110
+ * in `placement` and TikTok's API value (`PLACEMENT_TIKTOK`, `PLACEMENT_PANGLE`,
5111
+ * `PLACEMENT_GLOBAL_APP_BUNDLE`) in `placementRaw`; a value without a known label
5112
+ * carries the raw value in both.
5113
+ *
5114
+ * A requested dimension with no data in the range is an empty array.
5115
+ *
5065
5116
  */
5066
5117
  breakdowns?: {
5067
5118
  [key: string]: Array<{
5068
5119
  [key: string]: unknown;
5069
5120
  }>;
5070
5121
  };
5122
+ /**
5123
+ * Requested breakdowns this platform cannot break down by (e.g. region on TikTok, any breakdown on Google). Absent when every requested breakdown is supported.
5124
+ */
5125
+ unsupportedBreakdowns?: Array<(string)>;
5126
+ /**
5127
+ * Guidance for some names in unsupportedBreakdowns, keyed by that name (e.g. placement on Meta points at publisher_platform and platform_position; platform_position on TikTok points at placement). Absent when no unsupported name has a hint.
5128
+ */
5129
+ breakdownHints?: {
5130
+ [key: string]: (string);
5131
+ };
5132
+ /**
5133
+ * TikTok only: breakdowns the platform failed to return (rate limit, permission, rejected query). Each one is an empty array under breakdowns; summary and daily are unaffected. Absent when every breakdown answered.
5134
+ */
5135
+ breakdownErrors?: Array<{
5136
+ breakdown?: string;
5137
+ /**
5138
+ * The platform's error message.
5139
+ */
5140
+ message?: string;
5141
+ }>;
5142
+ /**
5143
+ * TikTok only: TikTok metric names TikTok refused for a breakdown, keyed by the requested breakdown (e.g. total_purchase and total_purchase_value have no relation to platform, ac or language). Every row value derived from a refused metric is null in that breakdown (purchaseValue and roas, or the matching actions and actionValues entries), never a number computed without it. Absent when no metric was refused.
5144
+ */
5145
+ breakdownDroppedMetrics?: {
5146
+ [key: string]: Array<(string)>;
5147
+ };
5148
+ /**
5149
+ * TikTok only, present when the requested range is longer than the 365 days TikTok serves per breakdown: the window the breakdowns cover (the last 365 days of the range). summary and daily still cover the full range.
5150
+ */
5151
+ breakdownsRange?: {
5152
+ fromDate?: string;
5153
+ toDate?: string;
5154
+ };
5071
5155
  };
5072
5156
  };
5073
5157
  /**
@@ -42983,11 +43067,23 @@ type GetCampaignAnalyticsData = {
42983
43067
  * **Meta**: age, gender, country, publisher_platform, device_platform, region,
42984
43068
  * platform_position, impression_device, video_asset, image_asset, body_asset, title_asset.
42985
43069
  *
43070
+ * **TikTok**: gender, age, country (or country_code), publisher_platform (or platform),
43071
+ * ac, language, placement. TikTok serves at most 365 days per breakdown, so a longer
43072
+ * range is read over its last 365 days and `analytics.breakdownsRange` says which window.
43073
+ *
42986
43074
  * **LinkedIn** (firmographics): job_title, job_function, seniority, industry,
42987
43075
  * company, company_size, country, region. Rows carry the raw pivot `value`
42988
43076
  * plus a resolved `name`. LinkedIn serves these aggregated over the whole
42989
43077
  * range, delays the data 12-24h, and omits segments with fewer than 3 events.
42990
43078
  *
43079
+ * A known dimension the platform cannot break down by is listed in
43080
+ * `analytics.unsupportedBreakdowns` instead of being dropped (with guidance in
43081
+ * `analytics.breakdownHints` where there is an alternative); the rest of the response
43082
+ * is unchanged. An unknown name returns 400. A TikTok dimension that fails is listed
43083
+ * in `analytics.breakdownErrors` and the response stays 200.
43084
+ * Metrics TikTok refuses for a dimension are listed in `analytics.breakdownDroppedMetrics`,
43085
+ * and the row values derived from them are null.
43086
+ *
42991
43087
  */
42992
43088
  breakdowns?: string;
42993
43089
  /**
@@ -43353,7 +43449,7 @@ type QueryAdInsightsData = {
43353
43449
  */
43354
43450
  after?: string;
43355
43451
  /**
43356
- * Comma-separated Graph breakdowns (e.g. age,gender or publisher_platform).
43452
+ * Meta only: comma-separated Graph breakdowns (e.g. age,gender or publisher_platform). Returns 400 on TikTok (add the breakdown to dimensions with reportType=AUDIENCE, e.g. dimensions=campaign_id,placement) and on Google (select segments.* in the query).
43357
43453
  */
43358
43454
  breakdowns?: string;
43359
43455
  /**
@@ -43581,15 +43677,26 @@ type GetAdAnalyticsData = {
43581
43677
  /**
43582
43678
  * Comma-separated breakdown dimensions.
43583
43679
  *
43584
- * **Meta**: age, gender, country, publisher_platform, device_platform, region.
43680
+ * **Meta**: age, gender, country, publisher_platform, device_platform, region,
43681
+ * platform_position, impression_device, video_asset, image_asset, body_asset, title_asset.
43585
43682
  *
43586
- * **TikTok**: gender, age, country_code, platform, ac, language.
43683
+ * **TikTok**: gender, age, country (or country_code), publisher_platform (or platform),
43684
+ * ac, language, placement. TikTok serves at most 365 days per breakdown, so a longer
43685
+ * range is read over its last 365 days and `analytics.breakdownsRange` says which window.
43587
43686
  *
43588
43687
  * **LinkedIn** (firmographics): job_title, job_function, seniority, industry,
43589
43688
  * company, company_size, country, region. Rows carry the raw pivot `value`
43590
43689
  * plus a resolved `name`. LinkedIn serves these aggregated over the whole
43591
43690
  * range, delays the data 12-24h, and omits segments with fewer than 3 events.
43592
43691
  *
43692
+ * A known dimension the platform cannot break down by is listed in
43693
+ * `analytics.unsupportedBreakdowns` instead of being dropped (with guidance in
43694
+ * `analytics.breakdownHints` where there is an alternative); the rest of the response
43695
+ * is unchanged. An unknown name returns 400. A TikTok dimension that fails is listed
43696
+ * in `analytics.breakdownErrors` and the response stays 200.
43697
+ * Metrics TikTok refuses for a dimension are listed in `analytics.breakdownDroppedMetrics`,
43698
+ * and the row values derived from them are null.
43699
+ *
43593
43700
  */
43594
43701
  breakdowns?: string;
43595
43702
  /**
package/dist/index.d.ts CHANGED
@@ -2540,12 +2540,54 @@ type AdAnalyticsResponse = {
2540
2540
  * keys are ABSENT rather than 0. `audiencePenetration` is available here only: it
2541
2541
  * is not part of the stored metrics series.
2542
2542
  *
2543
+ * TikTok rows are keyed by TikTok's own dimension name (`country_code` for
2544
+ * `country`, `platform` for `publisher_platform`). `placement` rows carry the
2545
+ * label TikTok Ads Manager shows (`TikTok`, `TikTok Ad Network`, `News Feed App Series`)
2546
+ * in `placement` and TikTok's API value (`PLACEMENT_TIKTOK`, `PLACEMENT_PANGLE`,
2547
+ * `PLACEMENT_GLOBAL_APP_BUNDLE`) in `placementRaw`; a value without a known label
2548
+ * carries the raw value in both.
2549
+ *
2550
+ * A requested dimension with no data in the range is an empty array.
2551
+ *
2543
2552
  */
2544
2553
  breakdowns?: {
2545
2554
  [key: string]: Array<{
2546
2555
  [key: string]: unknown;
2547
2556
  }>;
2548
2557
  };
2558
+ /**
2559
+ * Requested breakdowns this platform cannot break down by (e.g. region on TikTok, any breakdown on Google). Absent when every requested breakdown is supported.
2560
+ */
2561
+ unsupportedBreakdowns?: Array<(string)>;
2562
+ /**
2563
+ * Guidance for some names in unsupportedBreakdowns, keyed by that name (e.g. placement on Meta points at publisher_platform and platform_position; platform_position on TikTok points at placement). Absent when no unsupported name has a hint.
2564
+ */
2565
+ breakdownHints?: {
2566
+ [key: string]: (string);
2567
+ };
2568
+ /**
2569
+ * TikTok only: breakdowns the platform failed to return (rate limit, permission, rejected query). Each one is an empty array under breakdowns; summary and daily are unaffected. Absent when every breakdown answered.
2570
+ */
2571
+ breakdownErrors?: Array<{
2572
+ breakdown?: string;
2573
+ /**
2574
+ * The platform's error message.
2575
+ */
2576
+ message?: string;
2577
+ }>;
2578
+ /**
2579
+ * TikTok only: TikTok metric names TikTok refused for a breakdown, keyed by the requested breakdown (e.g. total_purchase and total_purchase_value have no relation to platform, ac or language). Every row value derived from a refused metric is null in that breakdown (purchaseValue and roas, or the matching actions and actionValues entries), never a number computed without it. Absent when no metric was refused.
2580
+ */
2581
+ breakdownDroppedMetrics?: {
2582
+ [key: string]: Array<(string)>;
2583
+ };
2584
+ /**
2585
+ * TikTok only, present when the requested range is longer than the 365 days TikTok serves per breakdown: the window the breakdowns cover (the last 365 days of the range). summary and daily still cover the full range.
2586
+ */
2587
+ breakdownsRange?: {
2588
+ fromDate?: string;
2589
+ toDate?: string;
2590
+ };
2549
2591
  };
2550
2592
  };
2551
2593
  /**
@@ -5062,12 +5104,54 @@ type CampaignAnalyticsResponse = {
5062
5104
  * keys are ABSENT rather than 0. `audiencePenetration` is available here only: it
5063
5105
  * is not part of the stored metrics series.
5064
5106
  *
5107
+ * TikTok rows are keyed by TikTok's own dimension name (`country_code` for
5108
+ * `country`, `platform` for `publisher_platform`). `placement` rows carry the
5109
+ * label TikTok Ads Manager shows (`TikTok`, `TikTok Ad Network`, `News Feed App Series`)
5110
+ * in `placement` and TikTok's API value (`PLACEMENT_TIKTOK`, `PLACEMENT_PANGLE`,
5111
+ * `PLACEMENT_GLOBAL_APP_BUNDLE`) in `placementRaw`; a value without a known label
5112
+ * carries the raw value in both.
5113
+ *
5114
+ * A requested dimension with no data in the range is an empty array.
5115
+ *
5065
5116
  */
5066
5117
  breakdowns?: {
5067
5118
  [key: string]: Array<{
5068
5119
  [key: string]: unknown;
5069
5120
  }>;
5070
5121
  };
5122
+ /**
5123
+ * Requested breakdowns this platform cannot break down by (e.g. region on TikTok, any breakdown on Google). Absent when every requested breakdown is supported.
5124
+ */
5125
+ unsupportedBreakdowns?: Array<(string)>;
5126
+ /**
5127
+ * Guidance for some names in unsupportedBreakdowns, keyed by that name (e.g. placement on Meta points at publisher_platform and platform_position; platform_position on TikTok points at placement). Absent when no unsupported name has a hint.
5128
+ */
5129
+ breakdownHints?: {
5130
+ [key: string]: (string);
5131
+ };
5132
+ /**
5133
+ * TikTok only: breakdowns the platform failed to return (rate limit, permission, rejected query). Each one is an empty array under breakdowns; summary and daily are unaffected. Absent when every breakdown answered.
5134
+ */
5135
+ breakdownErrors?: Array<{
5136
+ breakdown?: string;
5137
+ /**
5138
+ * The platform's error message.
5139
+ */
5140
+ message?: string;
5141
+ }>;
5142
+ /**
5143
+ * TikTok only: TikTok metric names TikTok refused for a breakdown, keyed by the requested breakdown (e.g. total_purchase and total_purchase_value have no relation to platform, ac or language). Every row value derived from a refused metric is null in that breakdown (purchaseValue and roas, or the matching actions and actionValues entries), never a number computed without it. Absent when no metric was refused.
5144
+ */
5145
+ breakdownDroppedMetrics?: {
5146
+ [key: string]: Array<(string)>;
5147
+ };
5148
+ /**
5149
+ * TikTok only, present when the requested range is longer than the 365 days TikTok serves per breakdown: the window the breakdowns cover (the last 365 days of the range). summary and daily still cover the full range.
5150
+ */
5151
+ breakdownsRange?: {
5152
+ fromDate?: string;
5153
+ toDate?: string;
5154
+ };
5071
5155
  };
5072
5156
  };
5073
5157
  /**
@@ -42983,11 +43067,23 @@ type GetCampaignAnalyticsData = {
42983
43067
  * **Meta**: age, gender, country, publisher_platform, device_platform, region,
42984
43068
  * platform_position, impression_device, video_asset, image_asset, body_asset, title_asset.
42985
43069
  *
43070
+ * **TikTok**: gender, age, country (or country_code), publisher_platform (or platform),
43071
+ * ac, language, placement. TikTok serves at most 365 days per breakdown, so a longer
43072
+ * range is read over its last 365 days and `analytics.breakdownsRange` says which window.
43073
+ *
42986
43074
  * **LinkedIn** (firmographics): job_title, job_function, seniority, industry,
42987
43075
  * company, company_size, country, region. Rows carry the raw pivot `value`
42988
43076
  * plus a resolved `name`. LinkedIn serves these aggregated over the whole
42989
43077
  * range, delays the data 12-24h, and omits segments with fewer than 3 events.
42990
43078
  *
43079
+ * A known dimension the platform cannot break down by is listed in
43080
+ * `analytics.unsupportedBreakdowns` instead of being dropped (with guidance in
43081
+ * `analytics.breakdownHints` where there is an alternative); the rest of the response
43082
+ * is unchanged. An unknown name returns 400. A TikTok dimension that fails is listed
43083
+ * in `analytics.breakdownErrors` and the response stays 200.
43084
+ * Metrics TikTok refuses for a dimension are listed in `analytics.breakdownDroppedMetrics`,
43085
+ * and the row values derived from them are null.
43086
+ *
42991
43087
  */
42992
43088
  breakdowns?: string;
42993
43089
  /**
@@ -43353,7 +43449,7 @@ type QueryAdInsightsData = {
43353
43449
  */
43354
43450
  after?: string;
43355
43451
  /**
43356
- * Comma-separated Graph breakdowns (e.g. age,gender or publisher_platform).
43452
+ * Meta only: comma-separated Graph breakdowns (e.g. age,gender or publisher_platform). Returns 400 on TikTok (add the breakdown to dimensions with reportType=AUDIENCE, e.g. dimensions=campaign_id,placement) and on Google (select segments.* in the query).
43357
43453
  */
43358
43454
  breakdowns?: string;
43359
43455
  /**
@@ -43581,15 +43677,26 @@ type GetAdAnalyticsData = {
43581
43677
  /**
43582
43678
  * Comma-separated breakdown dimensions.
43583
43679
  *
43584
- * **Meta**: age, gender, country, publisher_platform, device_platform, region.
43680
+ * **Meta**: age, gender, country, publisher_platform, device_platform, region,
43681
+ * platform_position, impression_device, video_asset, image_asset, body_asset, title_asset.
43585
43682
  *
43586
- * **TikTok**: gender, age, country_code, platform, ac, language.
43683
+ * **TikTok**: gender, age, country (or country_code), publisher_platform (or platform),
43684
+ * ac, language, placement. TikTok serves at most 365 days per breakdown, so a longer
43685
+ * range is read over its last 365 days and `analytics.breakdownsRange` says which window.
43587
43686
  *
43588
43687
  * **LinkedIn** (firmographics): job_title, job_function, seniority, industry,
43589
43688
  * company, company_size, country, region. Rows carry the raw pivot `value`
43590
43689
  * plus a resolved `name`. LinkedIn serves these aggregated over the whole
43591
43690
  * range, delays the data 12-24h, and omits segments with fewer than 3 events.
43592
43691
  *
43692
+ * A known dimension the platform cannot break down by is listed in
43693
+ * `analytics.unsupportedBreakdowns` instead of being dropped (with guidance in
43694
+ * `analytics.breakdownHints` where there is an alternative); the rest of the response
43695
+ * is unchanged. An unknown name returns 400. A TikTok dimension that fails is listed
43696
+ * in `analytics.breakdownErrors` and the response stays 200.
43697
+ * Metrics TikTok refuses for a dimension are listed in `analytics.breakdownDroppedMetrics`,
43698
+ * and the row values derived from them are null.
43699
+ *
43593
43700
  */
43594
43701
  breakdowns?: string;
43595
43702
  /**
package/dist/index.js CHANGED
@@ -36,7 +36,7 @@ module.exports = __toCommonJS(index_exports);
36
36
  // package.json
37
37
  var package_default = {
38
38
  name: "@getlatedev/node",
39
- version: "0.2.1189",
39
+ version: "0.2.1190",
40
40
  description: "The official Node.js library for the Zernio API",
41
41
  main: "dist/index.js",
42
42
  module: "dist/index.mjs",
package/dist/index.mjs CHANGED
@@ -5,7 +5,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
5
5
  // package.json
6
6
  var package_default = {
7
7
  name: "@getlatedev/node",
8
- version: "0.2.1189",
8
+ version: "0.2.1190",
9
9
  description: "The official Node.js library for the Zernio API",
10
10
  main: "dist/index.js",
11
11
  module: "dist/index.mjs",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getlatedev/node",
3
- "version": "0.2.1189",
3
+ "version": "0.2.1190",
4
4
  "description": "The official Node.js library for the Zernio API",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -10945,9 +10945,9 @@ export const removeAdGroupAssets = <ThrowOnError extends boolean = false>(option
10945
10945
  *
10946
10946
  * Returns performance analytics for a whole campaign in one call: summary metrics, a daily
10947
10947
  * timeline over the requested date range (summed across the campaign's ads), and optional
10948
- * demographic breakdowns. Breakdowns are fetched live from Meta at the campaign level (one call
10949
- * per dimension, no per-ad fan-out), so an agency dashboard gets campaign-level age/gender/etc.
10950
- * without summing thousands of per-ad reads. `campaignId` is the platform campaign id; pass
10948
+ * demographic breakdowns. Breakdowns are fetched live from Meta, TikTok or LinkedIn at the campaign
10949
+ * level (one call per dimension, no per-ad fan-out), so an agency dashboard gets campaign-level
10950
+ * age/gender/placement/etc. without summing thousands of per-ad reads. `campaignId` is the platform campaign id; pass
10951
10951
  * `platform` when a campaign id could be ambiguous across platforms. If no date range is provided,
10952
10952
  * defaults to the last 90 days. Date range is capped at 730 days max.
10953
10953
  * Google adds searchImpressionShare, searchBudgetLostImpressionShare,
@@ -11188,10 +11188,10 @@ export const getAdInsightsReport = <ThrowOnError extends boolean = false>(option
11188
11188
 
11189
11189
  /**
11190
11190
  * Get ad analytics
11191
- * Returns one ad's performance summary and daily timeline, with optional audience breakdowns on Meta and TikTok.
11191
+ * Returns one ad's performance summary and daily timeline, with optional audience breakdowns on Meta, TikTok and LinkedIn.
11192
11192
  *
11193
11193
  * Includes summary metrics, a daily timeline
11194
- * over the requested date range, and optional demographic breakdowns (Meta and TikTok only).
11194
+ * over the requested date range, and optional demographic breakdowns (Meta, TikTok and LinkedIn only).
11195
11195
  * If no date range is provided, defaults to the last 90 days. Date range is capped at 730 days max.
11196
11196
  *
11197
11197
  */
@@ -543,12 +543,54 @@ export type AdAnalyticsResponse = {
543
543
  * keys are ABSENT rather than 0. `audiencePenetration` is available here only: it
544
544
  * is not part of the stored metrics series.
545
545
  *
546
+ * TikTok rows are keyed by TikTok's own dimension name (`country_code` for
547
+ * `country`, `platform` for `publisher_platform`). `placement` rows carry the
548
+ * label TikTok Ads Manager shows (`TikTok`, `TikTok Ad Network`, `News Feed App Series`)
549
+ * in `placement` and TikTok's API value (`PLACEMENT_TIKTOK`, `PLACEMENT_PANGLE`,
550
+ * `PLACEMENT_GLOBAL_APP_BUNDLE`) in `placementRaw`; a value without a known label
551
+ * carries the raw value in both.
552
+ *
553
+ * A requested dimension with no data in the range is an empty array.
554
+ *
546
555
  */
547
556
  breakdowns?: {
548
557
  [key: string]: Array<{
549
558
  [key: string]: unknown;
550
559
  }>;
551
560
  };
561
+ /**
562
+ * Requested breakdowns this platform cannot break down by (e.g. region on TikTok, any breakdown on Google). Absent when every requested breakdown is supported.
563
+ */
564
+ unsupportedBreakdowns?: Array<(string)>;
565
+ /**
566
+ * Guidance for some names in unsupportedBreakdowns, keyed by that name (e.g. placement on Meta points at publisher_platform and platform_position; platform_position on TikTok points at placement). Absent when no unsupported name has a hint.
567
+ */
568
+ breakdownHints?: {
569
+ [key: string]: (string);
570
+ };
571
+ /**
572
+ * TikTok only: breakdowns the platform failed to return (rate limit, permission, rejected query). Each one is an empty array under breakdowns; summary and daily are unaffected. Absent when every breakdown answered.
573
+ */
574
+ breakdownErrors?: Array<{
575
+ breakdown?: string;
576
+ /**
577
+ * The platform's error message.
578
+ */
579
+ message?: string;
580
+ }>;
581
+ /**
582
+ * TikTok only: TikTok metric names TikTok refused for a breakdown, keyed by the requested breakdown (e.g. total_purchase and total_purchase_value have no relation to platform, ac or language). Every row value derived from a refused metric is null in that breakdown (purchaseValue and roas, or the matching actions and actionValues entries), never a number computed without it. Absent when no metric was refused.
583
+ */
584
+ breakdownDroppedMetrics?: {
585
+ [key: string]: Array<(string)>;
586
+ };
587
+ /**
588
+ * TikTok only, present when the requested range is longer than the 365 days TikTok serves per breakdown: the window the breakdowns cover (the last 365 days of the range). summary and daily still cover the full range.
589
+ */
590
+ breakdownsRange?: {
591
+ fromDate?: string;
592
+ toDate?: string;
593
+ };
552
594
  };
553
595
  };
554
596
 
@@ -3178,12 +3220,54 @@ export type CampaignAnalyticsResponse = {
3178
3220
  * keys are ABSENT rather than 0. `audiencePenetration` is available here only: it
3179
3221
  * is not part of the stored metrics series.
3180
3222
  *
3223
+ * TikTok rows are keyed by TikTok's own dimension name (`country_code` for
3224
+ * `country`, `platform` for `publisher_platform`). `placement` rows carry the
3225
+ * label TikTok Ads Manager shows (`TikTok`, `TikTok Ad Network`, `News Feed App Series`)
3226
+ * in `placement` and TikTok's API value (`PLACEMENT_TIKTOK`, `PLACEMENT_PANGLE`,
3227
+ * `PLACEMENT_GLOBAL_APP_BUNDLE`) in `placementRaw`; a value without a known label
3228
+ * carries the raw value in both.
3229
+ *
3230
+ * A requested dimension with no data in the range is an empty array.
3231
+ *
3181
3232
  */
3182
3233
  breakdowns?: {
3183
3234
  [key: string]: Array<{
3184
3235
  [key: string]: unknown;
3185
3236
  }>;
3186
3237
  };
3238
+ /**
3239
+ * Requested breakdowns this platform cannot break down by (e.g. region on TikTok, any breakdown on Google). Absent when every requested breakdown is supported.
3240
+ */
3241
+ unsupportedBreakdowns?: Array<(string)>;
3242
+ /**
3243
+ * Guidance for some names in unsupportedBreakdowns, keyed by that name (e.g. placement on Meta points at publisher_platform and platform_position; platform_position on TikTok points at placement). Absent when no unsupported name has a hint.
3244
+ */
3245
+ breakdownHints?: {
3246
+ [key: string]: (string);
3247
+ };
3248
+ /**
3249
+ * TikTok only: breakdowns the platform failed to return (rate limit, permission, rejected query). Each one is an empty array under breakdowns; summary and daily are unaffected. Absent when every breakdown answered.
3250
+ */
3251
+ breakdownErrors?: Array<{
3252
+ breakdown?: string;
3253
+ /**
3254
+ * The platform's error message.
3255
+ */
3256
+ message?: string;
3257
+ }>;
3258
+ /**
3259
+ * TikTok only: TikTok metric names TikTok refused for a breakdown, keyed by the requested breakdown (e.g. total_purchase and total_purchase_value have no relation to platform, ac or language). Every row value derived from a refused metric is null in that breakdown (purchaseValue and roas, or the matching actions and actionValues entries), never a number computed without it. Absent when no metric was refused.
3260
+ */
3261
+ breakdownDroppedMetrics?: {
3262
+ [key: string]: Array<(string)>;
3263
+ };
3264
+ /**
3265
+ * TikTok only, present when the requested range is longer than the 365 days TikTok serves per breakdown: the window the breakdowns cover (the last 365 days of the range). summary and daily still cover the full range.
3266
+ */
3267
+ breakdownsRange?: {
3268
+ fromDate?: string;
3269
+ toDate?: string;
3270
+ };
3187
3271
  };
3188
3272
  };
3189
3273
 
@@ -43516,11 +43600,23 @@ export type GetCampaignAnalyticsData = {
43516
43600
  * **Meta**: age, gender, country, publisher_platform, device_platform, region,
43517
43601
  * platform_position, impression_device, video_asset, image_asset, body_asset, title_asset.
43518
43602
  *
43603
+ * **TikTok**: gender, age, country (or country_code), publisher_platform (or platform),
43604
+ * ac, language, placement. TikTok serves at most 365 days per breakdown, so a longer
43605
+ * range is read over its last 365 days and `analytics.breakdownsRange` says which window.
43606
+ *
43519
43607
  * **LinkedIn** (firmographics): job_title, job_function, seniority, industry,
43520
43608
  * company, company_size, country, region. Rows carry the raw pivot `value`
43521
43609
  * plus a resolved `name`. LinkedIn serves these aggregated over the whole
43522
43610
  * range, delays the data 12-24h, and omits segments with fewer than 3 events.
43523
43611
  *
43612
+ * A known dimension the platform cannot break down by is listed in
43613
+ * `analytics.unsupportedBreakdowns` instead of being dropped (with guidance in
43614
+ * `analytics.breakdownHints` where there is an alternative); the rest of the response
43615
+ * is unchanged. An unknown name returns 400. A TikTok dimension that fails is listed
43616
+ * in `analytics.breakdownErrors` and the response stays 200.
43617
+ * Metrics TikTok refuses for a dimension are listed in `analytics.breakdownDroppedMetrics`,
43618
+ * and the row values derived from them are null.
43619
+ *
43524
43620
  */
43525
43621
  breakdowns?: string;
43526
43622
  /**
@@ -43907,7 +44003,7 @@ export type QueryAdInsightsData = {
43907
44003
  */
43908
44004
  after?: string;
43909
44005
  /**
43910
- * Comma-separated Graph breakdowns (e.g. age,gender or publisher_platform).
44006
+ * Meta only: comma-separated Graph breakdowns (e.g. age,gender or publisher_platform). Returns 400 on TikTok (add the breakdown to dimensions with reportType=AUDIENCE, e.g. dimensions=campaign_id,placement) and on Google (select segments.* in the query).
43911
44007
  */
43912
44008
  breakdowns?: string;
43913
44009
  /**
@@ -44144,15 +44240,26 @@ export type GetAdAnalyticsData = {
44144
44240
  /**
44145
44241
  * Comma-separated breakdown dimensions.
44146
44242
  *
44147
- * **Meta**: age, gender, country, publisher_platform, device_platform, region.
44243
+ * **Meta**: age, gender, country, publisher_platform, device_platform, region,
44244
+ * platform_position, impression_device, video_asset, image_asset, body_asset, title_asset.
44148
44245
  *
44149
- * **TikTok**: gender, age, country_code, platform, ac, language.
44246
+ * **TikTok**: gender, age, country (or country_code), publisher_platform (or platform),
44247
+ * ac, language, placement. TikTok serves at most 365 days per breakdown, so a longer
44248
+ * range is read over its last 365 days and `analytics.breakdownsRange` says which window.
44150
44249
  *
44151
44250
  * **LinkedIn** (firmographics): job_title, job_function, seniority, industry,
44152
44251
  * company, company_size, country, region. Rows carry the raw pivot `value`
44153
44252
  * plus a resolved `name`. LinkedIn serves these aggregated over the whole
44154
44253
  * range, delays the data 12-24h, and omits segments with fewer than 3 events.
44155
44254
  *
44255
+ * A known dimension the platform cannot break down by is listed in
44256
+ * `analytics.unsupportedBreakdowns` instead of being dropped (with guidance in
44257
+ * `analytics.breakdownHints` where there is an alternative); the rest of the response
44258
+ * is unchanged. An unknown name returns 400. A TikTok dimension that fails is listed
44259
+ * in `analytics.breakdownErrors` and the response stays 200.
44260
+ * Metrics TikTok refuses for a dimension are listed in `analytics.breakdownDroppedMetrics`,
44261
+ * and the row values derived from them are null.
44262
+ *
44156
44263
  */
44157
44264
  breakdowns?: string;
44158
44265
  /**