mailgun.js 4.1.6 → 4.2.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.
- package/CHANGELOG.md +12 -0
- package/dist/lib/domains.d.ts +4 -1
- package/dist/lib/domainsTags.d.ts +34 -0
- package/dist/lib/interfaces/DomainTags.d.ts +228 -0
- package/dist/mailgun.node.js +2 -2
- package/dist/mailgun.node.js.LICENSE.txt +1 -1
- package/dist/mailgun.web.js +2 -2
- package/dist/mailgun.web.js.LICENSE.txt +1 -1
- package/lib/client.ts +8 -1
- package/lib/domains.ts +7 -2
- package/lib/domainsTags.ts +165 -0
- package/lib/interfaces/DomainTags.ts +262 -0
- package/lib/request.ts +4 -2
- package/package.json +1 -1
- package/test/domains.test.ts +8 -1
- package/test/domainsTags.test.ts +345 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [4.2.0](https://github.com/mailgun/mailgun.js/compare/v4.1.6...v4.2.0) (2022-02-02)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* Add domains tags functionality ([6cc41e3](https://github.com/mailgun/mailgun.js/commits/6cc41e30f20f70d9dc4a4ec247a600e553d706f4))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Other changes
|
|
14
|
+
|
|
15
|
+
* Add tests for new functionality ([e741689](https://github.com/mailgun/mailgun.js/commits/e741689123de9648c35eee4e31f95bb38b86aa78))
|
|
16
|
+
|
|
5
17
|
### [4.1.6](https://github.com/mailgun/mailgun.js/compare/v4.1.5...v4.1.6) (2022-01-24)
|
|
6
18
|
|
|
7
19
|
|
package/dist/lib/domains.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ import { IDomainCredentials } from './interfaces/DomainCredentials';
|
|
|
6
6
|
import { IDomainTemplatesClient } from './interfaces/DomainTemplates';
|
|
7
7
|
import DomainCredentialsClient from './domainsCredentials';
|
|
8
8
|
import DomainTemplatesClient from './domainsTemplates';
|
|
9
|
+
import { IDomainTagsClient } from './interfaces/DomainTags';
|
|
10
|
+
import DomainTagsClient from './domainsTags';
|
|
9
11
|
export declare class Domain {
|
|
10
12
|
name: string;
|
|
11
13
|
require_tls: boolean;
|
|
@@ -25,7 +27,8 @@ export default class DomainClient {
|
|
|
25
27
|
request: Request;
|
|
26
28
|
domainCredentials: IDomainCredentials;
|
|
27
29
|
domainTemplates: IDomainTemplatesClient;
|
|
28
|
-
|
|
30
|
+
domainTags: IDomainTagsClient;
|
|
31
|
+
constructor(request: Request, domainCredentialsClient: DomainCredentialsClient, domainTemplatesClient: DomainTemplatesClient, domainTagsClient: DomainTagsClient);
|
|
29
32
|
private _parseMessage;
|
|
30
33
|
private _parseDomainList;
|
|
31
34
|
private _parseDomain;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import Request from './request';
|
|
2
|
+
import { DomainTagCountriesAggregation, DomainTagDevicesAggregation, DomainTagProvidersAggregation, DomainTagsItem, DomainTagsItemInfo, DomainTagsList, DomainTagsMessageRes, DomainTagsQuery, DomainTagsStatisticQuery, DomainTagStatAPIResponse, DomainTagStatisticItem, DomainTagStatisticResult, IDomainTagsClient, Resolution } from './interfaces/DomainTags';
|
|
3
|
+
export declare class DomainTag implements DomainTagsItem {
|
|
4
|
+
tag: string;
|
|
5
|
+
description: string;
|
|
6
|
+
'first-seen': Date;
|
|
7
|
+
'last-seen': Date;
|
|
8
|
+
constructor(tagInfo: DomainTagsItemInfo);
|
|
9
|
+
}
|
|
10
|
+
export declare class DomainTagStatistic implements DomainTagStatisticResult {
|
|
11
|
+
tag: string;
|
|
12
|
+
description: string;
|
|
13
|
+
start: Date;
|
|
14
|
+
end: Date;
|
|
15
|
+
resolution: Resolution;
|
|
16
|
+
stats: DomainTagStatisticItem[];
|
|
17
|
+
constructor(tagStatisticInfo: DomainTagStatAPIResponse);
|
|
18
|
+
}
|
|
19
|
+
export default class DomainTagsClient implements IDomainTagsClient {
|
|
20
|
+
baseRoute: string;
|
|
21
|
+
request: Request;
|
|
22
|
+
constructor(request: Request);
|
|
23
|
+
private _parsePageLinks;
|
|
24
|
+
private _parseDomainTagsList;
|
|
25
|
+
private _parseTagStatistic;
|
|
26
|
+
list(domain: string, query?: DomainTagsQuery): Promise<DomainTagsList>;
|
|
27
|
+
get(domain: string, tag: string): Promise<DomainTagsItem>;
|
|
28
|
+
update(domain: string, tag: string, description: string): Promise<DomainTagsMessageRes>;
|
|
29
|
+
destroy(domain: string, tag: string): Promise<DomainTagsMessageRes>;
|
|
30
|
+
statistic(domain: string, tag: string, query: DomainTagsStatisticQuery): Promise<DomainTagStatistic>;
|
|
31
|
+
countries(domain: string, tag: string): Promise<DomainTagCountriesAggregation>;
|
|
32
|
+
providers(domain: string, tag: string): Promise<DomainTagProvidersAggregation>;
|
|
33
|
+
devices(domain: string, tag: string): Promise<DomainTagDevicesAggregation>;
|
|
34
|
+
}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { DomainTagStatistic } from '../domainsTags';
|
|
2
|
+
export declare enum Resolution {
|
|
3
|
+
HOUR = "hour",
|
|
4
|
+
DAY = "day",
|
|
5
|
+
MONTH = "month"
|
|
6
|
+
}
|
|
7
|
+
export interface DomainTagsQuery {
|
|
8
|
+
limit: number;
|
|
9
|
+
}
|
|
10
|
+
export interface DomainTagsStatisticQuery {
|
|
11
|
+
event: string;
|
|
12
|
+
start?: number;
|
|
13
|
+
end?: number;
|
|
14
|
+
resolution?: Resolution;
|
|
15
|
+
duration?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface DomainTagsItemInfo {
|
|
18
|
+
tag: string;
|
|
19
|
+
description: string;
|
|
20
|
+
'first-seen': string;
|
|
21
|
+
'last-seen': string;
|
|
22
|
+
}
|
|
23
|
+
export interface DomainTagsItem {
|
|
24
|
+
tag: string;
|
|
25
|
+
description: string;
|
|
26
|
+
'first-seen': Date;
|
|
27
|
+
'last-seen': Date;
|
|
28
|
+
}
|
|
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
|
+
export interface DomainTagsResponseData {
|
|
53
|
+
status: number;
|
|
54
|
+
body: {
|
|
55
|
+
items: DomainTagsItemInfo[];
|
|
56
|
+
paging: PagesList;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export interface DomainTagsList {
|
|
60
|
+
items: DomainTagsItem[];
|
|
61
|
+
pages: ParsedPagesList;
|
|
62
|
+
}
|
|
63
|
+
export interface DomainTagsMessageRes {
|
|
64
|
+
message: string;
|
|
65
|
+
status?: number;
|
|
66
|
+
}
|
|
67
|
+
export interface DomainTagAPIResponseStatsItem {
|
|
68
|
+
time: string;
|
|
69
|
+
accepted?: {
|
|
70
|
+
incoming: number;
|
|
71
|
+
outgoing: number;
|
|
72
|
+
total: number;
|
|
73
|
+
};
|
|
74
|
+
delivered?: {
|
|
75
|
+
smtp: number;
|
|
76
|
+
http: number;
|
|
77
|
+
optimized: number;
|
|
78
|
+
total: number;
|
|
79
|
+
};
|
|
80
|
+
opened?: {
|
|
81
|
+
total: number;
|
|
82
|
+
};
|
|
83
|
+
failed?: {
|
|
84
|
+
temporary: {
|
|
85
|
+
espblock: number;
|
|
86
|
+
total: number;
|
|
87
|
+
};
|
|
88
|
+
permanent: {
|
|
89
|
+
'suppress-bounce': number;
|
|
90
|
+
'suppress-unsubscribe': number;
|
|
91
|
+
'suppress-complaint': number;
|
|
92
|
+
bounce: number;
|
|
93
|
+
'delayed-bounce': number;
|
|
94
|
+
webhook: number;
|
|
95
|
+
optimized: number;
|
|
96
|
+
total: number;
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
clicked?: {
|
|
100
|
+
total: number;
|
|
101
|
+
};
|
|
102
|
+
unsubscribed?: {
|
|
103
|
+
total: number;
|
|
104
|
+
};
|
|
105
|
+
complained?: {
|
|
106
|
+
total: number;
|
|
107
|
+
};
|
|
108
|
+
stored?: {
|
|
109
|
+
total: number;
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
export interface DomainTagStatAPIResponse {
|
|
113
|
+
body: {
|
|
114
|
+
tag: string;
|
|
115
|
+
description: string;
|
|
116
|
+
start: string;
|
|
117
|
+
end: string;
|
|
118
|
+
resolution: Resolution;
|
|
119
|
+
stats: DomainTagAPIResponseStatsItem[];
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
export interface DomainTagStatisticItem extends Omit<DomainTagAPIResponseStatsItem, 'time'> {
|
|
123
|
+
time: Date;
|
|
124
|
+
}
|
|
125
|
+
export interface DomainTagStatisticResult {
|
|
126
|
+
tag: string;
|
|
127
|
+
description: string;
|
|
128
|
+
start: Date;
|
|
129
|
+
end: Date;
|
|
130
|
+
resolution: Resolution;
|
|
131
|
+
stats: DomainTagStatisticItem[];
|
|
132
|
+
}
|
|
133
|
+
export interface DomainTagCountriesAPIResponse {
|
|
134
|
+
body: {
|
|
135
|
+
tag: string;
|
|
136
|
+
country: {
|
|
137
|
+
[key: string]: {
|
|
138
|
+
clicked: number;
|
|
139
|
+
complained: number;
|
|
140
|
+
opened: number;
|
|
141
|
+
unique_clicked: number;
|
|
142
|
+
unique_opened: number;
|
|
143
|
+
unsubscribed: number;
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
export interface DomainTagCountriesAggregation {
|
|
149
|
+
tag: string;
|
|
150
|
+
country: {
|
|
151
|
+
[key: string]: {
|
|
152
|
+
clicked: number;
|
|
153
|
+
complained: number;
|
|
154
|
+
opened: number;
|
|
155
|
+
unique_clicked: number;
|
|
156
|
+
unique_opened: number;
|
|
157
|
+
unsubscribed: number;
|
|
158
|
+
};
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
export interface DomainTagProvidersAPIResponse {
|
|
162
|
+
body: {
|
|
163
|
+
tag: string;
|
|
164
|
+
provider: {
|
|
165
|
+
[key: string]: {
|
|
166
|
+
accepted: number;
|
|
167
|
+
clicked: number;
|
|
168
|
+
complained: number;
|
|
169
|
+
delivered: number;
|
|
170
|
+
opened: number;
|
|
171
|
+
unique_clicked: number;
|
|
172
|
+
unique_opened: number;
|
|
173
|
+
unsubscribed: number;
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
status: number;
|
|
178
|
+
}
|
|
179
|
+
export interface DomainTagProvidersAggregation {
|
|
180
|
+
tag: string;
|
|
181
|
+
provider: {
|
|
182
|
+
[key: string]: {
|
|
183
|
+
accepted: number;
|
|
184
|
+
clicked: number;
|
|
185
|
+
complained: number;
|
|
186
|
+
delivered: number;
|
|
187
|
+
opened: number;
|
|
188
|
+
unique_clicked: number;
|
|
189
|
+
unique_opened: number;
|
|
190
|
+
unsubscribed: number;
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
export interface DeviceStatistic {
|
|
195
|
+
clicked: number;
|
|
196
|
+
complained: number;
|
|
197
|
+
opened: number;
|
|
198
|
+
unique_clicked: number;
|
|
199
|
+
unique_opened: number;
|
|
200
|
+
unsubscribed: number;
|
|
201
|
+
}
|
|
202
|
+
export interface DevicesTypes {
|
|
203
|
+
desktop: DeviceStatistic;
|
|
204
|
+
mobile: DeviceStatistic;
|
|
205
|
+
tablet: DeviceStatistic;
|
|
206
|
+
unknown: DeviceStatistic;
|
|
207
|
+
}
|
|
208
|
+
export interface DomainTagDevicesAPIResponse {
|
|
209
|
+
body: {
|
|
210
|
+
tag: string;
|
|
211
|
+
device: DevicesTypes;
|
|
212
|
+
};
|
|
213
|
+
status: number;
|
|
214
|
+
}
|
|
215
|
+
export interface DomainTagDevicesAggregation {
|
|
216
|
+
tag: string;
|
|
217
|
+
device: DevicesTypes;
|
|
218
|
+
}
|
|
219
|
+
export interface IDomainTagsClient {
|
|
220
|
+
list(domain: string): Promise<DomainTagsList>;
|
|
221
|
+
get(domain: string, tag: string): Promise<DomainTagsItem>;
|
|
222
|
+
update(domain: string, tag: string, description: string): Promise<DomainTagsMessageRes>;
|
|
223
|
+
destroy(domain: string, tag: string): Promise<DomainTagsMessageRes>;
|
|
224
|
+
statistic(domain: string, tag: string, query: DomainTagsStatisticQuery): Promise<DomainTagStatistic>;
|
|
225
|
+
countries(domain: string, tag: string): Promise<DomainTagCountriesAggregation>;
|
|
226
|
+
providers(domain: string, tag: string): Promise<DomainTagProvidersAggregation>;
|
|
227
|
+
devices(domain: string, tag: string): Promise<DomainTagDevicesAggregation>;
|
|
228
|
+
}
|