millionsend 0.3.0 → 0.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.
Files changed (56) hide show
  1. package/README.md +158 -18
  2. package/dist/http.d.ts +12 -1
  3. package/dist/http.d.ts.map +1 -1
  4. package/dist/http.js +6 -2
  5. package/dist/http.js.map +1 -1
  6. package/dist/index.d.ts +15 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +21 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/resources/api-keys.d.ts +12 -0
  11. package/dist/resources/api-keys.d.ts.map +1 -0
  12. package/dist/resources/api-keys.js +26 -0
  13. package/dist/resources/api-keys.js.map +1 -0
  14. package/dist/resources/broadcasts.d.ts +1 -0
  15. package/dist/resources/broadcasts.d.ts.map +1 -1
  16. package/dist/resources/broadcasts.js +7 -1
  17. package/dist/resources/broadcasts.js.map +1 -1
  18. package/dist/resources/contact-properties.d.ts +15 -0
  19. package/dist/resources/contact-properties.d.ts.map +1 -0
  20. package/dist/resources/contact-properties.js +43 -0
  21. package/dist/resources/contact-properties.js.map +1 -0
  22. package/dist/resources/contacts.d.ts +22 -2
  23. package/dist/resources/contacts.d.ts.map +1 -1
  24. package/dist/resources/contacts.js +47 -1
  25. package/dist/resources/contacts.js.map +1 -1
  26. package/dist/resources/domains.d.ts +18 -0
  27. package/dist/resources/domains.d.ts.map +1 -0
  28. package/dist/resources/domains.js +54 -0
  29. package/dist/resources/domains.js.map +1 -0
  30. package/dist/resources/emails.d.ts +11 -9
  31. package/dist/resources/emails.d.ts.map +1 -1
  32. package/dist/resources/emails.js +29 -1
  33. package/dist/resources/emails.js.map +1 -1
  34. package/dist/resources/suppressions.d.ts +33 -0
  35. package/dist/resources/suppressions.d.ts.map +1 -0
  36. package/dist/resources/suppressions.js +68 -0
  37. package/dist/resources/suppressions.js.map +1 -0
  38. package/dist/resources/templates.d.ts +22 -0
  39. package/dist/resources/templates.d.ts.map +1 -0
  40. package/dist/resources/templates.js +61 -0
  41. package/dist/resources/templates.js.map +1 -0
  42. package/dist/resources/topics.d.ts +4 -5
  43. package/dist/resources/topics.d.ts.map +1 -1
  44. package/dist/resources/topics.js +9 -1
  45. package/dist/resources/topics.js.map +1 -1
  46. package/dist/resources/usage.d.ts +11 -0
  47. package/dist/resources/usage.d.ts.map +1 -0
  48. package/dist/resources/usage.js +12 -0
  49. package/dist/resources/usage.js.map +1 -0
  50. package/dist/resources/webhooks.d.ts +14 -0
  51. package/dist/resources/webhooks.d.ts.map +1 -0
  52. package/dist/resources/webhooks.js +36 -0
  53. package/dist/resources/webhooks.js.map +1 -0
  54. package/dist/types.d.ts +400 -12
  55. package/dist/types.d.ts.map +1 -1
  56. package/package.json +1 -1
@@ -1,20 +1,40 @@
1
1
  import type { Result } from "../error.js";
2
2
  import type { HttpClient } from "../http.js";
3
- import type { Contact, ContactAddress, ContactId, ContactListItem, CreateContactOptions, List, ListOptions, RemoveContactResponse, UpdateContactOptions, UpdateContactTopicsOptions, UpdateContactTopicsResponse } from "../types.js";
3
+ import type { AddContactSegmentResponse, BatchContactsResponse, Contact, ContactAddress, ContactId, ContactListItem, ContactSegmentOptions, CreateContactOptions, CreateContactsBatchOptions, List, ListContactsOptions, RemoveContactResponse, RemoveContactSegmentResponse, UpdateContactOptions, UpdateContactTopicsOptions, UpdateContactTopicsResponse } from "../types.js";
4
4
  /** Per-contact topic subscriptions (opt in/out of a topic). */
5
5
  export declare class ContactTopics {
6
6
  private readonly http;
7
7
  constructor(http: HttpClient);
8
8
  update(options: UpdateContactTopicsOptions): Promise<Result<UpdateContactTopicsResponse>>;
9
9
  }
