A valid request URL is required to generate request examples{
"id": "cust-1",
"name": "Camille Renard",
"email": "camille.renard@example.com",
"tier": "Or",
"postalCode": "75011",
"points": 1240,
"spend": 842.5,
"orders": 17,
"optIn": false
}{
"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
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}Update a customer profile
Patches an existing customer’s identity, contact and marketing-consent fields. PATCH semantics despite the verb: only the keys you send change, and an explicit null on a contact field CLEARS it (omitting the key leaves it untouched). The path id is authoritative — a body id is discarded. This never touches the loyalty balance: use accrueLoyaltyPoints / redeemLoyaltyPoints for that. 404s for an unknown customer.
A valid request URL is required to generate request examples{
"id": "cust-1",
"name": "Camille Renard",
"email": "camille.renard@example.com",
"tier": "Or",
"postalCode": "75011",
"points": 1240,
"spend": 842.5,
"orders": 17,
"optIn": false
}{
"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
}
}{
"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).
1Body
1^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$111Response
The updated customer record. Note the phone key is ABSENT: the request example's phone: null cleared the stored number.
The updated customer record. Note the phone key is ABSENT: the request example's phone: null cleared the stored number.
1110 <= x <= 9007199254740991x >= 00 <= x <= 9007199254740991^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
