@zernio/node 0.2.527 → 0.2.529

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
@@ -3025,13 +3025,27 @@ type CtwaAdRequestBody = {
3025
3025
  thumbnailUrl: string;
3026
3026
  };
3027
3027
  }>;
3028
+ /**
3029
+ * Attach the creatives to this EXISTING messaging ad set instead of
3030
+ * building a campaign, so the ad set keeps its learning phase. It then
3031
+ * owns budget, targeting and schedule, so `budgetAmount`, `budgetType`,
3032
+ * `endDate`, `objective`, `countries`, `interests` and `audienceId` are
3033
+ * rejected with a 400 alongside it. Its `destination_type` must match
3034
+ * the ad's destination.
3035
+ *
3036
+ */
3037
+ adSetId?: string;
3028
3038
  /**
3029
3039
  * Budget amount in the ad account's currency major units
3030
3040
  * (e.g. dollars for USD, not cents). Must be > 0.
3041
+ * Required unless `adSetId` is set, where the ad set owns it.
3031
3042
  *
3032
3043
  */
3033
- budgetAmount: number;
3034
- budgetType: 'daily' | 'lifetime';
3044
+ budgetAmount?: number;
3045
+ /**
3046
+ * Required unless `adSetId` is set.
3047
+ */
3048
+ budgetType?: 'daily' | 'lifetime';
3035
3049
  /**
3036
3050
  * ISO 4217 currency code matching the ad account's currency
3037
3051
  * (e.g. `USD`). Optional; Meta infers from the ad account
@@ -3200,6 +3214,9 @@ type CtwaAdRequestBody = {
3200
3214
  */
3201
3215
  dsaPayor?: string;
3202
3216
  };
3217
+ /**
3218
+ * Required unless `adSetId` is set.
3219
+ */
3203
3220
  type budgetType = 'daily' | 'lifetime';
3204
3221
  /**
3205
3222
  * Meta's Advantage+ audience expansion. `0` (default) keeps
@@ -17468,7 +17485,7 @@ type SendInboxMessageData = {
17468
17485
  };
17469
17486
  path: {
17470
17487
  /**
17471
- * The conversation ID (id field from list conversations endpoint). This is the platform-specific conversation identifier, not an internal database ID.
17488
+ * Opaque conversation identifier, accepted verbatim from the list endpoint or from the conversationId on inbox webhooks. Format not to be assumed.
17472
17489
  */
17473
17490
  conversationId: string;
17474
17491
  };
