mailgun.js 11.0.0 → 11.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [11.1.0](https://github.com/mailgun/mailgun.js/compare/v11.0.0...v11.1.0) (2025-01-09)
6
+
7
+
8
+ ### Features
9
+
10
+ * Adding Secure Tracking API support ([b5ff1e0](https://github.com/mailgun/mailgun.js/commits/b5ff1e0a4c6982b302add9b25712818082a62fd0))
11
+
5
12
  ## [11.0.0](https://github.com/mailgun/mailgun.js/compare/v10.4.0...v11.0.0) (2025-01-09)
6
13
 
7
14
 
@@ -1,25 +1,20 @@
1
1
  import { IDomainTemplatesClient, IDomainTagsClient, IDomainCredentials, IDomainsClient } from '../../Interfaces/Domains';
2
2
  import { APIResponse } from '../../Types/Common/ApiResponse';
3
3
  import Request from '../common/Request';
4
- import DomainCredentialsClient from './domainsCredentials';
5
- import DomainTemplatesClient from './domainsTemplates';
6
- import DomainTagsClient from './domainsTags';
7
4
  import { MessageResponse, DomainTrackingData, UpdatedOpenTracking, DomainsQuery, DomainInfo, ConnectionSettings, UpdatedConnectionSettings, OpenTrackingInfo, ClickTrackingInfo, UnsubscribeTrackingInfo, ReplacementForPool, DKIMAuthorityInfo, UpdatedDKIMAuthority, DKIMSelectorInfo, WebPrefixInfo, UpdatedWebPrefixResponse, TDomain, DomainUpdateInfo, DomainGetQuery, UpdatedDKIMSelectorResult } from '../../Types/Domains';
8
- import { ILogger } from '../../Interfaces';
5
+ import { ILogger, IDomainTrackingClient } from '../../Interfaces';
9
6
  export default class DomainsClient implements IDomainsClient {
10
7
  request: Request;
11
8
  domainCredentials: IDomainCredentials;
12
9
  domainTemplates: IDomainTemplatesClient;
13
10
  domainTags: IDomainTagsClient;
11
+ domainTracking: IDomainTrackingClient;
14
12
  private logger;
15
- constructor(request: Request, domainCredentialsClient: DomainCredentialsClient, domainTemplatesClient: DomainTemplatesClient, domainTagsClient: DomainTagsClient, logger?: ILogger);
13
+ constructor(request: Request, domainCredentialsClient: IDomainCredentials, domainTemplatesClient: IDomainTemplatesClient, domainTagsClient: IDomainTagsClient, domainTracking: IDomainTrackingClient, logger?: ILogger);
16
14
  private _handleBoolValues;
17
15
  private _parseMessage;
18
16
  private parseDomainList;
19
17
  private _parseDomain;
20
- private _parseTrackingSettings;
21
- private _parseTrackingUpdate;
22
- private _isOpenTrackingInfoWitPlace;
23
18
  list(query?: DomainsQuery): Promise<TDomain[]>;
24
19
  get(domain: string, query?: DomainGetQuery): Promise<TDomain>;
25
20
  create(data: DomainInfo): Promise<TDomain>;
@@ -28,7 +23,15 @@ export default class DomainsClient implements IDomainsClient {
28
23
  destroy(domain: string): Promise<MessageResponse>;
29
24
  getConnection(domain: string): Promise<ConnectionSettings>;
30
25
  updateConnection(domain: string, data: ConnectionSettings): Promise<UpdatedConnectionSettings>;
26
+ /**
27
+ * @deprecated 'domains.getTracking' method is deprecated, and will be removed.
28
+ * Please use 'domains.domainTracking.getTracking' instead.
29
+ */
31
30
  getTracking(domain: string): Promise<DomainTrackingData>;
31
+ /**
32
+ * @deprecated 'domains.updateTracking' method is deprecated, and will be removed.
33
+ * Please use 'domains.domainTracking.updateTracking' instead.
34
+ */
32
35
  updateTracking(domain: string, type: string, data: OpenTrackingInfo | ClickTrackingInfo | UnsubscribeTrackingInfo): Promise<UpdatedOpenTracking>;
33
36
  /**
34
37
  * @deprecated "domains.getIps" method is deprecated, and will be removed in the future releases.
@@ -0,0 +1,15 @@
1
+ import { IDomainTrackingClient } from '../../Interfaces';
2
+ import { ClickTrackingInfo, DomainTrackingData, GenerateDomainTrackingCertificateResponse, GetDomainTrackingCertificateResponse, OpenTrackingInfo, RegenerateDomainTrackingCertificateResponse, UnsubscribeTrackingInfo, UpdatedOpenTracking } from '../../Types';
3
+ import Request from '../common/Request';
4
+ export default class DomainTrackingClient implements IDomainTrackingClient {
5
+ request: Request;
6
+ constructor(request: Request);
7
+ private _parseTrackingSettings;
8
+ private _parseTrackingUpdate;
9
+ private _isOpenTrackingInfoWitPlace;
10
+ get(domain: string): Promise<GetDomainTrackingCertificateResponse>;
11
+ generate(domain: string): Promise<GenerateDomainTrackingCertificateResponse>;
12
+ regenerate(domain: string): Promise<RegenerateDomainTrackingCertificateResponse>;
13
+ getTracking(domain: string): Promise<DomainTrackingData>;
14
+ updateTracking(domain: string, type: string, data: OpenTrackingInfo | ClickTrackingInfo | UnsubscribeTrackingInfo): Promise<UpdatedOpenTracking>;
15
+ }
@@ -0,0 +1,8 @@
1
+ import { ClickTrackingInfo, DomainTrackingData, GenerateDomainTrackingCertificateResponse, GetDomainTrackingCertificateResponse, OpenTrackingInfo, RegenerateDomainTrackingCertificateResponse, UnsubscribeTrackingInfo, UpdatedOpenTracking } from '../../Types';
2
+ export interface IDomainTrackingClient {
3
+ get(domain: string): Promise<GetDomainTrackingCertificateResponse>;
4
+ generate(domain: string): Promise<GenerateDomainTrackingCertificateResponse>;
5
+ regenerate(domain: string): Promise<RegenerateDomainTrackingCertificateResponse>;
6
+ getTracking(domain: string): Promise<DomainTrackingData>;
7
+ updateTracking(domain: string, type: string, data: OpenTrackingInfo | ClickTrackingInfo | UnsubscribeTrackingInfo): Promise<UpdatedOpenTracking>;
8
+ }
@@ -3,10 +3,12 @@ import { ClickTrackingInfo, ConnectionSettings, DKIMAuthorityInfo, DKIMSelectorI
3
3
  import { IDomainCredentials } from './DomainCredentials';
4
4
  import { IDomainTagsClient } from './DomainTags';
5
5
  import { IDomainTemplatesClient } from './DomainTemplates';
6
+ import { IDomainTrackingClient } from './DomainTracking';
6
7
  export interface IDomainsClient {
7
8
  domainCredentials: IDomainCredentials;
8
9
  domainTemplates: IDomainTemplatesClient;
9
10
  domainTags: IDomainTagsClient;
11
+ domainTracking: IDomainTrackingClient;
10
12
  list(query?: DomainsQuery): Promise<TDomain[]>;
11
13
  get(domain: string, query?: DomainGetQuery): Promise<TDomain>;
12
14
  create(data: DomainInfo): Promise<TDomain>;
@@ -2,3 +2,4 @@ export * from './DomainCredentials';
2
2
  export * from './DomainTags';
3
3
  export * from './DomainTemplates';
4
4
  export * from './DomainsClient';
5
+ export * from './DomainTracking';
package/README.md CHANGED
@@ -149,6 +149,9 @@ The following service methods are available to instantiated clients. The example
149
149
  - [createVersion](#createversion)
150
150
  - [updateVersion](#updateversion)
151
151
  - [destroyVersion](#destroyversion)
152
+ - [domain tracking](#domain-tracking)
153
+ - [getTracking](#gettracking-1)
154
+ - [updateTracking](#updatetracking-1)
152
155
  - [events](#events)
153
156
  - [get](#get-2)
154
157
  - [Example with Date and *Filter field*](#example-with-date-and-filter-field)
@@ -906,133 +909,11 @@ The following service methods are available to instantiated clients. The example
906
909
  }
907
910
  ```
908
911
 
909
-
910
912
  - #### getTracking
911
- Mailgun offers tracking for clicks, unsubscribes, and opens, with optional HTTPS protocol support on tracking URLs. To enable HTTPS, Mailgun uses Let’s Encrypt with HTTP-01 challenges through your existing tracking CNAME record to issue a TLS certificate. This setup also includes support for HTTP Strict Transport Security (HSTS) for enhanced security.
912
-
913
- `mg.domains.getTracking(domainAddress)` [api docs](https://documentation.mailgun.com/docs/mailgun/api-reference/openapi-final/tag/Domain-Tracking/#tag/Domain-Tracking)
914
-
915
- Example:
916
-
917
- ```JS
918
- mg.domains.getTracking('foobar.example.com')
919
- .then(msg => console.log(msg)) // logs response data
920
- .catch(err => console.error(err)); // logs any error
921
- ```
922
-
923
- Promise returns:
924
-
925
- ```JS
926
- {
927
- "click": {
928
- "active": false
929
- },
930
- "open": {
931
- "active": false
932
- },
933
- "unsubscribe": {
934
- "active": false,
935
- "html_footer": "\n<br>\n<p><a href=\"%unsubscribe_url%\">unsubscribe</a></p>\n",
936
- "text_footer": "\n\nTo unsubscribe click: <%unsubscribe_url%>\n\n"
937
- }
938
- }
939
- ```
913
+ `domains.getTracking` method is deprecated, and will be removed. Please use `domains.domainTracking.getTracking` instead.
940
914
 
941
915
  - #### updateTracking
942
- A common method to turn on/off the click, open, and unsubscribe tracking at the domain level.
943
-
944
- `mg.domains.updateTracking(domain, trackingType, data)`
945
-
946
- - Open Tracking Example:
947
-
948
- [api docs](https://documentation.mailgun.com/docs/mailgun/api-reference/openapi-final/tag/Domain-Tracking/#tag/Domain-Tracking/operation/PUT-v3-domains--name--tracking-open)
949
- ```js
950
- mg.domains.updateTracking('foobar.example.com', 'open', {
951
- active: true,
952
- place_at_the_top: true,
953
- })
954
- .then(msg => console.log(msg)) // logs response data
955
- .catch(err => console.error(err)); // logs any error
956
- ```
957
-
958
- Open tracking data object properties:
959
-
960
- | Property | Description |
961
- |:----------|:-------------------------------------------|
962
- | active | Boolean, enables or disables open tracking |
963
- | place_at_the_top| Setting this param to true will place the open tracking pixel at the top of the HTML body when inserted into the email mime. Omit this param to keep current setting. |
964
-
965
- Promise returns:
966
-
967
- ```JS
968
- {
969
- message: 'Tracking settings have been updated',
970
- open: {
971
- active: true,
972
- place_at_the_top: true,
973
- }
974
- }
975
- ```
976
-
977
- - Click Tracking Example:
978
-
979
- [api docs](https://documentation.mailgun.com/docs/mailgun/api-reference/openapi-final/tag/Domain-Tracking/#tag/Domain-Tracking/operation/PUT-v3-domains--name--tracking-click)
980
- ```JS
981
- mg.domains.updateTracking('foobar.example.com', 'click', {active: true})
982
- .then(msg => console.log(msg)) // logs response data
983
- .catch(err => console.error(err)); // logs any error
984
- ```
985
-
986
- Click tracking data object properties:
987
-
988
- | Property | Description |
989
- |:----------|:--------------------------------------------|
990
- | active | Boolean, enables or disables click tracking |
991
-
992
- Promise returns:
993
-
994
- ```JS
995
- {
996
- message: 'Tracking settings have been updated',
997
- click: {
998
- active: true
999
- }
1000
- }
1001
- ```
1002
-
1003
- - Unsubscribe Tracking Example
1004
-
1005
- [api docs](https://documentation.mailgun.com/docs/mailgun/api-reference/openapi-final/tag/Domain-Tracking/#tag/Domain-Tracking/operation/PUT-v3-domains--name--tracking-unsubscribe)
1006
- ```js
1007
- mg.domains.updateTracking('foobar.example.com', 'unsubscribe', {
1008
- active: true,
1009
- html_footer: "\n<br>\n<p><a href=\"%unsubscribe_url%\">unsubscribe</a></p>\n",
1010
- text_footer: "\n\nTo unsubscribe click: <%unsubscribe_url%>\n\n"
1011
- })
1012
- .then(msg => console.log(msg)) // logs response data
1013
- .catch(err => console.error(err)); // logs any error
1014
- ```
1015
-
1016
- Unsubscribe Tracking data object properties:
1017
-
1018
- | Property | Description |
1019
- |:------------|:--------------------------------------------------------------|
1020
- | active | Boolean, enables or disables unsubscribe tracking |
1021
- | html_footer | string appended to html emails for managing unsubscribe links |
1022
- | text_footer | string appended to html emails for managing unsubscribe links |
1023
-
1024
- Promise returns:
1025
-
1026
- ```JS
1027
- {
1028
- message: 'Tracking settings have been updated',
1029
- unsubscribe: {
1030
- active: true,
1031
- html_footer: '\n<br>\n<p><a href=\'%unsubscribe_url%\">unsubscribe</a></p>\n',
1032
- text_footer: '\n\nTo unsubscribe click: <%unsubscribe_url%>\n\n'
1033
- }
1034
- }
1035
- ```
916
+ `domains.updateTracking` method is deprecated, and will be removed. Please use `domains.domainTracking.updateTracking` instead.
1036
917
 
1037
918
  - #### getConnection
1038
919
  Returns domain's delivery connection settings.
@@ -1644,6 +1525,207 @@ The following service methods are available to instantiated clients. The example
1644
1525
  }
1645
1526
  ```
1646
1527
 
1528
+ ### Domain tracking
1529
+
1530
+ - #### getTracking
1531
+
1532
+ Mailgun offers tracking for clicks, unsubscribes, and opens, with optional HTTPS protocol support on tracking URLs. To enable HTTPS, Mailgun uses Let’s Encrypt with HTTP-01 challenges through your existing tracking CNAME record to issue a TLS certificate. This setup also includes support for HTTP Strict Transport Security (HSTS) for enhanced security.
1533
+
1534
+ `mg.domains.domainTracking.getTracking(domainAddress)` [api docs](https://documentation.mailgun.com/docs/mailgun/api-reference/openapi-final/tag/Domain-Tracking/#tag/Domain-Tracking)
1535
+
1536
+ Example:
1537
+
1538
+ ```JS
1539
+ mg.domains.domainTracking.getTracking('foobar.example.com')
1540
+ .then(msg => console.log(msg)) // logs response data
1541
+ .catch(err => console.error(err)); // logs any error
1542
+ ```
1543
+
1544
+ Promise returns:
1545
+
1546
+ ```JS
1547
+ {
1548
+ "click": {
1549
+ "active": false
1550
+ },
1551
+ "open": {
1552
+ "active": false
1553
+ },
1554
+ "unsubscribe": {
1555
+ "active": false,
1556
+ "html_footer": "\n<br>\n<p><a href=\"%unsubscribe_url%\">unsubscribe</a></p>\n",
1557
+ "text_footer": "\n\nTo unsubscribe click: <%unsubscribe_url%>\n\n"
1558
+ }
1559
+ }
1560
+ ```
1561
+
1562
+ - #### updateTracking
1563
+
1564
+ A common method to turn on/off the click, open, and unsubscribe tracking at the domain level.
1565
+
1566
+ `mg.domains.domainTracking.updateTracking(domain, trackingType, data)`
1567
+
1568
+ - Open Tracking Example:
1569
+
1570
+ [api docs](https://documentation.mailgun.com/docs/mailgun/api-reference/openapi-final/tag/Domain-Tracking/#tag/Domain-Tracking/operation/PUT-v3-domains--name--tracking-open)
1571
+ ```js
1572
+ mg.domains.domainTracking.updateTracking('foobar.example.com', 'open', {
1573
+ active: true,
1574
+ place_at_the_top: true,
1575
+ })
1576
+ .then(msg => console.log(msg)) // logs response data
1577
+ .catch(err => console.error(err)); // logs any error
1578
+ ```
1579
+
1580
+ Open tracking data object properties:
1581
+
1582
+ | Property | Description |
1583
+ |:----------|:-------------------------------------------|
1584
+ | active | Boolean, enables or disables open tracking |
1585
+ | place_at_the_top| Setting this param to true will place the open tracking pixel at the top of the HTML body when inserted into the email mime. Omit this param to keep current setting. |
1586
+
1587
+ Promise returns:
1588
+
1589
+ ```JS
1590
+ {
1591
+ message: 'Tracking settings have been updated',
1592
+ open: {
1593
+ active: true,
1594
+ place_at_the_top: true,
1595
+ }
1596
+ }
1597
+ ```
1598
+
1599
+ - Click Tracking Example:
1600
+
1601
+ [api docs](https://documentation.mailgun.com/docs/mailgun/api-reference/openapi-final/tag/Domain-Tracking/#tag/Domain-Tracking/operation/PUT-v3-domains--name--tracking-click)
1602
+ ```JS
1603
+ mg.domains.domainTracking.updateTracking('foobar.example.com', 'click', {active: true})
1604
+ .then(msg => console.log(msg)) // logs response data
1605
+ .catch(err => console.error(err)); // logs any error
1606
+ ```
1607
+
1608
+ Click tracking data object properties:
1609
+
1610
+ | Property | Description |
1611
+ |:----------|:--------------------------------------------|
1612
+ | active | Boolean, enables or disables click tracking |
1613
+
1614
+ Promise returns:
1615
+
1616
+ ```JS
1617
+ {
1618
+ message: 'Tracking settings have been updated',
1619
+ click: {
1620
+ active: true
1621
+ }
1622
+ }
1623
+ ```
1624
+
1625
+ - Unsubscribe Tracking Example
1626
+
1627
+ [api docs](https://documentation.mailgun.com/docs/mailgun/api-reference/openapi-final/tag/Domain-Tracking/#tag/Domain-Tracking/operation/PUT-v3-domains--name--tracking-unsubscribe)
1628
+ ```js
1629
+ mg.domains.domainTracking.updateTracking('foobar.example.com', 'unsubscribe', {
1630
+ active: true,
1631
+ html_footer: "\n<br>\n<p><a href=\"%unsubscribe_url%\">unsubscribe</a></p>\n",
1632
+ text_footer: "\n\nTo unsubscribe click: <%unsubscribe_url%>\n\n"
1633
+ })
1634
+ .then(msg => console.log(msg)) // logs response data
1635
+ .catch(err => console.error(err)); // logs any error
1636
+ ```
1637
+
1638
+ Unsubscribe Tracking data object properties:
1639
+
1640
+ | Property | Description |
1641
+ |:------------|:--------------------------------------------------------------|
1642
+ | active | Boolean, enables or disables unsubscribe tracking |
1643
+ | html_footer | string appended to html emails for managing unsubscribe links |
1644
+ | text_footer | string appended to html emails for managing unsubscribe links |
1645
+
1646
+ Promise returns:
1647
+
1648
+ ```JS
1649
+ {
1650
+ message: 'Tracking settings have been updated',
1651
+ unsubscribe: {
1652
+ active: true,
1653
+ html_footer: '\n<br>\n<p><a href=\'%unsubscribe_url%\">unsubscribe</a></p>\n',
1654
+ text_footer: '\n\nTo unsubscribe click: <%unsubscribe_url%>\n\n'
1655
+ }
1656
+ }
1657
+ ```
1658
+
1659
+ - #### get
1660
+ Get x509 TLS certificate and status
1661
+
1662
+ `mg.domains.domainTracking.get(domainAddress)` [api docs](https://documentation.mailgun.com/docs/mailgun/api-reference/openapi-final/tag/Domain-Tracking/#tag/Domain-Tracking/operation/httpapi.(*HttpAPI).getStatusV2-fm-8)
1663
+
1664
+ Example:
1665
+
1666
+ ```JS
1667
+ mg.domains.domainTracking.get('foobar.example.com')
1668
+ .then(msg => console.log(msg)) // logs response data
1669
+ .catch(err => console.error(err)); // logs any error
1670
+ ```
1671
+
1672
+ Promise returns:
1673
+
1674
+ ```JS
1675
+ {
1676
+ responseStatusCode: 200,
1677
+ status: 'expired',
1678
+ error: 'x509 certificate has expired',
1679
+ certificate: '{CERT}';
1680
+ }
1681
+ ```
1682
+
1683
+ - #### generate
1684
+ Initiates generation of a TLS certificate for the tracking domain in a background task. Once generation is enqueued, you may poll the status endpoint in location field to check for success
1685
+
1686
+ `mg.domains.domainTracking.generate(domainAddress)` [api docs](https://documentation.mailgun.com/docs/mailgun/api-reference/openapi-final/tag/Domain-Tracking/#tag/Domain-Tracking/operation/httpapi.(*HttpAPI).generateStatusV2-fm-8)
1687
+
1688
+ Example:
1689
+
1690
+ ```JS
1691
+ mg.domains.domainTracking.generate('foobar.example.com')
1692
+ .then(msg => console.log(msg)) // logs response data
1693
+ .catch(err => console.error(err)); // logs any error
1694
+ ```
1695
+
1696
+ Promise returns:
1697
+
1698
+ ```JS
1699
+ {
1700
+ message: 'Initiated x509 key pair generation',
1701
+ location: '/v2/x509/example.com/status',
1702
+ status: 202,
1703
+ }
1704
+ ```
1705
+
1706
+ - #### regenerate
1707
+ Initiates regeneration of an expired TLS certificate for the tracking domain in a background task. Once generation is enqueued, you may poll status endpoint in location field to check for success. This will not regenerate an existing certificate that is still valid
1708
+
1709
+ `mg.domains.domainTracking.regenerate(domainAddress)` [api docs](https://documentation.mailgun.com/docs/mailgun/api-reference/openapi-final/tag/Domain-Tracking/#tag/Domain-Tracking/operation/httpapi.(*HttpAPI).generateStatusV2-fm-8)
1710
+
1711
+ Example:
1712
+
1713
+ ```JS
1714
+ mg.domains.domainTracking.regenerate('foobar.example.com')
1715
+ .then(msg => console.log(msg)) // logs response data
1716
+ .catch(err => console.error(err)); // logs any error
1717
+ ```
1718
+
1719
+ Promise returns:
1720
+
1721
+ ```JS
1722
+ {
1723
+ message: 'Initiated x509 key pair generation',
1724
+ location: '/v2/x509/example.com/status',
1725
+ status: 202,
1726
+ }
1727
+ ```
1728
+
1647
1729
  ### Events
1648
1730
 
1649
1731
  - #### get
@@ -47,3 +47,19 @@ export type UnsubscribeTrackingInfo = {
47
47
  html_footer?: string;
48
48
  text_footer?: string;
49
49
  };
50
+ export type GetDomainTrackingCertificateResponse = {
51
+ responseStatusCode: number;
52
+ status: string;
53
+ error: string;
54
+ certificate: string;
55
+ };
56
+ export type GenerateDomainTrackingCertificateResponse = {
57
+ message: string;
58
+ location: string;
59
+ status: number;
60
+ };
61
+ export type RegenerateDomainTrackingCertificateResponse = {
62
+ message: string;
63
+ location: string;
64
+ status: number;
65
+ };
@@ -0,0 +1,13 @@
1
+ export type GetDomainTrackingCertificateResponse = {
2
+ status: string;
3
+ error: string;
4
+ certificate: string;
5
+ };
6
+ export type GenerateDomainTrackingCertificateResponse = {
7
+ message: string;
8
+ location: string;
9
+ };
10
+ export type RegenerateDomainTrackingCertificateResponse = {
11
+ message: string;
12
+ location: string;
13
+ };
@@ -0,0 +1 @@
1
+ export * from './SecureTracking';