@segment/actions-shared 1.151.0 → 1.152.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.
@@ -9,10 +9,25 @@ declare class DDContactApi extends DDApi {
9
9
  channelIdentifier: string;
10
10
  emailIdentifier?: string;
11
11
  mobileNumberIdentifier?: string;
12
- listId: number;
12
+ emailType?: string;
13
+ optInType?: string;
14
+ updateEmailSubscription?: boolean;
15
+ emailSubscriptionStatus?: string;
16
+ emailResubscribe?: boolean;
17
+ resubscribeWithoutChallengeEmail?: boolean;
18
+ preferredLocale?: string;
19
+ redirectUrlAfterChallenge?: string;
20
+ updateSmsSubscription?: boolean;
21
+ smsSubscriptionStatus?: string;
22
+ listId?: number;
13
23
  dataFields?: {
14
24
  [k: string]: unknown;
15
25
  };
16
26
  }): Promise<Contact>;
27
+ unsubscribeContact(payload: {
28
+ channelIdentifier: string;
29
+ emailIdentifier?: string;
30
+ mobileNumberIdentifier?: string;
31
+ }): Promise<Contact>;
17
32
  }
18
33
  export default DDContactApi;
@@ -18,7 +18,55 @@ class DDContactApi extends dd_api_1.default {
18
18
  return response.data;
19
19
  }
