nylas 8.2.0 → 8.4.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.
@@ -42,5 +42,6 @@ __exportStar(require("./scheduler.js"), exports);
42
42
  __exportStar(require("./serviceAccount.js"), exports);
43
43
  __exportStar(require("./smartCompose.js"), exports);
44
44
  __exportStar(require("./threads.js"), exports);
45
+ __exportStar(require("./transactionalSend.js"), exports);
45
46
  __exportStar(require("./webhooks.js"), exports);
46
47
  __exportStar(require("./workspaces.js"), exports);
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -19,16 +19,34 @@ var WebhookTriggers;
19
19
  WebhookTriggers["GrantUpdated"] = "grant.updated";
20
20
  WebhookTriggers["GrantDeleted"] = "grant.deleted";
21
21
  WebhookTriggers["GrantExpired"] = "grant.expired";
22
+ WebhookTriggers["GrantImapSyncCompleted"] = "grant.imap_sync_completed";
22
23
  // Message triggers
23
24
  WebhookTriggers["MessageCreated"] = "message.created";
25
+ WebhookTriggers["MessageCreatedCleaned"] = "message.created.cleaned";
24
26
  WebhookTriggers["MessageUpdated"] = "message.updated";
27
+ WebhookTriggers["MessageDeleted"] = "message.deleted";
28
+ WebhookTriggers["MessageCreatedTruncated"] = "message.created.truncated";
29
+ WebhookTriggers["MessageUpdatedTruncated"] = "message.updated.truncated";
25
30
  WebhookTriggers["MessageSendSuccess"] = "message.send_success";
26
31
  WebhookTriggers["MessageSendFailed"] = "message.send_failed";
27
32
  WebhookTriggers["MessageBounceDetected"] = "message.bounce_detected";
28
33
  // Message tracking triggers
29
34
  WebhookTriggers["MessageOpened"] = "message.opened";
35
+ WebhookTriggers["MessageOpenedLegacy"] = "message.opened.legacy";
30
36
  WebhookTriggers["MessageLinkClicked"] = "message.link_clicked";
37
+ WebhookTriggers["MessageLinkClickedLegacy"] = "message.link_clicked.legacy";
31
38
  WebhookTriggers["ThreadReplied"] = "thread.replied";
39
+ WebhookTriggers["ThreadRepliedLegacy"] = "thread.replied.legacy";
40
+ // Agent Account deliverability triggers
41
+ WebhookTriggers["MessageDelivered"] = "message.delivered";
42
+ WebhookTriggers["MessageBounced"] = "message.bounced";
43
+ WebhookTriggers["MessageComplaint"] = "message.complaint";
44
+ WebhookTriggers["MessageRejected"] = "message.rejected";
45
+ // Transactional email deliverability triggers
46
+ WebhookTriggers["MessageTransactionalDelivered"] = "message.transactional.delivered";
47
+ WebhookTriggers["MessageTransactionalBounced"] = "message.transactional.bounced";
48
+ WebhookTriggers["MessageTransactionalComplaint"] = "message.transactional.complaint";
49
+ WebhookTriggers["MessageTransactionalRejected"] = "message.transactional.rejected";
32
50
  // ExtractAI triggers
33
51
  WebhookTriggers["MessageIntelligenceOrder"] = "message.intelligence.order";
34
52
  WebhookTriggers["MessageIntelligenceTracking"] = "message.intelligence.tracking";
@@ -45,4 +63,10 @@ var WebhookTriggers;
45
63
  WebhookTriggers["BookingRescheduled"] = "booking.rescheduled";
46
64
  WebhookTriggers["BookingCancelled"] = "booking.cancelled";
47
65
  WebhookTriggers["BookingReminder"] = "booking.reminder";
66
+ // Notetaker triggers
67
+ WebhookTriggers["NotetakerCreated"] = "notetaker.created";
68
+ WebhookTriggers["NotetakerUpdated"] = "notetaker.updated";
69
+ WebhookTriggers["NotetakerDeleted"] = "notetaker.deleted";
70
+ WebhookTriggers["NotetakerMeetingState"] = "notetaker.meeting_state";
71
+ WebhookTriggers["NotetakerMedia"] = "notetaker.media";
48
72
  })(WebhookTriggers || (exports.WebhookTriggers = WebhookTriggers = {}));