10
+ /** Contact ↔ segment membership. */
11
+ export declare class ContactSegments {
12
+ private readonly http;
13
+ constructor(http: HttpClient);
14
+ private path;
15
+ /** POST /contacts/:id/segments/:segmentId */
16
+ add(options: ContactSegmentOptions): Promise<Result<AddContactSegmentResponse>>;
17
+ /** DELETE /contacts/:id/segments/:segmentId */
18
+ remove(options: ContactSegmentOptions): Promise<Result<RemoveContactSegmentResponse>>;
19
+ }
20
+ /** Bulk contact creation (MillionSend extension; Resend imports contacts via CSV only). */
21
+ export declare class ContactsBatch {
22
+ private readonly http;
23
+ constructor(http: HttpClient);
24
+ /** POST /contacts/batch — 1–1000 contacts; `onConflict` and `batchValidation` shape the outcome. */
25
+ create(payload: CreateContactOptions[], options?: CreateContactsBatchOptions): Promise<Result<BatchContactsResponse>>;
26
+ }
10
27
  export declare class Contacts {
11
28
  private readonly http;
12
29
  readonly topics: ContactTopics;
30
+ readonly segments: ContactSegments;
31
+ readonly batch: ContactsBatch;
13
32
  constructor(http: HttpClient);
14
33
  create(payload: CreateContactOptions): Promise<Result<ContactId>>;
15
34
  get(address: string | ContactAddress): Promise<Result<Contact>>;
16
35
  update(options: UpdateContactOptions): Promise<Result<ContactId>>;
17
36
  remove(address: string | ContactAddress): Promise<Result<RemoveContactResponse>>;
18
- list(options?: ListOptions): Promise<Result<List<ContactListItem>>>;
37
+ /** GET /contacts, or GET /segments/:segmentId/contacts when `segmentId` is given. */
38
+ list(options?: ListContactsOptions): Promise<Result<List<ContactListItem>>>;
19
39
  }
20
40
  //# sourceMappingURL=contacts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contacts.d.ts","sourceRoot":"","sources":["../../src/resources/contacts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,IAAI,EACJ,WAAW,EACX,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,aAAa,CAAC;AA8BrB,+DAA+D;AAC/D,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,MAAM,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;CAQ1F;AAED,qBAAa,QAAQ;IAGP,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;gBAEF,IAAI,EAAE,UAAU;IAI7C,MAAM,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAIjE,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAI/D,MAAM,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAIjE,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAIhF,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;CAGpE"}
1
+ {"version":3,"file":"contacts.d.ts","sourceRoot":"","sources":["../../src/resources/contacts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,EACrB,OAAO,EACP,cAAc,EACd,SAAS,EACT,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,IAAI,EACJ,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,aAAa,CAAC;AAgCrB,+DAA+D;AAC/D,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,MAAM,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;CAQ1F;AAED,oCAAoC;AACpC,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,OAAO,CAAC,IAAI;IAKZ,6CAA6C;IAC7C,GAAG,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAI/E,+CAA+C;IAC/C,MAAM,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;CAGtF;AAED,2FAA2F;AAC3F,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,oGAAoG;IACpG,MAAM,CACJ,OAAO,EAAE,oBAAoB,EAAE,EAC/B,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;CAS1C;AAED,qBAAa,QAAQ;IAKP,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJjC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;gBAED,IAAI,EAAE,UAAU;IAM7C,MAAM,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAIjE,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAI/D,MAAM,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAIjE,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAIhF,qFAAqF;IACrF,IAAI,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;CAM5E"}
@@ -13,6 +13,8 @@ function createBody(o) {
13
13
  last_name: o.lastName,
14
14
  unsubscribed: o.unsubscribed,
15
15
  properties: o.properties,
16
+ segments: o.segments,
17
+ topics: o.topics,
16
18
  };
17
19
  }
18
20
  function updateBody(o) {
@@ -38,12 +40,52 @@ export class ContactTopics {
38
40
  });
39
41
  }
40
42
  }
