@messagebird/n8n-nodes-bird 0.9.2 → 0.11.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/README.md CHANGED
@@ -21,7 +21,7 @@ On a self-hosted instance that has not enabled community nodes in the panel, use
21
21
  The **Bird** node covers the public Bird API: email and SMS sends, delivery status and event timelines, WhatsApp, verification, templates, sending domains, suppressions, inbound routes, webhooks, statistics, lookup, and more. Resources and operations mirror the API reference at https://bird.com/docs/api. Four areas are deliberately out: publishing and subscribing on Realtime, which needs an app key and secret this credential cannot hold (managing Realtime apps and keys is included); the attachment and media downloads, which return bytes rather than the JSON a workflow item carries; redirect-based media fetches; and authoring reusable email templates (sending an existing email template, and listing the ones a workspace has, are covered).
22
22
 
23
23
  <details>
24
- <summary><strong>178 operations across 22 resources</strong></summary>
24
+ <summary><strong>179 operations across 22 resources</strong></summary>
25
25
 
26
26
  - **Audience** (9) — Add Contacts, Create, Delete, Get, List, List Contacts, Remove Contact, Remove Contacts, Update
27
27
  - **Contact** (7) — Batch, Create, Delete, Get, List, List Preferences, Update
@@ -31,7 +31,7 @@ The **Bird** node covers the public Bird API: email and SMS sends, delivery stat
31
31
  - **Email** (58) — Cancel, Content, Create Inbound Route, Create Mailbox, Create Mailbox Message, Create Mailbox Receive Rule, Delete Inbound Route, Delete Mailbox, Delete Mailbox Receive Rule, Delete Thread, Delete Thread Message, Get, Get Inbound Route, Get Mailbox, Get Mailbox Statistics, Get SMTP Config, Get Thread, Get Thread Message, Get Thread Message Body, List, List Events, List Inbound Routes, List Mailbox Labels, List Mailbox Messages, List Mailbox Receive Rules, List Mailboxes, List SMTP Configs, List Templates, List Thread Message Attachments, List Thread Messages, List Threads, Recipients, Reply to Thread Message, Restore Mailbox, Resume Mailbox, Send, Send Batch, Stats By Bounce Code, Stats By Broadcast, Stats By Category, Stats By Client, Stats By Complaint Type, Stats By Location, Stats By Mailbox Provider, Stats By Mailbox Provider Region, Stats By Recipient Domain, Stats By Sending Domain, Stats By Sending IP, Stats By Tag, Stats By Template, Stats Daily, Stats Hourly, Stats Summary, Update Inbound Route, Update Mailbox, Update SMTP Config, Update Thread, Update Thread Message
32
32
  - **Inbound Address** (5) — Create, Delete, Get, List, Update
33
33
  - **Inbound Message** (4) — Attachments, Body, Get, List
34
- - **Lookup** (2) — Email, Phone Number
34
+ - **Lookup** (3) — Email, Email Batch, Phone Number
35
35
  - **Number** (8) — Create Order, Get, Get Available Number, Get Order, List, List Available Numbers, List Orders, Release
36
36
  - **Preference** (4) — Create, Delete, Get, List
37
37
  - **Realtime** (9) — Create App, Create App Key, Delete App, Get App, List App Keys, List Apps, List Regions, Revoke App Key, Update App
@@ -41,7 +41,7 @@ The **Bird** node covers the public Bird API: email and SMS sends, delivery stat
41
41
  - **SMS Template** (2) — Get, List
42
42
  - **Suppression** (4) — Add, Get, List, Remove
43
43
  - **Verify** (3) — Create Next Channel Attempt, Create Verification, Create Verification Check
44
- - **Voice** (2) — Get, List
44
+ - **Voice** (2) — Get Leg, List Legs
45
45
  - **Webhook** (9) — Attempts, Create, Delete, Get, List, Replay, Rotate Secret, Test, Update
46
46
  - **WhatsApp** (4) — Get, List, List Events, Send
47
47
  - **Workspace** (1) — Get
