@messagebird/sdk 0.45.0 → 0.47.0

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
@@ -3639,7 +3639,7 @@ type DomainId = string;
3639
3639
  type WhatsAppMessageStatus = "scheduled" | "accepted" | "sent" | "delivered" | "failed" | "rejected" | "canceled" | "received";
3640
3640
  type WhatsAppMessageId = string;
3641
3641
  /**
3642
- * Sender or recipient of a WhatsApp message: a phone number, a business-scoped user ID, or both.
3642
+ * Sender or recipient of a WhatsApp message: a phone number, a business-scoped user ID, or both. A message received from a WhatsApp user carries whatever profile they publish, which may be neither.
3643
3643
  */
3644
3644
  type WhatsAppAddress = {
3645
3645
  /**
@@ -3651,6 +3651,16 @@ type WhatsAppAddress = {
3651
3651
  *
3652
3652
  */
3653
3653
  bsuid?: string;
3654
+ /**
3655
+ * Present only on a message received from a WhatsApp user, on `from`; never on an outbound send's `to`, where the profile is not known. Absent when the contact has not adopted one, and on a message received before this workspace started recording them. Same form as a number's own username (`WhatsAppNumberProfile.username`), without a leading `@`; a message cannot be addressed by it.
3656
+ *
3657
+ */
3658
+ username?: string;
3659
+ /**
3660
+ * Present only on a message received from a WhatsApp user, on `from`; never on an outbound send's `to`, where the profile is not known. Absent when the message carries no profile, and on a message received before this workspace started recording them.
3661
+ *
3662
+ */
3663
+ display_name?: string;
3654
3664
  };
3655
3665
  /**
3656
3666
  * The kind of value a template parameter carries, which follows the block it fills. The `text` type is a plain string substituted into a placeholder. This includes a coupon button's code, which the recipient copies from the button. The `image`, `video`, `gif`, and `document` types carry a media header's file in `url`. Each matches its header's `format`. The `location` type fills a location header and carries a point on the map. Open enum: more kinds may be added over time.
@@ -4011,6 +4021,246 @@ type WhatsAppContactCard = {
4011
4021
  urls?: Array<WhatsAppContactUrl>;
4012
4022
  addresses?: Array<WhatsAppContactAddress>;
4013
4023
  };
4024
+ /**
4025
+ * Which kind of interactive message this is.
4026
+ *
4027
+ * - `button`: up to three tappable buttons, each sending its own identifier
4028
+ * back as an inbound message. Carried in `buttons`.
4029
+ * - `list`: a single button that opens a menu of rows to choose one from.
4030
+ * - `cta_url`: a single button that opens a link.
4031
+ * - `carousel`: 2 to 10 media cards the recipient scrolls through sideways,
4032
+ * each with its own buttons. Carried in `cards`.
4033
+ * - `location_request_message`: a single button that asks the recipient to
4034
+ * share where they are. A tap arrives as an inbound `location` message.
4035
+ * - `request_contact_info`: a single button that asks the recipient to share
4036
+ * their phone number. A tap arrives as an inbound message carrying the number
4037
+ * on `contact_cards`, with `origin` set to `contact_request`.
4038
+ *
4039
+ * The last two name no field of their own: the ask is the whole message, and
4040
+ * `body_text` is all they carry.
4041
+ *
4042
+ * Open enum: WhatsApp adds interactive kinds over time, so treat an
4043
+ * unrecognized value as a future kind rather than an error.
4044
+ *
4045
+ */
4046
+ type WhatsAppInteractiveType$1 = "button" | "list" | "cta_url" | "carousel" | "location_request_message" | "request_contact_info" | (string & {});
4047
+ /**
4048
+ * A header's kind, and which field carries it. Open enum: WhatsApp adds header kinds over time, so treat an unrecognized value as a future kind rather than an error.
4049
+ *
4050
+ */
4051
+ type WhatsAppInteractiveHeaderType$1 = "text" | "image" | "video" | "document" | (string & {});
4052
+ /**
4053
+ * What the interactive message showed above its body. `type` names the kind and the field that carries it: `text` for a line of copy, `url` for the file every other kind shows. As on the message itself, the read vocabulary is open: dispatch on `type` and treat an unrecognized value as a header kind added since.
4054
+ *
4055
+ */
4056
+ type WhatsAppInteractiveHeader = {
4057
+ /**
4058
+ * Which kind of header this is, and which field carries it.
4059
+ */
4060
+ type: WhatsAppInteractiveHeaderType$1;
4061
+ /**
4062
+ * The line of text shown above the body.
4063
+ */
4064
+ text?: string;
4065
+ /**
4066
+ * The URL of the file shown above the body, as the send supplied it. Interactive content is outbound only, so Bird neither stores nor proxies the file.
4067
+ *
4068
+ */
4069
+ url?: string;
4070
+ };
4071
+ /**
4072
+ * Which kind of button this is, and which field carries it.
4073
+ *
4074
+ * - `quick_reply`: sends its own identifier back as an inbound message.
4075
+ * - `cta_url`: opens a link in the recipient's browser.
4076
+ *
4077
+ * Open enum: WhatsApp adds button kinds over time, so treat an unrecognized
4078
+ * value as a future kind rather than an error.
4079
+ *
4080
+ */
4081
+ type WhatsAppInteractiveButtonType$1 = "quick_reply" | "cta_url" | (string & {});
4082
+ /**
4083
+ * A reply button's label and the handle it carries back. On the echo of a message Bird sent, the pair the send declared; on an inbound `interactive_reply`, the pair the contact tapped. No length is declared here, because a tap can echo a template's quick-reply button, whose label runs longer than an interactive message's own allows.
4084
+ *
4085
+ */
4086
+ type WhatsAppInteractiveQuickReplyButton = {
4087
+ /**
4088
+ * The handle the button carries back, never shown to the recipient. On a tap on a template's quick-reply button, it is the payload that template declared.
4089
+ *
4090
+ */
4091
+ slug: string;
4092
+ /**
4093
+ * The label the recipient saw.
4094
+ */
4095
+ text: string;
4096
+ };
4097
+ /**
4098
+ * The link button the message offered: its label and the address it opens.
4099
+ *
4100
+ */
4101
+ type WhatsAppInteractiveCtaUrl = {
4102
+ /**
4103
+ * The button's label.
4104
+ */
4105
+ text: string;
4106
+ /**
4107
+ * The address the button opens, as the send supplied it.
4108
+ */
4109
+ url: string;
4110
+ };
4111
+ /**
4112
+ * One button the message offered. The field named by `type` is the one that is present. As on the message itself, the read vocabulary is open: dispatch on `type` and treat an unrecognized value as a button kind added since.
4113
+ *
4114
+ */
4115
+ type WhatsAppInteractiveButton = {
4116
+ /**
4117
+ * Which kind of button this is, and which field carries it.
4118
+ */
4119
+ type: WhatsAppInteractiveButtonType$1;
4120
+ /**
4121
+ * The button's label and the handle it sends back.
4122
+ */
4123
+ quick_reply?: WhatsAppInteractiveQuickReplyButton;
4124
+ /**
4125
+ * The button's label and the address it opens.
4126
+ */
4127
+ cta_url?: WhatsAppInteractiveCtaUrl;
4128
+ };
4129
+ /**
4130
+ * One option in a list's menu. On the echo of a message Bird sent, the row as declared; on an inbound `interactive_reply`, the row the contact chose. No length is declared here: this is what WhatsApp reported, not what a send is held to.
4131
+ *
4132
+ */
4133
+ type WhatsAppInteractiveListRow = {
4134
+ /**
4135
+ * The handle the row carries back, never shown to the recipient.
4136
+ */
4137
+ slug: string;
4138
+ /**
4139
+ * The row's label, shown as its title in the menu.
4140
+ */
4141
+ text: string;
4142
+ /**
4143
+ * The second line under the label. Absent when the row carried none.
4144
+ */
4145
+ description?: string;
4146
+ };
4147
+ /**
4148
+ * One group of options in the menu the message showed.
4149
+ */
4150
+ type WhatsAppInteractiveListSection = {
4151
+ /**
4152
+ * The group's heading, shown above its rows.
4153
+ */
4154
+ title: string;
4155
+ /**
4156
+ * The options in this group, in the order shown.
4157
+ */
4158
+ rows: Array<WhatsAppInteractiveListRow>;
4159
+ };
4160
+ /**
4161
+ * The menu the message offered: a button that opens it, and the groups of options behind it.
4162
+ *
4163
+ */
4164
+ type WhatsAppInteractiveList = {
4165
+ /**
4166
+ * The label of the button that opens the menu.
4167
+ */
4168
+ button_text: string;
4169
+ /**
4170
+ * The groups of options in the menu, in the order shown.
4171
+ */
4172
+ sections: Array<WhatsAppInteractiveListSection>;
4173
+ };
4174
+ /**
4175
+ * One card the carousel showed, in the position it appeared in.
4176
+ */
4177
+ type WhatsAppInteractiveCard = {
4178
+ /**
4179
+ * The image or video shown at the top of the card.
4180
+ */
4181
+ header: WhatsAppInteractiveHeader;
4182
+ /**
4183
+ * The card's own text. Absent when the card carried none.
4184
+ */
4185
+ body_text?: string;
4186
+ /**
4187
+ * The buttons the card offered, in the order shown.
4188
+ */
4189
+ buttons: Array<WhatsAppInteractiveButton>;
4190
+ };
4191
+ /**
4192
+ * Interactive content of a WhatsApp message: body text plus something the recipient can tap. The field named by `type` is the one that is present, except on `location_request_message` and `request_contact_info`, which name no field: each is a single button asking the recipient for something, so `body_text` is the whole message. Outbound only, and so an echo of what the send asked for: a contact cannot send interactive content, and a tap on it reads as `interactive_reply`, or on a location or contact request as the message the recipient shared in answer. Unlike the send schema, this one does not pin each `type` to its field. The vocabulary in `type` is open, so dispatch on it and treat an unrecognized value as a kind added since. Only the discriminator is open: this schema declares no additional properties, so a new kind's own payload field arrives here in the same change that introduces the kind, which is additive.
4193
+ *
4194
+ */
4195
+ type WhatsAppInteractive = {
4196
+ /**
4197
+ * Which kind of interactive message this is, and which field carries it.
4198
+ */
4199
+ type: WhatsAppInteractiveType$1;
4200
+ /**
4201
+ * What was shown above the body. Absent when the message carried no header.
4202
+ */
4203
+ header?: WhatsAppInteractiveHeader;
4204
+ /**
4205
+ * The message's main text.
4206
+ */
4207
+ body_text: string;
4208
+ /**
4209
+ * The small print below the body. Absent when the message carried none.
4210
+ */
4211
+ footer_text?: string;
4212
+ /**
4213
+ * The buttons the message offered, in the order shown.
4214
+ */
4215
+ buttons?: Array<WhatsAppInteractiveButton>;
4216
+ /**
4217
+ * The menu the message offered.
4218
+ */
4219
+ list?: WhatsAppInteractiveList;
4220
+ /**
4221
+ * The link button the message offered.
4222
+ */
4223
+ cta_url?: WhatsAppInteractiveCtaUrl;
4224
+ /**
4225
+ * The cards the message offered, in the order they appeared, left to right.
4226
+ *
4227
+ */
4228
+ cards?: Array<WhatsAppInteractiveCard>;
4229
+ };
4230
+ /**
4231
+ * Which kind of tap the reply came from.
4232
+ *
4233
+ * - `button`: a reply button on an interactive message, or a quick-reply
4234
+ * button on a template. Both carry an identifier and a label, so they read
4235
+ * the same way.
4236
+ * - `list`: a row chosen from a list's menu. Only this kind carries a
4237
+ * `description`.
4238
+ *
4239
+ * Open enum: WhatsApp adds interactive kinds over time, so treat an
4240
+ * unrecognized value as a future kind rather than an error.
4241
+ *
4242
+ */
4243
+ type WhatsAppInteractiveReplyType$1 = "button" | "list" | (string & {});
4244
+ /**
4245
+ * What the contact tapped, on an inbound message answering an interactive message or a template's quick-reply button. `type` names the kind and the field it names carries it, as everywhere else in this arm. Inbound only: a message that offers something to tap reads as `interactive` instead, and the two never appear together.
4246
+ *
4247
+ */
4248
+ type WhatsAppInteractiveReply = {
4249
+ /**
4250
+ * Which kind of tap this reply came from, and which field carries it.
4251
+ */
4252
+ type: WhatsAppInteractiveReplyType$1;
4253
+ /**
4254
+ * The button the contact tapped, as you declared it. On a reply to a template's quick-reply button, `slug` is the button's payload, which WhatsApp sets to the button's own label.
4255
+ *
4256
+ */
4257
+ button?: WhatsAppInteractiveQuickReplyButton;
4258
+ /**
4259
+ * The row the contact chose, as you declared it. `description` is present only when the row carried one.
4260
+ *
4261
+ */
4262
+ list?: WhatsAppInteractiveListRow;
4263
+ };
4014
4264
  /**
4015
4265
  * A message whose content we do not model, named so it is visible in the message log rather than arriving empty. Inbound only.
4016
4266
  *
@@ -4111,6 +4361,21 @@ type WhatsAppMessage = {
4111
4361
  *
4112
4362
  */
