mailgun.js 4.1.3 → 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.
Files changed (268) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +1 -1
  3. package/dist/lib/domains.d.ts +4 -1
  4. package/dist/lib/domainsTags.d.ts +34 -0
  5. package/dist/lib/domainsTemplates.d.ts +2 -2
  6. package/dist/lib/interfaces/DomainTags.d.ts +228 -0
  7. package/dist/lib/interfaces/DomainTemplates.d.ts +4 -1
  8. package/dist/mailgun.node.js +2 -2
  9. package/dist/mailgun.node.js.LICENSE.txt +1 -1
  10. package/dist/mailgun.web.js +2 -2
  11. package/dist/mailgun.web.js.LICENSE.txt +1 -1
  12. package/docs/.nojekyll +1 -0
  13. package/docs/assets/highlight.css +127 -0
  14. package/docs/assets/icons.css +1043 -0
  15. package/docs/assets/{images/icons.png → icons.png} +0 -0
  16. package/docs/assets/{images/icons@2x.png → icons@2x.png} +0 -0
  17. package/docs/assets/main.js +52 -0
  18. package/docs/assets/search.js +1 -0
  19. package/docs/assets/style.css +1413 -0
  20. package/docs/assets/{images/widgets.png → widgets.png} +0 -0
  21. package/docs/assets/{images/widgets@2x.png → widgets@2x.png} +0 -0
  22. package/docs/classes/client.default.html +1 -0
  23. package/docs/classes/domains.Domain.html +1 -0
  24. package/docs/classes/domains.default.html +1 -0
  25. package/docs/classes/domainsCredentials.default.html +1 -0
  26. package/docs/classes/domainsTemplates.DomainTemplateItem.html +1 -0
  27. package/docs/classes/domainsTemplates.default.html +1 -0
  28. package/docs/classes/error.default.html +6 -0
  29. package/docs/classes/events.default.html +1 -0
  30. package/docs/classes/ip_pools.default.html +1 -0
  31. package/docs/classes/ips.default.html +1 -0
  32. package/docs/classes/lists.default.html +1 -0
  33. package/docs/classes/mailListMembers.default.html +1 -0
  34. package/docs/classes/messages.default.html +1 -0
  35. package/docs/classes/multipleValidation.default.html +1 -0
  36. package/docs/classes/request.default.html +1 -0
  37. package/docs/classes/routes.default.html +1 -0
  38. package/docs/classes/stats.default.html +1 -0
  39. package/docs/classes/suppressions.default.html +1 -0
  40. package/docs/classes/validate.default.html +1 -0
  41. package/docs/classes/webhooks.default.html +1 -0
  42. package/docs/enums/interfaces_DomainTemplates.Pages.html +1 -0
  43. package/docs/enums/interfaces_DomainTemplates.YesNo.html +1 -0
  44. package/docs/index.html +1140 -1308
  45. package/docs/interfaces/interfaces_APIErrorOptions.default.html +1 -0
  46. package/docs/interfaces/interfaces_ApiResponse.default.html +1 -0
  47. package/docs/interfaces/interfaces_DomainCredentials.CreatedUpdatedDomainCredentialsResponse.html +1 -0
  48. package/docs/interfaces/interfaces_DomainCredentials.DeletedDomainCredentialsResponse.html +1 -0
  49. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentials.html +1 -0
  50. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsItem.html +1 -0
  51. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsList.html +1 -0
  52. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsQuery.html +1 -0
  53. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsResponseData.html +1 -0
  54. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsResult.html +1 -0
  55. package/docs/interfaces/interfaces_DomainCredentials.IDomainCredentials.html +1 -0
  56. package/docs/interfaces/interfaces_DomainCredentials.UpdateDomainCredentialsData.html +1 -0
  57. package/docs/interfaces/interfaces_DomainTemplates.CreateDomainTemplateAPIResponse.html +1 -0
  58. package/docs/interfaces/interfaces_DomainTemplates.CreateDomainTemplateVersionAPIResponse.html +1 -0
  59. package/docs/interfaces/interfaces_DomainTemplates.CreateDomainTemplateVersionResult.html +1 -0
  60. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplate.html +1 -0
  61. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateData.html +1 -0
  62. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateUpdateData.html +1 -0
  63. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateUpdateVersionData.html +1 -0
  64. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateVersionData.html +1 -0
  65. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplatesQuery.html +1 -0
  66. package/docs/interfaces/interfaces_DomainTemplates.GetDomainTemplateAPIResponse.html +1 -0
  67. package/docs/interfaces/interfaces_DomainTemplates.IDomainTemplatesClient.html +1 -0
  68. package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplateVersionsAPIResponse.html +1 -0
  69. package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplateVersionsResult.html +1 -0
  70. package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplatesAPIResponse.html +1 -0
  71. package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplatesResult.html +1 -0
  72. package/docs/interfaces/interfaces_DomainTemplates.MutateDomainTemplateVersionAPIResponse.html +1 -0
  73. package/docs/interfaces/interfaces_DomainTemplates.MutateDomainTemplateVersionResult.html +1 -0
  74. package/docs/interfaces/interfaces_DomainTemplates.NotificationAPIResponse.html +1 -0
  75. package/docs/interfaces/interfaces_DomainTemplates.NotificationResult.html +1 -0
  76. package/docs/interfaces/interfaces_DomainTemplates.ShortTemplateVersion.html +1 -0
  77. package/docs/interfaces/interfaces_DomainTemplates.TemplateQuery.html +1 -0
  78. package/docs/interfaces/interfaces_DomainTemplates.TemplateVersion.html +1 -0
  79. package/docs/interfaces/interfaces_DomainTemplates.UpdateOrDeleteDomainTemplateAPIResponse.html +1 -0
  80. package/docs/interfaces/interfaces_DomainTemplates.UpdateOrDeleteDomainTemplateResult.html +1 -0
  81. package/docs/interfaces/interfaces_DomainTracking.ClickTrackingInfo.html +1 -0
  82. package/docs/interfaces/interfaces_DomainTracking.DomainTrackingData.html +1 -0
  83. package/docs/interfaces/interfaces_DomainTracking.DomainTrackingResponse.html +1 -0
  84. package/docs/interfaces/interfaces_DomainTracking.OpenTrackingInfo.html +1 -0
  85. package/docs/interfaces/interfaces_DomainTracking.UnsubscribeTrackingInfo.html +1 -0
  86. package/docs/interfaces/interfaces_DomainTracking.UpdateDomainTrackingResponse.html +1 -0
  87. package/docs/interfaces/interfaces_DomainTracking.UpdatedOpenTracking.html +1 -0
  88. package/docs/interfaces/interfaces_Domains.ConnectionSettings.html +1 -0
  89. package/docs/interfaces/interfaces_Domains.ConnectionSettingsResponse.html +1 -0
  90. package/docs/interfaces/interfaces_Domains.DKIMAuthorityInfo.html +1 -0
  91. package/docs/interfaces/interfaces_Domains.DKIMSelectorInfo.html +1 -0
  92. package/docs/interfaces/interfaces_Domains.DNSRecord.html +1 -0
  93. package/docs/interfaces/interfaces_Domains.DestroyedDomainResponse.html +1 -0
  94. package/docs/interfaces/interfaces_Domains.DomainData.html +1 -0
  95. package/docs/interfaces/interfaces_Domains.DomainInfo.html +1 -0
  96. package/docs/interfaces/interfaces_Domains.DomainListResponseData.html +1 -0
  97. package/docs/interfaces/interfaces_Domains.DomainResponseData.html +1 -0
  98. package/docs/interfaces/interfaces_Domains.DomainShortData.html +1 -0
  99. package/docs/interfaces/interfaces_Domains.DomainsListItem.html +1 -0
  100. package/docs/interfaces/interfaces_Domains.DomainsQuery.html +1 -0
  101. package/docs/interfaces/interfaces_Domains.MessageResponse.html +1 -0
  102. package/docs/interfaces/interfaces_Domains.ReplacementForPool.html +1 -0
  103. package/docs/interfaces/interfaces_Domains.UpdatedConnectionSettings.html +1 -0
  104. package/docs/interfaces/interfaces_Domains.UpdatedConnectionSettingsRes.html +1 -0
  105. package/docs/interfaces/interfaces_Domains.UpdatedDKIMAuthority.html +1 -0
  106. package/docs/interfaces/interfaces_Domains.UpdatedDKIMAuthorityResponse.html +1 -0
  107. package/docs/interfaces/interfaces_Domains.UpdatedDKIMSelectorResponse.html +1 -0
  108. package/docs/interfaces/interfaces_Domains.UpdatedWebPrefix.html +1 -0
  109. package/docs/interfaces/interfaces_Domains.UpdatedWebPrefixResponse.html +1 -0
  110. package/docs/interfaces/interfaces_Domains.WebPrefixInfo.html +1 -0
  111. package/docs/interfaces/interfaces_Events.DomainEvent.html +1 -0
  112. package/docs/interfaces/interfaces_Events.EventsList.html +1 -0
  113. package/docs/interfaces/interfaces_Events.EventsPage.html +1 -0
  114. package/docs/interfaces/interfaces_Events.EventsResponse.html +1 -0
  115. package/docs/interfaces/interfaces_Events.PagesList.html +1 -0
  116. package/docs/interfaces/interfaces_Events.PagesListAccumulator.html +1 -0
  117. package/docs/interfaces/interfaces_Events.ParsedPage.html +1 -0
  118. package/docs/interfaces/interfaces_Events.ParsedPagesList.html +1 -0
  119. package/docs/interfaces/interfaces_IFormData.IFormDataOptions.html +1 -0
  120. package/docs/interfaces/interfaces_IFormData.InputFormData.html +1 -0
  121. package/docs/interfaces/interfaces_IpPools.IpPool.html +1 -0
  122. package/docs/interfaces/interfaces_IpPools.IpPoolListResponse.html +1 -0
  123. package/docs/interfaces/interfaces_IpPools.IpPoolUpdateData.html +1 -0
  124. package/docs/interfaces/interfaces_Ips.IpData.html +1 -0
  125. package/docs/interfaces/interfaces_Ips.IpsListResponseBody.html +1 -0
  126. package/docs/interfaces/interfaces_MultipleValidation.CanceledMultipleValidationJob.html +1 -0
  127. package/docs/interfaces/interfaces_MultipleValidation.CreatedMultipleValidationJob.html +1 -0
  128. package/docs/interfaces/interfaces_MultipleValidation.IMultipleValidationClient.html +1 -0
  129. package/docs/interfaces/interfaces_MultipleValidation.MultipleValidationJob.html +1 -0
  130. package/docs/interfaces/interfaces_MultipleValidation.MultipleValidationJobsListResponse.html +1 -0
  131. package/docs/interfaces/interfaces_MultipleValidation.MultipleValidationJobsListResult.html +1 -0
  132. package/docs/interfaces/interfaces_MultipleValidation.PagesList.html +1 -0
  133. package/docs/interfaces/interfaces_Options.default.html +1 -0
  134. package/docs/interfaces/interfaces_RequestOptions.default.html +1 -0
  135. package/docs/interfaces/interfaces_StatsOptions.Stat.html +1 -0
  136. package/docs/interfaces/interfaces_StatsOptions.StatsOptions.html +1 -0
  137. package/docs/interfaces/interfaces_StatsOptions.StatsQuery.html +1 -0
  138. package/docs/interfaces/interfaces_Supressions.BounceData.html +1 -0
  139. package/docs/interfaces/interfaces_Supressions.ComplaintData.html +1 -0
  140. package/docs/interfaces/interfaces_Supressions.UnsubscribeData.html +1 -0
  141. package/docs/interfaces/interfaces_Supressions.WhiteListData.html +1 -0
  142. package/docs/interfaces/interfaces_Validate.ValidationResponse.html +1 -0
  143. package/docs/interfaces/interfaces_Validate.ValidationResult.html +1 -0
  144. package/docs/interfaces/interfaces_Webhooks.APIWebhook.html +1 -0
  145. package/docs/interfaces/interfaces_Webhooks.ValidationResponse.html +1 -0
  146. package/docs/interfaces/interfaces_Webhooks.WebhookList.html +1 -0
  147. package/docs/interfaces/interfaces_Webhooks.WebhookResponse.html +1 -0
  148. package/docs/interfaces/interfaces_Webhooks.WebhookResponseBody.html +1 -0
  149. package/docs/interfaces/interfaces_Webhooks.WebhooksQuery.html +1 -0
  150. package/docs/interfaces/interfaces_lists.CreateUpdateList.html +1 -0
  151. package/docs/interfaces/interfaces_lists.DestroyedList.html +1 -0
  152. package/docs/interfaces/interfaces_lists.ListsQuery.html +1 -0
  153. package/docs/interfaces/interfaces_lists.MailingList.html +1 -0
  154. package/docs/interfaces/interfaces_mailListMembers.CreateUpdateMailListMembers.html +1 -0
  155. package/docs/interfaces/interfaces_mailListMembers.CreateUpdateMailListMembersReq.html +1 -0
  156. package/docs/interfaces/interfaces_mailListMembers.DeletedMember.html +1 -0
  157. package/docs/interfaces/interfaces_mailListMembers.IMailListsMembers.html +1 -0
  158. package/docs/interfaces/interfaces_mailListMembers.MailListMember.html +1 -0
  159. package/docs/interfaces/interfaces_mailListMembers.MailListMembersQuery.html +1 -0
  160. package/docs/interfaces/interfaces_mailListMembers.MultipleMembersData.html +1 -0
  161. package/docs/interfaces/interfaces_mailListMembers.MultipleMembersReqData.html +1 -0
  162. package/docs/interfaces/interfaces_mailListMembers.NewMultipleMembersResponse.html +1 -0
  163. package/docs/interfaces/interfaces_routes.CreateUpdateRouteData.html +1 -0
  164. package/docs/interfaces/interfaces_routes.DestroyRouteResponse.html +1 -0
  165. package/docs/interfaces/interfaces_routes.Route.html +1 -0
  166. package/docs/interfaces/interfaces_routes.RoutesListQuery.html +1 -0
  167. package/docs/interfaces/interfaces_routes.UpdateRouteResponse.html +1 -0
  168. package/docs/modules/client.html +1 -0
  169. package/docs/modules/domains.html +1 -0
  170. package/docs/modules/domainsCredentials.html +1 -0
  171. package/docs/modules/domainsTemplates.html +1 -0
  172. package/docs/modules/error.html +1 -0
  173. package/docs/modules/events.html +1 -0
  174. package/docs/modules/interfaces_APIErrorOptions.html +1 -0
  175. package/docs/modules/interfaces_ApiResponse.html +1 -0
  176. package/docs/modules/interfaces_DomainCredentials.html +1 -0
  177. package/docs/modules/interfaces_DomainTemplates.html +1 -0
  178. package/docs/modules/interfaces_DomainTracking.html +1 -0
  179. package/docs/modules/interfaces_Domains.html +1 -0
  180. package/docs/modules/interfaces_Events.html +1 -0
  181. package/docs/modules/interfaces_IFormData.html +1 -0
  182. package/docs/modules/interfaces_IpPools.html +1 -0
  183. package/docs/modules/interfaces_Ips.html +1 -0
  184. package/docs/modules/interfaces_MultipleValidation.html +1 -0
  185. package/docs/modules/interfaces_Options.html +1 -0
  186. package/docs/modules/interfaces_RequestOptions.html +1 -0
  187. package/docs/modules/interfaces_StatsOptions.html +1 -0
  188. package/docs/modules/interfaces_Supressions.html +1 -0
  189. package/docs/modules/interfaces_Validate.html +1 -0
  190. package/docs/modules/interfaces_Webhooks.html +1 -0
  191. package/docs/modules/interfaces_lists.html +1 -0
  192. package/docs/modules/interfaces_mailListMembers.html +1 -0
  193. package/docs/modules/interfaces_routes.html +1 -0
  194. package/docs/modules/ip_pools.html +1 -0
  195. package/docs/modules/ips.html +1 -0
  196. package/docs/modules/lists.html +1 -0
  197. package/docs/modules/mailListMembers.html +1 -0
  198. package/docs/modules/messages.html +1 -0
  199. package/docs/modules/multipleValidation.html +1 -0
  200. package/docs/modules/request.html +1 -0
  201. package/docs/modules/routes.html +1 -0
  202. package/docs/modules/stats.html +1 -0
  203. package/docs/modules/suppressions.html +1 -0
  204. package/docs/modules/validate.html +1 -0
  205. package/docs/modules/webhooks.html +1 -0
  206. package/docs/modules.html +1 -0
  207. package/lib/client.ts +8 -1
  208. package/lib/domains.ts +7 -2
  209. package/lib/domainsTags.ts +165 -0
  210. package/lib/domainsTemplates.ts +3 -2
  211. package/lib/interfaces/DomainTags.ts +262 -0
  212. package/lib/interfaces/DomainTemplates.ts +5 -1
  213. package/lib/request.ts +4 -2
  214. package/package.json +3 -3
  215. package/test/domains.test.ts +8 -1
  216. package/test/domainsTags.test.ts +345 -0
  217. package/tsconfig.json +2 -2
  218. package/docs/assets/css/main.css +0 -1
  219. package/docs/assets/js/main.js +0 -51
  220. package/docs/assets/js/search.json +0 -1
  221. package/docs/classes/_index_.mailgun.html +0 -294
  222. package/docs/classes/_lib_client_.client.html +0 -405
  223. package/docs/classes/_lib_domains_.domain.html +0 -422
  224. package/docs/classes/_lib_domains_.domainclient.html +0 -620
  225. package/docs/classes/_lib_error_.apierror.html +0 -362
  226. package/docs/classes/_lib_events_.eventclient.html +0 -465
  227. package/docs/classes/_lib_messages_.messagesclient.html +0 -327
  228. package/docs/classes/_lib_parse_.parseclient.html +0 -295
  229. package/docs/classes/_lib_request_.request.html +0 -698
  230. package/docs/classes/_lib_routes_.routesclient.html +0 -403
  231. package/docs/classes/_lib_stats_.stats.html +0 -301
  232. package/docs/classes/_lib_stats_.statsclient.html +0 -357
  233. package/docs/classes/_lib_suppressions_.bounce.html +0 -327
  234. package/docs/classes/_lib_suppressions_.complaint.html +0 -299
  235. package/docs/classes/_lib_suppressions_.suppressionclient.html +0 -599
  236. package/docs/classes/_lib_suppressions_.unsubscribe.html +0 -313
  237. package/docs/classes/_lib_validate_.validateclient.html +0 -292
  238. package/docs/classes/_lib_webhooks_.webhook.html +0 -281
  239. package/docs/classes/_lib_webhooks_.webhookclient.html +0 -539
  240. package/docs/globals.html +0 -199
  241. package/docs/interfaces/_lib_domains_.domaindata.html +0 -352
  242. package/docs/interfaces/_lib_interfaces_apierroroptions_.apierroroptions.html +0 -284
  243. package/docs/interfaces/_lib_interfaces_options_.options.html +0 -267
  244. package/docs/interfaces/_lib_interfaces_requestoptions_.requestoptions.html +0 -285
  245. package/docs/interfaces/_lib_interfaces_statsoptions_.statsoptions.html +0 -262
  246. package/docs/interfaces/_lib_interfaces_supressions_.bouncedata.html +0 -268
  247. package/docs/interfaces/_lib_interfaces_supressions_.complaintdata.html +0 -240
  248. package/docs/interfaces/_lib_interfaces_supressions_.unsubscribedata.html +0 -254
  249. package/docs/modules/_index_.html +0 -186
  250. package/docs/modules/_lib_client_.html +0 -208
  251. package/docs/modules/_lib_domains_.html +0 -199
  252. package/docs/modules/_lib_error_.html +0 -186
  253. package/docs/modules/_lib_events_.html +0 -250
  254. package/docs/modules/_lib_interfaces_apierroroptions_.html +0 -186
  255. package/docs/modules/_lib_interfaces_options_.html +0 -186
  256. package/docs/modules/_lib_interfaces_requestoptions_.html +0 -186
  257. package/docs/modules/_lib_interfaces_statsoptions_.html +0 -186
  258. package/docs/modules/_lib_interfaces_supressions_.html +0 -194
  259. package/docs/modules/_lib_messages_.html +0 -186
  260. package/docs/modules/_lib_parse_.html +0 -186
  261. package/docs/modules/_lib_request_.html +0 -259
  262. package/docs/modules/_lib_routes_.html +0 -186
  263. package/docs/modules/_lib_stats_.html +0 -190
  264. package/docs/modules/_lib_suppressions_.html +0 -262
  265. package/docs/modules/_lib_validate_.html +0 -186
  266. package/docs/modules/_lib_webhooks_.html +0 -190
  267. package/docs/modules/_webpack_config_.html +0 -227
  268. 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
