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
rank (1-based); ineligible offers have rank: null.
Contact policy result objects
When a contact policy blocks an offer, theblockedPolicies 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
Thedetail 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
DELETE /api/v1/customers//data
Scoped, GDPR-compliant deletion of customer data with a confirmation safeguard. The route atsrc/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 atroute.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 onedelete 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.