4113
4363
  readonly contact_cards?: Array<WhatsAppContactCard>;
4364
+ /**
4365
+ * Interactive content the message carried. Outbound only: a contact cannot send one. A tap on a reply button or a list row reads back as `interactive_reply` on the contact's inbound message; a `cta_url` link sends nothing back, and the two request kinds are answered by an inbound `location` or `contact_cards` message.
4366
+ *
4367
+ */
4368
+ readonly interactive?: WhatsAppInteractive;
4369
+ /**
4370
+ * The message this one answers. On an inbound message it is what WhatsApp reports as the reply's target: a tap on a button or a list row, and equally a text or media message the contact sent as a quoted reply. An outbound message echoes the `in_reply_to_message_id` it was sent with. Absent when the message answers nothing, and absent on an inbound message whose target we cannot match to a message we hold, which is the case for one sent before this workspace started recording them or one already past the 15-day window we keep provider ids for.
4371
+ *
4372
+ */
4373
+ readonly in_reply_to_message_id?: WhatsAppMessageId;
4374
+ /**
4375
+ * What the contact tapped, on a message answering an interactive message or a template's quick-reply button. Inbound only.
4376
+ *
4377
+ */
4378
+ readonly interactive_reply?: WhatsAppInteractiveReply;
4114
4379
  /**
4115
4380
  * Set when the contact sent content we do not model, naming the WhatsApp content type so the message is not silently empty. Inbound only.
4116
4381
  *
@@ -4266,6 +4531,292 @@ type WhatsAppDocumentSend = {
4266
4531
  */
4267
4532
  filename?: string;
4268
4533
  };
