@zernio/node 0.2.201 → 0.2.202

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
@@ -17581,6 +17581,18 @@ type CreateStandaloneAdData = {
17581
17581
  * Required on legacy + multi-creative shapes. Inherited on attach.
17582
17582
  */
17583
17583
  budgetType?: 'daily' | 'lifetime';
17584
+ /**
17585
+ * Meta only. Where the budget lives, which selects the Meta budget model:
17586
+ * - `adset` (default): ABO (Ad-set Budget Optimization). The budget is set on the
17587
+ * ad set. This is the back-compatible behaviour — omit this field to keep it.
17588
+ * - `campaign`: CBO (Campaign Budget Optimization / Advantage Campaign Budget). The
17589
+ * budget AND `bidStrategy` are set on the CAMPAIGN, and Meta distributes spend
17590
+ * across ad sets automatically.
17591
+ * Meta requires the budget at exactly one level, never both. Non-Meta platforms ignore
17592
+ * this field. Ignored on the attach shape (`adSetId`), which inherits the existing budget.
17593
+ *
17594
+ */
17595
+ budgetLevel?: 'adset' | 'campaign';
17584
17596
  currency?: string;
17585
17597
  /**
17586
17598
  * Required for Meta, Google, Pinterest, and LinkedIn on legacy + attach shapes (skip for multi-creative — use `creatives[].headline`). Ignored for TikTok and X/Twitter. Max: Meta=255, Google=30, Pinterest=100, LinkedIn=400. On LinkedIn this is the ad's headline (the bold text on the creative); for traffic ads it's the link card title.
@@ -17773,6 +17785,34 @@ type CreateStandaloneAdData = {
17773
17785
  * Language codes (e.g. ['en']). Restricts the audience by language.
17774
17786
  */
17775
17787
  languages?: Array<(string)>;
17788
+ /**
17789
+ * Meta only. Manual ad placements. Omit for automatic placements (Meta's default,
17790
+ * recommended for most cases — Meta optimises delivery across all eligible surfaces).
17791
+ * When set, restricts delivery to the chosen surfaces, mapped onto the ad set's
17792
+ * `targeting.{publisher_platforms, facebook_positions, instagram_positions,
17793
+ * messenger_positions, audience_network_positions, threads_positions,
17794
+ * whatsapp_positions, device_platforms}`. Enum membership is validated here; Meta
17795
+ * additionally enforces co-selection rules (e.g. some positions require their parent
17796
+ * publisher platform) and returns an actionable error which we surface. Non-Meta
17797
+ * platforms reject this field.
17798
+ *
17799
+ */
17800
+ placements?: {
17801
+ /**
17802
+ * Top-level platforms to deliver on. A position field below is only honoured when its parent platform is included here.
17803
+ */
17804
+ publisherPlatforms?: Array<('facebook' | 'instagram' | 'threads' | 'messenger' | 'audience_network')>;
17805
+ facebookPositions?: Array<('feed' | 'right_hand_column' | 'marketplace' | 'video_feeds' | 'story' | 'search' | 'instream_video' | 'facebook_reels' | 'facebook_reels_overlay' | 'profile_feed' | 'notification')>;
17806
+ instagramPositions?: Array<('stream' | 'story' | 'explore' | 'explore_home' | 'reels' | 'profile_feed' | 'ig_search' | 'profile_reels')>;
17807
+ messengerPositions?: Array<('messenger_home' | 'sponsored_messages' | 'story')>;
17808
+ audienceNetworkPositions?: Array<('classic' | 'rewarded_video')>;
17809
+ threadsPositions?: Array<('threads_stream')>;
17810
+ whatsappPositions?: Array<('status')>;
17811
+ /**
17812
+ * Restrict by device. Omit to deliver on both mobile and desktop.
17813
+ */
17814
+ devicePlatforms?: Array<('mobile' | 'desktop')>;
17815
+ };
17776
17816
  /**
17777
17817
  * ID of a `saved_targeting` audience (created via POST /v1/ads/audiences). When set, its stored
17778
17818
  * TargetingSpec is expanded as the base targeting; inline fields on this body merge on top. Lets you
@@ -17791,6 +17831,61 @@ type CreateStandaloneAdData = {
17791
17831
  * Required for lifetime budgets
17792
17832
  */
17793
17833
  endDate?: string;
17834
+ /**
17835
+ * Meta only. Ad-set start time (ISO 8601, e.g. "2026-06-10T09:00:00Z"), mapped to the
17836
+ * ad set's `start_time`. When omitted the ad starts delivering immediately. For lifetime
17837
+ * budgets Meta also requires `endDate`. (Same `schedule.startDate` semantics already
17838
+ * available on `POST /v1/ads/boost`.)
17839
+ *
17840
+ */
17841
+ startDate?: string;
17842
+ /**
17843
+ * Meta only. Override the Instagram account the ad is delivered as — pass an Instagram
17844
+ * Business Account ID (e.g. 17841...), mapped to the creative's `instagram_user_id`.
17845
+ * When omitted we auto-resolve the IG account linked to the connected Facebook Page
17846
+ * (the existing default). Useful when a Page has more than one eligible IG account.
17847
+ *
17848
+ */
17849
+ instagramAccountId?: string;
17850
+ /**
17851
+ * Meta only. Dynamic Creative: supply a POOL of assets and Meta auto-combines and
17852
+ * optimises them into the best-performing variations within a single ad (mapped to the
17853
+ * creative's `asset_feed_spec`). When set, the top-level single-creative fields
17854
+ * (`imageUrl`, `headline`, `body`, `linkUrl`, `callToAction`) are ignored. Mutually
17855
+ * exclusive with the `creatives[]` multi-creative shape. Meta limits: ≤10 images,
17856
+ * ≤5 bodies / titles / descriptions.
17857
+ *
17858
+ */
17859
+ dynamicCreative?: {
17860
+ /**
17861
+ * Pool of image URLs (1-10). Uploaded to the ad account and referenced by hash in the asset feed.
17862
+ */
17863
+ imageUrls: Array<(string)>;
17864
+ /**
17865
+ * Primary-text variations (the body copy).
17866
+ */
17867
+ bodies?: Array<(string)>;
17868
+ /**
17869
+ * Headline variations.
17870
+ */
17871
+ titles?: Array<(string)>;
17872
+ /**
17873
+ * Description (link caption) variations.
17874
+ */
17875
+ descriptions?: Array<(string)>;
17876
+ /**
17877
+ * Destination URL variations. At least one is required unless `goal` is `lead_generation`.
17878
+ */
17879
+ linkUrls?: Array<(string)>;
17880
+ /**
17881
+ * CTA-button variations. Required.
17882
+ */
17883
+ callToActionTypes?: Array<('LEARN_MORE' | 'SHOP_NOW' | 'SIGN_UP' | 'BOOK_TRAVEL' | 'CONTACT_US' | 'DOWNLOAD' | 'GET_OFFER' | 'GET_QUOTE' | 'SUBSCRIBE' | 'WATCH_MORE' | 'REGISTER' | 'JOIN' | 'ATTEND' | 'REQUEST_DEMO' | 'VIEW_QUOTE' | 'APPLY' | 'SEE_MORE' | 'BUY_NOW')>;
17884
+ /**
17885
+ * Asset-feed ad format. Defaults to SINGLE_IMAGE.
17886
+ */
17887
+ adFormat?: 'SINGLE_IMAGE' | 'CAROUSEL_IMAGE';
17888
+ };
17794
17889
  /**
17795
17890
  * Custom audience ID for targeting
17796
17891
  */
package/dist/index.d.ts CHANGED
@@ -17581,6 +17581,18 @@ type CreateStandaloneAdData = {
17581
17581
  * Required on legacy + multi-creative shapes. Inherited on attach.
17582
17582
  */
17583
17583
  budgetType?: 'daily' | 'lifetime';
17584
+ /**
17585
+ * Meta only. Where the budget lives, which selects the Meta budget model:
17586
+ * - `adset` (default): ABO (Ad-set Budget Optimization). The budget is set on the
17587
+ * ad set. This is the back-compatible behaviour — omit this field to keep it.
17588
+ * - `campaign`: CBO (Campaign Budget Optimization / Advantage Campaign Budget). The
17589
+ * budget AND `bidStrategy` are set on the CAMPAIGN, and Meta distributes spend
17590
+ * across ad sets automatically.
17591
+ * Meta requires the budget at exactly one level, never both. Non-Meta platforms ignore
17592
+ * this field. Ignored on the attach shape (`adSetId`), which inherits the existing budget.
17593
+ *
17594
+ */
17595
+ budgetLevel?: 'adset' | 'campaign';
17584
17596
  currency?: string;
17585
17597
  /**
17586
17598
  * Required for Meta, Google, Pinterest, and LinkedIn on legacy + attach shapes (skip for multi-creative — use `creatives[].headline`). Ignored for TikTok and X/Twitter. Max: Meta=255, Google=30, Pinterest=100, LinkedIn=400. On LinkedIn this is the ad's headline (the bold text on the creative); for traffic ads it's the link card title.
@@ -17773,6 +17785,34 @@ type CreateStandaloneAdData = {
17773
17785
  * Language codes (e.g. ['en']). Restricts the audience by language.
17774
17786
  */
17775
17787
  languages?: Array<(string)>;
17788
+ /**
17789
+ * Meta only. Manual ad placements. Omit for automatic placements (Meta's default,
17790
+ * recommended for most cases — Meta optimises delivery across all eligible surfaces).
17791
+ * When set, restricts delivery to the chosen surfaces, mapped onto the ad set's
17792
+ * `targeting.{publisher_platforms, facebook_positions, instagram_positions,
17793
+ * messenger_positions, audience_network_positions, threads_positions,
17794
+ * whatsapp_positions, device_platforms}`. Enum membership is validated here; Meta
17795
+ * additionally enforces co-selection rules (e.g. some positions require their parent
17796
+ * publisher platform) and returns an actionable error which we surface. Non-Meta
17797
+ * platforms reject this field.
17798
+ *
17799
+ */
17800
+ placements?: {
17801
+ /**
17802
+ * Top-level platforms to deliver on. A position field below is only honoured when its parent platform is included here.
17803
+ */
17804
+ publisherPlatforms?: Array<('facebook' | 'instagram' | 'threads' | 'messenger' | 'audience_network')>;
17805
+ facebookPositions?: Array<('feed' | 'right_hand_column' | 'marketplace' | 'video_feeds' | 'story' | 'search' | 'instream_video' | 'facebook_reels' | 'facebook_reels_overlay' | 'profile_feed' | 'notification')>;
17806
+ instagramPositions?: Array<('stream' | 'story' | 'explore' | 'explore_home' | 'reels' | 'profile_feed' | 'ig_search' | 'profile_reels')>;
17807
+ messengerPositions?: Array<('messenger_home' | 'sponsored_messages' | 'story')>;
17808
+ audienceNetworkPositions?: Array<('classic' | 'rewarded_video')>;
17809
+ threadsPositions?: Array<('threads_stream')>;
17810
+ whatsappPositions?: Array<('status')>;
17811
+ /**
17812
+ * Restrict by device. Omit to deliver on both mobile and desktop.
17813
+ */
17814
+ devicePlatforms?: Array<('mobile' | 'desktop')>;
17815
+ };
17776
17816
  /**
17777
17817
  * ID of a `saved_targeting` audience (created via POST /v1/ads/audiences). When set, its stored
17778
17818
  * TargetingSpec is expanded as the base targeting; inline fields on this body merge on top. Lets you
@@ -17791,6 +17831,61 @@ type CreateStandaloneAdData = {
17791
17831
  * Required for lifetime budgets
17792
17832
  */
17793
17833
  endDate?: string;
17834
+ /**
17835
+ * Meta only. Ad-set start time (ISO 8601, e.g. "2026-06-10T09:00:00Z"), mapped to the
17836
+ * ad set's `start_time`. When omitted the ad starts delivering immediately. For lifetime
17837
+ * budgets Meta also requires `endDate`. (Same `schedule.startDate` semantics already
17838
+ * available on `POST /v1/ads/boost`.)
17839
+ *
17840
+ */
17841
+ startDate?: string;
17842
+ /**
17843
+ * Meta only. Override the Instagram account the ad is delivered as — pass an Instagram
17844
+ * Business Account ID (e.g. 17841...), mapped to the creative's `instagram_user_id`.
17845
+ * When omitted we auto-resolve the IG account linked to the connected Facebook Page
17846
+ * (the existing default). Useful when a Page has more than one eligible IG account.
17847
+ *
17848
+ */
17849
+ instagramAccountId?: string;
17850
+ /**
17851
+ * Meta only. Dynamic Creative: supply a POOL of assets and Meta auto-combines and
17852
+ * optimises them into the best-performing variations within a single ad (mapped to the
17853
+ * creative's `asset_feed_spec`). When set, the top-level single-creative fields
17854
+ * (`imageUrl`, `headline`, `body`, `linkUrl`, `callToAction`) are ignored. Mutually
17855
+ * exclusive with the `creatives[]` multi-creative shape. Meta limits: ≤10 images,
17856
+ * ≤5 bodies / titles / descriptions.
17857
+ *
17858
+ */
17859
+ dynamicCreative?: {
17860
+ /**
17861
+ * Pool of image URLs (1-10). Uploaded to the ad account and referenced by hash in the asset feed.
17862
+ */
17863
+ imageUrls: Array<(string)>;
17864
+ /**
17865
+ * Primary-text variations (the body copy).
17866
+ */
17867
+ bodies?: Array<(string)>;
17868
+ /**
17869
+ * Headline variations.
17870
+ */
17871
+ titles?: Array<(string)>;
17872
+ /**
17873
+ * Description (link caption) variations.
17874
+ */
17875
+ descriptions?: Array<(string)>;
17876
+ /**
17877
+ * Destination URL variations. At least one is required unless `goal` is `lead_generation`.
17878
+ */
17879
+ linkUrls?: Array<(string)>;
17880
+ /**
17881
+ * CTA-button variations. Required.
17882
+ */
17883
+ callToActionTypes?: Array<('LEARN_MORE' | 'SHOP_NOW' | 'SIGN_UP' | 'BOOK_TRAVEL' | 'CONTACT_US' | 'DOWNLOAD' | 'GET_OFFER' | 'GET_QUOTE' | 'SUBSCRIBE' | 'WATCH_MORE' | 'REGISTER' | 'JOIN' | 'ATTEND' | 'REQUEST_DEMO' | 'VIEW_QUOTE' | 'APPLY' | 'SEE_MORE' | 'BUY_NOW')>;
17884
+ /**
17885
+ * Asset-feed ad format. Defaults to SINGLE_IMAGE.
17886
+ */
17887
+ adFormat?: 'SINGLE_IMAGE' | 'CAROUSEL_IMAGE';
17888
+ };
17794
17889
  /**
17795
17890
  * Custom audience ID for targeting
17796
17891
  */
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: "@zernio/node",
39
- version: "0.2.201",
39
+ version: "0.2.202",
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: "@zernio/node",
8
- version: "0.2.201",
8
+ version: "0.2.202",
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": "@zernio/node",
3
- "version": "0.2.201",
3
+ "version": "0.2.202",
4
4
  "description": "The official Node.js library for the Zernio API",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -18043,6 +18043,18 @@ export type CreateStandaloneAdData = {
18043
18043
  * Required on legacy + multi-creative shapes. Inherited on attach.
18044
18044
  */
18045
18045
  budgetType?: 'daily' | 'lifetime';
18046
+ /**
18047
+ * Meta only. Where the budget lives, which selects the Meta budget model:
18048
+ * - `adset` (default): ABO (Ad-set Budget Optimization). The budget is set on the
18049
+ * ad set. This is the back-compatible behaviour — omit this field to keep it.
18050
+ * - `campaign`: CBO (Campaign Budget Optimization / Advantage Campaign Budget). The
18051
+ * budget AND `bidStrategy` are set on the CAMPAIGN, and Meta distributes spend
18052
+ * across ad sets automatically.
18053
+ * Meta requires the budget at exactly one level, never both. Non-Meta platforms ignore
18054
+ * this field. Ignored on the attach shape (`adSetId`), which inherits the existing budget.
18055
+ *
18056
+ */
18057
+ budgetLevel?: 'adset' | 'campaign';
18046
18058
  currency?: string;
18047
18059
  /**
18048
18060
  * Required for Meta, Google, Pinterest, and LinkedIn on legacy + attach shapes (skip for multi-creative — use `creatives[].headline`). Ignored for TikTok and X/Twitter. Max: Meta=255, Google=30, Pinterest=100, LinkedIn=400. On LinkedIn this is the ad's headline (the bold text on the creative); for traffic ads it's the link card title.
@@ -18235,6 +18247,34 @@ export type CreateStandaloneAdData = {
18235
18247
  * Language codes (e.g. ['en']). Restricts the audience by language.
18236
18248
  */
18237
18249
  languages?: Array<(string)>;
18250
+ /**
18251
+ * Meta only. Manual ad placements. Omit for automatic placements (Meta's default,
18252
+ * recommended for most cases — Meta optimises delivery across all eligible surfaces).
18253
+ * When set, restricts delivery to the chosen surfaces, mapped onto the ad set's
18254
+ * `targeting.{publisher_platforms, facebook_positions, instagram_positions,
18255
+ * messenger_positions, audience_network_positions, threads_positions,
18256
+ * whatsapp_positions, device_platforms}`. Enum membership is validated here; Meta
18257
+ * additionally enforces co-selection rules (e.g. some positions require their parent
18258
+ * publisher platform) and returns an actionable error which we surface. Non-Meta
18259
+ * platforms reject this field.
18260
+ *
18261
+ */
18262
+ placements?: {
18263
+ /**
18264
+ * Top-level platforms to deliver on. A position field below is only honoured when its parent platform is included here.
18265
+ */
18266
+ publisherPlatforms?: Array<('facebook' | 'instagram' | 'threads' | 'messenger' | 'audience_network')>;
18267
+ facebookPositions?: Array<('feed' | 'right_hand_column' | 'marketplace' | 'video_feeds' | 'story' | 'search' | 'instream_video' | 'facebook_reels' | 'facebook_reels_overlay' | 'profile_feed' | 'notification')>;
18268
+ instagramPositions?: Array<('stream' | 'story' | 'explore' | 'explore_home' | 'reels' | 'profile_feed' | 'ig_search' | 'profile_reels')>;
18269
+ messengerPositions?: Array<('messenger_home' | 'sponsored_messages' | 'story')>;
18270
+ audienceNetworkPositions?: Array<('classic' | 'rewarded_video')>;
18271
+ threadsPositions?: Array<('threads_stream')>;
18272
+ whatsappPositions?: Array<('status')>;
18273
+ /**
18274
+ * Restrict by device. Omit to deliver on both mobile and desktop.
18275
+ */
18276
+ devicePlatforms?: Array<('mobile' | 'desktop')>;
18277
+ };
18238
18278
  /**
18239
18279
  * ID of a `saved_targeting` audience (created via POST /v1/ads/audiences). When set, its stored
18240
18280
  * TargetingSpec is expanded as the base targeting; inline fields on this body merge on top. Lets you
@@ -18253,6 +18293,61 @@ export type CreateStandaloneAdData = {
18253
18293
  * Required for lifetime budgets
18254
18294
  */
18255
18295
  endDate?: string;
18296
+ /**
18297
+ * Meta only. Ad-set start time (ISO 8601, e.g. "2026-06-10T09:00:00Z"), mapped to the
18298
+ * ad set's `start_time`. When omitted the ad starts delivering immediately. For lifetime
18299
+ * budgets Meta also requires `endDate`. (Same `schedule.startDate` semantics already
18300
+ * available on `POST /v1/ads/boost`.)
18301
+ *
18302
+ */
18303
+ startDate?: string;
18304
+ /**
18305
+ * Meta only. Override the Instagram account the ad is delivered as — pass an Instagram
18306
+ * Business Account ID (e.g. 17841...), mapped to the creative's `instagram_user_id`.
18307
+ * When omitted we auto-resolve the IG account linked to the connected Facebook Page
18308
+ * (the existing default). Useful when a Page has more than one eligible IG account.
18309
+ *
18310
+ */
18311
+ instagramAccountId?: string;
18312
+ /**
18313
+ * Meta only. Dynamic Creative: supply a POOL of assets and Meta auto-combines and
18314
+ * optimises them into the best-performing variations within a single ad (mapped to the
18315
+ * creative's `asset_feed_spec`). When set, the top-level single-creative fields
18316
+ * (`imageUrl`, `headline`, `body`, `linkUrl`, `callToAction`) are ignored. Mutually
18317
+ * exclusive with the `creatives[]` multi-creative shape. Meta limits: ≤10 images,
18318
+ * ≤5 bodies / titles / descriptions.
18319
+ *
18320
+ */
18321
+ dynamicCreative?: {
18322
+ /**
18323
+ * Pool of image URLs (1-10). Uploaded to the ad account and referenced by hash in the asset feed.
18324
+ */
18325
+ imageUrls: Array<(string)>;
18326
+ /**
18327
+ * Primary-text variations (the body copy).
18328
+ */
18329
+ bodies?: Array<(string)>;
18330
+ /**
18331
+ * Headline variations.
18332
+ */
18333
+ titles?: Array<(string)>;
18334
+ /**
18335
+ * Description (link caption) variations.
18336
+ */
18337
+ descriptions?: Array<(string)>;
18338
+ /**
18339
+ * Destination URL variations. At least one is required unless `goal` is `lead_generation`.
18340
+ */
18341
+ linkUrls?: Array<(string)>;
18342
+ /**
18343
+ * CTA-button variations. Required.
18344
+ */
18345
+ callToActionTypes?: Array<('LEARN_MORE' | 'SHOP_NOW' | 'SIGN_UP' | 'BOOK_TRAVEL' | 'CONTACT_US' | 'DOWNLOAD' | 'GET_OFFER' | 'GET_QUOTE' | 'SUBSCRIBE' | 'WATCH_MORE' | 'REGISTER' | 'JOIN' | 'ATTEND' | 'REQUEST_DEMO' | 'VIEW_QUOTE' | 'APPLY' | 'SEE_MORE' | 'BUY_NOW')>;
18346
+ /**
18347
+ * Asset-feed ad format. Defaults to SINGLE_IMAGE.
18348
+ */
18349
+ adFormat?: 'SINGLE_IMAGE' | 'CAROUSEL_IMAGE';
18350
+ };
18256
18351
  /**
18257
18352
  * Custom audience ID for targeting
18258
18353
  */