@getlatedev/node 0.2.1179 → 0.2.1181

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
@@ -2572,7 +2572,7 @@ type AdCampaign = {
2572
2572
  */
2573
2573
  statusReadAt?: (string) | null;
2574
2574
  /**
2575
- * TikTok only, only on GET /v1/ads/campaigns with `live=true` and only on campaigns read live. TikTok's campaign/get record verbatim: operation_status, objective_type, budget_mode (BUDGET_MODE_INFINITE means no campaign budget, so budget lives on the ad groups), budget, and budget_optimize_on when TikTok returns it. Plus advertiser_currency and advertiser_timezone from TikTok's advertiser/info.
2575
+ * TikTok only, only on GET /v1/ads/campaigns with `live=true` and only on campaigns read live. A fixed subset of TikTok's campaign/get record, not the whole record: campaign_id, operation_status, objective_type, budget_mode (BUDGET_MODE_INFINITE means no campaign budget, so budget lives on the ad groups), budget, and budget_optimize_on, each with TikTok's own value and present only when TikTok returns it. Plus advertiser_currency and advertiser_timezone from TikTok's advertiser/info. Whether the campaign is Upgraded Smart+ is `isSmartPlus`.
2576
2576
  */
2577
2577
  nativeSettings?: {
2578
2578
  [key: string]: unknown;
@@ -2616,6 +2616,10 @@ type AdCampaign = {
2616
2616
  platformAdAccountName?: (string) | null;
2617
2617
  accountId?: string;
2618
2618
  profileId?: string;
2619
+ /**
2620
+ * TikTok only. true when the campaign is an Upgraded Smart+ campaign. See AdTreeCampaign.isSmartPlus.
2621
+ */
2622
+ isSmartPlus?: boolean;
2619
2623
  /**
2620
2624
  * Google-only. Raw campaign.advertising_channel_type. See AdTreeCampaign.advertisingChannelType.
2621
2625
  */
@@ -3381,6 +3385,10 @@ type AdTreeAdSet = {
3381
3385
  */
3382
3386
  createdTime?: (string) | null;
3383
3387
  adCount?: number;
3388
+ /**
3389
+ * TikTok only. true when this ad group belongs to an Upgraded Smart+ campaign. See AdTreeCampaign.isSmartPlus.
3390
+ */
3391
+ isSmartPlus?: boolean;
3384
3392
  /**
3385
3393
  * Effective budget at this level (back-compat). For CBO campaigns this mirrors the parent campaign's budget; for ABO this is the ad-set-specific budget. Use `adSetBudget` / parent `campaignBudget` + `budgetLevel` to disambiguate.
3386
3394
  */
@@ -3535,6 +3543,10 @@ type AdTreeCampaign = {
3535
3543
  platformAdAccountName?: (string) | null;
3536
3544
  accountId?: string;
3537
3545
  profileId?: string;
3546
+ /**
3547
+ * TikTok only. true when the campaign is an Upgraded Smart+ campaign (TikTok lists it on /smart_plus/campaign/get/), false when it is not. Set by ads sync, so the key is absent on other platforms and on TikTok campaigns not synced since this field shipped. On Smart+ objects Zernio can pause, resume, rename, delete and change the budget of the campaign and ad set, and pause or resume an ad; other edits answer 422 and belong in TikTok Ads Manager.
3548
+ */
3549
+ isSmartPlus?: boolean;
3538
3550
  /**
3539
3551
  * Google-only. Raw campaign.advertising_channel_type (SEARCH, PERFORMANCE_MAX, LOCAL_SERVICES, VIDEO, DEMAND_GEN, DISPLAY, SHOPPING, ...). Serving surface, distinct from platformObjective (advertiser intent). Null/absent for non-Google platforms.
3540
3552
  */
@@ -6326,8 +6338,9 @@ type CtwaAdRequestBody = {
6326
6338
  /**
6327
6339
  * Messaging and CTWA only (a 400 on POST /v1/ads/call). A hand-built carousel
6328
6340
  * of 2-10 image cards, sent to Meta in the order given as
6329
- * `link_data.child_attachments` (Meta may reorder them for performance, since
6330
- * `multi_share_optimized` defaults to true and no field fixes the order today); every
6341
+ * `link_data.child_attachments` (by default Meta may reorder them for performance,
6342
+ * since `multi_share_optimized` defaults to true; `optimizeCardOrder: false` keeps
6343
+ * the order given); every
6331
6344
  * card (and the carousel itself) carries the destination's messaging call to
6332
6345
  * action (WHATSAPP_MESSAGE, MESSAGE_PAGE or INSTAGRAM_MESSAGE), so a tap on any
6333
6346
  * card opens the conversation. Replaces `imageUrl` / `video` (sending either is
@@ -6340,6 +6353,16 @@ type CtwaAdRequestBody = {
6340
6353
  *
6341
6354
  */
6342
6355
  carouselCards?: Array<MessagingCarouselCard>;
6356
+ /**
6357
+ * Only with `carouselCards` (a 400 without them). Sets the creative's
6358
+ * `link_data.multi_share_optimized`. `false` keeps the cards in the order given;
6359
+ * Meta then takes at most 5 cards, so `false` with more than 5 `carouselCards` is a
6360
+ * 400. `true` lets Meta pick and reorder the cards for performance (up to 10).
6361
+ * Omitted, nothing is sent and Meta's default (`true`) applies. Single-creative
6362
+ * shape; for `creatives[]` set it per entry.
6363
+ *
6364
+ */
6365
+ optimizeCardOrder?: boolean;
6343
6366
  /**
6344
6367
  * Multi-creative shape: N CTWA ads under one campaign + one
6345
6368
  * ad set, sharing budget and targeting. Mutually exclusive
@@ -41757,7 +41780,7 @@ type ListAdSetsResponse = ({
41757
41780
  [key: string]: unknown;
41758
41781
  } | null;
41759
41782
  /**
41760
- * TikTok only, only with `live=true` and only on rows read live. TikTok's adgroup/get record verbatim (snake_case, TikTok's own names and enums): operation_status, optimization_goal, optimization_event, billing_event, bid_type, bid_price, budget, budget_mode, pacing, schedule_type, schedule_start_time, schedule_end_time, dayparting, placement_type, placements, location_ids, age_groups, gender, languages, interest_category_ids, interest_keyword_ids, actions, audience_ids, excluded_audience_ids, operating_systems, frequency, frequency_schedule, smart_audience_enabled, smart_interest_behavior_enabled. schedule_start_time and schedule_end_time are UTC wall clocks (YYYY-MM-DD HH:MM:SS). location_ids holds TikTok's native location ids (GeoNames ids for countries); GET /v1/ads/targeting/search?dimension=geo returns them as `platformId` on country results. Plus advertiser_currency and advertiser_timezone from TikTok's advertiser/info. A field TikTok does not return is absent.
41783
+ * TikTok only, only with `live=true` and only on rows read live. A fixed subset of TikTok's adgroup/get record, not the whole record (snake_case, TikTok's own names, enums and values): adgroup_id, campaign_id, operation_status, optimization_goal, optimization_event, billing_event, bid_type, bid_price, budget, budget_mode, pacing, schedule_type, schedule_start_time, schedule_end_time, dayparting, placement_type, placements, location_ids, age_groups, gender, languages, interest_category_ids, interest_keyword_ids, actions, audience_ids, excluded_audience_ids, operating_systems, frequency, frequency_schedule, smart_audience_enabled, smart_interest_behavior_enabled. schedule_start_time and schedule_end_time are UTC wall clocks (YYYY-MM-DD HH:MM:SS). location_ids holds TikTok's native location ids (GeoNames ids for countries); GET /v1/ads/targeting/search?dimension=geo returns them as `platformId` on country results. Plus advertiser_currency and advertiser_timezone from TikTok's advertiser/info. A field TikTok does not return is absent.
41761
41784
  */
41762
41785
  nativeSettings?: {
41763
41786
  [key: string]: unknown;
@@ -44851,6 +44874,10 @@ type CreateAdCreativeData = {
44851
44874
  description?: string;
44852
44875
  callToAction?: string;
44853
44876
  }>;
44877
+ /**
44878
+ * Only with `carouselCards` (a 400 without them). Sets `link_data.multi_share_optimized`: `false` keeps the cards in the order given, and Meta then takes at most 5 cards, so `false` with more than 5 cards is a 400; `true` lets Meta reorder them for performance. Omitted, nothing is sent and Meta's default (`true`) applies.
44879
+ */
44880
+ optimizeCardOrder?: boolean;
44854
44881
  /**
44855
44882
  * Appended to every outbound URL (e.g. utm_source=fb).
44856
44883
  */
@@ -47908,9 +47935,9 @@ type CreateStandaloneAdData = {
47908
47935
  *
47909
47936
  * Meta only. Hand-built carousel: 2-10 authored cards, sent in the order given as
47910
47937
  * the creative's `link_data.child_attachments`. Unlike `dynamicCreative`,
47911
- * you author every card's copy and link, but Meta may still reorder the cards
47912
- * for performance (`multi_share_optimized` defaults to true and Zernio does not
47913
- * send it), and no field fixes the order today. Requires top-level `body`
47938
+ * you author every card's copy and link, but by default Meta may still reorder the
47939
+ * cards for performance (`multi_share_optimized` defaults to true); send
47940
+ * `optimizeCardOrder: false` to keep the order given. Requires top-level `body`
47914
47941
  * and `callToAction`; `linkUrl` is also required UNLESS `leadGenFormId` is set. Those
47915
47942
  * become the ad's own Destination and button (`link_data.link` / `link_data.call_to_action`),
47916
47943
  * and double as the per-card fallback when a card omits its own.
@@ -47944,6 +47971,16 @@ type CreateStandaloneAdData = {
47944
47971
  */
47945
47972
  callToAction?: string;
47946
47973
  }>;
47974
+ /**
47975
+ * Meta only (a 400 on any other platform), and only with `carouselCards` (a 400
47976
+ * without them). Sets the creative's `link_data.multi_share_optimized`. `false`
47977
+ * keeps the cards in the order given; Meta then takes at most 5 cards, so `false`
47978
+ * with more than 5 `carouselCards` is a 400. `true` lets Meta pick and reorder the
47979
+ * cards for performance (up to 10). Omitted, nothing is sent and Meta's default
47980
+ * (`true`) applies.
47981
+ *
47982
+ */
47983
+ optimizeCardOrder?: boolean;
47947
47984
  /**
47948
47985
  * Meta only. Language the top-level copy is written in (e.g. `en`, `pt_BR`), used by the `translations` default rule. Defaults to `en`. Meta rejects a language asset feed whose default rule carries no locales of its own. Must NOT also appear as an entry in `translations`.
47949
47986
  */
package/dist/index.d.ts CHANGED
@@ -2572,7 +2572,7 @@ type AdCampaign = {
2572
2572
  */
2573
2573
  statusReadAt?: (string) | null;
2574
2574
  /**
2575
- * TikTok only, only on GET /v1/ads/campaigns with `live=true` and only on campaigns read live. TikTok's campaign/get record verbatim: operation_status, objective_type, budget_mode (BUDGET_MODE_INFINITE means no campaign budget, so budget lives on the ad groups), budget, and budget_optimize_on when TikTok returns it. Plus advertiser_currency and advertiser_timezone from TikTok's advertiser/info.
2575
+ * TikTok only, only on GET /v1/ads/campaigns with `live=true` and only on campaigns read live. A fixed subset of TikTok's campaign/get record, not the whole record: campaign_id, operation_status, objective_type, budget_mode (BUDGET_MODE_INFINITE means no campaign budget, so budget lives on the ad groups), budget, and budget_optimize_on, each with TikTok's own value and present only when TikTok returns it. Plus advertiser_currency and advertiser_timezone from TikTok's advertiser/info. Whether the campaign is Upgraded Smart+ is `isSmartPlus`.
2576
2576
  */
2577
2577
  nativeSettings?: {
2578
2578
  [key: string]: unknown;
@@ -2616,6 +2616,10 @@ type AdCampaign = {
2616
2616
  platformAdAccountName?: (string) | null;
2617
2617
  accountId?: string;
2618
2618
  profileId?: string;
2619
+ /**
2620
+ * TikTok only. true when the campaign is an Upgraded Smart+ campaign. See AdTreeCampaign.isSmartPlus.
2621
+ */
2622
+ isSmartPlus?: boolean;
2619
2623
  /**
2620
2624
  * Google-only. Raw campaign.advertising_channel_type. See AdTreeCampaign.advertisingChannelType.
2621
2625
  */
@@ -3381,6 +3385,10 @@ type AdTreeAdSet = {
3381
3385
  */
3382
3386
  createdTime?: (string) | null;
3383
3387
  adCount?: number;
3388
+ /**
3389
+ * TikTok only. true when this ad group belongs to an Upgraded Smart+ campaign. See AdTreeCampaign.isSmartPlus.
3390
+ */
3391
+ isSmartPlus?: boolean;
3384
3392
  /**
3385
3393
  * Effective budget at this level (back-compat). For CBO campaigns this mirrors the parent campaign's budget; for ABO this is the ad-set-specific budget. Use `adSetBudget` / parent `campaignBudget` + `budgetLevel` to disambiguate.
3386
3394
  */
@@ -3535,6 +3543,10 @@ type AdTreeCampaign = {
3535
3543
  platformAdAccountName?: (string) | null;
3536
3544
  accountId?: string;
3537
3545
  profileId?: string;
3546
+ /**
3547
+ * TikTok only. true when the campaign is an Upgraded Smart+ campaign (TikTok lists it on /smart_plus/campaign/get/), false when it is not. Set by ads sync, so the key is absent on other platforms and on TikTok campaigns not synced since this field shipped. On Smart+ objects Zernio can pause, resume, rename, delete and change the budget of the campaign and ad set, and pause or resume an ad; other edits answer 422 and belong in TikTok Ads Manager.
3548
+ */
3549
+ isSmartPlus?: boolean;
3538
3550
  /**
3539
3551
  * Google-only. Raw campaign.advertising_channel_type (SEARCH, PERFORMANCE_MAX, LOCAL_SERVICES, VIDEO, DEMAND_GEN, DISPLAY, SHOPPING, ...). Serving surface, distinct from platformObjective (advertiser intent). Null/absent for non-Google platforms.
3540
3552
  */
@@ -6326,8 +6338,9 @@ type CtwaAdRequestBody = {
6326
6338
  /**
6327
6339
  * Messaging and CTWA only (a 400 on POST /v1/ads/call). A hand-built carousel
6328
6340
  * of 2-10 image cards, sent to Meta in the order given as
6329
- * `link_data.child_attachments` (Meta may reorder them for performance, since
6330
- * `multi_share_optimized` defaults to true and no field fixes the order today); every
6341
+ * `link_data.child_attachments` (by default Meta may reorder them for performance,
6342
+ * since `multi_share_optimized` defaults to true; `optimizeCardOrder: false` keeps
6343
+ * the order given); every
6331
6344
  * card (and the carousel itself) carries the destination's messaging call to
6332
6345
  * action (WHATSAPP_MESSAGE, MESSAGE_PAGE or INSTAGRAM_MESSAGE), so a tap on any
6333
6346
  * card opens the conversation. Replaces `imageUrl` / `video` (sending either is
@@ -6340,6 +6353,16 @@ type CtwaAdRequestBody = {
6340
6353
  *
6341
6354
  */
6342
6355
  carouselCards?: Array<MessagingCarouselCard>;
6356
+ /**
6357
+ * Only with `carouselCards` (a 400 without them). Sets the creative's
6358
+ * `link_data.multi_share_optimized`. `false` keeps the cards in the order given;
6359
+ * Meta then takes at most 5 cards, so `false` with more than 5 `carouselCards` is a
6360
+ * 400. `true` lets Meta pick and reorder the cards for performance (up to 10).
6361
+ * Omitted, nothing is sent and Meta's default (`true`) applies. Single-creative
6362
+ * shape; for `creatives[]` set it per entry.
6363
+ *
6364
+ */
6365
+ optimizeCardOrder?: boolean;
6343
6366
  /**
6344
6367
  * Multi-creative shape: N CTWA ads under one campaign + one
6345
6368
  * ad set, sharing budget and targeting. Mutually exclusive
@@ -41757,7 +41780,7 @@ type ListAdSetsResponse = ({
41757
41780
  [key: string]: unknown;
41758
41781
  } | null;
41759
41782
  /**
41760
- * TikTok only, only with `live=true` and only on rows read live. TikTok's adgroup/get record verbatim (snake_case, TikTok's own names and enums): operation_status, optimization_goal, optimization_event, billing_event, bid_type, bid_price, budget, budget_mode, pacing, schedule_type, schedule_start_time, schedule_end_time, dayparting, placement_type, placements, location_ids, age_groups, gender, languages, interest_category_ids, interest_keyword_ids, actions, audience_ids, excluded_audience_ids, operating_systems, frequency, frequency_schedule, smart_audience_enabled, smart_interest_behavior_enabled. schedule_start_time and schedule_end_time are UTC wall clocks (YYYY-MM-DD HH:MM:SS). location_ids holds TikTok's native location ids (GeoNames ids for countries); GET /v1/ads/targeting/search?dimension=geo returns them as `platformId` on country results. Plus advertiser_currency and advertiser_timezone from TikTok's advertiser/info. A field TikTok does not return is absent.
41783
+ * TikTok only, only with `live=true` and only on rows read live. A fixed subset of TikTok's adgroup/get record, not the whole record (snake_case, TikTok's own names, enums and values): adgroup_id, campaign_id, operation_status, optimization_goal, optimization_event, billing_event, bid_type, bid_price, budget, budget_mode, pacing, schedule_type, schedule_start_time, schedule_end_time, dayparting, placement_type, placements, location_ids, age_groups, gender, languages, interest_category_ids, interest_keyword_ids, actions, audience_ids, excluded_audience_ids, operating_systems, frequency, frequency_schedule, smart_audience_enabled, smart_interest_behavior_enabled. schedule_start_time and schedule_end_time are UTC wall clocks (YYYY-MM-DD HH:MM:SS). location_ids holds TikTok's native location ids (GeoNames ids for countries); GET /v1/ads/targeting/search?dimension=geo returns them as `platformId` on country results. Plus advertiser_currency and advertiser_timezone from TikTok's advertiser/info. A field TikTok does not return is absent.
41761
41784
  */
41762
41785
  nativeSettings?: {
41763
41786
  [key: string]: unknown;
@@ -44851,6 +44874,10 @@ type CreateAdCreativeData = {
44851
44874
  description?: string;
44852
44875
  callToAction?: string;
44853
44876
  }>;
44877
+ /**
44878
+ * Only with `carouselCards` (a 400 without them). Sets `link_data.multi_share_optimized`: `false` keeps the cards in the order given, and Meta then takes at most 5 cards, so `false` with more than 5 cards is a 400; `true` lets Meta reorder them for performance. Omitted, nothing is sent and Meta's default (`true`) applies.
44879
+ */
44880
+ optimizeCardOrder?: boolean;
44854
44881
  /**
44855
44882
  * Appended to every outbound URL (e.g. utm_source=fb).
44856
44883
  */
@@ -47908,9 +47935,9 @@ type CreateStandaloneAdData = {
47908
47935
  *
47909
47936
  * Meta only. Hand-built carousel: 2-10 authored cards, sent in the order given as
47910
47937
  * the creative's `link_data.child_attachments`. Unlike `dynamicCreative`,
47911
- * you author every card's copy and link, but Meta may still reorder the cards
47912
- * for performance (`multi_share_optimized` defaults to true and Zernio does not
47913
- * send it), and no field fixes the order today. Requires top-level `body`
47938
+ * you author every card's copy and link, but by default Meta may still reorder the
47939
+ * cards for performance (`multi_share_optimized` defaults to true); send
47940
+ * `optimizeCardOrder: false` to keep the order given. Requires top-level `body`
47914
47941
  * and `callToAction`; `linkUrl` is also required UNLESS `leadGenFormId` is set. Those
47915
47942
  * become the ad's own Destination and button (`link_data.link` / `link_data.call_to_action`),
47916
47943
  * and double as the per-card fallback when a card omits its own.
@@ -47944,6 +47971,16 @@ type CreateStandaloneAdData = {
47944
47971
  */
47945
47972
  callToAction?: string;
47946
47973
  }>;
47974
+ /**
47975
+ * Meta only (a 400 on any other platform), and only with `carouselCards` (a 400
47976
+ * without them). Sets the creative's `link_data.multi_share_optimized`. `false`
47977
+ * keeps the cards in the order given; Meta then takes at most 5 cards, so `false`
47978
+ * with more than 5 `carouselCards` is a 400. `true` lets Meta pick and reorder the
47979
+ * cards for performance (up to 10). Omitted, nothing is sent and Meta's default
47980
+ * (`true`) applies.
47981
+ *
47982
+ */
47983
+ optimizeCardOrder?: boolean;
47947
47984
  /**
47948
47985
  * Meta only. Language the top-level copy is written in (e.g. `en`, `pt_BR`), used by the `translations` default rule. Defaults to `en`. Meta rejects a language asset feed whose default rule carries no locales of its own. Must NOT also appear as an entry in `translations`.
47949
47986
  */
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.1179",
39
+ version: "0.2.1181",
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.1179",
8
+ version: "0.2.1181",
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.1179",
3
+ "version": "0.2.1181",
4
4
  "description": "The official Node.js library for the Zernio API",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -10346,8 +10346,8 @@ export const updateCampaignTargeting = <ThrowOnError extends boolean = false>(op
10346
10346
  * The rolled-up `status` is not re-derived by a live read. On TikTok the same live read also
10347
10347
  * returns the ad group's applied `optimizationGoal` and `billingEvent`, as TikTok's adgroup/get
10348
10348
  * reports them, so you can verify the goal TikTok applied rather than the one you requested.
10349
- * It also returns `nativeSettings`: TikTok's own adgroup/get record for the ad group, verbatim and
10350
- * read in that same call (budget, budget_mode, schedule, placements, locations, ages, gender,
10349
+ * It also returns `nativeSettings`: a fixed subset of TikTok's own adgroup/get record for the ad group, with
10350
+ * TikTok's own values, read in that same call (budget, budget_mode, schedule, placements, locations, ages, gender,
10351
10351
  * languages, interests, actions, audiences and exclusions), plus the advertiser's currency and
10352
10352
  * timezone. TikTok's `schedule_start_time` / `schedule_end_time` are UTC wall clocks
10353
10353
  * ("YYYY-MM-DD HH:MM:SS", no offset); Ads Manager displays them in `advertiser_timezone`. `configReadAt` says when it was read; it
@@ -577,7 +577,7 @@ export type AdCampaign = {
577
577
  */
578
578
  statusReadAt?: (string) | null;
579
579
  /**
580
- * TikTok only, only on GET /v1/ads/campaigns with `live=true` and only on campaigns read live. TikTok's campaign/get record verbatim: operation_status, objective_type, budget_mode (BUDGET_MODE_INFINITE means no campaign budget, so budget lives on the ad groups), budget, and budget_optimize_on when TikTok returns it. Plus advertiser_currency and advertiser_timezone from TikTok's advertiser/info.
580
+ * TikTok only, only on GET /v1/ads/campaigns with `live=true` and only on campaigns read live. A fixed subset of TikTok's campaign/get record, not the whole record: campaign_id, operation_status, objective_type, budget_mode (BUDGET_MODE_INFINITE means no campaign budget, so budget lives on the ad groups), budget, and budget_optimize_on, each with TikTok's own value and present only when TikTok returns it. Plus advertiser_currency and advertiser_timezone from TikTok's advertiser/info. Whether the campaign is Upgraded Smart+ is `isSmartPlus`.
581
581
  */
582
582
  nativeSettings?: {
583
583
  [key: string]: unknown;
@@ -621,6 +621,10 @@ export type AdCampaign = {
621
621
  platformAdAccountName?: (string) | null;
622
622
  accountId?: string;
623
623
  profileId?: string;
624
+ /**
625
+ * TikTok only. true when the campaign is an Upgraded Smart+ campaign. See AdTreeCampaign.isSmartPlus.
626
+ */
627
+ isSmartPlus?: boolean;
624
628
  /**
625
629
  * Google-only. Raw campaign.advertising_channel_type. See AdTreeCampaign.advertisingChannelType.
626
630
  */
@@ -1413,6 +1417,10 @@ export type AdTreeAdSet = {
1413
1417
  */
1414
1418
  createdTime?: (string) | null;
1415
1419
  adCount?: number;
1420
+ /**
1421
+ * TikTok only. true when this ad group belongs to an Upgraded Smart+ campaign. See AdTreeCampaign.isSmartPlus.
1422
+ */
1423
+ isSmartPlus?: boolean;
1416
1424
  /**
1417
1425
  * Effective budget at this level (back-compat). For CBO campaigns this mirrors the parent campaign's budget; for ABO this is the ad-set-specific budget. Use `adSetBudget` / parent `campaignBudget` + `budgetLevel` to disambiguate.
1418
1426
  */
@@ -1568,6 +1576,10 @@ export type AdTreeCampaign = {
1568
1576
  platformAdAccountName?: (string) | null;
1569
1577
  accountId?: string;
1570
1578
  profileId?: string;
1579
+ /**
1580
+ * TikTok only. true when the campaign is an Upgraded Smart+ campaign (TikTok lists it on /smart_plus/campaign/get/), false when it is not. Set by ads sync, so the key is absent on other platforms and on TikTok campaigns not synced since this field shipped. On Smart+ objects Zernio can pause, resume, rename, delete and change the budget of the campaign and ad set, and pause or resume an ad; other edits answer 422 and belong in TikTok Ads Manager.
1581
+ */
1582
+ isSmartPlus?: boolean;
1571
1583
  /**
1572
1584
  * Google-only. Raw campaign.advertising_channel_type (SEARCH, PERFORMANCE_MAX, LOCAL_SERVICES, VIDEO, DEMAND_GEN, DISPLAY, SHOPPING, ...). Serving surface, distinct from platformObjective (advertiser intent). Null/absent for non-Google platforms.
1573
1585
  */
@@ -4505,8 +4517,9 @@ export type CtwaAdRequestBody = {
4505
4517
  /**
4506
4518
  * Messaging and CTWA only (a 400 on POST /v1/ads/call). A hand-built carousel
4507
4519
  * of 2-10 image cards, sent to Meta in the order given as
4508
- * `link_data.child_attachments` (Meta may reorder them for performance, since
4509
- * `multi_share_optimized` defaults to true and no field fixes the order today); every
4520
+ * `link_data.child_attachments` (by default Meta may reorder them for performance,
4521
+ * since `multi_share_optimized` defaults to true; `optimizeCardOrder: false` keeps
4522
+ * the order given); every
4510
4523
  * card (and the carousel itself) carries the destination's messaging call to
4511
4524
  * action (WHATSAPP_MESSAGE, MESSAGE_PAGE or INSTAGRAM_MESSAGE), so a tap on any
4512
4525
  * card opens the conversation. Replaces `imageUrl` / `video` (sending either is
@@ -4519,6 +4532,16 @@ export type CtwaAdRequestBody = {
4519
4532
  *
4520
4533
  */
4521
4534
  carouselCards?: Array<MessagingCarouselCard>;
4535
+ /**
4536
+ * Only with `carouselCards` (a 400 without them). Sets the creative's
4537
+ * `link_data.multi_share_optimized`. `false` keeps the cards in the order given;
4538
+ * Meta then takes at most 5 cards, so `false` with more than 5 `carouselCards` is a
4539
+ * 400. `true` lets Meta pick and reorder the cards for performance (up to 10).
4540
+ * Omitted, nothing is sent and Meta's default (`true`) applies. Single-creative
4541
+ * shape; for `creatives[]` set it per entry.
4542
+ *
4543
+ */
4544
+ optimizeCardOrder?: boolean;
4522
4545
  /**
4523
4546
  * Multi-creative shape: N CTWA ads under one campaign + one
4524
4547
  * ad set, sharing budget and targeting. Mutually exclusive
@@ -42225,7 +42248,7 @@ export type ListAdSetsResponse = ({
42225
42248
  [key: string]: unknown;
42226
42249
  } | null;
42227
42250
  /**
42228
- * TikTok only, only with `live=true` and only on rows read live. TikTok's adgroup/get record verbatim (snake_case, TikTok's own names and enums): operation_status, optimization_goal, optimization_event, billing_event, bid_type, bid_price, budget, budget_mode, pacing, schedule_type, schedule_start_time, schedule_end_time, dayparting, placement_type, placements, location_ids, age_groups, gender, languages, interest_category_ids, interest_keyword_ids, actions, audience_ids, excluded_audience_ids, operating_systems, frequency, frequency_schedule, smart_audience_enabled, smart_interest_behavior_enabled. schedule_start_time and schedule_end_time are UTC wall clocks (YYYY-MM-DD HH:MM:SS). location_ids holds TikTok's native location ids (GeoNames ids for countries); GET /v1/ads/targeting/search?dimension=geo returns them as `platformId` on country results. Plus advertiser_currency and advertiser_timezone from TikTok's advertiser/info. A field TikTok does not return is absent.
42251
+ * TikTok only, only with `live=true` and only on rows read live. A fixed subset of TikTok's adgroup/get record, not the whole record (snake_case, TikTok's own names, enums and values): adgroup_id, campaign_id, operation_status, optimization_goal, optimization_event, billing_event, bid_type, bid_price, budget, budget_mode, pacing, schedule_type, schedule_start_time, schedule_end_time, dayparting, placement_type, placements, location_ids, age_groups, gender, languages, interest_category_ids, interest_keyword_ids, actions, audience_ids, excluded_audience_ids, operating_systems, frequency, frequency_schedule, smart_audience_enabled, smart_interest_behavior_enabled. schedule_start_time and schedule_end_time are UTC wall clocks (YYYY-MM-DD HH:MM:SS). location_ids holds TikTok's native location ids (GeoNames ids for countries); GET /v1/ads/targeting/search?dimension=geo returns them as `platformId` on country results. Plus advertiser_currency and advertiser_timezone from TikTok's advertiser/info. A field TikTok does not return is absent.
42229
42252
  */
42230
42253
  nativeSettings?: {
42231
42254
  [key: string]: unknown;
@@ -45516,6 +45539,10 @@ export type CreateAdCreativeData = {
45516
45539
  description?: string;
45517
45540
  callToAction?: string;
45518
45541
  }>;
45542
+ /**
45543
+ * Only with `carouselCards` (a 400 without them). Sets `link_data.multi_share_optimized`: `false` keeps the cards in the order given, and Meta then takes at most 5 cards, so `false` with more than 5 cards is a 400; `true` lets Meta reorder them for performance. Omitted, nothing is sent and Meta's default (`true`) applies.
45544
+ */
45545
+ optimizeCardOrder?: boolean;
45519
45546
  /**
45520
45547
  * Appended to every outbound URL (e.g. utm_source=fb).
45521
45548
  */
@@ -48723,9 +48750,9 @@ export type CreateStandaloneAdData = {
48723
48750
  *
48724
48751
  * Meta only. Hand-built carousel: 2-10 authored cards, sent in the order given as
48725
48752
  * the creative's `link_data.child_attachments`. Unlike `dynamicCreative`,
48726
- * you author every card's copy and link, but Meta may still reorder the cards
48727
- * for performance (`multi_share_optimized` defaults to true and Zernio does not
48728
- * send it), and no field fixes the order today. Requires top-level `body`
48753
+ * you author every card's copy and link, but by default Meta may still reorder the
48754
+ * cards for performance (`multi_share_optimized` defaults to true); send
48755
+ * `optimizeCardOrder: false` to keep the order given. Requires top-level `body`
48729
48756
  * and `callToAction`; `linkUrl` is also required UNLESS `leadGenFormId` is set. Those
48730
48757
  * become the ad's own Destination and button (`link_data.link` / `link_data.call_to_action`),
48731
48758
  * and double as the per-card fallback when a card omits its own.
@@ -48759,6 +48786,16 @@ export type CreateStandaloneAdData = {
48759
48786
  */
48760
48787
  callToAction?: string;
48761
48788
  }>;
48789
+ /**
48790
+ * Meta only (a 400 on any other platform), and only with `carouselCards` (a 400
48791
+ * without them). Sets the creative's `link_data.multi_share_optimized`. `false`
48792
+ * keeps the cards in the order given; Meta then takes at most 5 cards, so `false`
48793
+ * with more than 5 `carouselCards` is a 400. `true` lets Meta pick and reorder the
48794
+ * cards for performance (up to 10). Omitted, nothing is sent and Meta's default
48795
+ * (`true`) applies.
48796
+ *
48797
+ */
48798
+ optimizeCardOrder?: boolean;
48762
48799
  /**
48763
48800
  * Meta only. Language the top-level copy is written in (e.g. `en`, `pt_BR`), used by the `translations` default rule. Defaults to `en`. Meta rejects a language asset feed whose default rule carries no locales of its own. Must NOT also appear as an entry in `translations`.
48764
48801
  */