@@ -22,7 +22,7 @@ exports.birdPickers = {
22
22
  smsSuppressionsList: { route: "sms_suppressions:list", fields: ["destination"], search: "", pathFrom: [] },
23
23
  suppressionList: { route: "suppression:list", fields: ["email"], search: "email", pathFrom: [] },
24
24
  emailThreadsList: { route: "email:threads_list", fields: ["subject"], search: "subject", pathFrom: [] },
25
- voiceList: { route: "voice:list", fields: ["to"], search: "", pathFrom: [] },
25
+ voiceLegsList: { route: "voice:legs_list", fields: ["to"], search: "", pathFrom: [] },
26
26
  webhooksList: { route: "webhooks:list", fields: ["url"], search: "", pathFrom: [] },
27
27
  whatsappList: { route: "whatsapp:list", fields: ["to.phone_number", "to.bsuid", "created_at"], search: "", pathFrom: [] },
28
28
  };
@@ -194,10 +194,10 @@ exports.birdProperties = [
194
194
  noDataExpression: true,
195
195
  displayOptions: { show: { resource: ["voice"] } },
196
196
  options: [
197
- { name: "List", value: "list", action: "List calls", description: "List calls" },
198
- { name: "Get", value: "get", action: "Get a call", description: "Get a call" },
197
+ { name: "List Legs", value: "legs_list", action: "List legs" },
198
+ { name: "Get Leg", value: "legs_get", action: "Get a leg", description: "Get a leg" },
199
199
  ],
200
- default: "list",
200
+ default: "legs_list",
201
201
  },
