shipmail 0.3.0 → 0.4.2
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 +61 -0
- package/dist/api-key-scopes.cjs +86 -0
- package/dist/api-key-scopes.cjs.map +1 -0
- package/dist/api-key-scopes.d.cts +7 -0
- package/dist/api-key-scopes.d.ts +7 -0
- package/dist/api-key-scopes.js +81 -0
- package/dist/api-key-scopes.js.map +1 -0
- package/dist/index.cjs +152 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +137 -1
- package/dist/index.d.ts +137 -1
- package/dist/index.js +149 -2
- package/dist/index.js.map +1 -1
- package/package.json +18 -1
package/README.md
CHANGED
|
@@ -18,6 +18,7 @@ Official TypeScript SDK for the [Shipmail](https://shipmail.to) API. Zero runtim
|
|
|
18
18
|
- [Domains](#domains)
|
|
19
19
|
- [Mailboxes](#mailboxes)
|
|
20
20
|
- [Messages](#messages)
|
|
21
|
+
- [Scheduled messages and attachments](#scheduled-messages-and-attachments)
|
|
21
22
|
- [Sandbox](#sandbox)
|
|
22
23
|
- [Threads](#threads)
|
|
23
24
|
- [Reply scans](#reply-scans)
|
|
@@ -212,6 +213,66 @@ await shipmail.messages.reply("msg_...", {
|
|
|
212
213
|
});
|
|
213
214
|
```
|
|
214
215
|
|
|
216
|
+
## Scheduled messages and attachments
|
|
217
|
+
|
|
218
|
+
Stage raw files up to 25 MB, then reference their opaque IDs from send or scheduled-update calls.
|
|
219
|
+
The older base64 `attachments` field still works, but staged IDs avoid putting file bytes in JSON.
|
|
220
|
+
|
|
221
|
+
```ts
|
|
222
|
+
const bytes = await Bun.file("./invoice.pdf").arrayBuffer();
|
|
223
|
+
const attachment = await shipmail.mailboxes.stageAttachment("mbx_...", {
|
|
224
|
+
filename: "invoice.pdf",
|
|
225
|
+
content_type: "application/pdf",
|
|
226
|
+
data: bytes,
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
const scheduled = await shipmail.messages.send({
|
|
230
|
+
mailbox_id: "mbx_...",
|
|
231
|
+
to: ["customer@example.com"],
|
|
232
|
+
subject: "Invoice",
|
|
233
|
+
text: "Attached.",
|
|
234
|
+
staged_attachment_ids: [attachment.id],
|
|
235
|
+
scheduled_at: "2026-08-01T08:00:00.000Z",
|
|
236
|
+
});
|
|
237
|
+
|
|
238
|
+
const pending = await shipmail.scheduledMessages.list();
|
|
239
|
+
const detail = await shipmail.scheduledMessages.get(scheduled.id);
|
|
240
|
+
await shipmail.scheduledMessages.update(scheduled.id, {
|
|
241
|
+
to: detail.to,
|
|
242
|
+
subject: detail.subject,
|
|
243
|
+
text: detail.text ?? "",
|
|
244
|
+
staged_attachment_ids: [attachment.id],
|
|
245
|
+
scheduled_at: "2026-08-02T08:00:00.000Z",
|
|
246
|
+
});
|
|
247
|
+
await shipmail.scheduledMessages.cancel(scheduled.id);
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
Staged IDs expire after 24 hours and are bound to the API key, organization, mailbox, and file
|
|
251
|
+
metadata that created them.
|
|
252
|
+
|
|
253
|
+
For browser-hosted components that must keep the ShipMail API key off the page, prepare a
|
|
254
|
+
five-minute, single-use upload URL:
|
|
255
|
+
|
|
256
|
+
```ts
|
|
257
|
+
const prepared = await shipmail.mailboxes.prepareStagedAttachmentUpload("mbx_...", {
|
|
258
|
+
filename: "invoice.pdf",
|
|
259
|
+
content_type: "application/pdf",
|
|
260
|
+
size: bytes.byteLength,
|
|
261
|
+
sha256: "<lowercase SHA-256 of the exact bytes>",
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
await fetch(prepared.upload_url, {
|
|
265
|
+
method: "POST",
|
|
266
|
+
body: bytes,
|
|
267
|
+
headers: { "Content-Type": prepared.content_type },
|
|
268
|
+
credentials: "omit",
|
|
269
|
+
redirect: "error",
|
|
270
|
+
});
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
The upload succeeds only when filename, MIME type, byte size, and digest match the preparation
|
|
274
|
+
request. The returned upload URL is a secret and cannot be replayed after a successful upload.
|
|
275
|
+
|
|
215
276
|
## Sandbox
|
|
216
277
|
|
|
217
278
|
Create a test API key (`sm_test_...`) to simulate email without contacting real recipients. Test messages, threads, Assistant automations, webhooks, quota, suppressions, and reputation are isolated from live mode.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/api-key-scopes.ts
|
|
4
|
+
var API_KEY_SCOPES = [
|
|
5
|
+
"*",
|
|
6
|
+
"audiences:read",
|
|
7
|
+
"audiences:write",
|
|
8
|
+
"booking_pages:read",
|
|
9
|
+
"booking_pages:write",
|
|
10
|
+
"calendar:read",
|
|
11
|
+
"calendar:write",
|
|
12
|
+
"domains:read",
|
|
13
|
+
"domains:write",
|
|
14
|
+
"mailboxes:read",
|
|
15
|
+
"mailboxes:export",
|
|
16
|
+
"mailboxes:write",
|
|
17
|
+
"mailbox_credentials:read",
|
|
18
|
+
"mailbox_credentials:write",
|
|
19
|
+
"mailbox_forwarding:read",
|
|
20
|
+
"mailbox_forwarding:write",
|
|
21
|
+
"messages:read",
|
|
22
|
+
"messages:write",
|
|
23
|
+
"drafts:write",
|
|
24
|
+
"messages:send",
|
|
25
|
+
"newsletters:read",
|
|
26
|
+
"newsletters:write",
|
|
27
|
+
"threads:read",
|
|
28
|
+
"webhooks:read",
|
|
29
|
+
"webhooks:write",
|
|
30
|
+
"suppressions:read",
|
|
31
|
+
"suppressions:write",
|
|
32
|
+
"partner:organizations:read",
|
|
33
|
+
"partner:organizations:write",
|
|
34
|
+
"partner:organizations:access",
|
|
35
|
+
"partner:mailbox_credentials:issue",
|
|
36
|
+
"partner:usage:read"
|
|
37
|
+
];
|
|
38
|
+
var API_KEY_SCOPE_DESCRIPTIONS = {
|
|
39
|
+
"*": "All non-partner API endpoints in this organization.",
|
|
40
|
+
"audiences:read": "List and retrieve newsletter audiences and their subscribers.",
|
|
41
|
+
"audiences:write": "Create audiences and add, update, or remove their subscribers.",
|
|
42
|
+
"booking_pages:read": "List and retrieve booking pages.",
|
|
43
|
+
"booking_pages:write": "Create, update, and delete booking pages.",
|
|
44
|
+
"calendar:read": "List and retrieve calendar events and open availability.",
|
|
45
|
+
"calendar:write": "Create, update, and delete calendar events.",
|
|
46
|
+
"domains:read": "List, retrieve, and verify domains.",
|
|
47
|
+
"domains:write": "Create, update, and delete domains.",
|
|
48
|
+
"mailboxes:read": "List and retrieve mailboxes.",
|
|
49
|
+
"mailboxes:export": "Create and download mailbox content exports.",
|
|
50
|
+
"mailboxes:write": "Create, update, suspend, resume, and delete mailboxes.",
|
|
51
|
+
"mailbox_credentials:read": "List revocable app passwords for allowed mailboxes.",
|
|
52
|
+
"mailbox_credentials:write": "Create and revoke app passwords for allowed mailboxes.",
|
|
53
|
+
"mailbox_forwarding:read": "List forwarding destinations for allowed mailboxes.",
|
|
54
|
+
"mailbox_forwarding:write": "Create and remove forwarding destinations for allowed mailboxes.",
|
|
55
|
+
"messages:read": "List and retrieve messages.",
|
|
56
|
+
"messages:write": "Update, move, delete, and inject sandbox messages.",
|
|
57
|
+
"drafts:write": "Create agent-safe reply drafts with server-derived recipients.",
|
|
58
|
+
"messages:send": "Send messages, replies, and approved reply drafts.",
|
|
59
|
+
"newsletters:read": "List and retrieve newsletter drafts and campaigns.",
|
|
60
|
+
"newsletters:write": "Create, update, test, schedule, cancel, and resume newsletters.",
|
|
61
|
+
"threads:read": "List threads and retrieve thread messages.",
|
|
62
|
+
"webhooks:read": "List webhooks, retrieve webhooks, and list deliveries.",
|
|
63
|
+
"webhooks:write": "Create, update, delete, test, and rotate webhooks.",
|
|
64
|
+
"suppressions:read": "List suppressed recipient addresses.",
|
|
65
|
+
"suppressions:write": "Remove addresses from the suppression list.",
|
|
66
|
+
"partner:organizations:read": "List and retrieve this partner's child organizations.",
|
|
67
|
+
"partner:organizations:write": "Create and manage this partner's child organizations.",
|
|
68
|
+
"partner:organizations:access": "Act on an active child using the delegated organization header.",
|
|
69
|
+
"partner:mailbox_credentials:issue": "List and consume operator-approved grants for embedded-webmail credentials.",
|
|
70
|
+
"partner:usage:read": "Read consolidated child and mailbox usage for this partner."
|
|
71
|
+
};
|
|
72
|
+
function isApiKeyScope(value) {
|
|
73
|
+
return API_KEY_SCOPES.some((scope) => scope === value);
|
|
74
|
+
}
|
|
75
|
+
function apiKeyScopesGrant(grantedScopes, requiredScope) {
|
|
76
|
+
if (requiredScope === "public") return true;
|
|
77
|
+
if (requiredScope.startsWith("partner:")) return grantedScopes.includes(requiredScope);
|
|
78
|
+
return grantedScopes.includes("*") || grantedScopes.includes(requiredScope);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
exports.API_KEY_SCOPES = API_KEY_SCOPES;
|
|
82
|
+
exports.API_KEY_SCOPE_DESCRIPTIONS = API_KEY_SCOPE_DESCRIPTIONS;
|
|
83
|
+
exports.apiKeyScopesGrant = apiKeyScopesGrant;
|
|
84
|
+
exports.isApiKeyScope = isApiKeyScope;
|
|
85
|
+
//# sourceMappingURL=api-key-scopes.cjs.map
|
|
86
|
+
//# sourceMappingURL=api-key-scopes.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/api-key-scopes.ts"],"names":[],"mappings":";;;AAAO,IAAM,cAAA,GAAiB;AAAA,EAC5B,GAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,qBAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,kBAAA;AAAA,EACA,iBAAA;AAAA,EACA,0BAAA;AAAA,EACA,2BAAA;AAAA,EACA,yBAAA;AAAA,EACA,0BAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,4BAAA;AAAA,EACA,6BAAA;AAAA,EACA,8BAAA;AAAA,EACA,mCAAA;AAAA,EACA;AACF;AAIO,IAAM,0BAAA,GAAoE;AAAA,EAC/E,GAAA,EAAK,qDAAA;AAAA,EACL,gBAAA,EAAkB,+DAAA;AAAA,EAClB,iBAAA,EAAmB,gEAAA;AAAA,EACnB,oBAAA,EAAsB,kCAAA;AAAA,EACtB,qBAAA,EAAuB,2CAAA;AAAA,EACvB,eAAA,EAAiB,0DAAA;AAAA,EACjB,gBAAA,EAAkB,6CAAA;AAAA,EAClB,cAAA,EAAgB,qCAAA;AAAA,EAChB,eAAA,EAAiB,qCAAA;AAAA,EACjB,gBAAA,EAAkB,8BAAA;AAAA,EAClB,kBAAA,EAAoB,8CAAA;AAAA,EACpB,iBAAA,EAAmB,wDAAA;AAAA,EACnB,0BAAA,EAA4B,qDAAA;AAAA,EAC5B,2BAAA,EAA6B,wDAAA;AAAA,EAC7B,yBAAA,EAA2B,qDAAA;AAAA,EAC3B,0BAAA,EAA4B,kEAAA;AAAA,EAC5B,eAAA,EAAiB,6BAAA;AAAA,EACjB,gBAAA,EAAkB,oDAAA;AAAA,EAClB,cAAA,EAAgB,gEAAA;AAAA,EAChB,eAAA,EAAiB,oDAAA;AAAA,EACjB,kBAAA,EAAoB,oDAAA;AAAA,EACpB,mBAAA,EAAqB,iEAAA;AAAA,EACrB,cAAA,EAAgB,4CAAA;AAAA,EAChB,eAAA,EAAiB,wDAAA;AAAA,EACjB,gBAAA,EAAkB,oDAAA;AAAA,EAClB,mBAAA,EAAqB,sCAAA;AAAA,EACrB,oBAAA,EAAsB,6CAAA;AAAA,EACtB,4BAAA,EAA8B,uDAAA;AAAA,EAC9B,6BAAA,EAA+B,uDAAA;AAAA,EAC/B,8BAAA,EAAgC,iEAAA;AAAA,EAChC,mCAAA,EACE,6EAAA;AAAA,EACF,oBAAA,EAAsB;AACxB;AAEO,SAAS,cAAc,KAAA,EAAqC;AACjE,EAAA,OAAO,cAAA,CAAe,IAAA,CAAK,CAAC,KAAA,KAAU,UAAU,KAAK,CAAA;AACvD;AAEO,SAAS,iBAAA,CACd,eACA,aAAA,EACS;AACT,EAAA,IAAI,aAAA,KAAkB,UAAU,OAAO,IAAA;AACvC,EAAA,IAAI,cAAc,UAAA,CAAW,UAAU,GAAG,OAAO,aAAA,CAAc,SAAS,aAAa,CAAA;AACrF,EAAA,OAAO,cAAc,QAAA,CAAS,GAAG,CAAA,IAAK,aAAA,CAAc,SAAS,aAAa,CAAA;AAC5E","file":"api-key-scopes.cjs","sourcesContent":["export const API_KEY_SCOPES = [\n \"*\",\n \"audiences:read\",\n \"audiences:write\",\n \"booking_pages:read\",\n \"booking_pages:write\",\n \"calendar:read\",\n \"calendar:write\",\n \"domains:read\",\n \"domains:write\",\n \"mailboxes:read\",\n \"mailboxes:export\",\n \"mailboxes:write\",\n \"mailbox_credentials:read\",\n \"mailbox_credentials:write\",\n \"mailbox_forwarding:read\",\n \"mailbox_forwarding:write\",\n \"messages:read\",\n \"messages:write\",\n \"drafts:write\",\n \"messages:send\",\n \"newsletters:read\",\n \"newsletters:write\",\n \"threads:read\",\n \"webhooks:read\",\n \"webhooks:write\",\n \"suppressions:read\",\n \"suppressions:write\",\n \"partner:organizations:read\",\n \"partner:organizations:write\",\n \"partner:organizations:access\",\n \"partner:mailbox_credentials:issue\",\n \"partner:usage:read\",\n] as const;\n\nexport type ApiKeyScope = (typeof API_KEY_SCOPES)[number];\n\nexport const API_KEY_SCOPE_DESCRIPTIONS: Readonly<Record<ApiKeyScope, string>> = {\n \"*\": \"All non-partner API endpoints in this organization.\",\n \"audiences:read\": \"List and retrieve newsletter audiences and their subscribers.\",\n \"audiences:write\": \"Create audiences and add, update, or remove their subscribers.\",\n \"booking_pages:read\": \"List and retrieve booking pages.\",\n \"booking_pages:write\": \"Create, update, and delete booking pages.\",\n \"calendar:read\": \"List and retrieve calendar events and open availability.\",\n \"calendar:write\": \"Create, update, and delete calendar events.\",\n \"domains:read\": \"List, retrieve, and verify domains.\",\n \"domains:write\": \"Create, update, and delete domains.\",\n \"mailboxes:read\": \"List and retrieve mailboxes.\",\n \"mailboxes:export\": \"Create and download mailbox content exports.\",\n \"mailboxes:write\": \"Create, update, suspend, resume, and delete mailboxes.\",\n \"mailbox_credentials:read\": \"List revocable app passwords for allowed mailboxes.\",\n \"mailbox_credentials:write\": \"Create and revoke app passwords for allowed mailboxes.\",\n \"mailbox_forwarding:read\": \"List forwarding destinations for allowed mailboxes.\",\n \"mailbox_forwarding:write\": \"Create and remove forwarding destinations for allowed mailboxes.\",\n \"messages:read\": \"List and retrieve messages.\",\n \"messages:write\": \"Update, move, delete, and inject sandbox messages.\",\n \"drafts:write\": \"Create agent-safe reply drafts with server-derived recipients.\",\n \"messages:send\": \"Send messages, replies, and approved reply drafts.\",\n \"newsletters:read\": \"List and retrieve newsletter drafts and campaigns.\",\n \"newsletters:write\": \"Create, update, test, schedule, cancel, and resume newsletters.\",\n \"threads:read\": \"List threads and retrieve thread messages.\",\n \"webhooks:read\": \"List webhooks, retrieve webhooks, and list deliveries.\",\n \"webhooks:write\": \"Create, update, delete, test, and rotate webhooks.\",\n \"suppressions:read\": \"List suppressed recipient addresses.\",\n \"suppressions:write\": \"Remove addresses from the suppression list.\",\n \"partner:organizations:read\": \"List and retrieve this partner's child organizations.\",\n \"partner:organizations:write\": \"Create and manage this partner's child organizations.\",\n \"partner:organizations:access\": \"Act on an active child using the delegated organization header.\",\n \"partner:mailbox_credentials:issue\":\n \"List and consume operator-approved grants for embedded-webmail credentials.\",\n \"partner:usage:read\": \"Read consolidated child and mailbox usage for this partner.\",\n};\n\nexport function isApiKeyScope(value: string): value is ApiKeyScope {\n return API_KEY_SCOPES.some((scope) => scope === value);\n}\n\nexport function apiKeyScopesGrant(\n grantedScopes: readonly string[],\n requiredScope: ApiKeyScope | \"public\",\n): boolean {\n if (requiredScope === \"public\") return true;\n if (requiredScope.startsWith(\"partner:\")) return grantedScopes.includes(requiredScope);\n return grantedScopes.includes(\"*\") || grantedScopes.includes(requiredScope);\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
declare const API_KEY_SCOPES: readonly ["*", "audiences:read", "audiences:write", "booking_pages:read", "booking_pages:write", "calendar:read", "calendar:write", "domains:read", "domains:write", "mailboxes:read", "mailboxes:export", "mailboxes:write", "mailbox_credentials:read", "mailbox_credentials:write", "mailbox_forwarding:read", "mailbox_forwarding:write", "messages:read", "messages:write", "drafts:write", "messages:send", "newsletters:read", "newsletters:write", "threads:read", "webhooks:read", "webhooks:write", "suppressions:read", "suppressions:write", "partner:organizations:read", "partner:organizations:write", "partner:organizations:access", "partner:mailbox_credentials:issue", "partner:usage:read"];
|
|
2
|
+
type ApiKeyScope = (typeof API_KEY_SCOPES)[number];
|
|
3
|
+
declare const API_KEY_SCOPE_DESCRIPTIONS: Readonly<Record<ApiKeyScope, string>>;
|
|
4
|
+
declare function isApiKeyScope(value: string): value is ApiKeyScope;
|
|
5
|
+
declare function apiKeyScopesGrant(grantedScopes: readonly string[], requiredScope: ApiKeyScope | "public"): boolean;
|
|
6
|
+
|
|
7
|
+
export { API_KEY_SCOPES, API_KEY_SCOPE_DESCRIPTIONS, type ApiKeyScope, apiKeyScopesGrant, isApiKeyScope };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
declare const API_KEY_SCOPES: readonly ["*", "audiences:read", "audiences:write", "booking_pages:read", "booking_pages:write", "calendar:read", "calendar:write", "domains:read", "domains:write", "mailboxes:read", "mailboxes:export", "mailboxes:write", "mailbox_credentials:read", "mailbox_credentials:write", "mailbox_forwarding:read", "mailbox_forwarding:write", "messages:read", "messages:write", "drafts:write", "messages:send", "newsletters:read", "newsletters:write", "threads:read", "webhooks:read", "webhooks:write", "suppressions:read", "suppressions:write", "partner:organizations:read", "partner:organizations:write", "partner:organizations:access", "partner:mailbox_credentials:issue", "partner:usage:read"];
|
|
2
|
+
type ApiKeyScope = (typeof API_KEY_SCOPES)[number];
|
|
3
|
+
declare const API_KEY_SCOPE_DESCRIPTIONS: Readonly<Record<ApiKeyScope, string>>;
|
|
4
|
+
declare function isApiKeyScope(value: string): value is ApiKeyScope;
|
|
5
|
+
declare function apiKeyScopesGrant(grantedScopes: readonly string[], requiredScope: ApiKeyScope | "public"): boolean;
|
|
6
|
+
|
|
7
|
+
export { API_KEY_SCOPES, API_KEY_SCOPE_DESCRIPTIONS, type ApiKeyScope, apiKeyScopesGrant, isApiKeyScope };
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// src/api-key-scopes.ts
|
|
2
|
+
var API_KEY_SCOPES = [
|
|
3
|
+
"*",
|
|
4
|
+
"audiences:read",
|
|
5
|
+
"audiences:write",
|
|
6
|
+
"booking_pages:read",
|
|
7
|
+
"booking_pages:write",
|
|
8
|
+
"calendar:read",
|
|
9
|
+
"calendar:write",
|
|
10
|
+
"domains:read",
|
|
11
|
+
"domains:write",
|
|
12
|
+
"mailboxes:read",
|
|
13
|
+
"mailboxes:export",
|
|
14
|
+
"mailboxes:write",
|
|
15
|
+
"mailbox_credentials:read",
|
|
16
|
+
"mailbox_credentials:write",
|
|
17
|
+
"mailbox_forwarding:read",
|
|
18
|
+
"mailbox_forwarding:write",
|
|
19
|
+
"messages:read",
|
|
20
|
+
"messages:write",
|
|
21
|
+
"drafts:write",
|
|
22
|
+
"messages:send",
|
|
23
|
+
"newsletters:read",
|
|
24
|
+
"newsletters:write",
|
|
25
|
+
"threads:read",
|
|
26
|
+
"webhooks:read",
|
|
27
|
+
"webhooks:write",
|
|
28
|
+
"suppressions:read",
|
|
29
|
+
"suppressions:write",
|
|
30
|
+
"partner:organizations:read",
|
|
31
|
+
"partner:organizations:write",
|
|
32
|
+
"partner:organizations:access",
|
|
33
|
+
"partner:mailbox_credentials:issue",
|
|
34
|
+
"partner:usage:read"
|
|
35
|
+
];
|
|
36
|
+
var API_KEY_SCOPE_DESCRIPTIONS = {
|
|
37
|
+
"*": "All non-partner API endpoints in this organization.",
|
|
38
|
+
"audiences:read": "List and retrieve newsletter audiences and their subscribers.",
|
|
39
|
+
"audiences:write": "Create audiences and add, update, or remove their subscribers.",
|
|
40
|
+
"booking_pages:read": "List and retrieve booking pages.",
|
|
41
|
+
"booking_pages:write": "Create, update, and delete booking pages.",
|
|
42
|
+
"calendar:read": "List and retrieve calendar events and open availability.",
|
|
43
|
+
"calendar:write": "Create, update, and delete calendar events.",
|
|
44
|
+
"domains:read": "List, retrieve, and verify domains.",
|
|
45
|
+
"domains:write": "Create, update, and delete domains.",
|
|
46
|
+
"mailboxes:read": "List and retrieve mailboxes.",
|
|
47
|
+
"mailboxes:export": "Create and download mailbox content exports.",
|
|
48
|
+
"mailboxes:write": "Create, update, suspend, resume, and delete mailboxes.",
|
|
49
|
+
"mailbox_credentials:read": "List revocable app passwords for allowed mailboxes.",
|
|
50
|
+
"mailbox_credentials:write": "Create and revoke app passwords for allowed mailboxes.",
|
|
51
|
+
"mailbox_forwarding:read": "List forwarding destinations for allowed mailboxes.",
|
|
52
|
+
"mailbox_forwarding:write": "Create and remove forwarding destinations for allowed mailboxes.",
|
|
53
|
+
"messages:read": "List and retrieve messages.",
|
|
54
|
+
"messages:write": "Update, move, delete, and inject sandbox messages.",
|
|
55
|
+
"drafts:write": "Create agent-safe reply drafts with server-derived recipients.",
|
|
56
|
+
"messages:send": "Send messages, replies, and approved reply drafts.",
|
|
57
|
+
"newsletters:read": "List and retrieve newsletter drafts and campaigns.",
|
|
58
|
+
"newsletters:write": "Create, update, test, schedule, cancel, and resume newsletters.",
|
|
59
|
+
"threads:read": "List threads and retrieve thread messages.",
|
|
60
|
+
"webhooks:read": "List webhooks, retrieve webhooks, and list deliveries.",
|
|
61
|
+
"webhooks:write": "Create, update, delete, test, and rotate webhooks.",
|
|
62
|
+
"suppressions:read": "List suppressed recipient addresses.",
|
|
63
|
+
"suppressions:write": "Remove addresses from the suppression list.",
|
|
64
|
+
"partner:organizations:read": "List and retrieve this partner's child organizations.",
|
|
65
|
+
"partner:organizations:write": "Create and manage this partner's child organizations.",
|
|
66
|
+
"partner:organizations:access": "Act on an active child using the delegated organization header.",
|
|
67
|
+
"partner:mailbox_credentials:issue": "List and consume operator-approved grants for embedded-webmail credentials.",
|
|
68
|
+
"partner:usage:read": "Read consolidated child and mailbox usage for this partner."
|
|
69
|
+
};
|
|
70
|
+
function isApiKeyScope(value) {
|
|
71
|
+
return API_KEY_SCOPES.some((scope) => scope === value);
|
|
72
|
+
}
|
|
73
|
+
function apiKeyScopesGrant(grantedScopes, requiredScope) {
|
|
74
|
+
if (requiredScope === "public") return true;
|
|
75
|
+
if (requiredScope.startsWith("partner:")) return grantedScopes.includes(requiredScope);
|
|
76
|
+
return grantedScopes.includes("*") || grantedScopes.includes(requiredScope);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export { API_KEY_SCOPES, API_KEY_SCOPE_DESCRIPTIONS, apiKeyScopesGrant, isApiKeyScope };
|
|
80
|
+
//# sourceMappingURL=api-key-scopes.js.map
|
|
81
|
+
//# sourceMappingURL=api-key-scopes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/api-key-scopes.ts"],"names":[],"mappings":";AAAO,IAAM,cAAA,GAAiB;AAAA,EAC5B,GAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,qBAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,kBAAA;AAAA,EACA,iBAAA;AAAA,EACA,0BAAA;AAAA,EACA,2BAAA;AAAA,EACA,yBAAA;AAAA,EACA,0BAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,4BAAA;AAAA,EACA,6BAAA;AAAA,EACA,8BAAA;AAAA,EACA,mCAAA;AAAA,EACA;AACF;AAIO,IAAM,0BAAA,GAAoE;AAAA,EAC/E,GAAA,EAAK,qDAAA;AAAA,EACL,gBAAA,EAAkB,+DAAA;AAAA,EAClB,iBAAA,EAAmB,gEAAA;AAAA,EACnB,oBAAA,EAAsB,kCAAA;AAAA,EACtB,qBAAA,EAAuB,2CAAA;AAAA,EACvB,eAAA,EAAiB,0DAAA;AAAA,EACjB,gBAAA,EAAkB,6CAAA;AAAA,EAClB,cAAA,EAAgB,qCAAA;AAAA,EAChB,eAAA,EAAiB,qCAAA;AAAA,EACjB,gBAAA,EAAkB,8BAAA;AAAA,EAClB,kBAAA,EAAoB,8CAAA;AAAA,EACpB,iBAAA,EAAmB,wDAAA;AAAA,EACnB,0BAAA,EAA4B,qDAAA;AAAA,EAC5B,2BAAA,EAA6B,wDAAA;AAAA,EAC7B,yBAAA,EAA2B,qDAAA;AAAA,EAC3B,0BAAA,EAA4B,kEAAA;AAAA,EAC5B,eAAA,EAAiB,6BAAA;AAAA,EACjB,gBAAA,EAAkB,oDAAA;AAAA,EAClB,cAAA,EAAgB,gEAAA;AAAA,EAChB,eAAA,EAAiB,oDAAA;AAAA,EACjB,kBAAA,EAAoB,oDAAA;AAAA,EACpB,mBAAA,EAAqB,iEAAA;AAAA,EACrB,cAAA,EAAgB,4CAAA;AAAA,EAChB,eAAA,EAAiB,wDAAA;AAAA,EACjB,gBAAA,EAAkB,oDAAA;AAAA,EAClB,mBAAA,EAAqB,sCAAA;AAAA,EACrB,oBAAA,EAAsB,6CAAA;AAAA,EACtB,4BAAA,EAA8B,uDAAA;AAAA,EAC9B,6BAAA,EAA+B,uDAAA;AAAA,EAC/B,8BAAA,EAAgC,iEAAA;AAAA,EAChC,mCAAA,EACE,6EAAA;AAAA,EACF,oBAAA,EAAsB;AACxB;AAEO,SAAS,cAAc,KAAA,EAAqC;AACjE,EAAA,OAAO,cAAA,CAAe,IAAA,CAAK,CAAC,KAAA,KAAU,UAAU,KAAK,CAAA;AACvD;AAEO,SAAS,iBAAA,CACd,eACA,aAAA,EACS;AACT,EAAA,IAAI,aAAA,KAAkB,UAAU,OAAO,IAAA;AACvC,EAAA,IAAI,cAAc,UAAA,CAAW,UAAU,GAAG,OAAO,aAAA,CAAc,SAAS,aAAa,CAAA;AACrF,EAAA,OAAO,cAAc,QAAA,CAAS,GAAG,CAAA,IAAK,aAAA,CAAc,SAAS,aAAa,CAAA;AAC5E","file":"api-key-scopes.js","sourcesContent":["export const API_KEY_SCOPES = [\n \"*\",\n \"audiences:read\",\n \"audiences:write\",\n \"booking_pages:read\",\n \"booking_pages:write\",\n \"calendar:read\",\n \"calendar:write\",\n \"domains:read\",\n \"domains:write\",\n \"mailboxes:read\",\n \"mailboxes:export\",\n \"mailboxes:write\",\n \"mailbox_credentials:read\",\n \"mailbox_credentials:write\",\n \"mailbox_forwarding:read\",\n \"mailbox_forwarding:write\",\n \"messages:read\",\n \"messages:write\",\n \"drafts:write\",\n \"messages:send\",\n \"newsletters:read\",\n \"newsletters:write\",\n \"threads:read\",\n \"webhooks:read\",\n \"webhooks:write\",\n \"suppressions:read\",\n \"suppressions:write\",\n \"partner:organizations:read\",\n \"partner:organizations:write\",\n \"partner:organizations:access\",\n \"partner:mailbox_credentials:issue\",\n \"partner:usage:read\",\n] as const;\n\nexport type ApiKeyScope = (typeof API_KEY_SCOPES)[number];\n\nexport const API_KEY_SCOPE_DESCRIPTIONS: Readonly<Record<ApiKeyScope, string>> = {\n \"*\": \"All non-partner API endpoints in this organization.\",\n \"audiences:read\": \"List and retrieve newsletter audiences and their subscribers.\",\n \"audiences:write\": \"Create audiences and add, update, or remove their subscribers.\",\n \"booking_pages:read\": \"List and retrieve booking pages.\",\n \"booking_pages:write\": \"Create, update, and delete booking pages.\",\n \"calendar:read\": \"List and retrieve calendar events and open availability.\",\n \"calendar:write\": \"Create, update, and delete calendar events.\",\n \"domains:read\": \"List, retrieve, and verify domains.\",\n \"domains:write\": \"Create, update, and delete domains.\",\n \"mailboxes:read\": \"List and retrieve mailboxes.\",\n \"mailboxes:export\": \"Create and download mailbox content exports.\",\n \"mailboxes:write\": \"Create, update, suspend, resume, and delete mailboxes.\",\n \"mailbox_credentials:read\": \"List revocable app passwords for allowed mailboxes.\",\n \"mailbox_credentials:write\": \"Create and revoke app passwords for allowed mailboxes.\",\n \"mailbox_forwarding:read\": \"List forwarding destinations for allowed mailboxes.\",\n \"mailbox_forwarding:write\": \"Create and remove forwarding destinations for allowed mailboxes.\",\n \"messages:read\": \"List and retrieve messages.\",\n \"messages:write\": \"Update, move, delete, and inject sandbox messages.\",\n \"drafts:write\": \"Create agent-safe reply drafts with server-derived recipients.\",\n \"messages:send\": \"Send messages, replies, and approved reply drafts.\",\n \"newsletters:read\": \"List and retrieve newsletter drafts and campaigns.\",\n \"newsletters:write\": \"Create, update, test, schedule, cancel, and resume newsletters.\",\n \"threads:read\": \"List threads and retrieve thread messages.\",\n \"webhooks:read\": \"List webhooks, retrieve webhooks, and list deliveries.\",\n \"webhooks:write\": \"Create, update, delete, test, and rotate webhooks.\",\n \"suppressions:read\": \"List suppressed recipient addresses.\",\n \"suppressions:write\": \"Remove addresses from the suppression list.\",\n \"partner:organizations:read\": \"List and retrieve this partner's child organizations.\",\n \"partner:organizations:write\": \"Create and manage this partner's child organizations.\",\n \"partner:organizations:access\": \"Act on an active child using the delegated organization header.\",\n \"partner:mailbox_credentials:issue\":\n \"List and consume operator-approved grants for embedded-webmail credentials.\",\n \"partner:usage:read\": \"Read consolidated child and mailbox usage for this partner.\",\n};\n\nexport function isApiKeyScope(value: string): value is ApiKeyScope {\n return API_KEY_SCOPES.some((scope) => scope === value);\n}\n\nexport function apiKeyScopesGrant(\n grantedScopes: readonly string[],\n requiredScope: ApiKeyScope | \"public\",\n): boolean {\n if (requiredScope === \"public\") return true;\n if (requiredScope.startsWith(\"partner:\")) return grantedScopes.includes(requiredScope);\n return grantedScopes.includes(\"*\") || grantedScopes.includes(requiredScope);\n}\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -2,6 +2,84 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
// src/api-key-scopes.ts
|
|
6
|
+
var API_KEY_SCOPES = [
|
|
7
|
+
"*",
|
|
8
|
+
"audiences:read",
|
|
9
|
+
"audiences:write",
|
|
10
|
+
"booking_pages:read",
|
|
11
|
+
"booking_pages:write",
|
|
12
|
+
"calendar:read",
|
|
13
|
+
"calendar:write",
|
|
14
|
+
"domains:read",
|
|
15
|
+
"domains:write",
|
|
16
|
+
"mailboxes:read",
|
|
17
|
+
"mailboxes:export",
|
|
18
|
+
"mailboxes:write",
|
|
19
|
+
"mailbox_credentials:read",
|
|
20
|
+
"mailbox_credentials:write",
|
|
21
|
+
"mailbox_forwarding:read",
|
|
22
|
+
"mailbox_forwarding:write",
|
|
23
|
+
"messages:read",
|
|
24
|
+
"messages:write",
|
|
25
|
+
"drafts:write",
|
|
26
|
+
"messages:send",
|
|
27
|
+
"newsletters:read",
|
|
28
|
+
"newsletters:write",
|
|
29
|
+
"threads:read",
|
|
30
|
+
"webhooks:read",
|
|
31
|
+
"webhooks:write",
|
|
32
|
+
"suppressions:read",
|
|
33
|
+
"suppressions:write",
|
|
34
|
+
"partner:organizations:read",
|
|
35
|
+
"partner:organizations:write",
|
|
36
|
+
"partner:organizations:access",
|
|
37
|
+
"partner:mailbox_credentials:issue",
|
|
38
|
+
"partner:usage:read"
|
|
39
|
+
];
|
|
40
|
+
var API_KEY_SCOPE_DESCRIPTIONS = {
|
|
41
|
+
"*": "All non-partner API endpoints in this organization.",
|
|
42
|
+
"audiences:read": "List and retrieve newsletter audiences and their subscribers.",
|
|
43
|
+
"audiences:write": "Create audiences and add, update, or remove their subscribers.",
|
|
44
|
+
"booking_pages:read": "List and retrieve booking pages.",
|
|
45
|
+
"booking_pages:write": "Create, update, and delete booking pages.",
|
|
46
|
+
"calendar:read": "List and retrieve calendar events and open availability.",
|
|
47
|
+
"calendar:write": "Create, update, and delete calendar events.",
|
|
48
|
+
"domains:read": "List, retrieve, and verify domains.",
|
|
49
|
+
"domains:write": "Create, update, and delete domains.",
|
|
50
|
+
"mailboxes:read": "List and retrieve mailboxes.",
|
|
51
|
+
"mailboxes:export": "Create and download mailbox content exports.",
|
|
52
|
+
"mailboxes:write": "Create, update, suspend, resume, and delete mailboxes.",
|
|
53
|
+
"mailbox_credentials:read": "List revocable app passwords for allowed mailboxes.",
|
|
54
|
+
"mailbox_credentials:write": "Create and revoke app passwords for allowed mailboxes.",
|
|
55
|
+
"mailbox_forwarding:read": "List forwarding destinations for allowed mailboxes.",
|
|
56
|
+
"mailbox_forwarding:write": "Create and remove forwarding destinations for allowed mailboxes.",
|
|
57
|
+
"messages:read": "List and retrieve messages.",
|
|
58
|
+
"messages:write": "Update, move, delete, and inject sandbox messages.",
|
|
59
|
+
"drafts:write": "Create agent-safe reply drafts with server-derived recipients.",
|
|
60
|
+
"messages:send": "Send messages, replies, and approved reply drafts.",
|
|
61
|
+
"newsletters:read": "List and retrieve newsletter drafts and campaigns.",
|
|
62
|
+
"newsletters:write": "Create, update, test, schedule, cancel, and resume newsletters.",
|
|
63
|
+
"threads:read": "List threads and retrieve thread messages.",
|
|
64
|
+
"webhooks:read": "List webhooks, retrieve webhooks, and list deliveries.",
|
|
65
|
+
"webhooks:write": "Create, update, delete, test, and rotate webhooks.",
|
|
66
|
+
"suppressions:read": "List suppressed recipient addresses.",
|
|
67
|
+
"suppressions:write": "Remove addresses from the suppression list.",
|
|
68
|
+
"partner:organizations:read": "List and retrieve this partner's child organizations.",
|
|
69
|
+
"partner:organizations:write": "Create and manage this partner's child organizations.",
|
|
70
|
+
"partner:organizations:access": "Act on an active child using the delegated organization header.",
|
|
71
|
+
"partner:mailbox_credentials:issue": "List and consume operator-approved grants for embedded-webmail credentials.",
|
|
72
|
+
"partner:usage:read": "Read consolidated child and mailbox usage for this partner."
|
|
73
|
+
};
|
|
74
|
+
function isApiKeyScope(value) {
|
|
75
|
+
return API_KEY_SCOPES.some((scope) => scope === value);
|
|
76
|
+
}
|
|
77
|
+
function apiKeyScopesGrant(grantedScopes, requiredScope) {
|
|
78
|
+
if (requiredScope === "public") return true;
|
|
79
|
+
if (requiredScope.startsWith("partner:")) return grantedScopes.includes(requiredScope);
|
|
80
|
+
return grantedScopes.includes("*") || grantedScopes.includes(requiredScope);
|
|
81
|
+
}
|
|
82
|
+
|
|
5
83
|
// src/errors.ts
|
|
6
84
|
var ShipMailError = class extends Error {
|
|
7
85
|
constructor(message, options) {
|
|
@@ -413,6 +491,17 @@ var Calendar = class extends ApiResource {
|
|
|
413
491
|
}
|
|
414
492
|
};
|
|
415
493
|
|
|
494
|
+
// src/resources/capabilities.ts
|
|
495
|
+
var Capabilities = class extends ApiResource {
|
|
496
|
+
get(options) {
|
|
497
|
+
return this.client.request({
|
|
498
|
+
method: "GET",
|
|
499
|
+
path: "/capabilities",
|
|
500
|
+
methodOptions: options
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
};
|
|
504
|
+
|
|
416
505
|
// src/resources/domains.ts
|
|
417
506
|
var Domains = class extends ApiResource {
|
|
418
507
|
create(params, options) {
|
|
@@ -495,6 +584,24 @@ var Domains = class extends ApiResource {
|
|
|
495
584
|
|
|
496
585
|
// src/resources/mailboxes.ts
|
|
497
586
|
var Mailboxes = class extends ApiResource {
|
|
587
|
+
prepareStagedAttachmentUpload(id, params, options) {
|
|
588
|
+
return this.client.request({
|
|
589
|
+
method: "POST",
|
|
590
|
+
path: `/mailboxes/${encodeURIComponent(id)}/staged-attachment-upload-tokens`,
|
|
591
|
+
body: params,
|
|
592
|
+
methodOptions: options
|
|
593
|
+
});
|
|
594
|
+
}
|
|
595
|
+
stageAttachment(id, params, options) {
|
|
596
|
+
return this.client.request({
|
|
597
|
+
method: "POST",
|
|
598
|
+
path: `/mailboxes/${encodeURIComponent(id)}/staged-attachments`,
|
|
599
|
+
query: { filename: params.filename },
|
|
600
|
+
rawBody: params.data,
|
|
601
|
+
contentType: params.content_type,
|
|
602
|
+
methodOptions: options
|
|
603
|
+
});
|
|
604
|
+
}
|
|
498
605
|
injectSandboxInbound(id, params, options) {
|
|
499
606
|
return this.client.request({
|
|
500
607
|
method: "POST",
|
|
@@ -1157,6 +1264,44 @@ var ReplyScans = class extends ApiResource {
|
|
|
1157
1264
|
}
|
|
1158
1265
|
};
|
|
1159
1266
|
|
|
1267
|
+
// src/resources/scheduled-messages.ts
|
|
1268
|
+
var ScheduledMessages = class extends ApiResource {
|
|
1269
|
+
list(params, options) {
|
|
1270
|
+
return this.client.request({
|
|
1271
|
+
method: "GET",
|
|
1272
|
+
path: "/scheduled-messages",
|
|
1273
|
+
query: {
|
|
1274
|
+
include_held: params?.include_held,
|
|
1275
|
+
search: params?.search,
|
|
1276
|
+
limit: params?.limit
|
|
1277
|
+
},
|
|
1278
|
+
methodOptions: options
|
|
1279
|
+
});
|
|
1280
|
+
}
|
|
1281
|
+
get(id, options) {
|
|
1282
|
+
return this.client.request({
|
|
1283
|
+
method: "GET",
|
|
1284
|
+
path: `/scheduled-messages/${encodeURIComponent(id)}`,
|
|
1285
|
+
methodOptions: options
|
|
1286
|
+
});
|
|
1287
|
+
}
|
|
1288
|
+
update(id, params, options) {
|
|
1289
|
+
return this.client.request({
|
|
1290
|
+
method: "PATCH",
|
|
1291
|
+
path: `/scheduled-messages/${encodeURIComponent(id)}`,
|
|
1292
|
+
body: params,
|
|
1293
|
+
methodOptions: options
|
|
1294
|
+
});
|
|
1295
|
+
}
|
|
1296
|
+
cancel(id, options) {
|
|
1297
|
+
return this.client.request({
|
|
1298
|
+
method: "DELETE",
|
|
1299
|
+
path: `/scheduled-messages/${encodeURIComponent(id)}`,
|
|
1300
|
+
methodOptions: options
|
|
1301
|
+
});
|
|
1302
|
+
}
|
|
1303
|
+
};
|
|
1304
|
+
|
|
1160
1305
|
// src/resources/status.ts
|
|
1161
1306
|
var Status = class extends ApiResource {
|
|
1162
1307
|
get(options) {
|
|
@@ -1340,7 +1485,7 @@ var Webhooks = class extends ApiResource {
|
|
|
1340
1485
|
};
|
|
1341
1486
|
|
|
1342
1487
|
// src/version.ts
|
|
1343
|
-
var VERSION = "0.
|
|
1488
|
+
var VERSION = "0.4.2";
|
|
1344
1489
|
|
|
1345
1490
|
// src/client.ts
|
|
1346
1491
|
var DEFAULT_BASE_URL = "https://shipmail.to/api/v1";
|
|
@@ -1395,6 +1540,7 @@ var ShipMailClient = class {
|
|
|
1395
1540
|
}
|
|
1396
1541
|
this.audiences = new Audiences(this);
|
|
1397
1542
|
this.bookingPages = new BookingPages(this);
|
|
1543
|
+
this.capabilities = new Capabilities(this);
|
|
1398
1544
|
this.calendar = new Calendar(this);
|
|
1399
1545
|
this.domains = new Domains(this);
|
|
1400
1546
|
this.mailboxes = new Mailboxes(this);
|
|
@@ -1402,6 +1548,7 @@ var ShipMailClient = class {
|
|
|
1402
1548
|
this.newsletters = new Newsletters(this);
|
|
1403
1549
|
this.partner = new Partner(this);
|
|
1404
1550
|
this.replyScans = new ReplyScans(this);
|
|
1551
|
+
this.scheduledMessages = new ScheduledMessages(this);
|
|
1405
1552
|
this.suppressions = new Suppressions(this);
|
|
1406
1553
|
this.threads = new Threads(this);
|
|
1407
1554
|
this.webhooks = new Webhooks(this);
|
|
@@ -1592,6 +1739,8 @@ async function verifyWebhook(body, headers, secret, options) {
|
|
|
1592
1739
|
return parsed;
|
|
1593
1740
|
}
|
|
1594
1741
|
|
|
1742
|
+
exports.API_KEY_SCOPES = API_KEY_SCOPES;
|
|
1743
|
+
exports.API_KEY_SCOPE_DESCRIPTIONS = API_KEY_SCOPE_DESCRIPTIONS;
|
|
1595
1744
|
exports.AuthenticationError = AuthenticationError;
|
|
1596
1745
|
exports.AuthorizationError = AuthorizationError;
|
|
1597
1746
|
exports.CONFERENCING_PROVIDER_IDS = CONFERENCING_PROVIDER_IDS;
|
|
@@ -1612,7 +1761,9 @@ exports.WEBHOOK_DELIVERY_EVENT_TYPES = WEBHOOK_DELIVERY_EVENT_TYPES;
|
|
|
1612
1761
|
exports.WEBHOOK_DELIVERY_STATUSES = WEBHOOK_DELIVERY_STATUSES;
|
|
1613
1762
|
exports.WEBHOOK_EVENT_TYPES = WEBHOOK_EVENT_TYPES;
|
|
1614
1763
|
exports.WebhookVerificationError = WebhookVerificationError;
|
|
1764
|
+
exports.apiKeyScopesGrant = apiKeyScopesGrant;
|
|
1615
1765
|
exports.default = ShipMailClient;
|
|
1766
|
+
exports.isApiKeyScope = isApiKeyScope;
|
|
1616
1767
|
exports.verifyWebhook = verifyWebhook;
|
|
1617
1768
|
//# sourceMappingURL=index.cjs.map
|
|
1618
1769
|
//# sourceMappingURL=index.cjs.map
|