20
20
  async upsertContact(payload) {
21
- const { channelIdentifier, emailIdentifier, mobileNumberIdentifier, listId, dataFields } = payload;
21
+ const { channelIdentifier, emailIdentifier, mobileNumberIdentifier, emailType = 'html', optInType = 'single', updateEmailSubscription = true, emailSubscriptionStatus = 'subscribed', emailResubscribe = false, resubscribeWithoutChallengeEmail = false, preferredLocale, redirectUrlAfterChallenge, updateSmsSubscription = true, smsSubscriptionStatus = 'subscribed', listId, dataFields } = payload;
22
+ const idValue = channelIdentifier === 'email' ? emailIdentifier : mobileNumberIdentifier;
23
+ const identifiers = {
24
+ ...(emailIdentifier && { email: emailIdentifier }),
25
+ ...(mobileNumberIdentifier && { mobileNumber: mobileNumberIdentifier })
26
+ };
27
+ const channelProperties = {};
28
+ if (emailIdentifier) {
29
+ channelProperties.email = {
30
+ emailType,
31
+ optInType
32
+ };
33
+ if (updateEmailSubscription) {
34
+ if (emailSubscriptionStatus === 'subscribed') {
35
+ if (emailResubscribe) {
36
+ channelProperties.email.status = 'subscribed';
37
+ const resubscribeOptions = {
38
+ resubscribeWithNoChallenge: resubscribeWithoutChallengeEmail
39
+ };
40
+ if (!resubscribeWithoutChallengeEmail) {
41
+ if (preferredLocale)
42
+ resubscribeOptions.preferredLocale = preferredLocale;
43
+ if (redirectUrlAfterChallenge)
44
+ resubscribeOptions.redirectUrlAfterChallenge = redirectUrlAfterChallenge;
45
+ }
46
+ channelProperties.email.resubscribeOptions = resubscribeOptions;
47
+ }
48
+ }
49
+ else if (emailSubscriptionStatus) {
50
+ channelProperties.email.status = emailSubscriptionStatus;
51
+ }
52
+ }
53
+ }
54
+ if (mobileNumberIdentifier && updateSmsSubscription && smsSubscriptionStatus) {
55
+ channelProperties.sms = {
56
+ status: smsSubscriptionStatus
57
+ };
58
+ }
59
+ const data = {
60
+ identifiers,
61
+ channelProperties,
62
+ ...(listId && { lists: [listId] }),
63
+ dataFields: dataFields
64
+ };
65
+ const response = await this.patch(`/contacts/v3/${channelIdentifier}/${idValue}?merge-option=overwrite`, data);
66
+ return response.data;
67
+ }
68
+ async unsubscribeContact(payload) {
69
+ const { channelIdentifier, emailIdentifier, mobileNumberIdentifier } = payload;
22
70
  const idValue = channelIdentifier === 'email' ? emailIdentifier : mobileNumberIdentifier;
23
71
  const identifiers = {
24
72
  ...(emailIdentifier && { email: emailIdentifier }),
@@ -26,21 +74,15 @@ class DDContactApi extends dd_api_1.default {
26
74
  };
27
75
  const channelProperties = {
28
76
  ...(emailIdentifier && {
29
- email: {
30
- status: 'subscribed',
31
- emailType: 'html',
32
- optInType: 'single'
33
- }
77
+ email: { status: 'unsubscribed' }
34
78
  }),
35
79
  ...(mobileNumberIdentifier && {
36
- sms: { status: 'subscribed' }
80
+ sms: { status: 'unsubscribed' }
37
81
  })
38
82
  };
39
83
  const data = {
40
84
  identifiers,
41
- channelProperties,
42
- lists: [listId],
43
- dataFields: dataFields
85
+ channelProperties
44
86
  };
45
87
  const response = await this.patch(`/contacts/v3/${channelIdentifier}/${idValue}?merge-option=overwrite`, data);
46
88
  return response.data;
@@ -1 +1 @@
1
- {"version":3,"file":"dd-contact-api.js","sourceRoot":"","sources":["../../../../src/dotdigital/api/resources/dd-contact-api.ts"],"names":[],"mappings":";;;;;AACA,uDAA6B;AAG7B,MAAM,YAAa,SAAQ,gBAAK;IAC9B,YAAY,QAAgB,EAAE,MAAqB;QACjD,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IACzB,CAAC;IAUD,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,OAA2B;QAC1D,MAAM,QAAQ,GAA8B,MAAM,IAAI,CAAC,GAAG,CAAU,gBAAgB,MAAM,IAAI,OAAO,EAAE,CAAC,CAAA;QACxG,OAAO,QAAQ,CAAC,IAAI,CAAA;IACtB,CAAC;IAUD,KAAK,CAAC,oBAAoB,CAAI,iBAAoC,EAAE,IAAO;QACzE,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;QAC7D,MAAM,QAAQ,GAA8B,MAAM,IAAI,CAAC,KAAK,CAAa,gBAAgB,MAAM,IAAI,OAAO,EAAE,EAAE,IAAI,CAAC,CAAA;QACnH,OAAO,QAAQ,CAAC,IAAI,CAAA;IACtB,CAAC;IAOM,KAAK,CAAC,aAAa,CAAC,OAM1B;QACC,MAAM,EAAE,iBAAiB,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;QAElG,MAAM,OAAO,GAAG,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,sBAAsB,CAAA;QAExF,MAAM,WAAW,GAAgB;YAC/B,GAAG,CAAC,eAAe,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;YAClD,GAAG,CAAC,sBAAsB,IAAI,EAAE,YAAY,EAAE,sBAAsB,EAAE,CAAC;SACxE,CAAA;QAED,MAAM,iBAAiB,GAAsB;YAC3C,GAAG,CAAC,eAAe,IAAI;gBACrB,KAAK,EAAE;oBACL,MAAM,EAAE,YAAY;oBACpB,SAAS,EAAE,MAAM;oBACjB,SAAS,EAAE,QAAQ;iBACpB;aACF,CAAC;YACF,GAAG,CAAC,sBAAsB,IAAI;gBAC5B,GAAG,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE;aAC9B,CAAC;SACH,CAAA;QAED,MAAM,IAAI,GAAsB;YAC9B,WAAW;YACX,iBAAiB;YACjB,KAAK,EAAE,CAAC,MAAM,CAAC;YACf,UAAU,EAAE,UAAwB;SACrC,CAAA;QAED,MAAM,QAAQ,GAA8B,MAAM,IAAI,CAAC,KAAK,CAC1D,gBAAgB,iBAAiB,IAAI,OAAO,yBAAyB,EACrE,IAAI,CACL,CAAA;QAED,OAAO,QAAQ,CAAC,IAAI,CAAA;IACtB,CAAC;CACF;AAED,kBAAe,YAAY,CAAA"}
1
+ {"version":3,"file":"dd-contact-api.js","sourceRoot":"","sources":["../../../../src/dotdigital/api/resources/dd-contact-api.ts"],"names":[],"mappings":"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"}
@@ -36,11 +36,17 @@ export interface Identifiers {
36
36
  export interface DataFields {
37
37
  [key: string]: string | number | boolean | null;
38
38
  }
39
+ export interface ResubscribeOptions {
40
+ resubscribeWithNoChallenge?: boolean;
41
+ preferredLocale?: string;
42
+ redirectUrlAfterChallenge?: string;
43
+ }
39
44
  export interface ChannelProperties {
40
45
  email?: {
41
- status: string;
42
- emailType: string;
43
- optInType: string;
46
+ status?: string;
47
+ emailType?: string;
48
+ optInType?: string;
49
+ resubscribeOptions?: ResubscribeOptions;
44
50
  };
45
51
  sms?: {
46
52
  status: string;
@@ -97,7 +103,7 @@ export type ChannelIdentifier = {
97
103
  export interface UpsertContactJSON {
98
104
  identifiers: Identifiers;
99
105
  channelProperties: ChannelProperties;
100
- lists: number[];
106
+ lists?: number[];
101
107
  dataFields?: DataFields;
102
108
  }
103
109
  export interface CpaasMessageBody {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dotdigital/api/types.ts"],"names":[],"mappings":";;;AAyEA,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,gCAAe,CAAA;IACf,4CAA2B,CAAA;AAC7B,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dotdigital/api/types.ts"],"names":[],"mappings":";;;AA+EA,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,gCAAe,CAAA;IACf,4CAA2B,CAAA;AAC7B,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@segment/actions-shared",
3
3
  "description": "Shared destination action methods and definitions.",
4
- "version": "1.151.0",
4
+ "version": "1.152.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/segmentio/action-destinations",
@@ -64,5 +64,5 @@
64
64
  "<rootDir>/test/setup-after-env.ts"
65
65
  ]
66
66
  },
67
- "gitHead": "7a4452696fa871d1462e8c707948a6b5c77a9ad0"
67
+ "gitHead": "435786c4b8f370a4de536eca7bcebe078b72eb6f"
68
68
  }