Skip to main content

GET /api/v1/customers//eligibility

Returns a detailed eligibility report for a customer across all active offers. For each offer, evaluates every decisioning gate and contact policy, returning pass/fail with reasons.

Response

Offers are sorted: eligible first (by score descending), then ineligible (by priority descending). Each eligible offer receives a rank (1-based); ineligible offers have rank: null.

Contact policy result objects

When a contact policy blocks an offer, the blockedPolicies array contains objects with:

GET /api/v1/customers//profile

Returns a traced decision pipeline for a customer, showing the full evaluation funnel from all offers down to ranked results.

Response

Qualification rejection detail types

The detail object in qualificationRejections varies by rule type:

Contact policy rejection detail types


POST /api/v1/customers//simulate

Runs the Recommend API internally for a customer and returns the full decision result including scores, rankings, and channel assignments. Always includes debug information.

Request Body

Response

Error Response

If the internal recommend call fails:

GET /api/v1/customers//suppressions

Returns active suppressions for a customer with resolved offer names.

Response


GET /api/v1/customers//summaries

Returns interaction summary aggregates for a specific customer, including per-offer breakdowns and rolled-up totals.

Query Parameters

Response


DELETE /api/v1/customers/

Deletes all stored data for a customer. Supports GDPR right-to-erasure (DSAR) workflows. Deletes interaction history, interaction summaries, experiment assignments, and impressions in foreign-key-safe order.

Response

Error codes

This permanently deletes customer data. This operation cannot be undone. An audit event is logged for every deletion.

DELETE /api/v1/customers//data

Scoped, GDPR-compliant deletion of customer data with a confirmation safeguard. The route at src/app/api/v1/customers/[customerId]/data/route.ts:24-122 requires the caller to set the X-Confirm-Delete header to the same customerId in the path — a missing or mismatched header returns 400 so a stray DELETE call cannot purge data by accident. Three scopes are supported via the scope query parameter (route.ts:46-50): Default scope is all (route.ts:44).

Path Parameters

Query Parameters

string
default:"all"
One of interactions, traces, all. Any other value returns 400.

Required headers

Response

Returned at route.ts:112-118.
number
Sum of all per-table counts.
object
Per-table delete counts. Tables outside the requested scope are absent. decisionTraces, experimentAssignments, and impressions are wrapped in try/catch — if the table is unavailable the count is reported as 0 rather than failing the request (route.ts:74-97).

Status codes

Audit

Every successful call writes one delete row to the audit log with entityType: "customer_data" and the per-table counts in changes. The audit row is fire-and-forget — a failed log write does not roll back the deletion.

Roles

admin only.
Permanent deletion. The operation cannot be undone. Use this endpoint when fulfilling a DSAR/right-to-erasure request — for soft suppression of a single customer in active campaigns, use the Suppressions API instead.


Role requirements