{
  "openapi": "3.0.4",
  "info": {
    "title": "fiskaltrust PosDealer API",
    "description": "<p>This API provides functionalities for PosDealers to onboard PosOperators and configure and rollout their Middleware installations.</p><p>All operations that the PosDealer API offers are also available in the fiskaltrust.Portal, if you prefer to use a graphical user interface over this API.</p><h3>API design principles</h3><p>The PosDealer API was designed in a RESTful and follows those design principles. The API accepts and returns JSON data and uses standard HTTP status codes for responses.</p><h4>Authentication</h4><p>The PosDealer API can only be used with the access data of a PosDealer. These credentials can be found on the fiskaltrust.Portal in the <i>API Access</i> section of your account profile.<br/>You will need both <code>AccountId</code> and <code>AccessToken</code> to use this API.\r\nThese values can be obtained from the fiskaltrust.Portal only; access data will not be sent via, e.g., E-Mail by fiskaltrust.</p><p>Please note that you can change the <code>AccessToken</code> of your account (Company / Overview / Reset), e.g., if your credentials got leaked. The AccountId is unchangeable.</p><p>If you face authorization problems, check your account's assigned roles in fiskaltrust.Portal (Company / Overview) and ensure you have the appropriate permissions to access the account of your PosOperator.</p><h4>Versioning</h4><p>This API uses semantic versioning, meaning only major version changes contain breaking changes. Non-breaking changes (like returning additional data without changing the original model) will not increase the major version.</p><ul><li>The latest version is used if no version is specified (like in the samples in this collection).</li><li>Users can specify versions by explicitly stating it in the URL once more versions are released.</li></ul>",
    "contact": {
      "name": "fiskaltrust",
      "email": "hello@fiskaltrust.eu"
    },
    "license": {
      "name": "This documentation and samples are released under the MIT license.",
      "url": "https://opensource.org/licenses/MIT"
    },
    "version": "0.0"
  },
  "servers": [
    {
      "url": "https://posdealer-api-sandbox.fiskaltrust.cloud",
      "description": "Sandbox"
    },
    {
      "url": "https://posdealer-api.fiskaltrust.cloud",
      "description": "Production"
    },
    {
      "url": "https://posdealer-api-sandbox.fiskaltrust.eu",
      "description": "Sandbox"
    },
    {
      "url": "https://posdealer-api.fiskaltrust.eu",
      "description": "Production"
    }
  ],
  "paths": {
    "/api/posoperators/{posOperatorId}/outlets": {
      "get": {
        "tags": [
          "Create and manage Outlets"
        ],
        "summary": "List outlets of a PosOperator",
        "description": "This request lists all outlets of the PosOperator (i.e. the merchant) that is specified in the URL by their respective account ID.<br/>Account IDs of connected PosOperators can either be obtained via the <code>/api/posoperators</code> endpoint, or via fiskaltrust's Portal.<br/><br/><b>Please note</b>:<ul><li>While outlets have unique GUIDs, this API heavily uses the numeric outlet number to be closer to the workflows established in the Portal.</li><li>The outlet number 2 is reserved for internal usage and can neither be obtained nor edited.</li>",
        "parameters": [
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Outlet"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Create and manage Outlets"
        ],
        "summary": "Create a new outlet in the account of a PosOperator",
        "description": "This request creates a new outlet in the account of a PosOperator (i.e. a merchant) that is specified in the URL by their respective account ID.<br/>Account IDs of connected PosOperators can either be obtained via the <code>/api/posoperators</code> endpoint, or via fiskaltrust's Portal.<br/><br/><b>Please note</b>:<ul><li>While outlets have unique GUIDs, this API heavily uses the numeric outlet number to be closer to the workflows established in the Portal.</li><li>The outlet number 2 is reserved for internal usage and can neither be obtained nor edited.</li>",
        "parameters": [
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OutletCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Outlet"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpValidationProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/posoperators/{posOperatorId}/outlets/{outletNumber}": {
      "get": {
        "tags": [
          "Create and manage Outlets"
        ],
        "summary": "Get a specific outlet of a PosOperator",
        "description": "This request returns a specific outlets of the PosOperator (i.e. the merchant) that is specified in the URL by their respective account ID.<br/>Account IDs of connected PosOperators can either be obtained via the <code>/api/posoperators</code> endpoint, or via fiskaltrust's Portal.<br/><br/><b>Please note</b>:<ul><li>While outlets have unique GUIDs, this API heavily uses the numeric outlet number to be closer to the workflows established in the Portal.</li><li>The outlet number 2 is reserved for internal usage and can neither be obtained nor edited.</li>",
        "parameters": [
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "outletNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Outlet"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Create and manage Outlets"
        ],
        "summary": "Update an outlet of a PosOperator",
        "description": "This request updates a specific outlets of the PosOperator (i.e. the merchant) that is specified in the URL by their respective account ID. <b>As this is a <i>PUT</i> and not a <i>PATCH</i> endpoint, existing data is overwritten; make sure to pass all properties in each call.</b><br/>Account IDs of connected PosOperators can either be obtained via the <code>/api/posoperators</code> endpoint, or via fiskaltrust's Portal.<br/><br/><b>Please note</b>:<ul><li>While outlets have unique GUIDs, this API heavily uses the numeric outlet number to be closer to the workflows established in the Portal.</li><li>The outlet number 2 is reserved for internal usage and can neither be obtained nor edited.</li>",
        "parameters": [
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "outletNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OutletUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Outlet"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpValidationProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/posoperators/{posOperatorId}/templates": {
      "post": {
        "tags": [
          "Create CashBoxes"
        ],
        "summary": "Execute a template to create a CashBox",
        "description": "This endpoint executes a CashBox template in a PosOperator's (i.e. merchant's) account.<br/>Templates can be used to create re-usable CashBox configurations, and either create new components or put already existing components (i.e. SCUs) into the defined CashBox.<br/><br/>More details about how to build templates can be found <a href=\"https://docs.fiskaltrust.cloud/docs/posdealers/technical-operations/rollout-automation/templates\">in our documentation</a>.",
        "parameters": [
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "outlet_number",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CashBox"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/posoperators": {
      "get": {
        "tags": [
          "Invite and manage PosOperators"
        ],
        "summary": "List connected PosOperators",
        "description": "This endpoint lists all PosOperators (i.e. merchants) that are connected to the PosDealer specified by the accountId header.<br/>For performance the list is served from a short-lived cache (up to 60 seconds old) by default; changes you make through this API (e.g. auto-invite) are reflected immediately. Pass <code>useCache=false</code> to bypass the cache and read the current list directly from Dynamics.<br/><b>Please note</b> that only active connections (i.e. connections that the PosOperator has accepted) are returned in this version of the API.",
        "parameters": [
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "useCache",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Account"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Invite and manage PosOperators"
        ],
        "summary": "Invite a new PosOperator",
        "description": "This endpoint invites a new PosOperator (i.e. merchant) to fiskaltrust's Portal and connects them to the PosDealer's account that is specified by the accountId header.<br/>After the request has completed, the PosOperator will receive an email with further instructions to activate their account.",
        "parameters": [
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PosOperatorInvitation"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Account"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/posoperators/{posOperatorId}": {
      "get": {
        "tags": [
          "Invite and manage PosOperators"
        ],
        "summary": "Get connected PosOperator",
        "description": "This request returns a specific PosOperator (i.e. the merchant), that is specified in the URL by their respective account ID, if it is connected to the PosDealer specified by the accountId header.<br/><b>Please note</b> that only active connections (i.e. connections that the PosOperator has accepted) are returned in this version of the API.",
        "parameters": [
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Account"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/posoperators/autoinvite": {
      "post": {
        "tags": [
          "Invite and manage PosOperators"
        ],
        "summary": "Auto-invite a new PosOperator ",
        "description": "This endpoint auto-invites a new PosOperator (i.e. merchant) to fiskaltrust's Portal and connects them to the PosDealer's account that is specified by the accountId header.<br/>After the request has completed, the PosOperator account will be automatically created and connected.",
        "parameters": [
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PosOperatorInvitation"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Account"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/posoperators/{posOperatorId}/masterdata": {
      "patch": {
        "tags": [
          "Invite and manage PosOperators"
        ],
        "summary": "Update company master data (DE only)",
        "description": "This endpoint updates the master data for a company, specifically the information required for the notification-sending operation.",
        "parameters": [
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCompanyMasterDataSummary"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos-operators-invitation": {
      "get": {
        "tags": [
          "Pos Operator Invitation Management"
        ],
        "summary": "List pending PosOperator invitations",
        "description": "This endpoint lists all pending (i.e. not yet submitted to the Portal) PosOperator invitations for the PosDealer account specified by the <code>accountId</code> header.<br/>Invitations can be created individually via <code>POST /api/pos-operators-invitation</code> or in bulk via the CSV import endpoint, and submitted later via the PosOperator endpoints.<br/><br/><b>Please note</b> that completed invitations are not returned here; use <code>GET /api/pos-operators-invitation/history</code> instead.",
        "operationId": "ListPosOperatorInvitations",
        "parameters": [
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PosOperatorInvitationResponse"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Pos Operator Invitation Management"
        ],
        "summary": "Create a new PosOperator invitation",
        "description": "This endpoint creates a new PosOperator invitation for the PosDealer account specified by the <code>accountId</code> header.<br/>The invitation is only saved &mdash; it is not yet submitted to the Portal. Use the <code>/api/posoperators</code> endpoint to submit an invitation immediately instead.<br/><br/><b>Please note:</b><ul><li>The contact e-mail address must be unique per account; a <code>409</code> is returned if an invitation with the same contact e-mail already exists.</li><li>Required fields are validated server-side, and a <code>400</code> with details is returned on validation errors.</li></ul>",
        "operationId": "CreatePosOperatorInvitation",
        "parameters": [
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PosOperatorInvitationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PosOperatorInvitationResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos-operators-invitation/history": {
      "get": {
        "tags": [
          "Pos Operator Invitation Management"
        ],
        "summary": "Get PosOperator invitation history",
        "description": "This endpoint returns the completed (i.e. already processed) PosOperator invitations for the PosDealer account specified by the <code>accountId</code> header.<br/>The result can optionally be narrowed down by passing the <code>from</code> and <code>to</code> query parameters (ISO-8601 date-time, inclusive).<br/><br/><b>Please note</b> that at most 50 results are returned per request.",
        "operationId": "GetPosOperatorInvitationHistory",
        "parameters": [
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PosOperatorInvitationResponse"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos-operators-invitation/{id}": {
      "get": {
        "tags": [
          "Pos Operator Invitation Management"
        ],
        "summary": "Get a PosOperator invitation",
        "description": "This endpoint returns the company and contact details of a single invitation, identified by its <code>id</code> in the URL, for the PosDealer account specified by the <code>accountId</code> header.<br/><br/><b>Please note</b> that a <code>404</code> is returned if the invitation does not exist or does not belong to the requesting account.",
        "operationId": "GetPosOperatorInvitation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PosOperatorInvitationResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Pos Operator Invitation Management"
        ],
        "summary": "Update a PosOperator invitation",
        "description": "This endpoint updates the company and contact details of an invitation, identified by its <code>id</code> in the URL, for the PosDealer account specified by the <code>accountId</code> header.<br/><b>As this is a <i>PUT</i> and not a <i>PATCH</i> endpoint, existing data is overwritten; make sure to pass all properties in each call.</b><br/><br/><b>Please note:</b><ul><li>A <code>404</code> is returned if the invitation does not exist or does not belong to the requesting account.</li><li>If the contact e-mail address is changed to one that is already used by another invitation, a <code>409</code> is returned.</li></ul>",
        "operationId": "UpdatePosOperatorInvitation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PosOperatorInvitationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PosOperatorInvitationResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Pos Operator Invitation Management"
        ],
        "summary": "Delete a PosOperator invitation",
        "description": "This endpoint removes an invitation, identified by its <code>id</code> in the URL, for the PosDealer account specified by the <code>accountId</code> header.<br/><br/><b>Please note</b> that only pending invitations can be deleted: a <code>409</code> is returned for an already-processed invitation (retained for history), and a <code>404</code> if the invitation does not exist or does not belong to the requesting account.",
        "operationId": "DeletePosOperatorInvitation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos-operators-invitation/{id}/submit": {
      "post": {
        "tags": [
          "Pos Operator Invitation Management"
        ],
        "summary": "Submit a PosOperator invitation",
        "description": "This endpoint submits a previously created invitation, identified by its <code>id</code> in the URL, to fiskaltrust's Portal for the account specified by the <code>accountId</code> header.<br/>The Portal creates the PosOperator's account, contact and connection and sends the invitation e-mail; the record is then stamped with the result and marked completed.<br/><br/><b>Please note:</b><ul><li>The configured access rights of the invitation are used as the connection claims.</li><li>A <code>409</code> is returned if the invitation was already processed (recover it first to re-submit) or the contact e-mail is already in use.</li></ul>",
        "operationId": "SubmitPosOperatorInvitation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": { }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos-operators-invitation/{id}/submit-auto": {
      "post": {
        "tags": [
          "Pos Operator Invitation Management"
        ],
        "summary": "Auto-submit a PosOperator invitation",
        "description": "This endpoint auto-submits a previously created invitation, identified by its <code>id</code> in the URL, to fiskaltrust's Portal for the account specified by the <code>accountId</code> header.<br/>Unlike the standard submit, the PosOperator account is created and connected automatically without requiring the merchant to confirm their e-mail.<br/><br/><b>Please note</b> that auto-invitation only works for new accounts; a <code>409</code>/<code>400</code> is returned if a matching account already exists or the invitation was already processed.",
        "operationId": "SubmitPosOperatorAutoInvitation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": { }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos-operators-invitation/{id}/recover": {
      "post": {
        "tags": [
          "Pos Operator Invitation Management"
        ],
        "summary": "Recover a completed PosOperator invitation",
        "description": "This endpoint resets a completed invitation, identified by its <code>id</code> in the URL, back to pending for the account specified by the <code>accountId</code> header.<br/>Only the completion flag is cleared so the invitation returns to the pending list and can be edited and submitted again; the previous run details (last run, last result and result IDs) are retained as an audit trail.",
        "operationId": "RecoverPosOperatorInvitation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PosOperatorInvitationResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos-operators-invitation/import/csv": {
      "post": {
        "tags": [
          "Pos Operator Invitation Management"
        ],
        "summary": "Bulk import PosOperator invitations from CSV",
        "description": "This endpoint creates multiple PosOperator invitations at once for the PosDealer account specified by the <code>accountId</code> header, by uploading a single semicolon-separated <code>.csv</code> file.<br/>Download the expected template, including the correct column headers, via <code>GET /api/pos-operators-invitation/import/csv/template</code>.<br/><br/><b>Please note:</b><ul><li>The CSV header must exactly match the template; otherwise a <code>400</code> is returned.</li><li>Each row is validated individually; if any row fails validation, the whole import is rejected with a <code>400</code> describing the offending lines.</li><li>Rows whose contact e-mail already has an invitation are skipped and reported in the <code>Skipped</code> result list.</li></ul>",
        "operationId": "ImportPosOperatorInvitationsCsv",
        "parameters": [
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "file"
                ],
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": { }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos-operators-invitation/import/csv/template": {
      "get": {
        "tags": [
          "Pos Operator Invitation Management"
        ],
        "summary": "Download CSV import template",
        "description": "This endpoint returns a semicolon-separated <code>.csv</code> template file containing the correct column headers expected by the bulk invitation import endpoint (<code>POST /api/pos-operators-invitation/import/csv</code>).<br/>Fill in one invitation per row, then upload the completed file to create the invitations.",
        "operationId": "GetPosOperatorInvitationCsvTemplate",
        "parameters": [
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos-operators-invitation/pdf": {
      "post": {
        "tags": [
          "Pos Operator Invitation Management"
        ],
        "summary": "Upload invitation PDF document",
        "description": "This endpoint stores a single <code>.pdf</code> document for the PosDealer account specified by the <code>accountId</code> header.<br/>The stored document is attached to the invitation e-mails sent for this account.<br/><br/><b>Please note</b> that uploading a new document overwrites any previously stored one, and a <code>400</code> is returned if the uploaded file is not a <code>.pdf</code>.",
        "operationId": "UploadPosOperatorInvitationPdf",
        "parameters": [
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "file"
                ],
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": { }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Pos Operator Invitation Management"
        ],
        "summary": "Download invitation PDF document",
        "description": "This endpoint returns the <code>.pdf</code> document currently stored for the PosDealer account specified by the <code>accountId</code> header.<br/><br/><b>Please note</b> that a <code>404</code> is returned if no PDF document has been uploaded for this account.",
        "operationId": "DownloadPosOperatorInvitationPdf",
        "parameters": [
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Pos Operator Invitation Management"
        ],
        "summary": "Delete invitation PDF document",
        "description": "This endpoint removes the <code>.pdf</code> document stored for the PosDealer account specified by the <code>accountId</code> header.<br/><br/><b>Please note</b> that the operation is idempotent &mdash; it succeeds even if no document is currently stored for the account.",
        "operationId": "DeletePosOperatorInvitationPdf",
        "parameters": [
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": { }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/entitlements": {
      "get": {
        "tags": [
          "Produce products based on entitlements"
        ],
        "summary": "List available entitlements",
        "description": "This endpoint lists the active entitlements that are available for the given PosDealer in their respective market.<br/>These entitlements are consumed when rollout plans are executed, and converted into products and subscriptions for conencted PosOperators (i.e. merchants) (for more details, refer to \"Produce a product based on a rollout plan\").<br/><br/><b>Please note:</b><ul><li>Entitlements cannot be obtained via this API. The PosDealer API currently does not support any operations that cause monetary transactions; those should be done via the Portal, after obtaining a volume purchase agreement. Please reach out to our sales team for further information.</li><li>For testing purposes, entitlements can be obtained for free in the Portal's shop in the sandbox, without requiring any payments.</li><li>More details about the buy & resell process can be found <a href=\"https://docs.fiskaltrust.cloud/docs/posdealers/buy-resell/overview\">in our documnetation</a>.</li></ul>",
        "parameters": [
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Entitlement"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/posoperators/{posOperatorId}/produce/queues": {
      "post": {
        "tags": [
          "Produce products based on entitlements"
        ],
        "summary": "Produce a queue product based on a rollout plan",
        "description": "This endpoint executes the specified rollout plan in a PosOperator's (i.e. merchant's) account, consuming entitlements from the PosDealer's account.<br/>Executing a rollout plan will create a specific yearly subscription, e.g. for a carefree bundle. These subscriptions are assigned to a Queue (e.g. for the PosArchive standalone product).<br/>The Queue IDs need to be specified correctly in the body of this request.<br/>Details about the rollout plans can be obtained via the <code>/api/rollout-plans endpoint</code>; the <code>rolloutType</code> property specifies if the target of the plan is either an outlet or a Queue.<br/><br/><b>Please note:</b><ul><li>This endpoint only works with \"move entitlement\"-based rollout plans, i.e. those for which the PosDealer needs to obtain entitlements up-front. The PosDealer API currently does not support any operations that cause monetary transactions; those should be done via the Portal, after obtaining a volume purchase agreement. Please reach out to our sales team for further information.</li><li>For testing purposes, entitlements can be obtained for free in the Portal's shop in the sandbox, without requiring any payments.</li><li>More details about the buy & resell process can be found <a href=\"https://docs.fiskaltrust.cloud/docs/posdealers/buy-resell/overview\">in our documnetation</a>.</li></ul>",
        "parameters": [
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProduceQueueRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProduceResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/posoperators/{posOperatorId}/produce/outlets": {
      "post": {
        "tags": [
          "Produce products based on entitlements"
        ],
        "summary": "Produce an outlet product based on a rollout plan",
        "description": "This endpoint executes the specified rollout plan in a PosOperator's (i.e. merchant's) account, consuming entitlements from the PosDealer's account.<br/>Executing a rollout plan will create a specific yearly subscription, e.g. for a carefree bundle. These subscriptions are assigned to an outlet (e.g. for the carefree bundle).<br/>The outlet numbers need to be specified correctly in the body of this request.<br/>Details about the rollout plans can be obtained via the <code>/api/rollout-plans endpoint</code>; the <code>rolloutType</code> property specifies if the target of the plan is either an outlet or a Queue.<br/><br/><b>Please note:</b><ul><li>This endpoint only works with \"move entitlement\"-based rollout plans, i.e. those for which the PosDealer needs to obtain entitlements up-front. The PosDealer API currently does not support any operations that cause monetary transactions; those should be done via the Portal, after obtaining a volume purchase agreement. Please reach out to our sales team for further information.</li><li>For testing purposes, entitlements can be obtained for free in the Portal's shop in the sandbox, without requiring any payments.</li><li>More details about the buy & resell process can be found <a href=\"https://docs.fiskaltrust.cloud/docs/posdealers/buy-resell/overview\">in our documnetation</a>.</li></ul>",
        "parameters": [
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProduceOutletRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/posoperators/{posOperatorId}/queues": {
      "get": {
        "tags": [
          "Read Middleware configurations"
        ],
        "summary": "List Queues of a PosOperator",
        "description": "This request lists all Queues of the PosOperator (i.e. the merchant) that is specified in the URL by their respective account ID.<br/>Account IDs of connected PosOperators can either be obtained via the <code>/api/posoperators</code> endpoint, or via fiskaltrust's Portal.",
        "parameters": [
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Queue"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/posoperators/{posOperatorId}/queues/{queueId}": {
      "patch": {
        "tags": [
          "Read Middleware configurations"
        ],
        "summary": "Update Queue data (DE only)",
        "description": "This endpoint partially updates the queue data. Information related to cash register notifications can be updated. The endpoint is only available in Germany.",
        "parameters": [
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "queueId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DatabaseQueueDEModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Read Middleware configurations"
        ],
        "summary": "Get queue of a posoperator (DE only)",
        "description": "This endpoint returns data for a specific Queue(DE) of the PosOperator. The endpoint is only available in Germany.",
        "parameters": [
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "queueId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueueDE"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/posoperators/{posOperatorId}/queues/{queueId}/prepare-scu-switch": {
      "post": {
        "tags": [
          "Read Middleware configurations"
        ],
        "summary": "Prepare an SCU switch (DE only)",
        "description": "Performs all backend (\"presetup\") steps to switch a Queue to a new, already-existing SCU/TSE: it adds the SCU to the CashBox (unless addToCashBox=false), connects it to the Queue (a two-step switch when the Queue is already active, otherwise a direct assignment), and rebuilds the configuration. The target SCU must already exist and be assigned to the same outlet. When the Queue is already active, the switch is completed by the POS sending the Daily-Closing, Initiate-SCU-Switch and Finish-SCU-Switch receipts; this endpoint does not remove the old SCU. Available in Germany (DE) only.",
        "parameters": [
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "queueId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PrepareScuSwitchRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrepareScuSwitchResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/posoperators/{posOperatorId}/signature-creation-units": {
      "get": {
        "tags": [
          "Read Middleware configurations"
        ],
        "summary": "List SCUs of a PosOperator (DE only)",
        "description": "Returns the DE Signature Creation Units (TSEs) registered for the PosOperator, with certificate/serial information where available. Optionally filter to a single outlet via the 'outletNumber' query parameter (e.g. the outlet of the queue being switched), which yields only the SCUs eligible to be attached to that queue's CashBox. Available in Germany (DE) only.",
        "parameters": [
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "outletNumber",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SignatureCreationUnitDE"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/posoperators/{posOperatorId}/signature-creation-units/{scuId}": {
      "get": {
        "tags": [
          "Read Middleware configurations"
        ],
        "summary": "Get an SCU of a PosOperator (DE only)",
        "description": "Returns a single DE Signature Creation Unit (TSE) of the PosOperator by its ID, with certificate/serial information where available. Available in Germany (DE) only.",
        "parameters": [
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "scuId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SignatureCreationUnitDE"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/posoperators/{posOperatorId}/cashboxes/{cashBoxId}/signature-creation-units/{scuId}": {
      "put": {
        "tags": [
          "Read Middleware configurations"
        ],
        "summary": "Add an SCU to a CashBox (DE only)",
        "description": "Adds an existing DE SCU to the CashBox (idempotent). The SCU must already exist, belong to the PosOperator and sit on the same outlet as the CashBox. Publishes the configuration afterwards unless rebuild=false. Available in Germany (DE) only. Direct-API only: not reachable through the portal posdealerapiproxy, which forwards GET/POST/PATCH only.",
        "parameters": [
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cashBoxId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "scuId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "rebuild",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": { }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Read Middleware configurations"
        ],
        "summary": "Remove an SCU from a CashBox (DE only)",
        "description": "Removes a DE SCU from the CashBox (idempotent). IMPORTANT: when retiring the previous SCU after a switch, only call this AFTER the POS has sent the Finish-SCU-Switch receipt — removing the source SCU earlier breaks the switch. Publishes the configuration afterwards unless rebuild=false. Available in Germany (DE) only. Direct-API only: not reachable through the portal posdealerapiproxy, which forwards GET/POST/PATCH only.",
        "parameters": [
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cashBoxId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "scuId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "rebuild",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": { }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/posoperators/{posOperatorId}/cashboxes/{cashBoxId}": {
      "get": {
        "tags": [
          "Read Middleware configurations"
        ],
        "summary": "Get a CashBox of a PosOperator",
        "description": "Returns a single CashBox of the PosOperator (i.e. the merchant) as a hybrid payload: the portal-parity dataset read from the fiskaltrust database — the CashBox itself (description, IP address, outlet number, state, timestamp, product type), its Queues (including the German commissioning/purchase/decommissioning dates), one flat market-tagged list of Signature Creation Units (AT/DE/IT/ES/GR/PT), its Helpers, and the Austrian Queue properties (cashbox identification, encryption key, closed-system fields and connected SCUs) — plus the CashBox access token and, verbatim, the full published middleware configuration under <code>configuration</code> (byte-identical to the <code>configuration</code> of the template-execution response, <code>POST /api/posoperators/{posOperatorId}/templates</code>). <code>configuration</code> is <code>null</code> (not an error) when the CashBox has never been rebuilt/published; the database-sourced blocks are returned regardless.",
        "parameters": [
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cashBoxId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CashBoxDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/posoperators/{posOperatorId}/cashboxes/{cashBoxId}/instore-pin": {
      "post": {
        "tags": [
          "Read Middleware configurations"
        ],
        "summary": "Generate an InStore-App pairing PIN for a CashBox",
        "description": "Generates a fresh 4-digit PIN for pairing the fiskaltrust InStore-App with the CashBox. The PIN is issued by the fiskaltrust receipt service, is valid for <b>5 minutes</b> and can be redeemed once in the InStore-App. Pairing hands the CashBox credentials to the app instance that redeems the PIN and <b>invalidates the previous pairing</b> of the CashBox — which is why a <b>ReadWrite</b> claim on the PosOperator connection is required. Returns the PIN as a JSON string, e.g. <code>\"1234\"</code>. The Portal's <i>Rollout CashBoxes</i> success view uses this endpoint to offer InStore-App pairing right after a CashBox was created for a connected PosOperator.",
        "parameters": [
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cashBoxId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/order/{ordernumber}/details": {
      "get": {
        "tags": [
          "Retrieve order details"
        ],
        "summary": "Get Details of an Order",
        "description": "This request returns the details of an order (including its status) that is specified in the URL by its respective ordernumber.<br/>The ordernumber is returned as a result of the Produce a Product <code>/api/posoperators/{{posoperatorid}}/produce/outlets</code> endpoints. The SalesOrderState can have one of the following values: <br/> <li>0: New</li><li>1: Submitted</li><li>2: Failed</li><li>3: Completed</li>",
        "parameters": [
          {
            "name": "ordernumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderStatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/rolloutplans": {
      "get": {
        "tags": [
          "Retrieve rollout plans"
        ],
        "summary": "List available rollout plans",
        "description": "This endpoint lists all available rollout plans that are available for the given PosDealer in their respective market.<br/>The rollout plans returned by this endpoint can be executed to create products and subscriptions for conencted PosOperators (i.e. merchants), based on entitlements that need to be purchased via the Portal first (for more details, refer to <i>Produce a product based on a rollout plan</i>).<br/><br/><b>Please note:</b><ul><li>This endpoint only returns \"move entitlement\"-based rollout plans, i.e. those for which the PosDealer needs to obtain entitlements up-front. The PosDealer API currently does not support any operations that cause monetary transactions; those should be done via the Portal, after obtaining a volume purchase agreement. Please reach out to our sales team for further information.</li><li>For testing purposes, entitlements can be obtained for free in the Portal's shop in the sandbox, without requiring any payments.</li><li>More details about the buy & resell process can be found <a href=\"https://docs.fiskaltrust.cloud/docs/posdealers/buy-resell/overview\">in our documnetation</a>.</li></ul>",
        "parameters": [
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "skipAllowList",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RolloutPlan"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/rolloutplans/{id}": {
      "get": {
        "tags": [
          "Retrieve rollout plans"
        ],
        "summary": "Gets rollout plan for specified market and id.",
        "description": "",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RolloutPlan"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/rolloutplans/number/{number}": {
      "get": {
        "tags": [
          "Retrieve rollout plans"
        ],
        "summary": "Gets rollout plan for specified market and rolout number.",
        "description": "",
        "parameters": [
          {
            "name": "number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RolloutPlan"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/rollouts/cashboxtemplates": {
      "get": {
        "tags": [
          "Retrieve rollout plans"
        ],
        "summary": "List cashbox rollout templates",
        "description": "Lists the cashbox templates available to the PosDealer for technical rollout in their market, applying the same visibility rules as the Portal: own templates, templates made public for PosDealers (0x40), fully public templates (0x80), and templates shared with the dealer (0x30) by a connected PosCreator (free, non-deactivated templates only). Only actual templates are listed (the cashbox template product number and the legacy template number 201); all other product numbers (cloud, move/entitlement, etc.) are excluded. Returns the template fields available to non-admins, including the full configuration (Content) for every accessible template — access to a template implies access to its configuration.",
        "parameters": [
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RolloutCashBoxTemplate"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/rollouts/cashboxtemplates/{cashBoxTemplateId}": {
      "get": {
        "tags": [
          "Retrieve rollout plans"
        ],
        "summary": "Get a cashbox rollout template",
        "description": "Returns a single cashbox rollout template by id, including its full configuration (Content), if the PosDealer may roll it out (same visibility rules as the list endpoint). Used to resolve the template configuration when creating a cashbox via the documented POST /api/posoperators/{posOperatorId}/templates endpoint.",
        "parameters": [
          {
            "name": "cashBoxTemplateId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RolloutCashBoxTemplate"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/version": {
      "get": {
        "tags": [
          "Service metadata"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/posoperators/{posOperatorId}/outlets/{outletNumber}/notification-3rd-party-registers": {
      "get": {
        "tags": [
          "Third Party Cash Register Operations"
        ],
        "summary": "Lists all 3rd party cash registers of the requested pos operator",
        "parameters": [
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "outletNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ThirdPartyCashRegisterInfoDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Third Party Cash Register Operations"
        ],
        "summary": "Adds 3rd party cash register of a pos Operator.",
        "parameters": [
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "outletNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ThirdPartyCashRegisterModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/posoperators/{posOperatorId}/outlets/{outletNumber}/notification-3rd-party-registers/{id}": {
      "delete": {
        "tags": [
          "Third Party Cash Register Operations"
        ],
        "summary": "Deletes 3rd party cash register of the pos operator.",
        "parameters": [
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "outletNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    },
    "/api/posoperators/{posOperatorId}/outlets/{outletNumber}/notification-3rd-party-registers/{cashRegisterId}": {
      "patch": {
        "tags": [
          "Third Party Cash Register Operations"
        ],
        "summary": "Updates 3rd party cash register of the pos operator.",
        "parameters": [
          {
            "name": "posOperatorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "outletNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "cashRegisterId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accessToken",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ThirdPartyCashRegisterModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomError"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AccessRights": {
        "enum": [
          "Undefined",
          "None",
          "Read",
          "ReadWrite",
          "Full"
        ],
        "type": "string"
      },
      "Account": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "line1": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "eMailAddress": {
            "type": "string",
            "nullable": true
          },
          "identifiers": {
            "$ref": "#/components/schemas/CompanyIdentifiers"
          }
        },
        "additionalProperties": false
      },
      "BusinessType": {
        "enum": [
          "None",
          "DealerPackage",
          "MoveEntitlement"
        ],
        "type": "string"
      },
      "CashBox": {
        "type": "object",
        "properties": {
          "cashBoxId": {
            "type": "string",
            "format": "uuid"
          },
          "accessToken": {
            "type": "string",
            "nullable": true
          },
          "configuration": {
            "$ref": "#/components/schemas/ftCashBoxConfiguration"
          }
        },
        "additionalProperties": false
      },
      "CashBoxDetails": {
        "type": "object",
        "properties": {
          "cashBoxId": {
            "type": "string",
            "format": "uuid"
          },
          "accessToken": {
            "type": "string",
            "nullable": true
          },
          "cashBox": {
            "$ref": "#/components/schemas/CashBoxDetailsCashBox"
          },
          "queues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CashBoxDetailsQueue"
            },
            "nullable": true
          },
          "signatureCreationUnits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CashBoxDetailsSignatureCreationUnit"
            },
            "nullable": true
          },
          "helpers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CashBoxDetailsHelper"
            },
            "nullable": true
          },
          "queueATProperties": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CashBoxDetailsQueueATProperties"
            },
            "nullable": true
          },
          "configuration": {
            "$ref": "#/components/schemas/ftCashBoxConfiguration"
          }
        },
        "additionalProperties": false,
        "description": "Response contract of GET /api/posoperators/{posOperatorId}/cashboxes/{cashBoxId} — a hybrid of\nthe portal-parity CashBox dataset read from the fiskaltrust database (descriptions, outlet\nnumbers, cashbox row fields, QueueDE dates, AT queue properties — none of which are part of the\npublished configuration) and, verbatim, the published middleware configuration from the\nconfiguration service. Serialized camelCase; fiskaltrust.Api.PosDealer.DTOs.CashBoxDetails.Configuration keeps the configuration\nservice's exact JSON and is null when the CashBox was never rebuilt/published."
      },
      "CashBoxDetailsCashBox": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "nullable": true
          },
          "ipAddress": {
            "type": "string",
            "nullable": true
          },
          "outletNumber": {
            "type": "integer",
            "format": "int64"
          },
          "state": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "timeStamp": {
            "type": "integer",
            "format": "int64"
          },
          "productType": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "CashBoxDetailsHelper": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "packageName": {
            "type": "string",
            "nullable": true
          },
          "packageVersion": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "description": "Parsed URL array (string[]), or the raw string when the stored value is not a JSON array.",
            "nullable": true
          },
          "outletNumber": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CashBoxDetailsQueue": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "countryCode": {
            "type": "string",
            "nullable": true
          },
          "packageName": {
            "type": "string",
            "nullable": true
          },
          "packageVersion": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "description": "The queue URLs. The database stores them as a JSON array encoded in a string; the value is\nthat parsed array (string[]), or the raw string when the stored value is not a JSON array.",
            "nullable": true
          },
          "outletNumber": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "timeout": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "commissioningDate": {
            "type": "string",
            "description": "DE only (QueueDE); null for queues of other markets.",
            "format": "date-time",
            "nullable": true
          },
          "purchaseDate": {
            "type": "string",
            "description": "DE only (QueueDE); null for queues of other markets.",
            "format": "date-time",
            "nullable": true
          },
          "decommissioningDate": {
            "type": "string",
            "description": "DE only (QueueDE); null for queues of other markets.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CashBoxDetailsQueueATProperties": {
        "type": "object",
        "properties": {
          "ftQueueId": {
            "type": "string",
            "format": "uuid"
          },
          "cashBoxIdentification": {
            "type": "string",
            "nullable": true
          },
          "encryptionKeyBase64": {
            "type": "string",
            "description": "The raw AES key (base64) — without the checksum the Portal appends for display.",
            "nullable": true
          },
          "closedSystemKind": {
            "type": "string",
            "nullable": true
          },
          "closedSystemValue": {
            "type": "string",
            "nullable": true
          },
          "scus": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CashBoxDetailsQueueATScu"
            },
            "description": "The AT SCUs connected to this Queue (QueueATSignaturCreationUnitAT).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The RKSV properties of an Austrian Queue (QueueAT), as the Portal's cashbox details show them."
      },
      "CashBoxDetailsQueueATScu": {
        "type": "object",
        "properties": {
          "url": {
            "description": "Parsed URL array (string[]), or the raw string when the stored value is not a JSON array.",
            "nullable": true
          },
          "mode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CashBoxDetailsSignatureCreationUnit": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "market": {
            "type": "string",
            "description": "The SCU's market: AT, DE, IT, ES, GR or PT.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "packageName": {
            "type": "string",
            "nullable": true
          },
          "packageVersion": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "description": "Parsed URL array (string[]), or the raw string when the stored value is not a JSON array.",
            "nullable": true
          },
          "outletNumber": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "mode": {
            "type": "integer",
            "description": "AT only (RKSV signing mode); null for every other market.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Company": {
        "required": [
          "addressLine1",
          "city",
          "country",
          "email",
          "identifiers",
          "name",
          "postalCode"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 160,
            "minLength": 1,
            "type": "string",
            "description": "The name of the account that will be created. Must be equal to the legal name of the company."
          },
          "email": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "The E-Mail address that should be associated with the account. This might be a billing address or a general contact address."
          },
          "addressLine1": {
            "maxLength": 250,
            "minLength": 1,
            "type": "string",
            "description": "The address of the company (street, house number, etc.)."
          },
          "addressLine2": {
            "maxLength": 250,
            "type": "string",
            "description": "The second address line of the company (e.g. \"c/o\" or \"floor\").",
            "nullable": true
          },
          "postalCode": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string",
            "description": "The postal code of the company (may consist of numbers and characters in some countries)."
          },
          "city": {
            "maxLength": 80,
            "minLength": 1,
            "type": "string",
            "description": "The city of the company."
          },
          "country": {
            "maxLength": 80,
            "minLength": 1,
            "type": "string",
            "description": "The country of the company."
          },
          "website": {
            "maxLength": 200,
            "type": "string",
            "description": "The website of the company, if existing.",
            "nullable": true
          },
          "phoneNumber": {
            "maxLength": 50,
            "type": "string",
            "description": "The phone number of the company, if existing.",
            "nullable": true
          },
          "identifiers": {
            "$ref": "#/components/schemas/CompanyIdentifiers"
          }
        },
        "additionalProperties": false
      },
      "CompanyAddress": {
        "required": [
          "city",
          "houseNumber",
          "postalCode",
          "street"
        ],
        "type": "object",
        "properties": {
          "street": {
            "minLength": 1,
            "type": "string"
          },
          "city": {
            "minLength": 1,
            "type": "string"
          },
          "postalCode": {
            "type": "integer",
            "format": "int32"
          },
          "houseNumber": {
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "CompanyIdentifiers": {
        "type": "object",
        "properties": {
          "vatId": {
            "type": "string",
            "description": "The EU-standardized VAT number of the company. Available in all markets.",
            "nullable": true
          },
          "taxId": {
            "type": "string",
            "description": "The local tax number of the company. Available in all markets.",
            "nullable": true
          },
          "fibuNr": {
            "type": "string",
            "description": "The FIBU number of the company (Firmenbuchnummer). Available in Austria.",
            "nullable": true
          },
          "gln": {
            "type": "string",
            "description": "The Global Location Number of the company. Available in Austria and France.",
            "nullable": true
          },
          "siren": {
            "type": "string",
            "description": "The French SIREN number of the company. Available in France.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ConfigComponent": {
        "enum": [
          "None",
          "Outlet",
          "CashBox",
          "Queue",
          "Scu"
        ],
        "type": "string"
      },
      "Contact": {
        "required": [
          "email",
          "firstName",
          "lastName"
        ],
        "type": "object",
        "properties": {
          "firstName": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "The first name of the primary contact person."
          },
          "lastName": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "The last name of the primary contact person."
          },
          "email": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "The E-Mail address of the primary contact person."
          },
          "title": {
            "type": "string",
            "description": "The title of the primary contact person, e.g. Dr, etc.",
            "nullable": true
          },
          "suffix": {
            "maxLength": 10,
            "type": "string",
            "description": "The title suffix of the primary contact person, e.g. MSc, BSc, etc.",
            "nullable": true
          },
          "phone": {
            "maxLength": 50,
            "type": "string",
            "description": "The phone number of the primary contact person.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CustomError": {
        "type": "object",
        "properties": {
          "Message": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DatabaseQueueDEModel": {
        "type": "object",
        "properties": {
          "purchaseDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "commissioningDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Entitlement": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "totalTerms": {
            "type": "number",
            "format": "double"
          },
          "remainingTerms": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "HttpValidationProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          },
          "errors": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "InvitationCompany": {
        "required": [
          "addressLine1",
          "city",
          "country",
          "email",
          "name",
          "postalCode"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 160,
            "minLength": 1,
            "type": "string"
          },
          "email": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "addressLine1": {
            "maxLength": 250,
            "minLength": 1,
            "type": "string"
          },
          "addressLine2": {
            "maxLength": 250,
            "type": "string",
            "nullable": true
          },
          "postalCode": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string"
          },
          "city": {
            "maxLength": 80,
            "minLength": 1,
            "type": "string"
          },
          "country": {
            "maxLength": 80,
            "minLength": 1,
            "type": "string"
          },
          "website": {
            "maxLength": 200,
            "type": "string",
            "nullable": true
          },
          "phone": {
            "maxLength": 50,
            "type": "string",
            "nullable": true
          },
          "identifiers": {
            "$ref": "#/components/schemas/InvitationCompanyIdentifiers"
          }
        },
        "additionalProperties": false
      },
      "InvitationCompanyIdentifiers": {
        "type": "object",
        "properties": {
          "vatId": {
            "type": "string",
            "nullable": true
          },
          "taxId": {
            "type": "string",
            "nullable": true
          },
          "fibuNr": {
            "type": "string",
            "nullable": true
          },
          "gln": {
            "type": "string",
            "nullable": true
          },
          "siren": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InvitationContact": {
        "required": [
          "email",
          "firstName",
          "lastName"
        ],
        "type": "object",
        "properties": {
          "firstName": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string"
          },
          "lastName": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string"
          },
          "email": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "suffix": {
            "maxLength": 10,
            "type": "string",
            "nullable": true
          },
          "phone": {
            "maxLength": 50,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InvitationDetails": {
        "type": "object",
        "properties": {
          "pdfAttachment": {
            "type": "string",
            "description": "The PDF file that should be attached to the invitation E-Mail.",
            "format": "byte",
            "nullable": true
          },
          "additionalText": {
            "type": "string",
            "description": "The text that should be added to the invitation E-Mail. This can be used to customize the invitation the PosOperator receives.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Outlet": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "locationId": {
            "type": "string",
            "nullable": true
          },
          "outletNumber": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "contactName": {
            "type": "string",
            "nullable": true
          },
          "telephone": {
            "type": "string",
            "nullable": true
          },
          "fax": {
            "type": "string",
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "county": {
            "type": "string",
            "nullable": true
          },
          "stateOrProvince": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "OutletCreate": {
        "required": [
          "address",
          "city",
          "country",
          "name",
          "postalCode"
        ],
        "type": "object",
        "properties": {
          "locationId": {
            "type": "string",
            "description": "The location ID can be used to e.g. track merchant-internal IDs of locations, and is also used to store the SIRET number for French merchants.",
            "nullable": true
          },
          "outletNumber": {
            "maximum": 2147483647,
            "minimum": 3,
            "type": "integer",
            "description": "The unique numeric identifier of an outlet. If not included in the request, the next available number will be assigned.",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name of the outlet, e.g. \"Main Store\" or \"Outlet 1\"."
          },
          "address": {
            "maxLength": 250,
            "minLength": 1,
            "type": "string",
            "description": "The address of the outlet (street, house number, etc.)."
          },
          "contactName": {
            "maxLength": 150,
            "type": "string",
            "description": "The name of the contact person at the outlet.",
            "nullable": true
          },
          "telephone": {
            "maxLength": 50,
            "type": "string",
            "description": "The telephone number of the outlet.",
            "nullable": true
          },
          "fax": {
            "maxLength": 50,
            "type": "string",
            "description": "The fax number of the outlet.",
            "nullable": true
          },
          "postalCode": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string",
            "description": "The postal code of the outlet (may consist of numbers and characters in some countries)."
          },
          "city": {
            "maxLength": 80,
            "minLength": 1,
            "type": "string",
            "description": "The city of the outlet."
          },
          "county": {
            "maxLength": 50,
            "type": "string",
            "description": "The county of the outlet, if applicable.",
            "nullable": true
          },
          "stateOrProvince": {
            "maxLength": 50,
            "type": "string",
            "description": "The state or province of the outlet, if applicable.",
            "nullable": true
          },
          "country": {
            "maxLength": 2,
            "minLength": 2,
            "type": "string",
            "description": "The country of the outlet in ISO 3166-1 alpha-2 format (e.g. \"IT\" or \"AT\")."
          }
        },
        "additionalProperties": false
      },
      "OutletUpdate": {
        "required": [
          "address",
          "city",
          "country",
          "name",
          "postalCode"
        ],
        "type": "object",
        "properties": {
          "locationId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name of the outlet, e.g. \"Main Store\" or \"Outlet 1\"."
          },
          "address": {
            "maxLength": 250,
            "minLength": 1,
            "type": "string",
            "description": "The address of the outlet (street, house number, etc.)."
          },
          "contactName": {
            "maxLength": 150,
            "type": "string",
            "description": "The name of the contact person at the outlet.",
            "nullable": true
          },
          "telephone": {
            "maxLength": 50,
            "type": "string",
            "description": "The telephone number of the outlet.",
            "nullable": true
          },
          "fax": {
            "maxLength": 50,
            "type": "string",
            "description": "The fax number of the outlet.",
            "nullable": true
          },
          "postalCode": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string",
            "description": "The postal code of the outlet (may consist of numbers and characters in some countries)."
          },
          "city": {
            "maxLength": 80,
            "minLength": 1,
            "type": "string",
            "description": "The city of the outlet."
          },
          "county": {
            "maxLength": 50,
            "type": "string",
            "description": "The county of the outlet, if applicable.",
            "nullable": true
          },
          "stateOrProvince": {
            "maxLength": 50,
            "type": "string",
            "description": "The state or province of the outlet, if applicable.",
            "nullable": true
          },
          "country": {
            "maxLength": 2,
            "minLength": 2,
            "type": "string",
            "description": "The country of the outlet in ISO 3166-1 alpha-2 format (e.g. \"IT\" or \"AT\")."
          }
        },
        "additionalProperties": false
      },
      "PackageConfiguration": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "package": {
            "type": "string",
            "nullable": true
          },
          "version": {
            "type": "string",
            "nullable": true
          },
          "configuration": {
            "type": "object",
            "additionalProperties": {
              "nullable": true
            },
            "nullable": true
          },
          "url": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PosOperatorInvitation": {
        "required": [
          "accessRights",
          "company",
          "primaryContact"
        ],
        "type": "object",
        "properties": {
          "company": {
            "$ref": "#/components/schemas/Company"
          },
          "primaryContact": {
            "$ref": "#/components/schemas/Contact"
          },
          "accessRights": {
            "$ref": "#/components/schemas/AccessRights"
          },
          "details": {
            "$ref": "#/components/schemas/InvitationDetails"
          }
        },
        "additionalProperties": false
      },
      "PosOperatorInvitationRequest": {
        "required": [
          "company",
          "contact"
        ],
        "type": "object",
        "properties": {
          "company": {
            "$ref": "#/components/schemas/InvitationCompany"
          },
          "contact": {
            "$ref": "#/components/schemas/InvitationContact"
          },
          "accessRights": {
            "$ref": "#/components/schemas/AccessRights"
          }
        },
        "additionalProperties": false
      },
      "PosOperatorInvitationResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "company": {
            "$ref": "#/components/schemas/InvitationCompany"
          },
          "contact": {
            "$ref": "#/components/schemas/InvitationContact"
          },
          "accessRights": {
            "$ref": "#/components/schemas/AccessRights"
          },
          "done": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "resultContactId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "resultAccountId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "success": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "PrepareScuSwitchRequest": {
        "type": "object",
        "properties": {
          "targetScuId": {
            "type": "string",
            "description": "The already-existing SCU (the new TSE) that the Queue should switch to.",
            "format": "uuid"
          },
          "addToCashBox": {
            "type": "boolean",
            "description": "Also add the target SCU to the CashBox before linking it to the Queue. Default `true`.\nSet to `false` when the SCU is already a member of the CashBox (e.g. it was added separately)."
          },
          "rebuild": {
            "type": "boolean",
            "description": "Publish the CashBox configuration (Helipad rebuild) after linking. Default `true`.\nWhen `false`, the configuration must be rebuilt separately before the switch takes effect."
          },
          "triggerCloudRestart": {
            "type": "boolean",
            "description": "If `true`, ask a cloud-hosted CashBox to reload its configuration immediately (empty echo).\nFor locally hosted middleware this has no effect — restarting it is a local/POS action.\nBest-effort: a failure here does not fail the switch. Default `false`."
          }
        },
        "additionalProperties": false,
        "description": "Request body for the DE SCU/TSE switch \"presetup\" endpoint.\nUses an \"attach existing\" model: the target SCU must already exist (created/provisioned via\nthe Portal or a rollout) and be assigned to the same outlet as the Queue's CashBox."
      },
      "PrepareScuSwitchResponse": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "nullable": true
          },
          "scenario": {
            "type": "string",
            "description": "`NotYetActive` when the Queue has never been started (the new SCU is assigned directly),\n            or `ActiveSwitch` when a two-step switch was prepared and the POS must finish it.",
            "nullable": true
          },
          "queueId": {
            "type": "string",
            "format": "uuid"
          },
          "cashBoxId": {
            "type": "string",
            "format": "uuid"
          },
          "targetScuId": {
            "type": "string",
            "format": "uuid"
          },
          "sourceScuId": {
            "type": "string",
            "description": "The previously connected SCU. Only populated for an `ActiveSwitch`.",
            "format": "uuid",
            "nullable": true
          },
          "addedToCashBox": {
            "type": "boolean"
          },
          "rebuilt": {
            "type": "boolean"
          },
          "cloudRestartTriggered": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "description": "Result of preparing a DE SCU/TSE switch. Describes which presetup steps were performed.\nThe switch itself is completed by the POS sending the Daily-Closing, Initiate-SCU-Switch and\nFinish-SCU-Switch receipts (only relevant when fiskaltrust.Api.PosDealer.DTOs.PrepareScuSwitchResponse.Scenario is `ActiveSwitch`)."
      },
      "ProduceOutletRequest": {
        "type": "object",
        "properties": {
          "rolloutPlanNumber": {
            "type": "string",
            "description": "The rollout plan number, e.g. \"4445-12345\"",
            "nullable": true
          },
          "outletNumbers": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The list of outlet numbers the rollout plan will be applied to. An entitlement will be consumed for each Queue.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProduceQueueRequest": {
        "type": "object",
        "properties": {
          "rolloutPlanNumber": {
            "type": "string",
            "description": "The rollout plan number, e.g. \"4445-12345\"",
            "nullable": true
          },
          "queueIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The list of Queue IDs the rollout plan will be applied to. An entitlement will be consumed for each Queue.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProduceResponse": {
        "type": "object",
        "properties": {
          "orderNumber": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProductInfo": {
        "type": "object",
        "properties": {
          "number": {
            "type": "string",
            "nullable": true
          },
          "cashBoxTemplateId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Queue": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "cashBoxId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "outletNumber": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "packageName": {
            "type": "string",
            "nullable": true
          },
          "packageVersion": {
            "type": "string",
            "nullable": true
          },
          "startMoment": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "stopMoment": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "QueueDE": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "cashBoxId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "outletNumber": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "packageName": {
            "type": "string",
            "nullable": true
          },
          "packageVersion": {
            "type": "string",
            "nullable": true
          },
          "startMoment": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "stopMoment": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "commissioningDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "purchaseDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RolloutCashBoxTemplate": {
        "type": "object",
        "properties": {
          "cashBoxTemplateId": {
            "type": "string",
            "format": "uuid"
          },
          "accountId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "content": {
            "type": "string",
            "nullable": true
          },
          "imageUrl": {
            "type": "string",
            "nullable": true
          },
          "linkUrl": {
            "type": "string",
            "nullable": true
          },
          "mode": {
            "type": "integer",
            "format": "int32"
          },
          "productNumber": {
            "type": "string",
            "nullable": true
          },
          "cashBoxType": {
            "type": "integer",
            "description": "The cashbox type this template produces: 0x20 for a (hosted) CloudCashBox, 0x00 for a\nLocalCashBox. Derived from the template config (Azure cloud packages indicate a CloudCashBox).",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "A cashbox rollout template as exposed to a (non-admin) PosDealer. Mirrors the fields the Portal\nreturns to non-admins (see CashBoxTemplateDto.ToDto): pricing/entitlement fields are omitted. The\nfull fiskaltrust.Api.PosDealer.DTOs.RolloutCashBoxTemplate.Content is returned for every accessible template (access to a template implies\naccess to its configuration); component counts are left to the consumer to derive from\nfiskaltrust.Api.PosDealer.DTOs.RolloutCashBoxTemplate.Content, and fiskaltrust.Api.PosDealer.DTOs.RolloutCashBoxTemplate.CashBoxType is derived here from the config."
      },
      "RolloutPlan": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "includedBusinessFeatures": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "includesTemplate": {
            "type": "boolean"
          },
          "preview": {
            "type": "boolean"
          },
          "imageUrl": {
            "type": "string",
            "nullable": true
          },
          "acountId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "businessType": {
            "$ref": "#/components/schemas/BusinessType"
          },
          "rolloutType": {
            "$ref": "#/components/schemas/ConfigComponent"
          },
          "includedProducts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductInfo"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SalesOrderStatusResponse": {
        "type": "object",
        "properties": {
          "salesorderId": {
            "type": "string",
            "format": "uuid"
          },
          "salesOrderNumber": {
            "type": "string",
            "nullable": true
          },
          "salesOrderState": {
            "type": "integer",
            "format": "int32"
          },
          "subscriptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Subscription"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SignatureCreationUnitDE": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "outletNumber": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "packageName": {
            "type": "string",
            "nullable": true
          },
          "packageVersion": {
            "type": "string",
            "nullable": true
          },
          "isHidden": {
            "type": "boolean"
          },
          "serialNumber": {
            "type": "string",
            "nullable": true
          },
          "certificationId": {
            "type": "string",
            "nullable": true
          },
          "certificateExpirationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "isCertificateExpired": {
            "type": "boolean"
          },
          "tseState": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "A DE Signature Creation Unit (TSE) registered for a PosOperator. Used to choose a target SCU\nwhen preparing an SCU switch (see the prepare-scu-switch endpoint)."
      },
      "Subscription": {
        "type": "object",
        "properties": {
          "salesOrderDetailId": {
            "type": "string",
            "format": "uuid"
          },
          "operatorId": {
            "type": "string",
            "format": "uuid"
          },
          "outletnumber": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "relatedCashboxID": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "relatedCashboxAccessToken": {
            "type": "string",
            "nullable": true
          },
          "relatedQueueID": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "relatedSCUID": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ThirdPartyCashRegisterDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the third party cash register",
            "format": "uuid"
          },
          "outletId": {
            "type": "string",
            "format": "uuid"
          },
          "software": {
            "type": "string",
            "nullable": true
          },
          "softwareVersion": {
            "type": "string",
            "nullable": true
          },
          "serialNumber": {
            "type": "string",
            "nullable": true
          },
          "manufacturer": {
            "type": "string",
            "nullable": true
          },
          "model": {
            "type": "string",
            "nullable": true
          },
          "tseSerialNumber": {
            "type": "string",
            "nullable": true
          },
          "tseCommissioningDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "purchaseDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "commissioningDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "tseExpiryDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "tseBSI": {
            "type": "string",
            "nullable": true
          },
          "lastUpdate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ThirdPartyCashRegisterInfoDto": {
        "type": "object",
        "properties": {
          "outletId": {
            "type": "string",
            "format": "uuid"
          },
          "outletName": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/CompanyAddress"
          },
          "lastUpdate": {
            "type": "string",
            "format": "date-time"
          },
          "cashRegisters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ThirdPartyCashRegisterDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ThirdPartyCashRegisterModel": {
        "required": [
          "commissioningDate",
          "manufacturer",
          "model",
          "purchaseDate",
          "serialNumber",
          "software",
          "softwareVersion",
          "tseBSI",
          "tseCommissioningDate",
          "tseExpiryDate",
          "tseSerialNumber"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "software": {
            "minLength": 1,
            "type": "string"
          },
          "softwareVersion": {
            "minLength": 1,
            "type": "string"
          },
          "serialNumber": {
            "minLength": 1,
            "type": "string"
          },
          "manufacturer": {
            "minLength": 1,
            "type": "string"
          },
          "model": {
            "minLength": 1,
            "type": "string"
          },
          "tseSerialNumber": {
            "minLength": 1,
            "type": "string"
          },
          "tseCommissioningDate": {
            "type": "string",
            "format": "date-time"
          },
          "purchaseDate": {
            "type": "string",
            "format": "date-time"
          },
          "commissioningDate": {
            "type": "string",
            "format": "date-time"
          },
          "tseExpiryDate": {
            "type": "string",
            "format": "date-time"
          },
          "tseBSI": {
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "UpdateCompanyAddress": {
        "type": "object",
        "properties": {
          "street": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "postalCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "houseNumber": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdateCompanyMasterDataSummary": {
        "type": "object",
        "properties": {
          "taxNumber": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/UpdateCompanyAddress"
          }
        },
        "additionalProperties": false
      },
      "ftCashBoxConfiguration": {
        "type": "object",
        "properties": {
          "helpers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PackageConfiguration"
            },
            "nullable": true
          },
          "ftCashBoxId": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "ftSignaturCreationDevices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PackageConfiguration"
            },
            "nullable": true
          },
          "ftQueues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PackageConfiguration"
            },
            "nullable": true
          },
          "timeStamp": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "tags": [
    {
      "name": "Create and manage Outlets"
    },
    {
      "name": "Create CashBoxes"
    },
    {
      "name": "Invite and manage PosOperators"
    },
    {
      "name": "Pos Operator Invitation Management"
    },
    {
      "name": "Produce products based on entitlements"
    },
    {
      "name": "Read Middleware configurations"
    },
    {
      "name": "Retrieve order details"
    },
    {
      "name": "Retrieve rollout plans"
    },
    {
      "name": "Service metadata"
    },
    {
      "name": "Third Party Cash Register Operations"
    }
  ]
}