mailgun.js 7.0.2 → 8.0.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.
@@ -1,5 +1,6 @@
1
1
  import Request from './request';
2
- import { CreateDomainTemplateVersionResult, DomainTemplate, DomainTemplateData, DomainTemplatesQuery, DomainTemplateUpdateData, DomainTemplateUpdateVersionData, DomainTemplateVersionData, IDomainTemplatesClient, ListDomainTemplatesResult, ListDomainTemplateVersionsResult, MutateDomainTemplateVersionResult, NotificationResult, ShortTemplateVersion, TemplateQuery, TemplateVersion, UpdateOrDeleteDomainTemplateResult } from './interfaces/DomainTemplates';
2
+ import { CreateDomainTemplateVersionResult, DomainTemplate, DomainTemplateData, DomainTemplatesQuery, DomainTemplateUpdateData, DomainTemplateUpdateVersionData, DomainTemplateVersionData, IDomainTemplatesClient, ListDomainTemplatesAPIResponse, ListDomainTemplatesResult, ListDomainTemplateVersionsResult, MutateDomainTemplateVersionResult, NotificationResult, ShortTemplateVersion, TemplateQuery, TemplateVersion, UpdateOrDeleteDomainTemplateResult } from './interfaces/DomainTemplates';
3
+ import NavigationThruPages from './common/NavigationThruPages';
3
4
  export declare class DomainTemplateItem implements DomainTemplate {
4
5
  name: string;
5
6
  description: string;
@@ -10,7 +11,7 @@ export declare class DomainTemplateItem implements DomainTemplate {
10
11
  versions?: ShortTemplateVersion[];
11
12
  constructor(domainTemplateFromAPI: DomainTemplate);
12
13
  }
13
- export default class DomainTemplatesClient implements IDomainTemplatesClient {
14
+ export default class DomainTemplatesClient extends NavigationThruPages<ListDomainTemplatesResult> implements IDomainTemplatesClient {
14
15
  baseRoute: string;
15
16
  request: Request;
16
17
  constructor(request: Request);
@@ -19,7 +20,7 @@ export default class DomainTemplatesClient implements IDomainTemplatesClient {
19
20
  private parseMutationResponse;
20
21
  private parseNotificationResponse;
21
22
  private parseMutateTemplateVersionResponse;
22
- private parseList;
23
+ protected parseList(response: ListDomainTemplatesAPIResponse): ListDomainTemplatesResult;
23
24
  private parseListTemplateVersions;
24
25
  list(domain: string, query?: DomainTemplatesQuery): Promise<ListDomainTemplatesResult>;
25
26
  get(domain: string, templateName: string, query?: TemplateQuery): Promise<DomainTemplateItem>;
package/events.d.ts CHANGED
@@ -1,11 +1,9 @@
1
- import { EventsList, EventsPage, EventsQuery, EventsResponse, ParsedPagesList } from './interfaces/Events';
1
+ import NavigationThruPages from './common/NavigationThruPages';
2
+ import { EventsList, EventsQuery, EventsResponse } from './interfaces/Events';
2
3
  import Request from './request';
3
- export default class EventClient {
4
+ export default class EventClient extends NavigationThruPages<EventsList> {
4
5
  request: Request;
5
6
  constructor(request: Request);
6
- _parsePageNumber(url: string): string;
7
- _parsePage(id: string, url: string): EventsPage;
8
- _parsePageLinks(response: EventsResponse): ParsedPagesList;
9
- _parseEventList(response: EventsResponse): EventsList;
7
+ protected parseList(response: EventsResponse): EventsList;
10
8
  get(domain: string, query?: EventsQuery): Promise<EventsList>;
11
9
  }
@@ -1,4 +1,5 @@
1
1
  import { DomainTagStatistic } from '../domainsTags';
2
+ import { PagesList, ParsedPagesList } from './NavigationThruPages';
2
3
  export declare enum Resolution {
3
4
  HOUR = "hour",
4
5
  DAY = "day",
@@ -6,6 +7,7 @@ export declare enum Resolution {
6
7
  }
7
8
  export declare type DomainTagsQuery = {
8
9
  limit: number;
10
+ page?: string;
9
11
  };
10
12
  export declare type DomainTagsStatisticQuery = {
11
13
  event: string;
@@ -26,29 +28,6 @@ export interface DomainTagsItem {
26
28
  'first-seen': Date;
27
29
  'last-seen': Date;
28
30
  }
29
- export interface PagesList {
30
- previous: string;
31
- first: string;
32
- last: string;
33
- next: string;
34
- }
35
- export interface ParsedPage {
36
- id: string;
37
- url: string;
38
- }
39
- export interface ParsedPagesList {
40
- previous: ParsedPage;
41
- first: ParsedPage;
42
- last: ParsedPage;
43
- next: ParsedPage;
44
- }
45
- export interface TagsPage {
46
- id: string;
47
- url: string;
48
- }
49
- export interface PagesListAccumulator {
50
- [index: string]: TagsPage;
51
- }
52
31
  export interface DomainTagsResponseData {
53
32
  status: number;
54
33
  body: {
@@ -57,6 +36,7 @@ export interface DomainTagsResponseData {
57
36
  };
58
37
  }
59
38
  export interface DomainTagsList {
39
+ status: number;
60
40
  items: DomainTagsItem[];
61
41
  pages: ParsedPagesList;
62
42
  }
@@ -1,14 +1,9 @@
1
1
  import { DomainTemplateItem } from '../domainsTemplates';
2
+ import { PagesList, ParsedPagesList } from './NavigationThruPages';
2
3
  export declare enum YesNo {
3
4
  YES = "yes",
4
5
  NO = "no"
5
6
  }
6
- export declare enum Pages {
7
- FIRST = "first",
8
- LAST = "last",
9
- NEXT = "next",
10
- PREV = "prev"
11
- }
12
7
  export declare type DomainTemplateData = {
13
8
  name: string;
14
9
  description: string;
@@ -33,9 +28,8 @@ export declare type DomainTemplateUpdateVersionData = {
33
28
  active?: YesNo;
34
29
  };
35
30
  export declare type DomainTemplatesQuery = {
36
- page: Pages;
31
+ page: 'string';
37
32
  limit: number;
38
- p: string;
39
33
  };
40
34
  export declare type TemplateQuery = {
41
35
  active: YesNo;
@@ -82,12 +76,8 @@ export interface ListDomainTemplatesAPIResponse {
82
76
  }
83
77
  export interface ListDomainTemplatesResult {
84
78
  items: DomainTemplate[];
85
- pages: {
86
- first: string;
87
- last: string;
88
- next: string;
89
- previous: string;
90
- };
79
+ pages: ParsedPagesList;
80
+ status: number;
91
81
  }
92
82
  export interface GetDomainTemplateAPIResponse {
93
83
  status: number;
@@ -162,22 +152,12 @@ export interface ListDomainTemplateVersionsAPIResponse {
162
152
  id: string;
163
153
  versions: ShortTemplateVersion[];
164
154
  };
165
- paging: {
166
- first: string;
167
- last: string;
168
- next: string;
169
- previous: string;
170
- };
155
+ paging: PagesList;
171
156
  };
172
157
  }
173
158
  export interface ListDomainTemplateVersionsResult {
174
159
  template: DomainTemplateItem;
175
- pages: {
176
- first: string;
177
- last: string;
178
- next: string;
179
- previous: string;
180
- };
160
+ pages: ParsedPagesList;
181
161
  }
182
162
  export interface IDomainTemplatesClient {
183
163
  list(domain: string, query?: DomainTemplatesQuery): Promise<ListDomainTemplatesResult>;
@@ -1,3 +1,4 @@
1
+ import { PagesList, ParsedPagesList } from './NavigationThruPages';
1
2
  export interface EventsPage {
2
3
  id: string;
3
4
  number: string;
@@ -24,17 +25,12 @@ export interface EventsQuery extends FilterField {
24
25
  ascending?: 'yes' | 'no';
25
26
  limit?: number;
26
27
  }
27
- export interface PagesList {
28
- previous: string;
29
- first: string;
30
- last: string;
31
- next: string;
32
- }
33
28
  export interface EventsResponse {
34
29
  body: {
35
30
  items: [];
36
31
  paging: PagesList;
37
32
  };
33
+ status: number;
38
34
  }
39
35
  export interface DomainEvent {
40
36
  severity: string;
@@ -89,21 +85,8 @@ export interface DomainEvent {
89
85
  recipient: string;
90
86
  event: string;
91
87
  }
92
- export interface ParsedPage {
93
- id: string;
94
- number: string;
95
- url: string;
96
- }
97
- export interface ParsedPagesList {
98
- previous: ParsedPage;
99
- first: ParsedPage;
100
- last: ParsedPage;
101
- next: ParsedPage;
102
- }
103
88
  export interface EventsList {
104
89
  items: DomainEvent[];
105
90
  pages: ParsedPagesList;
106
- }
107
- export interface PagesListAccumulator {
108
- [index: string]: EventsPage;
91
+ status: number;
109
92
  }
@@ -1,4 +1,31 @@
1
- export declare type MailgunMessageData = {
1
+ /// <reference types="node" />
2
+ /**
3
+ * Ensures the object has least one key present and not undefined
4
+ *
5
+ * @see {@link https://stackoverflow.com/a/49725198}
6
+ */
7
+ export declare type AtLeastOneKeyPresent<Object_, Keys extends keyof Object_ = keyof Object_> = Pick<Object_, Exclude<keyof Object_, Keys>> & {
8
+ [K in Keys]-?: Required<Pick<Object_, K>> & Partial<Pick<Object_, Exclude<Keys, K>>>;
9
+ }[Keys];
10
+ export declare type MailgunMessageContent = AtLeastOneKeyPresent<{
11
+ /**
12
+ * Body of the message. (text version)
13
+ */
14
+ text?: string;
15
+ /**
16
+ * Body of the message. (HTML version)
17
+ */
18
+ html?: string;
19
+ /**
20
+ * Body of the message. (MIME version)
21
+ */
22
+ message?: string | Buffer | Blob;
23
+ /**
24
+ * Name of a template stored via [template API](https://documentation.mailgun.com/en/latest/api-templates.html#api-templates). See [Templates](https://documentation.mailgun.com/en/latest/user_manual.html#templating) for more information
25
+ */
26
+ template?: string;
27
+ }>;
28
+ export declare type MailgunMessageData = MailgunMessageContent & {
2
29
  /**
3
30
  * Email address for `From` header
4
31
  */
@@ -21,14 +48,6 @@ export declare type MailgunMessageData = {
21
48
  * Message subject
22
49
  */
23
50
  subject?: string;
24
- /**
25
- * Body of the message. (text version)
26
- */
27
- text?: string;
28
- /**
29
- * Body of the message. (HTML version)
30
- */
31
- html?: string;
32
51
  /**
33
52
  * [AMP](https://developers.google.com/gmail/ampemail/) part of the message. Please follow google guidelines to compose and send AMP emails.
34
53
  */
@@ -45,10 +64,6 @@ export declare type MailgunMessageData = {
45
64
  * You can post multiple `inline` values.
46
65
  */
47
66
  inline?: any;
48
- /**
49
- * Name of a template stored via [template API](https://documentation.mailgun.com/en/latest/api-templates.html#api-templates). See [Templates](https://documentation.mailgun.com/en/latest/user_manual.html#templating) for more information
50
- */
51
- template?: string;
52
67
  /**
53
68
  * Use this parameter to send a message to specific version of a template
54
69
  */
@@ -1,19 +1,46 @@
1
- export interface MultipleValidationJob {
1
+ import { PagesList, ParsedPagesList } from './NavigationThruPages';
2
+ export interface MultipleValidationJobData {
2
3
  created_at: number;
3
- download_url: {
4
+ id: string;
5
+ quantity: number;
6
+ records_processed: number | null;
7
+ status: string;
8
+ download_url?: {
4
9
  csv: string;
5
10
  json: string;
6
11
  };
12
+ summary?: {
13
+ result: {
14
+ catch_all: number;
15
+ deliverable: number;
16
+ do_not_send: number;
17
+ undeliverable: number;
18
+ unknown: number;
19
+ };
20
+ risk: {
21
+ high: number;
22
+ low: number;
23
+ medium: number;
24
+ unknown: number;
25
+ };
26
+ };
27
+ }
28
+ export interface MultipleValidationJobResult {
29
+ createdAt: Date;
7
30
  id: string;
8
31
  quantity: number;
9
- records_processed: number;
32
+ recordsProcessed: number | null;
10
33
  status: string;
11
34
  responseStatusCode: number;
12
- summary: {
35
+ downloadUrl?: {
36
+ csv: string;
37
+ json: string;
38
+ };
39
+ summary?: {
13
40
  result: {
14
- catch_all: number;
41
+ catchAll: number;
15
42
  deliverable: number;
16
- do_not_send: number;
43
+ doNotSend: number;
17
44
  undeliverable: number;
18
45
  unknown: number;
19
46
  };
@@ -37,21 +64,23 @@ export interface MultipleValidationCreationDataUpdated {
37
64
  multipleValidationFile: Record<string, unknown>;
38
65
  [key: string]: unknown | undefined;
39
66
  }
40
- export interface PagesList {
41
- prev: string;
42
- first: string;
43
- last: string;
44
- next: string;
45
- }
46
67
  export interface MultipleValidationJobsListResult {
47
- jobs: MultipleValidationJob[];
48
- paging: PagesList;
68
+ jobs: MultipleValidationJobResult[];
69
+ pages: ParsedPagesList;
49
70
  total: number;
50
71
  status: number;
51
72
  }
73
+ export interface MultipleValidationJobsListQuery {
74
+ limit: number;
75
+ page: string;
76
+ }
52
77
  export interface MultipleValidationJobsListResponse {
53
- status: 200;
54
- body: MultipleValidationJobsListResult;
78
+ status: number;
79
+ body: {
80
+ paging: PagesList;
81
+ jobs: MultipleValidationJobData[];
82
+ total: number;
83
+ };
55
84
  }
56
85
  export interface CanceledMultipleValidationJob {
57
86
  message: string;
@@ -59,7 +88,7 @@ export interface CanceledMultipleValidationJob {
59
88
  }
60
89
  export interface IMultipleValidationClient {
61
90
  list(): Promise<MultipleValidationJobsListResult>;
62
- get(listId: string): Promise<MultipleValidationJob>;
91
+ get(listId: string): Promise<MultipleValidationJobResult>;
63
92
  create(listId: string, file: any): Promise<CreatedMultipleValidationJob>;
64
93
  destroy(listId: string): Promise<CanceledMultipleValidationJob>;
65
94
  }
@@ -0,0 +1,33 @@
1
+ export interface PagesList {
2
+ previous: string;
3
+ first: string;
4
+ last: string;
5
+ next: string;
6
+ }
7
+ export interface ParsedPage {
8
+ id: string;
9
+ page: string;
10
+ iteratorPosition: string | undefined;
11
+ url: string;
12
+ }
13
+ export interface ParsedPagesList {
14
+ previous: ParsedPage;
15
+ first: ParsedPage;
16
+ last: ParsedPage;
17
+ next: ParsedPage;
18
+ }
19
+ export interface PagesListAccumulator {
20
+ [index: string]: ParsedPage;
21
+ }
22
+ export interface ResponseWithPaging {
23
+ body: {
24
+ paging: PagesList;
25
+ };
26
+ }
27
+ export interface QueryWithPage {
28
+ page?: string;
29
+ }
30
+ export interface UpdatedUrlAndQuery {
31
+ url: string;
32
+ updatedQuery: Record<string, unknown>;
33
+ }
@@ -0,0 +1,13 @@
1
+ export interface BounceData {
2
+ address: string;
3
+ code: number;
4
+ error: string;
5
+ created_at: string | Date;
6
+ }
7
+ export interface IBounce {
8
+ address: string;
9
+ code: number;
10
+ error: string;
11
+ created_at: Date;
12
+ type: string;
13
+ }
@@ -0,0 +1,9 @@
1
+ export interface ComplaintData {
2
+ address: string;
3
+ created_at: string | Date;
4
+ }
5
+ export interface IComplaint {
6
+ address: string;
7
+ created_at: Date;
8
+ type: string;
9
+ }
@@ -0,0 +1,69 @@
1
+ import { Bounce, Complaint, Unsubscribe, WhiteList } from '../../suppressions';
2
+ import { PagesList, ParsedPagesList } from '../NavigationThruPages';
3
+ import { BounceData } from './Bounce';
4
+ import { ComplaintData } from './Complaint';
5
+ import { UnsubscribeData } from './Unsubscribe';
6
+ import { WhiteListData } from './WhiteList';
7
+ export declare enum SuppressionModels {
8
+ BOUNCES = "bounces",
9
+ COMPLAINTS = "complaints",
10
+ UNSUBSCRIBES = "unsubscribes",
11
+ WHITELISTS = "whitelists"
12
+ }
13
+ export interface SuppressionList {
14
+ items: (Bounce | Complaint | Unsubscribe | WhiteList)[];
15
+ pages: ParsedPagesList;
16
+ status: number;
17
+ }
18
+ export declare type SuppressionListQuery = {
19
+ limit?: number;
20
+ page?: string;
21
+ };
22
+ export declare type SuppressionDataType = BounceData | ComplaintData | UnsubscribeData | WhiteListData;
23
+ export interface SuppressionListResponse {
24
+ body: {
25
+ items: BounceData[] | ComplaintData[] | UnsubscribeData[] | WhiteListData[];
26
+ paging: PagesList;
27
+ };
28
+ status: number;
29
+ }
30
+ export interface SuppressionResponse {
31
+ body: BounceData | ComplaintData | UnsubscribeData | WhiteListData;
32
+ status: number;
33
+ }
34
+ export interface SuppressionDestroyResponse {
35
+ body: {
36
+ message: string;
37
+ value?: string;
38
+ address?: string;
39
+ };
40
+ status: number;
41
+ }
42
+ export interface SuppressionDestroyResult {
43
+ message: string;
44
+ value: string;
45
+ address: string;
46
+ status: number;
47
+ }
48
+ export declare type SuppressionCreationData = {
49
+ address: string;
50
+ code?: number;
51
+ error?: string;
52
+ domain?: string;
53
+ tag?: string;
54
+ created_at?: string;
55
+ };
56
+ export interface SuppressionCreationResponse {
57
+ body: {
58
+ message: string;
59
+ type?: string;
60
+ value?: string;
61
+ };
62
+ status: number;
63
+ }
64
+ export interface SuppressionCreationResult {
65
+ message: string;
66
+ type: string;
67
+ value: string;
68
+ status: number;
69
+ }
@@ -0,0 +1,11 @@
1
+ export interface UnsubscribeData {
2
+ address: string;
3
+ tags: any;
4
+ created_at: string | Date;
5
+ }
6
+ export interface IUnsubscribe {
7
+ address: string;
8
+ tags: any;
9
+ created_at: Date;
10
+ type: string;
11
+ }
@@ -0,0 +1,12 @@
1
+ export interface WhiteListData {
2
+ type: string;
3
+ value: string;
4
+ reason: string;
5
+ createdAt: string | Date;
6
+ }
7
+ export interface IWhiteList {
8
+ type: string;
9
+ value: string;
10
+ reason: string;
11
+ createdAt: Date;
12
+ }
@@ -1,7 +1,8 @@
1
+ import { PagesList, ParsedPagesList } from './NavigationThruPages';
1
2
  export declare type ListsQuery = {
2
3
  address?: string;
3
4
  limit?: number;
4
- skip?: number;
5
+ page?: string;
5
6
  };
6
7
  export declare type CreateUpdateList = {
7
8
  address: string;
@@ -67,3 +68,15 @@ export interface MailingList {
67
68
  name: string;
68
69
  reply_preference: null | string;
69
70
  }
71
+ export interface MailingListResult {
72
+ items: MailingList[];
73
+ status: number;
74
+ pages: ParsedPagesList;
75
+ }
76
+ export interface MailingListApiResponse {
77
+ body: {
78
+ items: MailingList[];
79
+ paging: PagesList;
80
+ };
81
+ status: number;
82
+ }
@@ -1,13 +1,17 @@
1
1
  import { MailingList } from './lists';
2
+ import { PagesList, ParsedPagesList } from './NavigationThruPages';
2
3
  export interface MailListMember {
3
4
  address: string;
4
5
  name: string;
5
6
  subscribed: boolean;
6
- vars: string | any;
7
+ vars: {
8
+ [key: string]: any;
9
+ };
7
10
  }
8
11
  export declare type MailListMembersQuery = {
9
12
  subscribed?: 'yes' | 'no';
10
13
  limit?: number;
14
+ page?: string;
11
15
  };
12
16
  export declare type MultipleMembersData = {
13
17
  members: Array<MailListMember>;
@@ -42,8 +46,20 @@ export interface NewMultipleMembersResponse {
42
46
  message: string;
43
47
  'task-id': string;
44
48
  }
49
+ export interface MailListMembersResponse {
50
+ body: {
51
+ items: MailListMember[];
52
+ paging: PagesList;
53
+ };
54
+ status: number;
55
+ }
56
+ export interface MailListMembersResult {
57
+ items: MailListMember[];
58
+ pages: ParsedPagesList;
59
+ status: number;
60
+ }
45
61
  export interface IMailListsMembers {
46
- listMembers(mailListAddress: string, query?: MailListMembersQuery): Promise<MailListMember[]>;
62
+ listMembers(mailListAddress: string, query?: MailListMembersQuery): Promise<MailListMembersResult>;
47
63
  getMember(address: string, memberAddress: string): Promise<MailListMember>;
48
64
  createMember(mailListAddress: string, data: CreateUpdateMailListMembers): Promise<MailListMember>;
49
65
  createMembers(mailListAddress: string, data: MultipleMembersData): Promise<NewMultipleMembersResponse>;
package/lists.d.ts CHANGED
@@ -1,13 +1,15 @@
1
1
  import Request from './request';
2
- import { ListsQuery, CreateUpdateList, DestroyedList, MailingList, StartValidationResult, ValidationResult, CancelValidationResult } from './interfaces/lists';
2
+ import { ListsQuery, CreateUpdateList, DestroyedList, MailingList, StartValidationResult, ValidationResult, CancelValidationResult, MailingListResult, MailingListApiResponse } from './interfaces/lists';
3
3
  import { IMailListsMembers } from './interfaces/mailListMembers';
4
- export default class ListsClient {
4
+ import NavigationThruPages from './common/NavigationThruPages';
5
+ export default class ListsClient extends NavigationThruPages<MailingListResult> {
5
6
  baseRoute: string;
6
7
  request: Request;
7
8
  members: IMailListsMembers;
8
9
  constructor(request: Request, members: IMailListsMembers);
9
10
  private parseValidationResult;
10
- list(query?: ListsQuery): Promise<MailingList[]>;
11
+ protected parseList(response: MailingListApiResponse): MailingListResult;
12
+ list(query?: ListsQuery): Promise<MailingListResult>;
11
13
  get(mailListAddress: string): Promise<MailingList>;
12
14
  create(data: CreateUpdateList): Promise<MailingList>;
13
15
  update(mailListAddress: string, data: CreateUpdateList): Promise<MailingList>;
@@ -1,11 +1,13 @@
1
1
  import Request from './request';
2
- import { MailListMembersQuery, IMailListsMembers, CreateUpdateMailListMembers, MailListMember, MultipleMembersData, DeletedMember, NewMultipleMembersResponse } from './interfaces/mailListMembers';
3
- export default class MailListsMembers implements IMailListsMembers {
2
+ import { MailListMembersQuery, IMailListsMembers, CreateUpdateMailListMembers, MailListMember, MultipleMembersData, DeletedMember, NewMultipleMembersResponse, MailListMembersResult, MailListMembersResponse } from './interfaces/mailListMembers';
3
+ import NavigationThruPages from './common/NavigationThruPages';
4
+ export default class MailListsMembers extends NavigationThruPages<MailListMembersResult> implements IMailListsMembers {
4
5
  baseRoute: string;
5
6
  request: Request;
6
7
  constructor(request: Request);
7
8
  private checkAndUpdateData;
8
- listMembers(mailListAddress: string, query?: MailListMembersQuery): Promise<MailListMember[]>;
9
+ protected parseList(response: MailListMembersResponse): MailListMembersResult;
10
+ listMembers(mailListAddress: string, query?: MailListMembersQuery): Promise<MailListMembersResult>;
9
11
  getMember(mailListAddress: string, mailListMemberAddress: string): Promise<MailListMember>;
10
12
  createMember(mailListAddress: string, data: CreateUpdateMailListMembers): Promise<MailListMember>;
11
13
  createMembers(mailListAddress: string, data: MultipleMembersData): Promise<NewMultipleMembersResponse>;