package/lib/cjs/nylas.js CHANGED
@@ -40,6 +40,7 @@ const policies_js_1 = require("./resources/policies.js");
40
40
  const rules_js_1 = require("./resources/rules.js");
41
41
  const workspaces_js_1 = require("./resources/workspaces.js");
42
42
  const agentLists_js_1 = require("./resources/agentLists.js");
43
+ const transactionalSend_js_1 = require("./resources/transactionalSend.js");
43
44
  /**
44
45
  * The entry point to the Node SDK
45
46
  *
@@ -71,6 +72,7 @@ class Nylas {
71
72
  this.rules = new rules_js_1.Rules(this.apiClient);
72
73
  this.workspaces = new workspaces_js_1.Workspaces(this.apiClient);
73
74
  this.lists = new agentLists_js_1.AgentLists(this.apiClient);
75
+ this.transactionalSend = new transactionalSend_js_1.TransactionalSend(this.apiClient);
74
76
  this.threads = new threads_js_1.Threads(this.apiClient);
75
77
  this.webhooks = new webhooks_js_1.Webhooks(this.apiClient);
76
78
  this.folders = new folders_js_1.Folders(this.apiClient);
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransactionalSend = void 0;
4
+ const utils_js_1 = require("../utils.js");
5
+ const messages_js_1 = require("./messages.js");
6
+ const resource_js_1 = require("./resource.js");
7
+ /**
8
+ * Nylas Transactional Send API
9
+ *
10
+ * Send messages directly from a verified domain without grant-based authentication.
11
+ */
12
+ class TransactionalSend extends resource_js_1.Resource {
13
+ /**
14
+ * Send a transactional email from a verified domain.
15
+ * @return The sent message identifier.
16
+ */
17
+ async send({ domainName, requestBody, queryParams, overrides, }) {
18
+ const path = (0, utils_js_1.makePathParams)('/v3/domains/{domainName}/messages/send', {
19
+ domainName,
20
+ });
21
+ const requestOptions = {
22
+ method: 'POST',
23
+ path,
24
+ queryParams,
25
+ overrides,
26
+ };
27
+ const totalPayloadSize = (0, utils_js_1.calculateTotalPayloadSize)(requestBody);
28
+ if (totalPayloadSize >= messages_js_1.Messages.MAXIMUM_JSON_ATTACHMENT_SIZE) {
29
+ requestOptions.form = messages_js_1.Messages._buildFormRequest(requestBody);
30
+ }
31
+ else if (requestBody.attachments) {
32
+ const processedAttachments = await (0, utils_js_1.encodeAttachmentContent)(requestBody.attachments);
33
+ requestOptions.body = {
34
+ ...requestBody,
35
+ attachments: processedAttachments,
36
+ };
37
+ }
38
+ else {
39
+ requestOptions.body = requestBody;
40
+ }
41
+ return this.apiClient.request(requestOptions);
42
+ }
43
+ }
44
+ exports.TransactionalSend = TransactionalSend;
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SDK_VERSION = void 0;
4
4
  // This file is generated by scripts/exportVersion.js
5
- exports.SDK_VERSION = '8.2.0';
5
+ exports.SDK_VERSION = '8.4.0';
@@ -26,5 +26,6 @@ export * from './scheduler.js';
26
26
  export * from './serviceAccount.js';
27
27
  export * from './smartCompose.js';
28
28
  export * from './threads.js';
29
+ export * from './transactionalSend.js';
29
30
  export * from './webhooks.js';
30
31
  export * from './workspaces.js';
@@ -0,0 +1 @@
1
+ export {};
@@ -16,16 +16,34 @@ export var WebhookTriggers;
16
16
  WebhookTriggers["GrantUpdated"] = "grant.updated";
17
17
  WebhookTriggers["GrantDeleted"] = "grant.deleted";
18
18
  WebhookTriggers["GrantExpired"] = "grant.expired";
19
+ WebhookTriggers["GrantImapSyncCompleted"] = "grant.imap_sync_completed";
19
20
  // Message triggers
