{
  "openapi": "3.2.0",
  "info": {
    "title": "Schema-Driven Content Platform API",
    "version": "1.0.0",
    "description": "Generated from the published schema registry. Every model, field, filter and error shape in this document is derived from canonical schema metadata — nothing is handwritten.",
    "contact": {
      "name": "Platform"
    },
    "license": {
      "name": "Proprietary"
    }
  },
  "servers": [
    {
      "url": "https://schemas.xeper.io",
      "description": "Current environment"
    }
  ],
  "tags": [
    {
      "name": "Layouts",
      "description": "Responsive view definitions per model"
    },
    {
      "name": "Media",
      "description": "Asset library and delivery"
    },
    {
      "name": "Alarm categories",
      "description": "Grouping of alarm definitions by functional area."
    },
    {
      "name": "Alarm definitions",
      "description": "A single machine-readable alarm contract."
    },
    {
      "name": "Countries",
      "description": "Market reference data."
    },
    {
      "name": "E2E Notes",
      "description": "E2E Note operations"
    },
    {
      "name": "Landing pages",
      "description": "Composable marketing page assembled from blocks."
    },
    {
      "name": "Lifecycle statuses",
      "description": "TMF lifecycle status catalogue shared by every catalog entity."
    },
    {
      "name": "Product categories",
      "description": "TMF Category: hierarchical classification of the catalog."
    },
    {
      "name": "Product characteristics",
      "description": "TMF ProductSpecificationCharacteristic: a reusable product attribute with its allowed values."
    },
    {
      "name": "Product offerings",
      "description": "TMF ProductOffering: the commercial packaging of a specification for a market."
    },
    {
      "name": "Product specifications",
      "description": "TMF ProductSpecification: the technical definition of a product."
    },
    {
      "name": "Product variants",
      "description": "Sellable variant of a specification, defined by its characteristic values."
    },
    {
      "name": "Tags",
      "description": "Cross-entity tag catalogue used for grouping and faceted search."
    }
  ],
  "x-tagGroups": [
    {
      "name": "Content",
      "tags": [
        "E2E Notes"
      ]
    },
    {
      "name": "Marketing",
      "tags": [
        "Landing pages"
      ]
    },
    {
      "name": "Operations",
      "tags": [
        "Alarm categories",
        "Alarm definitions"
      ]
    },
    {
      "name": "Product (TM Forum)",
      "tags": [
        "Lifecycle statuses",
        "Product categories",
        "Product characteristics",
        "Product offerings",
        "Product specifications",
        "Product variants",
        "Tags"
      ]
    },
    {
      "name": "Reference data",
      "tags": [
        "Countries"
      ]
    },
    {
      "name": "Platform",
      "tags": [
        "Media",
        "Layouts"
      ]
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "paths": {
    "/api/v1/views": {
      "get": {
        "tags": [
          "Layouts"
        ],
        "summary": "List every model with its available layouts",
        "operationId": "layoutIndex",
        "responses": {
          "200": {
            "description": "Layout index",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/assets": {
      "get": {
        "tags": [
          "Media"
        ],
        "summary": "List assets in the current account",
        "operationId": "listAssets",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "image",
                "video",
                "audio",
                "document",
                "archive",
                "other"
              ]
            }
          },
          {
            "name": "folder",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tags",
            "in": "query",
            "description": "Comma-separated tag list; matches any tag.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Assets with facet counts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/assets/{id}": {
      "get": {
        "tags": [
          "Media"
        ],
        "summary": "Asset metadata",
        "operationId": "getAsset",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Asset record",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/assets/{id}/file": {
      "get": {
        "tags": [
          "Media"
        ],
        "summary": "Asset delivery redirect",
        "description": "Redirects (302) to a short-lived signed object URL. Safe to use directly in `src`/`href` attributes.",
        "operationId": "deliverAsset",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "302": {
            "description": "Redirect to the signed asset URL"
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/alarm-category/views": {
      "get": {
        "tags": [
          "Layouts"
        ],
        "summary": "Resolved layout for Alarm category",
        "description": "Returns a render-ready responsive layout. Falls back to a layout derived from the schema when none is published.",
        "operationId": "layoutAlarmCategory",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "form",
                "detail",
                "table",
                "board",
                "custom"
              ],
              "default": "form"
            }
          },
          {
            "name": "view",
            "in": "query",
            "description": "Explicit view key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "evaluateConditions",
            "in": "query",
            "description": "Drop nodes whose visibility conditions fail.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Resolved layout",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/alarm-category": {
      "get": {
        "tags": [
          "Alarm categories"
        ],
        "summary": "List Alarm categories",
        "operationId": "listAlarmCategory",
        "parameters": [
          {
            "name": "page[size]",
            "in": "query",
            "description": "Entries per page (1-100).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            }
          },
          {
            "name": "page[number]",
            "in": "query",
            "description": "1-based page number (offset pagination).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page[after]",
            "in": "query",
            "description": "Cursor from meta.page.nextCursor (keyset pagination).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Comma-separated sort, prefix with - for descending. Sortable: code, name, description, severityFloor, color, seo, definitions",
            "schema": {
              "type": "string",
              "example": "-createdAt"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "Sparse fieldset: comma-separated field names to return.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "description": "Filter by locale code.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "publicationState",
            "in": "query",
            "description": "Which publication state to return.",
            "schema": {
              "type": "string",
              "enum": [
                "published",
                "draft",
                "any"
              ],
              "default": "any"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Full-text search across searchable fields.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter[code]",
            "in": "query",
            "description": "Filter on Code. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[code][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[name]",
            "in": "query",
            "description": "Filter on Name. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[name][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[description]",
            "in": "query",
            "description": "Filter on Description. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[description][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[severityFloor]",
            "in": "query",
            "description": "Filter on Severity floor. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[severityFloor][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[color]",
            "in": "query",
            "description": "Filter on Accent colour. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[color][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[seo]",
            "in": "query",
            "description": "Filter on SEO. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[seo][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[definitions]",
            "in": "query",
            "description": "Filter on Alarm definitions. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[definitions][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "A page of Alarm categories",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/AlarmCategory"
                      }
                    },
                    "meta": {
                      "type": "object",
                      "properties": {
                        "page": {
                          "$ref": "#/components/schemas/PageMeta"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Alarm categories"
        ],
        "summary": "Create a Alarm category",
        "operationId": "createAlarmCategory",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AlarmCategoryCreateInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AlarmCategory"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/alarm-category/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Alarm categories"
        ],
        "summary": "Get a Alarm category by id",
        "operationId": "getAlarmCategory",
        "parameters": [
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entry",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AlarmCategory"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Alarm categories"
        ],
        "summary": "Update a Alarm category",
        "operationId": "updateAlarmCategory",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "Expected revision for optimistic concurrency control.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AlarmCategoryUpdateInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AlarmCategory"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Alarm categories"
        ],
        "summary": "Delete a Alarm category",
        "operationId": "deleteAlarmCategory",
        "responses": {
          "204": {
            "description": "Deleted"
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/alarm-category/{id}/revisions": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Alarm categories"
        ],
        "summary": "List the revision history of a Alarm category",
        "operationId": "listAlarmCategoryRevisions",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Revisions, newest first. Each item carries a full JSONB snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/EntryRevision"
                      }
                    },
                    "total": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/alarm-category/{id}/revisions/{revisionId}/restore": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        },
        {
          "name": "revisionId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "post": {
        "tags": [
          "Alarm categories"
        ],
        "summary": "Roll a Alarm category back to an earlier revision",
        "description": "Writes the historical field values forward as a new revision. Lifecycle state (status, schedule) is preserved, so a rollback never republishes an entry.",
        "operationId": "restoreAlarmCategoryRevision",
        "responses": {
          "200": {
            "description": "The entry after rollback",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AlarmCategory"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/alarm-definition/views": {
      "get": {
        "tags": [
          "Layouts"
        ],
        "summary": "Resolved layout for Alarm definition",
        "description": "Returns a render-ready responsive layout. Falls back to a layout derived from the schema when none is published.",
        "operationId": "layoutAlarmDefinition",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "form",
                "detail",
                "table",
                "board",
                "custom"
              ],
              "default": "form"
            }
          },
          {
            "name": "view",
            "in": "query",
            "description": "Explicit view key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "evaluateConditions",
            "in": "query",
            "description": "Drop nodes whose visibility conditions fail.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Resolved layout",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/alarm-definition": {
      "get": {
        "tags": [
          "Alarm definitions"
        ],
        "summary": "List Alarm definitions",
        "operationId": "listAlarmDefinition",
        "parameters": [
          {
            "name": "page[size]",
            "in": "query",
            "description": "Entries per page (1-100).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            }
          },
          {
            "name": "page[number]",
            "in": "query",
            "description": "1-based page number (offset pagination).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page[after]",
            "in": "query",
            "description": "Cursor from meta.page.nextCursor (keyset pagination).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Comma-separated sort, prefix with - for descending. Sortable: code, title, summary, remediation, severity, priority, autoResolve, thresholdSeconds, runbookUrl, ownerEmail, payloadExample, category, markets",
            "schema": {
              "type": "string",
              "example": "-createdAt"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "Sparse fieldset: comma-separated field names to return.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "description": "Filter by locale code.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "publicationState",
            "in": "query",
            "description": "Which publication state to return.",
            "schema": {
              "type": "string",
              "enum": [
                "published",
                "draft",
                "any"
              ],
              "default": "any"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Full-text search across searchable fields.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter[code]",
            "in": "query",
            "description": "Filter on Alarm code. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[code][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[title]",
            "in": "query",
            "description": "Filter on Title. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[title][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[summary]",
            "in": "query",
            "description": "Filter on Summary. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[summary][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[remediation]",
            "in": "query",
            "description": "Filter on Remediation. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[remediation][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[severity]",
            "in": "query",
            "description": "Filter on Severity. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[severity][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[priority]",
            "in": "query",
            "description": "Filter on Priority. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[priority][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[autoResolve]",
            "in": "query",
            "description": "Filter on Auto resolve. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[autoResolve][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[thresholdSeconds]",
            "in": "query",
            "description": "Filter on Threshold (s). Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[thresholdSeconds][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[runbookUrl]",
            "in": "query",
            "description": "Filter on Runbook URL. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[runbookUrl][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[ownerEmail]",
            "in": "query",
            "description": "Filter on Owner e-mail. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[ownerEmail][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[payloadExample]",
            "in": "query",
            "description": "Filter on Payload example. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[payloadExample][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[category]",
            "in": "query",
            "description": "Filter on Category. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[category][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "A page of Alarm definitions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/AlarmDefinition"
                      }
                    },
                    "meta": {
                      "type": "object",
                      "properties": {
                        "page": {
                          "$ref": "#/components/schemas/PageMeta"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Alarm definitions"
        ],
        "summary": "Create a Alarm definition",
        "operationId": "createAlarmDefinition",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AlarmDefinitionCreateInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AlarmDefinition"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/alarm-definition/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Alarm definitions"
        ],
        "summary": "Get a Alarm definition by id",
        "operationId": "getAlarmDefinition",
        "parameters": [
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entry",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AlarmDefinition"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Alarm definitions"
        ],
        "summary": "Update a Alarm definition",
        "operationId": "updateAlarmDefinition",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "Expected revision for optimistic concurrency control.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AlarmDefinitionUpdateInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AlarmDefinition"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Alarm definitions"
        ],
        "summary": "Delete a Alarm definition",
        "operationId": "deleteAlarmDefinition",
        "responses": {
          "204": {
            "description": "Deleted"
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/alarm-definition/{id}/revisions": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Alarm definitions"
        ],
        "summary": "List the revision history of a Alarm definition",
        "operationId": "listAlarmDefinitionRevisions",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Revisions, newest first. Each item carries a full JSONB snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/EntryRevision"
                      }
                    },
                    "total": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/alarm-definition/{id}/revisions/{revisionId}/restore": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        },
        {
          "name": "revisionId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "post": {
        "tags": [
          "Alarm definitions"
        ],
        "summary": "Roll a Alarm definition back to an earlier revision",
        "description": "Writes the historical field values forward as a new revision. Lifecycle state (status, schedule) is preserved, so a rollback never republishes an entry.",
        "operationId": "restoreAlarmDefinitionRevision",
        "responses": {
          "200": {
            "description": "The entry after rollback",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AlarmDefinition"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/country/views": {
      "get": {
        "tags": [
          "Layouts"
        ],
        "summary": "Resolved layout for Country",
        "description": "Returns a render-ready responsive layout. Falls back to a layout derived from the schema when none is published.",
        "operationId": "layoutCountry",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "form",
                "detail",
                "table",
                "board",
                "custom"
              ],
              "default": "form"
            }
          },
          {
            "name": "view",
            "in": "query",
            "description": "Explicit view key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "evaluateConditions",
            "in": "query",
            "description": "Drop nodes whose visibility conditions fail.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Resolved layout",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/country": {
      "get": {
        "tags": [
          "Countries"
        ],
        "summary": "List Countries",
        "operationId": "listCountry",
        "parameters": [
          {
            "name": "page[size]",
            "in": "query",
            "description": "Entries per page (1-100).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            }
          },
          {
            "name": "page[number]",
            "in": "query",
            "description": "1-based page number (offset pagination).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page[after]",
            "in": "query",
            "description": "Cursor from meta.page.nextCursor (keyset pagination).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Comma-separated sort, prefix with - for descending. Sortable: iso2, name, currency",
            "schema": {
              "type": "string",
              "example": "-createdAt"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "Sparse fieldset: comma-separated field names to return.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "description": "Filter by locale code.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "publicationState",
            "in": "query",
            "description": "Which publication state to return.",
            "schema": {
              "type": "string",
              "enum": [
                "published",
                "draft",
                "any"
              ],
              "default": "any"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Full-text search across searchable fields.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter[iso2]",
            "in": "query",
            "description": "Filter on ISO 3166-1 alpha-2. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[iso2][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[name]",
            "in": "query",
            "description": "Filter on Name. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[name][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[currency]",
            "in": "query",
            "description": "Filter on Currency. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[currency][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "A page of Countries",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Country"
                      }
                    },
                    "meta": {
                      "type": "object",
                      "properties": {
                        "page": {
                          "$ref": "#/components/schemas/PageMeta"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Countries"
        ],
        "summary": "Create a Country",
        "operationId": "createCountry",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CountryCreateInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Country"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/country/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Countries"
        ],
        "summary": "Get a Country by id",
        "operationId": "getCountry",
        "parameters": [
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entry",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Country"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Countries"
        ],
        "summary": "Update a Country",
        "operationId": "updateCountry",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "Expected revision for optimistic concurrency control.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CountryUpdateInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Country"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Countries"
        ],
        "summary": "Delete a Country",
        "operationId": "deleteCountry",
        "responses": {
          "204": {
            "description": "Deleted"
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/country/{id}/revisions": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Countries"
        ],
        "summary": "List the revision history of a Country",
        "operationId": "listCountryRevisions",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Revisions, newest first. Each item carries a full JSONB snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/EntryRevision"
                      }
                    },
                    "total": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/country/{id}/revisions/{revisionId}/restore": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        },
        {
          "name": "revisionId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "post": {
        "tags": [
          "Countries"
        ],
        "summary": "Roll a Country back to an earlier revision",
        "description": "Writes the historical field values forward as a new revision. Lifecycle state (status, schedule) is preserved, so a rollback never republishes an entry.",
        "operationId": "restoreCountryRevision",
        "responses": {
          "200": {
            "description": "The entry after rollback",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Country"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/e2e-note-02573/views": {
      "get": {
        "tags": [
          "Layouts"
        ],
        "summary": "Resolved layout for E2E Note",
        "description": "Returns a render-ready responsive layout. Falls back to a layout derived from the schema when none is published.",
        "operationId": "layoutE2eNote02573",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "form",
                "detail",
                "table",
                "board",
                "custom"
              ],
              "default": "form"
            }
          },
          {
            "name": "view",
            "in": "query",
            "description": "Explicit view key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "evaluateConditions",
            "in": "query",
            "description": "Drop nodes whose visibility conditions fail.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Resolved layout",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/e2e-note-02573": {
      "get": {
        "tags": [
          "E2E Notes"
        ],
        "summary": "List E2E Notes",
        "operationId": "listE2eNote02573",
        "parameters": [
          {
            "name": "page[size]",
            "in": "query",
            "description": "Entries per page (1-100).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            }
          },
          {
            "name": "page[number]",
            "in": "query",
            "description": "1-based page number (offset pagination).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page[after]",
            "in": "query",
            "description": "Cursor from meta.page.nextCursor (keyset pagination).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Comma-separated sort, prefix with - for descending. Sortable: title",
            "schema": {
              "type": "string",
              "example": "-createdAt"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "Sparse fieldset: comma-separated field names to return.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "description": "Filter by locale code.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "publicationState",
            "in": "query",
            "description": "Which publication state to return.",
            "schema": {
              "type": "string",
              "enum": [
                "published",
                "draft",
                "any"
              ],
              "default": "any"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Full-text search across searchable fields.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter[title]",
            "in": "query",
            "description": "Filter on Title. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[title][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "A page of E2E Notes",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/E2eNote02573"
                      }
                    },
                    "meta": {
                      "type": "object",
                      "properties": {
                        "page": {
                          "$ref": "#/components/schemas/PageMeta"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "E2E Notes"
        ],
        "summary": "Create a E2E Note",
        "operationId": "createE2eNote02573",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/E2eNote02573CreateInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/E2eNote02573"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/e2e-note-02573/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "E2E Notes"
        ],
        "summary": "Get a E2E Note by id",
        "operationId": "getE2eNote02573",
        "parameters": [
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entry",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/E2eNote02573"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "E2E Notes"
        ],
        "summary": "Update a E2E Note",
        "operationId": "updateE2eNote02573",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "Expected revision for optimistic concurrency control.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/E2eNote02573UpdateInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/E2eNote02573"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "E2E Notes"
        ],
        "summary": "Delete a E2E Note",
        "operationId": "deleteE2eNote02573",
        "responses": {
          "204": {
            "description": "Deleted"
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/e2e-note-02573/{id}/revisions": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "E2E Notes"
        ],
        "summary": "List the revision history of a E2E Note",
        "operationId": "listE2eNote02573Revisions",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Revisions, newest first. Each item carries a full JSONB snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/EntryRevision"
                      }
                    },
                    "total": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/e2e-note-02573/{id}/revisions/{revisionId}/restore": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        },
        {
          "name": "revisionId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "post": {
        "tags": [
          "E2E Notes"
        ],
        "summary": "Roll a E2E Note back to an earlier revision",
        "description": "Writes the historical field values forward as a new revision. Lifecycle state (status, schedule) is preserved, so a rollback never republishes an entry.",
        "operationId": "restoreE2eNote02573Revision",
        "responses": {
          "200": {
            "description": "The entry after rollback",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/E2eNote02573"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/landing-page/views": {
      "get": {
        "tags": [
          "Layouts"
        ],
        "summary": "Resolved layout for Landing page",
        "description": "Returns a render-ready responsive layout. Falls back to a layout derived from the schema when none is published.",
        "operationId": "layoutLandingPage",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "form",
                "detail",
                "table",
                "board",
                "custom"
              ],
              "default": "form"
            }
          },
          {
            "name": "view",
            "in": "query",
            "description": "Explicit view key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "evaluateConditions",
            "in": "query",
            "description": "Drop nodes whose visibility conditions fail.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Resolved layout",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/landing-page": {
      "get": {
        "tags": [
          "Landing pages"
        ],
        "summary": "List Landing pages",
        "operationId": "listLandingPage",
        "parameters": [
          {
            "name": "page[size]",
            "in": "query",
            "description": "Entries per page (1-100).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            }
          },
          {
            "name": "page[number]",
            "in": "query",
            "description": "1-based page number (offset pagination).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page[after]",
            "in": "query",
            "description": "Cursor from meta.page.nextCursor (keyset pagination).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Comma-separated sort, prefix with - for descending. Sortable: title, slug, layoutStyle, heroVideoUrl, body, blocks, gallery, campaignRating, readTimeSeconds, contactPhone, allowlistIp, previewSecret, seo",
            "schema": {
              "type": "string",
              "example": "-createdAt"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "Sparse fieldset: comma-separated field names to return.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "description": "Filter by locale code.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "publicationState",
            "in": "query",
            "description": "Which publication state to return.",
            "schema": {
              "type": "string",
              "enum": [
                "published",
                "draft",
                "any"
              ],
              "default": "any"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Full-text search across searchable fields.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter[title]",
            "in": "query",
            "description": "Filter on Title. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[title][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[slug]",
            "in": "query",
            "description": "Filter on Slug. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[slug][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[layoutStyle]",
            "in": "query",
            "description": "Filter on Layout style. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[layoutStyle][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[heroVideoUrl]",
            "in": "query",
            "description": "Filter on Hero video URL. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[heroVideoUrl][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[body]",
            "in": "query",
            "description": "Filter on Intro (markdown). Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[body][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[blocks]",
            "in": "query",
            "description": "Filter on Page blocks. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[blocks][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[gallery]",
            "in": "query",
            "description": "Filter on Gallery. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[gallery][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[campaignRating]",
            "in": "query",
            "description": "Filter on Campaign rating. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[campaignRating][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[readTimeSeconds]",
            "in": "query",
            "description": "Filter on Estimated read time. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[readTimeSeconds][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[contactPhone]",
            "in": "query",
            "description": "Filter on Contact phone. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[contactPhone][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[allowlistIp]",
            "in": "query",
            "description": "Filter on Preview allowlist IP. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[allowlistIp][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[previewSecret]",
            "in": "query",
            "description": "Filter on Preview secret. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[previewSecret][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[seo]",
            "in": "query",
            "description": "Filter on SEO. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[seo][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "A page of Landing pages",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/LandingPage"
                      }
                    },
                    "meta": {
                      "type": "object",
                      "properties": {
                        "page": {
                          "$ref": "#/components/schemas/PageMeta"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Landing pages"
        ],
        "summary": "Create a Landing page",
        "operationId": "createLandingPage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LandingPageCreateInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LandingPage"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/landing-page/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Landing pages"
        ],
        "summary": "Get a Landing page by id",
        "operationId": "getLandingPage",
        "parameters": [
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entry",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LandingPage"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Landing pages"
        ],
        "summary": "Update a Landing page",
        "operationId": "updateLandingPage",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "Expected revision for optimistic concurrency control.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LandingPageUpdateInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LandingPage"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Landing pages"
        ],
        "summary": "Delete a Landing page",
        "operationId": "deleteLandingPage",
        "responses": {
          "204": {
            "description": "Deleted"
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/landing-page/{id}/revisions": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Landing pages"
        ],
        "summary": "List the revision history of a Landing page",
        "operationId": "listLandingPageRevisions",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Revisions, newest first. Each item carries a full JSONB snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/EntryRevision"
                      }
                    },
                    "total": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/landing-page/{id}/revisions/{revisionId}/restore": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        },
        {
          "name": "revisionId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "post": {
        "tags": [
          "Landing pages"
        ],
        "summary": "Roll a Landing page back to an earlier revision",
        "description": "Writes the historical field values forward as a new revision. Lifecycle state (status, schedule) is preserved, so a rollback never republishes an entry.",
        "operationId": "restoreLandingPageRevision",
        "responses": {
          "200": {
            "description": "The entry after rollback",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LandingPage"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/lifecycle-status/views": {
      "get": {
        "tags": [
          "Layouts"
        ],
        "summary": "Resolved layout for Lifecycle status",
        "description": "Returns a render-ready responsive layout. Falls back to a layout derived from the schema when none is published.",
        "operationId": "layoutLifecycleStatus",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "form",
                "detail",
                "table",
                "board",
                "custom"
              ],
              "default": "form"
            }
          },
          {
            "name": "view",
            "in": "query",
            "description": "Explicit view key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "evaluateConditions",
            "in": "query",
            "description": "Drop nodes whose visibility conditions fail.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Resolved layout",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/lifecycle-status": {
      "get": {
        "tags": [
          "Lifecycle statuses"
        ],
        "summary": "List Lifecycle statuses",
        "operationId": "listLifecycleStatus",
        "parameters": [
          {
            "name": "page[size]",
            "in": "query",
            "description": "Entries per page (1-100).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            }
          },
          {
            "name": "page[number]",
            "in": "query",
            "description": "1-based page number (offset pagination).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page[after]",
            "in": "query",
            "description": "Cursor from meta.page.nextCursor (keyset pagination).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Comma-separated sort, prefix with - for descending. Sortable: name, code, phase, is_sellable, color, sort_order, description",
            "schema": {
              "type": "string",
              "example": "-createdAt"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "Sparse fieldset: comma-separated field names to return.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "description": "Filter by locale code.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "publicationState",
            "in": "query",
            "description": "Which publication state to return.",
            "schema": {
              "type": "string",
              "enum": [
                "published",
                "draft",
                "any"
              ],
              "default": "any"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Full-text search across searchable fields.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter[name]",
            "in": "query",
            "description": "Filter on Name. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[name][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[code]",
            "in": "query",
            "description": "Filter on Code. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[code][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[phase]",
            "in": "query",
            "description": "Filter on Phase. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[phase][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[is_sellable]",
            "in": "query",
            "description": "Filter on Sellable. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[is_sellable][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[color]",
            "in": "query",
            "description": "Filter on Badge colour. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[color][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[sort_order]",
            "in": "query",
            "description": "Filter on Sort order. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[sort_order][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[description]",
            "in": "query",
            "description": "Filter on Description. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[description][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "A page of Lifecycle statuses",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/LifecycleStatus"
                      }
                    },
                    "meta": {
                      "type": "object",
                      "properties": {
                        "page": {
                          "$ref": "#/components/schemas/PageMeta"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Lifecycle statuses"
        ],
        "summary": "Create a Lifecycle status",
        "operationId": "createLifecycleStatus",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LifecycleStatusCreateInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LifecycleStatus"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/lifecycle-status/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Lifecycle statuses"
        ],
        "summary": "Get a Lifecycle status by id",
        "operationId": "getLifecycleStatus",
        "parameters": [
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entry",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LifecycleStatus"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Lifecycle statuses"
        ],
        "summary": "Update a Lifecycle status",
        "operationId": "updateLifecycleStatus",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "Expected revision for optimistic concurrency control.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LifecycleStatusUpdateInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LifecycleStatus"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Lifecycle statuses"
        ],
        "summary": "Delete a Lifecycle status",
        "operationId": "deleteLifecycleStatus",
        "responses": {
          "204": {
            "description": "Deleted"
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/lifecycle-status/{id}/revisions": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Lifecycle statuses"
        ],
        "summary": "List the revision history of a Lifecycle status",
        "operationId": "listLifecycleStatusRevisions",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Revisions, newest first. Each item carries a full JSONB snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/EntryRevision"
                      }
                    },
                    "total": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/lifecycle-status/{id}/revisions/{revisionId}/restore": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        },
        {
          "name": "revisionId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "post": {
        "tags": [
          "Lifecycle statuses"
        ],
        "summary": "Roll a Lifecycle status back to an earlier revision",
        "description": "Writes the historical field values forward as a new revision. Lifecycle state (status, schedule) is preserved, so a rollback never republishes an entry.",
        "operationId": "restoreLifecycleStatusRevision",
        "responses": {
          "200": {
            "description": "The entry after rollback",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LifecycleStatus"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-category/views": {
      "get": {
        "tags": [
          "Layouts"
        ],
        "summary": "Resolved layout for Product category",
        "description": "Returns a render-ready responsive layout. Falls back to a layout derived from the schema when none is published.",
        "operationId": "layoutProductCategory",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "form",
                "detail",
                "table",
                "board",
                "custom"
              ],
              "default": "form"
            }
          },
          {
            "name": "view",
            "in": "query",
            "description": "Explicit view key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "evaluateConditions",
            "in": "query",
            "description": "Drop nodes whose visibility conditions fail.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Resolved layout",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-category": {
      "get": {
        "tags": [
          "Product categories"
        ],
        "summary": "List Product categories",
        "operationId": "listProductCategory",
        "parameters": [
          {
            "name": "page[size]",
            "in": "query",
            "description": "Entries per page (1-100).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            }
          },
          {
            "name": "page[number]",
            "in": "query",
            "description": "1-based page number (offset pagination).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page[after]",
            "in": "query",
            "description": "Cursor from meta.page.nextCursor (keyset pagination).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Comma-separated sort, prefix with - for descending. Sortable: name, code, description, image, parent, is_root, sort_order, lifecycle_status, valid_for, tags",
            "schema": {
              "type": "string",
              "example": "-createdAt"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "Sparse fieldset: comma-separated field names to return.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "description": "Filter by locale code.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "publicationState",
            "in": "query",
            "description": "Which publication state to return.",
            "schema": {
              "type": "string",
              "enum": [
                "published",
                "draft",
                "any"
              ],
              "default": "any"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Full-text search across searchable fields.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter[name]",
            "in": "query",
            "description": "Filter on Name. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[name][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[code]",
            "in": "query",
            "description": "Filter on Code. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[code][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[description]",
            "in": "query",
            "description": "Filter on Description. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[description][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[image]",
            "in": "query",
            "description": "Filter on Category image. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[image][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[parent]",
            "in": "query",
            "description": "Filter on Parent category. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[parent][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[is_root]",
            "in": "query",
            "description": "Filter on Root category. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[is_root][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[sort_order]",
            "in": "query",
            "description": "Filter on Sort order. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[sort_order][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[lifecycle_status]",
            "in": "query",
            "description": "Filter on Lifecycle status. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[lifecycle_status][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[valid_for]",
            "in": "query",
            "description": "Filter on Valid for. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[valid_for][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "A page of Product categories",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ProductCategory"
                      }
                    },
                    "meta": {
                      "type": "object",
                      "properties": {
                        "page": {
                          "$ref": "#/components/schemas/PageMeta"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Product categories"
        ],
        "summary": "Create a Product category",
        "operationId": "createProductCategory",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductCategoryCreateInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductCategory"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-category/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Product categories"
        ],
        "summary": "Get a Product category by id",
        "operationId": "getProductCategory",
        "parameters": [
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entry",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductCategory"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Product categories"
        ],
        "summary": "Update a Product category",
        "operationId": "updateProductCategory",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "Expected revision for optimistic concurrency control.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductCategoryUpdateInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductCategory"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Product categories"
        ],
        "summary": "Delete a Product category",
        "operationId": "deleteProductCategory",
        "responses": {
          "204": {
            "description": "Deleted"
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-category/{id}/revisions": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Product categories"
        ],
        "summary": "List the revision history of a Product category",
        "operationId": "listProductCategoryRevisions",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Revisions, newest first. Each item carries a full JSONB snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/EntryRevision"
                      }
                    },
                    "total": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-category/{id}/revisions/{revisionId}/restore": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        },
        {
          "name": "revisionId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "post": {
        "tags": [
          "Product categories"
        ],
        "summary": "Roll a Product category back to an earlier revision",
        "description": "Writes the historical field values forward as a new revision. Lifecycle state (status, schedule) is preserved, so a rollback never republishes an entry.",
        "operationId": "restoreProductCategoryRevision",
        "responses": {
          "200": {
            "description": "The entry after rollback",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductCategory"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-characteristic/views": {
      "get": {
        "tags": [
          "Layouts"
        ],
        "summary": "Resolved layout for Product characteristic",
        "description": "Returns a render-ready responsive layout. Falls back to a layout derived from the schema when none is published.",
        "operationId": "layoutProductCharacteristic",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "form",
                "detail",
                "table",
                "board",
                "custom"
              ],
              "default": "form"
            }
          },
          {
            "name": "view",
            "in": "query",
            "description": "Explicit view key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "evaluateConditions",
            "in": "query",
            "description": "Drop nodes whose visibility conditions fail.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Resolved layout",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-characteristic": {
      "get": {
        "tags": [
          "Product characteristics"
        ],
        "summary": "List Product characteristics",
        "operationId": "listProductCharacteristic",
        "parameters": [
          {
            "name": "page[size]",
            "in": "query",
            "description": "Entries per page (1-100).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            }
          },
          {
            "name": "page[number]",
            "in": "query",
            "description": "1-based page number (offset pagination).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page[after]",
            "in": "query",
            "description": "Cursor from meta.page.nextCursor (keyset pagination).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Comma-separated sort, prefix with - for descending. Sortable: name, code, description, value_type, unit_of_measure, regex, min_cardinality, max_cardinality, allowed_values, configurable, variant_defining, extensible, category, tags",
            "schema": {
              "type": "string",
              "example": "-createdAt"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "Sparse fieldset: comma-separated field names to return.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "description": "Filter by locale code.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "publicationState",
            "in": "query",
            "description": "Which publication state to return.",
            "schema": {
              "type": "string",
              "enum": [
                "published",
                "draft",
                "any"
              ],
              "default": "any"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Full-text search across searchable fields.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter[name]",
            "in": "query",
            "description": "Filter on Name. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[name][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[code]",
            "in": "query",
            "description": "Filter on Code. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[code][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[description]",
            "in": "query",
            "description": "Filter on Description. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[description][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[value_type]",
            "in": "query",
            "description": "Filter on Value type. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[value_type][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[unit_of_measure]",
            "in": "query",
            "description": "Filter on Unit of measure. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[unit_of_measure][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[regex]",
            "in": "query",
            "description": "Filter on Value pattern (regex). Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[regex][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[min_cardinality]",
            "in": "query",
            "description": "Filter on Min cardinality. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[min_cardinality][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[max_cardinality]",
            "in": "query",
            "description": "Filter on Max cardinality. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[max_cardinality][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[allowed_values]",
            "in": "query",
            "description": "Filter on Allowed values. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[allowed_values][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[configurable]",
            "in": "query",
            "description": "Filter on Configurable by customer. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[configurable][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[variant_defining]",
            "in": "query",
            "description": "Filter on Variant defining. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[variant_defining][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[extensible]",
            "in": "query",
            "description": "Filter on Extensible. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[extensible][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[category]",
            "in": "query",
            "description": "Filter on Category. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[category][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "A page of Product characteristics",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ProductCharacteristic"
                      }
                    },
                    "meta": {
                      "type": "object",
                      "properties": {
                        "page": {
                          "$ref": "#/components/schemas/PageMeta"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Product characteristics"
        ],
        "summary": "Create a Product characteristic",
        "operationId": "createProductCharacteristic",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductCharacteristicCreateInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductCharacteristic"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-characteristic/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Product characteristics"
        ],
        "summary": "Get a Product characteristic by id",
        "operationId": "getProductCharacteristic",
        "parameters": [
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entry",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductCharacteristic"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Product characteristics"
        ],
        "summary": "Update a Product characteristic",
        "operationId": "updateProductCharacteristic",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "Expected revision for optimistic concurrency control.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductCharacteristicUpdateInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductCharacteristic"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Product characteristics"
        ],
        "summary": "Delete a Product characteristic",
        "operationId": "deleteProductCharacteristic",
        "responses": {
          "204": {
            "description": "Deleted"
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-characteristic/{id}/revisions": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Product characteristics"
        ],
        "summary": "List the revision history of a Product characteristic",
        "operationId": "listProductCharacteristicRevisions",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Revisions, newest first. Each item carries a full JSONB snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/EntryRevision"
                      }
                    },
                    "total": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-characteristic/{id}/revisions/{revisionId}/restore": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        },
        {
          "name": "revisionId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "post": {
        "tags": [
          "Product characteristics"
        ],
        "summary": "Roll a Product characteristic back to an earlier revision",
        "description": "Writes the historical field values forward as a new revision. Lifecycle state (status, schedule) is preserved, so a rollback never republishes an entry.",
        "operationId": "restoreProductCharacteristicRevision",
        "responses": {
          "200": {
            "description": "The entry after rollback",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductCharacteristic"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-offering/views": {
      "get": {
        "tags": [
          "Layouts"
        ],
        "summary": "Resolved layout for Product offering",
        "description": "Returns a render-ready responsive layout. Falls back to a layout derived from the schema when none is published.",
        "operationId": "layoutProductOffering",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "form",
                "detail",
                "table",
                "board",
                "custom"
              ],
              "default": "form"
            }
          },
          {
            "name": "view",
            "in": "query",
            "description": "Explicit view key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "evaluateConditions",
            "in": "query",
            "description": "Drop nodes whose visibility conditions fail.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Resolved layout",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-offering": {
      "get": {
        "tags": [
          "Product offerings"
        ],
        "summary": "List Product offerings",
        "operationId": "listProductOffering",
        "parameters": [
          {
            "name": "page[size]",
            "in": "query",
            "description": "Entries per page (1-100).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            }
          },
          {
            "name": "page[number]",
            "in": "query",
            "description": "1-based page number (offset pagination).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page[after]",
            "in": "query",
            "description": "Cursor from meta.page.nextCursor (keyset pagination).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Comma-separated sort, prefix with - for descending. Sortable: name, code, description, specification, variants, prices, is_sellable, channels, primary_market, lifecycle_status, valid_for, categories, tags",
            "schema": {
              "type": "string",
              "example": "-createdAt"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "Sparse fieldset: comma-separated field names to return.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "description": "Filter by locale code.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "publicationState",
            "in": "query",
            "description": "Which publication state to return.",
            "schema": {
              "type": "string",
              "enum": [
                "published",
                "draft",
                "any"
              ],
              "default": "any"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Full-text search across searchable fields.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter[name]",
            "in": "query",
            "description": "Filter on Name. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[name][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[code]",
            "in": "query",
            "description": "Filter on Code. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[code][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[description]",
            "in": "query",
            "description": "Filter on Description. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[description][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[specification]",
            "in": "query",
            "description": "Filter on Product specification. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[specification][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[prices]",
            "in": "query",
            "description": "Filter on Prices. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[prices][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[is_sellable]",
            "in": "query",
            "description": "Filter on Sellable. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[is_sellable][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[channels]",
            "in": "query",
            "description": "Filter on Sales channels. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[channels][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[primary_market]",
            "in": "query",
            "description": "Filter on Primary market. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[primary_market][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[lifecycle_status]",
            "in": "query",
            "description": "Filter on Lifecycle status. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[lifecycle_status][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[valid_for]",
            "in": "query",
            "description": "Filter on Valid for. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[valid_for][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "A page of Product offerings",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ProductOffering"
                      }
                    },
                    "meta": {
                      "type": "object",
                      "properties": {
                        "page": {
                          "$ref": "#/components/schemas/PageMeta"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Product offerings"
        ],
        "summary": "Create a Product offering",
        "operationId": "createProductOffering",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductOfferingCreateInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductOffering"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-offering/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Product offerings"
        ],
        "summary": "Get a Product offering by id",
        "operationId": "getProductOffering",
        "parameters": [
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entry",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductOffering"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Product offerings"
        ],
        "summary": "Update a Product offering",
        "operationId": "updateProductOffering",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "Expected revision for optimistic concurrency control.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductOfferingUpdateInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductOffering"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Product offerings"
        ],
        "summary": "Delete a Product offering",
        "operationId": "deleteProductOffering",
        "responses": {
          "204": {
            "description": "Deleted"
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-offering/{id}/revisions": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Product offerings"
        ],
        "summary": "List the revision history of a Product offering",
        "operationId": "listProductOfferingRevisions",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Revisions, newest first. Each item carries a full JSONB snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/EntryRevision"
                      }
                    },
                    "total": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-offering/{id}/revisions/{revisionId}/restore": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        },
        {
          "name": "revisionId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "post": {
        "tags": [
          "Product offerings"
        ],
        "summary": "Roll a Product offering back to an earlier revision",
        "description": "Writes the historical field values forward as a new revision. Lifecycle state (status, schedule) is preserved, so a rollback never republishes an entry.",
        "operationId": "restoreProductOfferingRevision",
        "responses": {
          "200": {
            "description": "The entry after rollback",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductOffering"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-specification/views": {
      "get": {
        "tags": [
          "Layouts"
        ],
        "summary": "Resolved layout for Product specification",
        "description": "Returns a render-ready responsive layout. Falls back to a layout derived from the schema when none is published.",
        "operationId": "layoutProductSpecification",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "form",
                "detail",
                "table",
                "board",
                "custom"
              ],
              "default": "form"
            }
          },
          {
            "name": "view",
            "in": "query",
            "description": "Explicit view key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "evaluateConditions",
            "in": "query",
            "description": "Drop nodes whose visibility conditions fail.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Resolved layout",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-specification": {
      "get": {
        "tags": [
          "Product specifications"
        ],
        "summary": "List Product specifications",
        "operationId": "listProductSpecification",
        "parameters": [
          {
            "name": "page[size]",
            "in": "query",
            "description": "Entries per page (1-100).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            }
          },
          {
            "name": "page[number]",
            "in": "query",
            "description": "1-based page number (offset pagination).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page[after]",
            "in": "query",
            "description": "Cursor from meta.page.nextCursor (keyset pagination).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Comma-separated sort, prefix with - for descending. Sortable: name, code, product_number, brand, description, attachments, characteristics, is_bundle, bundled_specifications, lifecycle_status, version, valid_for, categories, tags, external_id",
            "schema": {
              "type": "string",
              "example": "-createdAt"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "Sparse fieldset: comma-separated field names to return.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "description": "Filter by locale code.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "publicationState",
            "in": "query",
            "description": "Which publication state to return.",
            "schema": {
              "type": "string",
              "enum": [
                "published",
                "draft",
                "any"
              ],
              "default": "any"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Full-text search across searchable fields.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter[name]",
            "in": "query",
            "description": "Filter on Name. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[name][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[code]",
            "in": "query",
            "description": "Filter on Code. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[code][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[product_number]",
            "in": "query",
            "description": "Filter on Product number. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[product_number][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[brand]",
            "in": "query",
            "description": "Filter on Brand. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[brand][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[description]",
            "in": "query",
            "description": "Filter on Description. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[description][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[attachments]",
            "in": "query",
            "description": "Filter on Attachments. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[attachments][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[is_bundle]",
            "in": "query",
            "description": "Filter on Bundle. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[is_bundle][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[lifecycle_status]",
            "in": "query",
            "description": "Filter on Lifecycle status. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[lifecycle_status][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[version]",
            "in": "query",
            "description": "Filter on Specification version. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[version][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[valid_for]",
            "in": "query",
            "description": "Filter on Valid for. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[valid_for][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[external_id]",
            "in": "query",
            "description": "Filter on External ID. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[external_id][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "A page of Product specifications",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ProductSpecification"
                      }
                    },
                    "meta": {
                      "type": "object",
                      "properties": {
                        "page": {
                          "$ref": "#/components/schemas/PageMeta"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Product specifications"
        ],
        "summary": "Create a Product specification",
        "operationId": "createProductSpecification",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductSpecificationCreateInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductSpecification"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-specification/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Product specifications"
        ],
        "summary": "Get a Product specification by id",
        "operationId": "getProductSpecification",
        "parameters": [
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entry",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductSpecification"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Product specifications"
        ],
        "summary": "Update a Product specification",
        "operationId": "updateProductSpecification",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "Expected revision for optimistic concurrency control.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductSpecificationUpdateInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductSpecification"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Product specifications"
        ],
        "summary": "Delete a Product specification",
        "operationId": "deleteProductSpecification",
        "responses": {
          "204": {
            "description": "Deleted"
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-specification/{id}/revisions": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Product specifications"
        ],
        "summary": "List the revision history of a Product specification",
        "operationId": "listProductSpecificationRevisions",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Revisions, newest first. Each item carries a full JSONB snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/EntryRevision"
                      }
                    },
                    "total": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-specification/{id}/revisions/{revisionId}/restore": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        },
        {
          "name": "revisionId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "post": {
        "tags": [
          "Product specifications"
        ],
        "summary": "Roll a Product specification back to an earlier revision",
        "description": "Writes the historical field values forward as a new revision. Lifecycle state (status, schedule) is preserved, so a rollback never republishes an entry.",
        "operationId": "restoreProductSpecificationRevision",
        "responses": {
          "200": {
            "description": "The entry after rollback",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductSpecification"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-variant/views": {
      "get": {
        "tags": [
          "Layouts"
        ],
        "summary": "Resolved layout for Product variant",
        "description": "Returns a render-ready responsive layout. Falls back to a layout derived from the schema when none is published.",
        "operationId": "layoutProductVariant",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "form",
                "detail",
                "table",
                "board",
                "custom"
              ],
              "default": "form"
            }
          },
          {
            "name": "view",
            "in": "query",
            "description": "Explicit view key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "evaluateConditions",
            "in": "query",
            "description": "Drop nodes whose visibility conditions fail.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Resolved layout",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-variant": {
      "get": {
        "tags": [
          "Product variants"
        ],
        "summary": "List Product variants",
        "operationId": "listProductVariant",
        "parameters": [
          {
            "name": "page[size]",
            "in": "query",
            "description": "Entries per page (1-100).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            }
          },
          {
            "name": "page[number]",
            "in": "query",
            "description": "1-based page number (offset pagination).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page[after]",
            "in": "query",
            "description": "Cursor from meta.page.nextCursor (keyset pagination).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Comma-separated sort, prefix with - for descending. Sortable: name, sku, specification, gtin, image, characteristics, prices, stock_status, stock_quantity, is_default, dimensions, lifecycle_status, valid_for, tags",
            "schema": {
              "type": "string",
              "example": "-createdAt"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "Sparse fieldset: comma-separated field names to return.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "description": "Filter by locale code.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "publicationState",
            "in": "query",
            "description": "Which publication state to return.",
            "schema": {
              "type": "string",
              "enum": [
                "published",
                "draft",
                "any"
              ],
              "default": "any"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Full-text search across searchable fields.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter[name]",
            "in": "query",
            "description": "Filter on Name. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[name][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[sku]",
            "in": "query",
            "description": "Filter on SKU. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[sku][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[specification]",
            "in": "query",
            "description": "Filter on Product specification. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[specification][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[gtin]",
            "in": "query",
            "description": "Filter on GTIN / EAN. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[gtin][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[image]",
            "in": "query",
            "description": "Filter on Variant image. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[image][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[characteristics]",
            "in": "query",
            "description": "Filter on Characteristic values. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[characteristics][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[prices]",
            "in": "query",
            "description": "Filter on Prices. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[prices][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[stock_status]",
            "in": "query",
            "description": "Filter on Stock status. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[stock_status][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[stock_quantity]",
            "in": "query",
            "description": "Filter on Stock quantity. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[stock_quantity][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[is_default]",
            "in": "query",
            "description": "Filter on Default variant. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[is_default][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[dimensions]",
            "in": "query",
            "description": "Filter on Dimensions. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[dimensions][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[lifecycle_status]",
            "in": "query",
            "description": "Filter on Lifecycle status. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[lifecycle_status][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[valid_for]",
            "in": "query",
            "description": "Filter on Valid for. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[valid_for][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "A page of Product variants",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ProductVariant"
                      }
                    },
                    "meta": {
                      "type": "object",
                      "properties": {
                        "page": {
                          "$ref": "#/components/schemas/PageMeta"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Product variants"
        ],
        "summary": "Create a Product variant",
        "operationId": "createProductVariant",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductVariantCreateInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductVariant"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-variant/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Product variants"
        ],
        "summary": "Get a Product variant by id",
        "operationId": "getProductVariant",
        "parameters": [
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entry",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductVariant"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Product variants"
        ],
        "summary": "Update a Product variant",
        "operationId": "updateProductVariant",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "Expected revision for optimistic concurrency control.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductVariantUpdateInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductVariant"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Product variants"
        ],
        "summary": "Delete a Product variant",
        "operationId": "deleteProductVariant",
        "responses": {
          "204": {
            "description": "Deleted"
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-variant/{id}/revisions": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Product variants"
        ],
        "summary": "List the revision history of a Product variant",
        "operationId": "listProductVariantRevisions",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Revisions, newest first. Each item carries a full JSONB snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/EntryRevision"
                      }
                    },
                    "total": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/product-variant/{id}/revisions/{revisionId}/restore": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        },
        {
          "name": "revisionId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "post": {
        "tags": [
          "Product variants"
        ],
        "summary": "Roll a Product variant back to an earlier revision",
        "description": "Writes the historical field values forward as a new revision. Lifecycle state (status, schedule) is preserved, so a rollback never republishes an entry.",
        "operationId": "restoreProductVariantRevision",
        "responses": {
          "200": {
            "description": "The entry after rollback",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductVariant"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/content-tag/views": {
      "get": {
        "tags": [
          "Layouts"
        ],
        "summary": "Resolved layout for Tag",
        "description": "Returns a render-ready responsive layout. Falls back to a layout derived from the schema when none is published.",
        "operationId": "layoutContentTag",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "form",
                "detail",
                "table",
                "board",
                "custom"
              ],
              "default": "form"
            }
          },
          {
            "name": "view",
            "in": "query",
            "description": "Explicit view key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "evaluateConditions",
            "in": "query",
            "description": "Drop nodes whose visibility conditions fail.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Resolved layout",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/content-tag": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "List Tags",
        "operationId": "listContentTag",
        "parameters": [
          {
            "name": "page[size]",
            "in": "query",
            "description": "Entries per page (1-100).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            }
          },
          {
            "name": "page[number]",
            "in": "query",
            "description": "1-based page number (offset pagination).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page[after]",
            "in": "query",
            "description": "Cursor from meta.page.nextCursor (keyset pagination).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Comma-separated sort, prefix with - for descending. Sortable: name, slug, color, scope, description",
            "schema": {
              "type": "string",
              "example": "-createdAt"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "Sparse fieldset: comma-separated field names to return.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "description": "Filter by locale code.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "publicationState",
            "in": "query",
            "description": "Which publication state to return.",
            "schema": {
              "type": "string",
              "enum": [
                "published",
                "draft",
                "any"
              ],
              "default": "any"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Full-text search across searchable fields.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter[name]",
            "in": "query",
            "description": "Filter on Name. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[name][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[slug]",
            "in": "query",
            "description": "Filter on Slug. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[slug][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[color]",
            "in": "query",
            "description": "Filter on Colour. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[color][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[scope]",
            "in": "query",
            "description": "Filter on Applies to. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[scope][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "filter[description]",
            "in": "query",
            "description": "Filter on Description. Supported operators: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, null — e.g. filter[description][gte]=value.",
            "schema": {
              "type": "string"
            },
            "style": "deepObject",
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "A page of Tags",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ContentTag"
                      }
                    },
                    "meta": {
                      "type": "object",
                      "properties": {
                        "page": {
                          "$ref": "#/components/schemas/PageMeta"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Tags"
        ],
        "summary": "Create a Tag",
        "operationId": "createContentTag",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContentTagCreateInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ContentTag"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/content-tag/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "Get a Tag by id",
        "operationId": "getContentTag",
        "parameters": [
          {
            "name": "include",
            "in": "query",
            "description": "Comma-separated relation names to expand.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entry",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ContentTag"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Tags"
        ],
        "summary": "Update a Tag",
        "operationId": "updateContentTag",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "Expected revision for optimistic concurrency control.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContentTagUpdateInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ContentTag"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Tags"
        ],
        "summary": "Delete a Tag",
        "operationId": "deleteContentTag",
        "responses": {
          "204": {
            "description": "Deleted"
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/content-tag/{id}/revisions": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "List the revision history of a Tag",
        "operationId": "listContentTagRevisions",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Revisions, newest first. Each item carries a full JSONB snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/EntryRevision"
                      }
                    },
                    "total": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/content-tag/{id}/revisions/{revisionId}/restore": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        },
        {
          "name": "revisionId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "post": {
        "tags": [
          "Tags"
        ],
        "summary": "Roll a Tag back to an earlier revision",
        "description": "Writes the historical field values forward as a new revision. Lifecycle state (status, schedule) is preserved, so a rollback never republishes an entry.",
        "operationId": "restoreContentTagRevision",
        "responses": {
          "200": {
            "description": "The entry after rollback",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ContentTag"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "412": {
            "description": "Precondition failed (revision mismatch)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "description": "Access token of a platform user. Roles determine permitted operations."
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "description": "Canonical error envelope used by every endpoint.",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "VALIDATION_ERROR",
                  "NOT_FOUND",
                  "UNAUTHENTICATED",
                  "FORBIDDEN",
                  "CONFLICT",
                  "PRECONDITION_FAILED",
                  "BAD_REQUEST",
                  "RATE_LIMITED",
                  "SCHEMA_ERROR",
                  "INTERNAL_ERROR"
                ]
              },
              "message": {
                "type": "string"
              },
              "requestId": {
                "type": "string"
              },
              "details": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "field": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            },
            "required": [
              "code",
              "message",
              "requestId"
            ]
          }
        },
        "required": [
          "error"
        ]
      },
      "PageMeta": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "nextCursor": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "total",
          "limit",
          "offset",
          "hasMore"
        ]
      },
      "Asset": {
        "type": "object",
        "description": "Stored asset reference resolved through the media provider.",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Public or signed URL."
          },
          "fileName": {
            "type": "string",
            "description": "Original file name."
          },
          "mimeType": {
            "type": "string",
            "description": "IANA media type."
          },
          "size": {
            "type": "integer",
            "format": "int64",
            "description": "Size in bytes."
          },
          "alt": {
            "type": "string",
            "description": "Alternative text."
          }
        },
        "required": [
          "url"
        ],
        "additionalProperties": false,
        "example": {
          "url": "https://cdn.example.com/x100.png",
          "mimeType": "image/png"
        }
      },
      "Money": {
        "type": "object",
        "description": "Monetary amount with ISO-4217 currency.",
        "properties": {
          "amount": {
            "type": "number",
            "format": "double",
            "description": "Decimal amount."
          },
          "currency": {
            "type": "string",
            "description": "ISO-4217 currency code.",
            "pattern": "^[A-Z]{3}$",
            "example": "EUR"
          }
        },
        "required": [
          "amount",
          "currency"
        ],
        "additionalProperties": false,
        "example": {
          "amount": 199.5,
          "currency": "EUR"
        }
      },
      "Measurement": {
        "type": "object",
        "description": "Numeric quantity with a unit of measure.",
        "properties": {
          "value": {
            "type": "number",
            "format": "double",
            "description": "Numeric value."
          },
          "unit": {
            "type": "string",
            "description": "Unit symbol.",
            "example": "mm"
          }
        },
        "required": [
          "value",
          "unit"
        ],
        "additionalProperties": false,
        "example": {
          "value": 105,
          "unit": "mm"
        }
      },
      "GeoPoint": {
        "type": "object",
        "description": "WGS-84 geographic point.",
        "properties": {
          "lat": {
            "type": "number",
            "format": "double",
            "minimum": -90,
            "maximum": 90
          },
          "lng": {
            "type": "number",
            "format": "double",
            "minimum": -180,
            "maximum": 180
          }
        },
        "required": [
          "lat",
          "lng"
        ],
        "additionalProperties": false,
        "example": {
          "lat": 59.3293,
          "lng": 18.0686
        }
      },
      "CtaBlock": {
        "type": "object",
        "description": "Conversion block with a conditional button style.",
        "properties": {
          "label": {
            "type": "string",
            "title": "Button label"
          },
          "href": {
            "type": "string",
            "format": "uri",
            "example": "https://example.com",
            "title": "Target URL"
          },
          "variant": {
            "type": "string",
            "enum": [
              "primary",
              "ghost",
              "custom"
            ],
            "title": "Variant",
            "nullable": true
          },
          "customColor": {
            "type": "string",
            "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
            "example": "#C2792B",
            "title": "Custom colour",
            "description": "Only applies when variant is custom. Required when variant is custom.",
            "nullable": true
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "TmfCharValue": {
        "type": "object",
        "description": "TMF CharacteristicValueSpecification: one allowed value or range.",
        "properties": {
          "value_type": {
            "type": "string",
            "enum": [
              "string",
              "number",
              "boolean",
              "date",
              "range"
            ],
            "title": "Value type",
            "default": "string"
          },
          "value": {
            "type": "string",
            "title": "Value",
            "description": "Only applies when value_type is not range. Required when value_type is not range.",
            "nullable": true
          },
          "value_from": {
            "type": "number",
            "format": "double",
            "title": "Range from",
            "description": "Only applies when value_type is range.",
            "nullable": true
          },
          "value_to": {
            "type": "number",
            "format": "double",
            "title": "Range to",
            "description": "Only applies when value_type is range.",
            "nullable": true
          },
          "unit_of_measure": {
            "type": "string",
            "title": "Unit of measure",
            "nullable": true
          },
          "is_default": {
            "type": "boolean",
            "title": "Default value",
            "nullable": true
          },
          "sort_order": {
            "type": "integer",
            "format": "int32",
            "minimum": -2147483648,
            "maximum": 2147483647,
            "title": "Sort order",
            "nullable": true
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "HeroBlock": {
        "type": "object",
        "description": "Headline block with an optional media background.",
        "properties": {
          "headline": {
            "type": "string",
            "title": "Headline"
          },
          "subheadline": {
            "type": "string",
            "title": "Subheadline",
            "nullable": true
          },
          "media": {
            "type": "string",
            "enum": [
              "none",
              "image",
              "video"
            ],
            "title": "Background media",
            "nullable": true
          },
          "image": {
            "type": "object",
            "description": "Only applies when media is image.",
            "properties": {
              "url": {
                "type": "string",
                "format": "uri",
                "description": "Public or signed URL."
              },
              "fileName": {
                "type": "string",
                "description": "Original file name."
              },
              "mimeType": {
                "type": "string",
                "description": "IANA media type."
              },
              "size": {
                "type": "integer",
                "format": "int64",
                "description": "Size in bytes."
              },
              "alt": {
                "type": "string",
                "description": "Alternative text."
              }
            },
            "required": [
              "url"
            ],
            "additionalProperties": false,
            "example": {
              "url": "https://cdn.example.com/x100.png",
              "mimeType": "image/png"
            },
            "title": "Background image",
            "nullable": true
          },
          "videoUrl": {
            "type": "string",
            "format": "uri",
            "example": "https://example.com",
            "title": "Video URL",
            "description": "Only applies when media is video. Required when media is video.",
            "nullable": true
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "TmfDimensions": {
        "type": "object",
        "description": "Shipping-relevant measurements of a physical variant.",
        "properties": {
          "length": {
            "type": "object",
            "description": "Numeric quantity with a unit of measure.",
            "properties": {
              "value": {
                "type": "number",
                "format": "double",
                "description": "Numeric value."
              },
              "unit": {
                "type": "string",
                "description": "Unit symbol.",
                "example": "mm"
              }
            },
            "required": [
              "value",
              "unit"
            ],
            "additionalProperties": false,
            "example": {
              "value": 105,
              "unit": "mm"
            },
            "title": "Length",
            "nullable": true
          },
          "width": {
            "type": "object",
            "description": "Numeric quantity with a unit of measure.",
            "properties": {
              "value": {
                "type": "number",
                "format": "double",
                "description": "Numeric value."
              },
              "unit": {
                "type": "string",
                "description": "Unit symbol.",
                "example": "mm"
              }
            },
            "required": [
              "value",
              "unit"
            ],
            "additionalProperties": false,
            "example": {
              "value": 105,
              "unit": "mm"
            },
            "title": "Width",
            "nullable": true
          },
          "height": {
            "type": "object",
            "description": "Numeric quantity with a unit of measure.",
            "properties": {
              "value": {
                "type": "number",
                "format": "double",
                "description": "Numeric value."
              },
              "unit": {
                "type": "string",
                "description": "Unit symbol.",
                "example": "mm"
              }
            },
            "required": [
              "value",
              "unit"
            ],
            "additionalProperties": false,
            "example": {
              "value": 105,
              "unit": "mm"
            },
            "title": "Height",
            "nullable": true
          },
          "weight": {
            "type": "object",
            "description": "Numeric quantity with a unit of measure.",
            "properties": {
              "value": {
                "type": "number",
                "format": "double",
                "description": "Numeric value."
              },
              "unit": {
                "type": "string",
                "description": "Unit symbol.",
                "example": "mm"
              }
            },
            "required": [
              "value",
              "unit"
            ],
            "additionalProperties": false,
            "example": {
              "value": 105,
              "unit": "mm"
            },
            "title": "Weight",
            "nullable": true
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "TmfPrice": {
        "type": "object",
        "description": "TMF ProductOfferingPrice: one charge with its period and tax handling.",
        "properties": {
          "name": {
            "type": "string",
            "title": "Price name",
            "nullable": true
          },
          "price_type": {
            "type": "string",
            "enum": [
              "oneTime",
              "recurring",
              "usage"
            ],
            "title": "Price type",
            "default": "recurring"
          },
          "recurring_charge_period": {
            "type": "string",
            "enum": [
              "day",
              "week",
              "month",
              "quarter",
              "year"
            ],
            "title": "Recurring period",
            "description": "Only applies when price_type is recurring. Required when price_type is recurring.",
            "nullable": true
          },
          "unit_of_measure": {
            "type": "string",
            "title": "Usage unit",
            "description": "Only applies when price_type is usage.",
            "nullable": true
          },
          "amount": {
            "type": "object",
            "description": "Monetary amount with ISO-4217 currency.",
            "properties": {
              "amount": {
                "type": "number",
                "format": "double",
                "description": "Decimal amount."
              },
              "currency": {
                "type": "string",
                "description": "ISO-4217 currency code.",
                "pattern": "^[A-Z]{3}$",
                "example": "EUR"
              }
            },
            "required": [
              "amount",
              "currency"
            ],
            "additionalProperties": false,
            "example": {
              "amount": 199.5,
              "currency": "EUR"
            },
            "title": "Amount"
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "example": "EUR",
            "title": "Currency",
            "default": "EUR"
          },
          "tax_included": {
            "type": "boolean",
            "title": "Tax included",
            "nullable": true
          },
          "tax_rate": {
            "type": "number",
            "format": "double",
            "minimum": 0,
            "maximum": 100,
            "example": 42.5,
            "title": "Tax rate",
            "nullable": true
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "RichTextBlock": {
        "type": "object",
        "description": "Long-form editorial content.",
        "properties": {
          "heading": {
            "type": "string",
            "title": "Heading",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "Markdown source.",
            "title": "Content"
          },
          "align": {
            "type": "string",
            "enum": [
              "left",
              "center"
            ],
            "title": "Alignment",
            "nullable": true
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "SeoMeta": {
        "type": "object",
        "description": "Reusable search metadata block.",
        "properties": {
          "title": {
            "type": "string",
            "title": "Meta title",
            "maxLength": 60,
            "nullable": true
          },
          "description": {
            "type": "string",
            "title": "Meta description",
            "maxLength": 160,
            "nullable": true
          },
          "keywords": {
            "type": "string",
            "title": "Keywords",
            "nullable": true
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "TmfValidityPeriod": {
        "type": "object",
        "description": "TMF TimePeriod: the window during which an entity is valid.",
        "properties": {
          "valid_from": {
            "type": "string",
            "format": "date-time",
            "example": "2026-04-01T09:30:00Z",
            "title": "Valid from",
            "nullable": true
          },
          "valid_to": {
            "type": "string",
            "format": "date-time",
            "example": "2026-04-01T09:30:00Z",
            "title": "Valid to",
            "nullable": true
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "TmfVariantCharacteristic": {
        "type": "object",
        "description": "Concrete value a variant assigns to a specification characteristic.",
        "properties": {
          "characteristic_code": {
            "type": "string",
            "title": "Characteristic code"
          },
          "value": {
            "type": "string",
            "title": "Value"
          },
          "unit_of_measure": {
            "type": "string",
            "title": "Unit of measure",
            "nullable": true
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "AlarmCategory": {
        "type": "object",
        "description": "Grouping of alarm definitions by functional area.",
        "properties": {
          "code": {
            "type": "string",
            "pattern": "^[a-z0-9-]+$",
            "example": "smoke-detector-x100",
            "title": "Code",
            "x-unique": true
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "description": {
            "type": "string",
            "title": "Description",
            "nullable": true
          },
          "severityFloor": {
            "type": "string",
            "enum": [
              "info",
              "warning",
              "critical"
            ],
            "title": "Severity floor",
            "default": "info"
          },
          "color": {
            "type": "string",
            "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
            "example": "#C2792B",
            "title": "Accent colour",
            "nullable": true
          },
          "seo": {
            "$ref": "#/components/schemas/SeoMeta"
          },
          "definitions": {
            "type": "array",
            "description": "Related alarm_definition entries (ids unless expanded with include).",
            "items": {
              "$ref": "#/components/schemas/AlarmDefinition"
            },
            "title": "Alarm definitions",
            "nullable": true
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "locale": {
            "type": "string",
            "nullable": true
          },
          "revision": {
            "type": "integer",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "archivedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "createdBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          },
          "updatedBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "AlarmCategoryCreateInput": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "pattern": "^[a-z0-9-]+$",
            "example": "smoke-detector-x100",
            "title": "Code",
            "x-unique": true
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "description": {
            "type": "string",
            "title": "Description",
            "nullable": true
          },
          "severityFloor": {
            "type": "string",
            "enum": [
              "info",
              "warning",
              "critical"
            ],
            "title": "Severity floor",
            "default": "info"
          },
          "color": {
            "type": "string",
            "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
            "example": "#C2792B",
            "title": "Accent colour",
            "nullable": true
          },
          "seo": {
            "$ref": "#/components/schemas/SeoMeta"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          }
        },
        "required": [
          "code",
          "name",
          "severityFloor"
        ],
        "additionalProperties": false
      },
      "AlarmCategoryUpdateInput": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "pattern": "^[a-z0-9-]+$",
            "example": "smoke-detector-x100",
            "title": "Code",
            "x-unique": true
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "description": {
            "type": "string",
            "title": "Description",
            "nullable": true
          },
          "severityFloor": {
            "type": "string",
            "enum": [
              "info",
              "warning",
              "critical"
            ],
            "title": "Severity floor",
            "default": "info"
          },
          "color": {
            "type": "string",
            "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
            "example": "#C2792B",
            "title": "Accent colour",
            "nullable": true
          },
          "seo": {
            "$ref": "#/components/schemas/SeoMeta"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          }
        },
        "additionalProperties": false
      },
      "AlarmDefinition": {
        "type": "object",
        "description": "A single machine-readable alarm contract.",
        "properties": {
          "code": {
            "type": "string",
            "title": "Alarm code",
            "x-unique": true
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "summary": {
            "type": "string",
            "title": "Summary",
            "nullable": true
          },
          "remediation": {
            "type": "string",
            "description": "Markdown-formatted rich text.",
            "title": "Remediation",
            "nullable": true
          },
          "severity": {
            "type": "string",
            "enum": [
              "info",
              "warning",
              "critical"
            ],
            "title": "Severity",
            "default": "warning"
          },
          "priority": {
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "maximum": 5,
            "title": "Priority",
            "default": 3
          },
          "autoResolve": {
            "type": "boolean",
            "title": "Auto resolve",
            "default": false,
            "nullable": true
          },
          "thresholdSeconds": {
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "maximum": 2147483647,
            "title": "Threshold (s)",
            "nullable": true
          },
          "runbookUrl": {
            "type": "string",
            "format": "uri",
            "example": "https://example.com",
            "title": "Runbook URL",
            "nullable": true
          },
          "ownerEmail": {
            "type": "string",
            "format": "email",
            "example": "ops@example.com",
            "title": "Owner e-mail",
            "nullable": true
          },
          "payloadExample": {
            "type": "object",
            "description": "Intentionally schemaless JSON document.",
            "additionalProperties": true,
            "title": "Payload example",
            "nullable": true
          },
          "category": {
            "description": "Related alarm_category entry (id unless expanded with include).",
            "$ref": "#/components/schemas/AlarmCategory"
          },
          "markets": {
            "type": "array",
            "description": "Related country entries (ids unless expanded with include).",
            "items": {
              "$ref": "#/components/schemas/Country"
            },
            "title": "Markets",
            "nullable": true
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "locale": {
            "type": "string",
            "nullable": true
          },
          "revision": {
            "type": "integer",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "archivedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "createdBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          },
          "updatedBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "AlarmDefinitionCreateInput": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "title": "Alarm code",
            "x-unique": true
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "summary": {
            "type": "string",
            "title": "Summary",
            "nullable": true
          },
          "remediation": {
            "type": "string",
            "description": "Markdown-formatted rich text.",
            "title": "Remediation",
            "nullable": true
          },
          "severity": {
            "type": "string",
            "enum": [
              "info",
              "warning",
              "critical"
            ],
            "title": "Severity",
            "default": "warning"
          },
          "priority": {
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "maximum": 5,
            "title": "Priority",
            "default": 3
          },
          "autoResolve": {
            "type": "boolean",
            "title": "Auto resolve",
            "default": false,
            "nullable": true
          },
          "thresholdSeconds": {
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "maximum": 2147483647,
            "title": "Threshold (s)",
            "nullable": true
          },
          "runbookUrl": {
            "type": "string",
            "format": "uri",
            "example": "https://example.com",
            "title": "Runbook URL",
            "nullable": true
          },
          "ownerEmail": {
            "type": "string",
            "format": "email",
            "example": "ops@example.com",
            "title": "Owner e-mail",
            "nullable": true
          },
          "payloadExample": {
            "type": "object",
            "description": "Intentionally schemaless JSON document.",
            "additionalProperties": true,
            "title": "Payload example",
            "nullable": true
          },
          "category": {
            "type": "string",
            "format": "uuid",
            "nullable": false,
            "title": "Category"
          },
          "markets": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Markets",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "locale": {
            "type": "string"
          }
        },
        "required": [
          "code",
          "title",
          "severity",
          "priority",
          "category"
        ],
        "additionalProperties": false
      },
      "AlarmDefinitionUpdateInput": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "title": "Alarm code",
            "x-unique": true
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "summary": {
            "type": "string",
            "title": "Summary",
            "nullable": true
          },
          "remediation": {
            "type": "string",
            "description": "Markdown-formatted rich text.",
            "title": "Remediation",
            "nullable": true
          },
          "severity": {
            "type": "string",
            "enum": [
              "info",
              "warning",
              "critical"
            ],
            "title": "Severity",
            "default": "warning"
          },
          "priority": {
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "maximum": 5,
            "title": "Priority",
            "default": 3
          },
          "autoResolve": {
            "type": "boolean",
            "title": "Auto resolve",
            "default": false,
            "nullable": true
          },
          "thresholdSeconds": {
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "maximum": 2147483647,
            "title": "Threshold (s)",
            "nullable": true
          },
          "runbookUrl": {
            "type": "string",
            "format": "uri",
            "example": "https://example.com",
            "title": "Runbook URL",
            "nullable": true
          },
          "ownerEmail": {
            "type": "string",
            "format": "email",
            "example": "ops@example.com",
            "title": "Owner e-mail",
            "nullable": true
          },
          "payloadExample": {
            "type": "object",
            "description": "Intentionally schemaless JSON document.",
            "additionalProperties": true,
            "title": "Payload example",
            "nullable": true
          },
          "category": {
            "type": "string",
            "format": "uuid",
            "nullable": false,
            "title": "Category"
          },
          "markets": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Markets",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "locale": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Country": {
        "type": "object",
        "description": "Market reference data.",
        "properties": {
          "iso2": {
            "type": "string",
            "title": "ISO 3166-1 alpha-2",
            "pattern": "^[A-Z]{2}$",
            "x-unique": true
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "currency": {
            "type": "string",
            "title": "Currency",
            "pattern": "^[A-Z]{3}$",
            "nullable": true
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "locale": {
            "type": "string",
            "nullable": true
          },
          "revision": {
            "type": "integer",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "archivedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "createdBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          },
          "updatedBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "CountryCreateInput": {
        "type": "object",
        "properties": {
          "iso2": {
            "type": "string",
            "title": "ISO 3166-1 alpha-2",
            "pattern": "^[A-Z]{2}$",
            "x-unique": true
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "currency": {
            "type": "string",
            "title": "Currency",
            "pattern": "^[A-Z]{3}$",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          }
        },
        "required": [
          "iso2",
          "name"
        ],
        "additionalProperties": false
      },
      "CountryUpdateInput": {
        "type": "object",
        "properties": {
          "iso2": {
            "type": "string",
            "title": "ISO 3166-1 alpha-2",
            "pattern": "^[A-Z]{2}$",
            "x-unique": true
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "currency": {
            "type": "string",
            "title": "Currency",
            "pattern": "^[A-Z]{3}$",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          }
        },
        "additionalProperties": false
      },
      "E2eNote02573": {
        "type": "object",
        "description": "E2E Note entry.",
        "properties": {
          "title": {
            "type": "string",
            "title": "Title"
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "locale": {
            "type": "string",
            "nullable": true
          },
          "revision": {
            "type": "integer",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "archivedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "createdBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          },
          "updatedBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "E2eNote02573CreateInput": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "title": "Title"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          }
        },
        "required": [
          "title"
        ],
        "additionalProperties": false
      },
      "E2eNote02573UpdateInput": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "title": "Title"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          }
        },
        "additionalProperties": false
      },
      "LandingPage": {
        "type": "object",
        "description": "Composable marketing page assembled from blocks.",
        "properties": {
          "title": {
            "type": "string",
            "title": "Title",
            "maxLength": 120
          },
          "slug": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "example": "smoke-detector-x100",
            "title": "Slug",
            "x-unique": true
          },
          "layoutStyle": {
            "type": "string",
            "enum": [
              "standard",
              "video",
              "minimal"
            ],
            "title": "Layout style"
          },
          "heroVideoUrl": {
            "type": "string",
            "format": "uri",
            "example": "https://example.com",
            "title": "Hero video URL",
            "description": "Only applies when layoutStyle is video. Required when layoutStyle is video.",
            "nullable": true
          },
          "body": {
            "type": "string",
            "description": "Markdown source.",
            "title": "Intro (markdown)",
            "nullable": true
          },
          "blocks": {
            "type": "array",
            "description": "Ordered blocks. Each item is one of: HeroBlock, RichTextBlock, CtaBlock, discriminated by \"__component\".",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/HeroBlock"
                },
                {
                  "$ref": "#/components/schemas/RichTextBlock"
                },
                {
                  "$ref": "#/components/schemas/CtaBlock"
                }
              ],
              "discriminator": {
                "propertyName": "__component",
                "mapping": {
                  "hero_block": "#/components/schemas/HeroBlock",
                  "rich_text_block": "#/components/schemas/RichTextBlock",
                  "cta_block": "#/components/schemas/CtaBlock"
                }
              }
            },
            "minItems": 1,
            "maxItems": 12,
            "title": "Page blocks",
            "nullable": true
          },
          "gallery": {
            "type": "array",
            "items": {
              "type": "object",
              "description": "Stored asset reference resolved through the media provider.",
              "properties": {
                "url": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public or signed URL."
                },
                "fileName": {
                  "type": "string",
                  "description": "Original file name."
                },
                "mimeType": {
                  "type": "string",
                  "description": "IANA media type."
                },
                "size": {
                  "type": "integer",
                  "format": "int64",
                  "description": "Size in bytes."
                },
                "alt": {
                  "type": "string",
                  "description": "Alternative text."
                }
              },
              "required": [
                "url"
              ],
              "additionalProperties": false,
              "example": {
                "url": "https://cdn.example.com/x100.png",
                "mimeType": "image/png"
              }
            },
            "description": "Ordered asset list.",
            "title": "Gallery",
            "nullable": true
          },
          "campaignRating": {
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "maximum": 5,
            "title": "Campaign rating",
            "nullable": true
          },
          "readTimeSeconds": {
            "type": "integer",
            "format": "int64",
            "description": "Duration in seconds.",
            "title": "Estimated read time",
            "nullable": true
          },
          "contactPhone": {
            "type": "string",
            "example": "+46701234567",
            "title": "Contact phone",
            "nullable": true
          },
          "allowlistIp": {
            "type": "string",
            "example": "192.168.1.10",
            "title": "Preview allowlist IP",
            "nullable": true
          },
          "seo": {
            "$ref": "#/components/schemas/SeoMeta"
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "locale": {
            "type": "string",
            "nullable": true
          },
          "revision": {
            "type": "integer",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "archivedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "createdBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          },
          "updatedBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "LandingPageCreateInput": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "title": "Title",
            "maxLength": 120
          },
          "slug": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "example": "smoke-detector-x100",
            "title": "Slug",
            "x-unique": true
          },
          "layoutStyle": {
            "type": "string",
            "enum": [
              "standard",
              "video",
              "minimal"
            ],
            "title": "Layout style"
          },
          "heroVideoUrl": {
            "type": "string",
            "format": "uri",
            "example": "https://example.com",
            "title": "Hero video URL",
            "description": "Only applies when layoutStyle is video. Required when layoutStyle is video.",
            "nullable": true
          },
          "body": {
            "type": "string",
            "description": "Markdown source.",
            "title": "Intro (markdown)",
            "nullable": true
          },
          "blocks": {
            "type": "array",
            "description": "Ordered blocks. Each item is one of: HeroBlock, RichTextBlock, CtaBlock, discriminated by \"__component\".",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/HeroBlock"
                },
                {
                  "$ref": "#/components/schemas/RichTextBlock"
                },
                {
                  "$ref": "#/components/schemas/CtaBlock"
                }
              ],
              "discriminator": {
                "propertyName": "__component",
                "mapping": {
                  "hero_block": "#/components/schemas/HeroBlock",
                  "rich_text_block": "#/components/schemas/RichTextBlock",
                  "cta_block": "#/components/schemas/CtaBlock"
                }
              }
            },
            "minItems": 1,
            "maxItems": 12,
            "title": "Page blocks",
            "nullable": true
          },
          "gallery": {
            "type": "array",
            "items": {
              "type": "object",
              "description": "Stored asset reference resolved through the media provider.",
              "properties": {
                "url": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public or signed URL."
                },
                "fileName": {
                  "type": "string",
                  "description": "Original file name."
                },
                "mimeType": {
                  "type": "string",
                  "description": "IANA media type."
                },
                "size": {
                  "type": "integer",
                  "format": "int64",
                  "description": "Size in bytes."
                },
                "alt": {
                  "type": "string",
                  "description": "Alternative text."
                }
              },
              "required": [
                "url"
              ],
              "additionalProperties": false,
              "example": {
                "url": "https://cdn.example.com/x100.png",
                "mimeType": "image/png"
              }
            },
            "description": "Ordered asset list.",
            "title": "Gallery",
            "nullable": true
          },
          "campaignRating": {
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "maximum": 5,
            "title": "Campaign rating",
            "nullable": true
          },
          "readTimeSeconds": {
            "type": "integer",
            "format": "int64",
            "description": "Duration in seconds.",
            "title": "Estimated read time",
            "nullable": true
          },
          "contactPhone": {
            "type": "string",
            "example": "+46701234567",
            "title": "Contact phone",
            "nullable": true
          },
          "allowlistIp": {
            "type": "string",
            "example": "192.168.1.10",
            "title": "Preview allowlist IP",
            "nullable": true
          },
          "previewSecret": {
            "type": "string",
            "format": "password",
            "writeOnly": true,
            "title": "Preview secret",
            "nullable": true
          },
          "seo": {
            "$ref": "#/components/schemas/SeoMeta"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          }
        },
        "required": [
          "title",
          "slug",
          "layoutStyle"
        ],
        "additionalProperties": false
      },
      "LandingPageUpdateInput": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "title": "Title",
            "maxLength": 120
          },
          "slug": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "example": "smoke-detector-x100",
            "title": "Slug",
            "x-unique": true
          },
          "layoutStyle": {
            "type": "string",
            "enum": [
              "standard",
              "video",
              "minimal"
            ],
            "title": "Layout style"
          },
          "heroVideoUrl": {
            "type": "string",
            "format": "uri",
            "example": "https://example.com",
            "title": "Hero video URL",
            "description": "Only applies when layoutStyle is video. Required when layoutStyle is video.",
            "nullable": true
          },
          "body": {
            "type": "string",
            "description": "Markdown source.",
            "title": "Intro (markdown)",
            "nullable": true
          },
          "blocks": {
            "type": "array",
            "description": "Ordered blocks. Each item is one of: HeroBlock, RichTextBlock, CtaBlock, discriminated by \"__component\".",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/HeroBlock"
                },
                {
                  "$ref": "#/components/schemas/RichTextBlock"
                },
                {
                  "$ref": "#/components/schemas/CtaBlock"
                }
              ],
              "discriminator": {
                "propertyName": "__component",
                "mapping": {
                  "hero_block": "#/components/schemas/HeroBlock",
                  "rich_text_block": "#/components/schemas/RichTextBlock",
                  "cta_block": "#/components/schemas/CtaBlock"
                }
              }
            },
            "minItems": 1,
            "maxItems": 12,
            "title": "Page blocks",
            "nullable": true
          },
          "gallery": {
            "type": "array",
            "items": {
              "type": "object",
              "description": "Stored asset reference resolved through the media provider.",
              "properties": {
                "url": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public or signed URL."
                },
                "fileName": {
                  "type": "string",
                  "description": "Original file name."
                },
                "mimeType": {
                  "type": "string",
                  "description": "IANA media type."
                },
                "size": {
                  "type": "integer",
                  "format": "int64",
                  "description": "Size in bytes."
                },
                "alt": {
                  "type": "string",
                  "description": "Alternative text."
                }
              },
              "required": [
                "url"
              ],
              "additionalProperties": false,
              "example": {
                "url": "https://cdn.example.com/x100.png",
                "mimeType": "image/png"
              }
            },
            "description": "Ordered asset list.",
            "title": "Gallery",
            "nullable": true
          },
          "campaignRating": {
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "maximum": 5,
            "title": "Campaign rating",
            "nullable": true
          },
          "readTimeSeconds": {
            "type": "integer",
            "format": "int64",
            "description": "Duration in seconds.",
            "title": "Estimated read time",
            "nullable": true
          },
          "contactPhone": {
            "type": "string",
            "example": "+46701234567",
            "title": "Contact phone",
            "nullable": true
          },
          "allowlistIp": {
            "type": "string",
            "example": "192.168.1.10",
            "title": "Preview allowlist IP",
            "nullable": true
          },
          "previewSecret": {
            "type": "string",
            "format": "password",
            "writeOnly": true,
            "title": "Preview secret",
            "nullable": true
          },
          "seo": {
            "$ref": "#/components/schemas/SeoMeta"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          }
        },
        "additionalProperties": false
      },
      "LifecycleStatus": {
        "type": "object",
        "description": "TMF lifecycle status catalogue shared by every catalog entity.",
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "code": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "example": "smoke-detector-x100",
            "title": "Code",
            "x-unique": true
          },
          "phase": {
            "type": "string",
            "enum": [
              "design",
              "active",
              "retired",
              "obsolete"
            ],
            "title": "Phase"
          },
          "is_sellable": {
            "type": "boolean",
            "title": "Sellable",
            "nullable": true
          },
          "color": {
            "type": "string",
            "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
            "example": "#C2792B",
            "title": "Badge colour",
            "nullable": true
          },
          "sort_order": {
            "type": "integer",
            "format": "int32",
            "minimum": -2147483648,
            "maximum": 2147483647,
            "title": "Sort order",
            "nullable": true
          },
          "description": {
            "type": "string",
            "title": "Description",
            "nullable": true
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "locale": {
            "type": "string",
            "nullable": true
          },
          "revision": {
            "type": "integer",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "archivedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "createdBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          },
          "updatedBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "LifecycleStatusCreateInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "code": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "example": "smoke-detector-x100",
            "title": "Code",
            "x-unique": true
          },
          "phase": {
            "type": "string",
            "enum": [
              "design",
              "active",
              "retired",
              "obsolete"
            ],
            "title": "Phase"
          },
          "is_sellable": {
            "type": "boolean",
            "title": "Sellable",
            "nullable": true
          },
          "color": {
            "type": "string",
            "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
            "example": "#C2792B",
            "title": "Badge colour",
            "nullable": true
          },
          "sort_order": {
            "type": "integer",
            "format": "int32",
            "minimum": -2147483648,
            "maximum": 2147483647,
            "title": "Sort order",
            "nullable": true
          },
          "description": {
            "type": "string",
            "title": "Description",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          }
        },
        "required": [
          "name",
          "code",
          "phase"
        ],
        "additionalProperties": false
      },
      "LifecycleStatusUpdateInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "code": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "example": "smoke-detector-x100",
            "title": "Code",
            "x-unique": true
          },
          "phase": {
            "type": "string",
            "enum": [
              "design",
              "active",
              "retired",
              "obsolete"
            ],
            "title": "Phase"
          },
          "is_sellable": {
            "type": "boolean",
            "title": "Sellable",
            "nullable": true
          },
          "color": {
            "type": "string",
            "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
            "example": "#C2792B",
            "title": "Badge colour",
            "nullable": true
          },
          "sort_order": {
            "type": "integer",
            "format": "int32",
            "minimum": -2147483648,
            "maximum": 2147483647,
            "title": "Sort order",
            "nullable": true
          },
          "description": {
            "type": "string",
            "title": "Description",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          }
        },
        "additionalProperties": false
      },
      "ProductCategory": {
        "type": "object",
        "description": "TMF Category: hierarchical classification of the catalog.",
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "code": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "example": "smoke-detector-x100",
            "title": "Code",
            "x-unique": true
          },
          "description": {
            "type": "string",
            "title": "Description",
            "nullable": true
          },
          "image": {
            "type": "object",
            "description": "Stored asset reference resolved through the media provider.",
            "properties": {
              "url": {
                "type": "string",
                "format": "uri",
                "description": "Public or signed URL."
              },
              "fileName": {
                "type": "string",
                "description": "Original file name."
              },
              "mimeType": {
                "type": "string",
                "description": "IANA media type."
              },
              "size": {
                "type": "integer",
                "format": "int64",
                "description": "Size in bytes."
              },
              "alt": {
                "type": "string",
                "description": "Alternative text."
              }
            },
            "required": [
              "url"
            ],
            "additionalProperties": false,
            "example": {
              "url": "https://cdn.example.com/x100.png",
              "mimeType": "image/png"
            },
            "title": "Category image",
            "nullable": true
          },
          "parent": {
            "description": "Related product_category entry (id unless expanded with include).",
            "$ref": "#/components/schemas/ProductCategory"
          },
          "is_root": {
            "type": "boolean",
            "title": "Root category",
            "nullable": true
          },
          "sort_order": {
            "type": "integer",
            "format": "int32",
            "minimum": -2147483648,
            "maximum": 2147483647,
            "title": "Sort order",
            "nullable": true
          },
          "lifecycle_status": {
            "description": "Related lifecycle_status entry (id unless expanded with include).",
            "$ref": "#/components/schemas/LifecycleStatus"
          },
          "valid_for": {
            "$ref": "#/components/schemas/TmfValidityPeriod"
          },
          "tags": {
            "type": "array",
            "description": "Related content_tag entries (ids unless expanded with include).",
            "items": {
              "$ref": "#/components/schemas/ContentTag"
            },
            "title": "Tags",
            "nullable": true
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "locale": {
            "type": "string",
            "nullable": true
          },
          "revision": {
            "type": "integer",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "archivedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "createdBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          },
          "updatedBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "ProductCategoryCreateInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "code": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "example": "smoke-detector-x100",
            "title": "Code",
            "x-unique": true
          },
          "description": {
            "type": "string",
            "title": "Description",
            "nullable": true
          },
          "image": {
            "type": "object",
            "description": "Stored asset reference resolved through the media provider.",
            "properties": {
              "url": {
                "type": "string",
                "format": "uri",
                "description": "Public or signed URL."
              },
              "fileName": {
                "type": "string",
                "description": "Original file name."
              },
              "mimeType": {
                "type": "string",
                "description": "IANA media type."
              },
              "size": {
                "type": "integer",
                "format": "int64",
                "description": "Size in bytes."
              },
              "alt": {
                "type": "string",
                "description": "Alternative text."
              }
            },
            "required": [
              "url"
            ],
            "additionalProperties": false,
            "example": {
              "url": "https://cdn.example.com/x100.png",
              "mimeType": "image/png"
            },
            "title": "Category image",
            "nullable": true
          },
          "parent": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "title": "Parent category"
          },
          "is_root": {
            "type": "boolean",
            "title": "Root category",
            "nullable": true
          },
          "sort_order": {
            "type": "integer",
            "format": "int32",
            "minimum": -2147483648,
            "maximum": 2147483647,
            "title": "Sort order",
            "nullable": true
          },
          "lifecycle_status": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "title": "Lifecycle status"
          },
          "valid_for": {
            "$ref": "#/components/schemas/TmfValidityPeriod"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Tags",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "locale": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "code"
        ],
        "additionalProperties": false
      },
      "ProductCategoryUpdateInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "code": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "example": "smoke-detector-x100",
            "title": "Code",
            "x-unique": true
          },
          "description": {
            "type": "string",
            "title": "Description",
            "nullable": true
          },
          "image": {
            "type": "object",
            "description": "Stored asset reference resolved through the media provider.",
            "properties": {
              "url": {
                "type": "string",
                "format": "uri",
                "description": "Public or signed URL."
              },
              "fileName": {
                "type": "string",
                "description": "Original file name."
              },
              "mimeType": {
                "type": "string",
                "description": "IANA media type."
              },
              "size": {
                "type": "integer",
                "format": "int64",
                "description": "Size in bytes."
              },
              "alt": {
                "type": "string",
                "description": "Alternative text."
              }
            },
            "required": [
              "url"
            ],
            "additionalProperties": false,
            "example": {
              "url": "https://cdn.example.com/x100.png",
              "mimeType": "image/png"
            },
            "title": "Category image",
            "nullable": true
          },
          "parent": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "title": "Parent category"
          },
          "is_root": {
            "type": "boolean",
            "title": "Root category",
            "nullable": true
          },
          "sort_order": {
            "type": "integer",
            "format": "int32",
            "minimum": -2147483648,
            "maximum": 2147483647,
            "title": "Sort order",
            "nullable": true
          },
          "lifecycle_status": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "title": "Lifecycle status"
          },
          "valid_for": {
            "$ref": "#/components/schemas/TmfValidityPeriod"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Tags",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "locale": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "ProductCharacteristic": {
        "type": "object",
        "description": "TMF ProductSpecificationCharacteristic: a reusable product attribute with its allowed values.",
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "code": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "example": "smoke-detector-x100",
            "title": "Code",
            "x-unique": true
          },
          "description": {
            "type": "string",
            "title": "Description",
            "nullable": true
          },
          "value_type": {
            "type": "string",
            "enum": [
              "string",
              "number",
              "boolean",
              "date",
              "dateTime",
              "enum",
              "range",
              "object"
            ],
            "title": "Value type",
            "default": "string"
          },
          "unit_of_measure": {
            "type": "string",
            "title": "Unit of measure",
            "nullable": true
          },
          "regex": {
            "type": "string",
            "title": "Value pattern (regex)",
            "description": "Only applies when value_type is string.",
            "nullable": true
          },
          "min_cardinality": {
            "type": "integer",
            "format": "int32",
            "minimum": -2147483648,
            "maximum": 2147483647,
            "title": "Min cardinality",
            "default": 0,
            "nullable": true
          },
          "max_cardinality": {
            "type": "integer",
            "format": "int32",
            "minimum": -2147483648,
            "maximum": 2147483647,
            "title": "Max cardinality",
            "default": 1,
            "nullable": true
          },
          "allowed_values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TmfCharValue"
            },
            "title": "Allowed values",
            "description": "Only applies when value_type is one of enum, range. Required when value_type is enum.",
            "nullable": true
          },
          "configurable": {
            "type": "boolean",
            "title": "Configurable by customer",
            "nullable": true
          },
          "variant_defining": {
            "type": "boolean",
            "title": "Variant defining",
            "description": "Values of this characteristic create separate product variants.",
            "nullable": true
          },
          "extensible": {
            "type": "boolean",
            "title": "Extensible",
            "nullable": true
          },
          "category": {
            "description": "Related product_category entry (id unless expanded with include).",
            "$ref": "#/components/schemas/ProductCategory"
          },
          "tags": {
            "type": "array",
            "description": "Related content_tag entries (ids unless expanded with include).",
            "items": {
              "$ref": "#/components/schemas/ContentTag"
            },
            "title": "Tags",
            "nullable": true
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "locale": {
            "type": "string",
            "nullable": true
          },
          "revision": {
            "type": "integer",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "archivedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "createdBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          },
          "updatedBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "ProductCharacteristicCreateInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "code": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "example": "smoke-detector-x100",
            "title": "Code",
            "x-unique": true
          },
          "description": {
            "type": "string",
            "title": "Description",
            "nullable": true
          },
          "value_type": {
            "type": "string",
            "enum": [
              "string",
              "number",
              "boolean",
              "date",
              "dateTime",
              "enum",
              "range",
              "object"
            ],
            "title": "Value type",
            "default": "string"
          },
          "unit_of_measure": {
            "type": "string",
            "title": "Unit of measure",
            "nullable": true
          },
          "regex": {
            "type": "string",
            "title": "Value pattern (regex)",
            "description": "Only applies when value_type is string.",
            "nullable": true
          },
          "min_cardinality": {
            "type": "integer",
            "format": "int32",
            "minimum": -2147483648,
            "maximum": 2147483647,
            "title": "Min cardinality",
            "default": 0,
            "nullable": true
          },
          "max_cardinality": {
            "type": "integer",
            "format": "int32",
            "minimum": -2147483648,
            "maximum": 2147483647,
            "title": "Max cardinality",
            "default": 1,
            "nullable": true
          },
          "allowed_values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TmfCharValue"
            },
            "title": "Allowed values",
            "description": "Only applies when value_type is one of enum, range. Required when value_type is enum.",
            "nullable": true
          },
          "configurable": {
            "type": "boolean",
            "title": "Configurable by customer",
            "nullable": true
          },
          "variant_defining": {
            "type": "boolean",
            "title": "Variant defining",
            "description": "Values of this characteristic create separate product variants.",
            "nullable": true
          },
          "extensible": {
            "type": "boolean",
            "title": "Extensible",
            "nullable": true
          },
          "category": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "title": "Category"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Tags",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          }
        },
        "required": [
          "name",
          "code",
          "value_type"
        ],
        "additionalProperties": false
      },
      "ProductCharacteristicUpdateInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "code": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "example": "smoke-detector-x100",
            "title": "Code",
            "x-unique": true
          },
          "description": {
            "type": "string",
            "title": "Description",
            "nullable": true
          },
          "value_type": {
            "type": "string",
            "enum": [
              "string",
              "number",
              "boolean",
              "date",
              "dateTime",
              "enum",
              "range",
              "object"
            ],
            "title": "Value type",
            "default": "string"
          },
          "unit_of_measure": {
            "type": "string",
            "title": "Unit of measure",
            "nullable": true
          },
          "regex": {
            "type": "string",
            "title": "Value pattern (regex)",
            "description": "Only applies when value_type is string.",
            "nullable": true
          },
          "min_cardinality": {
            "type": "integer",
            "format": "int32",
            "minimum": -2147483648,
            "maximum": 2147483647,
            "title": "Min cardinality",
            "default": 0,
            "nullable": true
          },
          "max_cardinality": {
            "type": "integer",
            "format": "int32",
            "minimum": -2147483648,
            "maximum": 2147483647,
            "title": "Max cardinality",
            "default": 1,
            "nullable": true
          },
          "allowed_values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TmfCharValue"
            },
            "title": "Allowed values",
            "description": "Only applies when value_type is one of enum, range. Required when value_type is enum.",
            "nullable": true
          },
          "configurable": {
            "type": "boolean",
            "title": "Configurable by customer",
            "nullable": true
          },
          "variant_defining": {
            "type": "boolean",
            "title": "Variant defining",
            "description": "Values of this characteristic create separate product variants.",
            "nullable": true
          },
          "extensible": {
            "type": "boolean",
            "title": "Extensible",
            "nullable": true
          },
          "category": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "title": "Category"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Tags",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          }
        },
        "additionalProperties": false
      },
      "ProductOffering": {
        "type": "object",
        "description": "TMF ProductOffering: the commercial packaging of a specification for a market.",
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "code": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "example": "smoke-detector-x100",
            "title": "Code",
            "x-unique": true
          },
          "description": {
            "type": "string",
            "description": "Markdown-formatted rich text.",
            "title": "Description",
            "nullable": true
          },
          "specification": {
            "description": "Related product_specification entry (id unless expanded with include).",
            "$ref": "#/components/schemas/ProductSpecification"
          },
          "variants": {
            "type": "array",
            "description": "Only variants of the selected specification are offered.",
            "items": {
              "$ref": "#/components/schemas/ProductVariant"
            },
            "title": "Offered variants",
            "nullable": true
          },
          "prices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TmfPrice"
            },
            "title": "Prices",
            "nullable": true
          },
          "is_sellable": {
            "type": "boolean",
            "title": "Sellable",
            "default": true,
            "nullable": true
          },
          "channels": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "uniqueItems": true,
            "title": "Sales channels",
            "nullable": true
          },
          "primary_market": {
            "type": "string",
            "pattern": "^[A-Z]{2}$",
            "example": "SE",
            "title": "Primary market",
            "nullable": true
          },
          "lifecycle_status": {
            "description": "Related lifecycle_status entry (id unless expanded with include).",
            "$ref": "#/components/schemas/LifecycleStatus"
          },
          "valid_for": {
            "$ref": "#/components/schemas/TmfValidityPeriod"
          },
          "categories": {
            "type": "array",
            "description": "Related product_category entries (ids unless expanded with include).",
            "items": {
              "$ref": "#/components/schemas/ProductCategory"
            },
            "title": "Categories",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "description": "Related content_tag entries (ids unless expanded with include).",
            "items": {
              "$ref": "#/components/schemas/ContentTag"
            },
            "title": "Tags",
            "nullable": true
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "locale": {
            "type": "string",
            "nullable": true
          },
          "revision": {
            "type": "integer",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "archivedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "createdBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          },
          "updatedBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "ProductOfferingCreateInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "code": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "example": "smoke-detector-x100",
            "title": "Code",
            "x-unique": true
          },
          "description": {
            "type": "string",
            "description": "Markdown-formatted rich text.",
            "title": "Description",
            "nullable": true
          },
          "specification": {
            "type": "string",
            "format": "uuid",
            "nullable": false,
            "title": "Product specification"
          },
          "variants": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Offered variants",
            "description": "Only variants of the selected specification are offered.",
            "nullable": true
          },
          "prices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TmfPrice"
            },
            "title": "Prices",
            "nullable": true
          },
          "is_sellable": {
            "type": "boolean",
            "title": "Sellable",
            "default": true,
            "nullable": true
          },
          "channels": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "uniqueItems": true,
            "title": "Sales channels",
            "nullable": true
          },
          "primary_market": {
            "type": "string",
            "pattern": "^[A-Z]{2}$",
            "example": "SE",
            "title": "Primary market",
            "nullable": true
          },
          "lifecycle_status": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "title": "Lifecycle status"
          },
          "valid_for": {
            "$ref": "#/components/schemas/TmfValidityPeriod"
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Categories",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Tags",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "locale": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "code",
          "specification"
        ],
        "additionalProperties": false
      },
      "ProductOfferingUpdateInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "code": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "example": "smoke-detector-x100",
            "title": "Code",
            "x-unique": true
          },
          "description": {
            "type": "string",
            "description": "Markdown-formatted rich text.",
            "title": "Description",
            "nullable": true
          },
          "specification": {
            "type": "string",
            "format": "uuid",
            "nullable": false,
            "title": "Product specification"
          },
          "variants": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Offered variants",
            "description": "Only variants of the selected specification are offered.",
            "nullable": true
          },
          "prices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TmfPrice"
            },
            "title": "Prices",
            "nullable": true
          },
          "is_sellable": {
            "type": "boolean",
            "title": "Sellable",
            "default": true,
            "nullable": true
          },
          "channels": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "uniqueItems": true,
            "title": "Sales channels",
            "nullable": true
          },
          "primary_market": {
            "type": "string",
            "pattern": "^[A-Z]{2}$",
            "example": "SE",
            "title": "Primary market",
            "nullable": true
          },
          "lifecycle_status": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "title": "Lifecycle status"
          },
          "valid_for": {
            "$ref": "#/components/schemas/TmfValidityPeriod"
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Categories",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Tags",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "locale": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "ProductSpecification": {
        "type": "object",
        "description": "TMF ProductSpecification: the technical definition of a product.",
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "code": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "example": "smoke-detector-x100",
            "title": "Code",
            "x-unique": true
          },
          "product_number": {
            "type": "string",
            "title": "Product number",
            "nullable": true
          },
          "brand": {
            "type": "string",
            "title": "Brand",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Markdown-formatted rich text.",
            "title": "Description",
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "type": "object",
              "description": "Stored asset reference resolved through the media provider.",
              "properties": {
                "url": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public or signed URL."
                },
                "fileName": {
                  "type": "string",
                  "description": "Original file name."
                },
                "mimeType": {
                  "type": "string",
                  "description": "IANA media type."
                },
                "size": {
                  "type": "integer",
                  "format": "int64",
                  "description": "Size in bytes."
                },
                "alt": {
                  "type": "string",
                  "description": "Alternative text."
                }
              },
              "required": [
                "url"
              ],
              "additionalProperties": false,
              "example": {
                "url": "https://cdn.example.com/x100.png",
                "mimeType": "image/png"
              }
            },
            "description": "Ordered asset list.",
            "title": "Attachments",
            "nullable": true
          },
          "characteristics": {
            "type": "array",
            "description": "Related product_characteristic entries (ids unless expanded with include).",
            "items": {
              "$ref": "#/components/schemas/ProductCharacteristic"
            },
            "title": "Characteristics",
            "nullable": true
          },
          "is_bundle": {
            "type": "boolean",
            "title": "Bundle",
            "nullable": true
          },
          "bundled_specifications": {
            "type": "array",
            "description": "Only applies when is_bundle is true. Required when is_bundle is true.",
            "items": {
              "$ref": "#/components/schemas/ProductSpecification"
            },
            "title": "Bundled specifications",
            "nullable": true
          },
          "lifecycle_status": {
            "description": "Related lifecycle_status entry (id unless expanded with include).",
            "$ref": "#/components/schemas/LifecycleStatus"
          },
          "version": {
            "type": "string",
            "title": "Specification version",
            "default": "1.0",
            "nullable": true
          },
          "valid_for": {
            "$ref": "#/components/schemas/TmfValidityPeriod"
          },
          "categories": {
            "type": "array",
            "description": "Related product_category entries (ids unless expanded with include).",
            "items": {
              "$ref": "#/components/schemas/ProductCategory"
            },
            "title": "Categories",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "description": "Related content_tag entries (ids unless expanded with include).",
            "items": {
              "$ref": "#/components/schemas/ContentTag"
            },
            "title": "Tags",
            "nullable": true
          },
          "external_id": {
            "type": "string",
            "title": "External ID",
            "nullable": true
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "locale": {
            "type": "string",
            "nullable": true
          },
          "revision": {
            "type": "integer",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "archivedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "createdBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          },
          "updatedBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "ProductSpecificationCreateInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "code": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "example": "smoke-detector-x100",
            "title": "Code",
            "x-unique": true
          },
          "product_number": {
            "type": "string",
            "title": "Product number",
            "nullable": true
          },
          "brand": {
            "type": "string",
            "title": "Brand",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Markdown-formatted rich text.",
            "title": "Description",
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "type": "object",
              "description": "Stored asset reference resolved through the media provider.",
              "properties": {
                "url": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public or signed URL."
                },
                "fileName": {
                  "type": "string",
                  "description": "Original file name."
                },
                "mimeType": {
                  "type": "string",
                  "description": "IANA media type."
                },
                "size": {
                  "type": "integer",
                  "format": "int64",
                  "description": "Size in bytes."
                },
                "alt": {
                  "type": "string",
                  "description": "Alternative text."
                }
              },
              "required": [
                "url"
              ],
              "additionalProperties": false,
              "example": {
                "url": "https://cdn.example.com/x100.png",
                "mimeType": "image/png"
              }
            },
            "description": "Ordered asset list.",
            "title": "Attachments",
            "nullable": true
          },
          "characteristics": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Characteristics",
            "nullable": true
          },
          "is_bundle": {
            "type": "boolean",
            "title": "Bundle",
            "nullable": true
          },
          "bundled_specifications": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Bundled specifications",
            "description": "Only applies when is_bundle is true. Required when is_bundle is true.",
            "nullable": true
          },
          "lifecycle_status": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "title": "Lifecycle status"
          },
          "version": {
            "type": "string",
            "title": "Specification version",
            "default": "1.0",
            "nullable": true
          },
          "valid_for": {
            "$ref": "#/components/schemas/TmfValidityPeriod"
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Categories",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Tags",
            "nullable": true
          },
          "external_id": {
            "type": "string",
            "title": "External ID",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "locale": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "code"
        ],
        "additionalProperties": false
      },
      "ProductSpecificationUpdateInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "code": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "example": "smoke-detector-x100",
            "title": "Code",
            "x-unique": true
          },
          "product_number": {
            "type": "string",
            "title": "Product number",
            "nullable": true
          },
          "brand": {
            "type": "string",
            "title": "Brand",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Markdown-formatted rich text.",
            "title": "Description",
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "type": "object",
              "description": "Stored asset reference resolved through the media provider.",
              "properties": {
                "url": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public or signed URL."
                },
                "fileName": {
                  "type": "string",
                  "description": "Original file name."
                },
                "mimeType": {
                  "type": "string",
                  "description": "IANA media type."
                },
                "size": {
                  "type": "integer",
                  "format": "int64",
                  "description": "Size in bytes."
                },
                "alt": {
                  "type": "string",
                  "description": "Alternative text."
                }
              },
              "required": [
                "url"
              ],
              "additionalProperties": false,
              "example": {
                "url": "https://cdn.example.com/x100.png",
                "mimeType": "image/png"
              }
            },
            "description": "Ordered asset list.",
            "title": "Attachments",
            "nullable": true
          },
          "characteristics": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Characteristics",
            "nullable": true
          },
          "is_bundle": {
            "type": "boolean",
            "title": "Bundle",
            "nullable": true
          },
          "bundled_specifications": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Bundled specifications",
            "description": "Only applies when is_bundle is true. Required when is_bundle is true.",
            "nullable": true
          },
          "lifecycle_status": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "title": "Lifecycle status"
          },
          "version": {
            "type": "string",
            "title": "Specification version",
            "default": "1.0",
            "nullable": true
          },
          "valid_for": {
            "$ref": "#/components/schemas/TmfValidityPeriod"
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Categories",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Tags",
            "nullable": true
          },
          "external_id": {
            "type": "string",
            "title": "External ID",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "locale": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "ProductVariant": {
        "type": "object",
        "description": "Sellable variant of a specification, defined by its characteristic values.",
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "sku": {
            "type": "string",
            "title": "SKU",
            "x-unique": true
          },
          "specification": {
            "description": "Related product_specification entry (id unless expanded with include).",
            "$ref": "#/components/schemas/ProductSpecification"
          },
          "gtin": {
            "type": "string",
            "example": "5901234123457",
            "title": "GTIN / EAN",
            "nullable": true
          },
          "image": {
            "type": "object",
            "description": "Stored asset reference resolved through the media provider.",
            "properties": {
              "url": {
                "type": "string",
                "format": "uri",
                "description": "Public or signed URL."
              },
              "fileName": {
                "type": "string",
                "description": "Original file name."
              },
              "mimeType": {
                "type": "string",
                "description": "IANA media type."
              },
              "size": {
                "type": "integer",
                "format": "int64",
                "description": "Size in bytes."
              },
              "alt": {
                "type": "string",
                "description": "Alternative text."
              }
            },
            "required": [
              "url"
            ],
            "additionalProperties": false,
            "example": {
              "url": "https://cdn.example.com/x100.png",
              "mimeType": "image/png"
            },
            "title": "Variant image",
            "nullable": true
          },
          "characteristics": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TmfVariantCharacteristic"
            },
            "title": "Characteristic values",
            "description": "Assign a value for every variant-defining characteristic of the specification.",
            "nullable": true
          },
          "prices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TmfPrice"
            },
            "title": "Prices",
            "nullable": true
          },
          "stock_status": {
            "type": "string",
            "enum": [
              "inStock",
              "lowStock",
              "outOfStock",
              "preorder",
              "discontinued"
            ],
            "title": "Stock status",
            "default": "inStock",
            "nullable": true
          },
          "stock_quantity": {
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "maximum": 2147483647,
            "title": "Stock quantity",
            "description": "Only applies when stock_status is one of inStock, lowStock, preorder.",
            "nullable": true
          },
          "is_default": {
            "type": "boolean",
            "title": "Default variant",
            "nullable": true
          },
          "dimensions": {
            "$ref": "#/components/schemas/TmfDimensions"
          },
          "lifecycle_status": {
            "description": "Related lifecycle_status entry (id unless expanded with include).",
            "$ref": "#/components/schemas/LifecycleStatus"
          },
          "valid_for": {
            "$ref": "#/components/schemas/TmfValidityPeriod"
          },
          "tags": {
            "type": "array",
            "description": "Related content_tag entries (ids unless expanded with include).",
            "items": {
              "$ref": "#/components/schemas/ContentTag"
            },
            "title": "Tags",
            "nullable": true
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "locale": {
            "type": "string",
            "nullable": true
          },
          "revision": {
            "type": "integer",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "archivedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "createdBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          },
          "updatedBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "ProductVariantCreateInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "sku": {
            "type": "string",
            "title": "SKU",
            "x-unique": true
          },
          "specification": {
            "type": "string",
            "format": "uuid",
            "nullable": false,
            "title": "Product specification"
          },
          "gtin": {
            "type": "string",
            "example": "5901234123457",
            "title": "GTIN / EAN",
            "nullable": true
          },
          "image": {
            "type": "object",
            "description": "Stored asset reference resolved through the media provider.",
            "properties": {
              "url": {
                "type": "string",
                "format": "uri",
                "description": "Public or signed URL."
              },
              "fileName": {
                "type": "string",
                "description": "Original file name."
              },
              "mimeType": {
                "type": "string",
                "description": "IANA media type."
              },
              "size": {
                "type": "integer",
                "format": "int64",
                "description": "Size in bytes."
              },
              "alt": {
                "type": "string",
                "description": "Alternative text."
              }
            },
            "required": [
              "url"
            ],
            "additionalProperties": false,
            "example": {
              "url": "https://cdn.example.com/x100.png",
              "mimeType": "image/png"
            },
            "title": "Variant image",
            "nullable": true
          },
          "characteristics": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TmfVariantCharacteristic"
            },
            "title": "Characteristic values",
            "description": "Assign a value for every variant-defining characteristic of the specification.",
            "nullable": true
          },
          "prices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TmfPrice"
            },
            "title": "Prices",
            "nullable": true
          },
          "stock_status": {
            "type": "string",
            "enum": [
              "inStock",
              "lowStock",
              "outOfStock",
              "preorder",
              "discontinued"
            ],
            "title": "Stock status",
            "default": "inStock",
            "nullable": true
          },
          "stock_quantity": {
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "maximum": 2147483647,
            "title": "Stock quantity",
            "description": "Only applies when stock_status is one of inStock, lowStock, preorder.",
            "nullable": true
          },
          "is_default": {
            "type": "boolean",
            "title": "Default variant",
            "nullable": true
          },
          "dimensions": {
            "$ref": "#/components/schemas/TmfDimensions"
          },
          "lifecycle_status": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "title": "Lifecycle status"
          },
          "valid_for": {
            "$ref": "#/components/schemas/TmfValidityPeriod"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Tags",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          }
        },
        "required": [
          "name",
          "sku",
          "specification"
        ],
        "additionalProperties": false
      },
      "ProductVariantUpdateInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "sku": {
            "type": "string",
            "title": "SKU",
            "x-unique": true
          },
          "specification": {
            "type": "string",
            "format": "uuid",
            "nullable": false,
            "title": "Product specification"
          },
          "gtin": {
            "type": "string",
            "example": "5901234123457",
            "title": "GTIN / EAN",
            "nullable": true
          },
          "image": {
            "type": "object",
            "description": "Stored asset reference resolved through the media provider.",
            "properties": {
              "url": {
                "type": "string",
                "format": "uri",
                "description": "Public or signed URL."
              },
              "fileName": {
                "type": "string",
                "description": "Original file name."
              },
              "mimeType": {
                "type": "string",
                "description": "IANA media type."
              },
              "size": {
                "type": "integer",
                "format": "int64",
                "description": "Size in bytes."
              },
              "alt": {
                "type": "string",
                "description": "Alternative text."
              }
            },
            "required": [
              "url"
            ],
            "additionalProperties": false,
            "example": {
              "url": "https://cdn.example.com/x100.png",
              "mimeType": "image/png"
            },
            "title": "Variant image",
            "nullable": true
          },
          "characteristics": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TmfVariantCharacteristic"
            },
            "title": "Characteristic values",
            "description": "Assign a value for every variant-defining characteristic of the specification.",
            "nullable": true
          },
          "prices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TmfPrice"
            },
            "title": "Prices",
            "nullable": true
          },
          "stock_status": {
            "type": "string",
            "enum": [
              "inStock",
              "lowStock",
              "outOfStock",
              "preorder",
              "discontinued"
            ],
            "title": "Stock status",
            "default": "inStock",
            "nullable": true
          },
          "stock_quantity": {
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "maximum": 2147483647,
            "title": "Stock quantity",
            "description": "Only applies when stock_status is one of inStock, lowStock, preorder.",
            "nullable": true
          },
          "is_default": {
            "type": "boolean",
            "title": "Default variant",
            "nullable": true
          },
          "dimensions": {
            "$ref": "#/components/schemas/TmfDimensions"
          },
          "lifecycle_status": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "title": "Lifecycle status"
          },
          "valid_for": {
            "$ref": "#/components/schemas/TmfValidityPeriod"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "Tags",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          }
        },
        "additionalProperties": false
      },
      "ContentTag": {
        "type": "object",
        "description": "Cross-entity tag catalogue used for grouping and faceted search.",
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "slug": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "example": "smoke-detector-x100",
            "title": "Slug",
            "x-unique": true
          },
          "color": {
            "type": "string",
            "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
            "example": "#C2792B",
            "title": "Colour",
            "nullable": true
          },
          "scope": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "uniqueItems": true,
            "title": "Applies to",
            "nullable": true
          },
          "description": {
            "type": "string",
            "title": "Description",
            "nullable": true
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "locale": {
            "type": "string",
            "nullable": true
          },
          "revision": {
            "type": "integer",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "archivedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "createdBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          },
          "updatedBy": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "ContentTagCreateInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "slug": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "example": "smoke-detector-x100",
            "title": "Slug",
            "x-unique": true
          },
          "color": {
            "type": "string",
            "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
            "example": "#C2792B",
            "title": "Colour",
            "nullable": true
          },
          "scope": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "uniqueItems": true,
            "title": "Applies to",
            "nullable": true
          },
          "description": {
            "type": "string",
            "title": "Description",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          }
        },
        "required": [
          "name",
          "slug"
        ],
        "additionalProperties": false
      },
      "ContentTagUpdateInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "slug": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "example": "smoke-detector-x100",
            "title": "Slug",
            "x-unique": true
          },
          "color": {
            "type": "string",
            "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
            "example": "#C2792B",
            "title": "Colour",
            "nullable": true
          },
          "scope": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "uniqueItems": true,
            "title": "Applies to",
            "nullable": true
          },
          "description": {
            "type": "string",
            "title": "Description",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          }
        },
        "additionalProperties": false
      },
      "EntryRevision": {
        "type": "object",
        "description": "One point in an entry's history: a full snapshot plus the diff that produced it.",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "schemaKey": {
            "type": "string"
          },
          "entryId": {
            "type": "string",
            "format": "uuid"
          },
          "revision": {
            "type": "integer"
          },
          "status": {
            "type": "string"
          },
          "locale": {
            "type": "string",
            "nullable": true
          },
          "action": {
            "type": "string",
            "enum": [
              "create",
              "update",
              "transition",
              "restore",
              "translation"
            ]
          },
          "snapshot": {
            "type": "object",
            "additionalProperties": true
          },
          "diff": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "actorId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "actorEmail": {
            "type": "string",
            "nullable": true
          },
          "source": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      }
    }
  }
}