mailgun.js 4.1.5 → 4.2.2

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 (263) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +128 -27
  3. package/dist/lib/domains.d.ts +4 -1
  4. package/dist/lib/domainsTags.d.ts +34 -0
  5. package/dist/lib/interfaces/DomainTags.d.ts +228 -0
  6. package/dist/mailgun.node.js +2 -2
  7. package/dist/mailgun.node.js.LICENSE.txt +1 -1
  8. package/dist/mailgun.web.js +2 -2
  9. package/dist/mailgun.web.js.LICENSE.txt +1 -1
  10. package/docs/.nojekyll +1 -0
  11. package/docs/assets/highlight.css +127 -0
  12. package/docs/assets/icons.css +1043 -0
  13. package/docs/assets/{images/icons.png → icons.png} +0 -0
  14. package/docs/assets/{images/icons@2x.png → icons@2x.png} +0 -0
  15. package/docs/assets/main.js +52 -0
  16. package/docs/assets/search.js +1 -0
  17. package/docs/assets/style.css +1413 -0
  18. package/docs/assets/{images/widgets.png → widgets.png} +0 -0
  19. package/docs/assets/{images/widgets@2x.png → widgets@2x.png} +0 -0
  20. package/docs/classes/client.default.html +1 -0
  21. package/docs/classes/domains.Domain.html +1 -0
  22. package/docs/classes/domains.default.html +1 -0
  23. package/docs/classes/domainsCredentials.default.html +1 -0
  24. package/docs/classes/domainsTemplates.DomainTemplateItem.html +1 -0
  25. package/docs/classes/domainsTemplates.default.html +1 -0
  26. package/docs/classes/error.default.html +6 -0
  27. package/docs/classes/events.default.html +1 -0
  28. package/docs/classes/ip_pools.default.html +1 -0
  29. package/docs/classes/ips.default.html +1 -0
  30. package/docs/classes/lists.default.html +1 -0
  31. package/docs/classes/mailListMembers.default.html +1 -0
  32. package/docs/classes/messages.default.html +1 -0
  33. package/docs/classes/multipleValidation.default.html +1 -0
  34. package/docs/classes/request.default.html +1 -0
  35. package/docs/classes/routes.default.html +1 -0
  36. package/docs/classes/stats.default.html +1 -0
  37. package/docs/classes/suppressions.default.html +1 -0
  38. package/docs/classes/validate.default.html +1 -0
  39. package/docs/classes/webhooks.default.html +1 -0
  40. package/docs/enums/interfaces_DomainTemplates.Pages.html +1 -0
  41. package/docs/enums/interfaces_DomainTemplates.YesNo.html +1 -0
  42. package/docs/index.html +1140 -1308
  43. package/docs/interfaces/interfaces_APIErrorOptions.default.html +1 -0
  44. package/docs/interfaces/interfaces_ApiResponse.default.html +1 -0
  45. package/docs/interfaces/interfaces_DomainCredentials.CreatedUpdatedDomainCredentialsResponse.html +1 -0
  46. package/docs/interfaces/interfaces_DomainCredentials.DeletedDomainCredentialsResponse.html +1 -0
  47. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentials.html +1 -0
  48. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsItem.html +1 -0
  49. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsList.html +1 -0
  50. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsQuery.html +1 -0
  51. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsResponseData.html +1 -0
  52. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsResult.html +1 -0
  53. package/docs/interfaces/interfaces_DomainCredentials.IDomainCredentials.html +1 -0
  54. package/docs/interfaces/interfaces_DomainCredentials.UpdateDomainCredentialsData.html +1 -0
  55. package/docs/interfaces/interfaces_DomainTemplates.CreateDomainTemplateAPIResponse.html +1 -0
  56. package/docs/interfaces/interfaces_DomainTemplates.CreateDomainTemplateVersionAPIResponse.html +1 -0
  57. package/docs/interfaces/interfaces_DomainTemplates.CreateDomainTemplateVersionResult.html +1 -0
  58. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplate.html +1 -0
  59. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateData.html +1 -0
  60. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateUpdateData.html +1 -0
  61. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateUpdateVersionData.html +1 -0
  62. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateVersionData.html +1 -0
  63. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplatesQuery.html +1 -0
  64. package/docs/interfaces/interfaces_DomainTemplates.GetDomainTemplateAPIResponse.html +1 -0
  65. package/docs/interfaces/interfaces_DomainTemplates.IDomainTemplatesClient.html +1 -0
  66. package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplateVersionsAPIResponse.html +1 -0
  67. package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplateVersionsResult.html +1 -0
  68. package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplatesAPIResponse.html +1 -0
  69. package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplatesResult.html +1 -0
  70. package/docs/interfaces/interfaces_DomainTemplates.MutateDomainTemplateVersionAPIResponse.html +1 -0
  71. package/docs/interfaces/interfaces_DomainTemplates.MutateDomainTemplateVersionResult.html +1 -0
  72. package/docs/interfaces/interfaces_DomainTemplates.NotificationAPIResponse.html +1 -0
  73. package/docs/interfaces/interfaces_DomainTemplates.NotificationResult.html +1 -0
  74. package/docs/interfaces/interfaces_DomainTemplates.ShortTemplateVersion.html +1 -0
  75. package/docs/interfaces/interfaces_DomainTemplates.TemplateQuery.html +1 -0
  76. package/docs/interfaces/interfaces_DomainTemplates.TemplateVersion.html +1 -0
  77. package/docs/interfaces/interfaces_DomainTemplates.UpdateOrDeleteDomainTemplateAPIResponse.html +1 -0
  78. package/docs/interfaces/interfaces_DomainTemplates.UpdateOrDeleteDomainTemplateResult.html +1 -0
  79. package/docs/interfaces/interfaces_DomainTracking.ClickTrackingInfo.html +1 -0
  80. package/docs/interfaces/interfaces_DomainTracking.DomainTrackingData.html +1 -0
  81. package/docs/interfaces/interfaces_DomainTracking.DomainTrackingResponse.html +1 -0
  82. package/docs/interfaces/interfaces_DomainTracking.OpenTrackingInfo.html +1 -0
  83. package/docs/interfaces/interfaces_DomainTracking.UnsubscribeTrackingInfo.html +1 -0
  84. package/docs/interfaces/interfaces_DomainTracking.UpdateDomainTrackingResponse.html +1 -0
  85. package/docs/interfaces/interfaces_DomainTracking.UpdatedOpenTracking.html +1 -0
  86. package/docs/interfaces/interfaces_Domains.ConnectionSettings.html +1 -0
  87. package/docs/interfaces/interfaces_Domains.ConnectionSettingsResponse.html +1 -0
  88. package/docs/interfaces/interfaces_Domains.DKIMAuthorityInfo.html +1 -0
  89. package/docs/interfaces/interfaces_Domains.DKIMSelectorInfo.html +1 -0
  90. package/docs/interfaces/interfaces_Domains.DNSRecord.html +1 -0
  91. package/docs/interfaces/interfaces_Domains.DestroyedDomainResponse.html +1 -0
  92. package/docs/interfaces/interfaces_Domains.DomainData.html +1 -0
  93. package/docs/interfaces/interfaces_Domains.DomainInfo.html +1 -0
  94. package/docs/interfaces/interfaces_Domains.DomainListResponseData.html +1 -0
  95. package/docs/interfaces/interfaces_Domains.DomainResponseData.html +1 -0
  96. package/docs/interfaces/interfaces_Domains.DomainShortData.html +1 -0
  97. package/docs/interfaces/interfaces_Domains.DomainsListItem.html +1 -0
  98. package/docs/interfaces/interfaces_Domains.DomainsQuery.html +1 -0
  99. package/docs/interfaces/interfaces_Domains.MessageResponse.html +1 -0
  100. package/docs/interfaces/interfaces_Domains.ReplacementForPool.html +1 -0
  101. package/docs/interfaces/interfaces_Domains.UpdatedConnectionSettings.html +1 -0
  102. package/docs/interfaces/interfaces_Domains.UpdatedConnectionSettingsRes.html +1 -0
  103. package/docs/interfaces/interfaces_Domains.UpdatedDKIMAuthority.html +1 -0
  104. package/docs/interfaces/interfaces_Domains.UpdatedDKIMAuthorityResponse.html +1 -0
  105. package/docs/interfaces/interfaces_Domains.UpdatedDKIMSelectorResponse.html +1 -0
  106. package/docs/interfaces/interfaces_Domains.UpdatedWebPrefix.html +1 -0
  107. package/docs/interfaces/interfaces_Domains.UpdatedWebPrefixResponse.html +1 -0
  108. package/docs/interfaces/interfaces_Domains.WebPrefixInfo.html +1 -0
  109. package/docs/interfaces/interfaces_Events.DomainEvent.html +1 -0
  110. package/docs/interfaces/interfaces_Events.EventsList.html +1 -0
  111. package/docs/interfaces/interfaces_Events.EventsPage.html +1 -0
  112. package/docs/interfaces/interfaces_Events.EventsResponse.html +1 -0
  113. package/docs/interfaces/interfaces_Events.PagesList.html +1 -0
  114. package/docs/interfaces/interfaces_Events.PagesListAccumulator.html +1 -0
  115. package/docs/interfaces/interfaces_Events.ParsedPage.html +1 -0
  116. package/docs/interfaces/interfaces_Events.ParsedPagesList.html +1 -0
  117. package/docs/interfaces/interfaces_IFormData.IFormDataOptions.html +1 -0
  118. package/docs/interfaces/interfaces_IFormData.InputFormData.html +1 -0
  119. package/docs/interfaces/interfaces_IpPools.IpPool.html +1 -0
  120. package/docs/interfaces/interfaces_IpPools.IpPoolListResponse.html +1 -0
  121. package/docs/interfaces/interfaces_IpPools.IpPoolUpdateData.html +1 -0
  122. package/docs/interfaces/interfaces_Ips.IpData.html +1 -0
  123. package/docs/interfaces/interfaces_Ips.IpsListResponseBody.html +1 -0
  124. package/docs/interfaces/interfaces_MultipleValidation.CanceledMultipleValidationJob.html +1 -0
  125. package/docs/interfaces/interfaces_MultipleValidation.CreatedMultipleValidationJob.html +1 -0
  126. package/docs/interfaces/interfaces_MultipleValidation.IMultipleValidationClient.html +1 -0
  127. package/docs/interfaces/interfaces_MultipleValidation.MultipleValidationJob.html +1 -0
  128. package/docs/interfaces/interfaces_MultipleValidation.MultipleValidationJobsListResponse.html +1 -0
  129. package/docs/interfaces/interfaces_MultipleValidation.MultipleValidationJobsListResult.html +1 -0
  130. package/docs/interfaces/interfaces_MultipleValidation.PagesList.html +1 -0
  131. package/docs/interfaces/interfaces_Options.default.html +1 -0
  132. package/docs/interfaces/interfaces_RequestOptions.default.html +1 -0
  133. package/docs/interfaces/interfaces_StatsOptions.Stat.html +1 -0
  134. package/docs/interfaces/interfaces_StatsOptions.StatsOptions.html +1 -0
  135. package/docs/interfaces/interfaces_StatsOptions.StatsQuery.html +1 -0
  136. package/docs/interfaces/interfaces_Supressions.BounceData.html +1 -0
  137. package/docs/interfaces/interfaces_Supressions.ComplaintData.html +1 -0
  138. package/docs/interfaces/interfaces_Supressions.UnsubscribeData.html +1 -0
  139. package/docs/interfaces/interfaces_Supressions.WhiteListData.html +1 -0
  140. package/docs/interfaces/interfaces_Validate.ValidationResponse.html +1 -0
  141. package/docs/interfaces/interfaces_Validate.ValidationResult.html +1 -0
  142. package/docs/interfaces/interfaces_Webhooks.APIWebhook.html +1 -0
  143. package/docs/interfaces/interfaces_Webhooks.ValidationResponse.html +1 -0
  144. package/docs/interfaces/interfaces_Webhooks.WebhookList.html +1 -0
  145. package/docs/interfaces/interfaces_Webhooks.WebhookResponse.html +1 -0
  146. package/docs/interfaces/interfaces_Webhooks.WebhookResponseBody.html +1 -0
  147. package/docs/interfaces/interfaces_Webhooks.WebhooksQuery.html +1 -0
  148. package/docs/interfaces/interfaces_lists.CreateUpdateList.html +1 -0
  149. package/docs/interfaces/interfaces_lists.DestroyedList.html +1 -0
  150. package/docs/interfaces/interfaces_lists.ListsQuery.html +1 -0
  151. package/docs/interfaces/interfaces_lists.MailingList.html +1 -0
  152. package/docs/interfaces/interfaces_mailListMembers.CreateUpdateMailListMembers.html +1 -0
  153. package/docs/interfaces/interfaces_mailListMembers.CreateUpdateMailListMembersReq.html +1 -0
  154. package/docs/interfaces/interfaces_mailListMembers.DeletedMember.html +1 -0
  155. package/docs/interfaces/interfaces_mailListMembers.IMailListsMembers.html +1 -0
  156. package/docs/interfaces/interfaces_mailListMembers.MailListMember.html +1 -0
  157. package/docs/interfaces/interfaces_mailListMembers.MailListMembersQuery.html +1 -0
  158. package/docs/interfaces/interfaces_mailListMembers.MultipleMembersData.html +1 -0
  159. package/docs/interfaces/interfaces_mailListMembers.MultipleMembersReqData.html +1 -0
  160. package/docs/interfaces/interfaces_mailListMembers.NewMultipleMembersResponse.html +1 -0
  161. package/docs/interfaces/interfaces_routes.CreateUpdateRouteData.html +1 -0
  162. package/docs/interfaces/interfaces_routes.DestroyRouteResponse.html +1 -0
  163. package/docs/interfaces/interfaces_routes.Route.html +1 -0
  164. package/docs/interfaces/interfaces_routes.RoutesListQuery.html +1 -0
  165. package/docs/interfaces/interfaces_routes.UpdateRouteResponse.html +1 -0
  166. package/docs/modules/client.html +1 -0
  167. package/docs/modules/domains.html +1 -0
  168. package/docs/modules/domainsCredentials.html +1 -0
  169. package/docs/modules/domainsTemplates.html +1 -0
  170. package/docs/modules/error.html +1 -0
  171. package/docs/modules/events.html +1 -0
  172. package/docs/modules/interfaces_APIErrorOptions.html +1 -0
  173. package/docs/modules/interfaces_ApiResponse.html +1 -0
  174. package/docs/modules/interfaces_DomainCredentials.html +1 -0
  175. package/docs/modules/interfaces_DomainTemplates.html +1 -0
  176. package/docs/modules/interfaces_DomainTracking.html +1 -0
  177. package/docs/modules/interfaces_Domains.html +1 -0
  178. package/docs/modules/interfaces_Events.html +1 -0
  179. package/docs/modules/interfaces_IFormData.html +1 -0
  180. package/docs/modules/interfaces_IpPools.html +1 -0
  181. package/docs/modules/interfaces_Ips.html +1 -0
  182. package/docs/modules/interfaces_MultipleValidation.html +1 -0
  183. package/docs/modules/interfaces_Options.html +1 -0
  184. package/docs/modules/interfaces_RequestOptions.html +1 -0
  185. package/docs/modules/interfaces_StatsOptions.html +1 -0
  186. package/docs/modules/interfaces_Supressions.html +1 -0
  187. package/docs/modules/interfaces_Validate.html +1 -0
  188. package/docs/modules/interfaces_Webhooks.html +1 -0
  189. package/docs/modules/interfaces_lists.html +1 -0
  190. package/docs/modules/interfaces_mailListMembers.html +1 -0
  191. package/docs/modules/interfaces_routes.html +1 -0
  192. package/docs/modules/ip_pools.html +1 -0
  193. package/docs/modules/ips.html +1 -0
  194. package/docs/modules/lists.html +1 -0
  195. package/docs/modules/mailListMembers.html +1 -0
  196. package/docs/modules/messages.html +1 -0
  197. package/docs/modules/multipleValidation.html +1 -0
  198. package/docs/modules/request.html +1 -0
  199. package/docs/modules/routes.html +1 -0
  200. package/docs/modules/stats.html +1 -0
  201. package/docs/modules/suppressions.html +1 -0
  202. package/docs/modules/validate.html +1 -0
  203. package/docs/modules/webhooks.html +1 -0
  204. package/docs/modules.html +1 -0
  205. package/lib/client.ts +8 -1
  206. package/lib/domains.ts +7 -2
  207. package/lib/domainsTags.ts +165 -0
  208. package/lib/interfaces/DomainTags.ts +262 -0
  209. package/package.json +3 -3
  210. package/test/domains.test.ts +8 -1
  211. package/test/domainsTags.test.ts +345 -0
  212. package/tsconfig.json +2 -2
  213. package/docs/assets/css/main.css +0 -1
  214. package/docs/assets/js/main.js +0 -51
  215. package/docs/assets/js/search.json +0 -1
  216. package/docs/classes/_index_.mailgun.html +0 -294
  217. package/docs/classes/_lib_client_.client.html +0 -405
  218. package/docs/classes/_lib_domains_.domain.html +0 -422
  219. package/docs/classes/_lib_domains_.domainclient.html +0 -620
  220. package/docs/classes/_lib_error_.apierror.html +0 -362
  221. package/docs/classes/_lib_events_.eventclient.html +0 -465
  222. package/docs/classes/_lib_messages_.messagesclient.html +0 -327
  223. package/docs/classes/_lib_parse_.parseclient.html +0 -295
  224. package/docs/classes/_lib_request_.request.html +0 -698
  225. package/docs/classes/_lib_routes_.routesclient.html +0 -403
  226. package/docs/classes/_lib_stats_.stats.html +0 -301
  227. package/docs/classes/_lib_stats_.statsclient.html +0 -357
  228. package/docs/classes/_lib_suppressions_.bounce.html +0 -327
  229. package/docs/classes/_lib_suppressions_.complaint.html +0 -299
  230. package/docs/classes/_lib_suppressions_.suppressionclient.html +0 -599
  231. package/docs/classes/_lib_suppressions_.unsubscribe.html +0 -313
  232. package/docs/classes/_lib_validate_.validateclient.html +0 -292
  233. package/docs/classes/_lib_webhooks_.webhook.html +0 -281
  234. package/docs/classes/_lib_webhooks_.webhookclient.html +0 -539
  235. package/docs/globals.html +0 -199
  236. package/docs/interfaces/_lib_domains_.domaindata.html +0 -352
  237. package/docs/interfaces/_lib_interfaces_apierroroptions_.apierroroptions.html +0 -284
  238. package/docs/interfaces/_lib_interfaces_options_.options.html +0 -267
  239. package/docs/interfaces/_lib_interfaces_requestoptions_.requestoptions.html +0 -285
  240. package/docs/interfaces/_lib_interfaces_statsoptions_.statsoptions.html +0 -262
  241. package/docs/interfaces/_lib_interfaces_supressions_.bouncedata.html +0 -268
  242. package/docs/interfaces/_lib_interfaces_supressions_.complaintdata.html +0 -240
  243. package/docs/interfaces/_lib_interfaces_supressions_.unsubscribedata.html +0 -254
  244. package/docs/modules/_index_.html +0 -186
  245. package/docs/modules/_lib_client_.html +0 -208
  246. package/docs/modules/_lib_domains_.html +0 -199
  247. package/docs/modules/_lib_error_.html +0 -186
  248. package/docs/modules/_lib_events_.html +0 -250
  249. package/docs/modules/_lib_interfaces_apierroroptions_.html +0 -186
  250. package/docs/modules/_lib_interfaces_options_.html +0 -186
  251. package/docs/modules/_lib_interfaces_requestoptions_.html +0 -186
  252. package/docs/modules/_lib_interfaces_statsoptions_.html +0 -186
  253. package/docs/modules/_lib_interfaces_supressions_.html +0 -194
  254. package/docs/modules/_lib_messages_.html +0 -186
  255. package/docs/modules/_lib_parse_.html +0 -186
  256. package/docs/modules/_lib_request_.html +0 -259
  257. package/docs/modules/_lib_routes_.html +0 -186
  258. package/docs/modules/_lib_stats_.html +0 -190
  259. package/docs/modules/_lib_suppressions_.html +0 -262
  260. package/docs/modules/_lib_validate_.html +0 -186
  261. package/docs/modules/_lib_webhooks_.html +0 -190
  262. package/docs/modules/_webpack_config_.html +0 -227
  263. package/docs/modules/_webpack_release_config_.html +0 -227
