@zernio/node 0.2.723 → 0.2.725

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
@@ -20917,7 +20917,7 @@ type SendInboxMessageData = {
20917
20917
  */
20918
20918
  messageTag?: 'CONFIRMED_EVENT_UPDATE' | 'POST_PURCHASE_UPDATE' | 'ACCOUNT_UPDATE' | 'HUMAN_AGENT';
20919
20919
  /**
20920
- * Platform message ID to quote-reply to. For WhatsApp, pass the wamid; for Telegram, the Telegram message ID (delivered as message.platformMessageId on webhooks, and as `id` on each entry of the list-messages endpoint). On Slack it threads the reply (thread_ts) instead of quoting. Silently ignored on platforms without send-side reply support, including Instagram and Facebook Messenger (Meta's Send API rejects reply_to on Instagram and does not expose it on Messenger).
20920
+ * Platform message ID to quote-reply to. For WhatsApp, pass the wamid; for Telegram, the Telegram message ID (delivered as message.platformMessageId on webhooks, and as `id` on each entry of the list-messages endpoint). On Slack it threads the reply (thread_ts) instead of quoting. Instagram and Facebook Messenger do not support send-side quote replies: the message is sent without a quote and the successful response includes a warnings entry with code ignored_field and param replyTo. Other platforms without send-side reply support ignore this field.
20921
20921
  */
20922
20922
  replyTo?: string;
20923
20923
  /**
@@ -20981,6 +20981,17 @@ type SendInboxMessageData = {
20981
20981
  };
20982
20982
  type SendInboxMessageResponse = ({
20983
20983
  success?: boolean;
20984
+ /**
20985
+ * Present when a successful send ignored replyTo on Instagram or Facebook Messenger. The message was sent without a quote; do not retry it to apply the reply.
20986
+ */
20987
+ warnings?: Array<{
20988
+ code: 'ignored_field';
20989
+ param: 'replyTo';
20990
+ /**
20991
+ * Human-readable explanation of the ignored field.
20992
+ */
20993
+ message: string;
20994
+ }>;
20984
20995
  data?: {
20985
20996
  /**
20986
20997
  * Platform id of the sent message (not returned for Reddit). For WhatsApp this is the raw Meta wamid, the same id delivered as message.platformMessageId on webhooks and delivery-status updates, and the value to pass as replyTo to quote-reply.
@@ -22735,7 +22746,7 @@ type CreateWhatsAppTemplateData = {
22735
22746
  phone_number?: string;
22736
22747
  }>;
22737
22748
  /**
22738
- * Delivery validity window in seconds: a message not delivered within it is dropped. Range depends on category: AUTHENTICATION 30 to 900, UTILITY 30 to 43200 (12h), MARKETING 43200 to 2592000 (30 days); -1 restores the 30-day default on AUTHENTICATION and UTILITY. Meta defaults to 600 for AUTHENTICATION and 30 days otherwise. If Meta later recategorises the template, it clears the TTL (read it back to check).
22749
+ * Delivery validity window in seconds: a message not delivered within it is dropped. Range depends on category: AUTHENTICATION 30 to 900, UTILITY 30 to 43200 (12h), MARKETING 43200 to 2592000 (30 days); -1 (create only) keeps the 30-day default on AUTHENTICATION and UTILITY. Meta defaults to 600 for AUTHENTICATION and 30 days otherwise. If Meta later recategorises the template, it clears the TTL (read it back to check).
22739
22750
  */
22740
22751
  message_send_ttl_seconds?: number;
22741
22752
  };
@@ -22837,7 +22848,7 @@ type UpdateWhatsAppTemplateData = {
22837
22848
  */
22838
22849
  components?: Array<WhatsAppTemplateComponent>;
22839
22850
  /**
22840
- * Delivery validity window in seconds: a message not delivered within it is dropped. Range depends on category: AUTHENTICATION 30 to 900, UTILITY 30 to 43200 (12h), MARKETING 43200 to 2592000 (30 days); -1 restores the 30-day default on AUTHENTICATION and UTILITY. Meta defaults to 600 for AUTHENTICATION and 30 days otherwise. If Meta later recategorises the template, it clears the TTL (read it back to check).
22851
+ * Delivery validity window in seconds: a message not delivered within it is dropped. Range depends on category: AUTHENTICATION 30 to 900, UTILITY 30 to 43200 (12h), MARKETING 43200 to 2592000 (30 days); -1 is not accepted here (Meta treats it as an empty edit); send a value in range. A TTL-only edit keeps an APPROVED template approved, no re-review. Meta defaults to 600 for AUTHENTICATION and 30 days otherwise. If Meta later recategorises the template, it clears the TTL (read it back to check).
22841
22852
  */
22842
22853
  message_send_ttl_seconds?: number;
22843
22854
  };
@@ -22979,7 +22990,7 @@ type UpdateWhatsAppTemplateByIdData = {
22979
22990
  */
22980
22991
  components?: Array<WhatsAppTemplateComponent>;
22981
22992
  /**
22982
- * Delivery validity window in seconds: a message not delivered within it is dropped. Range depends on category: AUTHENTICATION 30 to 900, UTILITY 30 to 43200 (12h), MARKETING 43200 to 2592000 (30 days); -1 restores the 30-day default on AUTHENTICATION and UTILITY. Meta defaults to 600 for AUTHENTICATION and 30 days otherwise. If Meta later recategorises the template, it clears the TTL (read it back to check).
22993
+ * Delivery validity window in seconds: a message not delivered within it is dropped. Range depends on category: AUTHENTICATION 30 to 900, UTILITY 30 to 43200 (12h), MARKETING 43200 to 2592000 (30 days); -1 is not accepted here (Meta treats it as an empty edit); send a value in range. A TTL-only edit keeps an APPROVED template approved, no re-review. Meta defaults to 600 for AUTHENTICATION and 30 days otherwise. If Meta later recategorises the template, it clears the TTL (read it back to check).
22983
22994
  */
22984
22995
  message_send_ttl_seconds?: number;
22985
22996
  };
@@ -28064,7 +28075,7 @@ type ListContactsData = {
28064
28075
  accountId?: string;
28065
28076
  isSubscribed?: 'true' | 'false';
28066
28077
  limit?: number;
28067
- platform?: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp' | 'slack';
28078
+ platform?: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp' | 'slack' | 'sms';
28068
28079
  /**
28069
28080
  * Filter by profile. Omit to list across all profiles. Matches the profile recorded on the contact itself, which is set when the contact is created and is independent of the profile its account currently belongs to. Filter by accountId to list a contact through its channel instead.
28070
28081
  */
@@ -28134,7 +28145,7 @@ type CreateContactData = {
28134
28145
  /**
28135
28146
  * Channel platform. Only the enum values support contact channels; any other platform is rejected with code platform_not_supported.
28136
28147
  */
28137
- platform?: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp' | 'slack';
28148
+ platform?: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp' | 'slack' | 'sms';
28138
28149
  platformIdentifier?: string;
28139
28150
  displayIdentifier?: string;
28140
28151
  };
@@ -28491,7 +28502,7 @@ type CreateBroadcastData = {
28491
28502
  body: {
28492
28503
  profileId: string;
28493
28504
  accountId: string;
28494
- platform: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp';
28505
+ platform: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp' | 'sms' | 'slack';
28495
28506
  name: string;
28496
28507
  description?: string;
28497
28508
  message?: {
@@ -29221,7 +29232,7 @@ type CreateSequenceData = {
29221
29232
  body: {
29222
29233
  profileId: string;
29223
29234
  accountId: string;
29224
- platform: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp';
29235
+ platform: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp' | 'slack';
29225
29236
  name: string;
29226
29237
  description?: string;
29227
29238
  steps?: Array<{
@@ -31681,14 +31692,28 @@ type UpdateAdData = {
31681
31692
  */
31682
31693
  targeting?: {
31683
31694
  /**
31684
- * Google only. The FULL new set of positive keywords for the ad group; live keywords not listed are removed. Entries are strings (BROAD) or { text, matchType } with matchType exact | phrase | broad. Mirrored to GET /v1/ads/keywords immediately.
31695
+ * Google only. The FULL desired set of positive keywords for the entire ad group.
31696
+ * Omit to leave positives unchanged; [] removes all positives. Negatives are independent.
31697
+ * Entries are strings (BROAD) or { text, matchType } with matchType exact | phrase | broad;
31698
+ * an omitted matchType also defaults to BROAD. Matching case-insensitive text AND match type
31699
+ * retains the existing criterion ID, status, bid overrides, labels and history without a mutation.
31700
+ * A changed text or match type uses remove/create, without transferring the old criterion's
31701
+ * attributes or history. See Google keyword replacement above for an EXACT-to-BROAD example.
31702
+ * Mirrored to GET /v1/ads/keywords immediately.
31703
+ *
31685
31704
  */
31686
31705
  keywords?: Array<(string | {
31687
31706
  text: string;
31688
31707
  matchType?: 'exact' | 'phrase' | 'broad';
31689
31708
  })>;
31690
31709
  /**
31691
- * Google only. Same declarative contract as keywords, for the ad group's negative keywords.
31710
+ * Google only. The FULL desired set of negative keywords for the entire ad group,
31711
+ * independent of positives. Omit to leave negatives unchanged; [] removes all negatives.
31712
+ * Uses the same text/match-type identity and preservation contract as keywords above.
31713
+ * Strings and objects without matchType default to BROAD, so resending an EXACT or PHRASE
31714
+ * negative as a bare string requests a different criterion. Campaign negatives are separate:
31715
+ * use /v1/ads/campaigns/{campaignId}/negative-keywords to manage those.
31716
+ *
31692
31717
  */
31693
31718
  negativeKeywords?: Array<(string | {
31694
31719
  text: string;
@@ -33943,14 +33968,16 @@ type CreateStandaloneAdData = {
33943
33968
  * multiple ads per ad set are allowed (unlike `dynamicCreative` which is limited to one).
33944
33969
  * Requires `imageUrl` or `video`, `linkUrl`, and `callToAction`. When set, the top-level
33945
33970
  * `body` field is used as the `object_story_spec.link_data.message` (the preview text) and
33946
- * `headlines` must also be present. Mutually exclusive with `dynamicCreative`,
33947
- * `placementAssets`, `carouselCards`, and `creatives[]`.
33971
+ * `headlines` must also be present. On a video creative the copy lands in
33972
+ * `video_data.message` / `video_data.title` instead of `link_data`. Mutually exclusive
33973
+ * with `dynamicCreative`, `placementAssets`, `carouselCards`, and `creatives[]`.
33948
33974
  *
33949
33975
  */
33950
33976
  bodies?: Array<(string)>;
33951
33977
  /**
33952
33978
  * Meta only. Headline variations for Multiple Text Options. Must be sent alongside `bodies`.
33953
- * The top-level `headline` field is used as the `object_story_spec.link_data.name`.
33979
+ * The top-level `headline` field is used as the `object_story_spec.link_data.name`
33980
+ * (`video_data.title` on a video creative).
33954
33981
  *
33955
33982
  */
33956
33983
  headlines?: Array<(string)>;
@@ -35187,6 +35214,9 @@ type CreateLeadFormData = {
35187
35214
  content?: Array<(string)>;
35188
35215
  style?: 'LIST_STYLE' | 'PARAGRAPH_STYLE';
35189
35216
  buttonText?: string;
35217
+ /**
35218
+ * Direct public JPEG or PNG image URL, up to 5 MB. Redirects, Ad Image hashes and IDs are not supported.
35219
+ */
35190
35220
  coverPhoto?: string;
35191
35221
  };
35192
35222
  } | {
package/dist/index.d.ts CHANGED
@@ -20917,7 +20917,7 @@ type SendInboxMessageData = {
20917
20917
  */
20918
20918
  messageTag?: 'CONFIRMED_EVENT_UPDATE' | 'POST_PURCHASE_UPDATE' | 'ACCOUNT_UPDATE' | 'HUMAN_AGENT';
20919
20919
  /**
20920
- * Platform message ID to quote-reply to. For WhatsApp, pass the wamid; for Telegram, the Telegram message ID (delivered as message.platformMessageId on webhooks, and as `id` on each entry of the list-messages endpoint). On Slack it threads the reply (thread_ts) instead of quoting. Silently ignored on platforms without send-side reply support, including Instagram and Facebook Messenger (Meta's Send API rejects reply_to on Instagram and does not expose it on Messenger).
20920
+ * Platform message ID to quote-reply to. For WhatsApp, pass the wamid; for Telegram, the Telegram message ID (delivered as message.platformMessageId on webhooks, and as `id` on each entry of the list-messages endpoint). On Slack it threads the reply (thread_ts) instead of quoting. Instagram and Facebook Messenger do not support send-side quote replies: the message is sent without a quote and the successful response includes a warnings entry with code ignored_field and param replyTo. Other platforms without send-side reply support ignore this field.
20921
20921
  */
20922
20922
  replyTo?: string;
20923
20923
  /**
@@ -20981,6 +20981,17 @@ type SendInboxMessageData = {
20981
20981
  };
20982
20982
  type SendInboxMessageResponse = ({
20983
20983
  success?: boolean;
20984
+ /**
20985
+ * Present when a successful send ignored replyTo on Instagram or Facebook Messenger. The message was sent without a quote; do not retry it to apply the reply.
20986
+ */
20987
+ warnings?: Array<{
20988
+ code: 'ignored_field';
20989
+ param: 'replyTo';
20990
+ /**
20991
+ * Human-readable explanation of the ignored field.
20992
+ */
20993
+ message: string;
20994
+ }>;
20984
20995
  data?: {
20985
20996
  /**
20986
20997
  * Platform id of the sent message (not returned for Reddit). For WhatsApp this is the raw Meta wamid, the same id delivered as message.platformMessageId on webhooks and delivery-status updates, and the value to pass as replyTo to quote-reply.
@@ -22735,7 +22746,7 @@ type CreateWhatsAppTemplateData = {
22735
22746
  phone_number?: string;
22736
22747
  }>;
22737
22748
  /**
22738
- * Delivery validity window in seconds: a message not delivered within it is dropped. Range depends on category: AUTHENTICATION 30 to 900, UTILITY 30 to 43200 (12h), MARKETING 43200 to 2592000 (30 days); -1 restores the 30-day default on AUTHENTICATION and UTILITY. Meta defaults to 600 for AUTHENTICATION and 30 days otherwise. If Meta later recategorises the template, it clears the TTL (read it back to check).
22749
+ * Delivery validity window in seconds: a message not delivered within it is dropped. Range depends on category: AUTHENTICATION 30 to 900, UTILITY 30 to 43200 (12h), MARKETING 43200 to 2592000 (30 days); -1 (create only) keeps the 30-day default on AUTHENTICATION and UTILITY. Meta defaults to 600 for AUTHENTICATION and 30 days otherwise. If Meta later recategorises the template, it clears the TTL (read it back to check).
22739
22750
  */
22740
22751
  message_send_ttl_seconds?: number;
22741
22752
  };
@@ -22837,7 +22848,7 @@ type UpdateWhatsAppTemplateData = {
22837
22848
  */
22838
22849
  components?: Array<WhatsAppTemplateComponent>;
22839
22850
  /**
22840
- * Delivery validity window in seconds: a message not delivered within it is dropped. Range depends on category: AUTHENTICATION 30 to 900, UTILITY 30 to 43200 (12h), MARKETING 43200 to 2592000 (30 days); -1 restores the 30-day default on AUTHENTICATION and UTILITY. Meta defaults to 600 for AUTHENTICATION and 30 days otherwise. If Meta later recategorises the template, it clears the TTL (read it back to check).
22851
+ * Delivery validity window in seconds: a message not delivered within it is dropped. Range depends on category: AUTHENTICATION 30 to 900, UTILITY 30 to 43200 (12h), MARKETING 43200 to 2592000 (30 days); -1 is not accepted here (Meta treats it as an empty edit); send a value in range. A TTL-only edit keeps an APPROVED template approved, no re-review. Meta defaults to 600 for AUTHENTICATION and 30 days otherwise. If Meta later recategorises the template, it clears the TTL (read it back to check).
22841
22852
  */
22842
22853
  message_send_ttl_seconds?: number;
22843
22854
  };
@@ -22979,7 +22990,7 @@ type UpdateWhatsAppTemplateByIdData = {
22979
22990
  */
22980
22991
  components?: Array<WhatsAppTemplateComponent>;
22981
22992
  /**
22982
- * Delivery validity window in seconds: a message not delivered within it is dropped. Range depends on category: AUTHENTICATION 30 to 900, UTILITY 30 to 43200 (12h), MARKETING 43200 to 2592000 (30 days); -1 restores the 30-day default on AUTHENTICATION and UTILITY. Meta defaults to 600 for AUTHENTICATION and 30 days otherwise. If Meta later recategorises the template, it clears the TTL (read it back to check).
22993
+ * Delivery validity window in seconds: a message not delivered within it is dropped. Range depends on category: AUTHENTICATION 30 to 900, UTILITY 30 to 43200 (12h), MARKETING 43200 to 2592000 (30 days); -1 is not accepted here (Meta treats it as an empty edit); send a value in range. A TTL-only edit keeps an APPROVED template approved, no re-review. Meta defaults to 600 for AUTHENTICATION and 30 days otherwise. If Meta later recategorises the template, it clears the TTL (read it back to check).
22983
22994
  */
22984
22995
  message_send_ttl_seconds?: number;
22985
22996
  };
@@ -28064,7 +28075,7 @@ type ListContactsData = {
28064
28075
  accountId?: string;
28065
28076
  isSubscribed?: 'true' | 'false';
28066
28077
  limit?: number;
28067
- platform?: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp' | 'slack';
28078
+ platform?: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp' | 'slack' | 'sms';
28068
28079
  /**
28069
28080
  * Filter by profile. Omit to list across all profiles. Matches the profile recorded on the contact itself, which is set when the contact is created and is independent of the profile its account currently belongs to. Filter by accountId to list a contact through its channel instead.
28070
28081
  */
@@ -28134,7 +28145,7 @@ type CreateContactData = {
28134
28145
  /**
28135
28146
  * Channel platform. Only the enum values support contact channels; any other platform is rejected with code platform_not_supported.
28136
28147
  */
28137
- platform?: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp' | 'slack';
28148
+ platform?: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp' | 'slack' | 'sms';
28138
28149
  platformIdentifier?: string;
28139
28150
  displayIdentifier?: string;
28140
28151
  };
@@ -28491,7 +28502,7 @@ type CreateBroadcastData = {
28491
28502
  body: {
28492
28503
  profileId: string;
28493
28504
  accountId: string;
28494
- platform: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp';
28505
+ platform: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp' | 'sms' | 'slack';
28495
28506
  name: string;
28496
28507
  description?: string;
28497
28508
  message?: {
@@ -29221,7 +29232,7 @@ type CreateSequenceData = {
29221
29232
  body: {
29222
29233
  profileId: string;
29223
29234
  accountId: string;
29224
- platform: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp';
29235
+ platform: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp' | 'slack';
29225
29236
  name: string;
29226
29237
  description?: string;
29227
29238
  steps?: Array<{
@@ -31681,14 +31692,28 @@ type UpdateAdData = {
31681
31692
  */
31682
31693
  targeting?: {
31683
31694
  /**
31684
- * Google only. The FULL new set of positive keywords for the ad group; live keywords not listed are removed. Entries are strings (BROAD) or { text, matchType } with matchType exact | phrase | broad. Mirrored to GET /v1/ads/keywords immediately.
31695
+ * Google only. The FULL desired set of positive keywords for the entire ad group.
31696
+ * Omit to leave positives unchanged; [] removes all positives. Negatives are independent.
31697
+ * Entries are strings (BROAD) or { text, matchType } with matchType exact | phrase | broad;
31698
+ * an omitted matchType also defaults to BROAD. Matching case-insensitive text AND match type
31699
+ * retains the existing criterion ID, status, bid overrides, labels and history without a mutation.
31700
+ * A changed text or match type uses remove/create, without transferring the old criterion's
31701
+ * attributes or history. See Google keyword replacement above for an EXACT-to-BROAD example.
31702
+ * Mirrored to GET /v1/ads/keywords immediately.
31703
+ *
31685
31704
  */
31686
31705
  keywords?: Array<(string | {
31687
31706
  text: string;
31688
31707
  matchType?: 'exact' | 'phrase' | 'broad';
31689
31708
  })>;
31690
31709
  /**
31691
- * Google only. Same declarative contract as keywords, for the ad group's negative keywords.
31710
+ * Google only. The FULL desired set of negative keywords for the entire ad group,
31711
+ * independent of positives. Omit to leave negatives unchanged; [] removes all negatives.
31712
+ * Uses the same text/match-type identity and preservation contract as keywords above.
31713
+ * Strings and objects without matchType default to BROAD, so resending an EXACT or PHRASE
31714
+ * negative as a bare string requests a different criterion. Campaign negatives are separate:
31715
+ * use /v1/ads/campaigns/{campaignId}/negative-keywords to manage those.
31716
+ *
31692
31717
  */
31693
31718
  negativeKeywords?: Array<(string | {
31694
31719
  text: string;
@@ -33943,14 +33968,16 @@ type CreateStandaloneAdData = {
33943
33968
  * multiple ads per ad set are allowed (unlike `dynamicCreative` which is limited to one).
33944
33969
  * Requires `imageUrl` or `video`, `linkUrl`, and `callToAction`. When set, the top-level
33945
33970
  * `body` field is used as the `object_story_spec.link_data.message` (the preview text) and
33946
- * `headlines` must also be present. Mutually exclusive with `dynamicCreative`,
33947
- * `placementAssets`, `carouselCards`, and `creatives[]`.
33971
+ * `headlines` must also be present. On a video creative the copy lands in
33972
+ * `video_data.message` / `video_data.title` instead of `link_data`. Mutually exclusive
33973
+ * with `dynamicCreative`, `placementAssets`, `carouselCards`, and `creatives[]`.
33948
33974
  *
33949
33975
  */
33950
33976
  bodies?: Array<(string)>;
33951
33977
  /**
33952
33978
  * Meta only. Headline variations for Multiple Text Options. Must be sent alongside `bodies`.
33953
- * The top-level `headline` field is used as the `object_story_spec.link_data.name`.
33979
+ * The top-level `headline` field is used as the `object_story_spec.link_data.name`
33980
+ * (`video_data.title` on a video creative).
33954
33981
  *
33955
33982
  */
33956
33983
  headlines?: Array<(string)>;
@@ -35187,6 +35214,9 @@ type CreateLeadFormData = {
35187
35214
  content?: Array<(string)>;
35188
35215
  style?: 'LIST_STYLE' | 'PARAGRAPH_STYLE';
35189
35216
  buttonText?: string;
35217
+ /**
35218
+ * Direct public JPEG or PNG image URL, up to 5 MB. Redirects, Ad Image hashes and IDs are not supported.
35219
+ */
35190
35220
  coverPhoto?: string;
35191
35221
  };
35192
35222
  } | {
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.723",
39
+ version: "0.2.725",
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.723",
8
+ version: "0.2.725",
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.723",
3
+ "version": "0.2.725",
4
4
  "description": "The official Node.js library for the Zernio API",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -4482,8 +4482,9 @@ export const getWhatsAppTemplate = <ThrowOnError extends boolean = false>(option
4482
4482
  * must match exactly. Variants in `PENDING_DELETION` are not part of the family.
4483
4483
  *
4484
4484
  * Meta only allows editing templates in `APPROVED`, `REJECTED` or `PAUSED` state; an approved
4485
- * template can be edited once per 24 hours and up to 10 times per 30 days. A successful update
4486
- * sends the variant back to Meta for review, so the `status` returned here is normally `PENDING`.
4485
+ * template can be edited once per 24 hours and up to 10 times per 30 days. A component update
4486
+ * sends the variant back to Meta for review, so the `status` returned here is normally `PENDING`;
4487
+ * a TTL-only update keeps an APPROVED variant approved.
4487
4488
  * The final outcome arrives on the `whatsapp.template.status_updated` webhook (which carries the
4488
4489
  * variant's `templateId` and `language`). A variant already in `PENDING` cannot be edited again
4489
4490
  * until Meta finishes reviewing it.
@@ -4531,8 +4532,9 @@ export const getWhatsAppTemplateById = <ThrowOnError extends boolean = false>(op
4531
4532
  * Update one variant's components and/or its message_send_ttl_seconds by its Meta id. Name, language and category cannot change.
4532
4533
  *
4533
4534
  * Meta only allows editing templates in `APPROVED`, `REJECTED` or `PAUSED` state; an approved
4534
- * template can be edited once per 24 hours and up to 10 times per 30 days. A successful update
4535
- * sends the variant back to Meta for review, so the `status` returned here is normally `PENDING`.
4535
+ * template can be edited once per 24 hours and up to 10 times per 30 days. A component update
4536
+ * sends the variant back to Meta for review, so the `status` returned here is normally `PENDING`;
4537
+ * a TTL-only update keeps an APPROVED variant approved.
4536
4538
  * The final outcome arrives on the `whatsapp.template.status_updated` webhook (which carries the
4537
4539
  * variant's `templateId` and `language`). A variant already in `PENDING` cannot be edited again
4538
4540
  * until Meta finishes reviewing it.
@@ -8465,6 +8467,32 @@ export const getAd = <ThrowOnError extends boolean = false>(options: OptionsLega
8465
8467
  * `targeting` or `creative` returns 501 with code `unsupported_platform_operation`.
8466
8468
  * OpenAI Ads budget is lifetime-only (see `budget.type` below).
8467
8469
  *
8470
+ * **Google keyword replacement:** These edits affect the ad's entire ad group,
8471
+ * including sibling ads. Positive (`targeting.keywords`) and negative
8472
+ * (`targeting.negativeKeywords`) sets are independent: omit a field to leave
8473
+ * that set unchanged, or send `[]` to remove every keyword of that kind.
8474
+ *
8475
+ * Zernio compares each supplied set with Google's live criteria by
8476
+ * case-insensitive keyword text and match type. A matching criterion is left
8477
+ * untouched, retaining its criterion ID, enabled/paused status, keyword-level
8478
+ * bid overrides, labels, and criterion-associated history/statistics. Zernio
8479
+ * does not reset its quality score; Google continues to calculate scores and
8480
+ * statistics normally. Text comparison does not trim whitespace.
8481
+ *
8482
+ * A bare string or an object without `matchType` means `broad`, not the
8483
+ * existing criterion's match type. For example, resending an existing
8484
+ * `{ "text": "plumber", "matchType": "exact" }` preserves it; sending
8485
+ * `"plumber"` instead removes that EXACT criterion and requests a BROAD one.
8486
+ * Changing text or match type removes criteria no longer requested and
8487
+ * creates any missing criteria. New criteria get new IDs and do not inherit
8488
+ * removed criteria's bid overrides, labels, or history. Historical reporting
8489
+ * for a removed criterion is not transferred to its replacement.
8490
+ *
8491
+ * To add keywords without replacing a set, use
8492
+ * [POST /v1/ads/keywords](https://docs.zernio.com/ad-campaigns/add-ad-keywords).
8493
+ * Use `PATCH /v1/ads/keywords/{keywordId}` to pause/enable one keyword, or
8494
+ * `DELETE /v1/ads/keywords/{keywordId}` to remove it.
8495
+ *
8468
8496
  */
8469
8497
  export const updateAd = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateAdData, ThrowOnError>) => {
8470
8498
  return (options?.client ?? client).put<UpdateAdResponse, UpdateAdError, ThrowOnError>({
@@ -20530,7 +20530,7 @@ export type SendInboxMessageData = {
20530
20530
  */
20531
20531
  messageTag?: 'CONFIRMED_EVENT_UPDATE' | 'POST_PURCHASE_UPDATE' | 'ACCOUNT_UPDATE' | 'HUMAN_AGENT';
20532
20532
  /**
20533
- * Platform message ID to quote-reply to. For WhatsApp, pass the wamid; for Telegram, the Telegram message ID (delivered as message.platformMessageId on webhooks, and as `id` on each entry of the list-messages endpoint). On Slack it threads the reply (thread_ts) instead of quoting. Silently ignored on platforms without send-side reply support, including Instagram and Facebook Messenger (Meta's Send API rejects reply_to on Instagram and does not expose it on Messenger).
20533
+ * Platform message ID to quote-reply to. For WhatsApp, pass the wamid; for Telegram, the Telegram message ID (delivered as message.platformMessageId on webhooks, and as `id` on each entry of the list-messages endpoint). On Slack it threads the reply (thread_ts) instead of quoting. Instagram and Facebook Messenger do not support send-side quote replies: the message is sent without a quote and the successful response includes a warnings entry with code ignored_field and param replyTo. Other platforms without send-side reply support ignore this field.
20534
20534
  */
20535
20535
  replyTo?: string;
20536
20536
  /**
@@ -20595,6 +20595,17 @@ export type SendInboxMessageData = {
20595
20595
 
20596
20596
  export type SendInboxMessageResponse = ({
20597
20597
  success?: boolean;
20598
+ /**
20599
+ * Present when a successful send ignored replyTo on Instagram or Facebook Messenger. The message was sent without a quote; do not retry it to apply the reply.
20600
+ */
20601
+ warnings?: Array<{
20602
+ code: 'ignored_field';
20603
+ param: 'replyTo';
20604
+ /**
20605
+ * Human-readable explanation of the ignored field.
20606
+ */
20607
+ message: string;
20608
+ }>;
20598
20609
  data?: {
20599
20610
  /**
20600
20611
  * Platform id of the sent message (not returned for Reddit). For WhatsApp this is the raw Meta wamid, the same id delivered as message.platformMessageId on webhooks and delivery-status updates, and the value to pass as replyTo to quote-reply.
@@ -22486,7 +22497,7 @@ export type CreateWhatsAppTemplateData = {
22486
22497
  phone_number?: string;
22487
22498
  }>;
22488
22499
  /**
22489
- * Delivery validity window in seconds: a message not delivered within it is dropped. Range depends on category: AUTHENTICATION 30 to 900, UTILITY 30 to 43200 (12h), MARKETING 43200 to 2592000 (30 days); -1 restores the 30-day default on AUTHENTICATION and UTILITY. Meta defaults to 600 for AUTHENTICATION and 30 days otherwise. If Meta later recategorises the template, it clears the TTL (read it back to check).
22500
+ * Delivery validity window in seconds: a message not delivered within it is dropped. Range depends on category: AUTHENTICATION 30 to 900, UTILITY 30 to 43200 (12h), MARKETING 43200 to 2592000 (30 days); -1 (create only) keeps the 30-day default on AUTHENTICATION and UTILITY. Meta defaults to 600 for AUTHENTICATION and 30 days otherwise. If Meta later recategorises the template, it clears the TTL (read it back to check).
22490
22501
  */
22491
22502
  message_send_ttl_seconds?: number;
22492
22503
  };
@@ -22594,7 +22605,7 @@ export type UpdateWhatsAppTemplateData = {
22594
22605
  */
22595
22606
  components?: Array<WhatsAppTemplateComponent>;
22596
22607
  /**
22597
- * Delivery validity window in seconds: a message not delivered within it is dropped. Range depends on category: AUTHENTICATION 30 to 900, UTILITY 30 to 43200 (12h), MARKETING 43200 to 2592000 (30 days); -1 restores the 30-day default on AUTHENTICATION and UTILITY. Meta defaults to 600 for AUTHENTICATION and 30 days otherwise. If Meta later recategorises the template, it clears the TTL (read it back to check).
22608
+ * Delivery validity window in seconds: a message not delivered within it is dropped. Range depends on category: AUTHENTICATION 30 to 900, UTILITY 30 to 43200 (12h), MARKETING 43200 to 2592000 (30 days); -1 is not accepted here (Meta treats it as an empty edit); send a value in range. A TTL-only edit keeps an APPROVED template approved, no re-review. Meta defaults to 600 for AUTHENTICATION and 30 days otherwise. If Meta later recategorises the template, it clears the TTL (read it back to check).
22598
22609
  */
22599
22610
  message_send_ttl_seconds?: number;
22600
22611
  };
@@ -22745,7 +22756,7 @@ export type UpdateWhatsAppTemplateByIdData = {
22745
22756
  */
22746
22757
  components?: Array<WhatsAppTemplateComponent>;
22747
22758
  /**
22748
- * Delivery validity window in seconds: a message not delivered within it is dropped. Range depends on category: AUTHENTICATION 30 to 900, UTILITY 30 to 43200 (12h), MARKETING 43200 to 2592000 (30 days); -1 restores the 30-day default on AUTHENTICATION and UTILITY. Meta defaults to 600 for AUTHENTICATION and 30 days otherwise. If Meta later recategorises the template, it clears the TTL (read it back to check).
22759
+ * Delivery validity window in seconds: a message not delivered within it is dropped. Range depends on category: AUTHENTICATION 30 to 900, UTILITY 30 to 43200 (12h), MARKETING 43200 to 2592000 (30 days); -1 is not accepted here (Meta treats it as an empty edit); send a value in range. A TTL-only edit keeps an APPROVED template approved, no re-review. Meta defaults to 600 for AUTHENTICATION and 30 days otherwise. If Meta later recategorises the template, it clears the TTL (read it back to check).
22749
22760
  */
22750
22761
  message_send_ttl_seconds?: number;
22751
22762
  };
@@ -28275,7 +28286,7 @@ export type ListContactsData = {
28275
28286
  accountId?: string;
28276
28287
  isSubscribed?: 'true' | 'false';
28277
28288
  limit?: number;
28278
- platform?: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp' | 'slack';
28289
+ platform?: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp' | 'slack' | 'sms';
28279
28290
  /**
28280
28291
  * Filter by profile. Omit to list across all profiles. Matches the profile recorded on the contact itself, which is set when the contact is created and is independent of the profile its account currently belongs to. Filter by accountId to list a contact through its channel instead.
28281
28292
  */
@@ -28348,7 +28359,7 @@ export type CreateContactData = {
28348
28359
  /**
28349
28360
  * Channel platform. Only the enum values support contact channels; any other platform is rejected with code platform_not_supported.
28350
28361
  */
28351
- platform?: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp' | 'slack';
28362
+ platform?: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp' | 'slack' | 'sms';
28352
28363
  platformIdentifier?: string;
28353
28364
  displayIdentifier?: string;
28354
28365
  };
@@ -28744,7 +28755,7 @@ export type CreateBroadcastData = {
28744
28755
  body: {
28745
28756
  profileId: string;
28746
28757
  accountId: string;
28747
- platform: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp';
28758
+ platform: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp' | 'sms' | 'slack';
28748
28759
  name: string;
28749
28760
  description?: string;
28750
28761
  message?: {
@@ -29546,7 +29557,7 @@ export type CreateSequenceData = {
29546
29557
  body: {
29547
29558
  profileId: string;
29548
29559
  accountId: string;
29549
- platform: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp';
29560
+ platform: 'instagram' | 'facebook' | 'telegram' | 'twitter' | 'bluesky' | 'reddit' | 'whatsapp' | 'slack';
29550
29561
  name: string;
29551
29562
  description?: string;
29552
29563
  steps?: Array<{
@@ -32153,14 +32164,28 @@ export type UpdateAdData = {
32153
32164
  */
32154
32165
  targeting?: {
32155
32166
  /**
32156
- * Google only. The FULL new set of positive keywords for the ad group; live keywords not listed are removed. Entries are strings (BROAD) or { text, matchType } with matchType exact | phrase | broad. Mirrored to GET /v1/ads/keywords immediately.
32167
+ * Google only. The FULL desired set of positive keywords for the entire ad group.
32168
+ * Omit to leave positives unchanged; [] removes all positives. Negatives are independent.
32169
+ * Entries are strings (BROAD) or { text, matchType } with matchType exact | phrase | broad;
32170
+ * an omitted matchType also defaults to BROAD. Matching case-insensitive text AND match type
32171
+ * retains the existing criterion ID, status, bid overrides, labels and history without a mutation.
32172
+ * A changed text or match type uses remove/create, without transferring the old criterion's
32173
+ * attributes or history. See Google keyword replacement above for an EXACT-to-BROAD example.
32174
+ * Mirrored to GET /v1/ads/keywords immediately.
32175
+ *
32157
32176
  */
32158
32177
  keywords?: Array<(string | {
32159
32178
  text: string;
32160
32179
  matchType?: 'exact' | 'phrase' | 'broad';
32161
32180
  })>;
32162
32181
  /**
32163
- * Google only. Same declarative contract as keywords, for the ad group's negative keywords.
32182
+ * Google only. The FULL desired set of negative keywords for the entire ad group,
32183
+ * independent of positives. Omit to leave negatives unchanged; [] removes all negatives.
32184
+ * Uses the same text/match-type identity and preservation contract as keywords above.
32185
+ * Strings and objects without matchType default to BROAD, so resending an EXACT or PHRASE
32186
+ * negative as a bare string requests a different criterion. Campaign negatives are separate:
32187
+ * use /v1/ads/campaigns/{campaignId}/negative-keywords to manage those.
32188
+ *
32164
32189
  */
32165
32190
  negativeKeywords?: Array<(string | {
32166
32191
  text: string;
@@ -34556,14 +34581,16 @@ export type CreateStandaloneAdData = {
34556
34581
  * multiple ads per ad set are allowed (unlike `dynamicCreative` which is limited to one).
34557
34582
  * Requires `imageUrl` or `video`, `linkUrl`, and `callToAction`. When set, the top-level
34558
34583
  * `body` field is used as the `object_story_spec.link_data.message` (the preview text) and
34559
- * `headlines` must also be present. Mutually exclusive with `dynamicCreative`,
34560
- * `placementAssets`, `carouselCards`, and `creatives[]`.
34584
+ * `headlines` must also be present. On a video creative the copy lands in
34585
+ * `video_data.message` / `video_data.title` instead of `link_data`. Mutually exclusive
34586
+ * with `dynamicCreative`, `placementAssets`, `carouselCards`, and `creatives[]`.
34561
34587
  *
34562
34588
  */
34563
34589
  bodies?: Array<(string)>;
34564
34590
  /**
34565
34591
  * Meta only. Headline variations for Multiple Text Options. Must be sent alongside `bodies`.
34566
- * The top-level `headline` field is used as the `object_story_spec.link_data.name`.
34592
+ * The top-level `headline` field is used as the `object_story_spec.link_data.name`
34593
+ * (`video_data.title` on a video creative).
34567
34594
  *
34568
34595
  */
34569
34596
  headlines?: Array<(string)>;
@@ -35809,6 +35836,9 @@ export type CreateLeadFormData = {
35809
35836
  content?: Array<(string)>;
35810
35837
  style?: 'LIST_STYLE' | 'PARAGRAPH_STYLE';
35811
35838
  buttonText?: string;
35839
+ /**
35840
+ * Direct public JPEG or PNG image URL, up to 5 MB. Redirects, Ad Image hashes and IDs are not supported.
35841
+ */
35812
35842
  coverPhoto?: string;
35813
35843
  };
35814
35844
  } | {