4534
+ /**
4535
+ * Which kind of interactive message to send.
4536
+ *
4537
+ * - `button`: up to three tappable buttons, each sending its own identifier
4538
+ * back as an inbound message. Carried in `buttons`.
4539
+ * - `list`: a single button that opens a menu of rows to choose one from.
4540
+ * - `cta_url`: a single button that opens a link, so the address stays out of
4541
+ * the message body.
4542
+ * - `carousel`: 2 to 10 media cards the recipient scrolls through sideways,
4543
+ * each with its own buttons. Carried in `cards`.
4544
+ * - `location_request_message`: a single button that asks the recipient to
4545
+ * share where they are. A tap arrives as an inbound `location` message.
4546
+ * - `request_contact_info`: a single button that asks the recipient to share
4547
+ * their phone number. A tap arrives as an inbound message carrying the number
4548
+ * on `contact_cards`, with `origin` set to `contact_request`.
4549
+ *
4550
+ * The last two name no field of their own: the ask is the whole message, and
4551
+ * `body_text` is all they carry.
4552
+ *
4553
+ * Closed on the write side: a kind Bird cannot send to Meta is rejected rather
4554
+ * than accepted and then failed asynchronously.
4555
+ *
4556
+ */
4557
+ type WhatsAppInteractiveTypeWrite = "button" | "list" | "cta_url" | "carousel" | "location_request_message" | "request_contact_info";
4558
+ /**
4559
+ * A header's kind, and which field carries it. `text` is a line of copy; the rest each show a file whose address you give in `url`. A `list` accepts `text` only, and a carousel card accepts `image` or `video` only. Closed on the write side: a kind Bird cannot send to Meta is rejected rather than accepted and then failed asynchronously.
4560
+ *
4561
+ */
4562
+ type WhatsAppInteractiveHeaderTypeWrite = "text" | "image" | "video" | "document";
4563
+ type WhatsAppInteractiveHeaderSend = ({
4564
+ type: "text";
4565
+ url?: unknown;
4566
+ } | {
4567
+ type: "image" | "video" | "document";
4568
+ text?: unknown;
4569
+ }) & {
4570
+ /**
4571
+ * Which kind of header this is, and which field carries it.
4572
+ */
4573
+ type: WhatsAppInteractiveHeaderTypeWrite;
4574
+ /**
4575
+ * A single line of text above the body. Send it on a `text` header.
4576
+ */
4577
+ text?: string;
4578
+ /**
4579
+ * Public `https` URL of the file to show. Send it on an `image`, `video` or `document` header. An image must be JPEG or PNG, up to 5 MB; a video, MP4 with H.264 video and AAC audio, up to 16 MB; a document, up to 100 MB, and PDF, Word, Excel, PowerPoint and plain text render reliably in the WhatsApp client while other file types are transmitted but unsupported. WhatsApp fetches it at send time, so it must still be reachable then: a signed URL has to outlive the send. We do not store or proxy the file. WhatsApp caches a fetched URL for 10 minutes and re-serves that copy for an identical URL sent again within the window; vary the URL to force a re-fetch.
4580
+ *
4581
+ */
4582
+ url?: string;
4583
+ };
4584
+ /**
4585
+ * Which kind of button this is, and which field carries it.
4586
+ *
4587
+ * - `quick_reply`: sends its own identifier back as an inbound message. The
4588
+ * name `WhatsAppTemplateButtonTypeWrite` already uses for the same control.
4589
+ * - `cta_url`: opens a link in the recipient's browser.
4590
+ *
4591
+ * Closed on the write side: a kind Bird cannot send to Meta is rejected rather
4592
+ * than accepted and then failed asynchronously.
4593
+ *
4594
+ */
4595
+ type WhatsAppInteractiveButtonTypeWrite = "quick_reply" | "cta_url";
4596
+ /**
4597
+ * One tappable reply button. Tapping it sends `slug` back as an inbound message, which reads as an `interactive_reply`.
4598
+ *
4599
+ */
4600
+ type WhatsAppInteractiveQuickReplyButtonSend = {
4601
+ /**
4602
+ * Your own handle for this button, echoed back on the reply. You choose the value and it is never shown to the recipient, so it can carry whatever your application needs to route the answer. Any characters, up to 256.
4603
+ *
4604
+ */
4605
+ slug: string;
4606
+ /**
4607
+ * The button's label. It must differ from every other button's label in the same message, because the recipient's reply is identified to them by the label they tapped.
4608
+ *
4609
+ */
4610
+ text: string;
4611
+ };
4612
+ /**
4613
+ * A button that opens a link in the recipient's browser, so a long or opaque address never has to appear in the message body.
4614
+ *
4615
+ */
4616
+ type WhatsAppInteractiveCtaUrlSend = {
4617
+ /**
4618
+ * The button's label.
4619
+ */
4620
+ text: string;
4621
+ /**
4622
+ * The address the button opens. It is fixed for every recipient, so per recipient tracking belongs in the address you supply, for example as a query parameter you generate per send.
4623
+ *
4624
+ */
4625
+ url: string;
4626
+ };
4627
+ type WhatsAppInteractiveButtonSend = ({
4628
+ type: "quick_reply";
4629
+ cta_url?: unknown;
4630
+ } | {
4631
+ type: "cta_url";
4632
+ quick_reply?: unknown;
4633
+ }) & {
4634
+ /**
4635
+ * Which kind of button this is, and which field carries it.
4636
+ */
4637
+ type: WhatsAppInteractiveButtonTypeWrite;
4638
+ /**
4639
+ * The button's label and the handle it sends back. Send this on a `quick_reply` button.
4640
+ */
4641
+ quick_reply?: WhatsAppInteractiveQuickReplyButtonSend;
4642
+ /**
4643
+ * The button's label and the address it opens. Send this on a `cta_url` button.
4644
+ */
4645
+ cta_url?: WhatsAppInteractiveCtaUrlSend;
4646
+ };
4647
+ /**
4648
+ * One option in a list's menu. Choosing it sends `slug` back as an inbound message, which reads as an `interactive_reply`.
4649
+ *
4650
+ */
4651
+ type WhatsAppInteractiveListRowSend = {
4652
+ /**
4653
+ * Your own handle for this option, echoed back on the reply. You choose the value and it is never shown to the recipient. Any characters, up to 200.
4654
+ *
4655
+ */
4656
+ slug: string;
4657
+ /**
4658
+ * The option's label, shown as the row's title in the menu. It must differ from every other row's label and from every button's label in the same message, not merely within its own group; a repeat returns a `422` `WhatsAppInteractiveDuplicateLabel`.
4659
+ *
4660
+ */
4661
+ text: string;
4662
+ /**
4663
+ * A second line under the label, for detail that will not fit in it.
4664
+ */
4665
+ description?: string;
4666
+ };
4667
+ /**
4668
+ * One group of options in a list's menu. A menu with a single group still carries a title, which WhatsApp shows above its rows.
4669
+ *
4670
+ */
4671
+ type WhatsAppInteractiveListSectionSend = {
4672
+ /**
4673
+ * The group's heading, shown above its rows.
4674
+ */
4675
+ title: string;
4676
+ /**
4677
+ * The options in this group. A message carries at most 10 rows across all its groups combined, so this per-group maximum is not additive: more than 10 in total returns a `422` `WhatsAppInteractiveLimitExceeded`. Row labels must be unique across the whole message too, not just within a group.
4678
+ *
4679
+ */
4680
+ rows: Array<WhatsAppInteractiveListRowSend>;
4681
+ };
4682
+ /**
4683
+ * A menu of options behind a single button. The recipient taps the button, WhatsApp opens the menu, and choosing one option sends it back as a reply.
4684
+ *
4685
+ */
4686
+ type WhatsAppInteractiveListSend = {
4687
+ /**
4688
+ * The label of the button that opens the menu.
4689
+ */
4690
+ button_text: string;
4691
+ /**
4692
+ * The groups of options in the menu, in the order shown. At most 10 rows across all groups combined, each carrying a label unique across the whole message.
4693
+ *
4694
+ */
4695
+ sections: Array<WhatsAppInteractiveListSectionSend>;
4696
+ };
4697
+ type WhatsAppInteractiveCardHeaderSend = ({
4698
+ type?: "image";
4699
+ } | {
4700
+ type?: "video";
4701
+ }) & {
4702
+ /**
4703
+ * Which kind of media this is. A card accepts `image` or `video` only.
4704
+ *
4705
+ */
4706
+ type: WhatsAppInteractiveHeaderTypeWrite;
4707
+ /**
4708
+ * Public `https` URL of the file to show at the top of the card. An image must be JPEG or PNG, up to 5 MB; a video, MP4 with H.264 video and AAC audio, up to 16 MB. WhatsApp fetches it at send time, on the same terms as a message header's `url`.
4709
+ *
4710
+ */
4711
+ url: string;
4712
+ };
4713
+ type WhatsAppInteractiveCardSend = ({
4714
+ buttons?: unknown;
4715
+ } | {
4716
+ buttons?: unknown;
4717
+ }) & {
4718
+ /**
4719
+ * The image or video at the top of the card.
4720
+ */
4721
+ header: WhatsAppInteractiveCardHeaderSend;
4722
+ /**
4723
+ * The card's own text, below its media, with at most two line breaks. Optional: a card can carry media and buttons alone.
4724
+ *
4725
+ */
4726
+ body_text?: string;
4727
+ /**
4728
+ * The buttons under the card, in the order given. Either one `cta_url` button or up to three `quick_reply` buttons: the two kinds cannot be mixed on one card. Every card in the carousel must carry the same kinds in the same number, and a carousel whose cards disagree returns a `422` `WhatsAppInteractiveCarouselButtonsMismatch`.
4729
+ *
4730
+ */
4731
+ buttons: Array<WhatsAppInteractiveButtonSend>;
4732
+ };
4733
+ type WhatsAppInteractiveSend = ({
4734
+ type: "button";
4735
+ body_text?: unknown;
4736
+ buttons: unknown;
4737
+ list?: unknown;
4738
+ cta_url?: unknown;
4739
+ cards?: unknown;
4740
+ } | {
4741
+ type: "list";
4742
+ header?: {
4743
+ type?: "text";
4744
+ url?: unknown;
4745
+ };
4746
+ buttons?: unknown;
4747
+ cta_url?: unknown;
4748
+ cards?: unknown;
4749
+ } | {
4750
+ type: "cta_url";
4751
+ body_text?: unknown;
4752
+ buttons?: unknown;
4753
+ list?: unknown;
4754
+ cards?: unknown;
4755
+ } | {
4756
+ type: "carousel";
4757
+ body_text?: unknown;
4758
+ header?: unknown;
4759
+ footer_text?: unknown;
4760
+ buttons?: unknown;
4761
+ list?: unknown;
4762
+ cta_url?: unknown;
4763
+ } | {
4764
+ type: "location_request_message";
4765
+ body_text?: unknown;
4766
+ header?: unknown;
4767
+ footer_text?: unknown;
4768
+ buttons?: unknown;
4769
+ list?: unknown;
4770
+ cta_url?: unknown;
4771
+ cards?: unknown;
4772
+ } | {
4773
+ type: "request_contact_info";
4774
+ body_text?: unknown;
4775
+ header?: unknown;
4776
+ footer_text?: unknown;
4777
+ buttons?: unknown;
4778
+ list?: unknown;
4779
+ cta_url?: unknown;
4780
+ cards?: unknown;
4781
+ }) & {
4782
+ /**
4783
+ * Which kind of interactive message this is, and which field carries it.
4784
+ */
4785
+ type: WhatsAppInteractiveTypeWrite;
4786
+ /**
4787
+ * Optional content above the body. A `list` accepts a `text` header only; `button` and `cta_url` also accept an image, video or document. A `carousel` accepts none: its cards carry their own media. Neither request kind accepts one.
4788
+ *
4789
+ */
4790
+ header?: WhatsAppInteractiveHeaderSend;
4791
+ /**
4792
+ * The message's main text, required on every kind, and the whole message on `location_request_message` and `request_contact_info`. The WhatsApp client turns any URL it contains into a clickable link. Only a `list` may use the full length; the other kinds cap it at 1024 characters.
4793
+ *
4794
+ */
4795
+ body_text: string;
4796
+ /**
4797
+ * Optional small print below the body and above the buttons. A `carousel` and both request kinds take no footer.
4798
+ *
4799
+ */
4800
+ footer_text?: string;
4801
+ /**
4802
+ * The buttons to show, in the order given. Send this on a `button` message, where every button is a `quick_reply`. Every label must be unique within the message; a repeat returns a `422` `WhatsAppInteractiveDuplicateLabel`.
4803
+ *
4804
+ */
4805
+ buttons?: Array<WhatsAppInteractiveButtonSend>;
4806
+ /**
4807
+ * The menu to show. Send this on a `list` message.
4808
+ */
4809
+ list?: WhatsAppInteractiveListSend;
4810
+ /**
4811
+ * The link button to show. Send this on a `cta_url` message.
4812
+ */
4813
+ cta_url?: WhatsAppInteractiveCtaUrlSend;
4814
+ /**
4815
+ * The cards to show, in the order they appear, left to right. Send this on a `carousel` message, with between 2 and 10 cards. The message's own `body_text` introduces them; a carousel carries no header and no footer of its own.
4816
+ *
4817
+ */
4818
+ cards?: Array<WhatsAppInteractiveCardSend>;
4819
+ };
4269
4820
  /**
4270
4821
  * A WhatsApp message to send. Carry exactly one kind of content: a request with none returns a `422` `WhatsAppContentRequired`, and one carrying more than one returns a `422` `WhatsAppContentAmbiguous`. The schema does not express that constraint, because which combinations are available depends on the content types your workspace can send.
4271
4822
  *
@@ -4321,6 +4872,16 @@ type WhatsAppMessageSendRequest = {
4321
4872
  *
4322
4873
  */