@@ -28231,13 +28248,28 @@ type BoostPostData = {
28231
28248
  * Available goals vary by platform. Meta (Facebook/Instagram) and TikTok support all 7. LinkedIn supports all except app_promotion. Twitter/X supports engagement, traffic, awareness, video_views, app_promotion. Pinterest and Google Ads support only engagement, traffic, awareness, video_views.
28232
28249
  */
28233
28250
  goal: 'engagement' | 'traffic' | 'awareness' | 'video_views' | 'lead_generation' | 'conversions' | 'app_promotion';
28234
- budget: {
28251
+ /**
28252
+ * Meta only. Attach the boosted post to this existing ad set instead of creating a campaign. The ad set then owns budget, schedule and targeting; sending those too is a 400.
28253
+ */
28254
+ adSetId?: string;
28255
+ /**
28256
+ * Required unless adSetId is set.
28257
+ */
28258
+ budget?: {
28235
28259
  /**
28236
28260
  * Minimum varies: TikTok=$20, Pinterest=$5, others=$1
28237
28261
  */
28238
28262
  amount: number;
28239
28263
  type: 'daily' | 'lifetime';
28240
28264
  };
28265
+ /**
28266
+ * Meta only. Instagram identity the ad runs AS (creative.instagram_user_id), overriding the account linked to the Page. Live-verified against a Page-post creative.
28267
+ */
28268
+ instagramAccountId?: string;
28269
+ /**
28270
+ * Meta only. Ad-set destination_type — where the click LANDS, as opposed to instagramAccountId which is who the ad runs as. Lead ads force ON_AD and ignore this.
28271
+ */
28272
+ destinationType?: 'INSTAGRAM_PROFILE' | 'WEBSITE' | 'ON_AD' | 'MESSENGER' | 'WHATSAPP';
28241
28273
  currency?: string;
28242
28274
  schedule?: {
28243
28275
  startDate?: string;
@@ -28403,20 +28435,32 @@ type BoostPostData = {
28403
28435
  */
28404
28436
  specialAdCategoryCountry?: Array<(string)>;
28405
28437
  /**
28406
- * TikTok-only. Custom destination URL for the Spark Ad. Without this, TikTok
28407
- * Spark Ads have no clickable destination — required for traffic / conversion
28408
- * objectives. Maps to `landing_page_url` on the creative entry of /v2/ad/create/
28409
- * (TikTok SDK `AdcreateCreatives.landing_page_url`). Ignored on Meta / LinkedIn /
28410
- * Pinterest / X / Google (those infer the destination from the boosted post).
28438
+ * Destination URL for the CTA button. Send it together with `callToAction`.
28439
+ *
28440
+ * **Meta**: adds a top-level `call_to_action` to the post-reference creative.
28441
+ * This is what gives a `traffic` boost a clickable destination without
28442
+ * replacing the creative and losing the post's social proof. Ignored when
28443
+ * `leadGenFormId` is set, which supplies its own destination. Live-verified
28444
+ * against a Page-post creative.
28445
+ *
28446
+ * **TikTok**: maps to `landing_page_url` on the Spark Ad creative
28447
+ * (`AdcreateCreatives.landing_page_url`); Spark Ads have no clickable
28448
+ * destination without it.
28449
+ *
28450
+ * Ignored on LinkedIn / Pinterest / X / Google, which infer the destination
28451
+ * from the boosted post.
28411
28452
  *
28412
28453
  */
28413
28454
  linkUrl?: string;
28414
28455
  /**
28415
- * TikTok-only. Call-to-action button label on the Spark Ad creative (e.g.
28416
- * `LEARN_MORE`, `SHOP_NOW`, `DOWNLOAD_NOW`, `SIGN_UP`, `WATCH_NOW`). Maps to
28417
- * `call_to_action` on the creative entry of /v2/ad/create/. Pass-through —
28418
- * the platform validates the value. See TikTok's "Enumeration - Call-to-Action"
28419
- * reference for the full list.
28456
+ * CTA button label. Send it together with `linkUrl` — a CTA without a
28457
+ * destination produces a button that goes nowhere, so sending one alone is a 400.
28458
+ *
28459
+ * **Meta**: validated against the Meta CTA enum (same values as
28460
+ * POST /v1/ads/create), e.g. `LEARN_MORE`, `SHOP_NOW`, `SIGN_UP`.
28461
+ *
28462
+ * **TikTok**: pass-through to `call_to_action` on the Spark Ad creative; the
28463
+ * platform validates the value. See TikTok's "Enumeration - Call-to-Action".
28420
28464
  *
28421
28465
  */
28422
28466
  callToAction?: string;
package/dist/index.d.ts CHANGED
@@ -3025,13 +3025,27 @@ type CtwaAdRequestBody = {
3025
3025
  thumbnailUrl: string;
3026
3026
  };
3027
3027
  }>;
3028
+ /**
3029
+ * Attach the creatives to this EXISTING messaging ad set instead of
3030
+ * building a campaign, so the ad set keeps its learning phase. It then
3031
+ * owns budget, targeting and schedule, so `budgetAmount`, `budgetType`,
3032
+ * `endDate`, `objective`, `countries`, `interests` and `audienceId` are
3033
+ * rejected with a 400 alongside it. Its `destination_type` must match
3034
+ * the ad's destination.
3035
+ *
3036
+ */
3037
+ adSetId?: string;
3028
3038
  /**
3029
3039
  * Budget amount in the ad account's currency major units
3030
3040
  * (e.g. dollars for USD, not cents). Must be > 0.
3041
+ * Required unless `adSetId` is set, where the ad set owns it.
3031
3042
  *
3032
3043
  */
3033
- budgetAmount: number;
3034
- budgetType: 'daily' | 'lifetime';
3044
+ budgetAmount?: number;
3045
+ /**
3046
+ * Required unless `adSetId` is set.
3047
+ */
3048
+ budgetType?: 'daily' | 'lifetime';
3035
3049
  /**
3036
3050
  * ISO 4217 currency code matching the ad account's currency
3037
3051
  * (e.g. `USD`). Optional; Meta infers from the ad account
@@ -3200,6 +3214,9 @@ type CtwaAdRequestBody = {
3200
3214
  */
3201
3215
  dsaPayor?: string;
3202
3216
  };
3217
+ /**
3218
+ * Required unless `adSetId` is set.
3219
+ */
3203
3220
  type budgetType = 'daily' | 'lifetime';
3204
3221
  /**
3205
3222
  * Meta's Advantage+ audience expansion. `0` (default) keeps
@@ -17468,7 +17485,7 @@ type SendInboxMessageData = {
17468
17485
  };
17469
17486
  path: {
17470
17487
  /**
17471
- * The conversation ID (id field from list conversations endpoint). This is the platform-specific conversation identifier, not an internal database ID.
17488
+ * Opaque conversation identifier, accepted verbatim from the list endpoint or from the conversationId on inbox webhooks. Format not to be assumed.
17472
17489
  */
17473
17490
  conversationId: string;
17474
17491
  };
@@ -28231,13 +28248,28 @@ type BoostPostData = {
28231
28248
  * Available goals vary by platform. Meta (Facebook/Instagram) and TikTok support all 7. LinkedIn supports all except app_promotion. Twitter/X supports engagement, traffic, awareness, video_views, app_promotion. Pinterest and Google Ads support only engagement, traffic, awareness, video_views.
28232
28249
  */
28233
28250
  goal: 'engagement' | 'traffic' | 'awareness' | 'video_views' | 'lead_generation' | 'conversions' | 'app_promotion';
28234
- budget: {
28251
+ /**
28252
+ * Meta only. Attach the boosted post to this existing ad set instead of creating a campaign. The ad set then owns budget, schedule and targeting; sending those too is a 400.
28253
+ */
28254
+ adSetId?: string;
28255
+ /**
28256
+ * Required unless adSetId is set.
28257
+ */
28258
+ budget?: {
28235
28259
  /**
28236
28260
  * Minimum varies: TikTok=$20, Pinterest=$5, others=$1
28237
28261
  */
28238
28262
  amount: number;
28239
28263
  type: 'daily' | 'lifetime';
28240
28264
  };
28265
+ /**
28266
+ * Meta only. Instagram identity the ad runs AS (creative.instagram_user_id), overriding the account linked to the Page. Live-verified against a Page-post creative.
28267
+ */
28268
+ instagramAccountId?: string;
28269
+ /**
28270
+ * Meta only. Ad-set destination_type — where the click LANDS, as opposed to instagramAccountId which is who the ad runs as. Lead ads force ON_AD and ignore this.
28271
+ */
28272
+ destinationType?: 'INSTAGRAM_PROFILE' | 'WEBSITE' | 'ON_AD' | 'MESSENGER' | 'WHATSAPP';
28241
28273
  currency?: string;
28242
28274
  schedule?: {
28243
28275
  startDate?: string;
@@ -28403,20 +28435,32 @@ type BoostPostData = {
28403
28435
  */
28404
28436
  specialAdCategoryCountry?: Array<(string)>;
28405
28437
  /**
28406
- * TikTok-only. Custom destination URL for the Spark Ad. Without this, TikTok
28407
- * Spark Ads have no clickable destination — required for traffic / conversion
28408
- * objectives. Maps to `landing_page_url` on the creative entry of /v2/ad/create/
28409
- * (TikTok SDK `AdcreateCreatives.landing_page_url`). Ignored on Meta / LinkedIn /
28410
- * Pinterest / X / Google (those infer the destination from the boosted post).
28438
+ * Destination URL for the CTA button. Send it together with `callToAction`.
28439
+ *
28440
+ * **Meta**: adds a top-level `call_to_action` to the post-reference creative.
28441
+ * This is what gives a `traffic` boost a clickable destination without
28442
+ * replacing the creative and losing the post's social proof. Ignored when
28443
+ * `leadGenFormId` is set, which supplies its own destination. Live-verified
28444
+ * against a Page-post creative.
28445
+ *
28446
+ * **TikTok**: maps to `landing_page_url` on the Spark Ad creative
28447
+ * (`AdcreateCreatives.landing_page_url`); Spark Ads have no clickable
28448
+ * destination without it.
28449
+ *
28450
+ * Ignored on LinkedIn / Pinterest / X / Google, which infer the destination
28451
+ * from the boosted post.
28411
28452
  *
28412
28453
  */
28413
28454
  linkUrl?: string;
28414
28455
  /**
28415
- * TikTok-only. Call-to-action button label on the Spark Ad creative (e.g.
28416
- * `LEARN_MORE`, `SHOP_NOW`, `DOWNLOAD_NOW`, `SIGN_UP`, `WATCH_NOW`). Maps to
28417
- * `call_to_action` on the creative entry of /v2/ad/create/. Pass-through —
28418
- * the platform validates the value. See TikTok's "Enumeration - Call-to-Action"
28419
- * reference for the full list.
28456
+ * CTA button label. Send it together with `linkUrl` — a CTA without a
28457
+ * destination produces a button that goes nowhere, so sending one alone is a 400.
28458
+ *
28459
+ * **Meta**: validated against the Meta CTA enum (same values as
28460
+ * POST /v1/ads/create), e.g. `LEARN_MORE`, `SHOP_NOW`, `SIGN_UP`.
28461
+ *
28462
+ * **TikTok**: pass-through to `call_to_action` on the Spark Ad creative; the
28463
+ * platform validates the value. See TikTok's "Enumeration - Call-to-Action".
28420
28464
  *
28421
28465
  */
28422
28466
  callToAction?: string;
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.527",
39
+ version: "0.2.529",
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.527",
8
+ version: "0.2.529",
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.527",
3
+ "version": "0.2.529",
4
4
  "description": "The official Node.js library for the Zernio API",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -7855,7 +7855,19 @@ export const getDsaRecommendations = <ThrowOnError extends boolean = false>(opti
7855
7855
 
7856
7856
  /**
7857
7857
  * Boost post as ad
7858
- * Creates a paid ad campaign from an existing published post. Creates the full platform campaign hierarchy (campaign, ad set, ad).
7858
+ * Creates a paid ad from an existing published post, keeping the post's
7859
+ * engagement. By default it provisions the whole hierarchy (campaign, ad
7860
+ * set, ad).
7861
+ *
7862
+ * **Attach shape (Meta).** Send `adSetId` to put the ad under an EXISTING
7863
+ * ad set instead, so that ad set keeps its learning phase. It then owns
7864
+ * `budget`, `schedule` and `targeting`, and sending any of those alongside
7865
+ * `adSetId` is a 400 rather than a silent drop. `budget` is required only
7866
+ * without `adSetId`.
7867
+ *
7868
+ * `instagramAccountId`, `destinationType` and `adSetId` are Meta-only and
7869
+ * return 400 on other platforms.
7870
+ *
7859
7871
  */
7860
7872
  export const boostPost = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<BoostPostData, ThrowOnError>) => {
7861
7873
  return (options?.client ?? client).post<BoostPostResponse, BoostPostError, ThrowOnError>({
@@ -8608,6 +8620,8 @@ export const createCallAd = <ThrowOnError extends boolean = false>(options: Opti
8608
8620
  *
8609
8621
  * - **Multi-creative**: supply a `creatives[]` array with N entries (each carrying its own headline, body, and image/video). Creates 1 campaign + 1 ad set + N ads sharing budget and targeting so Meta A/Bs the creatives inside a single auction instead of fragmenting budget across N parallel campaigns. Recommended when launching multiple creative variants for the same campaign.
8610
8622
  *
8623
+ * **Attach shape.** Send `adSetId` (with either creative shape) to add the ads to an EXISTING messaging ad set instead of building a campaign, so the ad set keeps its learning phase — the way to refresh a CTWA creative without resetting delivery. The ad set then owns budget, targeting and schedule, so `budgetAmount`, `budgetType`, `endDate`, `objective`, `countries`, `interests` and `audienceId` are rejected with a 400 alongside it rather than silently dropped. The target ad set's `destination_type` must match the ad's destination (a WhatsApp ad needs a `WHATSAPP` ad set), otherwise Meta would accept an ad that never delivers.
8624
+ *
8611
8625
  * Prerequisites enforced by Meta (surfaced as platform_error on failure): the Facebook Page must be paired with a verified WhatsApp Business number, the WhatsApp Business Account must be business-verified, and the Meta access token must carry ads_management.
8612
8626
  */
8613
8627
  export const createCtwaAd = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateCtwaAdData, ThrowOnError>) => {
@@ -1854,13 +1854,27 @@ export type CtwaAdRequestBody = {
1854
1854
  thumbnailUrl: string;
1855
1855
  };
1856
1856
  }>;
1857
+ /**
1858
+ * Attach the creatives to this EXISTING messaging ad set instead of
1859
+ * building a campaign, so the ad set keeps its learning phase. It then
1860
+ * owns budget, targeting and schedule, so `budgetAmount`, `budgetType`,
1861
+ * `endDate`, `objective`, `countries`, `interests` and `audienceId` are
1862
+ * rejected with a 400 alongside it. Its `destination_type` must match
1863
+ * the ad's destination.
1864
+ *
1865
+ */
1866
+ adSetId?: string;
1857
1867
  /**
1858
1868
  * Budget amount in the ad account's currency major units
1859
1869
  * (e.g. dollars for USD, not cents). Must be > 0.
1870
+ * Required unless `adSetId` is set, where the ad set owns it.
1860
1871
  *
1861
1872
  */
1862
- budgetAmount: number;
1863
- budgetType: 'daily' | 'lifetime';
1873
+ budgetAmount?: number;
1874
+ /**
1875
+ * Required unless `adSetId` is set.
1876
+ */
1877
+ budgetType?: 'daily' | 'lifetime';
1864
1878
  /**
1865
1879
  * ISO 4217 currency code matching the ad account's currency
1866
1880
  * (e.g. `USD`). Optional; Meta infers from the ad account
@@ -2030,6 +2044,9 @@ export type CtwaAdRequestBody = {
2030
2044
  dsaPayor?: string;
2031
2045
  };
2032
2046
 
2047
+ /**
2048
+ * Required unless `adSetId` is set.
2049
+ */
2033
2050
  export type budgetType = 'daily' | 'lifetime';
2034
2051
 
2035
2052
  /**
@@ -17131,7 +17148,7 @@ export type SendInboxMessageData = {
17131
17148
  };
17132
17149
  path: {
17133
17150
  /**
17134
- * The conversation ID (id field from list conversations endpoint). This is the platform-specific conversation identifier, not an internal database ID.
17151
+ * Opaque conversation identifier, accepted verbatim from the list endpoint or from the conversationId on inbox webhooks. Format not to be assumed.
17135
17152
  */
17136
17153
  conversationId: string;
17137
17154
  };
@@ -28767,13 +28784,28 @@ export type BoostPostData = {
28767
28784
  * Available goals vary by platform. Meta (Facebook/Instagram) and TikTok support all 7. LinkedIn supports all except app_promotion. Twitter/X supports engagement, traffic, awareness, video_views, app_promotion. Pinterest and Google Ads support only engagement, traffic, awareness, video_views.
28768
28785
  */
28769
28786
  goal: 'engagement' | 'traffic' | 'awareness' | 'video_views' | 'lead_generation' | 'conversions' | 'app_promotion';
28770
- budget: {
28787
+ /**
28788
+ * Meta only. Attach the boosted post to this existing ad set instead of creating a campaign. The ad set then owns budget, schedule and targeting; sending those too is a 400.
28789
+ */
28790
+ adSetId?: string;
28791
+ /**
28792
+ * Required unless adSetId is set.
28793
+ */
28794
+ budget?: {
28771
28795
  /**
28772
28796
  * Minimum varies: TikTok=$20, Pinterest=$5, others=$1
28773
28797
  */
28774
28798
  amount: number;
28775
28799
  type: 'daily' | 'lifetime';
28776
28800
  };
28801
+ /**
28802
+ * Meta only. Instagram identity the ad runs AS (creative.instagram_user_id), overriding the account linked to the Page. Live-verified against a Page-post creative.
28803
+ */
28804
+ instagramAccountId?: string;
28805
+ /**
28806
+ * Meta only. Ad-set destination_type — where the click LANDS, as opposed to instagramAccountId which is who the ad runs as. Lead ads force ON_AD and ignore this.
28807
+ */
28808
+ destinationType?: 'INSTAGRAM_PROFILE' | 'WEBSITE' | 'ON_AD' | 'MESSENGER' | 'WHATSAPP';
28777
28809
  currency?: string;
28778
28810
  schedule?: {
28779
28811
  startDate?: string;
@@ -28939,20 +28971,32 @@ export type BoostPostData = {
28939
28971
  */
28940
28972
  specialAdCategoryCountry?: Array<(string)>;
28941
28973
  /**
28942
- * TikTok-only. Custom destination URL for the Spark Ad. Without this, TikTok
28943
- * Spark Ads have no clickable destination — required for traffic / conversion
28944
- * objectives. Maps to `landing_page_url` on the creative entry of /v2/ad/create/
28945
- * (TikTok SDK `AdcreateCreatives.landing_page_url`). Ignored on Meta / LinkedIn /
28946
- * Pinterest / X / Google (those infer the destination from the boosted post).
28974
+ * Destination URL for the CTA button. Send it together with `callToAction`.
28975
+ *
28976
+ * **Meta**: adds a top-level `call_to_action` to the post-reference creative.
28977
+ * This is what gives a `traffic` boost a clickable destination without
28978
+ * replacing the creative and losing the post's social proof. Ignored when
28979
+ * `leadGenFormId` is set, which supplies its own destination. Live-verified
28980
+ * against a Page-post creative.
28981
+ *
28982
+ * **TikTok**: maps to `landing_page_url` on the Spark Ad creative
28983
+ * (`AdcreateCreatives.landing_page_url`); Spark Ads have no clickable
28984
+ * destination without it.
28985
+ *
28986
+ * Ignored on LinkedIn / Pinterest / X / Google, which infer the destination
28987
+ * from the boosted post.
28947
28988
  *
28948
28989
  */
28949
28990
  linkUrl?: string;
28950
28991
  /**
28951
- * TikTok-only. Call-to-action button label on the Spark Ad creative (e.g.
28952
- * `LEARN_MORE`, `SHOP_NOW`, `DOWNLOAD_NOW`, `SIGN_UP`, `WATCH_NOW`). Maps to
28953
- * `call_to_action` on the creative entry of /v2/ad/create/. Pass-through —
28954
- * the platform validates the value. See TikTok's "Enumeration - Call-to-Action"
28955
- * reference for the full list.
28992
+ * CTA button label. Send it together with `linkUrl` — a CTA without a
28993
+ * destination produces a button that goes nowhere, so sending one alone is a 400.
28994
+ *
28995
+ * **Meta**: validated against the Meta CTA enum (same values as
28996
+ * POST /v1/ads/create), e.g. `LEARN_MORE`, `SHOP_NOW`, `SIGN_UP`.
28997
+ *
28998
+ * **TikTok**: pass-through to `call_to_action` on the Spark Ad creative; the
28999
+ * platform validates the value. See TikTok's "Enumeration - Call-to-Action".
28956
29000
  *
28957
29001
  */
28958
29002
  callToAction?: string;