This document describes the HTTP API for Single Customer View (SCV): customer data and exports.
Backend: send x-dxp-tenant and x-api-key on every request.
Frontend: authenticate with the session only — the dxp-sessionid cookie.
retAllProps / retProps)retAllProps=1: responses include all customer attributes allowed by the tenant's configured schema (not restricted to retProps), including event-related fields where the schema defines them. $eventLog is included when returning full attributes.retAllProps (or do not set it to 1) and use retProps as a comma-separated list to select a subset (including $-prefixed system fields such as $customerid, $segments).{"message":"Unauthorized"}.title, status, and optionally invalid-params.Required privilege: CUSTOMERS_READ
Search: exactly one dimension — username, email, tertiary, segment (segment code resolved to id), or search[contains].
Projection: optional retAllProps=1 or retProps (comma-separated; $ prefixes such as $customerid, $segments). See Response projection in the introduction.
Pagination: optional page[size], page[before], page[after] (mutually exclusive before/after).
Sort: optional segmentedDate, createdDate, updatedDate, with leading - for descending.
| username | string |
string | |
| tertiary | string |
| segment | string Segment code (resolved server-side). |
| search[contains] | string Case-insensitive substring search. |
| retAllProps | string Value: "1" When |
| retProps | string Comma-separated attributes, e.g. |
| sort | string |
| page[size] | integer |
| page[before] | string |
| page[after] | string |
{- "data": [
- { }
], - "links": {
- "prev": "string",
- "next": "string"
}
}Required privilege: CUSTOMER_CREATE
Body may be {} or a partial profile; attributes must validate against the tenant schema. Returns 201 with $customerid on success.
| retAllProps | string Value: "1" When |
| retProps | string |
| property name* additional property | any |
{- "$verifiedEmail": "user@example.com",
- "$username": "postman@squiz.net",
- "$tertiaryid": "abc123",
- "firstName": "Bilbo",
- "lastName": "Baggins",
- "consented": true
}{- "$customerid": "9579fe91-b7d0-4f96-be52-e68fa86ec287"
}Required privilege: CUSTOMER_READ
Use retAllProps=1 or retProps like the list endpoint (see Response projection in the introduction).
| customerid required | string <uuid> |
| retAllProps | string Value: "1" When |
| retProps | string |
{ }Required privilege: CUSTOMER_UPDATE
| customerid required | string <uuid> |
| retAllProps | string Value: "1" When |
| retProps | string |
| property name* additional property | any |
{- "firstName": "Bilbo",
- "lastName": "Baggins 3"
}{ }Required privilege: CUSTOMER_UPDATE
Default query mode is overwrite, which currently returns 501 Not Implemented. Use ?mode=merge for merge create/update: 201 if created, 200 if updated. customerid must be UUID v4. 409 if another customer already owns the same email.
| customerid required | string <uuid> |
| mode | string Default: "overwrite" Enum: "merge" "overwrite" |
| retAllProps | string Value: "1" When |
| retProps | string |
| property name* additional property | any |
{ }{ }Required privilege: CUSTOMER_DELETE
Response body may be JSON null with status 204.
| customerid required | string <uuid> |
{- "title": "string",
- "status": 0,
- "invalid-params": [
- {
- "name": "string",
- "reason": "string"
}
]
}Resolves the customer from the session. Supports retAllProps, retProps (see Response projection in the introduction), and retMetadata=attributes (returns metadata alongside attributes when metadata is requested — see handler implementation).
| retAllProps | string Value: "1" When |
| retProps | string |
| retMetadata | string Value: "attributes" |
{ }Same behavior as GET /getCustomer for the session-backed customer profile.
| retAllProps | string Value: "1" When |
| retProps | string |
| retMetadata | string Value: "attributes" |
{ }Empty body returns 400 Missing request body. Invalid JSON returns 400 Invalid JSON. Success returns 200 with an empty JSON object {}.
| property name* additional property | any |
{- "firstName": "John",
- "lastName": "Smith",
- "gpa": 2.3
}{ }Required privilege: CUSTOMERS_EXPORT
JSON body must include segment. Returns 202 with exportid.
| segment required | string |
{- "segment": "85acd"
}{- "exportid": "2023-11-01T02:44:15.814Z_85acd"
}Required privilege: CUSTOMERS_EXPORT
404 if the export processing marker is missing. signedURL is null until the CSV exists.
| exportid required | string |
{- "exportid": "2023-11-01T02:44:15.814Z_85acd",
- "signedURL": null
}