4323
4874
  location?: WhatsAppLocationSend;
4875
+ /**
4876
+ * Free-form interactive content to send instead of a template: body text plus reply buttons, a menu, a link button, media cards, or a single button asking the recipient to share their location or their phone number. Deliverable only inside an open 24-hour customer service window, which the contact opens by messaging or calling you and resets each time they do it again. A send into a closed window is refused with a `422` `WhatsAppServiceWindowClosed` before anything is created or charged; one whose window closes between accept and dispatch fails asynchronously, with `service_window_expired` on the message's `last_error`.
4877
+ *
4878
+ */
4879
+ interactive?: WhatsAppInteractiveSend;
4880
+ /**
4881
+ * Quote a message the contact will see above this one, the way replying in the WhatsApp client does. Name a message from the same conversation: one this workspace sent to this recipient, or received from them. Any content quotes, template or free-form. A message this workspace does not hold, or one older than the 15-day window we keep provider ids for, returns a `422` `WhatsAppInReplyToNotFound`. A message that never reached WhatsApp, or one from a different conversation than this send's `to` and `from`, returns a `422` `WhatsAppInReplyToNotQuotable`.
4882
+ *
4883
+ */
4884
+ in_reply_to_message_id?: WhatsAppMessageId;
4324
4885
  /**
4325
4886
  * Structured `{name, value}` labels for filtering. Tags become first-class query dimensions: filter the list endpoint by tag name. Maximum 20 tags per send. Use tags for low-cardinality dimensions (`category`, `experiment_variant`). For arbitrary structured context you do not need as a filter dimension, use `metadata` instead.
4326
4887
  *
@@ -8409,6 +8970,16 @@ type EventWhatsAppReceivedData = EventWhatsAppBase & {
8409
8970
  *
8410
8971
  */
8411
8972
  contact_cards?: Array<WhatsAppContactCard>;
