Integrate Distribution Lists with Campaign recipients
This commit is contained in:
@@ -195,6 +195,127 @@ export type CampaignRecipientAddressSourcesResponse = {
|
||||
sources: CampaignRecipientAddressSource[];
|
||||
};
|
||||
|
||||
export type CampaignDistributionListParameter = {
|
||||
key: string;
|
||||
value_type: "string" | "integer" | "number" | "boolean" | "date" | "datetime" | "string_list";
|
||||
label?: string | null;
|
||||
required: boolean;
|
||||
default?: unknown;
|
||||
allowed_values: unknown[];
|
||||
minimum?: number | null;
|
||||
maximum?: number | null;
|
||||
pattern?: string | null;
|
||||
description?: string | null;
|
||||
};
|
||||
|
||||
export type CampaignDistributionListSource = {
|
||||
id: string;
|
||||
tenant_id: string;
|
||||
name: string;
|
||||
revision_id: string;
|
||||
revision: number;
|
||||
definition_hash: string;
|
||||
definition_kind: string;
|
||||
description?: string | null;
|
||||
status: string;
|
||||
entry_count: number;
|
||||
read_only: boolean;
|
||||
stale: boolean;
|
||||
parameters: CampaignDistributionListParameter[];
|
||||
updated_at?: string | null;
|
||||
provenance: Record<string, unknown>;
|
||||
metadata: Record<string, unknown>;
|
||||
};
|
||||
|
||||
export type CampaignDistributionListSourcesResponse = {
|
||||
available: boolean;
|
||||
expand_available: boolean;
|
||||
sources: CampaignDistributionListSource[];
|
||||
};
|
||||
|
||||
export type CampaignDistributionSourceReference = {
|
||||
provider: string;
|
||||
resource_type: string;
|
||||
resource_id: string;
|
||||
revision?: string | null;
|
||||
fingerprint?: string | null;
|
||||
label?: string | null;
|
||||
metadata: Record<string, unknown>;
|
||||
};
|
||||
|
||||
export type CampaignDistributionExplanation = {
|
||||
code: string;
|
||||
message: string;
|
||||
severity: "info" | "warning" | "error" | string;
|
||||
provider?: string | null;
|
||||
source?: CampaignDistributionSourceReference | null;
|
||||
provenance: Record<string, unknown>;
|
||||
};
|
||||
|
||||
export type CampaignDistributionChannelCandidate = {
|
||||
channel: "email" | "postal" | "internal_mail" | "portal" | string;
|
||||
target: string;
|
||||
target_key: string;
|
||||
status: string;
|
||||
contact_point_id?: string | null;
|
||||
locale?: string | null;
|
||||
preferred: boolean;
|
||||
reason_code?: string | null;
|
||||
explanation?: string | null;
|
||||
source?: CampaignDistributionSourceReference | null;
|
||||
decision_provenance: Record<string, unknown>;
|
||||
};
|
||||
|
||||
export type CampaignDistributionRecipient = {
|
||||
recipient_key: string;
|
||||
display_name: string;
|
||||
status: string;
|
||||
channels: CampaignDistributionChannelCandidate[];
|
||||
identity_id?: string | null;
|
||||
account_id?: string | null;
|
||||
contact_id?: string | null;
|
||||
organization_unit_id?: string | null;
|
||||
function_id?: string | null;
|
||||
source_entry_ids: string[];
|
||||
explanations: CampaignDistributionExplanation[];
|
||||
attributes: Record<string, unknown>;
|
||||
provenance: Record<string, unknown>;
|
||||
};
|
||||
|
||||
export type CampaignDistributionProviderEvidence = {
|
||||
provider: string;
|
||||
source: CampaignDistributionSourceReference;
|
||||
actual_revision?: string | null;
|
||||
actual_fingerprint?: string | null;
|
||||
stale: boolean;
|
||||
generated_at?: string | null;
|
||||
details: Record<string, unknown>;
|
||||
};
|
||||
|
||||
export type CampaignDistributionListExpansion = {
|
||||
source: CampaignDistributionListSource;
|
||||
request: Record<string, unknown>;
|
||||
recipients: CampaignDistributionRecipient[];
|
||||
excluded: CampaignDistributionRecipient[];
|
||||
diagnostics: CampaignDistributionExplanation[];
|
||||
provider_evidence: CampaignDistributionProviderEvidence[];
|
||||
expansion_hash: string;
|
||||
generated_at?: string | null;
|
||||
snapshot_id?: string | null;
|
||||
stale: boolean;
|
||||
truncated: boolean;
|
||||
};
|
||||
|
||||
export type CampaignDistributionListExpansionInput = {
|
||||
list_id: string;
|
||||
revision?: number | null;
|
||||
effective_at?: string | null;
|
||||
purpose?: string;
|
||||
requested_channels: Array<"email" | "postal" | "internal_mail" | "portal">;
|
||||
parameters: Record<string, unknown>;
|
||||
idempotency_key?: string | null;
|
||||
};
|
||||
|
||||
export type CampaignPostboxDirectoryEntry = {
|
||||
id: string;
|
||||
address: string;
|
||||
@@ -746,6 +867,40 @@ campaignId: string)
|
||||
return apiFetch<CampaignRecipientAddressSourcesResponse>(settings, `/api/v1/campaigns/${campaignId}/recipient-address-sources`);
|
||||
}
|
||||
|
||||
export async function listCampaignRecipientDistributionLists(
|
||||
settings: ApiSettings,
|
||||
campaignId: string,
|
||||
query = "")
|
||||
: Promise<CampaignDistributionListSourcesResponse> {
|
||||
const params = new URLSearchParams();
|
||||
params.set("limit", "250");
|
||||
if (query.trim()) params.set("query", query.trim());
|
||||
const suffix = params.size ? `?${params.toString()}` : "";
|
||||
return apiFetch<CampaignDistributionListSourcesResponse>(settings, `/api/v1/campaigns/${campaignId}/recipient-distribution-lists${suffix}`);
|
||||
}
|
||||
|
||||
export async function previewCampaignRecipientDistributionList(
|
||||
settings: ApiSettings,
|
||||
campaignId: string,
|
||||
payload: CampaignDistributionListExpansionInput)
|
||||
: Promise<CampaignDistributionListExpansion> {
|
||||
return apiFetch<CampaignDistributionListExpansion>(settings, `/api/v1/campaigns/${campaignId}/recipient-distribution-lists/preview`, {
|
||||
method: "POST",
|
||||
body: JSON.stringify(payload)
|
||||
});
|
||||
}
|
||||
|
||||
export async function snapshotCampaignRecipientDistributionList(
|
||||
settings: ApiSettings,
|
||||
campaignId: string,
|
||||
payload: CampaignDistributionListExpansionInput)
|
||||
: Promise<CampaignDistributionListExpansion> {
|
||||
return apiFetch<CampaignDistributionListExpansion>(settings, `/api/v1/campaigns/${campaignId}/recipient-distribution-lists/snapshot`, {
|
||||
method: "POST",
|
||||
body: JSON.stringify(payload)
|
||||
});
|
||||
}
|
||||
|
||||
export async function getCampaignPostboxCatalog(
|
||||
settings: ApiSettings,
|
||||
campaignId: string)
|
||||
|
||||
Reference in New Issue
Block a user