nylas 7.5.1 → 7.6.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/lib/cjs/apiClient.js +3 -2
- package/lib/cjs/models/webhooks.js +27 -0
- package/lib/cjs/resources/auth.js +2 -2
- package/lib/cjs/resources/messages.js +3 -8
- package/lib/cjs/resources/webhooks.js +1 -1
- package/lib/cjs/version.js +1 -1
- package/lib/esm/apiClient.js +3 -2
- package/lib/esm/models/webhooks.js +27 -0
- package/lib/esm/resources/auth.js +1 -1
- package/lib/esm/resources/messages.js +3 -8
- package/lib/esm/resources/webhooks.js +1 -1
- package/lib/esm/version.js +1 -1
- package/lib/types/apiClient.d.ts +1 -1
- package/lib/types/models/attachments.d.ts +5 -2
- package/lib/types/models/auth.d.ts +1 -1
- package/lib/types/models/events.d.ts +5 -0
- package/lib/types/models/webhooks.d.ts +19 -1
- package/lib/types/resources/messages.d.ts +1 -1
- package/lib/types/version.d.ts +1 -1
- package/package.json +1 -2
package/lib/cjs/apiClient.js
CHANGED
|
@@ -112,7 +112,8 @@ class APIClient {
|
|
|
112
112
|
requestOptions.headers = this.setRequestHeaders(optionParams);
|
|
113
113
|
requestOptions.method = optionParams.method;
|
|
114
114
|
if (optionParams.body) {
|
|
115
|
-
requestOptions.body = JSON.stringify((0, utils_js_1.objKeysToSnakeCase)(optionParams.body)
|
|
115
|
+
requestOptions.body = JSON.stringify((0, utils_js_1.objKeysToSnakeCase)(optionParams.body, ['metadata']) // metadata should remain as is
|
|
116
|
+
);
|
|
116
117
|
requestOptions.headers['Content-Type'] = 'application/json';
|
|
117
118
|
}
|
|
118
119
|
if (optionParams.form) {
|
|
@@ -136,7 +137,7 @@ class APIClient {
|
|
|
136
137
|
const text = await response.text();
|
|
137
138
|
try {
|
|
138
139
|
const responseJSON = JSON.parse(text);
|
|
139
|
-
return (0, utils_js_1.objKeysToCamelCase)(responseJSON);
|
|
140
|
+
return (0, utils_js_1.objKeysToCamelCase)(responseJSON, ['metadata']);
|
|
140
141
|
}
|
|
141
142
|
catch (e) {
|
|
142
143
|
throw new Error(`Could not parse response from the server: ${text}`);
|
|
@@ -6,16 +6,43 @@ exports.WebhookTriggers = void 0;
|
|
|
6
6
|
*/
|
|
7
7
|
var WebhookTriggers;
|
|
8
8
|
(function (WebhookTriggers) {
|
|
9
|
+
// Calendar triggers
|
|
9
10
|
WebhookTriggers["CalendarCreated"] = "calendar.created";
|
|
10
11
|
WebhookTriggers["CalendarUpdated"] = "calendar.updated";
|
|
11
12
|
WebhookTriggers["CalendarDeleted"] = "calendar.deleted";
|
|
13
|
+
// Event triggers
|
|
12
14
|
WebhookTriggers["EventCreated"] = "event.created";
|
|
13
15
|
WebhookTriggers["EventUpdated"] = "event.updated";
|
|
14
16
|
WebhookTriggers["EventDeleted"] = "event.deleted";
|
|
17
|
+
// Grant triggers
|
|
15
18
|
WebhookTriggers["GrantCreated"] = "grant.created";
|
|
16
19
|
WebhookTriggers["GrantUpdated"] = "grant.updated";
|
|
17
20
|
WebhookTriggers["GrantDeleted"] = "grant.deleted";
|
|
18
21
|
WebhookTriggers["GrantExpired"] = "grant.expired";
|
|
22
|
+
// Message triggers
|
|
23
|
+
WebhookTriggers["MessageCreated"] = "message.created";
|
|
24
|
+
WebhookTriggers["MessageUpdated"] = "message.updated";
|
|
19
25
|
WebhookTriggers["MessageSendSuccess"] = "message.send_success";
|
|
20
26
|
WebhookTriggers["MessageSendFailed"] = "message.send_failed";
|
|
27
|
+
WebhookTriggers["MessageBounceDetected"] = "message.bounce_detected";
|
|
28
|
+
// Message tracking triggers
|
|
29
|
+
WebhookTriggers["MessageOpened"] = "message.opened";
|
|
30
|
+
WebhookTriggers["MessageLinkClicked"] = "message.link_clicked";
|
|
31
|
+
WebhookTriggers["ThreadReplied"] = "thread.replied";
|
|
32
|
+
// ExtractAI triggers
|
|
33
|
+
WebhookTriggers["MessageIntelligenceOrder"] = "message.intelligence.order";
|
|
34
|
+
WebhookTriggers["MessageIntelligenceTracking"] = "message.intelligence.tracking";
|
|
35
|
+
// Folder triggers
|
|
36
|
+
WebhookTriggers["FolderCreated"] = "folder.created";
|
|
37
|
+
WebhookTriggers["FolderUpdated"] = "folder.updated";
|
|
38
|
+
WebhookTriggers["FolderDeleted"] = "folder.deleted";
|
|
39
|
+
// Contact triggers
|
|
40
|
+
WebhookTriggers["ContactUpdated"] = "contact.updated";
|
|
41
|
+
WebhookTriggers["ContactDeleted"] = "contact.deleted";
|
|
42
|
+
// Scheduler triggers
|
|
43
|
+
WebhookTriggers["BookingCreated"] = "booking.created";
|
|
44
|
+
WebhookTriggers["BookingPending"] = "booking.pending";
|
|
45
|
+
WebhookTriggers["BookingRescheduled"] = "booking.rescheduled";
|
|
46
|
+
WebhookTriggers["BookingCancelled"] = "booking.cancelled";
|
|
47
|
+
WebhookTriggers["BookingReminder"] = "booking.reminder";
|
|
21
48
|
})(WebhookTriggers = exports.WebhookTriggers || (exports.WebhookTriggers = {}));
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Auth = void 0;
|
|
4
4
|
const uuid_1 = require("uuid");
|
|
5
|
-
const
|
|
5
|
+
const crypto_1 = require("crypto");
|
|
6
6
|
const resource_js_1 = require("./resource.js");
|
|
7
7
|
/**
|
|
8
8
|
* A collection of authentication related API endpoints
|
|
@@ -165,7 +165,7 @@ class Auth extends resource_js_1.Resource {
|
|
|
165
165
|
return url;
|
|
166
166
|
}
|
|
167
167
|
hashPKCESecret(secret) {
|
|
168
|
-
const hash = (0,
|
|
168
|
+
const hash = (0, crypto_1.createHash)('sha256')
|
|
169
169
|
.update(secret)
|
|
170
170
|
.digest('hex');
|
|
171
171
|
return Buffer.from(hash)
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Messages = void 0;
|
|
4
4
|
const resource_js_1 = require("./resource.js");
|
|
5
|
-
const FormData = require("form-data");
|
|
6
5
|
const utils_js_1 = require("../utils.js");
|
|
7
6
|
const smartCompose_js_1 = require("./smartCompose.js");
|
|
8
7
|
/**
|
|
@@ -133,14 +132,10 @@ class Messages extends resource_js_1.Resource {
|
|
|
133
132
|
});
|
|
134
133
|
}
|
|
135
134
|
static _buildFormRequest(requestBody) {
|
|
136
|
-
let form;
|
|
137
135
|
// FormData imports are funky, cjs needs to use .default, es6 doesn't
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
else {
|
|
142
|
-
form = new FormData();
|
|
143
|
-
}
|
|
136
|
+
const FD = require('form-data');
|
|
137
|
+
const FormDataConstructor = FD.default || FD;
|
|
138
|
+
const form = new FormDataConstructor();
|
|
144
139
|
// Split out the message payload from the attachments
|
|
145
140
|
const messagePayload = {
|
|
146
141
|
...requestBody,
|
|
@@ -65,7 +65,7 @@ class Webhooks extends resource_js_1.Resource {
|
|
|
65
65
|
* @returns The updated webhook destination with the webhook secret
|
|
66
66
|
*/
|
|
67
67
|
rotateSecret({ webhookId, overrides, }) {
|
|
68
|
-
return super.
|
|
68
|
+
return super._create({
|
|
69
69
|
path: `/v3/webhooks/${webhookId}/rotate-secret`,
|
|
70
70
|
requestBody: {},
|
|
71
71
|
overrides,
|
package/lib/cjs/version.js
CHANGED
package/lib/esm/apiClient.js
CHANGED
|
@@ -110,7 +110,8 @@ export default class APIClient {
|
|
|
110
110
|
requestOptions.headers = this.setRequestHeaders(optionParams);
|
|
111
111
|
requestOptions.method = optionParams.method;
|
|
112
112
|
if (optionParams.body) {
|
|
113
|
-
requestOptions.body = JSON.stringify(objKeysToSnakeCase(optionParams.body)
|
|
113
|
+
requestOptions.body = JSON.stringify(objKeysToSnakeCase(optionParams.body, ['metadata']) // metadata should remain as is
|
|
114
|
+
);
|
|
114
115
|
requestOptions.headers['Content-Type'] = 'application/json';
|
|
115
116
|
}
|
|
116
117
|
if (optionParams.form) {
|
|
@@ -134,7 +135,7 @@ export default class APIClient {
|
|
|
134
135
|
const text = await response.text();
|
|
135
136
|
try {
|
|
136
137
|
const responseJSON = JSON.parse(text);
|
|
137
|
-
return objKeysToCamelCase(responseJSON);
|
|
138
|
+
return objKeysToCamelCase(responseJSON, ['metadata']);
|
|
138
139
|
}
|
|
139
140
|
catch (e) {
|
|
140
141
|
throw new Error(`Could not parse response from the server: ${text}`);
|
|
@@ -3,16 +3,43 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export var WebhookTriggers;
|
|
5
5
|
(function (WebhookTriggers) {
|
|
6
|
+
// Calendar triggers
|
|
6
7
|
WebhookTriggers["CalendarCreated"] = "calendar.created";
|
|
7
8
|
WebhookTriggers["CalendarUpdated"] = "calendar.updated";
|
|
8
9
|
WebhookTriggers["CalendarDeleted"] = "calendar.deleted";
|
|
10
|
+
// Event triggers
|
|
9
11
|
WebhookTriggers["EventCreated"] = "event.created";
|
|
10
12
|
WebhookTriggers["EventUpdated"] = "event.updated";
|
|
11
13
|
WebhookTriggers["EventDeleted"] = "event.deleted";
|
|
14
|
+
// Grant triggers
|
|
12
15
|
WebhookTriggers["GrantCreated"] = "grant.created";
|
|
13
16
|
WebhookTriggers["GrantUpdated"] = "grant.updated";
|
|
14
17
|
WebhookTriggers["GrantDeleted"] = "grant.deleted";
|
|
15
18
|
WebhookTriggers["GrantExpired"] = "grant.expired";
|
|
19
|
+
// Message triggers
|
|
20
|
+
WebhookTriggers["MessageCreated"] = "message.created";
|
|
21
|
+
WebhookTriggers["MessageUpdated"] = "message.updated";
|
|
16
22
|
WebhookTriggers["MessageSendSuccess"] = "message.send_success";
|
|
17
23
|
WebhookTriggers["MessageSendFailed"] = "message.send_failed";
|
|
24
|
+
WebhookTriggers["MessageBounceDetected"] = "message.bounce_detected";
|
|
25
|
+
// Message tracking triggers
|
|
26
|
+
WebhookTriggers["MessageOpened"] = "message.opened";
|
|
27
|
+
WebhookTriggers["MessageLinkClicked"] = "message.link_clicked";
|
|
28
|
+
WebhookTriggers["ThreadReplied"] = "thread.replied";
|
|
29
|
+
// ExtractAI triggers
|
|
30
|
+
WebhookTriggers["MessageIntelligenceOrder"] = "message.intelligence.order";
|
|
31
|
+
WebhookTriggers["MessageIntelligenceTracking"] = "message.intelligence.tracking";
|
|
32
|
+
// Folder triggers
|
|
33
|
+
WebhookTriggers["FolderCreated"] = "folder.created";
|
|
34
|
+
WebhookTriggers["FolderUpdated"] = "folder.updated";
|
|
35
|
+
WebhookTriggers["FolderDeleted"] = "folder.deleted";
|
|
36
|
+
// Contact triggers
|
|
37
|
+
WebhookTriggers["ContactUpdated"] = "contact.updated";
|
|
38
|
+
WebhookTriggers["ContactDeleted"] = "contact.deleted";
|
|
39
|
+
// Scheduler triggers
|
|
40
|
+
WebhookTriggers["BookingCreated"] = "booking.created";
|
|
41
|
+
WebhookTriggers["BookingPending"] = "booking.pending";
|
|
42
|
+
WebhookTriggers["BookingRescheduled"] = "booking.rescheduled";
|
|
43
|
+
WebhookTriggers["BookingCancelled"] = "booking.cancelled";
|
|
44
|
+
WebhookTriggers["BookingReminder"] = "booking.reminder";
|
|
18
45
|
})(WebhookTriggers || (WebhookTriggers = {}));
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Resource } from './resource.js';
|
|
2
|
-
import * as FormData from 'form-data';
|
|
3
2
|
import { encodeAttachmentStreams, objKeysToSnakeCase } from '../utils.js';
|
|
4
3
|
import { SmartCompose } from './smartCompose.js';
|
|
5
4
|
/**
|
|
@@ -130,14 +129,10 @@ export class Messages extends Resource {
|
|
|
130
129
|
});
|
|
131
130
|
}
|
|
132
131
|
static _buildFormRequest(requestBody) {
|
|
133
|
-
let form;
|
|
134
132
|
// FormData imports are funky, cjs needs to use .default, es6 doesn't
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
else {
|
|
139
|
-
form = new FormData();
|
|
140
|
-
}
|
|
133
|
+
const FD = require('form-data');
|
|
134
|
+
const FormDataConstructor = FD.default || FD;
|
|
135
|
+
const form = new FormDataConstructor();
|
|
141
136
|
// Split out the message payload from the attachments
|
|
142
137
|
const messagePayload = {
|
|
143
138
|
...requestBody,
|
|
@@ -62,7 +62,7 @@ export class Webhooks extends Resource {
|
|
|
62
62
|
* @returns The updated webhook destination with the webhook secret
|
|
63
63
|
*/
|
|
64
64
|
rotateSecret({ webhookId, overrides, }) {
|
|
65
|
-
return super.
|
|
65
|
+
return super._create({
|
|
66
66
|
path: `/v3/webhooks/${webhookId}/rotate-secret`,
|
|
67
67
|
requestBody: {},
|
|
68
68
|
overrides,
|
package/lib/esm/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// This file is generated by scripts/exportVersion.js
|
|
2
|
-
export const SDK_VERSION = '7.
|
|
2
|
+
export const SDK_VERSION = '7.6.0';
|
package/lib/types/apiClient.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// <reference types="node" />
|
|
3
3
|
import { Request, Response } from 'node-fetch';
|
|
4
4
|
import { NylasConfig, OverridableNylasConfig } from './config.js';
|
|
5
|
-
import
|
|
5
|
+
import FormData from 'form-data';
|
|
6
6
|
/**
|
|
7
7
|
* Options for a request to the Nylas API
|
|
8
8
|
* @property path The path to the API endpoint
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
2
3
|
/**
|
|
3
4
|
* Interface of an attachment object from Nylas.
|
|
4
5
|
*/
|
|
@@ -34,9 +35,11 @@ interface BaseAttachment {
|
|
|
34
35
|
export interface CreateAttachmentRequest extends BaseAttachment {
|
|
35
36
|
/**
|
|
36
37
|
* Content of the attachment.
|
|
37
|
-
* It can either be a readable stream
|
|
38
|
+
* It can either be a readable stream, a base64 encoded string, or a buffer.
|
|
39
|
+
* For attachments less than 3MB, the content can be a readable stream, or a base64 encoded string.
|
|
40
|
+
* For attachments greater than 3MB, the content must be either a readable stream or a buffer.
|
|
38
41
|
*/
|
|
39
|
-
content: NodeJS.ReadableStream | string;
|
|
42
|
+
content: NodeJS.ReadableStream | string | Buffer;
|
|
40
43
|
}
|
|
41
44
|
/**
|
|
42
45
|
* Interface of an attachment object from Nylas.
|
|
@@ -5,7 +5,7 @@ type AccessType = 'online' | 'offline';
|
|
|
5
5
|
/**
|
|
6
6
|
* Type for the different OAuth providers Nylas supports.
|
|
7
7
|
*/
|
|
8
|
-
export type Provider = 'google' | 'imap' | 'microsoft' | 'icloud' | 'virtual-calendar';
|
|
8
|
+
export type Provider = 'google' | 'imap' | 'microsoft' | 'icloud' | 'virtual-calendar' | 'ews';
|
|
9
9
|
/**
|
|
10
10
|
* Configuration for generating a URL for OAuth 2.0 authentication.
|
|
11
11
|
*/
|
|
@@ -273,6 +273,11 @@ export interface ListEventQueryParams extends ListQueryParams {
|
|
|
273
273
|
* You can pass the query parameter multiple times to select or exclude multiple event types.
|
|
274
274
|
*/
|
|
275
275
|
eventType?: EventType[];
|
|
276
|
+
/**
|
|
277
|
+
* Filter for events that include the specified attendees.
|
|
278
|
+
* Not supported for virtual calendars.
|
|
279
|
+
*/
|
|
280
|
+
attendees?: string[];
|
|
276
281
|
}
|
|
277
282
|
/**
|
|
278
283
|
* Interface representing of the query parameters for creating an event.
|
|
@@ -118,8 +118,26 @@ export declare enum WebhookTriggers {
|
|
|
118
118
|
GrantUpdated = "grant.updated",
|
|
119
119
|
GrantDeleted = "grant.deleted",
|
|
120
120
|
GrantExpired = "grant.expired",
|
|
121
|
+
MessageCreated = "message.created",
|
|
122
|
+
MessageUpdated = "message.updated",
|
|
121
123
|
MessageSendSuccess = "message.send_success",
|
|
122
|
-
MessageSendFailed = "message.send_failed"
|
|
124
|
+
MessageSendFailed = "message.send_failed",
|
|
125
|
+
MessageBounceDetected = "message.bounce_detected",
|
|
126
|
+
MessageOpened = "message.opened",
|
|
127
|
+
MessageLinkClicked = "message.link_clicked",
|
|
128
|
+
ThreadReplied = "thread.replied",
|
|
129
|
+
MessageIntelligenceOrder = "message.intelligence.order",
|
|
130
|
+
MessageIntelligenceTracking = "message.intelligence.tracking",
|
|
131
|
+
FolderCreated = "folder.created",
|
|
132
|
+
FolderUpdated = "folder.updated",
|
|
133
|
+
FolderDeleted = "folder.deleted",
|
|
134
|
+
ContactUpdated = "contact.updated",
|
|
135
|
+
ContactDeleted = "contact.deleted",
|
|
136
|
+
BookingCreated = "booking.created",
|
|
137
|
+
BookingPending = "booking.pending",
|
|
138
|
+
BookingRescheduled = "booking.rescheduled",
|
|
139
|
+
BookingCancelled = "booking.cancelled",
|
|
140
|
+
BookingReminder = "booking.reminder"
|
|
123
141
|
}
|
|
124
142
|
/**
|
|
125
143
|
* Enum representing the available webhook statuses.
|
|
@@ -3,7 +3,7 @@ import { CleanMessagesRequest, CleanMessagesResponse, FindMessageQueryParams, Li
|
|
|
3
3
|
import { Overrides } from '../config.js';
|
|
4
4
|
import { NylasBaseResponse, NylasListResponse, NylasResponse } from '../models/response.js';
|
|
5
5
|
import { CreateDraftRequest, SendMessageRequest, UpdateDraftRequest } from '../models/drafts.js';
|
|
6
|
-
import
|
|
6
|
+
import FormData from 'form-data';
|
|
7
7
|
import { SmartCompose } from './smartCompose.js';
|
|
8
8
|
import APIClient from '../apiClient.js';
|
|
9
9
|
/**
|
package/lib/types/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "7.
|
|
1
|
+
export declare const SDK_VERSION = "7.6.0";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nylas",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.6.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",
|
|
@@ -40,7 +40,6 @@
|
|
|
40
40
|
"license": "MIT",
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"change-case": "^4.1.2",
|
|
43
|
-
"eslint-plugin-import": "^2.28.1",
|
|
44
43
|
"form-data": "^4.0.0",
|
|
45
44
|
"mime-types": "^2.1.35",
|
|
46
45
|
"node-fetch": "^2.6.12",
|