8973
+ /**
8974
+ * The message this one answers, when WhatsApp reports it as a reply. Absent when it answers nothing, or when the message it names is not one we hold.
8975
+ *
8976
+ */
8977
+ in_reply_to_message_id?: WhatsAppMessageId;
8978
+ /**
8979
+ * What the contact tapped, when the message answers an interactive message or a template's quick-reply button.
8980
+ *
8981
+ */
8982
+ interactive_reply?: WhatsAppInteractiveReply;
8412
8983
  /**
8413
8984
  * Set when the contact sent content the API does not model, naming the WhatsApp content type.
8414
8985
  *
@@ -8738,6 +9309,35 @@ type NumbersOrderCreate = {
8738
9309
  number: string;
8739
9310
  };
8740
9311
  type SipTrunkId = string;
9312
+ /**
9313
+ * Which answer a number carries.
9314
+ *
9315
+ * - `reject`: refuses the call. This is where every number starts.
9316
+ * - `trunk`: delivers the call to one of your SIP trunks.
9317
+ * - `forward`: places a call to one of your verified caller IDs and connects the two.
9318
+ *
9319
+ * It selects the answer's own shape, so a new way to answer a call arrives as a
9320
+ * new value alongside a new set of fields.
9321
+ *
9322
+ */
9323
+ type VoiceCallRouteType = "reject" | "trunk" | "forward";
9324
+ /**
9325
+ * Which of a forwarded call's two numbers it shows as the caller.
9326
+ *
9327
+ * "dialed_number" is the number the caller dialled, which is one of yours.
9328
+ * Carriers treat it as fully yours, so it is the least likely to be altered or
9329
+ * screened. Whoever answers sees which of your numbers was called, not who called
9330
+ * it. It needs your workspace approved to place calls from numbers you bought from
9331
+ * us; where it is not, this value is refused and the call shows the calling
9332
+ * number.
9333
+ *
9334
+ * "calling_number" is the caller's own number, so the phone rings as though they
9335
+ * had dialled it directly and the call can be returned from the call log. Because
9336
+ * the number is not one you own, some carriers (most often in the US and parts of
9337
+ * Europe) mark such calls as unverified, replace the number, or screen them.
9338
+ *
9339
+ */
9340
+ type VoiceInboundForwardAs = "dialed_number" | "calling_number";
8741
9341
  /**
8742
9342
  * Why we refused the call before dialing a carrier. Every refusal is signalled
8743
9343
  * to your PBX as `503`, so `sip_response_code` alone cannot tell these causes
@@ -8750,6 +9350,10 @@ type SipTrunkId = string;
8750
9350
  * - `caller_id_not_verified`: The number in the `From` header is not a verified
8751
9351
  * caller ID for this workspace. Verify it, or present a number you have
8752
9352
  * already verified.
9353
+ * - `number_ownership_not_verified`: You bought this number, but the country that
9354
+ * issued it has not yet accepted the documents proving your workspace owns it.
9355
+ * Open the number under Numbers and complete its ownership requirements, then
9356
+ * place the call again.
8753
9357
  * - `destination_not_enabled`: You have not turned on calling to this
8754
9358
  * destination country. Enable it in your voice destination settings.
8755
9359
  * - `insufficient_balance`: Your wallet did not cover the call. Top up, or turn
@@ -8772,7 +9376,59 @@ type SipTrunkId = string;
8772
9376
  * - `call_not_permitted`: The call could not be priced for your account.
8773
9377
  *
8774
9378
  */
