A valid request URL is required to generate request examples{
"subjectId": "cust-1",
"entries": [
{
"scope": "marketing_email",
"status": "granted",
"at": "2026-07-14T10:31:00.000Z",
"source": "counter"
}
],
"history": [
{
"scope": "marketing_email",
"status": "granted",
"at": "2026-07-14T10:31:00.000Z",
"actorId": "user-42",
"source": "counter",
"correlationId": "corr-8f21"
}
]
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123,
"fieldErrors": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}Get a customer's consent record
Returns the customer’s granular consent standing: entries is the CURRENT decision per scope (marketing_email, marketing_sms, loyalty_profiling, analytics, data_sharing), history the full append-only audit trail. Check this before any marketing action — the coarse optIn flag on the customer record is not the same thing. This NEVER 404s: an empty record (200) means either a subject who never decided OR a customer id that does not exist at all — the two are indistinguishable here, so confirm the id with getCustomer before reading an empty record as consent data.
A valid request URL is required to generate request examples{
"subjectId": "cust-1",
"entries": [
{
"scope": "marketing_email",
"status": "granted",
"at": "2026-07-14T10:31:00.000Z",
"source": "counter"
}
],
"history": [
{
"scope": "marketing_email",
"status": "granted",
"at": "2026-07-14T10:31:00.000Z",
"actorId": "user-42",
"source": "counter",
"correlationId": "corr-8f21"
}
]
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123,
"fieldErrors": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}Authorizations
Authorization: Bearer <token>. Accepts EITHER a Keycloak access token (scopes-in-token) OR an opaque POS session token; both resolve to the same pos.* scope vocabulary the route guards enforce.
Path Parameters
The customer id to act on, e.g. cust-1 (client Customer.id).
1