+ }
@@ -22,6 +22,7 @@ import {
22
22
  NotificationAPIResponse,
23
23
  NotificationResult,
24
24
  ShortTemplateVersion,
25
+ TemplateQuery,
25
26
  TemplateVersion,
26
27
  UpdateOrDeleteDomainTemplateAPIResponse,
27
28
  UpdateOrDeleteDomainTemplateResult
@@ -146,8 +147,8 @@ export default class DomainTemplatesClient implements IDomainTemplatesClient {
146
147
  );
147
148
  }
148
149
 
149
- get(domain: string, templateName: string): Promise<DomainTemplateItem> {
150
- return this.request.get(urljoin(this.baseRoute, domain, '/templates/', templateName))
150
+ get(domain: string, templateName: string, query?: TemplateQuery): Promise<DomainTemplateItem> {
151
+ return this.request.get(urljoin(this.baseRoute, domain, '/templates/', templateName), query)
151
152
  .then(
152
153
  (res: GetDomainTemplateAPIResponse) => new DomainTemplateItem(res.body.template)
153
154
  );
@@ -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
+ }
@@ -45,6 +45,10 @@ export interface DomainTemplatesQuery {
45
45
  p: string;
46
46
  }
47
47
 
48
+ export interface TemplateQuery {
49
+ active: YesNo;
50
+ }
51
+
48
52
  export interface ShortTemplateVersion {
49
53
  tag: string;
50
54
  engine: string;
@@ -202,7 +206,7 @@ export interface ListDomainTemplateVersionsResult {
202
206
 
203
207
  export interface IDomainTemplatesClient {
204
208
  list(domain: string, query?: DomainTemplatesQuery): Promise<ListDomainTemplatesResult>
205
- get(domain: string, templateName: string): Promise<DomainTemplateItem>
209
+ get(domain: string, templateName: string, query: TemplateQuery): Promise<DomainTemplateItem>
206
210
  create(domain: string, data: DomainTemplateData): Promise<DomainTemplateItem>
207
211
  update(
208
212
  domain: string,
package/lib/request.ts CHANGED
@@ -83,7 +83,9 @@ class Request {
83
83
  params.searchParams = options.query;
84
84
  delete params.query;
85
85
  }
86
-
86
+ console.log('url --------->', urljoin(this.url, url));
87
+ console.log('method --------->', method);
88
+ console.log('params --------->', params);
87
89
  const response = await ky(
88
90
  urljoin(this.url, url),
89
91
  {
@@ -111,7 +113,7 @@ class Request {
111
113
  body: await response?.json(),
112
114
  status: response?.status
113
115
  };
114
-
116
+ console.log('res ------------->', res);
115
117
  return res;
116
118
  }
117
119
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mailgun.js",
3
- "version": "4.1.3",
3
+ "version": "4.2.0",
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