8775
- type VoiceCallRejectionReason = "source_not_allowed" | "caller_id_not_verified" | "routing_not_configured" | "no_route_found" | "destination_blocked" | "destination_not_enabled" | "insufficient_balance" | "daily_spend_exceeded" | "concurrent_calls_exceeded" | "calls_per_second_exceeded" | "call_not_permitted";
9379
+ type VoiceCallRejectionReason = "source_not_allowed" | "caller_id_not_verified" | "routing_not_configured" | "no_route_found" | "destination_blocked" | "destination_not_enabled" | "insufficient_balance" | "daily_spend_exceeded" | "concurrent_calls_exceeded" | "calls_per_second_exceeded" | "call_not_permitted" | "number_ownership_not_verified";
9380
+ type VoiceCallInboundRouteReject = {
9381
+ /**
9382
+ * The number turned the call away. This is where every number starts, so it covers a number nobody has configured as well as one set to reject.
9383
+ *
9384
+ */
9385
+ type: VoiceCallRouteType;
9386
+ };
9387
+ type VoiceCallInboundRouteTrunk = {
9388
+ /**
9389
+ * The call was delivered to one of your SIP trunks.
9390
+ */
9391
+ type: VoiceCallRouteType;
9392
+ /**
9393
+ * The SIP trunk the call was delivered to. Recorded as it was at the time, so it may name a trunk you have since changed or deleted.
9394
+ *
9395
+ */
9396
+ trunk_id: SipTrunkId;
9397
+ };
9398
+ type VoiceCallInboundRouteForward = {
9399
+ /**
9400
+ * The call was forwarded to another of your numbers.
9401
+ */
9402
+ type: VoiceCallRouteType;
9403
+ /**
9404
+ * The number the call was forwarded to, in E.164 format. Recorded as it was at the time, so it may name a number you have since stopped verifying.
9405
+ *
9406
+ */
9407
+ forward_to: string;
9408
+ /**
9409
+ * Which of the call's two numbers the forwarded leg presented as its caller. The value that went on the wire, not the one the number is set to now.
9410
+ *
9411
+ */
9412
+ forward_as: VoiceInboundForwardAs;
9413
+ };
9414
+ /**
9415
+ * Which answer the dialled number gave an incoming call, as it was acted on. The
9416
+ * type selects the shape: "reject" turned the call away, "trunk" delivered it to
9417
+ * one of your SIP trunks, and "forward" placed a call to another of your numbers
9418
+ * and connected the two.
9419
+ *
9420
+ * It says what the number was set to do, not that it worked. A "trunk" route on a
9421
+ * call that never connected is a number pointed at a trunk that did not take it;
9422
+ * the call's status is what carries the outcome.
9423
+ *
9424
+ */
9425
+ type VoiceCallInboundRoute = ({
9426
+ type: "reject";
9427
+ } & VoiceCallInboundRouteReject) | ({
9428
+ type: "trunk";
9429
+ } & VoiceCallInboundRouteTrunk) | ({
9430
+ type: "forward";
9431
+ } & VoiceCallInboundRouteForward);
8776
9432
  type VoiceMediaQuality = {
8777
9433
  /**
8778
9434
  * Mean opinion score, the single number for how the call sounded, from 1 (unintelligible) to 5 (as good as being in the same room). Anything at or above 4.0 is what most people would call a clear line, and below 3.5 is where callers start asking each other to repeat themselves. The three other fields are the impairments that move it.
@@ -8855,9 +9511,13 @@ type VoiceCall = {
8855
9511
  */
8856
9512
  readonly sip_response_code?: number | null;
8857
9513
  /**
8858
- * Why we refused the call before dialing a carrier. Absent when the call connected or failed at the carrier; see `sip_response_code` for the carrier response.
9514
+ * Why we refused the call before dialing a carrier. Absent whenever the refusal was not ours: a call that connected, a call the carrier or the far end turned down (`sip_response_code` carries their answer, and a 6xx decline reads as `rejected` rather than `failed`), and an incoming call turned away by the number it dialed, which fails no check of ours and so names no reason. `route` says what that number was set to do.
8859
9515
  */
8860
9516
  readonly rejection_reason?: VoiceCallRejectionReason;
9517
+ /**
9518
+ * Which answer your number gave an incoming call: a SIP trunk, a forward, or a refusal. Recorded when the call was handled, so changing the number's setup afterwards does not change what its past calls say. Absent on outbound calls, and on calls recorded before this field existed.
9519
+ */
9520
+ readonly route?: VoiceCallInboundRoute;
8861
9521
  /**
8862
9522
  * Your own `{name, value}` labels for this call, taken from the `X-Bird-Call-Tag` headers on the INVITE that placed it. Set them to organise calls by a dimension of your own (campaign, queue, agent, cost centre), then filter this list by them with `tag`. Read-only here: a call is labelled when it is placed, and never afterwards. What is here may be less than what was sent, and the call still goes through either way: a tag whose name or value breaks the rules below is dropped, anything past the first five is ignored, and a name sent more than once keeps its first value. Absent when the call carried none, and on calls recorded before this field existed.
8863
9523
  */
@@ -13599,7 +14259,7 @@ type WhatsappListQuery = NonNullable<ListWhatsAppMessagesData["query"]>;
13599
14259
  type WhatsappListEventsQuery = NonNullable<ListWhatsAppMessageEventsData["query"]>;
13600
14260
  declare class WhatsappResourceBase extends Resource {
13601
14261
  /**
13602
- * Get one WhatsApp message by id: current delivery status, sent/delivered/read timestamps, the one content it was built from (a template, or free-form text, image, video, audio, sticker, document or location), and failure detail if it failed. For the per-event timeline use whatsapp_list_events.
14262
+ * Get one WhatsApp message by id: current delivery status, sent/delivered/read timestamps, the one content it was built from (a template, or free-form text, image, video, audio, sticker, document, location, interactive or contact_cards, or interactive_reply on an inbound tap), and failure detail if it failed. For the per-event timeline use whatsapp_list_events.
13603
14263
  *
13604
14264
  * @example Read a message back
13605
14265
  * const msg = await bird.whatsapp.get("wa_abc123");
@@ -13607,7 +14267,7 @@ declare class WhatsappResourceBase extends Resource {
13607
14267
  */
13608
14268
  get(messageId: string, options?: RequestOptions): APIPromise<WhatsAppMessage>;
13609
14269
  /**
13610
- * List WhatsApp messages, newest first, as a cursor page ({data, next_cursor, …}). Each message carries the one content it was built from: a template, or free-form text, image, video, audio, sticker, document or location. Pass next_cursor back as starting_after to fetch the next page. Filter by direction, status, recipient (to), sender (from), business-scoped user ID (bsuid), template category, or tag. to and from each accept a phone number or a business-scoped user ID; pair either with direction to search a single side of the message. Use whatsapp_get for one message's current state.
14270
+ * List WhatsApp messages, newest first, as a cursor page ({data, next_cursor, …}). Each message carries the one content it was built from: a template, or free-form text, image, video, audio, sticker, document, location, interactive or contact_cards. An inbound tap on a reply button or list row carries interactive_reply instead. Pass next_cursor back as starting_after to fetch the next page. Filter by direction, status, recipient (to), sender (from), business-scoped user ID (bsuid), template category, or tag. to and from each accept a phone number or a business-scoped user ID; pair either with direction to search a single side of the message. Use whatsapp_get for one message's current state.
13611
14271
  *
13612
14272
  * @example Iterate delivered messages
13613
14273
  * for await (const msg of bird.whatsapp.list({ status: ["delivered"] })) {
@@ -13631,10 +14291,14 @@ type WhatsappSendParams = WhatsAppMessageSendRequest;
13631
14291
  declare class WhatsappResource extends WhatsappResourceBase {
13632
14292
  /**
13633
14293
  * Send one message, carrying exactly one kind of content: a template, or
13634
- * free-form `text`, `image`, `video`, `audio`, `sticker`, `document` or
13635
- * `location`. Every send but a Bird-managed template needs `from`, a number
13636
- * this workspace owns. The result is `accepted`, not yet delivered read it
13637
- * back with `get` to confirm.
14294
+ * free-form `text`, `image`, `video`, `audio`, `sticker`, `document`,
14295
+ * `location` or `interactive` the last being the arm that gives the
14296
+ * recipient something to tap: reply buttons, a list menu, a link button,
14297
+ * media cards, or a request for their location or contact details. Set
14298
+ * `in_reply_to_message_id` to quote an earlier message from the same
14299
+ * conversation. Every send but a Bird-managed
14300
+ * template needs `from`, a number this workspace owns. The result is
14301
+ * `accepted`, not yet delivered — read it back with `get` to confirm.
13638
14302
  *
13639
14303
  * @example
13640
14304
  * const msg = await bird.whatsapp.send({
@@ -14708,6 +15372,56 @@ declare const WhatsAppEventType: {
14708
15372
  };
14709
15373
  /** A known WhatsAppEventType value. */
14710
15374
  type WhatsAppEventTypeValue = (typeof WhatsAppEventType)[keyof typeof WhatsAppEventType];
15375
+ /**
15376
+ * Values of WhatsAppInteractiveButtonType known at this SDK version. The wire value is an open
15377
+ * string: a value added by a newer server deserializes unchanged, so switch on
15378
+ * these with a `default` branch rather than treating the set as closed.
15379
+ */
15380
+ declare const WhatsAppInteractiveButtonType: {
15381
+ readonly CtaUrl: "cta_url";
15382
+ readonly QuickReply: "quick_reply";
15383
+ };
15384
+ /** A known WhatsAppInteractiveButtonType value. */
15385
+ type WhatsAppInteractiveButtonTypeValue = (typeof WhatsAppInteractiveButtonType)[keyof typeof WhatsAppInteractiveButtonType];
15386
+ /**
15387
+ * Values of WhatsAppInteractiveHeaderType known at this SDK version. The wire value is an open
15388
+ * string: a value added by a newer server deserializes unchanged, so switch on
15389
+ * these with a `default` branch rather than treating the set as closed.
15390
+ */
15391
+ declare const WhatsAppInteractiveHeaderType: {
15392
+ readonly Document: "document";
15393
+ readonly Image: "image";
15394
+ readonly Text: "text";
15395
+ readonly Video: "video";
15396
+ };
15397
+ /** A known WhatsAppInteractiveHeaderType value. */
15398
+ type WhatsAppInteractiveHeaderTypeValue = (typeof WhatsAppInteractiveHeaderType)[keyof typeof WhatsAppInteractiveHeaderType];
15399
+ /**
15400
+ * Values of WhatsAppInteractiveReplyType known at this SDK version. The wire value is an open
15401
+ * string: a value added by a newer server deserializes unchanged, so switch on
15402
+ * these with a `default` branch rather than treating the set as closed.
15403
+ */
15404
+ declare const WhatsAppInteractiveReplyType: {
15405
+ readonly Button: "button";
15406
+ readonly List: "list";
15407
+ };
15408
+ /** A known WhatsAppInteractiveReplyType value. */
15409
+ type WhatsAppInteractiveReplyTypeValue = (typeof WhatsAppInteractiveReplyType)[keyof typeof WhatsAppInteractiveReplyType];
15410
+ /**
15411
+ * Values of WhatsAppInteractiveType known at this SDK version. The wire value is an open
15412
+ * string: a value added by a newer server deserializes unchanged, so switch on
15413
+ * these with a `default` branch rather than treating the set as closed.
15414
+ */
15415
+ declare const WhatsAppInteractiveType: {
15416
+ readonly Button: "button";
15417
+ readonly Carousel: "carousel";
15418
+ readonly CtaUrl: "cta_url";
15419
+ readonly List: "list";
15420
+ readonly LocationRequestMessage: "location_request_message";
15421
+ readonly RequestContactInfo: "request_contact_info";
15422
+ };
15423
+ /** A known WhatsAppInteractiveType value. */
15424
+ type WhatsAppInteractiveTypeValue = (typeof WhatsAppInteractiveType)[keyof typeof WhatsAppInteractiveType];
14711
15425
  /**
14712
15426
  * Values of WhatsAppTemplateCategory known at this SDK version. The wire value is an open
14713
15427
  * string: a value added by a newer server deserializes unchanged, so switch on
@@ -14736,5 +15450,5 @@ declare const WhatsAppTemplateParameterType: {
14736
15450
  /** A known WhatsAppTemplateParameterType value. */
14737
15451
  type WhatsAppTemplateParameterTypeValue = (typeof WhatsAppTemplateParameterType)[keyof typeof WhatsAppTemplateParameterType];
14738
15452
  //#endregion
14739
- export { type APIPromise, type Audience, type AudienceAddContactsParams, type AudienceCreateParams, type AudienceListContactsQuery, type AudienceListQuery, type AudienceMember, type AudienceRemoveContactsParams, type AudienceUpdateParams, BirdAPIError, BirdAuthError, BirdBadRequestError, BirdBillingError, BirdClient, type BirdClientOptions, BirdConflictError, BirdConnectionError, BirdError, BirdInternalError, BirdMisdirectedError, BirdMissingApiKeyError, BirdNotFoundError, BirdNotImplementedError, BirdPayloadTooLargeError, BirdPermissionError, BirdPreconditionError, BirdRateLimitError, type BirdRequest, type BirdResponse, BirdServiceUnavailableError, BirdTimeoutError, BirdValidationError, type BirdWebhookEvent, BirdWebhookVerificationError, type ChannelAuthorization, type Contact, type ContactBatchParams, type ContactCreateParams, type ContactListQuery, type ContactProperty, type ContactPropertyCreateParams, type ContactPropertyListQuery, type ContactPropertyUpdateParams, type ContactUpdateParams, type ContactUpsertResult, type ContactsPreferencesListQuery, type CursorPage, type DnsRecord, type Domain, type DomainCapabilities, type DomainCreateParams, type DomainDkim, type DomainListQuery, type DomainUpdateParams, type EmailChannelDefaults, EmailEventType, type EmailEventTypeValue, type EmailListQuery, type EmailLookup, EmailLookupFlag, type EmailLookupFlagValue, EmailLookupReason, type EmailLookupReasonValue, EmailLookupResult, type EmailLookupResultValue, type EmailMailboxLabelList, type EmailMailboxesCreateParams, type EmailMailboxesListQuery, type EmailMailboxesMessagesCreateParams, type EmailMailboxesReceiveRulesCreateParams, type EmailMailboxesReceiveRulesListQuery, type EmailMailboxesStatsQuery, type EmailMailboxesUpdateParams, type EmailMailboxesUpdateQuery, type EmailMessage, type EmailSendBatchParams, type EmailSendBatchResult, type EmailSendParams, type EmailStatsByBounceCodeQuery, type EmailStatsByBounceCodeResponse, type EmailStatsByBroadcastQuery, type EmailStatsByBroadcastResponse, type EmailStatsByCategoryQuery, type EmailStatsByCategoryResponse, type EmailStatsByClientQuery, type EmailStatsByClientResponse, type EmailStatsByComplaintTypeQuery, type EmailStatsByComplaintTypeResponse, type EmailStatsByLocationQuery, type EmailStatsByLocationResponse, type EmailStatsByMailboxProviderQuery, type EmailStatsByMailboxProviderRegionQuery, type EmailStatsByMailboxProviderRegionResponse, type EmailStatsByMailboxProviderResponse, type EmailStatsByRecipientDomainQuery, type EmailStatsByRecipientDomainResponse, type EmailStatsBySendingDomainQuery, type EmailStatsBySendingDomainResponse, type EmailStatsBySendingIpQuery, type EmailStatsBySendingIpResponse, type EmailStatsByTagQuery, type EmailStatsByTemplateQuery, type EmailStatsByTemplateResponse, type EmailStatsDailyQuery, type EmailStatsHourlyQuery, type EmailStatsResponse, type EmailStatsSummary, type EmailStatsSummaryQuery, type EmailStatsTagsResponse, type EmailThread, type EmailThreadMessage, type EmailThreadMessageAttachmentList, type EmailThreadMessageBody, type EmailThreadsDeleteQuery, type EmailThreadsListQuery, type EmailThreadsMessagesListQuery, type EmailThreadsMessagesReplyParams, type EmailThreadsUpdateParams, type ErrorDetail, type LookupEmailParams, LookupFlag, type LookupFlagValue, type LookupPhoneNumberParams, LookupPropertyStatus, type LookupPropertyStatusValue, type Mailbox, type MailboxStatsResponse, type NextAction, NumberCapability, type NumberCapabilityValue, NumberType, type NumberTypeValue, NumbersOrderStatus, type NumbersOrderStatusValue, type PaginatedPromise, type PhoneNumberLookup, type Preference, PreferenceChannel, type PreferenceChannelValue, type PreferenceCoverage, type PreferenceCreateParams, PreferenceOrigin, type PreferenceOriginValue, type PreferenceStatus, type PreferenceWriteResult, type PreferencesListQuery, type RealtimeBatchPublishResult, type RealtimeChannelGetQuery, type RealtimeChannelInclude, type RealtimeChannelInfo, type RealtimeChannelListItem, type RealtimeChannelListQuery, type RealtimeChannelMember, type RealtimeChannelMembers, type RealtimeChannelsList, type RealtimeOptions, type RealtimePublishBatchParams, type RealtimePublishParams, type RealtimePublishResult, type ReceiveRule, type RequestOptions, SMSErrorCode, type SMSErrorCodeValue, SMSKeywordOperation, type SMSKeywordOperationValue, SMSSuppressionCoverage, type SMSSuppressionCoverageValue, SMSSuppressionEndReason, type SMSSuppressionEndReasonValue, SMSSuppressionOrigin, type SMSSuppressionOriginValue, SMSSuppressionReason, type SMSSuppressionReasonValue, type SafeResult, type SmsEventList, type SmsInboundStatsByCountryResponse, type SmsInboundStatsByNumberResponse, type SmsInboundStatsByOperatorResponse, type SmsInboundStatsResponse, type SmsInboundStatsSummaryResponse, type SmsKeywordRule, type SmsKeywordRuleList, type SmsKeywordRulesCreateParams, type SmsKeywordRulesListQuery, type SmsKeywordRulesUpdateParams, type SmsListEventsQuery, type SmsListQuery, type SmsMessage, type SmsSendBatchParams, type SmsSendBatchResult, type SmsSendParams, type SmsStatsByCarrierQuery, type SmsStatsByCarrierResponse, type SmsStatsByCategoryQuery, type SmsStatsByCategoryResponse, type SmsStatsByCountryQuery, type SmsStatsByCountryResponse, type SmsStatsByErrorCodeQuery, type SmsStatsByErrorCodeResponse, type SmsStatsByOriginatorQuery, type SmsStatsByOriginatorResponse, type SmsStatsByStatusQuery, type SmsStatsByStatusResponse, type SmsStatsDailyQuery, type SmsStatsHourlyQuery, type SmsStatsInboundByCountryQuery, type SmsStatsInboundByNumberQuery, type SmsStatsInboundByOperatorQuery, type SmsStatsInboundDailyQuery, type SmsStatsInboundHourlyQuery, type SmsStatsInboundSummaryQuery, type SmsStatsResponse, type SmsStatsSummary, type SmsStatsSummaryQuery, type SmsSuppression, type SmsSuppressionsAddParams, type SmsSuppressionsListQuery, type SmsTemplate, type SmsTemplateList, type SmsTemplateListQuery, TemplateLanguageStatus, type TemplateLanguageStatusValue, TemplateStatus, type TemplateStatusValue, type Verification, VerificationAttemptFailureReason, type VerificationAttemptFailureReasonValue, VerificationChannel, type VerificationChannelValue, type VerificationCheckResult, VerificationTerminalReason, type VerificationTerminalReasonValue, type VerifyVerificationsCheckParams, type VerifyVerificationsCreateParams, type VerifyVerificationsNextChannelParams, type WebhookAttemptList, type WebhookEndpoint, type WebhookEndpointCreated, WebhookEventType, type WebhookEventTypeValue, type WebhookHeaders, type WebhookOptions, type WebhookRotateSecretResponse, type WebhookTestResponse, type WebhooksAttemptsQuery, type WebhooksCreateParams, type WebhooksListQuery, type WebhooksTestParams, type WebhooksUpdateParams, WhatsAppErrorCode, type WhatsAppErrorCodeValue, type WhatsAppEventList, WhatsAppEventType, type WhatsAppEventTypeValue, type WhatsAppMessage, WhatsAppTemplateCategory, type WhatsAppTemplateCategoryValue, WhatsAppTemplateParameterType, type WhatsAppTemplateParameterTypeValue, type WhatsappListEventsQuery, type WhatsappListQuery, type WhatsappSendParams, type Workspace, baseUrlForRegion, regionFromApiKey };
15453
+ export { type APIPromise, type Audience, type AudienceAddContactsParams, type AudienceCreateParams, type AudienceListContactsQuery, type AudienceListQuery, type AudienceMember, type AudienceRemoveContactsParams, type AudienceUpdateParams, BirdAPIError, BirdAuthError, BirdBadRequestError, BirdBillingError, BirdClient, type BirdClientOptions, BirdConflictError, BirdConnectionError, BirdError, BirdInternalError, BirdMisdirectedError, BirdMissingApiKeyError, BirdNotFoundError, BirdNotImplementedError, BirdPayloadTooLargeError, BirdPermissionError, BirdPreconditionError, BirdRateLimitError, type BirdRequest, type BirdResponse, BirdServiceUnavailableError, BirdTimeoutError, BirdValidationError, type BirdWebhookEvent, BirdWebhookVerificationError, type ChannelAuthorization, type Contact, type ContactBatchParams, type ContactCreateParams, type ContactListQuery, type ContactProperty, type ContactPropertyCreateParams, type ContactPropertyListQuery, type ContactPropertyUpdateParams, type ContactUpdateParams, type ContactUpsertResult, type ContactsPreferencesListQuery, type CursorPage, type DnsRecord, type Domain, type DomainCapabilities, type DomainCreateParams, type DomainDkim, type DomainListQuery, type DomainUpdateParams, type EmailChannelDefaults, EmailEventType, type EmailEventTypeValue, type EmailListQuery, type EmailLookup, EmailLookupFlag, type EmailLookupFlagValue, EmailLookupReason, type EmailLookupReasonValue, EmailLookupResult, type EmailLookupResultValue, type EmailMailboxLabelList, type EmailMailboxesCreateParams, type EmailMailboxesListQuery, type EmailMailboxesMessagesCreateParams, type EmailMailboxesReceiveRulesCreateParams, type EmailMailboxesReceiveRulesListQuery, type EmailMailboxesStatsQuery, type EmailMailboxesUpdateParams, type EmailMailboxesUpdateQuery, type EmailMessage, type EmailSendBatchParams, type EmailSendBatchResult, type EmailSendParams, type EmailStatsByBounceCodeQuery, type EmailStatsByBounceCodeResponse, type EmailStatsByBroadcastQuery, type EmailStatsByBroadcastResponse, type EmailStatsByCategoryQuery, type EmailStatsByCategoryResponse, type EmailStatsByClientQuery, type EmailStatsByClientResponse, type EmailStatsByComplaintTypeQuery, type EmailStatsByComplaintTypeResponse, type EmailStatsByLocationQuery, type EmailStatsByLocationResponse, type EmailStatsByMailboxProviderQuery, type EmailStatsByMailboxProviderRegionQuery, type EmailStatsByMailboxProviderRegionResponse, type EmailStatsByMailboxProviderResponse, type EmailStatsByRecipientDomainQuery, type EmailStatsByRecipientDomainResponse, type EmailStatsBySendingDomainQuery, type EmailStatsBySendingDomainResponse, type EmailStatsBySendingIpQuery, type EmailStatsBySendingIpResponse, type EmailStatsByTagQuery, type EmailStatsByTemplateQuery, type EmailStatsByTemplateResponse, type EmailStatsDailyQuery, type EmailStatsHourlyQuery, type EmailStatsResponse, type EmailStatsSummary, type EmailStatsSummaryQuery, type EmailStatsTagsResponse, type EmailThread, type EmailThreadMessage, type EmailThreadMessageAttachmentList, type EmailThreadMessageBody, type EmailThreadsDeleteQuery, type EmailThreadsListQuery, type EmailThreadsMessagesListQuery, type EmailThreadsMessagesReplyParams, type EmailThreadsUpdateParams, type ErrorDetail, type LookupEmailParams, LookupFlag, type LookupFlagValue, type LookupPhoneNumberParams, LookupPropertyStatus, type LookupPropertyStatusValue, type Mailbox, type MailboxStatsResponse, type NextAction, NumberCapability, type NumberCapabilityValue, NumberType, type NumberTypeValue, NumbersOrderStatus, type NumbersOrderStatusValue, type PaginatedPromise, type PhoneNumberLookup, type Preference, PreferenceChannel, type PreferenceChannelValue, type PreferenceCoverage, type PreferenceCreateParams, PreferenceOrigin, type PreferenceOriginValue, type PreferenceStatus, type PreferenceWriteResult, type PreferencesListQuery, type RealtimeBatchPublishResult, type RealtimeChannelGetQuery, type RealtimeChannelInclude, type RealtimeChannelInfo, type RealtimeChannelListItem, type RealtimeChannelListQuery, type RealtimeChannelMember, type RealtimeChannelMembers, type RealtimeChannelsList, type RealtimeOptions, type RealtimePublishBatchParams, type RealtimePublishParams, type RealtimePublishResult, type ReceiveRule, type RequestOptions, SMSErrorCode, type SMSErrorCodeValue, SMSKeywordOperation, type SMSKeywordOperationValue, SMSSuppressionCoverage, type SMSSuppressionCoverageValue, SMSSuppressionEndReason, type SMSSuppressionEndReasonValue, SMSSuppressionOrigin, type SMSSuppressionOriginValue, SMSSuppressionReason, type SMSSuppressionReasonValue, type SafeResult, type SmsEventList, type SmsInboundStatsByCountryResponse, type SmsInboundStatsByNumberResponse, type SmsInboundStatsByOperatorResponse, type SmsInboundStatsResponse, type SmsInboundStatsSummaryResponse, type SmsKeywordRule, type SmsKeywordRuleList, type SmsKeywordRulesCreateParams, type SmsKeywordRulesListQuery, type SmsKeywordRulesUpdateParams, type SmsListEventsQuery, type SmsListQuery, type SmsMessage, type SmsSendBatchParams, type SmsSendBatchResult, type SmsSendParams, type SmsStatsByCarrierQuery, type SmsStatsByCarrierResponse, type SmsStatsByCategoryQuery, type SmsStatsByCategoryResponse, type SmsStatsByCountryQuery, type SmsStatsByCountryResponse, type SmsStatsByErrorCodeQuery, type SmsStatsByErrorCodeResponse, type SmsStatsByOriginatorQuery, type SmsStatsByOriginatorResponse, type SmsStatsByStatusQuery, type SmsStatsByStatusResponse, type SmsStatsDailyQuery, type SmsStatsHourlyQuery, type SmsStatsInboundByCountryQuery, type SmsStatsInboundByNumberQuery, type SmsStatsInboundByOperatorQuery, type SmsStatsInboundDailyQuery, type SmsStatsInboundHourlyQuery, type SmsStatsInboundSummaryQuery, type SmsStatsResponse, type SmsStatsSummary, type SmsStatsSummaryQuery, type SmsSuppression, type SmsSuppressionsAddParams, type SmsSuppressionsListQuery, type SmsTemplate, type SmsTemplateList, type SmsTemplateListQuery, TemplateLanguageStatus, type TemplateLanguageStatusValue, TemplateStatus, type TemplateStatusValue, type Verification, VerificationAttemptFailureReason, type VerificationAttemptFailureReasonValue, VerificationChannel, type VerificationChannelValue, type VerificationCheckResult, VerificationTerminalReason, type VerificationTerminalReasonValue, type VerifyVerificationsCheckParams, type VerifyVerificationsCreateParams, type VerifyVerificationsNextChannelParams, type WebhookAttemptList, type WebhookEndpoint, type WebhookEndpointCreated, WebhookEventType, type WebhookEventTypeValue, type WebhookHeaders, type WebhookOptions, type WebhookRotateSecretResponse, type WebhookTestResponse, type WebhooksAttemptsQuery, type WebhooksCreateParams, type WebhooksListQuery, type WebhooksTestParams, type WebhooksUpdateParams, WhatsAppErrorCode, type WhatsAppErrorCodeValue, type WhatsAppEventList, WhatsAppEventType, type WhatsAppEventTypeValue, WhatsAppInteractiveButtonType, type WhatsAppInteractiveButtonTypeValue, WhatsAppInteractiveHeaderType, type WhatsAppInteractiveHeaderTypeValue, WhatsAppInteractiveReplyType, type WhatsAppInteractiveReplyTypeValue, WhatsAppInteractiveType, type WhatsAppInteractiveTypeValue, type WhatsAppMessage, WhatsAppTemplateCategory, type WhatsAppTemplateCategoryValue, WhatsAppTemplateParameterType, type WhatsAppTemplateParameterTypeValue, type WhatsappListEventsQuery, type WhatsappListQuery, type WhatsappSendParams, type Workspace, baseUrlForRegion, regionFromApiKey };
14740
15454
  //# sourceMappingURL=index.d.mts.map