20
21
  WebhookTriggers["MessageCreated"] = "message.created";
22
+ WebhookTriggers["MessageCreatedCleaned"] = "message.created.cleaned";
21
23
  WebhookTriggers["MessageUpdated"] = "message.updated";
24
+ WebhookTriggers["MessageDeleted"] = "message.deleted";
25
+ WebhookTriggers["MessageCreatedTruncated"] = "message.created.truncated";
26
+ WebhookTriggers["MessageUpdatedTruncated"] = "message.updated.truncated";
22
27
  WebhookTriggers["MessageSendSuccess"] = "message.send_success";
23
28
  WebhookTriggers["MessageSendFailed"] = "message.send_failed";
24
29
  WebhookTriggers["MessageBounceDetected"] = "message.bounce_detected";
25
30
  // Message tracking triggers
26
31
  WebhookTriggers["MessageOpened"] = "message.opened";
32
+ WebhookTriggers["MessageOpenedLegacy"] = "message.opened.legacy";
27
33
  WebhookTriggers["MessageLinkClicked"] = "message.link_clicked";
34
+ WebhookTriggers["MessageLinkClickedLegacy"] = "message.link_clicked.legacy";
28
35
  WebhookTriggers["ThreadReplied"] = "thread.replied";
36
+ WebhookTriggers["ThreadRepliedLegacy"] = "thread.replied.legacy";
37
+ // Agent Account deliverability triggers
38
+ WebhookTriggers["MessageDelivered"] = "message.delivered";
39
+ WebhookTriggers["MessageBounced"] = "message.bounced";
40
+ WebhookTriggers["MessageComplaint"] = "message.complaint";
41
+ WebhookTriggers["MessageRejected"] = "message.rejected";
42
+ // Transactional email deliverability triggers
43
+ WebhookTriggers["MessageTransactionalDelivered"] = "message.transactional.delivered";
44
+ WebhookTriggers["MessageTransactionalBounced"] = "message.transactional.bounced";
45
+ WebhookTriggers["MessageTransactionalComplaint"] = "message.transactional.complaint";
46
+ WebhookTriggers["MessageTransactionalRejected"] = "message.transactional.rejected";
29
47
  // ExtractAI triggers
30
48
  WebhookTriggers["MessageIntelligenceOrder"] = "message.intelligence.order";
31
49
  WebhookTriggers["MessageIntelligenceTracking"] = "message.intelligence.tracking";
@@ -42,4 +60,10 @@ export var WebhookTriggers;
42
60
  WebhookTriggers["BookingRescheduled"] = "booking.rescheduled";
43
61
  WebhookTriggers["BookingCancelled"] = "booking.cancelled";
44
62
  WebhookTriggers["BookingReminder"] = "booking.reminder";
63
+ // Notetaker triggers
64
+ WebhookTriggers["NotetakerCreated"] = "notetaker.created";
65
+ WebhookTriggers["NotetakerUpdated"] = "notetaker.updated";
66
+ WebhookTriggers["NotetakerDeleted"] = "notetaker.deleted";
67
+ WebhookTriggers["NotetakerMeetingState"] = "notetaker.meeting_state";
68
+ WebhookTriggers["NotetakerMedia"] = "notetaker.media";
45
69
  })(WebhookTriggers || (WebhookTriggers = {}));
package/lib/esm/nylas.js CHANGED
@@ -21,6 +21,7 @@ import { Policies } from './resources/policies.js';
21
21
  import { Rules } from './resources/rules.js';
22
22
  import { Workspaces } from './resources/workspaces.js';
23
23
  import { AgentLists } from './resources/agentLists.js';