202
202
  {
203
203
  displayName: "Operation",
@@ -221,6 +221,7 @@ exports.birdProperties = [
221
221
  options: [
222
222
  { name: "Phone Number", value: "phone_number", action: "Create a phone number lookup", description: "Create a phone number lookup" },
223
223
  { name: "Email", value: "email", action: "Create an email address lookup", description: "Create an email address lookup" },
224
+ { name: "Email Batch", value: "email_batch", action: "Create a batch of email address lookups", description: "Create a batch of email address lookups" },
224
225
  ],
225
226
  default: "phone_number",
226
227
  },
@@ -4326,7 +4327,7 @@ exports.birdProperties = [
4326
4327
  required: true,
4327
4328
  displayOptions: { show: { resource: ["whatsapp"], operation: ["send"] } },
4328
4329
  default: "",
4329
- description: "The message recipient: a phone number in E.164 format (for example `+31612345678`), or the recipient's business-scoped user ID (for example `US.13491208655302741918`), which addresses a WhatsApp user whose phone number you do not have. A value that is neither returns a `422` `WhatsAppInvalidRecipient`. One-time-passcode templates require a phone number and return a `422` `WhatsAppRecipientNotSupportedForTemplate` when sent to a business-scoped user ID.",
4330
+ description: "The message recipient: a phone number in E.164 format (for example `+31612345678`), the recipient's business-scoped user ID (for example `US.13491208655302741918`), which addresses a WhatsApp user whose phone number you do not have, or a WhatsApp group ID (for example `wag_01krdgeqcxet5s7t44vh8rt9mg`), which sends to every participant of that group. A value that is none of these returns a `422` `WhatsAppInvalidRecipient`. One-time-passcode templates require a phone number and return a `422` `WhatsAppRecipientNotSupportedForTemplate` when sent to a business-scoped user ID. A group ID naming no group this workspace holds returns a `404` `WhatsAppGroupNotFound`, and one whose group is not active returns a `409` `WhatsAppGroupNotActive`. Content a group cannot take is refused ahead of both, so a group ID paired with interactive content returns the `422` below whether or not the group exists.",
4330
4331
  },
4331
4332
  {
4332
4333
  displayName: "Additional Fields",
@@ -4403,7 +4404,7 @@ exports.birdProperties = [
4403
4404
  name: "from",
4404
4405
  type: "string",
4405
4406
  default: "",
4406
- description: "The business phone number to send from, in E.164 format. Omit it for a Bird-managed template, which selects its own number from its category: setting it there returns a `422` `WhatsAppSenderNotAllowed`. Every other send, whether free-form content of any kind or a template your workspace authored, requires it, and the number must be one this workspace owns. Omitting it returns a `422` `WhatsAppSenderRequired`, and naming a number this workspace cannot send from returns a `422` `WhatsAppSenderNotFound`. Naming a number this workspace owns but that sits on a different WhatsApp Business Account than an authored template returns a `422` `WhatsAppSenderWABAMismatch`. A number this workspace holds but has not finished connecting returns a `422` `WhatsAppSenderNotConnected`.",
4407
+ description: "The business phone number to send from, in E.164 format. Omit it for a Bird-managed template, which selects its own number from its category: setting it there returns a `422` `WhatsAppSenderNotAllowed`. Every other send, whether free-form content of any kind or a template your workspace authored, requires it, and the number must be one this workspace owns. Omitting it returns a `422` `WhatsAppSenderRequired`, and naming a number this workspace cannot send from returns a `422` `WhatsAppSenderNotFound`. Naming a number this workspace owns but that sits on a different WhatsApp Business Account than an authored template returns a `422` `WhatsAppSenderWABAMismatch`. A number this workspace holds but has not finished connecting returns a `422` `WhatsAppSenderNotConnected`. Omit it for a group send too: the group sends on its own number, so naming one returns a `422` `WhatsAppSenderNotAllowed`.",
4407
4408
  },
4408
4409
  {
4409
4410
  displayName: "Image",
@@ -4442,7 +4443,7 @@ exports.birdProperties = [
4442
4443
  type: "collection",
4443
4444
  placeholder: "Add Field",
4444
4445
  default: {},
4445
- description: "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`.",
4446
+ description: "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`. WhatsApp does not deliver interactive content to a group, so a group recipient returns a `422` `WhatsAppGroupContentNotSupported`.",
4446
4447
  options: [
4447
4448
  {
4448
4449
  displayName: "Body Text",
@@ -4632,7 +4633,7 @@ exports.birdProperties = [
4632
4633
  type: "collection",
4633
4634
  placeholder: "Add Field",
4634
4635
  default: {},
4635
- description: "The template to send. A Bird-managed template selects the sender number from the template's category, so `from` must be omitted. A template is the only content deliverable outside a customer service window.",
4636
+ description: "The template to send. A Bird-managed template selects the sender number from the template's category, so `from` must be omitted. A template is the only content deliverable outside a customer service window. A group send takes a template your workspace authored in any category but authentication: WhatsApp does not deliver an authentication template to a group, which returns a `422` `WhatsAppGroupContentNotSupported`. A Bird-managed template sends from a Bird-owned number that no group is scoped to, so addressing one to a group returns a `422` `WhatsAppInvalidRecipient`.",
4636
4637
  options: [
4637
4638
  {
4638
4639
  displayName: "ID",
@@ -4815,6 +4816,13 @@ exports.birdProperties = [
4815
4816
  default: "",
4816
4817
  description: "Filter by sender, exact match. The sender is your business number on an outbound message and the contact on an inbound one, matching the `from` each message returns. Accepts an E.164 phone number, or a business-scoped user ID to name the contact. Only a contact is ever identified by a business-scoped user ID, so `from=&lt;business-scoped user ID&gt;` matches inbound messages only.",
4817
4818
  },
4819
+ {
4820
+ displayName: "Group ID",
4821
+ name: "group_id",
4822
+ type: "string",
4823
+ default: "",
4824
+ description: "Filter by the WhatsApp group the message belongs to, in either direction: the group an outbound message was addressed to, or the group an inbound message arrived through. Matches the `group_id` on each message's `to`. It names one group, so there is no way to ask for the messages that belong to no group: omit it to list group and one-to-one messages together.",
4825
+ },
4818
4826
  {
4819
4827
  displayName: "Phone Number",
4820
4828
  name: "phone_number",
@@ -4909,7 +4917,7 @@ exports.birdProperties = [
4909
4917
  displayName: "Return All",
4910
4918
  name: "returnAll",
4911
4919
  type: "boolean",
4912
- displayOptions: { show: { resource: ["voice"], operation: ["list"] } },
4920
+ displayOptions: { show: { resource: ["voice"], operation: ["legs_list"] } },
4913
4921
  default: false,
4914
4922
  description: "Whether to return all results or only up to a given limit",
4915
4923
  },
@@ -4918,7 +4926,7 @@ exports.birdProperties = [
4918
4926
  name: "limit",
4919
4927
  type: "number",
4920
4928
  typeOptions: { minValue: 1 },
4921
- displayOptions: { show: { resource: ["voice"], operation: ["list"] } },
4929
+ displayOptions: { show: { resource: ["voice"], operation: ["legs_list"] } },
4922
4930
  default: 50,
4923
4931
  description: "Max number of results to return",
4924
4932
  },
@@ -4928,8 +4936,15 @@ exports.birdProperties = [
4928
4936
  type: "collection",
4929
4937
  placeholder: "Add Field",
4930
4938
  default: {},
4931
- displayOptions: { show: { resource: ["voice"], operation: ["list"] } },
4939
+ displayOptions: { show: { resource: ["voice"], operation: ["legs_list"] } },
4932
4940
  options: [
4941
+ {
4942
+ displayName: "Call ID",
4943
+ name: "call_id",
4944
+ type: "string",
4945
+ default: "",
4946
+ description: "Return only legs belonging to this call, which is how the legs of one multi-party or transferred call are correlated",
4947
+ },
4933
4948
  {
4934
4949
  displayName: "Direction",
4935
4950
  name: "direction",
@@ -4940,49 +4955,42 @@ exports.birdProperties = [
4940
4955
  { name: "Outbound", value: "outbound" },
4941
4956
  ],
4942
4957
  default: "",
4943
- description: "Return only calls in this direction",
4958
+ description: "Return only legs in this direction",
4944
4959
  },
4945
4960
  {
4946
4961
  displayName: "From",
4947
4962
  name: "from",
4948
4963
  type: "string",
4949
4964
  default: "",
4950
- description: "Return only calls placed from this calling party number, matched as a whole number rather than as a fragment. Give it in international form: `+14155551234`, `14155551234`, and `0014155551234` all select the same calls. A number given without a country code is read as an international one, so give the country code to be sure of what you are matching. Use `number` instead to match part of a number, or either side of the call.",
4965
+ description: "Return only legs placed from this calling party number, matched as a whole number rather than as a fragment. Give it in international form: `+14155551234`, `14155551234`, and `0014155551234` all select the same legs. A number given without a country code is read as an international one, so give the country code to be sure of what you are matching. Use `number` instead to match part of a number, or either side of the leg.",
4951
4966
  },
4952
4967
  {
4953
4968
  displayName: "Number",
4954
4969
  name: "number",
4955
4970
  type: "string",
4956
4971
  default: "",
4957
- description: "Return only calls where the calling or called number contains this value. Matches a partial number, so a country or area-code prefix returns every call to or from it. Combines with `from`/`to`, which match one side exactly.",
4958
- },
4959
- {
4960
- displayName: "Session ID",
4961
- name: "session_id",
4962
- type: "string",
4963
- default: "",
4964
- description: "Return only calls belonging to this session, which is how the legs of one multi-party or transferred call are correlated",
4972
+ description: "Return only legs where the calling or called number contains this value. Matches a partial number, so a country or area-code prefix returns every leg to or from it. Combines with `from`/`to`, which match one side exactly.",
4965
4973
  },
4966
4974
  {
4967
4975
  displayName: "Sip Trunk ID",
4968
4976
  name: "sip_trunk_id",
4969
4977
  type: "string",
4970
4978
  default: "",
4971
- description: "Return only calls carried by this SIP trunk",
4979
+ description: "Return only legs carried by this SIP trunk",
4972
4980
  },
4973
4981
  {
4974
4982
  displayName: "Started After",
4975
4983
  name: "started_after",
4976
4984
  type: "dateTime",
4977
4985
  default: "",
4978
- description: "Return only calls that started at or after this instant, inclusive. RFC 3339 timestamp.",
4986
+ description: "Return only legs that started at or after this instant, inclusive. RFC 3339 timestamp.",
4979
4987
  },
4980
4988
  {
4981
4989
  displayName: "Started Before",
4982
4990
  name: "started_before",
4983
4991
  type: "dateTime",
4984
4992
  default: "",
4985
- description: "Return only calls that started at or before this instant, inclusive. RFC 3339 timestamp.",
4993
+ description: "Return only legs that started at or before this instant, inclusive. RFC 3339 timestamp.",
4986
4994
  },
4987
4995
  {
4988
4996
  displayName: "Status",
@@ -5000,7 +5008,7 @@ exports.birdProperties = [
5000
5008
  { name: "Unknown", value: "unknown" },
5001
5009
  ],
5002
5010
  default: [],
5003
- description: "Return only calls with one of these statuses, comma-separated. In-flight and final statuses may be combined freely.",
5011
+ description: "Return only legs with one of these statuses, comma-separated. In-flight and final statuses may be combined freely.",
5004
5012
  },
5005
5013
  {
5006
5014
  displayName: "Tag",
@@ -5014,24 +5022,24 @@ exports.birdProperties = [
5014
5022
  name: "to",
5015
5023
  type: "string",
5016
5024
  default: "",
5017
- description: "Return only calls placed to this called party number, matched as a whole number rather than as a fragment. Give it in international form: `+16505559876`, `16505559876`, and `0016505559876` all select the same calls. A number given without a country code is read as an international one, so give the country code to be sure of what you are matching. Use `number` instead to match part of a number, or either side of the call.",
5025
+ description: "Return only legs placed to this called party number, matched as a whole number rather than as a fragment. Give it in international form: `+16505559876`, `16505559876`, and `0016505559876` all select the same legs. A number given without a country code is read as an international one, so give the country code to be sure of what you are matching. Use `number` instead to match part of a number, or either side of the leg.",
5018
5026
  },
5019
5027
  ],
5020
5028
  },
5021
5029
  {
5022
- displayName: "Call",
5023
- name: "call_id",
5030
+ displayName: "Leg",
5031
+ name: "leg_id",
5024
5032
  type: "resourceLocator",
5025
5033
  required: true,
5026
5034
  default: { mode: "list", value: "" },
5027
- displayOptions: { show: { resource: ["voice"], operation: ["get"] } },
5035
+ displayOptions: { show: { resource: ["voice"], operation: ["legs_get"] } },
5028
5036
  modes: [
5029
5037
  {
5030
5038
  displayName: "From List",
5031
5039
  name: "list",
5032
5040
  type: "list",
5033
- placeholder: "Select a Call...",
5034
- typeOptions: { searchListMethod: "voiceList", searchable: true },
5041
+ placeholder: "Select a Leg...",
5042
+ typeOptions: { searchListMethod: "voiceLegsList", searchable: true },
5035
5043
  },
5036
5044
  {
5037
5045
  displayName: "By ID",
@@ -5248,6 +5256,16 @@ exports.birdProperties = [
5248
5256
  default: "",
5249
5257
  description: "The email address to look up. Send it exactly as you hold it. The part before the `@` is case-sensitive, so the API does not lowercase it. A display-name form such as `Aisha &lt;aisha@example.com&gt;` is rejected rather than unwrapped.",
5250
5258
  },
5259
+ {
5260
+ displayName: "Emails",
5261
+ name: "emails",
5262
+ type: "string",
5263
+ required: true,
5264
+ displayOptions: { show: { resource: ["lookup"], operation: ["email_batch"] } },
5265
+ placeholder: "name@email.com",
5266
+ default: "",
5267
+ description: "Addresses to assess in submission order. Surrounding whitespace is trimmed and case is preserved. Malformed addresses receive individual assessments. Duplicates are assessed and billed at each position. The request must also fit within the 128 KiB request-body limit. Separate multiple values with a comma.",
5268
+ },
5251
5269
  {
5252
5270
  displayName: "Return All",
5253
5271
  name: "returnAll",
@@ -6706,7 +6724,7 @@ exports.birdProperties = [
6706
6724
  { name: "Paused", value: "paused" },
6707
6725
  ],
6708
6726
  default: "",
6709
- description: "`paused` stops all deliveries; `active` re-enables a paused endpoint. Omit to leave the status unchanged. Events that fire while paused are not delivered; after re-enabling, recover them with [Replay missed events](/docs/api/reference/create-webhook-replay). A `degraded` endpoint cannot be reset through this field: it returns to `active` automatically once deliveries succeed again.",
6727
+ description: "`paused` stops all deliveries; `active` re-enables a paused endpoint. Omit to leave the status unchanged. Events that fire while paused are not delivered and a replay cannot recover them, because they were never attempted; after re-enabling, [Replay failed deliveries](/docs/api/reference/create-webhook-replay) reaches only the deliveries that failed before the pause. A `degraded` endpoint cannot be reset through this field: it returns to `active` automatically once deliveries succeed again.",
6710
6728
  },
6711
6729
  ],
6712
6730
  },
@@ -9845,14 +9863,14 @@ exports.birdProperties = [
9845
9863
  name: "since",
9846
9864
  type: "dateTime",
9847
9865
  default: "",
9848
- description: "Replay events that occurred at or after this timestamp. Defaults to 24 hours before the request when omitted.",
9866
+ description: "Replay events whose delivery attempt failed at or after this timestamp. The bound is inclusive and applies to attempt time, not to when the event occurred, so a retry that trailed its event by a day falls in the window by the hour it was attempted. Defaults to 24 hours before the request when omitted. Attempts are retained for three days, so that is the oldest history a replay reaches: an earlier `since` widens the window without recovering anything older.",
9849
9867
  },
9850
9868
  {
9851
9869
  displayName: "Until",
9852
9870
  name: "until",
9853
9871
  type: "dateTime",
9854
9872
  default: "",
9855
- description: "Replay events that occurred before or at this timestamp. Omit to bound the window only by `since`.",
9873
+ description: "Replay events whose delivery attempt failed at or before this timestamp, on the same attempt-time bound as `since`. Omitted, it resolves to the time of the request.",
9856
9874
  },
9857
9875
  ],
9858
9876
  },
@@ -58,15 +58,16 @@ exports.birdRoutes = {
58
58
  "sms_keyword_rules:delete": { method: "DELETE", path: "/v1/sms/keyword-rules/{id}", pathParams: ["id"], topLevel: ["id"], collections: ["additionalFields"], query: [], body: [], jsonFields: [], structured: {}, renames: {}, arrayFields: [], dateTimeFields: [], nullableFields: [], binaryFields: [], rawBodyField: "", paginated: false, collection: false, idempotencyHeader: true, scopes: ["sms_management"] },
59
59
  "whatsapp:send": { method: "POST", path: "/v1/whatsapp/messages", pathParams: [], topLevel: ["to"], collections: ["additionalFields"], query: [], body: ["to", "from", "template", "text", "image", "video", "audio", "sticker", "document", "location", "interactive", "contact_cards", "in_reply_to_message_id", "tags", "metadata"], jsonFields: ["template.components", "interactive.header", "interactive.buttons", "interactive.list", "interactive.cta_url", "interactive.cards", "contact_cards"], structured: { "template": "struct", "text": "struct", "image": "struct", "video": "struct", "audio": "struct", "sticker": "struct", "document": "struct", "location": "struct", "interactive": "struct", "tags": "list", "metadata": "map" }, renames: {}, arrayFields: [], dateTimeFields: [], nullableFields: [], binaryFields: [], rawBodyField: "", paginated: false, collection: false, idempotencyHeader: true, scopes: ["whatsapp"] },
60
60
  "whatsapp:get": { method: "GET", path: "/v1/whatsapp/messages/{message_id}", pathParams: ["message_id"], topLevel: ["message_id"], collections: ["additionalFields"], query: [], body: [], jsonFields: [], structured: {}, renames: {}, arrayFields: [], dateTimeFields: [], nullableFields: [], binaryFields: [], rawBodyField: "", paginated: false, collection: false, idempotencyHeader: false, scopes: ["whatsapp"] },
61
- "whatsapp:list": { method: "GET", path: "/v1/whatsapp/messages", pathParams: [], topLevel: [], collections: ["additionalFields"], query: ["limit", "starting_after", "ending_before", "created_after", "created_before", "status", "direction", "to", "from", "phone_number", "bsuid", "category", "tag"], body: [], jsonFields: [], structured: {}, renames: {}, arrayFields: ["status", "tag"], dateTimeFields: ["created_after", "created_before"], nullableFields: [], binaryFields: [], rawBodyField: "", paginated: true, collection: true, idempotencyHeader: false, scopes: ["whatsapp"] },
61
+ "whatsapp:list": { method: "GET", path: "/v1/whatsapp/messages", pathParams: [], topLevel: [], collections: ["additionalFields"], query: ["limit", "starting_after", "ending_before", "created_after", "created_before", "status", "direction", "to", "from", "phone_number", "bsuid", "category", "group_id", "tag"], body: [], jsonFields: [], structured: {}, renames: {}, arrayFields: ["status", "tag"], dateTimeFields: ["created_after", "created_before"], nullableFields: [], binaryFields: [], rawBodyField: "", paginated: true, collection: true, idempotencyHeader: false, scopes: ["whatsapp"] },
62
62
  "whatsapp:list_events": { method: "GET", path: "/v1/whatsapp/messages/{message_id}/events", pathParams: ["message_id"], topLevel: ["message_id"], collections: ["additionalFields"], query: ["type"], body: [], jsonFields: [], structured: {}, renames: {}, arrayFields: [], dateTimeFields: [], nullableFields: [], binaryFields: [], rawBodyField: "", paginated: false, collection: true, idempotencyHeader: false, scopes: ["whatsapp"] },
63
- "voice:list": { method: "GET", path: "/v1/voice/calls", pathParams: [], topLevel: [], collections: ["additionalFields"], query: ["direction", "status", "session_id", "sip_trunk_id", "from", "to", "number", "tag", "started_after", "started_before", "limit", "starting_after", "ending_before"], body: [], jsonFields: [], structured: {}, renames: {}, arrayFields: ["status", "tag"], dateTimeFields: ["started_after", "started_before"], nullableFields: [], binaryFields: [], rawBodyField: "", paginated: true, collection: true, idempotencyHeader: false, scopes: ["voice"] },
64
- "voice:get": { method: "GET", path: "/v1/voice/calls/{call_id}", pathParams: ["call_id"], topLevel: ["call_id"], collections: ["additionalFields"], query: [], body: [], jsonFields: [], structured: {}, renames: {}, arrayFields: [], dateTimeFields: [], nullableFields: [], binaryFields: [], rawBodyField: "", paginated: false, collection: false, idempotencyHeader: false, scopes: ["voice"] },
63
+ "voice:legs_list": { method: "GET", path: "/v1/voice/legs", pathParams: [], topLevel: [], collections: ["additionalFields"], query: ["direction", "status", "call_id", "sip_trunk_id", "from", "to", "number", "tag", "started_after", "started_before", "limit", "starting_after", "ending_before"], body: [], jsonFields: [], structured: {}, renames: {}, arrayFields: ["status", "tag"], dateTimeFields: ["started_after", "started_before"], nullableFields: [], binaryFields: [], rawBodyField: "", paginated: true, collection: true, idempotencyHeader: false, scopes: ["voice"] },
64
+ "voice:legs_get": { method: "GET", path: "/v1/voice/legs/{leg_id}", pathParams: ["leg_id"], topLevel: ["leg_id"], collections: ["additionalFields"], query: [], body: [], jsonFields: [], structured: {}, renames: {}, arrayFields: [], dateTimeFields: [], nullableFields: [], binaryFields: [], rawBodyField: "", paginated: false, collection: false, idempotencyHeader: false, scopes: ["voice"] },
65
65
  "verify:verifications_create": { method: "POST", path: "/v1/verify/verifications", pathParams: [], topLevel: ["to"], collections: ["additionalFields"], query: [], body: ["to", "options", "metadata"], jsonFields: [], structured: { "to": "struct", "options": "struct", "metadata": "map" }, renames: {}, arrayFields: ["options.channels"], dateTimeFields: [], nullableFields: [], binaryFields: [], rawBodyField: "", paginated: false, collection: false, idempotencyHeader: true, scopes: ["verify"] },
66
66
  "verify:verifications_check": { method: "POST", path: "/v1/verify/verifications/check", pathParams: [], topLevel: ["to", "code"], collections: ["additionalFields"], query: [], body: ["to", "code"], jsonFields: [], structured: { "to": "struct" }, renames: {}, arrayFields: [], dateTimeFields: [], nullableFields: [], binaryFields: [], rawBodyField: "", paginated: false, collection: false, idempotencyHeader: true, scopes: ["verify"] },
67
67
  "verify:verifications_next_channel": { method: "POST", path: "/v1/verify/verifications/next-channel", pathParams: [], topLevel: ["to"], collections: ["additionalFields"], query: [], body: ["to"], jsonFields: [], structured: { "to": "struct" }, renames: {}, arrayFields: [], dateTimeFields: [], nullableFields: [], binaryFields: [], rawBodyField: "", paginated: false, collection: false, idempotencyHeader: true, scopes: ["verify"] },
68
68
  "lookup:phone_number": { method: "POST", path: "/v1/lookup/phone-number", pathParams: [], topLevel: ["phone_number"], collections: ["additionalFields"], query: [], body: ["phone_number", "type"], jsonFields: [], structured: {}, renames: {}, arrayFields: ["type"], dateTimeFields: [], nullableFields: [], binaryFields: [], rawBodyField: "", paginated: false, collection: false, idempotencyHeader: true, scopes: ["lookup"] },
69
69
  "lookup:email": { method: "POST", path: "/v1/lookup/email", pathParams: [], topLevel: ["email"], collections: ["additionalFields"], query: [], body: ["email"], jsonFields: [], structured: {}, renames: {}, arrayFields: [], dateTimeFields: [], nullableFields: [], binaryFields: [], rawBodyField: "", paginated: false, collection: false, idempotencyHeader: true, scopes: ["lookup"] },
70
+ "lookup:email_batch": { method: "POST", path: "/v1/lookup/email/batch", pathParams: [], topLevel: ["emails"], collections: ["additionalFields"], query: [], body: ["emails"], jsonFields: [], structured: {}, renames: {}, arrayFields: ["emails"], dateTimeFields: [], nullableFields: [], binaryFields: [], rawBodyField: "", paginated: false, collection: true, idempotencyHeader: true, scopes: ["lookup"] },
70
71
  "numbers:list": { method: "GET", path: "/v1/numbers", pathParams: [], topLevel: [], collections: ["additionalFields"], query: ["number", "country_code", "number_type", "prefix", "capabilities", "limit", "starting_after", "ending_before"], body: [], jsonFields: [], structured: {}, renames: {}, arrayFields: ["capabilities"], dateTimeFields: [], nullableFields: [], binaryFields: [], rawBodyField: "", paginated: true, collection: true, idempotencyHeader: false, scopes: ["numbers"] },
71
72
  "numbers:get": { method: "GET", path: "/v1/numbers/{number_id}", pathParams: ["number_id"], topLevel: ["number_id"], collections: ["additionalFields"], query: [], body: [], jsonFields: [], structured: {}, renames: {}, arrayFields: [], dateTimeFields: [], nullableFields: [], binaryFields: [], rawBodyField: "", paginated: false, collection: false, idempotencyHeader: false, scopes: ["numbers"] },
72
73
  "numbers:release": { method: "DELETE", path: "/v1/numbers/{number_id}", pathParams: ["number_id"], topLevel: ["number_id"], collections: ["additionalFields"], query: [], body: [], jsonFields: [], structured: {}, renames: {}, arrayFields: [], dateTimeFields: [], nullableFields: [], binaryFields: [], rawBodyField: "", paginated: false, collection: false, idempotencyHeader: true, scopes: ["numbers"] },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@messagebird/n8n-nodes-bird",
3
- "version": "0.9.2",
3
+ "version": "0.11.0",
4
4
  "description": "The official Bird node for n8n: email, SMS, WhatsApp, and verification, plus a webhook trigger for Bird events.",
5
5
  "license": "MIT",
6
6
  "author": {