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.
- package/CHANGELOG.md +44 -0
- package/README.md +128 -27
- 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/docs/.nojekyll +1 -0
- package/docs/assets/highlight.css +127 -0
- package/docs/assets/icons.css +1043 -0
- package/docs/assets/{images/icons.png → icons.png} +0 -0
- package/docs/assets/{images/icons@2x.png → icons@2x.png} +0 -0
- package/docs/assets/main.js +52 -0
- package/docs/assets/search.js +1 -0
- package/docs/assets/style.css +1413 -0
- package/docs/assets/{images/widgets.png → widgets.png} +0 -0
- package/docs/assets/{images/widgets@2x.png → widgets@2x.png} +0 -0
- package/docs/classes/client.default.html +1 -0
- package/docs/classes/domains.Domain.html +1 -0
- package/docs/classes/domains.default.html +1 -0
- package/docs/classes/domainsCredentials.default.html +1 -0
- package/docs/classes/domainsTemplates.DomainTemplateItem.html +1 -0
- package/docs/classes/domainsTemplates.default.html +1 -0
- package/docs/classes/error.default.html +6 -0
- package/docs/classes/events.default.html +1 -0
- package/docs/classes/ip_pools.default.html +1 -0
- package/docs/classes/ips.default.html +1 -0
- package/docs/classes/lists.default.html +1 -0
- package/docs/classes/mailListMembers.default.html +1 -0
- package/docs/classes/messages.default.html +1 -0
- package/docs/classes/multipleValidation.default.html +1 -0
- package/docs/classes/request.default.html +1 -0
- package/docs/classes/routes.default.html +1 -0
- package/docs/classes/stats.default.html +1 -0
- package/docs/classes/suppressions.default.html +1 -0
- package/docs/classes/validate.default.html +1 -0
- package/docs/classes/webhooks.default.html +1 -0
- package/docs/enums/interfaces_DomainTemplates.Pages.html +1 -0
- package/docs/enums/interfaces_DomainTemplates.YesNo.html +1 -0
- package/docs/index.html +1140 -1308
- package/docs/interfaces/interfaces_APIErrorOptions.default.html +1 -0
- package/docs/interfaces/interfaces_ApiResponse.default.html +1 -0
- package/docs/interfaces/interfaces_DomainCredentials.CreatedUpdatedDomainCredentialsResponse.html +1 -0
- package/docs/interfaces/interfaces_DomainCredentials.DeletedDomainCredentialsResponse.html +1 -0
- package/docs/interfaces/interfaces_DomainCredentials.DomainCredentials.html +1 -0
- package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsItem.html +1 -0
- package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsList.html +1 -0
- package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsQuery.html +1 -0
- package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsResponseData.html +1 -0
- package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsResult.html +1 -0
- package/docs/interfaces/interfaces_DomainCredentials.IDomainCredentials.html +1 -0
- package/docs/interfaces/interfaces_DomainCredentials.UpdateDomainCredentialsData.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.CreateDomainTemplateAPIResponse.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.CreateDomainTemplateVersionAPIResponse.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.CreateDomainTemplateVersionResult.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.DomainTemplate.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateData.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateUpdateData.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateUpdateVersionData.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateVersionData.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.DomainTemplatesQuery.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.GetDomainTemplateAPIResponse.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.IDomainTemplatesClient.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplateVersionsAPIResponse.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplateVersionsResult.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplatesAPIResponse.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplatesResult.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.MutateDomainTemplateVersionAPIResponse.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.MutateDomainTemplateVersionResult.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.NotificationAPIResponse.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.NotificationResult.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.ShortTemplateVersion.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.TemplateQuery.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.TemplateVersion.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.UpdateOrDeleteDomainTemplateAPIResponse.html +1 -0
- package/docs/interfaces/interfaces_DomainTemplates.UpdateOrDeleteDomainTemplateResult.html +1 -0
- package/docs/interfaces/interfaces_DomainTracking.ClickTrackingInfo.html +1 -0
- package/docs/interfaces/interfaces_DomainTracking.DomainTrackingData.html +1 -0
- package/docs/interfaces/interfaces_DomainTracking.DomainTrackingResponse.html +1 -0
- package/docs/interfaces/interfaces_DomainTracking.OpenTrackingInfo.html +1 -0
- package/docs/interfaces/interfaces_DomainTracking.UnsubscribeTrackingInfo.html +1 -0
- package/docs/interfaces/interfaces_DomainTracking.UpdateDomainTrackingResponse.html +1 -0
- package/docs/interfaces/interfaces_DomainTracking.UpdatedOpenTracking.html +1 -0
- package/docs/interfaces/interfaces_Domains.ConnectionSettings.html +1 -0
- package/docs/interfaces/interfaces_Domains.ConnectionSettingsResponse.html +1 -0
- package/docs/interfaces/interfaces_Domains.DKIMAuthorityInfo.html +1 -0
- package/docs/interfaces/interfaces_Domains.DKIMSelectorInfo.html +1 -0
- package/docs/interfaces/interfaces_Domains.DNSRecord.html +1 -0
- package/docs/interfaces/interfaces_Domains.DestroyedDomainResponse.html +1 -0
- package/docs/interfaces/interfaces_Domains.DomainData.html +1 -0
- package/docs/interfaces/interfaces_Domains.DomainInfo.html +1 -0
- package/docs/interfaces/interfaces_Domains.DomainListResponseData.html +1 -0
- package/docs/interfaces/interfaces_Domains.DomainResponseData.html +1 -0
- package/docs/interfaces/interfaces_Domains.DomainShortData.html +1 -0
- package/docs/interfaces/interfaces_Domains.DomainsListItem.html +1 -0
- package/docs/interfaces/interfaces_Domains.DomainsQuery.html +1 -0
- package/docs/interfaces/interfaces_Domains.MessageResponse.html +1 -0
- package/docs/interfaces/interfaces_Domains.ReplacementForPool.html +1 -0
- package/docs/interfaces/interfaces_Domains.UpdatedConnectionSettings.html +1 -0
- package/docs/interfaces/interfaces_Domains.UpdatedConnectionSettingsRes.html +1 -0
- package/docs/interfaces/interfaces_Domains.UpdatedDKIMAuthority.html +1 -0
- package/docs/interfaces/interfaces_Domains.UpdatedDKIMAuthorityResponse.html +1 -0
- package/docs/interfaces/interfaces_Domains.UpdatedDKIMSelectorResponse.html +1 -0
- package/docs/interfaces/interfaces_Domains.UpdatedWebPrefix.html +1 -0
- package/docs/interfaces/interfaces_Domains.UpdatedWebPrefixResponse.html +1 -0
- package/docs/interfaces/interfaces_Domains.WebPrefixInfo.html +1 -0
- package/docs/interfaces/interfaces_Events.DomainEvent.html +1 -0
- package/docs/interfaces/interfaces_Events.EventsList.html +1 -0
- package/docs/interfaces/interfaces_Events.EventsPage.html +1 -0
- package/docs/interfaces/interfaces_Events.EventsResponse.html +1 -0
- package/docs/interfaces/interfaces_Events.PagesList.html +1 -0
- package/docs/interfaces/interfaces_Events.PagesListAccumulator.html +1 -0
- package/docs/interfaces/interfaces_Events.ParsedPage.html +1 -0
- package/docs/interfaces/interfaces_Events.ParsedPagesList.html +1 -0
- package/docs/interfaces/interfaces_IFormData.IFormDataOptions.html +1 -0
- package/docs/interfaces/interfaces_IFormData.InputFormData.html +1 -0
- package/docs/interfaces/interfaces_IpPools.IpPool.html +1 -0
- package/docs/interfaces/interfaces_IpPools.IpPoolListResponse.html +1 -0
- package/docs/interfaces/interfaces_IpPools.IpPoolUpdateData.html +1 -0
- package/docs/interfaces/interfaces_Ips.IpData.html +1 -0
- package/docs/interfaces/interfaces_Ips.IpsListResponseBody.html +1 -0
- package/docs/interfaces/interfaces_MultipleValidation.CanceledMultipleValidationJob.html +1 -0
- package/docs/interfaces/interfaces_MultipleValidation.CreatedMultipleValidationJob.html +1 -0
- package/docs/interfaces/interfaces_MultipleValidation.IMultipleValidationClient.html +1 -0
- package/docs/interfaces/interfaces_MultipleValidation.MultipleValidationJob.html +1 -0
- package/docs/interfaces/interfaces_MultipleValidation.MultipleValidationJobsListResponse.html +1 -0
- package/docs/interfaces/interfaces_MultipleValidation.MultipleValidationJobsListResult.html +1 -0
- package/docs/interfaces/interfaces_MultipleValidation.PagesList.html +1 -0
- package/docs/interfaces/interfaces_Options.default.html +1 -0
- package/docs/interfaces/interfaces_RequestOptions.default.html +1 -0
- package/docs/interfaces/interfaces_StatsOptions.Stat.html +1 -0
- package/docs/interfaces/interfaces_StatsOptions.StatsOptions.html +1 -0
- package/docs/interfaces/interfaces_StatsOptions.StatsQuery.html +1 -0
- package/docs/interfaces/interfaces_Supressions.BounceData.html +1 -0
- package/docs/interfaces/interfaces_Supressions.ComplaintData.html +1 -0
- package/docs/interfaces/interfaces_Supressions.UnsubscribeData.html +1 -0
- package/docs/interfaces/interfaces_Supressions.WhiteListData.html +1 -0
- package/docs/interfaces/interfaces_Validate.ValidationResponse.html +1 -0
- package/docs/interfaces/interfaces_Validate.ValidationResult.html +1 -0
- package/docs/interfaces/interfaces_Webhooks.APIWebhook.html +1 -0
- package/docs/interfaces/interfaces_Webhooks.ValidationResponse.html +1 -0
- package/docs/interfaces/interfaces_Webhooks.WebhookList.html +1 -0
- package/docs/interfaces/interfaces_Webhooks.WebhookResponse.html +1 -0
- package/docs/interfaces/interfaces_Webhooks.WebhookResponseBody.html +1 -0
- package/docs/interfaces/interfaces_Webhooks.WebhooksQuery.html +1 -0
- package/docs/interfaces/interfaces_lists.CreateUpdateList.html +1 -0
- package/docs/interfaces/interfaces_lists.DestroyedList.html +1 -0
- package/docs/interfaces/interfaces_lists.ListsQuery.html +1 -0
- package/docs/interfaces/interfaces_lists.MailingList.html +1 -0
- package/docs/interfaces/interfaces_mailListMembers.CreateUpdateMailListMembers.html +1 -0
- package/docs/interfaces/interfaces_mailListMembers.CreateUpdateMailListMembersReq.html +1 -0
- package/docs/interfaces/interfaces_mailListMembers.DeletedMember.html +1 -0
- package/docs/interfaces/interfaces_mailListMembers.IMailListsMembers.html +1 -0
- package/docs/interfaces/interfaces_mailListMembers.MailListMember.html +1 -0
- package/docs/interfaces/interfaces_mailListMembers.MailListMembersQuery.html +1 -0
- package/docs/interfaces/interfaces_mailListMembers.MultipleMembersData.html +1 -0
- package/docs/interfaces/interfaces_mailListMembers.MultipleMembersReqData.html +1 -0
- package/docs/interfaces/interfaces_mailListMembers.NewMultipleMembersResponse.html +1 -0
- package/docs/interfaces/interfaces_routes.CreateUpdateRouteData.html +1 -0
- package/docs/interfaces/interfaces_routes.DestroyRouteResponse.html +1 -0
- package/docs/interfaces/interfaces_routes.Route.html +1 -0
- package/docs/interfaces/interfaces_routes.RoutesListQuery.html +1 -0
- package/docs/interfaces/interfaces_routes.UpdateRouteResponse.html +1 -0
- package/docs/modules/client.html +1 -0
- package/docs/modules/domains.html +1 -0
- package/docs/modules/domainsCredentials.html +1 -0
- package/docs/modules/domainsTemplates.html +1 -0
- package/docs/modules/error.html +1 -0
- package/docs/modules/events.html +1 -0
- package/docs/modules/interfaces_APIErrorOptions.html +1 -0
- package/docs/modules/interfaces_ApiResponse.html +1 -0
- package/docs/modules/interfaces_DomainCredentials.html +1 -0
- package/docs/modules/interfaces_DomainTemplates.html +1 -0
- package/docs/modules/interfaces_DomainTracking.html +1 -0
- package/docs/modules/interfaces_Domains.html +1 -0
- package/docs/modules/interfaces_Events.html +1 -0
- package/docs/modules/interfaces_IFormData.html +1 -0
- package/docs/modules/interfaces_IpPools.html +1 -0
- package/docs/modules/interfaces_Ips.html +1 -0
- package/docs/modules/interfaces_MultipleValidation.html +1 -0
- package/docs/modules/interfaces_Options.html +1 -0
- package/docs/modules/interfaces_RequestOptions.html +1 -0
- package/docs/modules/interfaces_StatsOptions.html +1 -0
- package/docs/modules/interfaces_Supressions.html +1 -0
- package/docs/modules/interfaces_Validate.html +1 -0
- package/docs/modules/interfaces_Webhooks.html +1 -0
- package/docs/modules/interfaces_lists.html +1 -0
- package/docs/modules/interfaces_mailListMembers.html +1 -0
- package/docs/modules/interfaces_routes.html +1 -0
- package/docs/modules/ip_pools.html +1 -0
- package/docs/modules/ips.html +1 -0
- package/docs/modules/lists.html +1 -0
- package/docs/modules/mailListMembers.html +1 -0
- package/docs/modules/messages.html +1 -0
- package/docs/modules/multipleValidation.html +1 -0
- package/docs/modules/request.html +1 -0
- package/docs/modules/routes.html +1 -0
- package/docs/modules/stats.html +1 -0
- package/docs/modules/suppressions.html +1 -0
- package/docs/modules/validate.html +1 -0
- package/docs/modules/webhooks.html +1 -0
- package/docs/modules.html +1 -0
- 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/package.json +3 -3
- package/test/domains.test.ts +8 -1
- package/test/domainsTags.test.ts +345 -0
- package/tsconfig.json +2 -2
- package/docs/assets/css/main.css +0 -1
- package/docs/assets/js/main.js +0 -51
- package/docs/assets/js/search.json +0 -1
- package/docs/classes/_index_.mailgun.html +0 -294
- package/docs/classes/_lib_client_.client.html +0 -405
- package/docs/classes/_lib_domains_.domain.html +0 -422
- package/docs/classes/_lib_domains_.domainclient.html +0 -620
- package/docs/classes/_lib_error_.apierror.html +0 -362
- package/docs/classes/_lib_events_.eventclient.html +0 -465
- package/docs/classes/_lib_messages_.messagesclient.html +0 -327
- package/docs/classes/_lib_parse_.parseclient.html +0 -295
- package/docs/classes/_lib_request_.request.html +0 -698
- package/docs/classes/_lib_routes_.routesclient.html +0 -403
- package/docs/classes/_lib_stats_.stats.html +0 -301
- package/docs/classes/_lib_stats_.statsclient.html +0 -357
- package/docs/classes/_lib_suppressions_.bounce.html +0 -327
- package/docs/classes/_lib_suppressions_.complaint.html +0 -299
- package/docs/classes/_lib_suppressions_.suppressionclient.html +0 -599
- package/docs/classes/_lib_suppressions_.unsubscribe.html +0 -313
- package/docs/classes/_lib_validate_.validateclient.html +0 -292
- package/docs/classes/_lib_webhooks_.webhook.html +0 -281
- package/docs/classes/_lib_webhooks_.webhookclient.html +0 -539
- package/docs/globals.html +0 -199
- package/docs/interfaces/_lib_domains_.domaindata.html +0 -352
- package/docs/interfaces/_lib_interfaces_apierroroptions_.apierroroptions.html +0 -284
- package/docs/interfaces/_lib_interfaces_options_.options.html +0 -267
- package/docs/interfaces/_lib_interfaces_requestoptions_.requestoptions.html +0 -285
- package/docs/interfaces/_lib_interfaces_statsoptions_.statsoptions.html +0 -262
- package/docs/interfaces/_lib_interfaces_supressions_.bouncedata.html +0 -268
- package/docs/interfaces/_lib_interfaces_supressions_.complaintdata.html +0 -240
- package/docs/interfaces/_lib_interfaces_supressions_.unsubscribedata.html +0 -254
- package/docs/modules/_index_.html +0 -186
- package/docs/modules/_lib_client_.html +0 -208
- package/docs/modules/_lib_domains_.html +0 -199
- package/docs/modules/_lib_error_.html +0 -186
- package/docs/modules/_lib_events_.html +0 -250
- package/docs/modules/_lib_interfaces_apierroroptions_.html +0 -186
- package/docs/modules/_lib_interfaces_options_.html +0 -186
- package/docs/modules/_lib_interfaces_requestoptions_.html +0 -186
- package/docs/modules/_lib_interfaces_statsoptions_.html +0 -186
- package/docs/modules/_lib_interfaces_supressions_.html +0 -194
- package/docs/modules/_lib_messages_.html +0 -186
- package/docs/modules/_lib_parse_.html +0 -186
- package/docs/modules/_lib_request_.html +0 -259
- package/docs/modules/_lib_routes_.html +0 -186
- package/docs/modules/_lib_stats_.html +0 -190
- package/docs/modules/_lib_suppressions_.html +0 -262
- package/docs/modules/_lib_validate_.html +0 -186
- package/docs/modules/_lib_webhooks_.html +0 -190
- package/docs/modules/_webpack_config_.html +0 -227
- 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(
|
|
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.
|
|
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.
|
|
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.
|
|
72
|
+
"typedoc": "^0.22.11",
|
|
73
73
|
"typescript": "^4.1.3",
|
|
74
74
|
"webpack": "^5.3.2",
|
|
75
75
|
"webpack-cli": "^4.1.0"
|
package/test/domains.test.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
|