@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/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
- unsent
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.2",
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-typegen": "openapi-typescript ../../apps/docs/api-reference/openapi.json -o types/schema.d.ts"
48
+ "openapi:generate": "openapi-typescript ../../apps/docs/public/api-reference.json -o types/schema.d.ts"
46
49
  }
47
50
  }