24
+ import { TransactionalSend } from './resources/transactionalSend.js';
24
25
  /**
25
26
  * The entry point to the Node SDK
26
27
  *
@@ -52,6 +53,7 @@ class Nylas {
52
53
  this.rules = new Rules(this.apiClient);
53
54
  this.workspaces = new Workspaces(this.apiClient);
54
55
  this.lists = new AgentLists(this.apiClient);
56
+ this.transactionalSend = new TransactionalSend(this.apiClient);
55
57
  this.threads = new Threads(this.apiClient);
56
58
  this.webhooks = new Webhooks(this.apiClient);
57
59
  this.folders = new Folders(this.apiClient);
@@ -0,0 +1,40 @@
1
+ import { calculateTotalPayloadSize, encodeAttachmentContent, makePathParams, } from '../utils.js';
2
+ import { Messages } from './messages.js';
3
+ import { Resource } from './resource.js';
4
+ /**
5
+ * Nylas Transactional Send API
6
+ *
7
+ * Send messages directly from a verified domain without grant-based authentication.
8
+ */
9
+ export class TransactionalSend extends Resource {
10
+ /**
11
+ * Send a transactional email from a verified domain.
12
+ * @return The sent message identifier.
13
+ */
14
+ async send({ domainName, requestBody, queryParams, overrides, }) {
15
+ const path = makePathParams('/v3/domains/{domainName}/messages/send', {
16
+ domainName,
17
+ });
18
+ const requestOptions = {
19
+ method: 'POST',
20
+ path,
21
+ queryParams,
22
+ overrides,
23
+ };
24
+ const totalPayloadSize = calculateTotalPayloadSize(requestBody);
25
+ if (totalPayloadSize >= Messages.MAXIMUM_JSON_ATTACHMENT_SIZE) {
26
+ requestOptions.form = Messages._buildFormRequest(requestBody);
27
+ }
28
+ else if (requestBody.attachments) {
29
+ const processedAttachments = await encodeAttachmentContent(requestBody.attachments);
30
+ requestOptions.body = {
31
+ ...requestBody,
32
+ attachments: processedAttachments,
33
+ };
34
+ }
35
+ else {
36
+ requestOptions.body = requestBody;
37
+ }
38
+ return this.apiClient.request(requestOptions);
39
+ }
40
+ }
@@ -1,2 +1,2 @@
1
1
  // This file is generated by scripts/exportVersion.js
2
- export const SDK_VERSION = '8.2.0';
2
+ export const SDK_VERSION = '8.4.0';
@@ -25,5 +25,6 @@ export * from './scheduler.js';
25
25
  export * from './serviceAccount.js';
26
26
  export * from './smartCompose.js';
27
27
  export * from './threads.js';
28
+ export * from './transactionalSend.js';
28
29
  export * from './webhooks.js';
29
30
  export * from './workspaces.js';
@@ -342,6 +342,11 @@ export interface CleanMessagesRequest {
342
342
  * If true, removes phrases such as "Best" and "Regards" in the email message signature.
343
343
  */
344
344
  removeConclusionPhrases?: boolean;
345
+ /**
346
+ * If true, converts the cleaned HTML message body to Markdown.
347
+ * Note: This can't be true when imagesAsMarkdown is false.
348
+ */
349
+ htmlAsMarkdown?: boolean;
345
350
  }
346
351
  /**
347
352
  * Interface representing the response after cleaning a message.
@@ -54,6 +54,14 @@ export interface Notetaker {
54
54
  * The current state of the Notetaker bot.
55
55
  */
56
56
  state: NotetakerState;
