@vulture916/activepieces-piece-lemlist
Version:
Lemlist integration for ActivePieces - Email outreach and sales engagement platform
75 lines (69 loc) • 2.21 kB
JavaScript
const { createAction, Property } = require('@activepieces/pieces-framework');
const { HttpMethod } = require('@activepieces/pieces-common');
const { lemlistAuth } = require('../../common/auth');
const { lemlistClient } = require('../../common/client');
exports.getCampaignStats = createAction({
auth: lemlistAuth,
name: 'get_campaign_stats',
displayName: 'Get Campaign Stats',
description: 'Retrieve statistics for a specific campaign',
props: {
campaignId: Property.ShortText({
displayName: 'Campaign ID',
description: 'The ID of the campaign to get stats for',
required: true,
}),
version: Property.StaticDropdown({
displayName: 'API Version',
description: 'Choose between v1 (simple) or v2 (detailed with filters)',
required: false,
defaultValue: 'v1',
options: {
options: [
{ label: 'V1 - Simple Stats', value: 'v1' },
{ label: 'V2 - Detailed Stats', value: 'v2' },
],
},
}),
startDate: Property.DateTime({
displayName: 'Start Date',
description: 'Filter stats from this date (V2 only)',
required: false,
}),
endDate: Property.DateTime({
displayName: 'End Date',
description: 'Filter stats until this date (V2 only)',
required: false,
}),
userId: Property.ShortText({
displayName: 'User ID',
description: 'Filter stats by user (V2 only)',
required: false,
}),
},
async run(context) {
const { campaignId, version, startDate, endDate, userId } = context.propsValue;
let endpoint = `/campaigns/${campaignId}/stats`;
let queryParams = {};
if (version === 'v2') {
endpoint = `/v2/campaigns/${campaignId}/stats`;
if (startDate) {
queryParams = { ...queryParams, startDate };
}
if (endDate) {
queryParams = { ...queryParams, endDate };
}
if (userId) {
queryParams = { ...queryParams, userId };
}
}
const stats = await lemlistClient.makeRequest(
context.auth,
HttpMethod.GET,
endpoint,
undefined,
Object.keys(queryParams).length > 0 ? queryParams
);
return stats;
},
});