package/lib/client.ts CHANGED
@@ -19,6 +19,7 @@ import { InputFormData } from './interfaces/IFormData';
19
19
  import DomainCredentialsClient from './domainsCredentials';
20
20
  import MultipleValidationClient from './multipleValidation';
21
21
  import DomainTemplatesClient from './domainsTemplates';
22
+ import DomainTagsClient from './domainsTags';
22
23
 
23
24
  export default class Client {
24
25
  private request;
@@ -55,9 +56,15 @@ export default class Client {
55
56
  const mailListsMembers = new MailListsMembers(this.request);
56
57
  const domainCredentialsClient = new DomainCredentialsClient(this.request);
57
58
  const domainTemplatesClient = new DomainTemplatesClient(this.request);
59
+ const domainTagsClient = new DomainTagsClient(this.request);
58
60
  const multipleValidationClient = new MultipleValidationClient(this.request);
59
61
 
60
- this.domains = new DomainClient(this.request, domainCredentialsClient, domainTemplatesClient);
62
+ this.domains = new DomainClient(
63
+ this.request,
64
+ domainCredentialsClient,
65
+ domainTemplatesClient,
66
+ domainTagsClient
67
+ );
61
68
  this.webhooks = new WebhookClient(this.request);
62
69
  this.events = new EventClient(this.request);
63
70
  this.stats = new StatsClient(this.request);
package/lib/domains.ts CHANGED
@@ -41,6 +41,8 @@ import { IDomainCredentials } from './interfaces/DomainCredentials';
41
41
  import { IDomainTemplatesClient } from './interfaces/DomainTemplates';
42
42
  import DomainCredentialsClient from './domainsCredentials';
43
43
  import DomainTemplatesClient from './domainsTemplates';
44
+ import { IDomainTagsClient } from './interfaces/DomainTags';
45
+ import DomainTagsClient from './domainsTags';
44
46
 
45
47
  export class Domain {
46
48
  name: string;
@@ -76,16 +78,19 @@ export class Domain {
76
78
  export default class DomainClient {
77
79
  request: Request;
78
80
  public domainCredentials: IDomainCredentials;
79
- public domainTemplates: IDomainTemplatesClient
81
+ public domainTemplates: IDomainTemplatesClient;
82
+ public domainTags: IDomainTagsClient;
80
83
 
81
84
  constructor(
82
85
  request: Request,
83
86
  domainCredentialsClient: DomainCredentialsClient,
84
- domainTemplatesClient: DomainTemplatesClient
87
+ domainTemplatesClient: DomainTemplatesClient,
88
+ domainTagsClient: DomainTagsClient
85
89
  ) {
86
90
  this.request = request;
87
91
  this.domainCredentials = domainCredentialsClient;
88
92
  this.domainTemplates = domainTemplatesClient;
93
+ this.domainTags = domainTagsClient;
89
94
  }
90
95
 
91
96
  private _parseMessage(response: DestroyedDomainResponse) : MessageResponse {
@@ -0,0 +1,165 @@
1
+ import urljoin from 'url-join';
2
+ import APIResponse from './interfaces/ApiResponse';
3
+ import Request from './request';
4
+
5
+ import {
6
+ DomainTagAPIResponseStatsItem,
7
+ DomainTagCountriesAggregation,
8
+ DomainTagCountriesAPIResponse,
9
+ DomainTagDevicesAggregation,
10
+ DomainTagDevicesAPIResponse,
11
+ DomainTagProvidersAggregation,
12
+ DomainTagProvidersAPIResponse,
13
+ DomainTagsItem,
14
+ DomainTagsItemInfo,
15
+ DomainTagsList,
16
+ DomainTagsMessageRes,
17
+ DomainTagsQuery,
18
+ DomainTagsResponseData,
19
+ DomainTagsStatisticQuery,
20
+ DomainTagStatAPIResponse,
21
+ DomainTagStatisticItem,
22
+ DomainTagStatisticResult,
23
+ IDomainTagsClient,
24
+ PagesList,
25
+ PagesListAccumulator,
26
+ ParsedPagesList,
27
+ Resolution
28
+ } from './interfaces/DomainTags';
29
+
30
+ export class DomainTag implements DomainTagsItem {
31
+ tag: string;
32
+ description: string;
33
+ 'first-seen': Date;
34
+ 'last-seen': Date;
35
+
36
+ constructor(tagInfo: DomainTagsItemInfo) {
37
+ this.tag = tagInfo.tag;
38
+ this.description = tagInfo.description;
39
+ this['first-seen'] = new Date(tagInfo['first-seen']);
40
+ this['last-seen'] = new Date(tagInfo['last-seen']);
41
+ }
42
+ }
43
+
44
+ export class DomainTagStatistic implements DomainTagStatisticResult {
45
+ tag: string;
46
+ description: string;
47
+ start: Date;
48
+ end: Date;
49
+ resolution: Resolution;
50
+ stats: DomainTagStatisticItem[];
51
+
52
+ constructor(tagStatisticInfo: DomainTagStatAPIResponse) {
53
+ this.tag = tagStatisticInfo.body.tag;
54
+ this.description = tagStatisticInfo.body.description;
55
+ this.start = new Date(tagStatisticInfo.body.start);
56
+ this.end = new Date(tagStatisticInfo.body.end);
57
+ this.resolution = tagStatisticInfo.body.resolution;
58
+ this.stats = tagStatisticInfo.body.stats.map(function (stat: DomainTagAPIResponseStatsItem) {
59
+ const res = { ...stat, time: new Date(stat.time) };
60
+ return res;
61
+ });
62
+ }
63
+ }
64
+
65
+ export default class DomainTagsClient implements IDomainTagsClient {
66
+ baseRoute: string;
67
+ request: Request;
68
+
69
+ constructor(request: Request) {
70
+ this.request = request;
71
+ this.baseRoute = '/v3/';
72
+ }
73
+
74
+ private _parsePageLinks(response: DomainTagsResponseData): ParsedPagesList {
75
+ const pages = Object.entries(response.body.paging as PagesList);
76
+ return pages.reduce(
77
+ (acc: PagesListAccumulator, entrie: [url: string, id: string]) => {
78
+ const id = entrie[0];
79
+ const url = entrie[1];
80
+ acc[id] = {
81
+ id,
82
+ url
83
+ };
84
+ return acc;
85
+ }, {}
86
+ ) as unknown as ParsedPagesList;
87
+ }
88
+
89
+ private _parseDomainTagsList(
90
+ response: DomainTagsResponseData
91
+ ): DomainTagsList {
92
+ return {
93
+ items: response.body.items.map((tagInfo) => new DomainTag(tagInfo)),
94
+ pages: this._parsePageLinks(response)
95
+ };
96
+ }
97
+
98
+ private _parseTagStatistic(
99
+ response: DomainTagStatAPIResponse
100
+ ): DomainTagStatistic {
101
+ return new DomainTagStatistic(response);
102
+ }
103
+
104
+ list(domain: string, query?: DomainTagsQuery): Promise<DomainTagsList> {
105
+ return this.request.get(urljoin(this.baseRoute, domain, '/tags'), query)
106
+ .then(
107
+ (res: APIResponse) => this._parseDomainTagsList(res as DomainTagsResponseData)
108
+ );
109
+ }
110
+
111
+ get(domain: string, tag: string): Promise<DomainTagsItem> {
112
+ return this.request.get(urljoin(this.baseRoute, domain, '/tags', tag))
113
+ .then(
114
+ (res: APIResponse) => new DomainTag(res.body)
115
+ );
116
+ }
117
+
118
+ update(domain: string, tag: string, description: string): Promise<DomainTagsMessageRes> {
119
+ return this.request.put(urljoin(this.baseRoute, domain, '/tags', tag), description)
120
+ .then(
121
+ (res: APIResponse) => res.body as DomainTagsMessageRes
122
+ );
123
+ }
124
+
125
+ destroy(
126
+ domain: string,
127
+ tag: string
128
+ ): Promise<DomainTagsMessageRes> {
129
+ return this.request.delete(`${this.baseRoute}${domain}/tags/${tag}`)
130
+ .then((res: APIResponse) => (
131
+ {
132
+ message: res.body.message,
133
+ status: res.status
134
+ } as DomainTagsMessageRes));
135
+ }
136
+
137
+ statistic(domain: string, tag: string, query: DomainTagsStatisticQuery)
138
+ : Promise<DomainTagStatistic> {
139
+ return this.request.get(urljoin(this.baseRoute, domain, '/tags', tag, 'stats'), query)
140
+ .then(
141
+ (res: APIResponse) => this._parseTagStatistic(res)
142
+ );
143
+ }
144
+
145
+ countries(domain: string, tag: string): Promise<DomainTagCountriesAggregation> {
146
+ return this.request.get(urljoin(this.baseRoute, domain, '/tags', tag, 'stats/aggregates/countries'))
147
+ .then(
148
+ (res: DomainTagCountriesAPIResponse) => res.body as DomainTagCountriesAggregation
149
+ );
150
+ }
151
+
152
+ providers(domain: string, tag: string): Promise<DomainTagProvidersAggregation> {
153
+ return this.request.get(urljoin(this.baseRoute, domain, '/tags', tag, 'stats/aggregates/providers'))
154
+ .then(
155
+ (res: DomainTagProvidersAPIResponse) => res.body as DomainTagProvidersAggregation
156
+ );
157
+ }
158
+
159
+ devices(domain: string, tag: string): Promise<DomainTagDevicesAggregation> {
160
+ return this.request.get(urljoin(this.baseRoute, domain, '/tags', tag, 'stats/aggregates/devices'))
161
+ .then(
162
+ (res: DomainTagDevicesAPIResponse) => res.body as DomainTagDevicesAggregation
163
+ );
164
+ }
165
+ }
@@ -0,0 +1,262 @@
1
+ /* eslint-disable camelcase */
2
+ import { DomainTagStatistic } from '../domainsTags';
3
+
4
+ export enum Resolution {
5
+ HOUR = 'hour',
6
+ DAY = 'day',
7
+ MONTH = 'month'
8
+ }
9
+ export interface DomainTagsQuery {
10
+ limit: number;
11
+ }
12
+
13
+ export interface DomainTagsStatisticQuery {
14
+ event: string;
15
+ start?: number;
16
+ end?: number;
17
+ resolution?: Resolution;
18
+ duration?: string;
19
+ }
20
+
21
+ export interface DomainTagsItemInfo {
22
+ tag: string,
23
+ description: string,
24
+ 'first-seen': string,
25
+ 'last-seen': string
26
+ }
27
+
28
+ export interface DomainTagsItem {
29
+ tag: string,
30
+ description: string,
31
+ 'first-seen': Date,
32
+ 'last-seen': Date
33
+ }
34
+
35
+ export interface PagesList {
36
+ previous: string;
37
+ first: string;
38
+ last: string;
39
+ next: string;
40
+ }
41
+
42
+ export interface ParsedPage{
43
+ id: string;
44
+ url: string
45
+ }
46
+ export interface ParsedPagesList {
47
+ previous: ParsedPage;
48
+ first: ParsedPage;
49
+ last: ParsedPage;
50
+ next: ParsedPage;
51
+ }
52
+
53
+ export interface TagsPage {
54
+ id: string;
55
+ url: string;
56
+ }
57
+
58
+ export interface PagesListAccumulator {
59
+ [index: string]: TagsPage
60
+ }
61
+ export interface DomainTagsResponseData {
62
+ status: number;
63
+ body: {
64
+ items: DomainTagsItemInfo[];
65
+ paging: PagesList
66
+ }
67
+ }
68
+
69
+ export interface DomainTagsList {
70
+ items: DomainTagsItem[];
71
+ pages: ParsedPagesList;
72
+ }
73
+
74
+ export interface DomainTagsMessageRes {
75
+ message: string;
76
+ status?: number;
77
+ }
78
+
79
+ export interface DomainTagAPIResponseStatsItem {
80
+ time:string
81
+ accepted?: {
82
+ incoming: number;
83
+ outgoing: number;
84
+ total: number
85
+ }
86
+ delivered?: {
87
+ smtp: number;
88
+ http: number;
89
+ optimized: number;
90
+ total: number;
91
+ };
92
+ opened?: {
93
+ total: number;
94
+ };
95
+ failed?: {
96
+ temporary:{
97
+ espblock: number;
98
+ total: number;
99
+ };
100
+ permanent: {
101
+ 'suppress-bounce': number;
102
+ 'suppress-unsubscribe': number;
103
+ 'suppress-complaint': number;
104
+ bounce: number;
105
+ 'delayed-bounce': number;
106
+ webhook: number;
107
+ optimized: number;
108
+ total: number;
109
+ };
110
+ },
111
+ clicked?: {
112
+ total: number;
113
+ };
114
+ unsubscribed?: {
115
+ total: number;
116
+ };
117
+ complained?: {
118
+ total: number;
119
+ };
120
+ stored?: {
121
+ total: number;
122
+ }
123
+ }
124
+ export interface DomainTagStatAPIResponse {
125
+ body:{
126
+ tag: string;
127
+ description: string;
128
+ start: string;
129
+ end: string;
130
+ resolution: Resolution;
131
+ stats: DomainTagAPIResponseStatsItem[];
132
+ }
133
+ }
134
+ export interface DomainTagStatisticItem extends Omit <DomainTagAPIResponseStatsItem, 'time'>{
135
+ time: Date
136
+ }
137
+
138
+ export interface DomainTagStatisticResult {
139
+ tag: string;
140
+ description: string;
141
+ start: Date;
142
+ end: Date;
143
+ resolution: Resolution;
144
+ stats: DomainTagStatisticItem[];
145
+ }
146
+
147
+ export interface DomainTagCountriesAPIResponse {
148
+ body: {
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
+ }
162
+
163
+ export interface DomainTagCountriesAggregation {
164
+ tag:string;
165
+ country: {
166
+ [key: string]: {
167
+ clicked: number;
168
+ complained: number;
169
+ opened: number;
170
+ unique_clicked: number;
171
+ unique_opened: number;
172
+ unsubscribed: number;
173
+ }
174
+ }
175
+ }
176
+
177
+ export interface DomainTagProvidersAPIResponse {
178
+ body: {
179
+ tag:string;
180
+ provider: {
181
+ [key:string]: {
182
+ accepted: number;
183
+ clicked: number;
184
+ complained: number;
185
+ delivered: number;
186
+ opened: number;
187
+ unique_clicked: number;
188
+ unique_opened: number;
189
+ unsubscribed: number;
190
+ }
191
+ };
192
+ }
193
+ status: number;
194
+ }
195
+
196
+ export interface DomainTagProvidersAggregation {
197
+ tag: string;
198
+ provider: {
199
+ [key: string]: {
200
+ accepted: number;
201
+ clicked: number;
202
+ complained: number;
203
+ delivered: number;
204
+ opened: number;
205
+ unique_clicked: number;
206
+ unique_opened: number;
207
+ unsubscribed: number;
208
+ }
209
+ };
210
+ }
211
+
212
+ export interface DeviceStatistic {
213
+ clicked: number;
214
+ complained: number;
215
+ opened: number;
216
+ unique_clicked: number;
217
+ unique_opened: number;
218
+ unsubscribed: number;
219
+ }
220
+
221
+ export interface DevicesTypes {
222
+ desktop: DeviceStatistic;
223
+ mobile: DeviceStatistic;
224
+ tablet: DeviceStatistic;
225
+ unknown: DeviceStatistic;
226
+ }
227
+
228
+ export interface DomainTagDevicesAPIResponse {
229
+ body: {
230
+ tag:string;
231
+ device: DevicesTypes;
232
+ }
233
+ status: number;
234
+ }
235
+
236
+ export interface DomainTagDevicesAggregation {
237
+ tag: string;
238
+ device: DevicesTypes;
239
+ }
240
+
241
+
242
+ export interface IDomainTagsClient {
243
+ list(domain: string): Promise<DomainTagsList>
244
+ get(domain: string, tag: string): Promise<DomainTagsItem>
245
+ update(
246
+ domain: string,
247
+ tag: string,
248
+ description: string
249
+ ): Promise<DomainTagsMessageRes>
250
+ destroy(
251
+ domain: string,
252
+ tag: string
253
+ ): Promise<DomainTagsMessageRes>
254
+ statistic(
255
+ domain: string,
256
+ tag: string,
257
+ query: DomainTagsStatisticQuery
258
+ ): Promise<DomainTagStatistic>
259
+ countries(domain: string, tag: string): Promise<DomainTagCountriesAggregation>
260
+ providers(domain: string, tag: string): Promise<DomainTagProvidersAggregation>
261
+ devices(domain: string, tag: string): Promise<DomainTagDevicesAggregation>
262
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mailgun.js",
3
- "version": "4.1.5",
3
+ "version": "4.2.2",
4
4
  "main": "dist/mailgun.node.js",
5
5
  "browser": "dist/mailgun.web.js",
6
6
  "types": "dist/index.d.ts",
@@ -60,7 +60,7 @@
60
60
  "form-data": "^3.0.1",
61
61
  "husky": "^7.0.1",
62
62
  "json-loader": "^0.5.7",
63
- "mocha": "^9.1.3",
63
+ "mocha": "^9.2.0",
64
64
  "mocha-multi": "^1.1.3",
65
65
  "nock": "^13.0.4",
66
66
  "nyc": "^15.1.0",
@@ -69,7 +69,7 @@
69
69
  "terser-webpack-plugin": "^5.2.0",
70
70
  "ts-loader": "^8.0.12",
71
71
  "ts-node": "^9.1.1",
72
- "typedoc": "^0.20.36",
72
+ "typedoc": "^0.22.11",
73
73
  "typescript": "^4.1.3",
74
74
  "webpack": "^5.3.2",
75
75
  "webpack-cli": "^4.1.0"
@@ -15,6 +15,7 @@ import {
15
15
  UpdatedDKIMSelectorResponse, UpdatedWebPrefixResponse
16
16
  } from '../lib/interfaces/Domains';
17
17
  import DomainTemplatesClient from '../lib/domainsTemplates';
18
+ import DomainTagsClient from '../lib/domainsTags';
18
19
 
19
20
  // TODO: fix types
20
21
  describe('DomainClient', function () {
@@ -25,7 +26,13 @@ describe('DomainClient', function () {
25
26
  const reqObject = new Request({ url: 'https://api.mailgun.net' } as RequestOptions, formData as InputFormData);
26
27
  const domainCredentialsClient = new DomainCredentialsClient(reqObject);
27
28
  const domainTemplatesClient = new DomainTemplatesClient(reqObject);
28
- client = new DomainClient(reqObject, domainCredentialsClient, domainTemplatesClient);
29
+ const domainTagsClient = new DomainTagsClient(reqObject);
30
+ client = new DomainClient(
31
+ reqObject,
32
+ domainCredentialsClient,
33
+ domainTemplatesClient,
34
+ domainTagsClient
35
+ );
29
36
  api = nock('https://api.mailgun.net');
30
37
  });
31
38