A valid request URL is required to generate request examples{
"accrualPointsPerCent": 0.01,
"redemptionCentsPerPoint": 2,
"tiers": [
{
"id": "bronze",
"name": "Bronze",
"minLifetimePoints": 0
},
{
"id": "argent",
"name": "Argent",
"minLifetimePoints": 400
},
{
"id": "or",
"name": "Or",
"minLifetimePoints": 1000
},
{
"id": "platine",
"name": "Platine",
"minLifetimePoints": 3000
}
]
}{
"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 the active loyalty program config (fidélité, paliers)
Returns the loyalty plan the earn/burn maths currently applies: accrualPointsPerCent (points granted per cent spent — 0.01 means 1 point per euro), redemptionCentsPerPoint (the discount one point buys), the tier ladder ordered by minLifetimePoints, and the optional points-expiry policy. Read this before quoting any points value to a customer, and before calling updateLoyaltyConfig — that verb replaces the WHOLE document. Always 200: before anything has been saved it returns the seeded default plan, never a 404.
A valid request URL is required to generate request examples{
"accrualPointsPerCent": 0.01,
"redemptionCentsPerPoint": 2,
"tiers": [
{
"id": "bronze",
"name": "Bronze",
"minLifetimePoints": 0
},
{
"id": "argent",
"name": "Argent",
"minLifetimePoints": 400
},
{
"id": "or",
"name": "Or",
"minLifetimePoints": 1000
},
{
"id": "platine",
"name": "Platine",
"minLifetimePoints": 3000
}
]
}{
"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.
Response
The active program rules (the seeded default until one is saved).

