A valid request URL is required to generate request examples{
"id": "internal-notre-reseau",
"name": "Notre réseau",
"description": "La taxonomie validée en comité produit.",
"origin": "internal",
"axes": [],
"capturedAt": "2026-08-07T09:12:00.000Z"
}{
"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
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}Save the current taxonomy as an internal preset
Captures every LIVE axis (archived ones are excluded) into a named preset in the merchant’s own library, shared across every store of the network. The result is a FROZEN SNAPSHOT: later edits to the taxonomy do not reach it, and capturedAt records when it was taken — a preset that tracked the live vocabulary would be a mirror, and importing a mirror installs nothing. Reads and writes in one transaction under the taxonomy lock, so a snapshot can never freeze a half-finished import. 409s on a duplicate name, 422 when the taxonomy has no live axis to capture (an empty preset would list and preview like any other and install nothing). Needs pos.catalog.manage.
A valid request URL is required to generate request examples{
"id": "internal-notre-reseau",
"name": "Notre réseau",
"description": "La taxonomie validée en comité produit.",
"origin": "internal",
"axes": [],
"capturedAt": "2026-08-07T09:12:00.000Z"
}{
"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
}
}{
"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.

