From 5c1964aa28ce70f98e60156787a1cb24516fe7ce Mon Sep 17 00:00:00 2001 From: Marko Ognjenovic Date: Wed, 17 Sep 2025 15:05:28 +0200 Subject: [PATCH 1/2] Support campaign duplication with recipients --- src/endpoints/Campaigns/Client.ts | 6 +++--- src/endpoints/Campaigns/types.ts | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/endpoints/Campaigns/Client.ts b/src/endpoints/Campaigns/Client.ts index 731b62de..2964d678 100644 --- a/src/endpoints/Campaigns/Client.ts +++ b/src/endpoints/Campaigns/Client.ts @@ -12,7 +12,7 @@ import type { CampaignResponse, UpdateRequest, ListResponse, - SearchOptions, + SearchOptions, DuplicateOptions, } from './types'; export type Client = ReturnType; @@ -48,8 +48,8 @@ export function createClient(api: DeferredJobsApiClient) { return api.get(`${routing.campaignsUrl}/${id}`); } - async function duplicate(id: Campaign['id']): Promise { - return api.post(`${routing.campaignsUrl}/${id}/duplicate`); + async function duplicate(id: Campaign['id'], options?: DuplicateOptions): Promise { + return api.post(`${routing.campaignsUrl}/${id}/duplicate`, { payload: options }); } async function doDelete(id: Campaign['id']): Promise { diff --git a/src/endpoints/Campaigns/types.ts b/src/endpoints/Campaigns/types.ts index 2a90a88c..edbf9d10 100644 --- a/src/endpoints/Campaigns/types.ts +++ b/src/endpoints/Campaigns/types.ts @@ -35,6 +35,10 @@ export interface UpdateRequest { is_click_tracking_enabled?: boolean; } +export interface DuplicateOptions { + with_recipients?: boolean; +} + export interface RecipientsOperationResponse { campaign: Campaign; warnings: Warning[]; From f6c40132834ae68e58742e75b4efdda69dd53f3b Mon Sep 17 00:00:00 2001 From: Marko Ognjenovic Date: Wed, 17 Sep 2025 15:06:25 +0200 Subject: [PATCH 2/2] Fix code style --- src/endpoints/Campaigns/Client.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/endpoints/Campaigns/Client.ts b/src/endpoints/Campaigns/Client.ts index 2964d678..4d0c8ccd 100644 --- a/src/endpoints/Campaigns/Client.ts +++ b/src/endpoints/Campaigns/Client.ts @@ -12,7 +12,8 @@ import type { CampaignResponse, UpdateRequest, ListResponse, - SearchOptions, DuplicateOptions, + SearchOptions, + DuplicateOptions, } from './types'; export type Client = ReturnType; @@ -48,8 +49,13 @@ export function createClient(api: DeferredJobsApiClient) { return api.get(`${routing.campaignsUrl}/${id}`); } - async function duplicate(id: Campaign['id'], options?: DuplicateOptions): Promise { - return api.post(`${routing.campaignsUrl}/${id}/duplicate`, { payload: options }); + async function duplicate( + id: Campaign['id'], + options?: DuplicateOptions, + ): Promise { + return api.post(`${routing.campaignsUrl}/${id}/duplicate`, { + payload: options, + }); } async function doDelete(id: Campaign['id']): Promise {