@segment/action-destinations 3.244.0-staging-b8762 → 3.244.0-staging-7136444b
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/dist/destinations/blackbaud-raisers-edge-nxt/utils/index.d.ts +1 -1
- package/dist/destinations/engage/sendgrid/previewApiLookup/api-lookups.d.ts +5 -2
- package/dist/destinations/engage/sendgrid/previewApiLookup/api-lookups.js +98 -18
- package/dist/destinations/engage/sendgrid/previewApiLookup/api-lookups.js.map +1 -1
- package/dist/destinations/engage/utils/track.d.ts +10 -10
- package/dist/destinations/linkedin-conversions/api/api.test.js +118 -0
- package/dist/destinations/linkedin-conversions/api/api.test.js.map +1 -1
- package/dist/destinations/linkedin-conversions/api/index.d.ts +4 -1
- package/dist/destinations/linkedin-conversions/api/index.js +118 -27
- package/dist/destinations/linkedin-conversions/api/index.js.map +1 -1
- package/dist/destinations/linkedin-conversions/streamConversion/generated-types.d.ts +1 -0
- package/dist/destinations/linkedin-conversions/streamConversion/index.js +11 -2
- package/dist/destinations/linkedin-conversions/streamConversion/index.js.map +1 -1
- package/dist/destinations/linkedin-conversions/types.d.ts +2 -0
- package/dist/destinations/responsys/asyncMergePetRecords/generated-types.d.ts +14 -0
- package/dist/destinations/responsys/asyncMergePetRecords/generated-types.js +3 -0
- package/dist/destinations/responsys/asyncMergePetRecords/generated-types.js.map +1 -0
- package/dist/destinations/responsys/asyncMergePetRecords/index.d.ts +5 -0
- package/dist/destinations/responsys/asyncMergePetRecords/index.js +113 -0
- package/dist/destinations/responsys/asyncMergePetRecords/index.js.map +1 -0
- package/dist/destinations/responsys/asyncMergeProfileListMembers/generated-types.d.ts +20 -0
- package/dist/destinations/responsys/asyncMergeProfileListMembers/generated-types.js +3 -0
- package/dist/destinations/responsys/asyncMergeProfileListMembers/generated-types.js.map +1 -0
- package/dist/destinations/responsys/asyncMergeProfileListMembers/index.d.ts +5 -0
- package/dist/destinations/responsys/asyncMergeProfileListMembers/index.js +174 -0
- package/dist/destinations/responsys/asyncMergeProfileListMembers/index.js.map +1 -0
- package/dist/destinations/responsys/rsp-operations.d.ts +14 -0
- package/dist/destinations/responsys/rsp-operations.js +33 -0
- package/dist/destinations/responsys/rsp-operations.js.map +1 -0
- package/dist/destinations/responsys/rsp-properties.d.ts +4 -0
- package/dist/destinations/responsys/rsp-properties.js +27 -0
- package/dist/destinations/responsys/rsp-properties.js.map +1 -0
- package/dist/destinations/tiktok-conversions-sandbox/index.js +2 -2
- package/dist/destinations/tiktok-conversions-sandbox/index.js.map +1 -1
- package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.d.ts +3 -0
- package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.js +43 -0
- package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.js.map +1 -0
- package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/generated-types.d.ts +33 -0
- package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/generated-types.js +3 -0
- package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/generated-types.js.map +1 -0
- package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/index.d.ts +5 -0
- package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/index.js +16 -0
- package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/index.js.map +1 -0
- package/dist/destinations/tiktok-offline-conversions/utils.d.ts +8 -0
- package/dist/destinations/tiktok-offline-conversions/utils.js +67 -0
- package/dist/destinations/tiktok-offline-conversions/utils.js.map +1 -0
- package/dist/destinations/tiktok-offline-conversions-sandbox/index.js +2 -2
- package/dist/destinations/tiktok-offline-conversions-sandbox/index.js.map +1 -1
- package/dist/destinations/tiktok-offline-conversions-sandbox/reportOfflineEvent/index.js +1 -1
- package/dist/destinations/tiktok-offline-conversions-sandbox/reportOfflineEvent/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/destinations/mixpanel/utils.d.ts +0 -13
- package/dist/destinations/mixpanel/utils.js +0 -117
- package/dist/destinations/mixpanel/utils.js.map +0 -1
|
@@ -9,7 +9,7 @@ export declare const dateStringToFuzzyDate: (dateString: string | number) => fal
|
|
|
9
9
|
y: string;
|
|
10
10
|
};
|
|
11
11
|
export declare const augmentFieldsWithConstituentFields: (fields: Record<string, InputField>) => Record<string, InputField>;
|
|
12
|
-
export declare const splitConstituentPayload: (payload: CreateOrUpdateIndividualConstituentPayload) => (Partial<
|
|
12
|
+
export declare const splitConstituentPayload: (payload: CreateOrUpdateIndividualConstituentPayload) => (Partial<Constituent> | Partial<Address> | Partial<OnlinePresence> | Partial<Phone>)[];
|
|
13
13
|
export declare const buildConstituentPayloadFromPayload: (payload: StringIndexedObject) => Partial<CreateOrUpdateIndividualConstituentPayload>;
|
|
14
14
|
export declare const buildGiftDataFromPayload: (constituentId: string, payload: CreateGiftPayload) => Partial<Gift>;
|
|
15
15
|
export declare const buildConstituentActionDataFromPayload: (constituentId: string, payload: CreateConstituentAction) => Partial<ConstituentAction>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { InputField } from '@segment/actions-core';
|
|
2
2
|
import { RequestClient } from '@segment/actions-core';
|
|
3
|
-
import { Logger, StatsClient } from '@segment/actions-core/destination-kit';
|
|
3
|
+
import { Logger, StatsClient, DataFeedCache } from '@segment/actions-core/destination-kit';
|
|
4
4
|
import type { Settings } from '../generated-types';
|
|
5
5
|
import { Profile } from '../Profile';
|
|
6
6
|
export declare type ApiLookupConfig = {
|
|
@@ -13,6 +13,9 @@ export declare type ApiLookupConfig = {
|
|
|
13
13
|
headers?: object | undefined;
|
|
14
14
|
responseType: string;
|
|
15
15
|
};
|
|
16
|
-
export declare const
|
|
16
|
+
export declare const getRequestId: ({ method, url, body, headers }: ApiLookupConfig) => string;
|
|
17
|
+
export declare const getCachedResponse: ({ responseType }: ApiLookupConfig, requestId: string, dataFeedCache: DataFeedCache, datafeedTags: string[]) => Promise<any>;
|
|
18
|
+
export declare const performApiLookup: (request: RequestClient, apiLookupConfig: ApiLookupConfig, profile: Profile, statsClient: StatsClient | undefined, tags: string[], settings: Settings, logger?: Logger | undefined, dataFeedCache?: DataFeedCache | undefined) => Promise<any>;
|
|
17
19
|
export declare const apiLookupActionFields: Record<string, InputField>;
|
|
18
20
|
export declare const apiLookupLiquidKey = "lookups";
|
|
21
|
+
export declare const FLAGON_NAME_DATA_FEEDS = "is-datafeeds-enabled";
|
|
@@ -1,46 +1,125 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.apiLookupLiquidKey = exports.apiLookupActionFields = exports.performApiLookup = void 0;
|
|
3
|
+
exports.FLAGON_NAME_DATA_FEEDS = exports.apiLookupLiquidKey = exports.apiLookupActionFields = exports.performApiLookup = exports.getCachedResponse = exports.getRequestId = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
4
5
|
const actions_core_1 = require("@segment/actions-core");
|
|
5
6
|
const liquidjs_1 = require("liquidjs");
|
|
6
7
|
const Liquid = new liquidjs_1.Liquid();
|
|
7
|
-
const
|
|
8
|
+
const maxResponseSizeBytes = 1000000;
|
|
9
|
+
const renderLiquidFields = async ({ id, url, body }, profile, datafeedTags, settings, logger) => {
|
|
8
10
|
let renderedUrl;
|
|
9
11
|
let renderedBody;
|
|
10
12
|
try {
|
|
11
13
|
renderedUrl = await Liquid.parseAndRender(url, { profile });
|
|
12
14
|
}
|
|
13
15
|
catch (error) {
|
|
14
|
-
logger?.error(`TE Messaging: Email
|
|
15
|
-
|
|
16
|
-
statsClient?.incr('actions-personas-messaging-sendgrid-error', 1, tags);
|
|
16
|
+
logger?.error(`TE Messaging: Email datafeed url parse failure - api lookup id: ${id} - ${settings.spaceId} - [${error}]`);
|
|
17
|
+
datafeedTags.push('error:true', `error_message:${error?.message}`, 'reason:rendering_failure', 'rendering:url');
|
|
17
18
|
throw new actions_core_1.IntegrationError('Unable to parse email api lookup url', 'api lookup url parse failure', 400);
|
|
18
19
|
}
|
|
19
20
|
try {
|
|
20
21
|
renderedBody = body ? await Liquid.parseAndRender(body, { profile }) : undefined;
|
|
21
22
|
}
|
|
22
23
|
catch (error) {
|
|
23
|
-
logger?.error(`TE Messaging: Email
|
|
24
|
-
|
|
25
|
-
statsClient?.incr('actions-personas-messaging-sendgrid-error', 1, tags);
|
|
24
|
+
logger?.error(`TE Messaging: Email datafeed body parse failure - api lookup id: ${id} - ${settings.spaceId} - [${error}]`);
|
|
25
|
+
datafeedTags.push('error:true', `error_message:${error?.message}`, 'reason:rendering_failure', 'rendering:body');
|
|
26
26
|
throw new actions_core_1.IntegrationError('Unable to parse email api lookup body', 'api lookup body parse failure', 400);
|
|
27
27
|
}
|
|
28
|
+
return {
|
|
29
|
+
renderedUrl,
|
|
30
|
+
renderedBody
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
const getRequestId = ({ method, url, body, headers }) => {
|
|
34
|
+
const requestHash = crypto_1.createHash('sha256');
|
|
35
|
+
requestHash.update(`${method}${url}${body}${JSON.stringify(headers)}`);
|
|
36
|
+
const requestId = requestHash.digest('hex');
|
|
37
|
+
return requestId;
|
|
38
|
+
};
|
|
39
|
+
exports.getRequestId = getRequestId;
|
|
40
|
+
const getCachedResponse = async ({ responseType }, requestId, dataFeedCache, datafeedTags) => {
|
|
41
|
+
const cachedResponse = await dataFeedCache?.getRequestResponse(requestId);
|
|
42
|
+
if (!cachedResponse) {
|
|
43
|
+
datafeedTags.push('cache_hit:false');
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
datafeedTags.push('cache_hit:true');
|
|
47
|
+
if (responseType === 'json') {
|
|
48
|
+
return JSON.parse(cachedResponse);
|
|
49
|
+
}
|
|
50
|
+
return cachedResponse;
|
|
51
|
+
};
|
|
52
|
+
exports.getCachedResponse = getCachedResponse;
|
|
53
|
+
const performApiLookup = async (request, apiLookupConfig, profile, statsClient, tags, settings, logger, dataFeedCache) => {
|
|
54
|
+
const { id, method, headers, cacheTtl, name } = apiLookupConfig;
|
|
55
|
+
const datafeedTags = [
|
|
56
|
+
...tags,
|
|
57
|
+
`datafeed_id:${id}`,
|
|
58
|
+
`datafeed_name:${name}`,
|
|
59
|
+
`space_id:${settings.spaceId}`,
|
|
60
|
+
`cache_ttl_greater_than_0:${cacheTtl > 0}`
|
|
61
|
+
];
|
|
28
62
|
try {
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
63
|
+
const { renderedUrl, renderedBody } = await renderLiquidFields(apiLookupConfig, profile, datafeedTags, settings, logger);
|
|
64
|
+
const requestId = exports.getRequestId({ ...apiLookupConfig, url: renderedUrl, body: renderedBody });
|
|
65
|
+
if (cacheTtl > 0 && dataFeedCache) {
|
|
66
|
+
const cachedResponse = await exports.getCachedResponse(apiLookupConfig, requestId, dataFeedCache, datafeedTags);
|
|
67
|
+
if (cachedResponse) {
|
|
68
|
+
datafeedTags.push('error:false');
|
|
69
|
+
return cachedResponse;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
let data;
|
|
73
|
+
try {
|
|
74
|
+
const res = await request(renderedUrl, {
|
|
75
|
+
headers: headers ?? undefined,
|
|
76
|
+
timeout: 3000,
|
|
77
|
+
method: method,
|
|
78
|
+
body: renderedBody,
|
|
79
|
+
skipResponseCloning: true
|
|
80
|
+
});
|
|
81
|
+
data = await res.data;
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
const respError = error.response;
|
|
85
|
+
logger?.error(`TE Messaging: Email api lookup failure - api lookup id: ${id} - ${settings.spaceId} - [${error}]`);
|
|
86
|
+
datafeedTags.push(`error:true`, `error_message:${error.message}`, `error_status:${respError?.status}`, 'reason:api_call_failure');
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
const dataString = JSON.stringify(data);
|
|
90
|
+
const size = Buffer.byteLength(dataString, 'utf-8');
|
|
91
|
+
datafeedTags.push(`response_size_greater_than_mb:${size > maxResponseSizeBytes}`);
|
|
92
|
+
if (cacheTtl > 0) {
|
|
93
|
+
if (size <= maxResponseSizeBytes) {
|
|
94
|
+
try {
|
|
95
|
+
await dataFeedCache?.setRequestResponse(requestId, dataString, cacheTtl / 1000);
|
|
96
|
+
datafeedTags.push('cache_set:true');
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
logger?.error(`TE Messaging: Email api lookup cache set failure - api lookup id: ${id} - ${settings.spaceId} - [${err}]`);
|
|
100
|
+
datafeedTags.push('cache_set:false');
|
|
101
|
+
datafeedTags.push('error:true', 'reason:cache_set_failure', `error_message:${err?.message}`);
|
|
102
|
+
throw err;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
datafeedTags.push('cache_set:false');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return data;
|
|
37
110
|
}
|
|
38
111
|
catch (error) {
|
|
112
|
+
const isErrorCapturedInTags = datafeedTags.find((str) => str.includes('error:true'));
|
|
113
|
+
if (!isErrorCapturedInTags) {
|
|
114
|
+
datafeedTags.push('error:true', `error_message:${error?.message}`, 'reason:unknown');
|
|
115
|
+
}
|
|
116
|
+
tags.push('reason:datafeed_failure');
|
|
39
117
|
logger?.error(`TE Messaging: Email api lookup failure - api lookup id: ${id} - ${settings.spaceId} - [${error}]`);
|
|
40
|
-
tags.push('reason:apilookup_failure');
|
|
41
|
-
statsClient?.incr('actions-personas-messaging-sendgrid-error', 1, tags);
|
|
42
118
|
throw error;
|
|
43
119
|
}
|
|
120
|
+
finally {
|
|
121
|
+
statsClient?.incr('datafeed-execution', 1, datafeedTags);
|
|
122
|
+
}
|
|
44
123
|
};
|
|
45
124
|
exports.performApiLookup = performApiLookup;
|
|
46
125
|
exports.apiLookupActionFields = {
|
|
@@ -91,4 +170,5 @@ exports.apiLookupActionFields = {
|
|
|
91
170
|
}
|
|
92
171
|
};
|
|
93
172
|
exports.apiLookupLiquidKey = 'lookups';
|
|
173
|
+
exports.FLAGON_NAME_DATA_FEEDS = 'is-datafeeds-enabled';
|
|
94
174
|
//# sourceMappingURL=api-lookups.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-lookups.js","sourceRoot":"","sources":["../../../../../src/destinations/engage/sendgrid/previewApiLookup/api-lookups.ts"],"names":[],"mappings":";;;AAAA,wDAAwD;AAKxD,uCAA6C;
|
|
1
|
+
{"version":3,"file":"api-lookups.js","sourceRoot":"","sources":["../../../../../src/destinations/engage/sendgrid/previewApiLookup/api-lookups.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ContextFromDecorator } from './operationTracking';
|
|
2
2
|
export declare const track: ((decoratorArgs?: ({
|
|
3
|
-
shouldStats?: ((args: import("./operationTracking").OperationStatsEventArgs) => boolean | void) | undefined;
|
|
4
|
-
} & {
|
|
5
3
|
onError?: ((ctx: import("./operationTracking").OperationErrorHandlerContext<import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>>) => void) | undefined;
|
|
6
4
|
} & {
|
|
7
5
|
onTry?: ((ctx: import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>) => void) | undefined;
|
|
8
6
|
onFinally?: ((ctx: import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>) => void) | undefined;
|
|
9
7
|
} & import("./operationTracking").OperationLoggerDecoratorArgs & {
|
|
8
|
+
shouldStats?: ((args: import("./operationTracking").OperationStatsEventArgs) => boolean | void) | undefined;
|
|
9
|
+
} & {
|
|
10
10
|
wrapIntegrationError?: ((ctx: import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>) => import("@segment/actions-core/*").IntegrationError | [message: string, code: string, status: number]) | undefined;
|
|
11
11
|
}) | undefined) => import("./operationTracking").GenericMethodDecorator<(this: any, ...args: any[]) => any>) & {
|
|
12
12
|
getCurrentOperation(classInstance: any): (import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any> & {
|
|
@@ -15,14 +15,6 @@ export declare const track: ((decoratorArgs?: ({
|
|
|
15
15
|
}) | undefined;
|
|
16
16
|
} & {
|
|
17
17
|
_contextType: import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any> & {
|
|
18
|
-
tags: string[];
|
|
19
|
-
sharedContext: {
|
|
20
|
-
tags: string[];
|
|
21
|
-
};
|
|
22
|
-
decoratorArgs?: {
|
|
23
|
-
shouldStats?: ((args: import("./operationTracking").OperationStatsEventArgs) => boolean | void) | undefined;
|
|
24
|
-
} | undefined;
|
|
25
|
-
} & {
|
|
26
18
|
decoratorArgs?: {
|
|
27
19
|
onError?: ((ctx: import("./operationTracking").OperationErrorHandlerContext<import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>>) => void) | undefined;
|
|
28
20
|
} | undefined;
|
|
@@ -43,6 +35,14 @@ export declare const track: ((decoratorArgs?: ({
|
|
|
43
35
|
logMetadata?: Record<string, unknown> | undefined;
|
|
44
36
|
decoratorArgs?: import("./operationTracking").OperationLoggerDecoratorArgs | undefined;
|
|
45
37
|
sharedContext: import("./operationTracking").OperationLoggerSharedContext;
|
|
38
|
+
} & {
|
|
39
|
+
tags: string[];
|
|
40
|
+
sharedContext: {
|
|
41
|
+
tags: string[];
|
|
42
|
+
};
|
|
43
|
+
decoratorArgs?: {
|
|
44
|
+
shouldStats?: ((args: import("./operationTracking").OperationStatsEventArgs) => boolean | void) | undefined;
|
|
45
|
+
} | undefined;
|
|
46
46
|
} & {
|
|
47
47
|
decoratorArgs?: {
|
|
48
48
|
wrapIntegrationError?: ((ctx: import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>) => import("@segment/actions-core/*").IntegrationError | [message: string, code: string, status: number]) | undefined;
|
|
@@ -9,6 +9,124 @@ const api_1 = require("../api");
|
|
|
9
9
|
const constants_1 = require("../constants");
|
|
10
10
|
const requestClient = create_request_client_1.default();
|
|
11
11
|
describe('LinkedIn Conversions', () => {
|
|
12
|
+
describe('conversionRule methods', () => {
|
|
13
|
+
const linkedIn = new api_1.LinkedInConversions(requestClient);
|
|
14
|
+
const adAccountId = 'urn:li:sponsoredAccount:123456';
|
|
15
|
+
const hookInputs = {
|
|
16
|
+
name: 'A different name that should trigger an update',
|
|
17
|
+
conversionType: 'LEAD',
|
|
18
|
+
attribution_type: 'LAST_TOUCH_BY_CAMPAIGN'
|
|
19
|
+
};
|
|
20
|
+
const hookOutputs = {
|
|
21
|
+
id: '56789',
|
|
22
|
+
name: 'The original name',
|
|
23
|
+
conversionType: 'LEAD',
|
|
24
|
+
attribution_type: 'LAST_TOUCH_BY_CONVERSION'
|
|
25
|
+
};
|
|
26
|
+
it('should update a conversion rule', async () => {
|
|
27
|
+
nock_1.default(`${constants_1.BASE_URL}`)
|
|
28
|
+
.post(`/conversions/${hookOutputs.id}`, {
|
|
29
|
+
patch: {
|
|
30
|
+
$set: {
|
|
31
|
+
name: hookInputs.name,
|
|
32
|
+
attributionType: hookInputs.attribution_type
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
.query({
|
|
37
|
+
account: adAccountId
|
|
38
|
+
})
|
|
39
|
+
.reply(204);
|
|
40
|
+
const updateResult = await linkedIn.updateConversionRule(adAccountId, hookInputs, hookOutputs);
|
|
41
|
+
expect(updateResult).toEqual({
|
|
42
|
+
successMessage: `Conversion rule ${hookOutputs.id} updated successfully!`,
|
|
43
|
+
savedData: {
|
|
44
|
+
id: hookOutputs.id,
|
|
45
|
+
name: hookInputs.name,
|
|
46
|
+
conversionType: hookOutputs.conversionType,
|
|
47
|
+
attribution_type: hookInputs.attribution_type
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
it('should create a conversion rule', async () => {
|
|
52
|
+
const mockReturnedId = '12345';
|
|
53
|
+
nock_1.default(`${constants_1.BASE_URL}`)
|
|
54
|
+
.post(`/conversions`, {
|
|
55
|
+
name: hookInputs.name,
|
|
56
|
+
account: adAccountId,
|
|
57
|
+
conversionMethod: 'CONVERSIONS_API',
|
|
58
|
+
postClickAttributionWindowSize: 30,
|
|
59
|
+
viewThroughAttributionWindowSize: 7,
|
|
60
|
+
attributionType: hookInputs.attribution_type,
|
|
61
|
+
type: hookInputs.conversionType
|
|
62
|
+
})
|
|
63
|
+
.reply(201, {
|
|
64
|
+
id: mockReturnedId,
|
|
65
|
+
name: hookInputs.name,
|
|
66
|
+
type: hookInputs.conversionType
|
|
67
|
+
});
|
|
68
|
+
const createResult = await linkedIn.createConversionRule(adAccountId, hookInputs);
|
|
69
|
+
expect(createResult).toEqual({
|
|
70
|
+
successMessage: `Conversion rule ${mockReturnedId} created successfully!`,
|
|
71
|
+
savedData: {
|
|
72
|
+
id: mockReturnedId,
|
|
73
|
+
name: hookInputs.name,
|
|
74
|
+
conversionType: hookInputs.conversionType,
|
|
75
|
+
attribution_type: hookInputs.attribution_type
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
it('should use the existing conversionRuleId if passed in and not update anything', async () => {
|
|
80
|
+
const existingRule = {
|
|
81
|
+
id: '5678',
|
|
82
|
+
name: 'Exists already',
|
|
83
|
+
type: 'PURCHASE',
|
|
84
|
+
attributionType: 'LAST_TOUCH_BY_CAMPAIGN'
|
|
85
|
+
};
|
|
86
|
+
nock_1.default(`${constants_1.BASE_URL}`)
|
|
87
|
+
.get(`/conversions/${existingRule.id}`)
|
|
88
|
+
.query({ account: adAccountId })
|
|
89
|
+
.reply(200, existingRule);
|
|
90
|
+
const updateResult = await linkedIn.updateConversionRule(adAccountId, { ...hookInputs, conversionRuleId: existingRule.id }, hookOutputs);
|
|
91
|
+
expect(updateResult).toEqual({
|
|
92
|
+
successMessage: `Using existing Conversion Rule: ${existingRule.id} `,
|
|
93
|
+
savedData: {
|
|
94
|
+
id: existingRule.id,
|
|
95
|
+
name: existingRule.name,
|
|
96
|
+
conversionType: existingRule.type,
|
|
97
|
+
attribution_type: existingRule.attributionType
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
it('should pass back an error and the existing savedData if the update request fails', async () => {
|
|
102
|
+
nock_1.default(`${constants_1.BASE_URL}`)
|
|
103
|
+
.post(`/conversions/${hookOutputs.id}`, {
|
|
104
|
+
patch: {
|
|
105
|
+
$set: {
|
|
106
|
+
name: hookInputs.name,
|
|
107
|
+
attributionType: hookInputs.attribution_type
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
})
|
|
111
|
+
.query({
|
|
112
|
+
account: adAccountId
|
|
113
|
+
})
|
|
114
|
+
.reply(500);
|
|
115
|
+
const updateResult = await linkedIn.updateConversionRule(adAccountId, hookInputs, hookOutputs);
|
|
116
|
+
expect(updateResult).toEqual({
|
|
117
|
+
error: {
|
|
118
|
+
message: `Failed to update conversion rule: Internal Server Error`,
|
|
119
|
+
code: 'CONVERSION_RULE_UPDATE_FAILURE'
|
|
120
|
+
},
|
|
121
|
+
savedData: {
|
|
122
|
+
id: hookOutputs.id,
|
|
123
|
+
name: hookOutputs.name,
|
|
124
|
+
conversionType: hookOutputs.conversionType,
|
|
125
|
+
attribution_type: hookOutputs.attribution_type
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
});
|
|
12
130
|
describe('dynamicFields', () => {
|
|
13
131
|
const linkedIn = new api_1.LinkedInConversions(requestClient);
|
|
14
132
|
it('should fetch a list of ad accounts, with their names', async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.test.js","sourceRoot":"","sources":["../../../../src/destinations/linkedin-conversions/api/api.test.ts"],"names":[],"mappings":";;;;;AAAA,gDAAuB;AACvB,0GAA+E;AAC/E,gCAA4C;AAC5C,4CAAuC;
|
|
1
|
+
{"version":3,"file":"api.test.js","sourceRoot":"","sources":["../../../../src/destinations/linkedin-conversions/api/api.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,11 +6,14 @@ export declare class LinkedInConversions {
|
|
|
6
6
|
conversionRuleId?: string;
|
|
7
7
|
constructor(request: RequestClient, conversionRuleId?: string);
|
|
8
8
|
getProfile(): Promise<ModifiedResponse<ProfileAPIResponse>>;
|
|
9
|
-
|
|
9
|
+
getConversionRule: (adAccount: string, conversionRuleId: string) => Promise<ActionHookResponse<HookBundle['onMappingSave']['outputs']>>;
|
|
10
|
+
createConversionRule: (adAccount: string, hookInputs: HookBundle['onMappingSave']['inputs']) => Promise<ActionHookResponse<HookBundle['onMappingSave']['outputs']>>;
|
|
11
|
+
updateConversionRule: (adAccount: string, hookInputs: HookBundle['onMappingSave']['inputs'], hookOutputs: HookBundle['onMappingSave']['outputs']) => Promise<ActionHookResponse<HookBundle['onMappingSave']['outputs']>>;
|
|
10
12
|
getAdAccounts: () => Promise<DynamicFieldResponse>;
|
|
11
13
|
getConversionRulesList: (adAccountId: string) => Promise<DynamicFieldResponse>;
|
|
12
14
|
getCampaignsList: (adAccountUrn: string) => Promise<DynamicFieldResponse>;
|
|
13
15
|
streamConversionEvent(payload: Payload, conversionTime: number): Promise<ModifiedResponse>;
|
|
14
16
|
bulkAssociateCampaignToConversion(campaignIds: string[]): Promise<ModifiedResponse>;
|
|
15
17
|
associateCampignToConversion(campaignId: string): Promise<ModifiedResponse>;
|
|
18
|
+
private conversionRuleValuesUpdated;
|
|
16
19
|
}
|
|
@@ -4,39 +4,43 @@ exports.LinkedInConversions = void 0;
|
|
|
4
4
|
const constants_1 = require("../constants");
|
|
5
5
|
class LinkedInConversions {
|
|
6
6
|
constructor(request, conversionRuleId) {
|
|
7
|
-
this.
|
|
7
|
+
this.getConversionRule = async (adAccount, conversionRuleId) => {
|
|
8
|
+
try {
|
|
9
|
+
const { data } = await this.request(`${constants_1.BASE_URL}/conversions/${conversionRuleId}`, {
|
|
10
|
+
method: 'get',
|
|
11
|
+
searchParams: {
|
|
12
|
+
account: adAccount
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
return {
|
|
16
|
+
successMessage: `Using existing Conversion Rule: ${conversionRuleId} `,
|
|
17
|
+
savedData: {
|
|
18
|
+
id: conversionRuleId,
|
|
19
|
+
name: data.name || `No name returned for rule: ${conversionRuleId}`,
|
|
20
|
+
conversionType: data.type || `No type returned for rule: ${conversionRuleId}`,
|
|
21
|
+
attribution_type: data.attributionType || `No attribution type returned for rule: ${conversionRuleId}`
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
return {
|
|
27
|
+
error: {
|
|
28
|
+
message: `Failed to verify conversion rule: ${e?.message ?? JSON.stringify(e)}`,
|
|
29
|
+
code: 'CONVERSION_RULE_VERIFICATION_FAILURE'
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
this.createConversionRule = async (adAccount, hookInputs) => {
|
|
8
35
|
if (hookInputs?.conversionRuleId) {
|
|
9
|
-
|
|
10
|
-
const { data } = await this.request(`${constants_1.BASE_URL}/conversions/${this.conversionRuleId}`, {
|
|
11
|
-
method: 'get',
|
|
12
|
-
searchParams: {
|
|
13
|
-
account: payload?.adAccountId
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
return {
|
|
17
|
-
successMessage: `Using existing Conversion Rule: ${hookInputs.conversionRuleId} `,
|
|
18
|
-
savedData: {
|
|
19
|
-
id: hookInputs.conversionRuleId,
|
|
20
|
-
name: data.name || `No name returned for rule: ${hookInputs.conversionRuleId}`,
|
|
21
|
-
conversionType: data.type || `No type returned for rule: ${hookInputs.conversionRuleId}`
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
catch (e) {
|
|
26
|
-
return {
|
|
27
|
-
error: {
|
|
28
|
-
message: `Failed to verify conversion rule: ${e?.message ?? JSON.stringify(e)}`,
|
|
29
|
-
code: 'CONVERSION_RULE_VERIFICATION_FAILURE'
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
}
|
|
36
|
+
return this.getConversionRule(adAccount, hookInputs?.conversionRuleId);
|
|
33
37
|
}
|
|
34
38
|
try {
|
|
35
39
|
const { data } = await this.request(`${constants_1.BASE_URL}/conversions`, {
|
|
36
40
|
method: 'post',
|
|
37
41
|
json: {
|
|
38
42
|
name: hookInputs?.name,
|
|
39
|
-
account:
|
|
43
|
+
account: adAccount,
|
|
40
44
|
conversionMethod: 'CONVERSIONS_API',
|
|
41
45
|
postClickAttributionWindowSize: 30,
|
|
42
46
|
viewThroughAttributionWindowSize: 7,
|
|
@@ -49,7 +53,8 @@ class LinkedInConversions {
|
|
|
49
53
|
savedData: {
|
|
50
54
|
id: data.id,
|
|
51
55
|
name: data.name,
|
|
52
|
-
conversionType: data.type
|
|
56
|
+
conversionType: data.type,
|
|
57
|
+
attribution_type: hookInputs?.attribution_type || 'UNKNOWN'
|
|
53
58
|
}
|
|
54
59
|
};
|
|
55
60
|
}
|
|
@@ -62,6 +67,79 @@ class LinkedInConversions {
|
|
|
62
67
|
};
|
|
63
68
|
}
|
|
64
69
|
};
|
|
70
|
+
this.updateConversionRule = async (adAccount, hookInputs, hookOutputs) => {
|
|
71
|
+
if (!hookOutputs) {
|
|
72
|
+
return {
|
|
73
|
+
error: {
|
|
74
|
+
message: `Failed to update conversion rule: No existing rule to update.`,
|
|
75
|
+
code: 'CONVERSION_RULE_UPDATE_FAILURE'
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
if (hookInputs?.conversionRuleId) {
|
|
80
|
+
return this.getConversionRule(adAccount, hookInputs?.conversionRuleId);
|
|
81
|
+
}
|
|
82
|
+
const valuesChanged = this.conversionRuleValuesUpdated(hookInputs, hookOutputs);
|
|
83
|
+
if (!valuesChanged) {
|
|
84
|
+
if (!hookOutputs?.id || !hookOutputs?.name || !hookOutputs?.conversionType || !hookOutputs?.attribution_type) {
|
|
85
|
+
return {
|
|
86
|
+
error: {
|
|
87
|
+
message: `Failed to update conversion rule: Conversion rule values are not valid.`,
|
|
88
|
+
code: 'CONVERSION_RULE_UPDATE_FAILURE'
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
return {
|
|
93
|
+
successMessage: `No updates detected, using rule: ${hookOutputs.id}.`,
|
|
94
|
+
savedData: {
|
|
95
|
+
id: hookOutputs.id,
|
|
96
|
+
name: hookOutputs.name,
|
|
97
|
+
conversionType: hookOutputs.conversionType,
|
|
98
|
+
attribution_type: hookOutputs.attribution_type
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
try {
|
|
103
|
+
await this.request(`${constants_1.BASE_URL}/conversions/${hookOutputs.id}`, {
|
|
104
|
+
method: 'post',
|
|
105
|
+
searchParams: {
|
|
106
|
+
account: adAccount
|
|
107
|
+
},
|
|
108
|
+
headers: {
|
|
109
|
+
'X-RestLi-Method': 'PARTIAL_UPDATE',
|
|
110
|
+
'Content-Type': 'application/json'
|
|
111
|
+
},
|
|
112
|
+
json: {
|
|
113
|
+
patch: {
|
|
114
|
+
$set: valuesChanged
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
return {
|
|
119
|
+
successMessage: `Conversion rule ${hookOutputs.id} updated successfully!`,
|
|
120
|
+
savedData: {
|
|
121
|
+
id: hookOutputs.id,
|
|
122
|
+
name: hookInputs?.name || hookOutputs.name,
|
|
123
|
+
conversionType: hookInputs?.conversionType || hookOutputs.conversionType,
|
|
124
|
+
attribution_type: hookInputs?.attribution_type || hookOutputs.attribution_type
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
catch (e) {
|
|
129
|
+
return {
|
|
130
|
+
savedData: {
|
|
131
|
+
id: hookOutputs.id,
|
|
132
|
+
name: hookOutputs.name,
|
|
133
|
+
conversionType: hookOutputs.conversionType,
|
|
134
|
+
attribution_type: hookOutputs.attribution_type
|
|
135
|
+
},
|
|
136
|
+
error: {
|
|
137
|
+
message: `Failed to update conversion rule: ${e?.message ?? JSON.stringify(e)}`,
|
|
138
|
+
code: 'CONVERSION_RULE_UPDATE_FAILURE'
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
};
|
|
65
143
|
this.getAdAccounts = async () => {
|
|
66
144
|
try {
|
|
67
145
|
const allAdAccountsResponse = await this.request(`${constants_1.BASE_URL}/adAccounts`, {
|
|
@@ -177,6 +255,19 @@ class LinkedInConversions {
|
|
|
177
255
|
};
|
|
178
256
|
}
|
|
179
257
|
};
|
|
258
|
+
this.conversionRuleValuesUpdated = (hookInputs, hookOutputs) => {
|
|
259
|
+
const valuesChanged = {};
|
|
260
|
+
if (hookInputs?.name && hookInputs?.name !== hookOutputs?.name) {
|
|
261
|
+
valuesChanged.name = hookInputs?.name;
|
|
262
|
+
}
|
|
263
|
+
if (hookInputs?.conversionType && hookInputs?.conversionType !== hookOutputs?.conversionType) {
|
|
264
|
+
valuesChanged.conversionType = hookInputs?.conversionType;
|
|
265
|
+
}
|
|
266
|
+
if (hookInputs?.attribution_type && hookInputs?.attribution_type !== hookOutputs?.attribution_type) {
|
|
267
|
+
valuesChanged.attributionType = hookInputs?.attribution_type;
|
|
268
|
+
}
|
|
269
|
+
return valuesChanged;
|
|
270
|
+
};
|
|
180
271
|
this.request = request;
|
|
181
272
|
this.conversionRuleId = conversionRuleId;
|
|
182
273
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/linkedin-conversions/api/index.ts"],"names":[],"mappings":";;;AACA,4CAAuC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/linkedin-conversions/api/index.ts"],"names":[],"mappings":"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"}
|