@zernio/node 0.2.1008 → 0.2.1010

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
@@ -808,7 +808,7 @@ declare class Zernio {
808
808
  remediatePhoneNumber: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<RemediatePhoneNumberData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<RemediatePhoneNumberResponse, unknown, ThrowOnError>;
809
809
  replyToPhoneNumberReviewer: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<ReplyToPhoneNumberReviewerData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<ReplyToPhoneNumberReviewerResponse, unknown, ThrowOnError>;
810
810
  respondToPhoneNumberReviewer: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<RespondToPhoneNumberReviewerData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<RespondToPhoneNumberReviewerResponse, unknown, ThrowOnError>;
811
- createPhoneNumberStockWatch: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<CreatePhoneNumberStockWatchData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<PhoneNumberStockWatch, unknown, ThrowOnError>;
811
+ createPhoneNumberStockWatch: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<CreatePhoneNumberStockWatchData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<CreatePhoneNumberStockWatchResponse, unknown, ThrowOnError>;
812
812
  listPhoneNumberStockWatches: <ThrowOnError extends boolean = false>(options?: _hey_api_client_fetch.OptionsLegacyParser<unknown, ThrowOnError>) => _hey_api_client_fetch.RequestResult<ListPhoneNumberStockWatchesResponse, ListPhoneNumberStockWatchesError, ThrowOnError>;
813
813
  deletePhoneNumberStockWatch: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<DeletePhoneNumberStockWatchData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<DeletePhoneNumberStockWatchResponse, unknown, ThrowOnError>;
814
814
  };
@@ -19711,6 +19711,32 @@ type GetConnectUrlData = {
19711
19711
  *
19712
19712
  */
19713
19713
  redirect_url?: string;
19714
+ /**
19715
+ * Comma-separated permission areas to request instead of the platform's full permission set. Values: `posting`, `analytics`, `comments`, `messaging`, `ads`. Omit it (the default, and what the dashboard does) to request everything the platform supports.
19716
+ *
19717
+ * When present, the consent dialog asks only for the platform scopes behind those areas plus the scopes every connection needs (identity, token refresh, and listing the pages, organizations or channels the user picks from). Scopes the user was never asked for are absent from the account's `permissions`, and the health endpoints report them as not granted, so a `posting`-only account cannot read analytics or the inbox until it is connected again with more areas. First comments need `comments`: a `posting`-only account publishes the post and skips the first comment. Scopes the platform lists under none of the areas (X likes, bookmarks and follows, Pinterest ads-only extras) are requested only when the parameter is omitted.
19718
+ *
19719
+ * Supported on facebook, instagram (both login methods), linkedin, twitter, tiktok, youtube, threads, reddit, pinterest, googlebusiness and slack (via `GET /v1/connect/slack`). Rejected with 400 `INVALID_FIELD_VALUE` (`param: scopes`) on bluesky, telegram, discord, snapchat and whatsapp, whose dialog cannot be reduced, and for an empty list or an unknown area.
19720
+ *
19721
+ * What each area asks for, per platform (Google scopes shortened to their last path segment):
19722
+ *
19723
+ * | Platform | `posting` | `analytics` | `comments` | `messaging` | `ads` | Always requested |
19724
+ * |---|---|---|---|---|---|---|
19725
+ * | facebook | `pages_manage_posts` | `read_insights`, `pages_read_user_content` | `pages_manage_engagement`, `pages_read_user_content` | (in the always-requested set) | `ads_management`, `ads_read`, `leads_retrieval`, `pages_manage_ads`, `instagram_basic`, `business_management` | `pages_show_list`, `pages_read_engagement`, `pages_manage_metadata`, `pages_messaging` |
19726
+ * | instagram (Instagram Login) | `instagram_business_content_publish` | `instagram_business_manage_insights` | `instagram_business_manage_comments` | `instagram_business_manage_messages` | none | `instagram_business_basic` |
19727
+ * | instagram (`loginMethod=facebook_login`) | `instagram_content_publish` | `instagram_manage_insights` | `instagram_manage_comments` | `instagram_manage_messages` | `ads_management`, `ads_read`, `leads_retrieval`, `pages_manage_ads` | `instagram_basic`, `pages_show_list`, `pages_read_engagement`, `business_management`, `pages_messaging`, `pages_manage_metadata` |
19728
+ * | linkedin | `w_member_social`, `w_organization_social`, `r_organization_social`, `r_organization_followers` | `r_member_postAnalytics`, `r_member_profileAnalytics`, `rw_organization_admin`, `r_organization_social`, `r_organization_followers` | `w_member_social`, `w_member_social_feed`, `w_organization_social`, `w_organization_social_feed`, `r_organization_social`, `r_organization_social_feed` | none | `r_ads`, `rw_ads`, `r_ads_reporting`, `r_marketing_leadgen_automation`, `rw_conversions` | `openid`, `profile`, `email`, `r_basicprofile`, `rw_organization_admin` |
19729
+ * | twitter | `tweet.write`, `media.write` | (in the always-requested set) | `tweet.write`, `like.write`, `tweet.moderate.write` | `dm.read`, `dm.write`, `media.write` | none | `tweet.read`, `users.read`, `offline.access` |
19730
+ * | tiktok | `video.publish` | `user.info.stats`, `user.insights`, `video.list`, `video.insights` | `comment.list`, `comment.list.manage`, `video.list` | `message.list.read`, `message.list.send`, `message.list.manage` | none | `user.info.basic`, `user.info.username`, `user.info.profile`, `user.account.type`, `video.publish`, `video.upload`, `video.list` |
19731
+ * | youtube | `youtube.upload` | `yt-analytics.readonly` | `youtube.force-ssl` | none | none | `youtube` |
19732
+ * | threads | `threads_content_publish`, `threads_manage_replies`, `threads_delete` | `threads_manage_insights` | `threads_content_publish`, `threads_read_replies`, `threads_manage_replies`, `threads_delete` | none | none | `threads_basic` |
19733
+ * | reddit | `submit`, `read`, `mysubreddits`, `flair`, `history`, `edit` | `read`, `history` | `read`, `history`, `edit`, `vote` | `privatemessages` | none | `identity` |
19734
+ * | pinterest | `boards:write`, `pins:read`, `pins:write` | `pins:read`, `user_accounts:read` | none | none | `ads:read`, `ads:write`, `boards:write`, `pins:read`, `pins:write` | `boards:read`, `user_accounts:read` |
19735
+ * | googlebusiness | `business.manage` | `business.manage` | `business.manage` | none | none | `business.manage`, `userinfo.profile`, `userinfo.email` |
19736
+ * | slack | `chat:write`, `chat:write.public`, `chat:write.customize`, `files:write`, `files:read` | none | none | `chat:write`, `chat:write.customize`, `files:write`, `files:read`, `channels:history`, `groups:history`, `im:history`, `mpim:history`, `im:read`, `im:write`, `mpim:read`, `users:read`, `reactions:read`, `reactions:write` | none | `channels:join`, `channels:read`, `groups:read`, `team:read` |
19737
+ *
19738
+ */
19739
+ scopes?: string;
19714
19740
  /**
19715
19741
  * WhatsApp only. Rejected with 400 `INVALID_FIELD_VALUE` on any other platform.
19716
19742
  *
@@ -22896,6 +22922,10 @@ type ListSlackChannelsData = {
22896
22922
  * Start-OAuth mode only: where to send the user after the connect completes. `redirectUrl` is accepted as an alias.
22897
22923
  */
22898
22924
  redirect_url?: string;
22925
+ /**
22926
+ * Start-OAuth mode only. Comma-separated permission areas to request instead of the full Slack scope set, with the same semantics as `scopes` on `GET /v1/connect/{platform}`: `posting` installs the bot with the channel scopes it needs to post, `messaging` adds the history, DM and reaction scopes the inbox reads; `analytics`, `comments` and `ads` add nothing on Slack. Omit it to request everything.
22927
+ */
22928
+ scopes?: string;
22899
22929
  };