57
+ /**
58
+ * The calendar ID associated with the Notetaker bot, if applicable.
59
+ */
60
+ calendarId?: string;
61
+ /**
62
+ * The event ID associated with the Notetaker bot, if applicable.
63
+ */
64
+ eventId?: string;
57
65
  /**
58
66
  * Notetaker Meeting Settings
59
67
  */
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Interface representing the result of a transactional send request.
3
+ */
4
+ export interface TransactionalSendResult {
5
+ /**
6
+ * The unique identifier for the sent message.
7
+ */
8
+ messageId: string;
9
+ }
@@ -118,14 +118,30 @@ export declare enum WebhookTriggers {
118
118
  GrantUpdated = "grant.updated",
119
119
  GrantDeleted = "grant.deleted",
120
120
  GrantExpired = "grant.expired",
121
+ GrantImapSyncCompleted = "grant.imap_sync_completed",
121
122
  MessageCreated = "message.created",
123
+ MessageCreatedCleaned = "message.created.cleaned",
122
124
  MessageUpdated = "message.updated",
125
+ MessageDeleted = "message.deleted",
126
+ MessageCreatedTruncated = "message.created.truncated",
127
+ MessageUpdatedTruncated = "message.updated.truncated",
123
128
  MessageSendSuccess = "message.send_success",
124
129
  MessageSendFailed = "message.send_failed",
125
130
  MessageBounceDetected = "message.bounce_detected",
126
131
  MessageOpened = "message.opened",
132
+ MessageOpenedLegacy = "message.opened.legacy",
127
133
  MessageLinkClicked = "message.link_clicked",
134
+ MessageLinkClickedLegacy = "message.link_clicked.legacy",
128
135
  ThreadReplied = "thread.replied",
136
+ ThreadRepliedLegacy = "thread.replied.legacy",
137
+ MessageDelivered = "message.delivered",
138
+ MessageBounced = "message.bounced",
139
+ MessageComplaint = "message.complaint",
140
+ MessageRejected = "message.rejected",
141
+ MessageTransactionalDelivered = "message.transactional.delivered",
142
+ MessageTransactionalBounced = "message.transactional.bounced",
143
+ MessageTransactionalComplaint = "message.transactional.complaint",
144
+ MessageTransactionalRejected = "message.transactional.rejected",
129
145
  MessageIntelligenceOrder = "message.intelligence.order",
130
146
  MessageIntelligenceTracking = "message.intelligence.tracking",
131
147
  FolderCreated = "folder.created",
@@ -137,7 +153,12 @@ export declare enum WebhookTriggers {
137
153
  BookingPending = "booking.pending",
138
154
  BookingRescheduled = "booking.rescheduled",
139
155
  BookingCancelled = "booking.cancelled",
140
- BookingReminder = "booking.reminder"
156
+ BookingReminder = "booking.reminder",
157
+ NotetakerCreated = "notetaker.created",
158
+ NotetakerUpdated = "notetaker.updated",
159
+ NotetakerDeleted = "notetaker.deleted",
160
+ NotetakerMeetingState = "notetaker.meeting_state",
161
+ NotetakerMedia = "notetaker.media"
141
162
  }
142
163
  /**
143
164
  * Enum representing the available webhook statuses.
@@ -21,6 +21,7 @@ import { Policies } from './resources/policies.js';
21
21
  import { Rules } from './resources/rules.js';
22
22
  import { Workspaces } from './resources/workspaces.js';
23
23
  import { AgentLists } from './resources/agentLists.js';
24
+ import { TransactionalSend } from './resources/transactionalSend.js';
24
25
  /**
25
26
  * The entry point to the Node SDK
26
27
  *
@@ -92,6 +93,10 @@ declare class Nylas {
92
93
  * Access the Agent Account Lists API
93
94
  */
94
95
  lists: AgentLists;
96
+ /**
97
+ * Access the Transactional Send API
98
+ */
99
+ transactionalSend: TransactionalSend;
95
100
  /**
96
101
  * Access the Threads API
97
102
  */
@@ -2,19 +2,19 @@ import APIClient from '../apiClient.js';
2
2
  import { OverridableNylasConfig } from '../config.js';
3
3
  import { ListQueryParams } from '../models/listQueryParams.js';
4
4
  import { NylasResponse, NylasListResponse, ListResponseInnerType } from '../models/response.js';
5
- interface ListParams<T> {
5
+ interface ListParams<_T> {
6
6
  queryParams?: ListQueryParams;
7
7
  path: string;
8
8
  overrides?: OverridableNylasConfig;
9
9
  getOverrides?: () => OverridableNylasConfig | undefined;
10
10
  useGenerator?: boolean;
11
11
  }
12
- interface FindParams<T> {
12
+ interface FindParams<_T> {
13
13
  path: string;
14
14
  queryParams?: Record<string, any>;
15
15
  overrides?: OverridableNylasConfig;
16
16
  }
17
- interface PayloadParams<T> {
17
+ interface PayloadParams<_T> {
18
18
  path: string;
19
19
  queryParams?: Record<string, any>;
20
20
  requestBody: Record<string, any>;
@@ -0,0 +1,28 @@
1
+ import { Overrides } from '../config.js';
2
+ import { SendMessageRequest } from '../models/drafts.js';
3
+ import { SendMessageQueryParams } from '../models/messages.js';
4
+ import { NylasResponse } from '../models/response.js';
5
+ import { TransactionalSendResult } from '../models/transactionalSend.js';
6
+ import { Resource } from './resource.js';
7
+ /**
8
+ * @property domainName The verified domain name to send the message from.
9
+ * @property requestBody The message to send.
10
+ * @property queryParams The query parameters to include in the request.
11
+ */
12
+ export interface SendTransactionalEmailParams {
13
+ domainName: string;
14
+ requestBody: SendMessageRequest;
15
+ queryParams?: SendMessageQueryParams;
16
+ }
17
+ /**
18
+ * Nylas Transactional Send API
19
+ *
20
+ * Send messages directly from a verified domain without grant-based authentication.
21
+ */
22
+ export declare class TransactionalSend extends Resource {
23
+ /**
24
+ * Send a transactional email from a verified domain.
25
+ * @return The sent message identifier.
26
+ */
27
+ send({ domainName, requestBody, queryParams, overrides, }: SendTransactionalEmailParams & Overrides): Promise<NylasResponse<TransactionalSendResult>>;
28
+ }
@@ -1 +1 @@
1
- export declare const SDK_VERSION = "8.2.0";
1
+ export declare const SDK_VERSION = "8.4.0";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nylas",
3
- "version": "8.2.0",
3
+ "version": "8.4.0",
4
4
  "description": "A NodeJS wrapper for the Nylas REST API for email, contacts, and calendar.",
5
5
  "main": "lib/cjs/nylas.js",
6
6
  "types": "lib/types/nylas.d.ts",
@@ -44,29 +44,28 @@
44
44
  "change-case": "^4.1.2",
45
45
  "form-data-encoder": "^4.1.0",
46
46
  "formdata-node": "^6.0.3",
47
- "mime-types": "^2.1.35",
48
- "uuid": "^8.3.2"
47
+ "mime-types": "^3.0.2",
48
+ "uuid": "^11.0.0"
49
49
  },
50
50
  "devDependencies": {
51
- "@babel/core": "^7.3.3",
52
- "@types/jest": "^29.5.2",
53
- "@types/mime-types": "^2.1.2",
54
- "@types/node": "^22.15.21",
55
- "@types/uuid": "^8.3.4",
56
- "@typescript-eslint/eslint-plugin": "^2.25.0",
57
- "@typescript-eslint/parser": "^2.25.0",
58
- "eslint": "^5.14.0",
59
- "eslint-config-prettier": "^4.0.0",
51
+ "@babel/core": "^7.29.7",
52
+ "@types/jest": "^29.5.14",
53
+ "@types/mime-types": "^2.1.4",
54
+ "@types/node": "^22.20.0",
55
+ "@typescript-eslint/eslint-plugin": "^7.18.0",
56
+ "@typescript-eslint/parser": "^7.18.0",
57
+ "eslint": "^8.57.0",
58
+ "eslint-config-prettier": "^9.1.0",
60
59
  "eslint-plugin-custom-rules": "^0.0.0",
61
- "eslint-plugin-import": "^2.28.1",
62
- "eslint-plugin-prettier": "^3.0.1",
63
- "jest": "^29.6.1",
60
+ "eslint-plugin-import": "^2.32.0",
61
+ "eslint-plugin-prettier": "^5.2.1",
62
+ "jest": "^29.7.0",
64
63
  "jest-fetch-mock": "^3.0.3",
65
- "prettier": "^3.5.3",
66
- "ts-jest": "^29.1.1",
67
- "typedoc": "^0.28.4",
64
+ "prettier": "^3.8.4",
65
+ "ts-jest": "^29.4.11",
66
+ "typedoc": "^0.28.19",
68
67
  "typedoc-plugin-rename-defaults": "^0.7.3",
69
- "typescript": "^5.8.3"
68
+ "typescript": "^5.9.3"
70
69
  },
71
70
  "repository": {
72
71
  "type": "git",