@unsent/sdk 1.0.2 → 1.0.4
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 +266 -265
- package/dist/index.d.mts +2303 -1021
- package/dist/index.d.ts +2303 -1021
- package/dist/index.js +332 -2
- package/dist/index.mjs +327 -1
- package/package.json +7 -4
package/dist/index.mjs
CHANGED
|
@@ -4,6 +4,21 @@ var Contacts = class {
|
|
|
4
4
|
this.unsent = unsent2;
|
|
5
5
|
this.unsent = unsent2;
|
|
6
6
|
}
|
|
7
|
+
async list(contactBookId, query) {
|
|
8
|
+
const params = new URLSearchParams();
|
|
9
|
+
if (query?.emails) params.append("emails", query.emails);
|
|
10
|
+
if (query?.page) params.append("page", query.page.toString());
|
|
11
|
+
if (query?.limit) params.append("limit", query.limit.toString());
|
|
12
|
+
if (query?.ids) params.append("ids", query.ids);
|
|
13
|
+
const queryString = params.toString() ? `?${params.toString()}` : "";
|
|
14
|
+
const response = await this.unsent.get(
|
|
15
|
+
`/contactBooks/${contactBookId}/contacts${queryString}`
|
|
16
|
+
);
|
|
17
|
+
return {
|
|
18
|
+
data: response.data,
|
|
19
|
+
error: response.error
|
|
20
|
+
};
|
|
21
|
+
}
|
|
7
22
|
async create(contactBookId, payload) {
|
|
8
23
|
const data = await this.unsent.post(
|
|
9
24
|
`/contactBooks/${contactBookId}/contacts`,
|
|
@@ -78,6 +93,71 @@ var Emails = class {
|
|
|
78
93
|
error: response.error
|
|
79
94
|
};
|
|
80
95
|
}
|
|
96
|
+
async list(query) {
|
|
97
|
+
const params = new URLSearchParams();
|
|
98
|
+
if (query?.page) params.append("page", query.page.toString());
|
|
99
|
+
if (query?.limit) params.append("limit", query.limit.toString());
|
|
100
|
+
if (query?.startDate) params.append("startDate", query.startDate);
|
|
101
|
+
if (query?.endDate) params.append("endDate", query.endDate);
|
|
102
|
+
if (query?.domainId) {
|
|
103
|
+
if (Array.isArray(query.domainId)) {
|
|
104
|
+
query.domainId.forEach((id) => params.append("domainId", id));
|
|
105
|
+
} else {
|
|
106
|
+
params.append("domainId", query.domainId);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const queryString = params.toString() ? `?${params.toString()}` : "";
|
|
110
|
+
const response = await this.unsent.get(
|
|
111
|
+
`/emails${queryString}`
|
|
112
|
+
);
|
|
113
|
+
return {
|
|
114
|
+
data: response.data?.data ?? null,
|
|
115
|
+
count: response.data?.count ?? null,
|
|
116
|
+
error: response.error
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
async getComplaints(query) {
|
|
120
|
+
const params = new URLSearchParams();
|
|
121
|
+
if (query?.page) params.append("page", query.page.toString());
|
|
122
|
+
if (query?.limit) params.append("limit", query.limit.toString());
|
|
123
|
+
const queryString = params.toString() ? `?${params.toString()}` : "";
|
|
124
|
+
const response = await this.unsent.get(
|
|
125
|
+
`/emails/complaints${queryString}`
|
|
126
|
+
);
|
|
127
|
+
return {
|
|
128
|
+
data: response.data?.data ?? null,
|
|
129
|
+
count: response.data?.count ?? null,
|
|
130
|
+
error: response.error
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
async getBounces(query) {
|
|
134
|
+
const params = new URLSearchParams();
|
|
135
|
+
if (query?.page) params.append("page", query.page.toString());
|
|
136
|
+
if (query?.limit) params.append("limit", query.limit.toString());
|
|
137
|
+
const queryString = params.toString() ? `?${params.toString()}` : "";
|
|
138
|
+
const response = await this.unsent.get(
|
|
139
|
+
`/emails/bounces${queryString}`
|
|
140
|
+
);
|
|
141
|
+
return {
|
|
142
|
+
data: response.data?.data ?? null,
|
|
143
|
+
count: response.data?.count ?? null,
|
|
144
|
+
error: response.error
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
async getUnsubscribes(query) {
|
|
148
|
+
const params = new URLSearchParams();
|
|
149
|
+
if (query?.page) params.append("page", query.page.toString());
|
|
150
|
+
if (query?.limit) params.append("limit", query.limit.toString());
|
|
151
|
+
const queryString = params.toString() ? `?${params.toString()}` : "";
|
|
152
|
+
const response = await this.unsent.get(
|
|
153
|
+
`/emails/unsubscribes${queryString}`
|
|
154
|
+
);
|
|
155
|
+
return {
|
|
156
|
+
data: response.data?.data ?? null,
|
|
157
|
+
count: response.data?.count ?? null,
|
|
158
|
+
error: response.error
|
|
159
|
+
};
|
|
160
|
+
}
|
|
81
161
|
async get(id) {
|
|
82
162
|
const data = await this.unsent.get(
|
|
83
163
|
`/emails/${id}`
|
|
@@ -138,12 +218,165 @@ var Domains = class {
|
|
|
138
218
|
}
|
|
139
219
|
};
|
|
140
220
|
|
|
221
|
+
// src/contact-book.ts
|
|
222
|
+
var ContactBooks = class {
|
|
223
|
+
constructor(unsent2) {
|
|
224
|
+
this.unsent = unsent2;
|
|
225
|
+
this.unsent = unsent2;
|
|
226
|
+
}
|
|
227
|
+
async list() {
|
|
228
|
+
const data = await this.unsent.get("/contactBooks");
|
|
229
|
+
return {
|
|
230
|
+
data: data.data,
|
|
231
|
+
error: data.error
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
async create(payload) {
|
|
235
|
+
const data = await this.unsent.post("/contactBooks", payload);
|
|
236
|
+
return {
|
|
237
|
+
data: data.data,
|
|
238
|
+
error: data.error
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
async get(id) {
|
|
242
|
+
const data = await this.unsent.get(`/contactBooks/${id}`);
|
|
243
|
+
return {
|
|
244
|
+
data: data.data,
|
|
245
|
+
error: data.error
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
async update(id, payload) {
|
|
249
|
+
const data = await this.unsent.patch(`/contactBooks/${id}`, payload);
|
|
250
|
+
return {
|
|
251
|
+
data: data.data,
|
|
252
|
+
error: data.error
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
async delete(id) {
|
|
256
|
+
const data = await this.unsent.delete(`/contactBooks/${id}`);
|
|
257
|
+
return {
|
|
258
|
+
data: data.data,
|
|
259
|
+
error: data.error
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
// src/template.ts
|
|
265
|
+
var Templates = class {
|
|
266
|
+
constructor(unsent2) {
|
|
267
|
+
this.unsent = unsent2;
|
|
268
|
+
this.unsent = unsent2;
|
|
269
|
+
}
|
|
270
|
+
async list() {
|
|
271
|
+
const data = await this.unsent.get("/templates");
|
|
272
|
+
return {
|
|
273
|
+
data: data.data,
|
|
274
|
+
error: data.error
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
async create(payload) {
|
|
278
|
+
const data = await this.unsent.post("/templates", payload);
|
|
279
|
+
return {
|
|
280
|
+
data: data.data,
|
|
281
|
+
error: data.error
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
async get(id) {
|
|
285
|
+
const data = await this.unsent.get(`/templates/${id}`);
|
|
286
|
+
return {
|
|
287
|
+
data: data.data,
|
|
288
|
+
error: data.error
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
async update(id, payload) {
|
|
292
|
+
const data = await this.unsent.patch(`/templates/${id}`, payload);
|
|
293
|
+
return {
|
|
294
|
+
data: data.data,
|
|
295
|
+
error: data.error
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
async delete(id) {
|
|
299
|
+
const data = await this.unsent.delete(`/templates/${id}`);
|
|
300
|
+
return {
|
|
301
|
+
data: data.data,
|
|
302
|
+
error: data.error
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
};
|
|
306
|
+
|
|
307
|
+
// src/webhook.ts
|
|
308
|
+
var Webhooks = class {
|
|
309
|
+
constructor(unsent2) {
|
|
310
|
+
this.unsent = unsent2;
|
|
311
|
+
this.unsent = unsent2;
|
|
312
|
+
}
|
|
313
|
+
async list() {
|
|
314
|
+
return this.unsent.get("/webhooks");
|
|
315
|
+
}
|
|
316
|
+
async create(payload) {
|
|
317
|
+
return this.unsent.post("/webhooks", payload);
|
|
318
|
+
}
|
|
319
|
+
async update(id, payload) {
|
|
320
|
+
return this.unsent.patch(`/webhooks/${id}`, payload);
|
|
321
|
+
}
|
|
322
|
+
async delete(id) {
|
|
323
|
+
return this.unsent.delete(`/webhooks/${id}`);
|
|
324
|
+
}
|
|
325
|
+
};
|
|
326
|
+
|
|
327
|
+
// src/analytics.ts
|
|
328
|
+
var Analytics = class {
|
|
329
|
+
constructor(unsent2) {
|
|
330
|
+
this.unsent = unsent2;
|
|
331
|
+
this.unsent = unsent2;
|
|
332
|
+
}
|
|
333
|
+
async get() {
|
|
334
|
+
const data = await this.unsent.get("/analytics");
|
|
335
|
+
return {
|
|
336
|
+
data: data.data,
|
|
337
|
+
error: data.error
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
async getTimeSeries(query) {
|
|
341
|
+
const params = new URLSearchParams();
|
|
342
|
+
if (query?.days) params.append("days", query.days.toString());
|
|
343
|
+
if (query?.domain) params.append("domain", query.domain);
|
|
344
|
+
const queryString = params.toString() ? `?${params.toString()}` : "";
|
|
345
|
+
const data = await this.unsent.get(
|
|
346
|
+
`/analytics/time-series${queryString}`
|
|
347
|
+
);
|
|
348
|
+
return {
|
|
349
|
+
data: data.data,
|
|
350
|
+
error: data.error
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
async getReputation(query) {
|
|
354
|
+
const params = new URLSearchParams();
|
|
355
|
+
if (query?.domain) params.append("domain", query.domain);
|
|
356
|
+
const queryString = params.toString() ? `?${params.toString()}` : "";
|
|
357
|
+
const data = await this.unsent.get(
|
|
358
|
+
`/analytics/reputation${queryString}`
|
|
359
|
+
);
|
|
360
|
+
return {
|
|
361
|
+
data: data.data,
|
|
362
|
+
error: data.error
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
};
|
|
366
|
+
|
|
141
367
|
// src/campaign.ts
|
|
142
368
|
var Campaigns = class {
|
|
143
369
|
constructor(unsent2) {
|
|
144
370
|
this.unsent = unsent2;
|
|
145
371
|
this.unsent = unsent2;
|
|
146
372
|
}
|
|
373
|
+
async list() {
|
|
374
|
+
const data = await this.unsent.get("/campaigns");
|
|
375
|
+
return {
|
|
376
|
+
data: data.data,
|
|
377
|
+
error: data.error
|
|
378
|
+
};
|
|
379
|
+
}
|
|
147
380
|
async create(payload) {
|
|
148
381
|
const data = await this.unsent.post(
|
|
149
382
|
`/campaigns`,
|
|
@@ -180,6 +413,88 @@ var Campaigns = class {
|
|
|
180
413
|
}
|
|
181
414
|
};
|
|
182
415
|
|
|
416
|
+
// src/suppression.ts
|
|
417
|
+
var Suppressions = class {
|
|
418
|
+
constructor(unsent2) {
|
|
419
|
+
this.unsent = unsent2;
|
|
420
|
+
this.unsent = unsent2;
|
|
421
|
+
}
|
|
422
|
+
async list(query) {
|
|
423
|
+
const params = new URLSearchParams();
|
|
424
|
+
if (query?.page) params.append("page", query.page.toString());
|
|
425
|
+
if (query?.limit) params.append("limit", query.limit.toString());
|
|
426
|
+
if (query?.search) params.append("search", query.search);
|
|
427
|
+
if (query?.reason) params.append("reason", query.reason);
|
|
428
|
+
const queryString = params.toString() ? `?${params.toString()}` : "";
|
|
429
|
+
const response = await this.unsent.get(
|
|
430
|
+
`/suppressions${queryString}`
|
|
431
|
+
);
|
|
432
|
+
return {
|
|
433
|
+
data: response.data,
|
|
434
|
+
error: response.error
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
async add(payload) {
|
|
438
|
+
const data = await this.unsent.post(
|
|
439
|
+
"/suppressions",
|
|
440
|
+
payload
|
|
441
|
+
);
|
|
442
|
+
return {
|
|
443
|
+
data: data.data,
|
|
444
|
+
error: data.error
|
|
445
|
+
};
|
|
446
|
+
}
|
|
447
|
+
async delete(email) {
|
|
448
|
+
const data = await this.unsent.delete(
|
|
449
|
+
`/suppressions/email/${email}`
|
|
450
|
+
);
|
|
451
|
+
return {
|
|
452
|
+
data: data.data,
|
|
453
|
+
error: data.error
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
};
|
|
457
|
+
|
|
458
|
+
// src/api-key.ts
|
|
459
|
+
var ApiKeys = class {
|
|
460
|
+
constructor(unsent2) {
|
|
461
|
+
this.unsent = unsent2;
|
|
462
|
+
this.unsent = unsent2;
|
|
463
|
+
}
|
|
464
|
+
async list() {
|
|
465
|
+
const data = await this.unsent.get("/api-keys");
|
|
466
|
+
return {
|
|
467
|
+
data: data.data,
|
|
468
|
+
error: data.error
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
async create(payload) {
|
|
472
|
+
const data = await this.unsent.post("/api-keys", payload);
|
|
473
|
+
return {
|
|
474
|
+
data: data.data,
|
|
475
|
+
error: data.error
|
|
476
|
+
};
|
|
477
|
+
}
|
|
478
|
+
async delete(id) {
|
|
479
|
+
const data = await this.unsent.delete(`/api-keys/${id}`);
|
|
480
|
+
return {
|
|
481
|
+
data: data.data,
|
|
482
|
+
error: data.error
|
|
483
|
+
};
|
|
484
|
+
}
|
|
485
|
+
};
|
|
486
|
+
|
|
487
|
+
// src/settings.ts
|
|
488
|
+
var Settings = class {
|
|
489
|
+
constructor(unsent2) {
|
|
490
|
+
this.unsent = unsent2;
|
|
491
|
+
this.unsent = unsent2;
|
|
492
|
+
}
|
|
493
|
+
async get() {
|
|
494
|
+
return this.unsent.get("/settings");
|
|
495
|
+
}
|
|
496
|
+
};
|
|
497
|
+
|
|
183
498
|
// src/unsent.ts
|
|
184
499
|
var defaultBaseUrl = "https://api.unsent.dev";
|
|
185
500
|
var baseUrl = `${process?.env?.UNSENT_BASE_URL ?? process?.env?.UNSENT_BASE_URL ?? defaultBaseUrl}/v1`;
|
|
@@ -211,7 +526,14 @@ var unsent = class {
|
|
|
211
526
|
domains = new Domains(this);
|
|
212
527
|
emails = new Emails(this);
|
|
213
528
|
contacts = new Contacts(this);
|
|
529
|
+
contactBooks = new ContactBooks(this);
|
|
530
|
+
templates = new Templates(this);
|
|
531
|
+
webhooks = new Webhooks(this);
|
|
532
|
+
analytics = new Analytics(this);
|
|
214
533
|
campaigns = new Campaigns(this);
|
|
534
|
+
suppressions = new Suppressions(this);
|
|
535
|
+
apiKeys = new ApiKeys(this);
|
|
536
|
+
settings = new Settings(this);
|
|
215
537
|
url = baseUrl;
|
|
216
538
|
async fetchRequest(path, options = {}) {
|
|
217
539
|
const fullUrl = `${this.url}${path}`;
|
|
@@ -300,6 +622,10 @@ var unsent = class {
|
|
|
300
622
|
}
|
|
301
623
|
};
|
|
302
624
|
export {
|
|
625
|
+
Analytics as analytics,
|
|
303
626
|
Campaigns as campaigns,
|
|
304
|
-
|
|
627
|
+
ContactBooks as contactBooks,
|
|
628
|
+
Templates as templates,
|
|
629
|
+
unsent,
|
|
630
|
+
Webhooks as webhooks
|
|
305
631
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unsent/sdk",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "TypeScript SDK for the Unsent API - Send transactional emails with ease",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -33,15 +33,18 @@
|
|
|
33
33
|
"openapi-typescript": "^7.6.1",
|
|
34
34
|
"tsup": "^8.5.0",
|
|
35
35
|
"typescript": "^5.8.3",
|
|
36
|
-
"@unsent/typescript-config": "0.0.0"
|
|
36
|
+
"@unsent/typescript-config": "0.0.0",
|
|
37
|
+
"@unsent/vitest-config": "0.0.0"
|
|
37
38
|
},
|
|
38
39
|
"dependencies": {
|
|
39
40
|
"@react-email/render": "^1.0.6",
|
|
40
|
-
"react": "^19.1.0"
|
|
41
|
+
"react": "^19.1.0",
|
|
42
|
+
"vitest": "^2.1.8"
|
|
41
43
|
},
|
|
42
44
|
"scripts": {
|
|
43
45
|
"build": "rm -rf dist && tsup index.ts --format esm,cjs --dts",
|
|
46
|
+
"test": "vitest",
|
|
44
47
|
"publish-sdk": "pnpm run build && pnpm publish --no-git-checks --access public",
|
|
45
|
-
"openapi
|
|
48
|
+
"openapi:generate": "openapi-typescript ../../apps/docs/public/api-reference.json -o types/schema.d.ts"
|
|
46
49
|
}
|
|
47
50
|
}
|