22900
22930
  };
22901
22931
  type ListSlackChannelsResponse = (({
@@ -32717,7 +32747,7 @@ type CheckPhoneNumberAvailabilityResponse = ({
32717
32747
  */
32718
32748
  areas?: Array<(string)>;
32719
32749
  /**
32720
- * Live inventory grouped by area code. For US and CA this is the full country inventory (every area code with stock, recognizable metros listed first, then alphabetical); other countries are ordered largest stock first; they list the areas in the latest inventory page (up to 500 numbers, which for most countries is the entire pool). Empty when out of stock (or the area lookup failed). Pass a chosen `ndc` as `areaCode` on POST /v1/phone-numbers/purchase (or on the KYC submit for regulated countries) to require that area.
32750
+ * Live inventory grouped by area code. For US and CA this is the full country inventory (every area code with stock, recognizable metros listed first, then alphabetical); other countries are ordered largest stock first; they list the areas in the latest inventory page (up to 500 numbers, which for most countries is the entire pool). Empty when out of stock (or the area lookup failed). Pass a chosen `ndc` as `areaCode` on POST /v1/phone-numbers/purchase (or on the KYC submit for regulated countries) to require that area. Equal to `areaAvailability.inStock`.
32721
32751
  *
32722
32752
  */
32723
32753
  areaOptions?: Array<{
@@ -32735,7 +32765,7 @@ type CheckPhoneNumberAvailabilityResponse = ({
32735
32765
  count?: number;
32736
32766
  }>;
32737
32767
  /**
32738
- * Areas that had stock in the last 90 days and have none now. Pass one as `areaCode` with `preOrder: true` on the KYC submit when `preOrderable` is true, or watch it with POST /v1/phone-numbers/stock-watches.
32768
+ * Every area of the country's numbering plan with nothing deliverable now: `areaAvailability.preOrder` plus `areaAvailability.outOfStock`, kept for older clients. Pass one as `areaCode` with `preOrder: true` on the KYC submit when `preOrderable` is true, or watch it with POST /v1/phone-numbers/stock-watches.
32739
32769
  *
32740
32770
  */
32741
32771
  soldOutAreas?: Array<{
@@ -32752,6 +32782,38 @@ type CheckPhoneNumberAvailabilityResponse = ({
32752
32782
  */
32753
32783
  preOrderable?: boolean;
32754
32784
  }>;
32785
+ /**
32786
+ * Every area of the country's numbering plan (Google libphonenumber geocoding, one row per city: Madrid covers 910 to 919), in one of three states, refreshed every 6 hours from the carrier's own inventory counts. The same answer the dashboard picker and the public country pages show. Empty lists mean the pair has no cached coverage yet, not that the country has no areas.
32787
+ *
32788
+ */
32789
+ areaAvailability?: {
32790
+ /**
32791
+ * Deliverable numbers now, deepest first. Pass `ndc` as `areaCode` to hold the order to it.
32792
+ */
32793
+ inStock?: Array<{
32794
+ ndc?: string;
32795
+ name?: string;
32796
+ /**
32797
+ * Numbers we can sell there: the carrier count minus the numbers we hold back (WhatsApp refused them or another order holds them).
32798
+ */
32799
+ count?: number;
32800
+ }>;
32801
+ /**
32802
+ * The carrier lists nothing there and the number type is a document tier: submit KYC with `areaCode` and `preOrder: true`, the carrier sources one (usually 2 to 4 weeks, never guaranteed), nothing is billed until it is active.
32803
+ */
32804
+ preOrder?: Array<{
32805
+ ndc?: string;
32806
+ name?: string;
32807
+ }>;
32808
+ /**
32809
+ * Nothing deliverable and no pre-order: `listed` > 0 is stock the carrier shows that WhatsApp refused recently (held back until it clears), 0 is a dry area of an instant tier. A stock watch (POST /v1/phone-numbers/stock-watches with `areaCode`) is the way to hear when it is back.
32810
+ */
32811
+ outOfStock?: Array<{
32812
+ ndc?: string;
32813
+ name?: string;
32814
+ listed?: number;
32815
+ }>;
32816
+ };
32755
32817
  });
32756
32818
  type CheckPhoneNumberAvailabilityError = (unknown | {
32757
32819
  error?: string;
@@ -32987,7 +33049,7 @@ type CheckWhatsAppNumberAvailabilityResponse = ({
32987
33049
  */
32988
33050
  areas?: Array<(string)>;
32989
33051
  /**
32990
- * Live inventory grouped by area code. For US and CA this is the full country inventory (every area code with stock, recognizable metros listed first, then alphabetical); other countries are ordered largest stock first; they list the areas in the latest inventory page (up to 500 numbers, which for most countries is the entire pool). Empty when out of stock (or the area lookup failed). Pass a chosen `ndc` as `areaCode` on POST /v1/phone-numbers/purchase (or on the KYC submit for regulated countries) to require that area.
33052
+ * Live inventory grouped by area code. For US and CA this is the full country inventory (every area code with stock, recognizable metros listed first, then alphabetical); other countries are ordered largest stock first; they list the areas in the latest inventory page (up to 500 numbers, which for most countries is the entire pool). Empty when out of stock (or the area lookup failed). Pass a chosen `ndc` as `areaCode` on POST /v1/phone-numbers/purchase (or on the KYC submit for regulated countries) to require that area. Equal to `areaAvailability.inStock`.
32991
33053
  *
32992
33054
  */
32993
33055
  areaOptions?: Array<{
@@ -33005,7 +33067,7 @@ type CheckWhatsAppNumberAvailabilityResponse = ({
33005
33067
  count?: number;
33006
33068
  }>;
33007
33069
  /**
33008
- * Areas that had stock in the last 90 days and have none now. Pass one as `areaCode` with `preOrder: true` on the KYC submit when `preOrderable` is true, or watch it with POST /v1/phone-numbers/stock-watches.
33070
+ * Every area of the country's numbering plan with nothing deliverable now: `areaAvailability.preOrder` plus `areaAvailability.outOfStock`, kept for older clients. Pass one as `areaCode` with `preOrder: true` on the KYC submit when `preOrderable` is true, or watch it with POST /v1/phone-numbers/stock-watches.
33009
33071
  *
33010
33072
  */
33011
33073
  soldOutAreas?: Array<{
@@ -33022,6 +33084,38 @@ type CheckWhatsAppNumberAvailabilityResponse = ({
33022
33084
  */
33023
33085
  preOrderable?: boolean;
33024
33086
  }>;
33087
+ /**
33088
+ * Every area of the country's numbering plan (Google libphonenumber geocoding, one row per city: Madrid covers 910 to 919), in one of three states, refreshed every 6 hours from the carrier's own inventory counts. The same answer the dashboard picker and the public country pages show. Empty lists mean the pair has no cached coverage yet, not that the country has no areas.
33089
+ *
33090
+ */
33091
+ areaAvailability?: {
33092
+ /**
33093
+ * Deliverable numbers now, deepest first. Pass `ndc` as `areaCode` to hold the order to it.
33094
+ */
33095
+ inStock?: Array<{
33096
+ ndc?: string;
33097
+ name?: string;
33098
+ /**
33099
+ * Numbers we can sell there: the carrier count minus the numbers we hold back (WhatsApp refused them or another order holds them).
33100
+ */
33101
+ count?: number;
33102
+ }>;
33103
+ /**
33104
+ * The carrier lists nothing there and the number type is a document tier: submit KYC with `areaCode` and `preOrder: true`, the carrier sources one (usually 2 to 4 weeks, never guaranteed), nothing is billed until it is active.
33105
+ */
33106
+ preOrder?: Array<{
33107
+ ndc?: string;
33108
+ name?: string;
33109
+ }>;
33110
+ /**
33111
+ * Nothing deliverable and no pre-order: `listed` > 0 is stock the carrier shows that WhatsApp refused recently (held back until it clears), 0 is a dry area of an instant tier. A stock watch (POST /v1/phone-numbers/stock-watches with `areaCode`) is the way to hear when it is back.
33112
+ */
33113
+ outOfStock?: Array<{
33114
+ ndc?: string;
33115
+ name?: string;
33116
+ listed?: number;
33117
+ }>;
33118
+ };
33025
33119
  });
33026
33120
  type CheckWhatsAppNumberAvailabilityError = (unknown | {
33027
33121
  error?: string;
@@ -34355,7 +34449,17 @@ type CreatePhoneNumberStockWatchData = {
34355
34449
  areaCode?: string;
34356
34450
  };
34357
34451
  };
34358
- type CreatePhoneNumberStockWatchResponse = (PhoneNumberStockWatch);
34452
+ type CreatePhoneNumberStockWatchResponse = ((PhoneNumberStockWatch & {
34453
+ /**
34454
+ * See the 201 response.
34455
+ */
34456
+ preOrderable?: boolean;
34457
+ }) | (PhoneNumberStockWatch & {
34458
+ /**
34459
+ * True when the watched area can be bought today as a pre-order (the carrier lists nothing there and the type is a document tier): submit KYC with `areaCode` and `preOrder: true` instead of waiting, usually 2 to 4 weeks, nothing billed until active. The watch is armed either way.
34460
+ */
34461
+ preOrderable?: boolean;
34462
+ }));
34359
34463
  type CreatePhoneNumberStockWatchError = (ErrorResponse | {
34360
34464
  error?: string;
34361
34465
  } | unknown);
package/dist/index.d.ts CHANGED
@@ -808,7 +808,7 @@ declare class Zernio {
808
808
  remediatePhoneNumber: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<RemediatePhoneNumberData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<RemediatePhoneNumberResponse, unknown, ThrowOnError>;
809
809
  replyToPhoneNumberReviewer: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<ReplyToPhoneNumberReviewerData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<ReplyToPhoneNumberReviewerResponse, unknown, ThrowOnError>;
810
810
  respondToPhoneNumberReviewer: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<RespondToPhoneNumberReviewerData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<RespondToPhoneNumberReviewerResponse, unknown, ThrowOnError>;
811
- createPhoneNumberStockWatch: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<CreatePhoneNumberStockWatchData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<PhoneNumberStockWatch, unknown, ThrowOnError>;
811
+ createPhoneNumberStockWatch: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<CreatePhoneNumberStockWatchData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<CreatePhoneNumberStockWatchResponse, unknown, ThrowOnError>;
812
812
  listPhoneNumberStockWatches: <ThrowOnError extends boolean = false>(options?: _hey_api_client_fetch.OptionsLegacyParser<unknown, ThrowOnError>) => _hey_api_client_fetch.RequestResult<ListPhoneNumberStockWatchesResponse, ListPhoneNumberStockWatchesError, ThrowOnError>;
813
813
  deletePhoneNumberStockWatch: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<DeletePhoneNumberStockWatchData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<DeletePhoneNumberStockWatchResponse, unknown, ThrowOnError>;
814
814
  };
@@ -19711,6 +19711,32 @@ type GetConnectUrlData = {
19711
19711
  *
19712
19712
  */
19713
19713
  redirect_url?: string;
19714
+ /**
19715
+ * Comma-separated permission areas to request instead of the platform's full permission set. Values: `posting`, `analytics`, `comments`, `messaging`, `ads`. Omit it (the default, and what the dashboard does) to request everything the platform supports.
19716
+ *
19717
+ * When present, the consent dialog asks only for the platform scopes behind those areas plus the scopes every connection needs (identity, token refresh, and listing the pages, organizations or channels the user picks from). Scopes the user was never asked for are absent from the account's `permissions`, and the health endpoints report them as not granted, so a `posting`-only account cannot read analytics or the inbox until it is connected again with more areas. First comments need `comments`: a `posting`-only account publishes the post and skips the first comment. Scopes the platform lists under none of the areas (X likes, bookmarks and follows, Pinterest ads-only extras) are requested only when the parameter is omitted.
19718
+ *
19719
+ * Supported on facebook, instagram (both login methods), linkedin, twitter, tiktok, youtube, threads, reddit, pinterest, googlebusiness and slack (via `GET /v1/connect/slack`). Rejected with 400 `INVALID_FIELD_VALUE` (`param: scopes`) on bluesky, telegram, discord, snapchat and whatsapp, whose dialog cannot be reduced, and for an empty list or an unknown area.
19720
+ *
19721
+ * What each area asks for, per platform (Google scopes shortened to their last path segment):
19722
+ *
19723
+ * | Platform | `posting` | `analytics` | `comments` | `messaging` | `ads` | Always requested |
19724
+ * |---|---|---|---|---|---|---|
19725
+ * | facebook | `pages_manage_posts` | `read_insights`, `pages_read_user_content` | `pages_manage_engagement`, `pages_read_user_content` | (in the always-requested set) | `ads_management`, `ads_read`, `leads_retrieval`, `pages_manage_ads`, `instagram_basic`, `business_management` | `pages_show_list`, `pages_read_engagement`, `pages_manage_metadata`, `pages_messaging` |
19726
+ * | instagram (Instagram Login) | `instagram_business_content_publish` | `instagram_business_manage_insights` | `instagram_business_manage_comments` | `instagram_business_manage_messages` | none | `instagram_business_basic` |
19727
+ * | instagram (`loginMethod=facebook_login`) | `instagram_content_publish` | `instagram_manage_insights` | `instagram_manage_comments` | `instagram_manage_messages` | `ads_management`, `ads_read`, `leads_retrieval`, `pages_manage_ads` | `instagram_basic`, `pages_show_list`, `pages_read_engagement`, `business_management`, `pages_messaging`, `pages_manage_metadata` |
19728
+ * | linkedin | `w_member_social`, `w_organization_social`, `r_organization_social`, `r_organization_followers` | `r_member_postAnalytics`, `r_member_profileAnalytics`, `rw_organization_admin`, `r_organization_social`, `r_organization_followers` | `w_member_social`, `w_member_social_feed`, `w_organization_social`, `w_organization_social_feed`, `r_organization_social`, `r_organization_social_feed` | none | `r_ads`, `rw_ads`, `r_ads_reporting`, `r_marketing_leadgen_automation`, `rw_conversions` | `openid`, `profile`, `email`, `r_basicprofile`, `rw_organization_admin` |
19729
+ * | twitter | `tweet.write`, `media.write` | (in the always-requested set) | `tweet.write`, `like.write`, `tweet.moderate.write` | `dm.read`, `dm.write`, `media.write` | none | `tweet.read`, `users.read`, `offline.access` |
19730
+ * | tiktok | `video.publish` | `user.info.stats`, `user.insights`, `video.list`, `video.insights` | `comment.list`, `comment.list.manage`, `video.list` | `message.list.read`, `message.list.send`, `message.list.manage` | none | `user.info.basic`, `user.info.username`, `user.info.profile`, `user.account.type`, `video.publish`, `video.upload`, `video.list` |
19731
+ * | youtube | `youtube.upload` | `yt-analytics.readonly` | `youtube.force-ssl` | none | none | `youtube` |
19732
+ * | threads | `threads_content_publish`, `threads_manage_replies`, `threads_delete` | `threads_manage_insights` | `threads_content_publish`, `threads_read_replies`, `threads_manage_replies`, `threads_delete` | none | none | `threads_basic` |
19733
+ * | reddit | `submit`, `read`, `mysubreddits`, `flair`, `history`, `edit` | `read`, `history` | `read`, `history`, `edit`, `vote` | `privatemessages` | none | `identity` |
19734
+ * | pinterest | `boards:write`, `pins:read`, `pins:write` | `pins:read`, `user_accounts:read` | none | none | `ads:read`, `ads:write`, `boards:write`, `pins:read`, `pins:write` | `boards:read`, `user_accounts:read` |
19735
+ * | googlebusiness | `business.manage` | `business.manage` | `business.manage` | none | none | `business.manage`, `userinfo.profile`, `userinfo.email` |
19736
+ * | slack | `chat:write`, `chat:write.public`, `chat:write.customize`, `files:write`, `files:read` | none | none | `chat:write`, `chat:write.customize`, `files:write`, `files:read`, `channels:history`, `groups:history`, `im:history`, `mpim:history`, `im:read`, `im:write`, `mpim:read`, `users:read`, `reactions:read`, `reactions:write` | none | `channels:join`, `channels:read`, `groups:read`, `team:read` |
19737
+ *
19738
+ */
19739
+ scopes?: string;
19714
19740
  /**
19715
19741
  * WhatsApp only. Rejected with 400 `INVALID_FIELD_VALUE` on any other platform.
19716
19742
  *
@@ -22896,6 +22922,10 @@ type ListSlackChannelsData = {
22896
22922
  * Start-OAuth mode only: where to send the user after the connect completes. `redirectUrl` is accepted as an alias.
22897
22923
  */
22898
22924
  redirect_url?: string;
22925
+ /**
22926
+ * Start-OAuth mode only. Comma-separated permission areas to request instead of the full Slack scope set, with the same semantics as `scopes` on `GET /v1/connect/{platform}`: `posting` installs the bot with the channel scopes it needs to post, `messaging` adds the history, DM and reaction scopes the inbox reads; `analytics`, `comments` and `ads` add nothing on Slack. Omit it to request everything.
22927
+ */
22928
+ scopes?: string;
22899
22929
  };
22900
22930
  };
22901
22931
  type ListSlackChannelsResponse = (({
@@ -32717,7 +32747,7 @@ type CheckPhoneNumberAvailabilityResponse = ({
32717
32747
  */
32718
32748
  areas?: Array<(string)>;
32719
32749
  /**
32720
- * Live inventory grouped by area code. For US and CA this is the full country inventory (every area code with stock, recognizable metros listed first, then alphabetical); other countries are ordered largest stock first; they list the areas in the latest inventory page (up to 500 numbers, which for most countries is the entire pool). Empty when out of stock (or the area lookup failed). Pass a chosen `ndc` as `areaCode` on POST /v1/phone-numbers/purchase (or on the KYC submit for regulated countries) to require that area.
32750
+ * Live inventory grouped by area code. For US and CA this is the full country inventory (every area code with stock, recognizable metros listed first, then alphabetical); other countries are ordered largest stock first; they list the areas in the latest inventory page (up to 500 numbers, which for most countries is the entire pool). Empty when out of stock (or the area lookup failed). Pass a chosen `ndc` as `areaCode` on POST /v1/phone-numbers/purchase (or on the KYC submit for regulated countries) to require that area. Equal to `areaAvailability.inStock`.
32721
32751
  *
32722
32752
  */
32723
32753
  areaOptions?: Array<{
@@ -32735,7 +32765,7 @@ type CheckPhoneNumberAvailabilityResponse = ({
32735
32765
  count?: number;
32736
32766
  }>;
32737
32767
  /**
32738
- * Areas that had stock in the last 90 days and have none now. Pass one as `areaCode` with `preOrder: true` on the KYC submit when `preOrderable` is true, or watch it with POST /v1/phone-numbers/stock-watches.
32768
+ * Every area of the country's numbering plan with nothing deliverable now: `areaAvailability.preOrder` plus `areaAvailability.outOfStock`, kept for older clients. Pass one as `areaCode` with `preOrder: true` on the KYC submit when `preOrderable` is true, or watch it with POST /v1/phone-numbers/stock-watches.
32739
32769
  *
32740
32770
  */
32741
32771
  soldOutAreas?: Array<{
@@ -32752,6 +32782,38 @@ type CheckPhoneNumberAvailabilityResponse = ({
32752
32782
  */
32753
32783
  preOrderable?: boolean;
32754
32784
  }>;
32785
+ /**
32786
+ * Every area of the country's numbering plan (Google libphonenumber geocoding, one row per city: Madrid covers 910 to 919), in one of three states, refreshed every 6 hours from the carrier's own inventory counts. The same answer the dashboard picker and the public country pages show. Empty lists mean the pair has no cached coverage yet, not that the country has no areas.
32787
+ *
32788
+ */
32789
+ areaAvailability?: {
32790
+ /**
32791
+ * Deliverable numbers now, deepest first. Pass `ndc` as `areaCode` to hold the order to it.
32792
+ */
32793
+ inStock?: Array<{
32794
+ ndc?: string;
32795
+ name?: string;
32796
+ /**
32797
+ * Numbers we can sell there: the carrier count minus the numbers we hold back (WhatsApp refused them or another order holds them).
32798
+ */
32799
+ count?: number;
32800
+ }>;
32801
+ /**
32802
+ * The carrier lists nothing there and the number type is a document tier: submit KYC with `areaCode` and `preOrder: true`, the carrier sources one (usually 2 to 4 weeks, never guaranteed), nothing is billed until it is active.
32803
+ */
32804
+ preOrder?: Array<{
32805
+ ndc?: string;
32806
+ name?: string;
32807
+ }>;
32808
+ /**
32809
+ * Nothing deliverable and no pre-order: `listed` > 0 is stock the carrier shows that WhatsApp refused recently (held back until it clears), 0 is a dry area of an instant tier. A stock watch (POST /v1/phone-numbers/stock-watches with `areaCode`) is the way to hear when it is back.
32810
+ */
32811
+ outOfStock?: Array<{
32812
+ ndc?: string;
32813
+ name?: string;
32814
+ listed?: number;
32815
+ }>;
32816
+ };
32755
32817
  });
32756
32818
  type CheckPhoneNumberAvailabilityError = (unknown | {
32757
32819
  error?: string;
@@ -32987,7 +33049,7 @@ type CheckWhatsAppNumberAvailabilityResponse = ({
32987
33049
  */
32988
33050
  areas?: Array<(string)>;
32989
33051
  /**
32990
- * Live inventory grouped by area code. For US and CA this is the full country inventory (every area code with stock, recognizable metros listed first, then alphabetical); other countries are ordered largest stock first; they list the areas in the latest inventory page (up to 500 numbers, which for most countries is the entire pool). Empty when out of stock (or the area lookup failed). Pass a chosen `ndc` as `areaCode` on POST /v1/phone-numbers/purchase (or on the KYC submit for regulated countries) to require that area.
33052
+ * Live inventory grouped by area code. For US and CA this is the full country inventory (every area code with stock, recognizable metros listed first, then alphabetical); other countries are ordered largest stock first; they list the areas in the latest inventory page (up to 500 numbers, which for most countries is the entire pool). Empty when out of stock (or the area lookup failed). Pass a chosen `ndc` as `areaCode` on POST /v1/phone-numbers/purchase (or on the KYC submit for regulated countries) to require that area. Equal to `areaAvailability.inStock`.
32991
33053
  *
32992
33054
  */
32993
33055
  areaOptions?: Array<{
@@ -33005,7 +33067,7 @@ type CheckWhatsAppNumberAvailabilityResponse = ({
33005
33067
  count?: number;
33006
33068
  }>;
33007
33069
  /**
33008
- * Areas that had stock in the last 90 days and have none now. Pass one as `areaCode` with `preOrder: true` on the KYC submit when `preOrderable` is true, or watch it with POST /v1/phone-numbers/stock-watches.
33070
+ * Every area of the country's numbering plan with nothing deliverable now: `areaAvailability.preOrder` plus `areaAvailability.outOfStock`, kept for older clients. Pass one as `areaCode` with `preOrder: true` on the KYC submit when `preOrderable` is true, or watch it with POST /v1/phone-numbers/stock-watches.
33009
33071
  *
33010
33072
  */
33011
33073
  soldOutAreas?: Array<{
@@ -33022,6 +33084,38 @@ type CheckWhatsAppNumberAvailabilityResponse = ({
33022
33084
  */
33023
33085
  preOrderable?: boolean;
33024
33086
  }>;
33087
+ /**
33088
+ * Every area of the country's numbering plan (Google libphonenumber geocoding, one row per city: Madrid covers 910 to 919), in one of three states, refreshed every 6 hours from the carrier's own inventory counts. The same answer the dashboard picker and the public country pages show. Empty lists mean the pair has no cached coverage yet, not that the country has no areas.
33089
+ *
33090
+ */
33091
+ areaAvailability?: {
33092
+ /**
33093
+ * Deliverable numbers now, deepest first. Pass `ndc` as `areaCode` to hold the order to it.
33094
+ */
33095
+ inStock?: Array<{
33096
+ ndc?: string;
33097
+ name?: string;
33098
+ /**
33099
+ * Numbers we can sell there: the carrier count minus the numbers we hold back (WhatsApp refused them or another order holds them).
33100
+ */
33101
+ count?: number;
33102
+ }>;
33103
+ /**
33104
+ * The carrier lists nothing there and the number type is a document tier: submit KYC with `areaCode` and `preOrder: true`, the carrier sources one (usually 2 to 4 weeks, never guaranteed), nothing is billed until it is active.
33105
+ */
33106
+ preOrder?: Array<{
33107
+ ndc?: string;
33108
+ name?: string;
33109
+ }>;
33110
+ /**
33111
+ * Nothing deliverable and no pre-order: `listed` > 0 is stock the carrier shows that WhatsApp refused recently (held back until it clears), 0 is a dry area of an instant tier. A stock watch (POST /v1/phone-numbers/stock-watches with `areaCode`) is the way to hear when it is back.
33112
+ */
33113
+ outOfStock?: Array<{
33114
+ ndc?: string;
33115
+ name?: string;
33116
+ listed?: number;
33117
+ }>;
33118
+ };
33025
33119
  });
33026
33120
  type CheckWhatsAppNumberAvailabilityError = (unknown | {
33027
33121
  error?: string;
@@ -34355,7 +34449,17 @@ type CreatePhoneNumberStockWatchData = {
34355
34449
  areaCode?: string;
34356
34450
  };
34357
34451
  };
34358
- type CreatePhoneNumberStockWatchResponse = (PhoneNumberStockWatch);
34452
+ type CreatePhoneNumberStockWatchResponse = ((PhoneNumberStockWatch & {
34453
+ /**
34454
+ * See the 201 response.
34455
+ */
34456
+ preOrderable?: boolean;
34457
+ }) | (PhoneNumberStockWatch & {
34458
+ /**
34459
+ * True when the watched area can be bought today as a pre-order (the carrier lists nothing there and the type is a document tier): submit KYC with `areaCode` and `preOrder: true` instead of waiting, usually 2 to 4 weeks, nothing billed until active. The watch is armed either way.
34460
+ */
34461
+ preOrderable?: boolean;
34462
+ }));
34359
34463
  type CreatePhoneNumberStockWatchError = (ErrorResponse | {
34360
34464
  error?: string;
34361
34465
  } | unknown);
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.1008",
39
+ version: "0.2.1010",
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.1008",
8
+ version: "0.2.1010",
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.1008",
3
+ "version": "0.2.1010",
4
4
  "description": "The official Node.js library for the Zernio API",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -18623,6 +18623,32 @@ export type GetConnectUrlData = {
18623
18623
  *
18624
18624
  */
18625
18625
  redirect_url?: string;
18626
+ /**
18627
+ * Comma-separated permission areas to request instead of the platform's full permission set. Values: `posting`, `analytics`, `comments`, `messaging`, `ads`. Omit it (the default, and what the dashboard does) to request everything the platform supports.
18628
+ *
18629
+ * When present, the consent dialog asks only for the platform scopes behind those areas plus the scopes every connection needs (identity, token refresh, and listing the pages, organizations or channels the user picks from). Scopes the user was never asked for are absent from the account's `permissions`, and the health endpoints report them as not granted, so a `posting`-only account cannot read analytics or the inbox until it is connected again with more areas. First comments need `comments`: a `posting`-only account publishes the post and skips the first comment. Scopes the platform lists under none of the areas (X likes, bookmarks and follows, Pinterest ads-only extras) are requested only when the parameter is omitted.
18630
+ *
18631
+ * Supported on facebook, instagram (both login methods), linkedin, twitter, tiktok, youtube, threads, reddit, pinterest, googlebusiness and slack (via `GET /v1/connect/slack`). Rejected with 400 `INVALID_FIELD_VALUE` (`param: scopes`) on bluesky, telegram, discord, snapchat and whatsapp, whose dialog cannot be reduced, and for an empty list or an unknown area.
18632
+ *
18633
+ * What each area asks for, per platform (Google scopes shortened to their last path segment):
18634
+ *
18635
+ * | Platform | `posting` | `analytics` | `comments` | `messaging` | `ads` | Always requested |
18636
+ * |---|---|---|---|---|---|---|
18637
+ * | facebook | `pages_manage_posts` | `read_insights`, `pages_read_user_content` | `pages_manage_engagement`, `pages_read_user_content` | (in the always-requested set) | `ads_management`, `ads_read`, `leads_retrieval`, `pages_manage_ads`, `instagram_basic`, `business_management` | `pages_show_list`, `pages_read_engagement`, `pages_manage_metadata`, `pages_messaging` |
18638
+ * | instagram (Instagram Login) | `instagram_business_content_publish` | `instagram_business_manage_insights` | `instagram_business_manage_comments` | `instagram_business_manage_messages` | none | `instagram_business_basic` |
18639
+ * | instagram (`loginMethod=facebook_login`) | `instagram_content_publish` | `instagram_manage_insights` | `instagram_manage_comments` | `instagram_manage_messages` | `ads_management`, `ads_read`, `leads_retrieval`, `pages_manage_ads` | `instagram_basic`, `pages_show_list`, `pages_read_engagement`, `business_management`, `pages_messaging`, `pages_manage_metadata` |
18640
+ * | linkedin | `w_member_social`, `w_organization_social`, `r_organization_social`, `r_organization_followers` | `r_member_postAnalytics`, `r_member_profileAnalytics`, `rw_organization_admin`, `r_organization_social`, `r_organization_followers` | `w_member_social`, `w_member_social_feed`, `w_organization_social`, `w_organization_social_feed`, `r_organization_social`, `r_organization_social_feed` | none | `r_ads`, `rw_ads`, `r_ads_reporting`, `r_marketing_leadgen_automation`, `rw_conversions` | `openid`, `profile`, `email`, `r_basicprofile`, `rw_organization_admin` |
18641
+ * | twitter | `tweet.write`, `media.write` | (in the always-requested set) | `tweet.write`, `like.write`, `tweet.moderate.write` | `dm.read`, `dm.write`, `media.write` | none | `tweet.read`, `users.read`, `offline.access` |
18642
+ * | tiktok | `video.publish` | `user.info.stats`, `user.insights`, `video.list`, `video.insights` | `comment.list`, `comment.list.manage`, `video.list` | `message.list.read`, `message.list.send`, `message.list.manage` | none | `user.info.basic`, `user.info.username`, `user.info.profile`, `user.account.type`, `video.publish`, `video.upload`, `video.list` |
18643
+ * | youtube | `youtube.upload` | `yt-analytics.readonly` | `youtube.force-ssl` | none | none | `youtube` |
18644
+ * | threads | `threads_content_publish`, `threads_manage_replies`, `threads_delete` | `threads_manage_insights` | `threads_content_publish`, `threads_read_replies`, `threads_manage_replies`, `threads_delete` | none | none | `threads_basic` |
18645
+ * | reddit | `submit`, `read`, `mysubreddits`, `flair`, `history`, `edit` | `read`, `history` | `read`, `history`, `edit`, `vote` | `privatemessages` | none | `identity` |
18646
+ * | pinterest | `boards:write`, `pins:read`, `pins:write` | `pins:read`, `user_accounts:read` | none | none | `ads:read`, `ads:write`, `boards:write`, `pins:read`, `pins:write` | `boards:read`, `user_accounts:read` |
18647
+ * | googlebusiness | `business.manage` | `business.manage` | `business.manage` | none | none | `business.manage`, `userinfo.profile`, `userinfo.email` |
18648
+ * | slack | `chat:write`, `chat:write.public`, `chat:write.customize`, `files:write`, `files:read` | none | none | `chat:write`, `chat:write.customize`, `files:write`, `files:read`, `channels:history`, `groups:history`, `im:history`, `mpim:history`, `im:read`, `im:write`, `mpim:read`, `users:read`, `reactions:read`, `reactions:write` | none | `channels:join`, `channels:read`, `groups:read`, `team:read` |
18649
+ *
18650
+ */
18651
+ scopes?: string;
18626
18652
  /**
18627
18653
  * WhatsApp only. Rejected with 400 `INVALID_FIELD_VALUE` on any other platform.
18628
18654
  *
@@ -21971,6 +21997,10 @@ export type ListSlackChannelsData = {
21971
21997
  * Start-OAuth mode only: where to send the user after the connect completes. `redirectUrl` is accepted as an alias.
21972
21998
  */
21973
21999
  redirect_url?: string;
22000
+ /**
22001
+ * Start-OAuth mode only. Comma-separated permission areas to request instead of the full Slack scope set, with the same semantics as `scopes` on `GET /v1/connect/{platform}`: `posting` installs the bot with the channel scopes it needs to post, `messaging` adds the history, DM and reaction scopes the inbox reads; `analytics`, `comments` and `ads` add nothing on Slack. Omit it to request everything.
22002
+ */
22003
+ scopes?: string;
21974
22004
  };
21975
22005
  };
21976
22006
 
@@ -32590,7 +32620,7 @@ export type CheckPhoneNumberAvailabilityResponse = ({
32590
32620
  */
32591
32621
  areas?: Array<(string)>;
32592
32622
  /**
32593
- * Live inventory grouped by area code. For US and CA this is the full country inventory (every area code with stock, recognizable metros listed first, then alphabetical); other countries are ordered largest stock first; they list the areas in the latest inventory page (up to 500 numbers, which for most countries is the entire pool). Empty when out of stock (or the area lookup failed). Pass a chosen `ndc` as `areaCode` on POST /v1/phone-numbers/purchase (or on the KYC submit for regulated countries) to require that area.
32623
+ * Live inventory grouped by area code. For US and CA this is the full country inventory (every area code with stock, recognizable metros listed first, then alphabetical); other countries are ordered largest stock first; they list the areas in the latest inventory page (up to 500 numbers, which for most countries is the entire pool). Empty when out of stock (or the area lookup failed). Pass a chosen `ndc` as `areaCode` on POST /v1/phone-numbers/purchase (or on the KYC submit for regulated countries) to require that area. Equal to `areaAvailability.inStock`.
32594
32624
  *
32595
32625
  */
32596
32626
  areaOptions?: Array<{
@@ -32608,7 +32638,7 @@ export type CheckPhoneNumberAvailabilityResponse = ({
32608
32638
  count?: number;
32609
32639
  }>;
32610
32640
  /**
32611
- * Areas that had stock in the last 90 days and have none now. Pass one as `areaCode` with `preOrder: true` on the KYC submit when `preOrderable` is true, or watch it with POST /v1/phone-numbers/stock-watches.
32641
+ * Every area of the country's numbering plan with nothing deliverable now: `areaAvailability.preOrder` plus `areaAvailability.outOfStock`, kept for older clients. Pass one as `areaCode` with `preOrder: true` on the KYC submit when `preOrderable` is true, or watch it with POST /v1/phone-numbers/stock-watches.
32612
32642
  *
32613
32643
  */
32614
32644
  soldOutAreas?: Array<{
@@ -32625,6 +32655,38 @@ export type CheckPhoneNumberAvailabilityResponse = ({
32625
32655
  */
32626
32656
  preOrderable?: boolean;
32627
32657
  }>;
32658
+ /**
32659
+ * Every area of the country's numbering plan (Google libphonenumber geocoding, one row per city: Madrid covers 910 to 919), in one of three states, refreshed every 6 hours from the carrier's own inventory counts. The same answer the dashboard picker and the public country pages show. Empty lists mean the pair has no cached coverage yet, not that the country has no areas.
32660
+ *
32661
+ */
32662
+ areaAvailability?: {
32663
+ /**
32664
+ * Deliverable numbers now, deepest first. Pass `ndc` as `areaCode` to hold the order to it.
32665
+ */
32666
+ inStock?: Array<{
32667
+ ndc?: string;
32668
+ name?: string;
32669
+ /**
32670
+ * Numbers we can sell there: the carrier count minus the numbers we hold back (WhatsApp refused them or another order holds them).
32671
+ */
32672
+ count?: number;
32673
+ }>;
32674
+ /**
32675
+ * The carrier lists nothing there and the number type is a document tier: submit KYC with `areaCode` and `preOrder: true`, the carrier sources one (usually 2 to 4 weeks, never guaranteed), nothing is billed until it is active.
32676
+ */
32677
+ preOrder?: Array<{
32678
+ ndc?: string;
32679
+ name?: string;
32680
+ }>;
32681
+ /**
32682
+ * Nothing deliverable and no pre-order: `listed` > 0 is stock the carrier shows that WhatsApp refused recently (held back until it clears), 0 is a dry area of an instant tier. A stock watch (POST /v1/phone-numbers/stock-watches with `areaCode`) is the way to hear when it is back.
32683
+ */
32684
+ outOfStock?: Array<{
32685
+ ndc?: string;
32686
+ name?: string;
32687
+ listed?: number;
32688
+ }>;
32689
+ };
32628
32690
  });
32629
32691
 
32630
32692
  export type CheckPhoneNumberAvailabilityError = (unknown | {
@@ -32874,7 +32936,7 @@ export type CheckWhatsAppNumberAvailabilityResponse = ({
32874
32936
  */
32875
32937
  areas?: Array<(string)>;
32876
32938
  /**
32877
- * Live inventory grouped by area code. For US and CA this is the full country inventory (every area code with stock, recognizable metros listed first, then alphabetical); other countries are ordered largest stock first; they list the areas in the latest inventory page (up to 500 numbers, which for most countries is the entire pool). Empty when out of stock (or the area lookup failed). Pass a chosen `ndc` as `areaCode` on POST /v1/phone-numbers/purchase (or on the KYC submit for regulated countries) to require that area.
32939
+ * Live inventory grouped by area code. For US and CA this is the full country inventory (every area code with stock, recognizable metros listed first, then alphabetical); other countries are ordered largest stock first; they list the areas in the latest inventory page (up to 500 numbers, which for most countries is the entire pool). Empty when out of stock (or the area lookup failed). Pass a chosen `ndc` as `areaCode` on POST /v1/phone-numbers/purchase (or on the KYC submit for regulated countries) to require that area. Equal to `areaAvailability.inStock`.
32878
32940
  *
32879
32941
  */
32880
32942
  areaOptions?: Array<{
@@ -32892,7 +32954,7 @@ export type CheckWhatsAppNumberAvailabilityResponse = ({
32892
32954
  count?: number;
32893
32955
  }>;
32894
32956
  /**
32895
- * Areas that had stock in the last 90 days and have none now. Pass one as `areaCode` with `preOrder: true` on the KYC submit when `preOrderable` is true, or watch it with POST /v1/phone-numbers/stock-watches.
32957
+ * Every area of the country's numbering plan with nothing deliverable now: `areaAvailability.preOrder` plus `areaAvailability.outOfStock`, kept for older clients. Pass one as `areaCode` with `preOrder: true` on the KYC submit when `preOrderable` is true, or watch it with POST /v1/phone-numbers/stock-watches.
32896
32958
  *
32897
32959
  */
32898
32960
  soldOutAreas?: Array<{
@@ -32909,6 +32971,38 @@ export type CheckWhatsAppNumberAvailabilityResponse = ({
32909
32971
  */
32910
32972
  preOrderable?: boolean;
32911
32973
  }>;
32974
+ /**
32975
+ * Every area of the country's numbering plan (Google libphonenumber geocoding, one row per city: Madrid covers 910 to 919), in one of three states, refreshed every 6 hours from the carrier's own inventory counts. The same answer the dashboard picker and the public country pages show. Empty lists mean the pair has no cached coverage yet, not that the country has no areas.
32976
+ *
32977
+ */
32978
+ areaAvailability?: {
32979
+ /**
32980
+ * Deliverable numbers now, deepest first. Pass `ndc` as `areaCode` to hold the order to it.
32981
+ */
32982
+ inStock?: Array<{
32983
+ ndc?: string;
32984
+ name?: string;
32985
+ /**
32986
+ * Numbers we can sell there: the carrier count minus the numbers we hold back (WhatsApp refused them or another order holds them).
32987
+ */
32988
+ count?: number;
32989
+ }>;
32990
+ /**
32991
+ * The carrier lists nothing there and the number type is a document tier: submit KYC with `areaCode` and `preOrder: true`, the carrier sources one (usually 2 to 4 weeks, never guaranteed), nothing is billed until it is active.
32992
+ */
32993
+ preOrder?: Array<{
32994
+ ndc?: string;
32995
+ name?: string;
32996
+ }>;
32997
+ /**
32998
+ * Nothing deliverable and no pre-order: `listed` > 0 is stock the carrier shows that WhatsApp refused recently (held back until it clears), 0 is a dry area of an instant tier. A stock watch (POST /v1/phone-numbers/stock-watches with `areaCode`) is the way to hear when it is back.
32999
+ */
33000
+ outOfStock?: Array<{
33001
+ ndc?: string;
33002
+ name?: string;
33003
+ listed?: number;
33004
+ }>;
33005
+ };
32912
33006
  });
32913
33007
 
32914
33008
  export type CheckWhatsAppNumberAvailabilityError = (unknown | {
@@ -34331,7 +34425,17 @@ export type CreatePhoneNumberStockWatchData = {
34331
34425
  };
34332
34426
  };
34333
34427
 
34334
- export type CreatePhoneNumberStockWatchResponse = (PhoneNumberStockWatch);
34428
+ export type CreatePhoneNumberStockWatchResponse = ((PhoneNumberStockWatch & {
34429
+ /**
34430
+ * See the 201 response.
34431
+ */
34432
+ preOrderable?: boolean;
34433
+ }) | (PhoneNumberStockWatch & {
34434
+ /**
34435
+ * True when the watched area can be bought today as a pre-order (the carrier lists nothing there and the type is a document tier): submit KYC with `areaCode` and `preOrder: true` instead of waiting, usually 2 to 4 weeks, nothing billed until active. The watch is armed either way.
34436
+ */
34437
+ preOrderable?: boolean;
34438
+ }));
34335
34439
 
34336
34440
  export type CreatePhoneNumberStockWatchError = (ErrorResponse | {
34337
34441
  error?: string;