@zernio/node 0.2.201 → 0.2.203
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 +139 -0
- package/dist/index.d.ts +139 -0
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
- package/src/generated/types.gen.ts +139 -0
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,105 @@ 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
|
+
};
|
|
17889
|
+
/**
|
|
17890
|
+
* Meta only. Placement asset customization: pin a SPECIFIC image to each placement
|
|
17891
|
+
* group on a SINGLE ad (e.g. a 9:16 image on Stories/Reels and a 4:5 on Feed). This
|
|
17892
|
+
* is the same thing Meta Ads Manager produces with "different creative per placement",
|
|
17893
|
+
* mapped to the creative's `asset_feed_spec` + `asset_customization_rules`. It is
|
|
17894
|
+
* deterministic pinning, NOT the auto-optimizing pool of `dynamicCreative` (the two are
|
|
17895
|
+
* mutually exclusive, and it cannot be combined with `creatives[]` or `adSetId`). The
|
|
17896
|
+
* shared copy (headline, body, link, CTA) comes from the top-level single-creative
|
|
17897
|
+
* fields (`headline`, `body`, `linkUrl`, `callToAction`) since only the image varies by
|
|
17898
|
+
* placement. Each rule's `placements` accepts the same fields as the top-level
|
|
17899
|
+
* `placements` object; Meta enforces co-selection rules and returns an actionable error.
|
|
17900
|
+
*
|
|
17901
|
+
*/
|
|
17902
|
+
placementAssets?: {
|
|
17903
|
+
/**
|
|
17904
|
+
* Catch-all image for any placement not matched by a rule. REQUIRED — Meta mandates
|
|
17905
|
+
* a default asset customization rule (empty placement spec, lowest priority) on every
|
|
17906
|
+
* placement-customized creative.
|
|
17907
|
+
*
|
|
17908
|
+
*/
|
|
17909
|
+
defaultImageUrl: string;
|
|
17910
|
+
/**
|
|
17911
|
+
* One entry per placement group you want to pin a specific image to.
|
|
17912
|
+
*/
|
|
17913
|
+
rules: Array<{
|
|
17914
|
+
/**
|
|
17915
|
+
* The image to deliver for this rule's placements.
|
|
17916
|
+
*/
|
|
17917
|
+
imageUrl: string;
|
|
17918
|
+
/**
|
|
17919
|
+
* Placements this image is pinned to. At least one field must be set (an empty rule is invalid — that role is served by defaultImageUrl). Same enums as the top-level `placements` object.
|
|
17920
|
+
*/
|
|
17921
|
+
placements: {
|
|
17922
|
+
publisherPlatforms?: Array<('facebook' | 'instagram' | 'threads' | 'messenger' | 'audience_network')>;
|
|
17923
|
+
facebookPositions?: Array<('feed' | 'right_hand_column' | 'marketplace' | 'video_feeds' | 'story' | 'search' | 'instream_video' | 'facebook_reels' | 'facebook_reels_overlay' | 'profile_feed' | 'notification')>;
|
|
17924
|
+
instagramPositions?: Array<('stream' | 'story' | 'explore' | 'explore_home' | 'reels' | 'profile_feed' | 'ig_search' | 'profile_reels')>;
|
|
17925
|
+
messengerPositions?: Array<('messenger_home' | 'sponsored_messages' | 'story')>;
|
|
17926
|
+
audienceNetworkPositions?: Array<('classic' | 'rewarded_video')>;
|
|
17927
|
+
threadsPositions?: Array<('threads_stream')>;
|
|
17928
|
+
whatsappPositions?: Array<('status')>;
|
|
17929
|
+
devicePlatforms?: Array<('mobile' | 'desktop')>;
|
|
17930
|
+
};
|
|
17931
|
+
}>;
|
|
17932
|
+
};
|
|
17794
17933
|
/**
|
|
17795
17934
|
* Custom audience ID for targeting
|
|
17796
17935
|
*/
|
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,105 @@ 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
|
+
};
|
|
17889
|
+
/**
|
|
17890
|
+
* Meta only. Placement asset customization: pin a SPECIFIC image to each placement
|
|
17891
|
+
* group on a SINGLE ad (e.g. a 9:16 image on Stories/Reels and a 4:5 on Feed). This
|
|
17892
|
+
* is the same thing Meta Ads Manager produces with "different creative per placement",
|
|
17893
|
+
* mapped to the creative's `asset_feed_spec` + `asset_customization_rules`. It is
|
|
17894
|
+
* deterministic pinning, NOT the auto-optimizing pool of `dynamicCreative` (the two are
|
|
17895
|
+
* mutually exclusive, and it cannot be combined with `creatives[]` or `adSetId`). The
|
|
17896
|
+
* shared copy (headline, body, link, CTA) comes from the top-level single-creative
|
|
17897
|
+
* fields (`headline`, `body`, `linkUrl`, `callToAction`) since only the image varies by
|
|
17898
|
+
* placement. Each rule's `placements` accepts the same fields as the top-level
|
|
17899
|
+
* `placements` object; Meta enforces co-selection rules and returns an actionable error.
|
|
17900
|
+
*
|
|
17901
|
+
*/
|
|
17902
|
+
placementAssets?: {
|
|
17903
|
+
/**
|
|
17904
|
+
* Catch-all image for any placement not matched by a rule. REQUIRED — Meta mandates
|
|
17905
|
+
* a default asset customization rule (empty placement spec, lowest priority) on every
|
|
17906
|
+
* placement-customized creative.
|
|
17907
|
+
*
|
|
17908
|
+
*/
|
|
17909
|
+
defaultImageUrl: string;
|
|
17910
|
+
/**
|
|
17911
|
+
* One entry per placement group you want to pin a specific image to.
|
|
17912
|
+
*/
|
|
17913
|
+
rules: Array<{
|
|
17914
|
+
/**
|
|
17915
|
+
* The image to deliver for this rule's placements.
|
|
17916
|
+
*/
|
|
17917
|
+
imageUrl: string;
|
|
17918
|
+
/**
|
|
17919
|
+
* Placements this image is pinned to. At least one field must be set (an empty rule is invalid — that role is served by defaultImageUrl). Same enums as the top-level `placements` object.
|
|
17920
|
+
*/
|
|
17921
|
+
placements: {
|
|
17922
|
+
publisherPlatforms?: Array<('facebook' | 'instagram' | 'threads' | 'messenger' | 'audience_network')>;
|
|
17923
|
+
facebookPositions?: Array<('feed' | 'right_hand_column' | 'marketplace' | 'video_feeds' | 'story' | 'search' | 'instream_video' | 'facebook_reels' | 'facebook_reels_overlay' | 'profile_feed' | 'notification')>;
|
|
17924
|
+
instagramPositions?: Array<('stream' | 'story' | 'explore' | 'explore_home' | 'reels' | 'profile_feed' | 'ig_search' | 'profile_reels')>;
|
|
17925
|
+
messengerPositions?: Array<('messenger_home' | 'sponsored_messages' | 'story')>;
|
|
17926
|
+
audienceNetworkPositions?: Array<('classic' | 'rewarded_video')>;
|
|
17927
|
+
threadsPositions?: Array<('threads_stream')>;
|
|
17928
|
+
whatsappPositions?: Array<('status')>;
|
|
17929
|
+
devicePlatforms?: Array<('mobile' | 'desktop')>;
|
|
17930
|
+
};
|
|
17931
|
+
}>;
|
|
17932
|
+
};
|
|
17794
17933
|
/**
|
|
17795
17934
|
* Custom audience ID for targeting
|
|
17796
17935
|
*/
|
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.
|
|
39
|
+
version: "0.2.203",
|
|
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.
|
|
8
|
+
version: "0.2.203",
|
|
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
|
@@ -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,105 @@ 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
|
+
};
|
|
18351
|
+
/**
|
|
18352
|
+
* Meta only. Placement asset customization: pin a SPECIFIC image to each placement
|
|
18353
|
+
* group on a SINGLE ad (e.g. a 9:16 image on Stories/Reels and a 4:5 on Feed). This
|
|
18354
|
+
* is the same thing Meta Ads Manager produces with "different creative per placement",
|
|
18355
|
+
* mapped to the creative's `asset_feed_spec` + `asset_customization_rules`. It is
|
|
18356
|
+
* deterministic pinning, NOT the auto-optimizing pool of `dynamicCreative` (the two are
|
|
18357
|
+
* mutually exclusive, and it cannot be combined with `creatives[]` or `adSetId`). The
|
|
18358
|
+
* shared copy (headline, body, link, CTA) comes from the top-level single-creative
|
|
18359
|
+
* fields (`headline`, `body`, `linkUrl`, `callToAction`) since only the image varies by
|
|
18360
|
+
* placement. Each rule's `placements` accepts the same fields as the top-level
|
|
18361
|
+
* `placements` object; Meta enforces co-selection rules and returns an actionable error.
|
|
18362
|
+
*
|
|
18363
|
+
*/
|
|
18364
|
+
placementAssets?: {
|
|
18365
|
+
/**
|
|
18366
|
+
* Catch-all image for any placement not matched by a rule. REQUIRED — Meta mandates
|
|
18367
|
+
* a default asset customization rule (empty placement spec, lowest priority) on every
|
|
18368
|
+
* placement-customized creative.
|
|
18369
|
+
*
|
|
18370
|
+
*/
|
|
18371
|
+
defaultImageUrl: string;
|
|
18372
|
+
/**
|
|
18373
|
+
* One entry per placement group you want to pin a specific image to.
|
|
18374
|
+
*/
|
|
18375
|
+
rules: Array<{
|
|
18376
|
+
/**
|
|
18377
|
+
* The image to deliver for this rule's placements.
|
|
18378
|
+
*/
|
|
18379
|
+
imageUrl: string;
|
|
18380
|
+
/**
|
|
18381
|
+
* Placements this image is pinned to. At least one field must be set (an empty rule is invalid — that role is served by defaultImageUrl). Same enums as the top-level `placements` object.
|
|
18382
|
+
*/
|
|
18383
|
+
placements: {
|
|
18384
|
+
publisherPlatforms?: Array<('facebook' | 'instagram' | 'threads' | 'messenger' | 'audience_network')>;
|
|
18385
|
+
facebookPositions?: Array<('feed' | 'right_hand_column' | 'marketplace' | 'video_feeds' | 'story' | 'search' | 'instream_video' | 'facebook_reels' | 'facebook_reels_overlay' | 'profile_feed' | 'notification')>;
|
|
18386
|
+
instagramPositions?: Array<('stream' | 'story' | 'explore' | 'explore_home' | 'reels' | 'profile_feed' | 'ig_search' | 'profile_reels')>;
|
|
18387
|
+
messengerPositions?: Array<('messenger_home' | 'sponsored_messages' | 'story')>;
|
|
18388
|
+
audienceNetworkPositions?: Array<('classic' | 'rewarded_video')>;
|
|
18389
|
+
threadsPositions?: Array<('threads_stream')>;
|
|
18390
|
+
whatsappPositions?: Array<('status')>;
|
|
18391
|
+
devicePlatforms?: Array<('mobile' | 'desktop')>;
|
|
18392
|
+
};
|
|
18393
|
+
}>;
|
|
18394
|
+
};
|
|
18256
18395
|
/**
|
|
18257
18396
|
* Custom audience ID for targeting
|
|
18258
18397
|
*/
|