43
+ /** Contact ↔ segment membership. */
44
+ export class ContactSegments {
45
+ http;
46
+ constructor(http) {
47
+ this.http = http;
48
+ }
49
+ path(o) {
50
+ const contact = encodeURIComponent(o.email ?? o.id ?? o.contactId ?? "");
51
+ return `/contacts/${contact}/segments/${encodeURIComponent(o.segmentId)}`;
52
+ }
53
+ /** POST /contacts/:id/segments/:segmentId */
54
+ add(options) {
55
+ return this.http.request({ method: "POST", path: this.path(options) });
56
+ }
57
+ /** DELETE /contacts/:id/segments/:segmentId */
58
+ remove(options) {
59
+ return this.http.request({ method: "DELETE", path: this.path(options) });
60
+ }
61
+ }
62
+ /** Bulk contact creation (MillionSend extension; Resend imports contacts via CSV only). */
63
+ export class ContactsBatch {
64
+ http;
65
+ constructor(http) {
66
+ this.http = http;
67
+ }
68
+ /** POST /contacts/batch — 1–1000 contacts; `onConflict` and `batchValidation` shape the outcome. */
69
+ create(payload, options = {}) {
70
+ return this.http.request({
71
+ method: "POST",
72
+ path: "/contacts/batch",
73
+ query: { on_conflict: options.onConflict },
74
+ body: payload.map(createBody),
75
+ headers: { "x-batch-validation": options.batchValidation },
76
+ });
77
+ }
78
+ }
41
79
  export class Contacts {
42
80
  http;
43
81
  topics;
82
+ segments;
83
+ batch;
44
84
  constructor(http) {
45
85
  this.http = http;
46
86
  this.topics = new ContactTopics(http);
87
+ this.segments = new ContactSegments(http);
88
+ this.batch = new ContactsBatch(http);
47
89
  }
48
90
  create(payload) {
49
91
  return this.http.request({ method: "POST", path: "/contacts", body: createBody(payload) });
@@ -57,8 +99,12 @@ export class Contacts {
57
99
  remove(address) {
58
100
  return this.http.request({ method: "DELETE", path: contactPath(normalize(address)) });
59
101
  }
102
+ /** GET /contacts, or GET /segments/:segmentId/contacts when `segmentId` is given. */
60
103
  list(options) {
61
- return this.http.request({ method: "GET", path: "/contacts", query: listQuery(options) });
104
+ const path = options?.segmentId
105
+ ? `/segments/${encodeURIComponent(options.segmentId)}/contacts`
106
+ : "/contacts";
107
+ return this.http.request({ method: "GET", path, query: listQuery(options) });
62
108
  }
63
109
  }
64
110
  //# sourceMappingURL=contacts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../src/resources/contacts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../src/resources/contacts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { Result } from "../error.js";
2
+ import type { HttpClient } from "../http.js";
3
+ import type { CreateDomainOptions, CreateDomainResponse, Domain, DomainListItem, List, ListOptions, RemoveDomainResponse, UpdateDomainOptions } from "../types.js";
4
+ /** Sending domains and their DNS records. */
5
+ export declare class Domains {
6
+ private readonly http;
7
+ constructor(http: HttpClient);
8
+ /** POST /domains — returns the DNS records to publish. */
9
+ create(payload: CreateDomainOptions): Promise<Result<CreateDomainResponse>>;
10
+ list(options?: ListOptions): Promise<Result<List<DomainListItem>>>;
11
+ get(id: string): Promise<Result<Domain>>;
12
+ /** PATCH /domains/:id — tracking settings; `trackingSubdomain: null` clears it. */
13
+ update(payload: UpdateDomainOptions): Promise<Result<Domain>>;
14
+ /** POST /domains/:id/verify — re-checks DNS and returns the domain. */
15
+ verify(id: string): Promise<Result<Domain>>;
16
+ remove(id: string): Promise<Result<RemoveDomainResponse>>;
17
+ }
18
+ //# sourceMappingURL=domains.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../src/resources/domains.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,MAAM,EACN,cAAc,EACd,IAAI,EACJ,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAErB,6CAA6C;AAC7C,qBAAa,OAAO;IACN,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,0DAA0D;IAC1D,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAe3E,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAIlE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAIxC,mFAAmF;IACnF,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAc7D,uEAAuE;IACvE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAO3C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;CAG1D"}
@@ -0,0 +1,54 @@
1
+ import { listQuery } from "../query.js";
2
+ /** Sending domains and their DNS records. */
3
+ export class Domains {
4
+ http;
5
+ constructor(http) {
6
+ this.http = http;
7
+ }
8
+ /** POST /domains — returns the DNS records to publish. */
9
+ create(payload) {
10
+ return this.http.request({
11
+ method: "POST",
12
+ path: "/domains",
13
+ body: {
14
+ name: payload.name,
15
+ region: payload.region,
16
+ custom_return_path: payload.customReturnPath,
17
+ open_tracking: payload.openTracking,
18
+ click_tracking: payload.clickTracking,
19
+ tracking_subdomain: payload.trackingSubdomain,
20
+ },
21
+ });
22
+ }
23
+ list(options) {
24
+ return this.http.request({ method: "GET", path: "/domains", query: listQuery(options) });
25
+ }
26
+ get(id) {
27
+ return this.http.request({ method: "GET", path: `/domains/${encodeURIComponent(id)}` });
28
+ }
29
+ /** PATCH /domains/:id — tracking settings; `trackingSubdomain: null` clears it. */
30
+ update(payload) {
31
+ return this.http.request({
32
+ method: "PATCH",
33
+ path: `/domains/${encodeURIComponent(payload.id)}`,
34
+ body: {
35
+ open_tracking: payload.openTracking,
36
+ click_tracking: payload.clickTracking,
37
+ tracking_subdomain: payload.trackingSubdomain,
38
+ tls: payload.tls,
39
+ capabilities: payload.capabilities,
40
+ },
41
+ });
42
+ }
43
+ /** POST /domains/:id/verify — re-checks DNS and returns the domain. */
44
+ verify(id) {
45
+ return this.http.request({
46
+ method: "POST",
47
+ path: `/domains/${encodeURIComponent(id)}/verify`,
48
+ });
49
+ }
50
+ remove(id) {
51
+ return this.http.request({ method: "DELETE", path: `/domains/${encodeURIComponent(id)}` });
52
+ }
53
+ }
54
+ //# sourceMappingURL=domains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/resources/domains.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAYxC,6CAA6C;AAC7C,MAAM,OAAO,OAAO;IACW;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,0DAA0D;IAC1D,MAAM,CAAC,OAA4B;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE;gBACJ,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,kBAAkB,EAAE,OAAO,CAAC,gBAAgB;gBAC5C,aAAa,EAAE,OAAO,CAAC,YAAY;gBACnC,cAAc,EAAE,OAAO,CAAC,aAAa;gBACrC,kBAAkB,EAAE,OAAO,CAAC,iBAAiB;aAC9C;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,OAAqB;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,mFAAmF;IACnF,MAAM,CAAC,OAA4B;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,YAAY,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YAClD,IAAI,EAAE;gBACJ,aAAa,EAAE,OAAO,CAAC,YAAY;gBACnC,cAAc,EAAE,OAAO,CAAC,aAAa;gBACrC,kBAAkB,EAAE,OAAO,CAAC,iBAAiB;gBAC7C,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,YAAY,EAAE,OAAO,CAAC,YAAY;aACnC;SACF,CAAC,CAAC;IACL,CAAC;IAED,uEAAuE;IACvE,MAAM,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,kBAAkB,CAAC,EAAE,CAAC,SAAS;SAClD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7F,CAAC;CACF"}
@@ -1,6 +1,6 @@
1
1
  import type { Result } from "../error.js";
2
- import type { HttpClient, RequestOptions } from "../http.js";
3
- import type { CancelEmailResponse, CreateEmailResponse, Email, EmailInsights, SendEmailOptions } from "../types.js";
2
+ import type { BatchRequestOptions, HttpClient, RequestOptions } from "../http.js";
3
+ import type { BatchResponse, CancelEmailResponse, CreateEmailResponse, Email, EmailInsights, EmailListItem, List, ListOptions, RemoveEmailResponse, SendEmailOptions, UpdateEmailOptions, UpdateEmailResponse } from "../types.js";
4
4
  export declare class Emails {
5
5
  private readonly http;
6
6
  constructor(http: HttpClient);
@@ -10,21 +10,23 @@ export declare class Emails {
10
10
  create(payload: SendEmailOptions, options?: RequestOptions): Promise<Result<CreateEmailResponse>>;
11
11
  /** GET /emails/:id */
12
12
  get(id: string): Promise<Result<Email>>;
13
+ /** GET /emails */
14
+ list(options?: ListOptions): Promise<Result<List<EmailListItem>>>;
15
+ /** PATCH /emails/:id — reschedule a scheduled, unsent email. */
16
+ update(payload: UpdateEmailOptions): Promise<Result<UpdateEmailResponse>>;
13
17
  /** GET /emails/:id/insights — not_found until insights exist for the email. */
14
18
  getInsights(id: string): Promise<Result<EmailInsights>>;
15
19
  /** POST /emails/:id/cancel — only scheduled, unsent emails. */
16
20
  cancel(id: string): Promise<Result<CancelEmailResponse>>;
21
+ /** DELETE /emails/:id — removes the email and its events. */
22
+ remove(id: string): Promise<Result<RemoveEmailResponse>>;
17
23
  }
18
24
  export declare class Batch {
19
25
  private readonly http;
20
26
  constructor(http: HttpClient);
21
- /** POST /emails/batch — 1–100 emails in one call; supports an Idempotency-Key. */
22
- send(payload: SendEmailOptions[], options?: RequestOptions): Promise<Result<{
23
- data: CreateEmailResponse[];
24
- }>>;
27
+ /** POST /emails/batch — 1–100 emails in one call; supports an Idempotency-Key and `batchValidation`. */
28
+ send(payload: SendEmailOptions[], options?: BatchRequestOptions): Promise<Result<BatchResponse>>;
25
29
  /** Alias of {@link send}, mirroring Resend. */
26
- create(payload: SendEmailOptions[], options?: RequestOptions): Promise<Result<{
27
- data: CreateEmailResponse[];
28
- }>>;
30
+ create(payload: SendEmailOptions[], options?: BatchRequestOptions): Promise<Result<BatchResponse>>;
29
31
  }
30
32
  //# sourceMappingURL=emails.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"emails.d.ts","sourceRoot":"","sources":["../../src/resources/emails.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,EACL,aAAa,EACb,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAiBrB,qBAAa,MAAM;IACL,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,kDAAkD;IAClD,IAAI,CACF,OAAO,EAAE,gBAAgB,EACzB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IASvC,+CAA+C;IAC/C,MAAM,CACJ,OAAO,EAAE,gBAAgB,EACzB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAIvC,sBAAsB;IACtB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAIvC,+EAA+E;IAC/E,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAOvD,+DAA+D;IAC/D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;CAMzD;AAED,qBAAa,KAAK;IACJ,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,kFAAkF;IAClF,IAAI,CACF,OAAO,EAAE,gBAAgB,EAAE,EAC3B,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC;QAAE,IAAI,EAAE,mBAAmB,EAAE,CAAA;KAAE,CAAC,CAAC;IASnD,+CAA+C;IAC/C,MAAM,CACJ,OAAO,EAAE,gBAAgB,EAAE,EAC3B,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC;QAAE,IAAI,EAAE,mBAAmB,EAAE,CAAA;KAAE,CAAC,CAAC;CAGpD"}
1
+ {"version":3,"file":"emails.d.ts","sourceRoot":"","sources":["../../src/resources/emails.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElF,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,EACL,aAAa,EACb,aAAa,EACb,IAAI,EACJ,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AA2BrB,qBAAa,MAAM;IACL,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,kDAAkD;IAClD,IAAI,CACF,OAAO,EAAE,gBAAgB,EACzB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IASvC,+CAA+C;IAC/C,MAAM,CACJ,OAAO,EAAE,gBAAgB,EACzB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAIvC,sBAAsB;IACtB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAIvC,kBAAkB;IAClB,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAIjE,gEAAgE;IAChE,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAQzE,+EAA+E;IAC/E,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAOvD,+DAA+D;IAC/D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAOxD,6DAA6D;IAC7D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;CAGzD;AAED,qBAAa,KAAK;IACJ,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,wGAAwG;IACxG,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAUpG,+CAA+C;IAC/C,MAAM,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;CAGvG"}
@@ -1,3 +1,4 @@
1
+ import { listQuery } from "../query.js";
1
2
  function toWire(o) {
2
3
  return {
3
4
  from: o.from,
@@ -10,6 +11,16 @@ function toWire(o) {
10
11
  reply_to: o.replyTo,
11
12
  scheduled_at: o.scheduledAt,
12
13
  tags: o.tags,
14
+ topic_id: o.topicId,
15
+ attachments: o.attachments?.map((a) => ({
16
+ filename: a.filename,
17
+ content: Buffer.isBuffer(a.content) ? a.content.toString("base64") : a.content,
18
+ content_type: a.contentType,
19
+ content_id: a.contentId,
20
+ path: a.path,
21
+ })),
22
+ headers: o.headers,
23
+ template: o.template,
13
24
  };
14
25
  }
15
26
  export class Emails {
@@ -34,6 +45,18 @@ export class Emails {
34
45
  get(id) {
35
46
  return this.http.request({ method: "GET", path: `/emails/${encodeURIComponent(id)}` });
36
47
  }
48
+ /** GET /emails */
49
+ list(options) {
50
+ return this.http.request({ method: "GET", path: "/emails", query: listQuery(options) });
51
+ }
52
+ /** PATCH /emails/:id — reschedule a scheduled, unsent email. */
53
+ update(payload) {
54
+ return this.http.request({
55
+ method: "PATCH",
56
+ path: `/emails/${encodeURIComponent(payload.id)}`,
57
+ body: { scheduled_at: payload.scheduledAt },
58
+ });
59
+ }
37
60
  /** GET /emails/:id/insights — not_found until insights exist for the email. */
38
61
  getInsights(id) {
39
62
  return this.http.request({
@@ -48,19 +71,24 @@ export class Emails {
48
71
  path: `/emails/${encodeURIComponent(id)}/cancel`,
49
72
  });
50
73
  }
74
+ /** DELETE /emails/:id — removes the email and its events. */
75
+ remove(id) {
76
+ return this.http.request({ method: "DELETE", path: `/emails/${encodeURIComponent(id)}` });
77
+ }
51
78
  }
52
79
  export class Batch {
53
80
  http;
54
81
  constructor(http) {
55
82
  this.http = http;
56
83
  }
57
- /** POST /emails/batch — 1–100 emails in one call; supports an Idempotency-Key. */
84
+ /** POST /emails/batch — 1–100 emails in one call; supports an Idempotency-Key and `batchValidation`. */
58
85
  send(payload, options = {}) {
59
86
  return this.http.request({
60
87
  method: "POST",
61
88
  path: "/emails/batch",
62
89
  body: payload.map(toWire),
63
90
  idempotencyKey: options.idempotencyKey,
91
+ headers: { "x-batch-validation": options.batchValidation },
64
92
  });
65
93
  }
66
94
  /** Alias of {@link send}, mirroring Resend. */
@@ -1 +1 @@
1
- {"version":3,"file":"emails.js","sourceRoot":"","sources":["../../src/resources/emails.ts"],"names":[],"mappings":"AAUA,SAAS,MAAM,CAAC,CAAmB;IACjC,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,QAAQ,EAAE,CAAC,CAAC,OAAO;QACnB,YAAY,EAAE,CAAC,CAAC,WAAW;QAC3B,IAAI,EAAE,CAAC,CAAC,IAAI;KACb,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,MAAM;IACY;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,kDAAkD;IAClD,IAAI,CACF,OAAyB,EACzB,UAA0B,EAAE;QAE5B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC;YACrB,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC,CAAC;IACL,CAAC;IAED,+CAA+C;IAC/C,MAAM,CACJ,OAAyB,EACzB,UAA0B,EAAE;QAE5B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,sBAAsB;IACtB,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,+EAA+E;IAC/E,WAAW,CAAC,EAAU;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,WAAW,kBAAkB,CAAC,EAAE,CAAC,WAAW;SACnD,CAAC,CAAC;IACL,CAAC;IAED,+DAA+D;IAC/D,MAAM,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,WAAW,kBAAkB,CAAC,EAAE,CAAC,SAAS;SACjD,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,KAAK;IACa;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,kFAAkF;IAClF,IAAI,CACF,OAA2B,EAC3B,UAA0B,EAAE;QAE5B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;YACzB,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC,CAAC;IACL,CAAC;IAED,+CAA+C;IAC/C,MAAM,CACJ,OAA2B,EAC3B,UAA0B,EAAE;QAE5B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;CACF"}
1
+ {"version":3,"file":"emails.js","sourceRoot":"","sources":["../../src/resources/emails.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { Result } from "../error.js";
2
+ import type { HttpClient } from "../http.js";
3
+ import type { AddSuppressionOptions, BatchAddSuppressionsOptions, BatchRemoveSuppressionsOptions, List, ListSuppressionsOptions, RemoveSuppressionResponse, Suppression, SuppressionId, SuppressionListItem } from "../types.js";
4
+ /** Bulk suppression add/remove (up to 1000 per call). */
5
+ export declare class SuppressionsBatch {
6
+ private readonly http;
7
+ constructor(http: HttpClient);
8
+ /** POST /suppressions/batch/add */
9
+ add(options: BatchAddSuppressionsOptions): Promise<Result<{
10
+ data: SuppressionId[];
11
+ }>>;
12
+ /** POST /suppressions/batch/remove — by `emails` or by `ids`. */
13
+ remove(options: BatchRemoveSuppressionsOptions): Promise<Result<{
14
+ data: RemoveSuppressionResponse[];
15
+ }>>;
16
+ }
17
+ /** The team's suppression list: addresses that are never sent to. */
18
+ export declare class Suppressions {
19
+ private readonly http;
20
+ readonly batch: SuppressionsBatch;
21
+ constructor(http: HttpClient);
22
+ /** POST /suppressions */
23
+ add(options: AddSuppressionOptions): Promise<Result<SuppressionId>>;
24
+ /** Alias of {@link add}. */
25
+ create(options: AddSuppressionOptions): Promise<Result<SuppressionId>>;
26
+ /** GET /suppressions — optionally filtered by `origin`. */
27
+ list(options?: ListSuppressionsOptions): Promise<Result<List<SuppressionListItem>>>;
28
+ /** GET /suppressions/:idOrEmail */
29
+ get(idOrEmail: string): Promise<Result<Suppression>>;
30
+ /** DELETE /suppressions/:idOrEmail */
31
+ remove(idOrEmail: string): Promise<Result<RemoveSuppressionResponse>>;
32
+ }
33
+ //# sourceMappingURL=suppressions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suppressions.d.ts","sourceRoot":"","sources":["../../src/resources/suppressions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,KAAK,EACV,qBAAqB,EACrB,2BAA2B,EAC3B,8BAA8B,EAC9B,IAAI,EACJ,uBAAuB,EACvB,yBAAyB,EACzB,WAAW,EACX,aAAa,EACb,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAErB,yDAAyD;AACzD,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,mCAAmC;IACnC,GAAG,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,MAAM,CAAC;QAAE,IAAI,EAAE,aAAa,EAAE,CAAA;KAAE,CAAC,CAAC;IAQrF,iEAAiE;IACjE,MAAM,CACJ,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,MAAM,CAAC;QAAE,IAAI,EAAE,yBAAyB,EAAE,CAAA;KAAE,CAAC,CAAC;CAO1D;AAED,qEAAqE;AACrE,qBAAa,YAAY;IAGX,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;gBAEL,IAAI,EAAE,UAAU;IAI7C,yBAAyB;IACzB,GAAG,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAQnE,4BAA4B;IAC5B,MAAM,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAItE,2DAA2D;IAC3D,IAAI,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAQnF,mCAAmC;IACnC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAOpD,sCAAsC;IACtC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;CAMtE"}
@@ -0,0 +1,68 @@
1
+ import { listQuery } from "../query.js";
2
+ /** Bulk suppression add/remove (up to 1000 per call). */
3
+ export class SuppressionsBatch {
4
+ http;
5
+ constructor(http) {
6
+ this.http = http;
7
+ }
8
+ /** POST /suppressions/batch/add */
9
+ add(options) {
10
+ return this.http.request({
11
+ method: "POST",
12
+ path: "/suppressions/batch/add",
13
+ body: { emails: options.emails, origin: options.origin },
14
+ });
15
+ }
16
+ /** POST /suppressions/batch/remove — by `emails` or by `ids`. */
17
+ remove(options) {
18
+ return this.http.request({
19
+ method: "POST",
20
+ path: "/suppressions/batch/remove",
21
+ body: { emails: options.emails, ids: options.ids },
22
+ });
23
+ }
24
+ }
25
+ /** The team's suppression list: addresses that are never sent to. */
26
+ export class Suppressions {
27
+ http;
28
+ batch;
29
+ constructor(http) {
30
+ this.http = http;
31
+ this.batch = new SuppressionsBatch(http);
32
+ }
33
+ /** POST /suppressions */
34
+ add(options) {
35
+ return this.http.request({
36
+ method: "POST",
37
+ path: "/suppressions",
38
+ body: { email: options.email, origin: options.origin },
39
+ });
40
+ }
41
+ /** Alias of {@link add}. */
42
+ create(options) {
43
+ return this.add(options);
44
+ }
45
+ /** GET /suppressions — optionally filtered by `origin`. */
46
+ list(options) {
47
+ return this.http.request({
48
+ method: "GET",
49
+ path: "/suppressions",
50
+ query: { ...listQuery(options), origin: options?.origin },
51
+ });
52
+ }
53
+ /** GET /suppressions/:idOrEmail */
54
+ get(idOrEmail) {
55
+ return this.http.request({
56
+ method: "GET",
57
+ path: `/suppressions/${encodeURIComponent(idOrEmail)}`,
58
+ });
59
+ }
60
+ /** DELETE /suppressions/:idOrEmail */
61
+ remove(idOrEmail) {
62
+ return this.http.request({
63
+ method: "DELETE",
64
+ path: `/suppressions/${encodeURIComponent(idOrEmail)}`,
65
+ });
66
+ }
67
+ }
68
+ //# sourceMappingURL=suppressions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suppressions.js","sourceRoot":"","sources":["../../src/resources/suppressions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAaxC,yDAAyD;AACzD,MAAM,OAAO,iBAAiB;IACC;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,mCAAmC;IACnC,GAAG,CAAC,OAAoC;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,yBAAyB;YAC/B,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;SACzD,CAAC,CAAC;IACL,CAAC;IAED,iEAAiE;IACjE,MAAM,CACJ,OAAuC;QAEvC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,4BAA4B;YAClC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;SACnD,CAAC,CAAC;IACL,CAAC;CACF;AAED,qEAAqE;AACrE,MAAM,OAAO,YAAY;IAGM;IAFpB,KAAK,CAAoB;IAElC,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;QAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,yBAAyB;IACzB,GAAG,CAAC,OAA8B;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;SACvD,CAAC,CAAC;IACL,CAAC;IAED,4BAA4B;IAC5B,MAAM,CAAC,OAA8B;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,2DAA2D;IAC3D,IAAI,CAAC,OAAiC;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;SAC1D,CAAC,CAAC;IACL,CAAC;IAED,mCAAmC;IACnC,GAAG,CAAC,SAAiB;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,iBAAiB,kBAAkB,CAAC,SAAS,CAAC,EAAE;SACvD,CAAC,CAAC;IACL,CAAC;IAED,sCAAsC;IACtC,MAAM,CAAC,SAAiB;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,iBAAiB,kBAAkB,CAAC,SAAS,CAAC,EAAE;SACvD,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,22 @@
1
+ import type { Result } from "../error.js";
2
+ import type { HttpClient } from "../http.js";
3
+ import type { CreateTemplateOptions, List, ListOptions, RemoveTemplateResponse, Template, TemplateId, TemplateListItem, UpdateTemplateOptions } from "../types.js";
4
+ /**
5
+ * Email templates. Every save is live, so `publish` is a no-op kept for
6
+ * Resend compatibility. `id` arguments accept the template id or its alias.
7
+ */
8
+ export declare class Templates {
9
+ private readonly http;
10
+ constructor(http: HttpClient);
11
+ create(payload: CreateTemplateOptions): Promise<Result<TemplateId>>;
12
+ list(options?: ListOptions): Promise<Result<List<TemplateListItem>>>;
13
+ get(idOrAlias: string): Promise<Result<Template>>;
14
+ /** PATCH /templates/:idOrAlias — `alias`/`subject`/`text: null` clear the field. */
15
+ update(idOrAlias: string, payload: UpdateTemplateOptions): Promise<Result<TemplateId>>;
16
+ remove(idOrAlias: string): Promise<Result<RemoveTemplateResponse>>;
17
+ /** POST /templates/:idOrAlias/publish — no-op (templates are always live). */
18
+ publish(idOrAlias: string): Promise<Result<TemplateId>>;
19
+ /** POST /templates/:idOrAlias/duplicate — copies into a new template (id of the copy). */
20
+ duplicate(idOrAlias: string): Promise<Result<TemplateId>>;
21
+ }
22
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/resources/templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,KAAK,EACV,qBAAqB,EACrB,IAAI,EACJ,WAAW,EACX,sBAAsB,EACtB,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAerB;;;GAGG;AACH,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,MAAM,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAInE,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAIpE,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAIjD,oFAAoF;IACpF,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAQtF,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAOlE,8EAA8E;IAC9E,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAOvD,0FAA0F;IAC1F,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;CAM1D"}
@@ -0,0 +1,61 @@
1
+ import { listQuery } from "../query.js";
2
+ function toWire(o) {
3
+ return {
4
+ name: o.name,
5
+ html: o.html,
6
+ subject: o.subject,
7
+ text: o.text,
8
+ alias: o.alias,
9
+ from: o.from,
10
+ reply_to: o.replyTo,
11
+ variables: o.variables,
12
+ };
13
+ }
14
+ /**
15
+ * Email templates. Every save is live, so `publish` is a no-op kept for
16
+ * Resend compatibility. `id` arguments accept the template id or its alias.
17
+ */
18
+ export class Templates {
19
+ http;
20
+ constructor(http) {
21
+ this.http = http;
22
+ }
23
+ create(payload) {
24
+ return this.http.request({ method: "POST", path: "/templates", body: toWire(payload) });
25
+ }
26
+ list(options) {
27
+ return this.http.request({ method: "GET", path: "/templates", query: listQuery(options) });
28
+ }
29
+ get(idOrAlias) {
30
+ return this.http.request({ method: "GET", path: `/templates/${encodeURIComponent(idOrAlias)}` });
31
+ }
32
+ /** PATCH /templates/:idOrAlias — `alias`/`subject`/`text: null` clear the field. */
33
+ update(idOrAlias, payload) {
34
+ return this.http.request({
35
+ method: "PATCH",
36
+ path: `/templates/${encodeURIComponent(idOrAlias)}`,
37
+ body: toWire(payload),
38
+ });
39
+ }
40
+ remove(idOrAlias) {
41
+ return this.http.request({
42
+ method: "DELETE",
43
+ path: `/templates/${encodeURIComponent(idOrAlias)}`,
44
+ });
45
+ }
46
+ /** POST /templates/:idOrAlias/publish — no-op (templates are always live). */
47
+ publish(idOrAlias) {
48
+ return this.http.request({
49
+ method: "POST",
50
+ path: `/templates/${encodeURIComponent(idOrAlias)}/publish`,
51
+ });
52
+ }
53
+ /** POST /templates/:idOrAlias/duplicate — copies into a new template (id of the copy). */
54
+ duplicate(idOrAlias) {
55
+ return this.http.request({
56
+ method: "POST",
57
+ path: `/templates/${encodeURIComponent(idOrAlias)}/duplicate`,
58
+ });
59
+ }
60
+ }
61
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/resources/templates.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAYxC,SAAS,MAAM,CAAC,CAAgD;IAC9D,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,OAAO;QACnB,SAAS,EAAE,CAAC,CAAC,SAAS;KACvB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,SAAS;IACS;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,MAAM,CAAC,OAA8B;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,IAAI,CAAC,OAAqB;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,kBAAkB,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;IACnG,CAAC;IAED,oFAAoF;IACpF,MAAM,CAAC,SAAiB,EAAE,OAA8B;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,cAAc,kBAAkB,CAAC,SAAS,CAAC,EAAE;YACnD,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC;SACtB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,SAAiB;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,cAAc,kBAAkB,CAAC,SAAS,CAAC,EAAE;SACpD,CAAC,CAAC;IACL,CAAC;IAED,8EAA8E;IAC9E,OAAO,CAAC,SAAiB;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,cAAc,kBAAkB,CAAC,SAAS,CAAC,UAAU;SAC5D,CAAC,CAAC;IACL,CAAC;IAED,0FAA0F;IAC1F,SAAS,CAAC,SAAiB;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,cAAc,kBAAkB,CAAC,SAAS,CAAC,YAAY;SAC9D,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -1,16 +1,15 @@
1
1
  import type { Result } from "../error.js";
2
2
  import type { HttpClient } from "../http.js";
3
- import type { CreateTopicOptions, RemoveTopicResponse, Topic, TopicId } from "../types.js";
3
+ import type { CreateTopicOptions, List, RemoveTopicResponse, Topic, TopicId, UpdateTopicOptions } from "../types.js";
4
4
  /** Subscription topics — granular unsubscribe categories for a team. */
5
5
  export declare class Topics {
6
6
  private readonly http;
7
7
  constructor(http: HttpClient);
8
8
  create(payload: CreateTopicOptions): Promise<Result<TopicId>>;
9
9
  get(id: string): Promise<Result<Topic>>;
10
- /** GET /topics — a bare `{ data }` list (topics are unpaginated). */
11
- list(): Promise<Result<{
12
- data: Topic[];
13
- }>>;
10
+ /** GET /topics — the list envelope with `has_more` always false (topics are unpaginated). */
11
+ list(): Promise<Result<List<Topic>>>;
12
+ update(id: string, payload: UpdateTopicOptions): Promise<Result<TopicId>>;
14
13
  remove(id: string): Promise<Result<RemoveTopicResponse>>;
15
14
  }
16
15
  //# sourceMappingURL=topics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"topics.d.ts","sourceRoot":"","sources":["../../src/resources/topics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3F,wEAAwE;AACxE,qBAAa,MAAM;IACL,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAY7D,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAIvC,qEAAqE;IACrE,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;QAAE,IAAI,EAAE,KAAK,EAAE,CAAA;KAAE,CAAC,CAAC;IAI1C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;CAGzD"}
1
+ {"version":3,"file":"topics.d.ts","sourceRoot":"","sources":["../../src/resources/topics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EACV,kBAAkB,EAClB,IAAI,EACJ,mBAAmB,EACnB,KAAK,EACL,OAAO,EACP,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAErB,wEAAwE;AACxE,qBAAa,MAAM;IACL,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAa7D,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAIvC,6FAA6F;IAC7F,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAIpC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAQzE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;CAGzD"}
@@ -12,16 +12,24 @@ export class Topics {
12
12
  name: payload.name,
13
13
  description: payload.description,
14
14
  default_subscription: payload.defaultSubscription,
15
+ visibility: payload.visibility,
15
16
  },
16
17
  });
17
18
  }
18
19
  get(id) {
19
20
  return this.http.request({ method: "GET", path: `/topics/${encodeURIComponent(id)}` });
20
21
  }
21
- /** GET /topics — a bare `{ data }` list (topics are unpaginated). */
22
+ /** GET /topics — the list envelope with `has_more` always false (topics are unpaginated). */
22
23
  list() {
23
24
  return this.http.request({ method: "GET", path: "/topics" });
24
25
  }
26
+ update(id, payload) {
27
+ return this.http.request({
28
+ method: "PATCH",
29
+ path: `/topics/${encodeURIComponent(id)}`,
30
+ body: { name: payload.name, description: payload.description, visibility: payload.visibility },
31
+ });
32
+ }
25
33
  remove(id) {
26
34
  return this.http.request({ method: "DELETE", path: `/topics/${encodeURIComponent(id)}` });
27
35
  }