@messagebird/n8n-nodes-bird 0.6.0 → 0.8.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.
@@ -51,6 +51,7 @@ exports.birdEvents = [
51
51
  { name: "whatsapp.accepted", value: "whatsapp.accepted", description: "The API accepted and charged the send request" },
52
52
  { name: "whatsapp.delivered", value: "whatsapp.delivered", description: "The message was delivered to the recipient's device" },
53
53
  { name: "whatsapp.failed", value: "whatsapp.failed", description: "Message delivery failed permanently" },
54
+ { name: "whatsapp.reacted", value: "whatsapp.reacted", description: "A contact placed, changed or took back a reaction on a message" },
54
55
  { name: "whatsapp.read", value: "whatsapp.read", description: "The recipient read the message" },
55
56
  { name: "whatsapp.received", value: "whatsapp.received", description: "A contact sent the business a WhatsApp message" },
56
57
  { name: "whatsapp.rejected", value: "whatsapp.rejected", description: "The API rejected the message before sending it to WhatsApp because the recipient is on the workspace suppression list, the wallet has insufficient balance, or the destination is unpriced. The message is not sent or charged." },
@@ -316,7 +316,7 @@ exports.birdProperties = [
316
316
  { name: "Delete", value: "delete", action: "Delete a webhook endpoint", description: "Delete a webhook endpoint" },
317
317
  { name: "Get", value: "get", action: "Get a webhook endpoint", description: "Get a webhook endpoint" },
318
318
  { name: "List", value: "list", action: "List webhook endpoints", description: "List webhook endpoints" },
319
- { name: "Replay", value: "replay", action: "Create a missed event replay", description: "Create a missed-event replay" },
319
+ { name: "Replay", value: "replay", action: "Create a missed event replay", description: "Replay failed deliveries" },
320
320
  { name: "Rotate Secret", value: "rotate_secret", action: "Rotate webhook signing secret", description: "Rotate webhook signing secret" },
321
321
  { name: "Test", value: "test", action: "Test a webhook with a sample event", description: "Test a webhook with a sample event" },
322
322
  { name: "Update", value: "update", action: "Update a webhook endpoint", description: "Update a webhook endpoint" },
@@ -627,7 +627,7 @@ exports.birdProperties = [
627
627
  typeOptions: { multipleValues: true },
628
628
  placeholder: "Add Pair",
629
629
  default: {},
630
- description: "Parameter values used to personalize inline content. A parameter is a single word, and a token in the subject or body (for example `{{ animal }}`) is replaced with the value of that name at send time. Shared across all recipients of this send. A token with no matching key renders empty. Cap: 16 KB serialized. When sending a stored `template`, put the values in `template.parameters` instead.",
630
+ description: "Parameter values used to personalize inline content, shared across all recipients of this send. Tokens such as `{{ animal }}` are replaced with matching values; missing values render empty. Include this object, even as `{}`, to use Liquid, or omit it to leave tokens unchanged. Use single-word names other than `bird`. Cap: 16 KB serialized. For a stored template, use `template.parameters` instead. See [inline personalization](https://bird.com/docs/guides/email/sending-email#content) for validation and URL encoding examples.",
631
631
  options: [
632
632
  {
633
633
  displayName: "Pair",
@@ -4582,7 +4582,7 @@ exports.birdProperties = [
4582
4582
  name: "language",
4583
4583
  type: "string",
4584
4584
  default: "",
4585
- description: "Which of the template's languages to send, as a BCP-47 tag (for example `en` or `pt-BR`); Meta's underscore form (`pt_BR`) is accepted and normalized. Omit it to send the template's default language, unless the template sets `language_source_required`, in which case a send naming no language is rejected. When the template does not carry the language you ask for, its own `on_missing_language` setting decides whether the closest available language is sent instead or the send is rejected. The accepted message echoes the canonical BCP-47 form of the language it resolved to.",
4585
+ description: "Which of the template's languages to send, as a BCP-47 tag (for example `en` or `pt-BR`); Meta's underscore form (`pt_BR`) is accepted and normalized. Omit it to send the template's default language, unless the template sets `language_source_required`, in which case a send naming no language is rejected. When the template does not carry the language you ask for, its own `on_missing_language` setting decides whether the closest available language is sent instead or the send is rejected. The accepted message echoes the canonical BCP-47 form of the language it resolved to, which is the language it is priced at: Meta categorizes each language separately, so a send served by a different language than the one you asked for is priced at that language's category.",
4586
4586
  },
4587
4587
  {
4588
4588
  displayName: "Components",
@@ -6327,6 +6327,7 @@ exports.birdProperties = [
6327
6327
  { name: "Whatsapp Accepted", value: "whatsapp.accepted" },
6328
6328
  { name: "Whatsapp Delivered", value: "whatsapp.delivered" },
6329
6329
  { name: "Whatsapp Failed", value: "whatsapp.failed" },
6330
+ { name: "Whatsapp Reacted", value: "whatsapp.reacted" },
6330
6331
  { name: "Whatsapp Read", value: "whatsapp.read" },
6331
6332
  { name: "Whatsapp Received", value: "whatsapp.received" },
6332
6333
  { name: "Whatsapp Rejected", value: "whatsapp.rejected" },
@@ -6591,6 +6592,7 @@ exports.birdProperties = [
6591
6592
  { name: "Whatsapp Accepted", value: "whatsapp.accepted" },
6592
6593
  { name: "Whatsapp Delivered", value: "whatsapp.delivered" },
6593
6594
  { name: "Whatsapp Failed", value: "whatsapp.failed" },
6595
+ { name: "Whatsapp Reacted", value: "whatsapp.reacted" },
6594
6596
  { name: "Whatsapp Read", value: "whatsapp.read" },
6595
6597
  { name: "Whatsapp Received", value: "whatsapp.received" },
6596
6598
  { name: "Whatsapp Rejected", value: "whatsapp.rejected" },
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.birdRoutes = void 0;
4
4
  exports.birdRoutes = {
5
- "email:send": { method: "POST", path: "/v1/email/messages", pathParams: [], topLevel: ["from", "to"], collections: ["additionalFields"], query: [], body: ["from", "to", "cc", "bcc", "subject", "html", "text", "reply_to", "headers", "tags", "metadata", "parameters", "template", "track_opens", "track_clicks", "ip_pool_id", "category", "attachments", "scheduled_at"], jsonFields: [], structured: { "headers": "map", "tags": "list", "metadata": "map", "parameters": "map", "template": "struct", "attachments": "list" }, renames: {}, arrayFields: ["to", "cc", "bcc", "reply_to"], dateTimeFields: ["scheduled_at"], nullableFields: [], binaryFields: ["attachments"], rawBodyField: "", paginated: false, collection: false, idempotencyHeader: true, scopes: ["emails"] },
5
+ "email:send": { method: "POST", path: "/v1/email/messages", pathParams: [], topLevel: ["from", "to"], collections: ["additionalFields"], query: [], body: ["from", "to", "cc", "bcc", "subject", "html", "text", "reply_to", "headers", "tags", "metadata", "parameters", "template", "track_opens", "track_clicks", "ip_pool_id", "category", "attachments", "scheduled_at"], jsonFields: [], structured: { "headers": "map", "tags": "list", "metadata": "map", "parameters": "map", "template": "struct", "attachments": "list" }, preserveEmptyFields: ["parameters"], renames: {}, arrayFields: ["to", "cc", "bcc", "reply_to"], dateTimeFields: ["scheduled_at"], nullableFields: [], binaryFields: ["attachments"], rawBodyField: "", paginated: false, collection: false, idempotencyHeader: true, scopes: ["emails"] },
6
6
  "email:send_batch": { method: "POST", path: "/v1/email/batches", pathParams: [], topLevel: ["messages"], collections: ["additionalFields"], query: [], body: ["messages"], jsonFields: ["messages"], structured: {}, renames: {}, arrayFields: [], dateTimeFields: [], nullableFields: [], binaryFields: [], rawBodyField: "", paginated: false, collection: true, idempotencyHeader: true, scopes: ["emails"] },
7
7
  "email:get": { method: "GET", path: "/v1/email/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: ["emails"] },
8
8
  "email:list": { method: "GET", path: "/v1/email/messages", pathParams: [], topLevel: [], collections: ["additionalFields"], query: ["limit", "starting_after", "ending_before", "created_after", "created_before", "status", "tag", "category", "to", "from"], body: [], jsonFields: [], structured: {}, renames: {}, arrayFields: ["tag"], dateTimeFields: ["created_after", "created_before"], nullableFields: [], binaryFields: [], rawBodyField: "", paginated: true, collection: true, idempotencyHeader: false, scopes: ["emails"] },
@@ -206,7 +206,10 @@ function unwrapStructured(node, itemIndex, route, v) {
206
206
  if (typeof raw === "object" &&
207
207
  raw !== null &&
208
208
  Object.keys(raw).length === 0) {
209
- delete v[name];
209
+ if (route.preserveEmptyFields?.includes(name))
210
+ v[name] = raw;
211
+ else
212
+ delete v[name];
210
213
  continue;
211
214
  }
212
215
  v[name] = raw;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@messagebird/n8n-nodes-bird",
3
- "version": "0.6.0",
3
+ "version": "0.8.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": {