feat(campaigns): add portable campaign transfers
Module Package Release / publish-packages (push) Successful in 12s
Module Package Release / publish-packages (push) Successful in 12s
This commit is contained in:
@@ -234,6 +234,52 @@ export type CampaignCopyOptions = {
|
||||
include_mail_profile: boolean;
|
||||
};
|
||||
|
||||
export type CampaignTransferScope =
|
||||
| "metadata"
|
||||
| "template_config"
|
||||
| "recipients"
|
||||
| "attachments"
|
||||
| "review_state"
|
||||
| "delivery_history";
|
||||
|
||||
export type CampaignPortablePackage = {
|
||||
format: "govoplan.campaign-portable";
|
||||
format_version: string;
|
||||
package_id: string;
|
||||
exported_at: string;
|
||||
source: Record<string, unknown>;
|
||||
scopes: CampaignTransferScope[];
|
||||
manifest: Record<string, unknown>;
|
||||
payload: Record<string, unknown>;
|
||||
integrity: { algorithm: string; package_sha256: string };
|
||||
};
|
||||
|
||||
export type CampaignTransferPlanItem = {
|
||||
scope: CampaignTransferScope;
|
||||
code: string;
|
||||
summary: string;
|
||||
item_count?: number | null;
|
||||
};
|
||||
|
||||
export type CampaignImportPreview = {
|
||||
compatible: boolean;
|
||||
package_id?: string | null;
|
||||
package_sha256?: string | null;
|
||||
format_version?: string | null;
|
||||
source: Record<string, unknown>;
|
||||
available_scopes: CampaignTransferScope[];
|
||||
selected_scopes: CampaignTransferScope[];
|
||||
destination: { external_id?: string; name?: string; status?: string };
|
||||
will_create: CampaignTransferPlanItem[];
|
||||
will_skip: CampaignTransferPlanItem[];
|
||||
warnings: string[];
|
||||
errors: string[];
|
||||
};
|
||||
|
||||
export type CampaignImportApplyResponse = CampaignCreateResponse & {
|
||||
receipt: Record<string, unknown>;
|
||||
};
|
||||
|
||||
export type CampaignScheduleOccurrence = {
|
||||
id: string;
|
||||
schedule_id: string;
|
||||
@@ -1339,6 +1385,49 @@ options: CampaignCopyOptions)
|
||||
});
|
||||
}
|
||||
|
||||
export async function exportCampaignPackage(
|
||||
settings: ApiSettings,
|
||||
campaignId: string,
|
||||
versionId: string,
|
||||
scopes: CampaignTransferScope[])
|
||||
: Promise<CampaignPortablePackage> {
|
||||
return apiFetch<CampaignPortablePackage>(settings, `/api/v1/campaigns/${campaignId}/versions/${versionId}/exports`, {
|
||||
method: "POST",
|
||||
body: JSON.stringify({ scopes })
|
||||
});
|
||||
}
|
||||
|
||||
export async function previewCampaignImport(
|
||||
settings: ApiSettings,
|
||||
payload: {
|
||||
package: Record<string, unknown>;
|
||||
selected_scopes?: CampaignTransferScope[] | null;
|
||||
external_id?: string;
|
||||
name?: string;
|
||||
})
|
||||
: Promise<CampaignImportPreview> {
|
||||
return apiFetch<CampaignImportPreview>(settings, "/api/v1/campaign-transfers/imports/preview", {
|
||||
method: "POST",
|
||||
body: JSON.stringify(payload)
|
||||
});
|
||||
}
|
||||
|
||||
export async function importCampaignPackage(
|
||||
settings: ApiSettings,
|
||||
payload: {
|
||||
package: Record<string, unknown>;
|
||||
selected_scopes: CampaignTransferScope[];
|
||||
external_id?: string;
|
||||
name?: string;
|
||||
expected_package_sha256: string;
|
||||
})
|
||||
: Promise<CampaignImportApplyResponse> {
|
||||
return apiFetch<CampaignImportApplyResponse>(settings, "/api/v1/campaign-transfers/imports", {
|
||||
method: "POST",
|
||||
body: JSON.stringify(payload)
|
||||
});
|
||||
}
|
||||
|
||||
export async function listCampaignSchedules(
|
||||
settings: ApiSettings,
|
||||
campaignId: string)
|
||||
|
||||
Reference in New Issue
Block a user