{
  "openapi": "3.0.1",
  "info": {
    "title": "eKasa Spec",
    "description": "# Overview\n\n## Objective\n\nThe purpose of this document is to provide POS with a single API to communicate with PPEKK.\n\n## Glossary\n\n|Term|Description|\n|---|---|\n|POS|Point of Sale. This is the cash register, AKA Sale system. This term may refer to the hardware or the software of the POS.|\n|PPEKK|POS|\n|eKasa|Point of Interaction. This is the eKasa server.|\n\n## General Requirements and Limitations\n\n1. The eKasa must be able to listen to HTTP request (i.e., the eKasa is the server).\n2. The POS is the client. It sends the request to the eKasa. The eKasa gets the response.\n3. The request/response protocol between the POS and the eKasa will be based on HTTP.\n4. The HTTP body will be in JSON format. This document will focus on the JSON messages that are sent in the HTTP body.\n\n## Communication PPEKK to CHDU\n\nPPEKK and CHDU form one unit, the CHDU is connected directly to RS232\nport of the printer therefore all print documents must pass through the\nCHDU device where they are saved. ECR/POS runs PPEKK as a system\nservice and this service listens for HTTP requests of ECR/POS software.\nPPEKK then translates these requests to serial communication of CHDU.\n\n## Uploading data using GUI\n\nOn Android devices, starting with OS version 5.1, you can upload merchant data using application UI:\n\n1. Put authentication and identification data into public Download directory. Data must be named `ekasa_auth_data.xml` and `ekasa_ident_data.xml` respectively.\n2. In eKasa GUI, tap on the \"Nahrať dáta do eKasa\" in the side menu and then press the \"Načítať údaje\" button.\n3. If the files were loaded, they must be unlocked by entering their password.\n4. If the password was correct, successful activation message appears and the eKasa is ready to be used.\n\n\n## Consistency check mechanism\n\nEKasa implementation holds all data on CHDU and it performs the\nconsistency check process during startup and while it is running. When\nCHDU data are inconsistent (e.g., CHDU is missing of eKasa cannot read\nthe certificate) eKasa does not allow any clients HTTP requests.\n\n## External system interface\n\nExternal systems, e.g. POS/ECR, can communicate with eKasa implementation using the\nsame HTTP protocol.\n\n# eKasa Protocol\n\nBy default, eKasa runs on port `13083` using plain HTTP protocol.\n\n## First request\n\nIf the eKasa runs on the same device as the POS app, it is recommended to check if the eKasa server is running.\n\nTo check if the server is running, it is recommended to try opening a network socket.\n\n### Examples for Android OS:\n\nChecking that the server is reachable:\n```\ntry {\n    Socket socket = new Socket(\"127.0.0.1\", 13083);\n    socket.close();\n} catch (IOException e) {\n    return false; // not reachable\n}\nreturn true; // reachable\n```\n\nOn Android API <= 22 you can check that the app itself is running:\n\n```\nfinal List<ActivityManager.RunningAppProcessInfo> procInfos = activityManager.getRunningAppProcesses();\nif (procInfos != null) {\n    for (final ActivityManager.RunningAppProcessInfo processInfo : procInfos) {\n        if (processInfo.processName.equals(eKasaPackageName)) {\n            return true;\n        }\n    }\n}\nreturn false;\n```\n\nIf the app is not running, start it by sending the launch intent:\n\n```\nIntent startIntent = activity.getPackageManager().getLaunchIntentForPackage(eKasaPackageName);\nstartIntent.putExtra(\"HIDE_AFTER_INIT\", true);\nactivity.startActivity();\n```\n\nWhen the app starts, it will hide automatically.\nWhen starting the app on older devices (Android 4), the user must minimize the app\nby pressing the hide button.\n\n## Mandatory HTTP Request Headers\n\n```\nContent-Type: application/json\nContent-Length: 454\nAccept-Charset: utf-8\n```\n\n## HTTP Request Example\n\n```\nPOST / http://192.168.0.100:13083/api/document/store http/1.1\nContent-Type: application/json\nContent-Length: 454\nAccept-Charset: utf-8\n{    \"amount\":247.23,\n     \"documentEntries\" : [{\n…\n}]\n....\n} --> END POST\n```\n\n## Mandatory HTTP Response Headers\n\n```\nContent-Type:application/json\nAccept-Charset: utf-8\nContent-Length: <the length of the JSON response string>\n```\n\n## HTTP Response Example\n\n```\nHTTP/1.1 200 OK http://192.168.0.100:13083/api/document/store\nContent-Type: application/json;charset=UTF-8\nContent-Length: 1901\n{    \"document\" : {\n            …\n            }\n...\n   \"resultCode\": 0\n} <-- END HTTP\n```\n\n### Default data type format in responses\n\n- All `date-time` objects use format `dd.MM.yyyy HH:mm:ss` by default.\n- Each response contains a `resultCode` object with the operation result. For more info see the [Result codes] section.\n## Result codes\n\nThe `resultCode` is the primary indicator of the outcome of an API call. Always check the `resultCode` to determine the type and validity of the response. Result code `0` means a successful operation, the list of possible codes is shown below.\n\n|Result|Result code|Result code description|\n|---|---|---|\n|0|OK|The request was successfully completed|\n|100|PRINTER_NOT_READY|Printer is not ready to print<br>The reason might be technical failure or overheat problem|\n|101|PRINT_FAILED|Printer is unable to print the given data|\n|102|PRINTER_NOT_CONNECTED|Printer isn't connected or turned on|\n|103|COMMUNICATION_ERROR|Cannot communicate with the printer|\n|104|PRINTER_NOT_SET|No printer is defined|\n|105|NO_PAPER|The printer has no paper|\n|106|PARTIAL_PRINT|Only part of the data have been printed.<br>Please, see `PartialPrintInfo` for the reason. Then you can continue printing from specified offset.|\n|200|CHDU_NOT_CONNECTED|CHDU has been disconnected|\n|201|CHDU_IO_ERROR|Cannot communicate with CHDU device|\n|202|CHDU_WRITE_LIMIT|Reached maximum written size|\n|203|CHDU_RECORD_SIZE_LIMIT|Record exceeds max allowed size|\n|300|BUSY|The app processes another request<br>Try the request again later.|\n|400|MERCHANT_WRONG_FORMAT|Merchant data contains wrongly formatted identification data fields<br>See the `errorMessage` field in the response object for more info.|\n|401|MERCHANT_DIFFERENT_DIC|The CHDU has been initialized with merchant with different DIC|\n|402|MERCHANT_CERTIFICATE_ERROR|Cannot read merchant certificate|\n|403|MERCHANT_WRONG_PASSWORD_OR_CORRUPTED_FILE|Merchant auth data password is wrong or the provided auth data are corrupted|\n|404|MERCHANT_PARSE_ERROR|Cannot parse auth and identification data|\n|405|MERCHANT_CERTIFICATE_EXPIRED|Merchant certificate is expired|\n|500|NO_FIX_NEEDED|Last stored request is valid.|\n|501|LAST_REQUEST_INVALID|Last stored request in CHDU is not valid.<br>A fix is required.|\n|502|INCORRECT_TIME|Either the time on the device is not correctly set<br>or the document creation time is incorrect.|\n|503|REQUEST_PARSE_ERROR|Cannot create the request message to SFS<br>It usually means that the data in the CHDU are corrupted.|\n|504|RESPONSE_PARSE_ERROR|Cannot create the response message from SFS<br>It usually means that the data in the CHDU are corrupted.|\n|505|NOTHING_TO_PRINT|When the document to print is null|\n|506|NOT_FOUND|The requested document wasn't found|\n|507|DOCUMENT_NOT_PRINTED|The document was successfully stored, but not printed due to a printer error<br>See the printer error code.|\n|508|LAST_DOCUMENT_NOT_PRINTED|Last stored document must be printed first|\n|600|SFS_COMMUNICATION_ERROR|Cannot communicate with the SFS|\n|601|REQUEST_ALREADY_SENT|Returned when the document has been already sent to the SFS|\n|602|VERIFICATION_ERROR|Request or response data cannot be verified.|\n|700|MALFORMED_INPUT|The request has invalid JSON structure|\n|701|INVALID_INPUT|The request validation failed<br>See the `errorMessage` field in the response object for more info.|\n|-1|UNKNOWN_ERROR|A generic undocumented error<br>See the `errorMessage` field in the response object for more info.|\n\n",
    "contact": {
      "email": "integrace@dotypay.com"
    },
    "version": "v1.7"
  },
  "servers": [
    {
      "url": "/"
    }
  ],
  "paths": {
    "/api/cash": {
      "post": {
        "tags": [
          "Cash"
        ],
        "summary": "Cash deposit/withdraw",
        "description": "Create cash deposit or withdraw. Cash documents are mandatory to print and must be sent to the SFS in time.",
        "operationId": "doPost",
        "requestBody": {
          "description": "Cash deposit or withdraw request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CashRequest"
              },
              "examples": {
                "Cash deposit": {
                  "description": "Deposit the money into the cash register.",
                  "value": {
                    "amount": 100
                  }
                },
                "Cash deposit into drawer": {
                  "description": "Deposit the money into the cash drawer connected to the receipt printer (if printer allows it).",
                  "value": {
                    "amount": 100,
                    "openDrawer": true
                  }
                },
                "Cash withdraw": {
                  "description": "Withdraw the money from the cash register.",
                  "value": {
                    "amount": -100
                  }
                },
                "Cash withdraw from drawer": {
                  "description": "Withdraw the money from the cash drawer connected to the receipt printer (if printer allows it).",
                  "value": {
                    "amount": -100,
                    "openDrawer": true
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response when the cash request is registered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CashResponse"
                },
                "examples": {
                  "Cash response offline example": {
                    "description": "The offline response lacks the UUID and process date, has longer QR code (generated from offline data instead of the UUID) and has a eKasa status attached.",
                    "value": {
                      "resultCode": 0,
                      "cash": {
                        "internalDocumentId": 100,
                        "sequenceId": 101,
                        "merchant": {
                          "id": 12,
                          "corporateFullName": "Company s.r.o.",
                          "ico": "123456789",
                          "dic": "SK123456789",
                          "physicalAddress": {
                            "country": "Slovenská Republika",
                            "municipality": "Bratislava",
                            "street": "Heydukova",
                            "buildingNumber": "2155",
                            "propertyRegistrationNumber": "6",
                            "postalCode": "81108"
                          },
                          "organizationUnit": {
                            "name": "Optional organization unit name",
                            "cashRegisterCode": "88812345678900001",
                            "cashRegisterType": "STANDARD",
                            "location": {
                              "physicalAddress": {
                                "country": "Slovenská Republika",
                                "municipality": "Bratislava",
                                "street": "Heydukova",
                                "buildingNumber": "2155",
                                "propertyRegistrationNumber": "6",
                                "postalCode": "81108"
                              }
                            }
                          }
                        },
                        "cashRegisterCode": "88812345678900001",
                        "amount": 10,
                        "issueDate": "03.09.2025 16:56:01",
                        "createDate": "03.09.2025 16:56:01",
                        "pkp": "EjRWeJASNFra0KvN7xI0VniQq83vEjRWetrTRWeJEjRWeJEjRWetrQAGeJEjRWeJEjRWeAAARWSJcSNFZ4kSNFZ4kSNFZ4kVNFl4EjRWSJeqqqu7vMzN3d7v//EjRWeJEjRWeJEjRWeYC62u387yLtVfTvXvQV/q9Rrxpe8SxVAAVFRK2tpUQUFRUVUQgIgI4UUVEV8V8YVaVVtLVLQbW1RbFbFbuxvu8V7xXhX+FQUFUUUQVRBQWXl0kEAAAAAABUFFFRUSUhAAAAEjRWeJEjRWeJEjRWeJEjRlqJEjRWeJEjRdrYkSNFZ4kSNFZ4kSNK2trSNFZ5gSNFatraNFZw==",
                        "okp": "ABCDEFAB-12345678-12345678-12345678-ABCDEFAB",
                        "exception": false,
                        "electronic": false,
                        "documentNumber": "202509/1",
                        "sendingCount": 1,
                        "qrCode": "ABCDEFAB-12345678-12345678-12345678-ABCDEFAB:88812345678900001:250903165601:101:10.00",
                        "status": {
                          "warning": {
                            "warningType": "EKASA",
                            "message": "Offline document",
                            "detail": "Document was printed as offline document and will be sent later"
                          }
                        }
                      }
                    }
                  },
                  "Cash response online example": {
                    "description": "Online response contains UUID and process date. The QR code is shorter (contains only the UUID).",
                    "value": {
                      "resultCode": 0,
                      "cash": {
                        "internalDocumentId": 100,
                        "sequenceId": 101,
                        "merchant": {
                          "id": 12,
                          "corporateFullName": "Company s.r.o.",
                          "ico": "123456789",
                          "dic": "SK123456789",
                          "physicalAddress": {
                            "country": "Slovenská Republika",
                            "municipality": "Bratislava",
                            "street": "Heydukova",
                            "buildingNumber": "2155",
                            "propertyRegistrationNumber": "6",
                            "postalCode": "81108"
                          },
                          "organizationUnit": {
                            "name": "Optional organization unit name",
                            "cashRegisterCode": "88812345678900001",
                            "cashRegisterType": "STANDARD",
                            "location": {
                              "physicalAddress": {
                                "country": "Slovenská Republika",
                                "municipality": "Bratislava",
                                "street": "Heydukova",
                                "buildingNumber": "2155",
                                "propertyRegistrationNumber": "6",
                                "postalCode": "81108"
                              }
                            }
                          }
                        },
                        "cashRegisterCode": "88812345678900001",
                        "amount": 10,
                        "issueDate": "03.09.2025 16:56:01",
                        "createDate": "03.09.2025 16:56:01",
                        "processDate": "03.09.2025 16:56:01",
                        "uuid": "O-A1B2C3D4E5F6000000123456789-TEST",
                        "pkp": "EjRWeJASNFra0KvN7xI0VniQq83vEjRWetrTRWeJEjRWeJEjRWetrQAGeJEjRWeJEjRWeAAARWSJcSNFZ4kSNFZ4kSNFZ4kVNFl4EjRWSJeqqqu7vMzN3d7v//EjRWeJEjRWeJEjRWeYC62u387yLtVfTvXvQV/q9Rrxpe8SxVAAVFRK2tpUQUFRUVUQgIgI4UUVEV8V8YVaVVtLVLQbW1RbFbFbuxvu8V7xXhX+FQUFUUUQVRBQWXl0kEAAAAAABUFFFRUSUhAAAAEjRWeJEjRWeJEjRWeJEjRlqJEjRWeJEjRdrYkSNFZ4kSNFZ4kSNK2trSNFZ5gSNFatraNFZw==",
                        "okp": "ABCDEFAB-12345678-12345678-12345678-ABCDEFAB",
                        "exception": false,
                        "electronic": false,
                        "documentNumber": "202509/1",
                        "sendingCount": 1,
                        "qrCode": "O-A1B2C3D4E5F6000000123456789-TEST",
                        "status": {}
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "When an error occurs or a prerequisite fails",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "Previous document isn't printed": {
                    "description": "If the previous document was not electronic and hasn't been printed yet, this error will be thrown before storing any data.",
                    "value": {
                      "resultCode": 508,
                      "error": "Last document must be printed first."
                    }
                  },
                  "Printer not ready": {
                    "description": "This response is returned if a printer isn't ready to print. The exact reason may vary, since it's tied to the printer connection type. It could be caused by the printer being turned off, not connected or generally not being able to communicate. The error message has no specific format defined and it should be used just for logging purposes.",
                    "value": {
                      "resultCode": 100,
                      "error": "Bad request: print.PrintException: Printer not ready"
                    }
                  },
                  "Disconnected CHDÚ": {
                    "description": "This response is returned if the CHDÚ doesn't communicate, e.g. isn't connected. The error message has no specific format defined and it should be used just for logging purposes.",
                    "value": {
                      "resultCode": 201,
                      "error": "Bad request: persistence.PersistenceControllerException: CHDU IO Error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/chduinfo": {
      "get": {
        "tags": [
          "CHDU"
        ],
        "summary": "Get CHDU params",
        "description": "Get information about CHDU (parameters, space)",
        "operationId": "doGet",
        "responses": {
          "500": {
            "description": "CHDÚ Doesn't communicate"
          },
          "default": {
            "description": "CHDÚ parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChduInfoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/document/get": {
      "post": {
        "tags": [
          "Document"
        ],
        "summary": "Get document",
        "description": "Get document by Identifier",
        "operationId": "doPost_1",
        "requestBody": {
          "description": "Returns a document by the parameter in the request body. If none parameters are present, returns the last document.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetDocumentRequest"
              },
              "examples": {
                "Get last document": {
                  "description": "Without any search parameters, last document is returned.",
                  "value": {}
                },
                "Print last document": {
                  "description": "If printer parameter is provided, the found document will be printed.",
                  "value": {
                    "printer": {}
                  }
                },
                "Get document by Sequence ID": {
                  "description": "Searches the document by given sequence ID.",
                  "value": {
                    "documentBySequenceId": {
                      "sequenceId": 1,
                      "month": 12,
                      "year": 2024
                    }
                  }
                },
                "Print document by Sequence ID": {
                  "description": "Searches the document by given sequence ID. The returned document will be printed as well.",
                  "value": {
                    "documentBySequenceId": {
                      "sequenceId": 1,
                      "month": 12,
                      "year": 2024
                    },
                    "printer": {}
                  }
                },
                "Get document by External ID": {
                  "description": "Searches the document by given external identifier from the POS system.",
                  "value": {
                    "documentByExternalId": {
                      "externalId": "ABC123"
                    }
                  }
                },
                "Get document by OKP": {
                  "description": "Searches the document by given OKP code.",
                  "value": {
                    "documentByOkp": {
                      "okp": "ABCDEFAB-12345678-12345678-12345678-ABCDEFAB"
                    }
                  }
                },
                "Get document by PKP": {
                  "description": "Searches the document by given PKP code.",
                  "value": {
                    "documentByPkp": {
                      "pkp": "EjRWeJASNFra0KvN7xI0VniQq83vEjRWetrTRWeJEjRWeJEjRWetrQAGeJEjRWeJEjRWeAAARWSJcSNFZ4kSNFZ4kSNFZ4kVNFl4EjRWSJeqqqu7vMzN3d7v//EjRWeJEjRWeJEjRWeYC62u387yLtVfTvXvQV/q9Rrxpe8SxVAAVFRK2tpUQUFRUVUQgIgI4UUVEV8V8YVaVVtLVLQbW1RbFbFbuxvu8V7xXhX+FQUFUUUQVRBQWXl0kEAAAAAABUFFFRUSUhAAAAEjRWeJEjRWeJEjRWeJEjRlqJEjRWeJEjRdrYkSNFZ4kSNFZ4kSNK2trSNFZ5gSNFatraNFZw=="
                    }
                  }
                },
                "Get document by UUID": {
                  "description": "Searches the document by given UUID code.",
                  "value": {
                    "documentByUUID": {
                      "uuid": "O-A1B2C3D4E5F6000000123456789-TEST"
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Document.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentResponse"
                },
                "examples": {
                  "Online document": {
                    "description": "When the document matching the search criteria is an online printed document.",
                    "value": {
                      "resultCode": 0,
                      "document": {
                        "type": "PD",
                        "merchant": {
                          "id": 12,
                          "corporateFullName": "Company s.r.o.",
                          "ico": "123456789",
                          "dic": "SK123456789",
                          "physicalAddress": {
                            "country": "Slovenská Republika",
                            "municipality": "Bratislava",
                            "street": "Heydukova",
                            "buildingNumber": "2155",
                            "propertyRegistrationNumber": "6",
                            "postalCode": "81108"
                          },
                          "organizationUnit": {
                            "name": "Optional organization unit name",
                            "cashRegisterCode": "88812345678900001",
                            "cashRegisterType": "STANDARD",
                            "location": {
                              "physicalAddress": {
                                "country": "Slovenská Republika",
                                "municipality": "Bratislava",
                                "street": "Heydukova",
                                "buildingNumber": "2155",
                                "propertyRegistrationNumber": "6",
                                "postalCode": "81108"
                              }
                            }
                          }
                        },
                        "cashRegisterCode": "88812345678900001",
                        "amount": 10,
                        "issueDate": "03.09.2025 16:56:01",
                        "createDate": "03.09.2025 16:56:01",
                        "processDate": "03.09.2025 16:56:01",
                        "sequenceId": 1,
                        "uuid": "O-A1B2C3D4E5F6000000123456789-TEST",
                        "pkp": "EjRWeJASNFra0KvN7xI0VniQq83vEjRWetrTRWeJEjRWeJEjRWetrQAGeJEjRWeJEjRWeAAARWSJcSNFZ4kSNFZ4kSNFZ4kVNFl4EjRWSJeqqqu7vMzN3d7v//EjRWeJEjRWeJEjRWeYC62u387yLtVfTvXvQV/q9Rrxpe8SxVAAVFRK2tpUQUFRUVUQgIgI4UUVEV8V8YVaVVtLVLQbW1RbFbFbuxvu8V7xXhX+FQUFUUUQVRBQWXl0kEAAAAAABUFFFRUSUhAAAAEjRWeJEjRWeJEjRWeJEjRlqJEjRWeJEjRdrYkSNFZ4kSNFZ4kSNK2trSNFZ5gSNFatraNFZw==",
                        "okp": "ABCDEFAB-12345678-12345678-12345678-ABCDEFAB",
                        "qrCode": "O-A1B2C3D4E5F6000000123456789-TEST",
                        "documentEntries": [
                          {
                            "type": "SALE",
                            "price": 5,
                            "quantity": 2,
                            "name": "Tovar",
                            "totalPrice": 10,
                            "vatRate": "VAT_23"
                          }
                        ],
                        "vatRateSums": [],
                        "paymentTypes": {
                          "Hotovosť EUR": 10
                        },
                        "header": "",
                        "footer": "",
                        "exception": false,
                        "documentNumber": "202509/1"
                      }
                    }
                  },
                  "Online deposit": {
                    "description": "When the document matching the search criteria is an online cash deposit.",
                    "value": {
                      "resultCode": 0,
                      "document": {
                        "type": "VK",
                        "merchant": {
                          "id": 12,
                          "corporateFullName": "Company s.r.o.",
                          "ico": "123456789",
                          "dic": "SK123456789",
                          "physicalAddress": {
                            "country": "Slovenská Republika",
                            "municipality": "Bratislava",
                            "street": "Heydukova",
                            "buildingNumber": "2155",
                            "propertyRegistrationNumber": "6",
                            "postalCode": "81108"
                          },
                          "organizationUnit": {
                            "name": "Optional organization unit name",
                            "cashRegisterCode": "88812345678900001",
                            "cashRegisterType": "STANDARD",
                            "location": {
                              "physicalAddress": {
                                "country": "Slovenská Republika",
                                "municipality": "Bratislava",
                                "street": "Heydukova",
                                "buildingNumber": "2155",
                                "propertyRegistrationNumber": "6",
                                "postalCode": "81108"
                              }
                            }
                          }
                        },
                        "cashRegisterCode": "88812345678900001",
                        "amount": 150,
                        "issueDate": "03.09.2025 16:56:01",
                        "createDate": "03.09.2025 16:56:01",
                        "processDate": "03.09.2025 16:56:01",
                        "sequenceId": 1,
                        "uuid": "O-A1B2C3D4E5F6000000123456789-TEST",
                        "pkp": "EjRWeJASNFra0KvN7xI0VniQq83vEjRWetrTRWeJEjRWeJEjRWetrQAGeJEjRWeJEjRWeAAARWSJcSNFZ4kSNFZ4kSNFZ4kVNFl4EjRWSJeqqqu7vMzN3d7v//EjRWeJEjRWeJEjRWeYC62u387yLtVfTvXvQV/q9Rrxpe8SxVAAVFRK2tpUQUFRUVUQgIgI4UUVEV8V8YVaVVtLVLQbW1RbFbFbuxvu8V7xXhX+FQUFUUUQVRBQWXl0kEAAAAAABUFFFRUSUhAAAAEjRWeJEjRWeJEjRWeJEjRlqJEjRWeJEjRdrYkSNFZ4kSNFZ4kSNK2trSNFZ5gSNFatraNFZw==",
                        "okp": "ABCDEFAB-12345678-12345678-12345678-ABCDEFAB",
                        "qrCode": "O-A1B2C3D4E5F6000000123456789-TEST",
                        "documentNumber": "202509/1"
                      }
                    }
                  },
                  "Not found": {
                    "description": "When no document matching the search criteria is found.",
                    "value": {
                      "resultCode": 506,
                      "error": "Document not found"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "An error occurred..."
          }
        }
      }
    },
    "/api/location/get": {
      "get": {
        "tags": [
          "Location"
        ],
        "summary": "Get last location",
        "description": "Get last location",
        "operationId": "doGet_1",
        "responses": {
          "200": {
            "description": "Location of the portable cash register.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LocationResponse"
                }
              }
            }
          },
          "404": {
            "description": "Location not set",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "Location not found": {
                    "description": "Returned if the recent location is not found in the CHDÚ. Either the CHDÚ isn't indexed (in this case there is a hard search limit) or the location hasn't been set yet.",
                    "value": {
                      "resultCode": 506,
                      "error": "Location not found"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "An error occurred (for example CHDU got disconnected)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/merchant/get": {
      "post": {
        "tags": [
          "Merchant"
        ],
        "summary": "Get merchant",
        "description": "Get merchant",
        "operationId": "doPost_2",
        "requestBody": {
          "description": "Use empty body. Filters are not supported yet.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetMerchantRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "500": {
            "description": "An error occurred..."
          },
          "default": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MerchantResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/merchant/status": {
      "get": {
        "tags": [
          "Merchant"
        ],
        "summary": "Get merchant status",
        "description": "Get merchant's certificate status:\n\n- expiration date,\n- whether or not to show a warning message.",
        "operationId": "doGet_2",
        "responses": {
          "500": {
            "description": "An error occurred..."
          },
          "default": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CertificateStatusResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/document/get/offline": {
      "post": {
        "tags": [
          "Document"
        ],
        "summary": "Get offline documents",
        "description": "Get offline documents and print report. Deprecated - use Get offline report instead.",
        "operationId": "doPost_3",
        "requestBody": {
          "description": "Document filter. Empty object returns all offline documents.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetOfflineDocumentsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "500": {
            "description": "An error occurred..."
          },
          "default": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentResponse"
                }
              }
            }
          }
        },
        "deprecated": true
      }
    },
    "/api/report/offline/oldest": {
      "get": {
        "tags": [
          "Report"
        ],
        "summary": "Get oldest offline record",
        "description": "Get oldest offline document or location",
        "operationId": "doGet_3",
        "responses": {
          "500": {
            "description": "An error occurred..."
          },
          "default": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OfflineReportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/report/offline": {
      "post": {
        "tags": [
          "Report"
        ],
        "summary": "Get offline report",
        "description": "Get offline documents and locations report",
        "operationId": "doPost_4",
        "requestBody": {
          "description": "Filter rules.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetOfflineDocumentsRequest"
              },
              "examples": {
                "All offline data": {
                  "description": "Return all offline data (documents and locations) up to the hardcoded limit.",
                  "value": {}
                },
                "All offline data with print": {
                  "description": "Return all offline data (documents and locations) up to the hardcoded limit and prints them. If the printer supports delays, the window and delay settings help preventing the printer overheat.",
                  "value": {
                    "printer": {
                      "windowSize": 2500,
                      "printDelay": 5000
                    }
                  }
                },
                "10 oldest records": {
                  "description": "Return up to ten offline items.",
                  "value": {
                    "limit": 10
                  }
                },
                "Filtered records": {
                  "description": "Returns only offline items matching the provided filter data. All filter data are optional and might be used in any combination.",
                  "value": {
                    "offlineDocumentsFilter": {
                      "sequenceId": 13,
                      "from": "27.08.2025 16:56:02",
                      "to": "03.09.2025 16:56:02"
                    }
                  }
                },
                "Data with offset": {
                  "description": "Skips exactly as many documents as the offset value. The offset is usually used in conjunction with print option, in case if the printer overheats, to continue the print where it left off.",
                  "value": {
                    "printer": {},
                    "offset": 70
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "500": {
            "description": "An error occurred..."
          },
          "default": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OfflineReportResponse"
                },
                "examples": {
                  "Everything up to date": {
                    "description": "Empty lists mean that nothing is waiting to be sent.",
                    "value": {
                      "resultCode": 0,
                      "documents": [],
                      "locations": []
                    }
                  },
                  "Offline data exist": {
                    "description": "One offline document and one offline location is still not sent. Send them to the SFS as soon as possible and then verify that nothing is waiting to be sent.",
                    "value": {
                      "resultCode": 0,
                      "documents": [
                        {
                          "type": "VK",
                          "merchant": {
                            "id": 12,
                            "corporateFullName": "Company s.r.o.",
                            "ico": "123456789",
                            "dic": "SK123456789",
                            "physicalAddress": {
                              "country": "Slovenská Republika",
                              "municipality": "Bratislava",
                              "street": "Heydukova",
                              "buildingNumber": "2155",
                              "propertyRegistrationNumber": "6",
                              "postalCode": "81108"
                            },
                            "organizationUnit": {
                              "name": "Optional organization unit name",
                              "cashRegisterCode": "88812345678900001",
                              "cashRegisterType": "STANDARD",
                              "location": {
                                "physicalAddress": {
                                  "country": "Slovenská Republika",
                                  "municipality": "Bratislava",
                                  "street": "Heydukova",
                                  "buildingNumber": "2155",
                                  "propertyRegistrationNumber": "6",
                                  "postalCode": "81108"
                                }
                              }
                            }
                          },
                          "cashRegisterCode": "88812345678900001",
                          "amount": 150,
                          "issueDate": "03.09.2025 16:56:01",
                          "createDate": "03.09.2025 16:56:01",
                          "processDate": "03.09.2025 16:56:01",
                          "sequenceId": 1,
                          "uuid": "O-A1B2C3D4E5F6000000123456789-TEST",
                          "pkp": "EjRWeJASNFra0KvN7xI0VniQq83vEjRWetrTRWeJEjRWeJEjRWetrQAGeJEjRWeJEjRWeAAARWSJcSNFZ4kSNFZ4kSNFZ4kVNFl4EjRWSJeqqqu7vMzN3d7v//EjRWeJEjRWeJEjRWeYC62u387yLtVfTvXvQV/q9Rrxpe8SxVAAVFRK2tpUQUFRUVUQgIgI4UUVEV8V8YVaVVtLVLQbW1RbFbFbuxvu8V7xXhX+FQUFUUUQVRBQWXl0kEAAAAAABUFFFRUSUhAAAAEjRWeJEjRWeJEjRWeJEjRlqJEjRWeJEjRdrYkSNFZ4kSNFZ4kSNK2trSNFZ5gSNFatraNFZw==",
                          "okp": "ABCDEFAB-12345678-12345678-12345678-ABCDEFAB",
                          "qrCode": "O-A1B2C3D4E5F6000000123456789-TEST",
                          "documentNumber": "202509/1"
                        }
                      ],
                      "locations": [
                        {
                          "internalId": 100,
                          "other": "Taxi SPZ AB12345",
                          "createDate": "03.09.2025 16:56:01",
                          "cashRegisterCode": "88812345678900001",
                          "merchant": {
                            "id": 12,
                            "corporateFullName": "Company s.r.o.",
                            "ico": "123456789",
                            "dic": "SK123456789",
                            "physicalAddress": {
                              "country": "Slovenská Republika",
                              "municipality": "Bratislava",
                              "street": "Heydukova",
                              "buildingNumber": "2155",
                              "propertyRegistrationNumber": "6",
                              "postalCode": "81108"
                            },
                            "organizationUnit": {
                              "name": "Optional organization unit name",
                              "cashRegisterCode": "88812345678900001",
                              "cashRegisterType": "STANDARD",
                              "location": {
                                "physicalAddress": {
                                  "country": "Slovenská Republika",
                                  "municipality": "Bratislava",
                                  "street": "Heydukova",
                                  "buildingNumber": "2155",
                                  "propertyRegistrationNumber": "6",
                                  "postalCode": "81108"
                                }
                              }
                            }
                          },
                          "sendingCount": 2
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/printer": {
      "get": {
        "tags": [
          "Printer"
        ],
        "summary": "Get printer params",
        "description": "Get printer parameters",
        "operationId": "doGet_4",
        "responses": {
          "500": {
            "description": "An error occurred..."
          },
          "default": {
            "description": "Printer parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrinterResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/settings/get": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get settings",
        "description": "Retrieve app settings.",
        "operationId": "doGet_5",
        "responses": {
          "500": {
            "description": "An error occurred..."
          },
          "default": {
            "description": "Settings data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SettingsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/status/get": {
      "get": {
        "tags": [
          "Status"
        ],
        "summary": "Get app status",
        "description": "Retrieve current app status to check whether some action need to be done before storing any other data.",
        "operationId": "doGet_6",
        "responses": {
          "500": {
            "description": "When status is not available or an unexpected error occurs"
          },
          "default": {
            "description": "Current status data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/version": {
      "get": {
        "tags": [
          "Version"
        ],
        "summary": "Get version",
        "description": "Get information about the API and app version",
        "operationId": "doGet_7",
        "responses": {
          "500": {
            "description": "An error occurred..."
          },
          "default": {
            "description": "Version data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VersionResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/drawer/open": {
      "post": {
        "tags": [
          "Drawer"
        ],
        "summary": "Open cash drawer",
        "description": "Request to generate a drawer pulse (only if printer allows it)",
        "operationId": "doPost_5",
        "requestBody": {
          "description": "No data required",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenDrawerRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "500": {
            "description": "An error occurred..."
          },
          "default": {
            "description": "Normal response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/image/preview": {
      "post": {
        "tags": [
          "Image",
          "Merchant"
        ],
        "summary": "Preview merchant logo",
        "description": "Preview merchant image which might be printed on receipts",
        "operationId": "doPost_6",
        "requestBody": {
          "description": "Image data for which the preview should be generated",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PreviewImageRequest"
              },
              "examples": {
                "Image preview for both variants": {
                  "description": "Print and electronic receipt image preview with a PNG logo in Base64 format to see how it would fit on the receipt",
                  "value": {
                    "imageData": "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAADMSURBVFhH7ZRJDsMgDAD9id56zGP7jrwul76hkSOVUjBeMBQfOpJzCCIzWRR4LQauA8DXzILyxAr4FfECVmIKuMr3ozz9ea/EmoQ6gJNwaxKqgCQgJNyaBlvAflQSbk2DPqAh8Nw9YgqgCBHgwbd7AP+AKQHP+5ZGogp4f9UPuKkvUjIswBqRi3Fwv0QVgPREUPLuAMQS0ZK7ApBWRGtysUaOsAFIGaEdLWIAkv73irFi3lEKPXKkb9dAYgR4HmEPuS9WwOwQyhMjYCUnChgemKrC3ZUAAAAASUVORK5CYII=",
                    "fitOnReceipt": true,
                    "format": "BOTH"
                  }
                },
                "Print image preview": {
                  "description": "Request for a printed logo preview",
                  "value": {
                    "imageData": "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAADMSURBVFhH7ZRJDsMgDAD9id56zGP7jrwul76hkSOVUjBeMBQfOpJzCCIzWRR4LQauA8DXzILyxAr4FfECVmIKuMr3ozz9ea/EmoQ6gJNwaxKqgCQgJNyaBlvAflQSbk2DPqAh8Nw9YgqgCBHgwbd7AP+AKQHP+5ZGogp4f9UPuKkvUjIswBqRi3Fwv0QVgPREUPLuAMQS0ZK7ApBWRGtysUaOsAFIGaEdLWIAkv73irFi3lEKPXKkb9dAYgR4HmEPuS9WwOwQyhMjYCUnChgemKrC3ZUAAAAASUVORK5CYII=",
                    "format": "PRINT"
                  }
                },
                "Electronic logo preview": {
                  "description": "Request for an electronic logo preview",
                  "value": {
                    "imageData": "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAADMSURBVFhH7ZRJDsMgDAD9id56zGP7jrwul76hkSOVUjBeMBQfOpJzCCIzWRR4LQauA8DXzILyxAr4FfECVmIKuMr3ozz9ea/EmoQ6gJNwaxKqgCQgJNyaBlvAflQSbk2DPqAh8Nw9YgqgCBHgwbd7AP+AKQHP+5ZGogp4f9UPuKkvUjIswBqRi3Fwv0QVgPREUPLuAMQS0ZK7ApBWRGtysUaOsAFIGaEdLWIAkv73irFi3lEKPXKkb9dAYgR4HmEPuS9WwOwQyhMjYCUnChgemKrC3ZUAAAAASUVORK5CYII=",
                    "format": "ELECTRONIC"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response with PNG logos in BASE64 format",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogoPreviewResponse"
                },
                "examples": {
                  "Both previews response on receipt": {
                    "description": "The response contains bot printed and electronic receipt previews on the receipt to see how they would fit.",
                    "value": {
                      "resultCode": 0,
                      "printedLogoData": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAAgAQAAAADSivroAAAAr0lEQVR4XtXVsQkCURBF0QXNtYMtYUvY0jRbMDE0HKzEErQFQTDdcBVxzN9/wQ0+HzzhC24402UlnQ6lKfOuW6llKDJfupVahhgSeh51MUjoGroYJDRtdDFI6DToYpBQ9LoYJHQZdTFIKHa6GCSE/Glo0cEAoTnfOhkkND50MkBoiZtOBgh9hoNOBgh9t2edDBDK9UoXg4T2tc7I3OtikBDSMhS13lHUClV72dVCzA8CJOQrFK5viQAAAABJRU5ErkJggg==",
                      "electronicLogoData": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAB2CAYAAADbR6SBAAACJklEQVR4Xu3aMU7DMABA0VyCjZHDcg5Ox8IZglIVGkKEPh7j9yQPseXN7VfcLisABMtxAgDOCAYAiWAAkAgGAIlgAJAIBgCJYACQCAYAiWAAkAgGAIlgAJAIBgCJYACQCAYAiWAAkAgGAIlgAJAIBgCJYACQCAYAiWAAkAgGAIlgAJAIBgCJYACQCAYAiWAAkAgGAIlgAJAIBlNaluU2/mNkD1yJ08+URr/4R/fBFTj9ACSCAXf7t4fb9dPb+24VEAxYfwfi+AwIBtwcf5s4PgOCAUAkGAAkgsHUtqunj+eX4/S3be2vdZiJYDC1LRivy9NpFL5isa0DggE/orEf25xYwINgwHr/G+3JAB58IgBIBIMpjb49jO6DK3D6mdLIldPIHrgSpx+ARDAASAQDgEQwAEgEA4BEMABIBAOARDAASAQDgEQwAEgEA4BEMABIBAOARDAASAQDgEQwAEgEA4BEMABIBAOARDAASAQDgEQwAEgEA4BEMABIBAOARDAASAQDgEQwAEgEA4BEMABIBAOARDAASAQDgEQwAEgEA4BEMABIBAOARDAASAQDgEQwAEgEA4BEMABIBAOARDAASAQDgEQwAEgEA4BEMABIBAOARDAASAQDgEQwAEgEA4BEMABIBAOARDAASAQDgEQwAEgEA4BEMABIBAOARDAASAQDgEQwAEgEA4BEMABIBAOARDAASAQDgEQwAEgEA4BEMABIBAOA5BNo+/1j8WR0rQAAAABJRU5ErkJggg=="
                    }
                  },
                  "Physical print preview": {
                    "description": "The response contains just the printed version of the logo. No negative space is used. The purpose of this response is to check how the shading is done, since the thermal printers do print only black colors.",
                    "value": {
                      "resultCode": 0,
                      "printedLogoData": "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQAAAABbAUdZAAAAZ0lEQVR4XmP4DwQM7f//P4QQ8////wkhwBL/n/cDifPzgUQ7P5CYrg8k5ssDif32IFb9f6g6JOLHf4YP/38BCfsn/xl+zL/wn+GPftd/hn8CC4GyLMxAogFk1AeQKXBtCHsRbgFJAADtbmwzR1+DpwAAAABJRU5ErkJggg=="
                    }
                  },
                  "Electronic logo preview": {
                    "description": "The response contains just the electronic version of the logo, without any negative space. The purpose of this response is to check how the logo was scaled down.",
                    "value": {
                      "resultCode": 0,
                      "electronicLogoData": "iVBORw0KGgoAAAANSUhEUgAAAEwAAABhCAYAAAB8pUfDAAABVklEQVR4Xu3XQUrEMABA0V7CnUsP6zk8nRvPoGRgpBQZ+KWYDLwHWTQhpPNpFrN9k2zHCR4TLBIsEiwSLBIsEiwSLBIsEiwSLBIsEiwSLBIsEiwSLBIsEiwSLBIsEiwSLBIsEiwSLBIsEiwSLJoWbNu22yjO7LnatNPP/vCz+64y9/QntFSw/ddzu34fn7vVNSwT7Bjo+LyKpYI9el7Fmm+1MMGi6cHG1ft6fTtO/xprj9b/2xLB3reXP6PcY431VUwPNuyj7ceYWynWsESw4f635zhWs94bLW5asLNfz9l9V5l2+pkrd2bP1eae/oQEiwSLBIsEiwSLBIsEiwSLBIsEiwSLBIsEiwSLBIsEiwSLBIsEiwSLBIsEiwSLBIsEiwSLBIsEiwSLBIsEiwSLBIsEiwSLBIsEiwSLBIsEiwSLBIsEiwSLBIsEiwSLBIsEiwSLBIt+AJ6PUHe3MoB1AAAAAElFTkSuQmCC"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Response if the input validation fails or the preview couldn't be made",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "Invalid input image": {
                    "description": "Response returned if the input image couldn't be parsed.",
                    "value": {
                      "resultCode": 701,
                      "error": "java.lang.IllegalArgumentException: Unsupported format"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/document/print": {
      "post": {
        "tags": [
          "Document",
          "Print"
        ],
        "summary": "Print document which is waiting to be printed",
        "description": "If document wasn't printed normally (while being created) due to a printer error (e.g. due to printer without paper), this method must be called to print the original receipt. Without it, eKasa won't accept any request which stores data to CHDU.",
        "operationId": "doPost_7",
        "requestBody": {
          "description": "Printer properties.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Printer"
              },
              "examples": {
                "Print with default parameters": {
                  "description": "No parameters are required.",
                  "value": {}
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                },
                "examples": {
                  "The document was printed successfully": {
                    "description": "Successful response doesn't return any additional data.",
                    "value": {
                      "resultCode": 0
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Document to print was not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "Everything printed": {
                    "description": "No document is waiting to be printed.",
                    "value": {
                      "resultCode": 505,
                      "error": "No unprinted document found."
                    }
                  },
                  "Electronic document": {
                    "description": "If the last document was electronic, only the error text changes.",
                    "value": {
                      "resultCode": 505,
                      "error": "Last document was electronic."
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "An error occurred (for example printer or CHDU got disconnected)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/document/send/offline": {
      "post": {
        "tags": [
          "Document"
        ],
        "summary": "Send offline data",
        "description": "Request to send offline documents and locations to eKasa servers",
        "operationId": "doPost_8",
        "requestBody": {
          "description": "Sending parameters",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SendOfflineRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "500": {
            "description": "An error occurred..."
          },
          "default": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OfflineReportResponse"
                },
                "examples": {
                  "Nothing was sent": {
                    "description": "Empty lists mean that no data were sent to the SFS. This may be caused by either that everything has been already sent or the sending has failed. To verify that everything is up to date, use the Offline report.",
                    "value": {
                      "resultCode": 0,
                      "documents": [],
                      "locations": []
                    }
                  },
                  "Data sent": {
                    "description": "One offline document and one offline location was sent. To check that nothing else is waiting to be sent, please use the offline report.",
                    "value": {
                      "resultCode": 0,
                      "documents": [
                        {
                          "type": "VK",
                          "merchant": {
                            "id": 12,
                            "corporateFullName": "Company s.r.o.",
                            "ico": "123456789",
                            "dic": "SK123456789",
                            "physicalAddress": {
                              "country": "Slovenská Republika",
                              "municipality": "Bratislava",
                              "street": "Heydukova",
                              "buildingNumber": "2155",
                              "propertyRegistrationNumber": "6",
                              "postalCode": "81108"
                            },
                            "organizationUnit": {
                              "name": "Optional organization unit name",
                              "cashRegisterCode": "88812345678900001",
                              "cashRegisterType": "STANDARD",
                              "location": {
                                "physicalAddress": {
                                  "country": "Slovenská Republika",
                                  "municipality": "Bratislava",
                                  "street": "Heydukova",
                                  "buildingNumber": "2155",
                                  "propertyRegistrationNumber": "6",
                                  "postalCode": "81108"
                                }
                              }
                            }
                          },
                          "cashRegisterCode": "88812345678900001",
                          "amount": 150,
                          "issueDate": "03.09.2025 16:56:01",
                          "createDate": "03.09.2025 16:56:01",
                          "processDate": "03.09.2025 16:56:01",
                          "sequenceId": 1,
                          "uuid": "O-A1B2C3D4E5F6000000123456789-TEST",
                          "pkp": "EjRWeJASNFra0KvN7xI0VniQq83vEjRWetrTRWeJEjRWeJEjRWetrQAGeJEjRWeJEjRWeAAARWSJcSNFZ4kSNFZ4kSNFZ4kVNFl4EjRWSJeqqqu7vMzN3d7v//EjRWeJEjRWeJEjRWeYC62u387yLtVfTvXvQV/q9Rrxpe8SxVAAVFRK2tpUQUFRUVUQgIgI4UUVEV8V8YVaVVtLVLQbW1RbFbFbuxvu8V7xXhX+FQUFUUUQVRBQWXl0kEAAAAAABUFFFRUSUhAAAAEjRWeJEjRWeJEjRWeJEjRlqJEjRWeJEjRdrYkSNFZ4kSNFZ4kSNK2trSNFZ5gSNFatraNFZw==",
                          "okp": "ABCDEFAB-12345678-12345678-12345678-ABCDEFAB",
                          "qrCode": "O-A1B2C3D4E5F6000000123456789-TEST",
                          "documentNumber": "202509/1"
                        }
                      ],
                      "locations": [
                        {
                          "internalId": 100,
                          "other": "Taxi SPZ AB12345",
                          "createDate": "03.09.2025 16:56:01",
                          "cashRegisterCode": "88812345678900001",
                          "merchant": {
                            "id": 12,
                            "corporateFullName": "Company s.r.o.",
                            "ico": "123456789",
                            "dic": "SK123456789",
                            "physicalAddress": {
                              "country": "Slovenská Republika",
                              "municipality": "Bratislava",
                              "street": "Heydukova",
                              "buildingNumber": "2155",
                              "propertyRegistrationNumber": "6",
                              "postalCode": "81108"
                            },
                            "organizationUnit": {
                              "name": "Optional organization unit name",
                              "cashRegisterCode": "88812345678900001",
                              "cashRegisterType": "STANDARD",
                              "location": {
                                "physicalAddress": {
                                  "country": "Slovenská Republika",
                                  "municipality": "Bratislava",
                                  "street": "Heydukova",
                                  "buildingNumber": "2155",
                                  "propertyRegistrationNumber": "6",
                                  "postalCode": "81108"
                                }
                              }
                            }
                          },
                          "sendingCount": 2
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/document/store": {
      "post": {
        "tags": [
          "Document"
        ],
        "summary": "Store document",
        "description": "Store new document to eKasa",
        "operationId": "doPost_9",
        "requestBody": {
          "description": "Document data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StoreDocumentRequest"
              },
              "examples": {
                "Basic document with one sale item": {
                  "description": "An example of a document with minimum data required",
                  "value": {
                    "type": "PD",
                    "amount": 10,
                    "documentEntries": [
                      {
                        "price": 5,
                        "quantity": 2,
                        "name": "Tovar",
                        "vatRate": "VAT_23",
                        "itemType": "SALE"
                      }
                    ],
                    "payments": {
                      "Hotovosť EUR": 10
                    }
                  }
                },
                "Invoice payment": {
                  "description": "Invoice payment doesn't contain any items. Invoice number is mandatory.",
                  "value": {
                    "type": "UF",
                    "invoiceId": "FA123456",
                    "amount": 200,
                    "payments": {
                      "Hotovosť EUR": 200
                    }
                  }
                },
                "Packing refund": {
                  "description": "Packing items must have zero VAT rate.",
                  "value": {
                    "type": "PD",
                    "amount": 9,
                    "documentEntries": [
                      {
                        "price": 10,
                        "quantity": 1,
                        "name": "Tovar",
                        "vatRate": "VAT_23",
                        "itemType": "SALE"
                      },
                      {
                        "price": -1,
                        "quantity": 1,
                        "name": "Vrátené obaly",
                        "vatRate": "VAT_0",
                        "itemType": "PACKING_REFUND"
                      }
                    ],
                    "payments": {
                      "Hotovosť EUR": 9
                    }
                  }
                },
                "Packing sale": {
                  "description": "Packing items must have zero VAT rate.",
                  "value": {
                    "type": "PD",
                    "amount": 11,
                    "documentEntries": [
                      {
                        "price": 10,
                        "quantity": 1,
                        "name": "Tovar",
                        "vatRate": "VAT_23",
                        "itemType": "SALE"
                      },
                      {
                        "price": 1,
                        "quantity": 1,
                        "name": "Obal",
                        "vatRate": "VAT_0",
                        "itemType": "PACKING"
                      }
                    ],
                    "payments": {
                      "Hotovosť EUR": 11
                    }
                  }
                },
                "Paragon": {
                  "description": "When registering a paragon, both paragon number and date must be provided.",
                  "value": {
                    "type": "PD",
                    "amount": 10.45,
                    "paragonDate": "03.09.2025 16:56:02",
                    "paragonNumber": 1,
                    "documentEntries": [
                      {
                        "price": 10.45,
                        "quantity": 1,
                        "name": "Tovar",
                        "vatRate": "VAT_19",
                        "itemType": "SALE"
                      }
                    ],
                    "payments": {
                      "Hotovosť EUR": 10.45
                    }
                  }
                },
                "Voucher exchange": {
                  "description": "When exchanging a voucher, the voucher is paired with the sale item using the same voucher number.",
                  "value": {
                    "type": "PD",
                    "amount": 20,
                    "documentEntries": [
                      {
                        "price": 100,
                        "quantity": 1,
                        "name": "Tovar",
                        "vatRate": "VAT_23",
                        "itemType": "SALE",
                        "voucherNumber": "123456"
                      },
                      {
                        "price": -80,
                        "quantity": 1,
                        "name": "Voucher",
                        "vatRate": "VAT_23",
                        "itemType": "VOUCHER",
                        "voucherNumber": "123456"
                      }
                    ],
                    "payments": {
                      "Hotovosť EUR": 20
                    }
                  }
                },
                "Cash rounding example": {
                  "description": "Since the payment amounts for each payment method aren't being sent to the SFS, rounding amount is calculated automatically from the total receipt amount and item sum difference, if applicable.",
                  "value": {
                    "type": "PD",
                    "amount": 1.05,
                    "documentEntries": [
                      {
                        "price": 1.03,
                        "quantity": 1,
                        "name": "Tovar",
                        "vatRate": "VAT_23",
                        "itemType": "SALE"
                      }
                    ],
                    "payments": {
                      "Hotovosť EUR": 1.05
                    }
                  }
                },
                "Document with custom header and footer": {
                  "description": "Document with custom header and footer data on receipt. The custom header is printed above the mandatory merchant header and the footer is printed above the QR code.",
                  "value": {
                    "type": "PD",
                    "amount": 10,
                    "documentEntries": [
                      {
                        "price": 5,
                        "quantity": 2,
                        "name": "Tovar",
                        "vatRate": "VAT_23",
                        "itemType": "SALE"
                      }
                    ],
                    "payments": {
                      "Hotovosť EUR": 10
                    },
                    "header": "Custom header text",
                    "footer": "Printed on Dotypay eKasa"
                  }
                },
                "Electronic document": {
                  "description": "If the document is successfully sent to the SFS, it won't be printed. It will be returned as a PNG image in Base64 format. The caller is then obliged to send that document to the customer.",
                  "value": {
                    "type": "PD",
                    "amount": 10,
                    "documentEntries": [
                      {
                        "price": 5,
                        "quantity": 2,
                        "name": "Tovar",
                        "vatRate": "VAT_23",
                        "itemType": "SALE"
                      }
                    ],
                    "payments": {
                      "Hotovosť EUR": 10
                    },
                    "electronicReceipt": true
                  }
                },
                "Document with drawer": {
                  "description": "Registering a document and opening the cash drawer (if the printer allows it).",
                  "value": {
                    "type": "PD",
                    "amount": 10,
                    "documentEntries": [
                      {
                        "price": 5,
                        "quantity": 2,
                        "name": "Tovar",
                        "vatRate": "VAT_23",
                        "itemType": "SALE"
                      }
                    ],
                    "payments": {
                      "Hotovosť EUR": 10
                    },
                    "openDrawer": true
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Document successfully stored",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentResponse"
                },
                "examples": {
                  "Document sent and printed": {
                    "description": "The document was successfully stored into the CHDÚ memory, successfully sent to the SFS and printed.",
                    "value": {
                      "resultCode": 0,
                      "document": {
                        "type": "PD",
                        "merchant": {
                          "id": 12,
                          "corporateFullName": "Company s.r.o.",
                          "ico": "123456789",
                          "dic": "SK123456789",
                          "physicalAddress": {
                            "country": "Slovenská Republika",
                            "municipality": "Bratislava",
                            "street": "Heydukova",
                            "buildingNumber": "2155",
                            "propertyRegistrationNumber": "6",
                            "postalCode": "81108"
                          },
                          "organizationUnit": {
                            "name": "Optional organization unit name",
                            "cashRegisterCode": "88812345678900001",
                            "cashRegisterType": "STANDARD",
                            "location": {
                              "physicalAddress": {
                                "country": "Slovenská Republika",
                                "municipality": "Bratislava",
                                "street": "Heydukova",
                                "buildingNumber": "2155",
                                "propertyRegistrationNumber": "6",
                                "postalCode": "81108"
                              }
                            }
                          }
                        },
                        "cashRegisterCode": "88812345678900001",
                        "amount": 10,
                        "issueDate": "03.09.2025 16:56:01",
                        "createDate": "03.09.2025 16:56:01",
                        "processDate": "03.09.2025 16:56:01",
                        "sequenceId": 1,
                        "uuid": "O-A1B2C3D4E5F6000000123456789-TEST",
                        "pkp": "EjRWeJASNFra0KvN7xI0VniQq83vEjRWetrTRWeJEjRWeJEjRWetrQAGeJEjRWeJEjRWeAAARWSJcSNFZ4kSNFZ4kSNFZ4kVNFl4EjRWSJeqqqu7vMzN3d7v//EjRWeJEjRWeJEjRWeYC62u387yLtVfTvXvQV/q9Rrxpe8SxVAAVFRK2tpUQUFRUVUQgIgI4UUVEV8V8YVaVVtLVLQbW1RbFbFbuxvu8V7xXhX+FQUFUUUQVRBQWXl0kEAAAAAABUFFFRUSUhAAAAEjRWeJEjRWeJEjRWeJEjRlqJEjRWeJEjRdrYkSNFZ4kSNFZ4kSNK2trSNFZ5gSNFatraNFZw==",
                        "okp": "ABCDEFAB-12345678-12345678-12345678-ABCDEFAB",
                        "qrCode": "O-A1B2C3D4E5F6000000123456789-TEST",
                        "documentEntries": [
                          {
                            "type": "SALE",
                            "price": 5,
                            "quantity": 2,
                            "name": "Tovar",
                            "totalPrice": 10,
                            "vatRate": "VAT_23"
                          }
                        ],
                        "vatRateSums": [],
                        "paymentTypes": {
                          "Hotovosť EUR": 10
                        },
                        "header": "",
                        "footer": "",
                        "exception": false,
                        "documentNumber": "202509/1"
                      }
                    }
                  },
                  "Offline printed document": {
                    "description": "The document was successfully stored into the CHDÚ memory, however wasn't sent to the SFS. Therefore, the document was printed as an offline document. Please, send the document online as soon as possible.",
                    "value": {
                      "resultCode": 0,
                      "document": {
                        "type": "PD",
                        "merchant": {
                          "id": 12,
                          "corporateFullName": "Company s.r.o.",
                          "ico": "123456789",
                          "dic": "SK123456789",
                          "physicalAddress": {
                            "country": "Slovenská Republika",
                            "municipality": "Bratislava",
                            "street": "Heydukova",
                            "buildingNumber": "2155",
                            "propertyRegistrationNumber": "6",
                            "postalCode": "81108"
                          },
                          "organizationUnit": {
                            "name": "Optional organization unit name",
                            "cashRegisterCode": "88812345678900001",
                            "cashRegisterType": "STANDARD",
                            "location": {
                              "physicalAddress": {
                                "country": "Slovenská Republika",
                                "municipality": "Bratislava",
                                "street": "Heydukova",
                                "buildingNumber": "2155",
                                "propertyRegistrationNumber": "6",
                                "postalCode": "81108"
                              }
                            }
                          }
                        },
                        "cashRegisterCode": "88812345678900001",
                        "amount": 10,
                        "issueDate": "03.09.2025 16:56:01",
                        "createDate": "03.09.2025 16:56:01",
                        "sequenceId": 1,
                        "pkp": "EjRWeJASNFra0KvN7xI0VniQq83vEjRWetrTRWeJEjRWeJEjRWetrQAGeJEjRWeJEjRWeAAARWSJcSNFZ4kSNFZ4kSNFZ4kVNFl4EjRWSJeqqqu7vMzN3d7v//EjRWeJEjRWeJEjRWeYC62u387yLtVfTvXvQV/q9Rrxpe8SxVAAVFRK2tpUQUFRUVUQgIgI4UUVEV8V8YVaVVtLVLQbW1RbFbFbuxvu8V7xXhX+FQUFUUUQVRBQWXl0kEAAAAAABUFFFRUSUhAAAAEjRWeJEjRWeJEjRWeJEjRlqJEjRWeJEjRdrYkSNFZ4kSNFZ4kSNK2trSNFZ5gSNFatraNFZw==",
                        "okp": "ABCDEFAB-12345678-12345678-12345678-ABCDEFAB",
                        "qrCode": "ABCDEFAB-12345678-12345678-12345678-ABCDEFAB:88812345678900001:250903165601:1:10.00",
                        "documentEntries": [
                          {
                            "type": "SALE",
                            "price": 5,
                            "quantity": 2,
                            "name": "Tovar",
                            "totalPrice": 10,
                            "vatRate": "VAT_23"
                          }
                        ],
                        "vatRateSums": [],
                        "paymentTypes": {
                          "Hotovosť EUR": 10
                        },
                        "header": "",
                        "footer": "",
                        "exception": false,
                        "documentNumber": "202509/1"
                      }
                    }
                  },
                  "Document sent but not printed": {
                    "description": "The document was successfully stored into the CHDÚ memory, successfully sent to the SFS, but not printed. Since it wasn't electronic, it must be printed first before storing any other data to the CHDÚ. Please print the document using the `Print` endpoint.",
                    "value": {
                      "resultCode": 507,
                      "document": {
                        "type": "PD",
                        "merchant": {
                          "id": 12,
                          "corporateFullName": "Company s.r.o.",
                          "ico": "123456789",
                          "dic": "SK123456789",
                          "physicalAddress": {
                            "country": "Slovenská Republika",
                            "municipality": "Bratislava",
                            "street": "Heydukova",
                            "buildingNumber": "2155",
                            "propertyRegistrationNumber": "6",
                            "postalCode": "81108"
                          },
                          "organizationUnit": {
                            "name": "Optional organization unit name",
                            "cashRegisterCode": "88812345678900001",
                            "cashRegisterType": "STANDARD",
                            "location": {
                              "physicalAddress": {
                                "country": "Slovenská Republika",
                                "municipality": "Bratislava",
                                "street": "Heydukova",
                                "buildingNumber": "2155",
                                "propertyRegistrationNumber": "6",
                                "postalCode": "81108"
                              }
                            }
                          }
                        },
                        "cashRegisterCode": "88812345678900001",
                        "amount": 10,
                        "issueDate": "03.09.2025 16:56:01",
                        "createDate": "03.09.2025 16:56:01",
                        "processDate": "03.09.2025 16:56:01",
                        "sequenceId": 1,
                        "uuid": "O-A1B2C3D4E5F6000000123456789-TEST",
                        "pkp": "EjRWeJASNFra0KvN7xI0VniQq83vEjRWetrTRWeJEjRWeJEjRWetrQAGeJEjRWeJEjRWeAAARWSJcSNFZ4kSNFZ4kSNFZ4kVNFl4EjRWSJeqqqu7vMzN3d7v//EjRWeJEjRWeJEjRWeYC62u387yLtVfTvXvQV/q9Rrxpe8SxVAAVFRK2tpUQUFRUVUQgIgI4UUVEV8V8YVaVVtLVLQbW1RbFbFbuxvu8V7xXhX+FQUFUUUQVRBQWXl0kEAAAAAABUFFFRUSUhAAAAEjRWeJEjRWeJEjRWeJEjRlqJEjRWeJEjRdrYkSNFZ4kSNFZ4kSNK2trSNFZ5gSNFatraNFZw==",
                        "okp": "ABCDEFAB-12345678-12345678-12345678-ABCDEFAB",
                        "qrCode": "O-A1B2C3D4E5F6000000123456789-TEST",
                        "documentEntries": [
                          {
                            "type": "SALE",
                            "price": 5,
                            "quantity": 2,
                            "name": "Tovar",
                            "totalPrice": 10,
                            "vatRate": "VAT_23"
                          }
                        ],
                        "vatRateSums": [],
                        "paymentTypes": {
                          "Hotovosť EUR": 10
                        },
                        "header": "",
                        "footer": "",
                        "exception": false,
                        "documentNumber": "202509/1"
                      },
                      "printResultCode": 101
                    }
                  },
                  "Offline document not printed": {
                    "description": "The document was successfully stored into the CHDÚ memory, however wasn't sent to the SFS and wasn't printed either. In this case, the document must be printed first using the `Print` endpoint. Then, send the document using `Send offline` endpoint.",
                    "value": {
                      "resultCode": 507,
                      "document": {
                        "type": "PD",
                        "merchant": {
                          "id": 12,
                          "corporateFullName": "Company s.r.o.",
                          "ico": "123456789",
                          "dic": "SK123456789",
                          "physicalAddress": {
                            "country": "Slovenská Republika",
                            "municipality": "Bratislava",
                            "street": "Heydukova",
                            "buildingNumber": "2155",
                            "propertyRegistrationNumber": "6",
                            "postalCode": "81108"
                          },
                          "organizationUnit": {
                            "name": "Optional organization unit name",
                            "cashRegisterCode": "88812345678900001",
                            "cashRegisterType": "STANDARD",
                            "location": {
                              "physicalAddress": {
                                "country": "Slovenská Republika",
                                "municipality": "Bratislava",
                                "street": "Heydukova",
                                "buildingNumber": "2155",
                                "propertyRegistrationNumber": "6",
                                "postalCode": "81108"
                              }
                            }
                          }
                        },
                        "cashRegisterCode": "88812345678900001",
                        "amount": 10,
                        "issueDate": "03.09.2025 16:56:01",
                        "createDate": "03.09.2025 16:56:01",
                        "sequenceId": 1,
                        "pkp": "EjRWeJASNFra0KvN7xI0VniQq83vEjRWetrTRWeJEjRWeJEjRWetrQAGeJEjRWeJEjRWeAAARWSJcSNFZ4kSNFZ4kSNFZ4kVNFl4EjRWSJeqqqu7vMzN3d7v//EjRWeJEjRWeJEjRWeYC62u387yLtVfTvXvQV/q9Rrxpe8SxVAAVFRK2tpUQUFRUVUQgIgI4UUVEV8V8YVaVVtLVLQbW1RbFbFbuxvu8V7xXhX+FQUFUUUQVRBQWXl0kEAAAAAABUFFFRUSUhAAAAEjRWeJEjRWeJEjRWeJEjRlqJEjRWeJEjRdrYkSNFZ4kSNFZ4kSNK2trSNFZ5gSNFatraNFZw==",
                        "okp": "ABCDEFAB-12345678-12345678-12345678-ABCDEFAB",
                        "qrCode": "ABCDEFAB-12345678-12345678-12345678-ABCDEFAB:88812345678900001:250903165601:1:10.00",
                        "documentEntries": [
                          {
                            "type": "SALE",
                            "price": 5,
                            "quantity": 2,
                            "name": "Tovar",
                            "totalPrice": 10,
                            "vatRate": "VAT_23"
                          }
                        ],
                        "vatRateSums": [],
                        "paymentTypes": {
                          "Hotovosť EUR": 10
                        },
                        "header": "",
                        "footer": "",
                        "exception": false,
                        "documentNumber": "202509/1"
                      },
                      "printResultCode": 101
                    }
                  },
                  "Online electronic document": {
                    "description": "The document was successfully stored into the CHDÚ memory, successfully sent to the SFS and the receipt is returned in the BASE64 format to be sent to the customer by the client app. The client app must provide the customer the receipt. Keep in mind, that the offline receipt cannot be issued electronically.",
                    "value": {
                      "resultCode": 0,
                      "document": {
                        "type": "PD",
                        "merchant": {
                          "id": 12,
                          "corporateFullName": "Company s.r.o.",
                          "ico": "123456789",
                          "dic": "SK123456789",
                          "physicalAddress": {
                            "country": "Slovenská Republika",
                            "municipality": "Bratislava",
                            "street": "Heydukova",
                            "buildingNumber": "2155",
                            "propertyRegistrationNumber": "6",
                            "postalCode": "81108"
                          },
                          "organizationUnit": {
                            "name": "Optional organization unit name",
                            "cashRegisterCode": "88812345678900001",
                            "cashRegisterType": "STANDARD",
                            "location": {
                              "physicalAddress": {
                                "country": "Slovenská Republika",
                                "municipality": "Bratislava",
                                "street": "Heydukova",
                                "buildingNumber": "2155",
                                "propertyRegistrationNumber": "6",
                                "postalCode": "81108"
                              }
                            }
                          }
                        },
                        "cashRegisterCode": "88812345678900001",
                        "amount": 10,
                        "issueDate": "03.09.2025 16:56:01",
                        "createDate": "03.09.2025 16:56:01",
                        "processDate": "03.09.2025 16:56:01",
                        "sequenceId": 1,
                        "uuid": "O-A1B2C3D4E5F6000000123456789-TEST",
                        "pkp": "EjRWeJASNFra0KvN7xI0VniQq83vEjRWetrTRWeJEjRWeJEjRWetrQAGeJEjRWeJEjRWeAAARWSJcSNFZ4kSNFZ4kSNFZ4kVNFl4EjRWSJeqqqu7vMzN3d7v//EjRWeJEjRWeJEjRWeYC62u387yLtVfTvXvQV/q9Rrxpe8SxVAAVFRK2tpUQUFRUVUQgIgI4UUVEV8V8YVaVVtLVLQbW1RbFbFbuxvu8V7xXhX+FQUFUUUQVRBQWXl0kEAAAAAABUFFFRUSUhAAAAEjRWeJEjRWeJEjRWeJEjRlqJEjRWeJEjRdrYkSNFZ4kSNFZ4kSNK2trSNFZ5gSNFatraNFZw==",
                        "okp": "ABCDEFAB-12345678-12345678-12345678-ABCDEFAB",
                        "qrCode": "O-A1B2C3D4E5F6000000123456789-TEST",
                        "documentEntries": [
                          {
                            "type": "SALE",
                            "price": 5,
                            "quantity": 2,
                            "name": "Tovar",
                            "totalPrice": 10,
                            "vatRate": "VAT_23"
                          }
                        ],
                        "vatRateSums": [],
                        "paymentTypes": {
                          "Hotovosť EUR": 10
                        },
                        "header": "",
                        "footer": "",
                        "exception": false,
                        "electronic": true,
                        "electronicReceipt": "PNG image of the receipt in a BASE64 format",
                        "documentNumber": "202509/1"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Some error occurred..."
          }
        }
      }
    },
    "/api/image/store": {
      "post": {
        "tags": [
          "Merchant",
          "Image"
        ],
        "summary": "Store merchant logo",
        "description": "Store merchant image which will be printed on receipts",
        "operationId": "doPost_10",
        "requestBody": {
          "description": "Image data or null to remove the logo",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StoreImageRequest"
              },
              "examples": {
                "PNG Image upload": {
                  "description": "Saves the PNG logo in Base64 format into the CHDU memory.",
                  "value": {
                    "imageData": "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAADMSURBVFhH7ZRJDsMgDAD9id56zGP7jrwul76hkSOVUjBeMBQfOpJzCCIzWRR4LQauA8DXzILyxAr4FfECVmIKuMr3ozz9ea/EmoQ6gJNwaxKqgCQgJNyaBlvAflQSbk2DPqAh8Nw9YgqgCBHgwbd7AP+AKQHP+5ZGogp4f9UPuKkvUjIswBqRi3Fwv0QVgPREUPLuAMQS0ZK7ApBWRGtysUaOsAFIGaEdLWIAkv73irFi3lEKPXKkb9dAYgR4HmEPuS9WwOwQyhMjYCUnChgemKrC3ZUAAAAASUVORK5CYII="
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "500": {
            "description": "Some error occurred..."
          },
          "default": {
            "description": "Response description...",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/merchant/store": {
      "post": {
        "tags": [
          "Merchant"
        ],
        "summary": "Store merchant",
        "description": "Store new merchant data.",
        "operationId": "doPost_11",
        "requestBody": {
          "description": "Merchant data - authentication data, identification data and their passwords",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StoreMerchantRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "500": {
            "description": "An error occurred..."
          },
          "default": {
            "description": "Data of the newly stored merchant",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MerchantResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/settings/store": {
      "put": {
        "tags": [
          "Settings"
        ],
        "summary": "Save settings",
        "description": "Save app settings to persistent storage.",
        "operationId": "doPut",
        "requestBody": {
          "description": "Data to save",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StoreSettingsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "500": {
            "description": "An error occurred..."
          },
          "default": {
            "description": "Settings stored successfully"
          }
        }
      }
    },
    "/api/print": {
      "post": {
        "tags": [
          "Print"
        ],
        "summary": "Print string",
        "description": "Print custom string data. These data will be stored in the CHDU memory.",
        "operationId": "doPost_12",
        "requestBody": {
          "description": "Data to print",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PrintStringRequest"
              },
              "examples": {
                "Simple text print": {
                  "description": "Simple print request",
                  "value": {
                    "printData": "Print data"
                  }
                },
                "Complex print": {
                  "description": "Since the eKasa client doesn't allow formatting the text yet, the text must be formatted manually. Please call the `Printer` endpoint first to discover the printer parameters (characters per line). This example is for 32 characters per line.",
                  "value": {
                    "printData": "        Daily statement         \n--------------------------------\n                                \nTotal sales:                  37\nTotal item count:             70\nTotal cost:           468.50 EUR\n--------------------------------"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RawResponse"
                }
              }
            }
          },
          "500": {
            "description": "An error occurred..."
          }
        }
      }
    },
    "/api/document/update": {
      "post": {
        "tags": [
          "Document"
        ],
        "summary": "Update stuck document data",
        "description": "Updates the stuck document record in CHDU. The request can only contain the data that needs to be fixed, i.e., it is not necessary to send all the data of the original document. See the schema for all possible attributes which may be updated.",
        "operationId": "doPost_13",
        "requestBody": {
          "description": "Data to update/change/repair",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDocumentRequest"
              },
              "examples": {
                "Send the document with latest merchant data": {
                  "description": "Stores and resends the stuck document with the latest stored merchant. Use this when the certificate of the offline document has expired.",
                  "value": {
                    "fixDocument": {
                      "useLastMerchant": true
                    }
                  }
                },
                "Fix document dates": {
                  "description": "Stores and resends the stuck document which contained wrong date (for example the future date).",
                  "value": {
                    "fixDocument": {
                      "createDate": "02.09.2025 16:56:02",
                      "issueDate": "02.09.2025 16:56:02"
                    }
                  }
                },
                "Fix document invoice number": {
                  "description": "Changes the invoice number of the stuck document",
                  "value": {
                    "fixDocument": {
                      "invoiceId": "FA123456"
                    }
                  }
                },
                "Fix first item data": {
                  "description": "Changes the name and quantity of the first item.",
                  "value": {
                    "fixDocument": {
                      "documentEntries": [
                        {
                          "name": "Fixed item name",
                          "quantity": 1.05
                        }
                      ]
                    }
                  }
                },
                "Fix second item data": {
                  "description": "If trying to fix nth item, keep the fix items before this one empty.",
                  "value": {
                    "fixDocument": {
                      "documentEntries": [
                        {},
                        {
                          "specialRegulationChange": {
                            "newValue": "UD"
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "500": {
            "description": "An error occurred..."
          },
          "default": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/location/update": {
      "post": {
        "tags": [
          "Location"
        ],
        "summary": "Update location",
        "description": "Update cash register location",
        "operationId": "doPost_14",
        "requestBody": {
          "description": "Location data",
          "content": {
            "*/*": {
              "schema": {
                "$ref": "#/components/schemas/UpdateLocationRequest"
              },
              "examples": {
                "Physical address entry": {
                  "description": "Updates the current sale location to specific address.",
                  "value": {
                    "physicalAddress": {
                      "country": "Slovenská Republika",
                      "municipality": "Bratislava",
                      "street": "Heydukova",
                      "buildingNumber": "2155",
                      "propertyRegistrationNumber": "6",
                      "postalCode": "81108"
                    }
                  }
                },
                "GPS coordinates entry": {
                  "description": "Updates the current sale location to a location with specified coordinates.",
                  "value": {
                    "gps": {
                      "x": 17.112415,
                      "y": 48.1467828
                    }
                  }
                },
                "Text entry": {
                  "description": "Updates the current sale location by the text entry, for example a taxi licence plate number.",
                  "value": {
                    "other": "Taxi SPZ AB12345"
                  }
                },
                "Fix a stuck entry": {
                  "description": "Fixes the last location which wasn't accepted by the SFS.",
                  "value": {
                    "fixLocation": {
                      "createDate": "03.09.2025 16:56:02",
                      "gps": {
                        "x": 17.1427408,
                        "y": 48.1455817
                      },
                      "useLastMerchant": true
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "500": {
            "description": "An error occurred..."
          },
          "default": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LocationResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Cash": {
        "required": [
          "amount"
        ],
        "type": "object",
        "properties": {
          "internalDocumentId": {
            "type": "integer",
            "description": "Internal id generated by PPEKK",
            "format": "int32",
            "example": 10
          },
          "sequenceId": {
            "type": "integer",
            "description": "Sequence id of Document. Restarted by every month starting of `1` in sequence",
            "format": "int32",
            "example": 37
          },
          "merchant": {
            "$ref": "#/components/schemas/Merchant"
          },
          "cashRegisterCode": {
            "type": "string",
            "description": "Cash register code",
            "example": "88812345678900001"
          },
          "amount": {
            "type": "number",
            "description": "Amount of cash withdraw or deposit.<br>If the value is positive, it is deposit, if negative, it is withdrawal. Zero is not allowed.",
            "example": 100
          },
          "issueDate": {
            "type": "string",
            "description": "Date of issuing receipt. This is NOT equal with createDate only for paragon document",
            "format": "date-time"
          },
          "createDate": {
            "type": "string",
            "description": "Date of creation in ekasa",
            "format": "date-time"
          },
          "processDate": {
            "type": "string",
            "description": "Process datetime of receipt on eKasa. Not present if offline receipt",
            "format": "date-time"
          },
          "uuid": {
            "type": "string",
            "description": "Receipt UUID generated by eKasa. Not present if offline receipt"
          },
          "pkp": {
            "type": "string",
            "description": "Pkp printed on receipt",
            "example": "Lti0zX8C7r9UyjY2uNobFVif7t3PK5/w3K5QYHL74oZW5LSgk96i3YBcxomP\\r\\n7EWFghCQeYvGKRAgR5YVf65aYJgGJDIq1sHKAXuZOnvAt5C7akzSJ30K1W1V\\r\\nw00f35dHVXMmUfEysBgBC8xI9cOYXvmxzEAcbkVGb3q5Ro08U9ZEzrxFnU6/\\r\\nDh7feCAfcsjLdpsNGQn/Zxf4mkwPODeQQynfJ9AkxM/TVfMiRldYY3QdwnSi\\r\\niA2Qc5TtE/fgGc9NV08pVzbrT3Aa4bmKif9dO9TIVswdShi1QQnT8Sv/73V/\\r\\nxsgBHMHMVAQsicQdYB3uqDtEfDWf67lZRjnvtLMLpw\\u003d\\u003d"
          },
          "okp": {
            "type": "string",
            "description": "OKP printed on receipt",
            "example": "474F294D-F2CC11DB-8507ECD8-A089B8FF-17539949"
          },
          "exception": {
            "type": "boolean",
            "description": "If this document has exception to send offline receipts later"
          },
          "electronic": {
            "type": "boolean",
            "description": "If receipt is going to be sent electronically"
          },
          "documentNumber": {
            "type": "string",
            "description": "Formatted cash document number"
          },
          "qrCode": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/EkasaStatus"
          },
          "documentType": {
            "type": "string",
            "description": "Document type enumeration:\n\n- `PD`: Standard (pokladnicny doklad)\n- `UF`: Invoice (uhrada faktury)\n- `ND`: Invalid document used for testing purposes (neplatny dokument)\n- `VY`: Cash withdrawal (vyber)\n- `VK`: Cash deposit (vklad)",
            "enum": [
              "PD",
              "UF",
              "ND",
              "VY",
              "VK"
            ]
          }
        }
      },
      "CashResponse": {
        "required": [
          "resultCode"
        ],
        "type": "object",
        "properties": {
          "cash": {
            "$ref": "#/components/schemas/Cash"
          },
          "printResultCode": {
            "type": "integer",
            "description": "Result code of the print. Present if print ended up with an error.",
            "format": "int32",
            "nullable": true,
            "example": 105
          },
          "warning": {
            "type": "string",
            "description": "Filled only if any warning"
          },
          "resultCode": {
            "type": "integer",
            "description": "Request result code. `0` = OK; `-1` = Unknown error; for values greater than zero see result code list.",
            "format": "int32",
            "example": 0
          }
        }
      },
      "Customer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "customerIdType": {
            "type": "string",
            "description": "Customer identifier type:\n\n- `ICO`: Organization ID, if assigned\n- `DIC`: Tax ID\n- `IC_DPH`: VAT ID\n- `INE`: Other customer identifier than `ICO`, `DIC` and `IC_DPH`",
            "enum": [
              "ICO",
              "DIC",
              "IC_DPH",
              "INE"
            ]
          },
          "status": {
            "$ref": "#/components/schemas/EkasaStatus"
          }
        },
        "description": "Customer id if added."
      },
      "DocumentItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "documentId": {
            "type": "string",
            "format": "uuid"
          },
          "externalId": {
            "type": "string"
          },
          "referenceDocumentId": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "description": "Document item type definition:\n\n- `SALE`: An item with a non-negative value recorded on the document (kladná položka)\n- `PACKING_REFUND`: item with a negative value for purchased backed-up packaging. Item with this type must have zero vat rate. (Vrátené obaly)\n- `REFUND`: Item with a negative value - cancellation of the previously registered item (Vrátená položka)\n- `UPDATE`: Adjustment item with the previous document reference. Its value is equal to the item in the referenced document, but with the opposite sign (Opravná položka)\n- `DISCOUNT`: Item with a negative value when providing a discount on the document (Zľava) \n- `DEPOSIT`: Negative item equal to the amount received in the advance (Odpočítaná záloha)\n- `VOUCHER`: Voucher application. The same voucher number must have exactly one sale item.\n- `PACKING`: Returnable packaging. Item with this type must have zero vat rate. (Vratné obaly)",
            "enum": [
              "SALE",
              "PACKING_REFUND",
              "REFUND",
              "UPDATE",
              "DISCOUNT",
              "DEPOSIT",
              "VOUCHER",
              "PACKING"
            ]
          },
          "price": {
            "type": "number"
          },
          "quantity": {
            "type": "number"
          },
          "name": {
            "type": "string"
          },
          "totalPrice": {
            "type": "number"
          },
          "vatRate": {
            "type": "string",
            "description": "Vat rate definition:\n\n- `VAT_20`: Basic vat rate (up to 2024)\n- `VAT_10`: Reduced vat rate (up to 2024)\n- `VAT_0`: Zero or no vat rate (eg. for packing refunds)\n- `VAT_23`: Basic vat rate (from 2025 onwards)\n- `VAT_19`: Reduced vat rate (from 2025 onwards)\n- `VAT_5`: Second reduced vat rate (from 2025 onwards)\n- `TOTAL`: VAT totals (only internal usage)",
            "enum": [
              "23%",
              "20%",
              "19%",
              "10%",
              "5%",
              "0%",
              "Suma"
            ]
          },
          "seller": {
            "$ref": "#/components/schemas/Seller"
          },
          "specialRegulation": {
            "type": "string",
            "description": "Special regulation reason:\n\n- `PDP`: Transfer of tax liability (prenesenie daňovej povinnosti)\n- `OOD`: Item exempt from tax (oslobodené od dane)\n- `CK`: Travel agency item (úprava zdaňovania prirážky - cestovné kancelárie)\n- `PT`: Used item (úprava zdaňovania prirážky - použitý tovar)\n- `UD`: Artwork (úprava zdaňovania prirážky - umelecké diela)\n- `ZPS`: Collectibles and antiques  (úprava zdaňovania prirážky - zberateľské predmety a starožitnosti)",
            "enum": [
              "PDP",
              "OOD",
              "CK",
              "PT",
              "UD",
              "ZPS"
            ]
          },
          "voucherNumber": {
            "type": "string"
          },
          "voucherRef": {
            "type": "string"
          }
        },
        "description": "List of receipt items"
      },
      "EkasaError": {
        "type": "object",
        "properties": {
          "errorType": {
            "type": "string",
            "description": "Error origin",
            "enum": [
              "PRINT",
              "EKASA",
              "MODEL",
              "WORM",
              "UNDOCUMENTED_ERROR",
              "UNDOCUMENTED_ERROR_RESEND_FAILED"
            ]
          },
          "errorCode": {
            "type": "integer",
            "description": "If the errorType is EKASA, refer to the SFS error code documentation",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Error description in text form"
          },
          "detail": {
            "type": "string",
            "description": "Error details"
          }
        },
        "description": "Filled when the request couldn't be processed. Usually requires fixing the data."
      },
      "EkasaStatus": {
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/EkasaError"
          },
          "warning": {
            "$ref": "#/components/schemas/EkasaWarning"
          },
          "documentToFix": {
            "$ref": "#/components/schemas/ResponseDocument"
          },
          "locationToFix": {
            "$ref": "#/components/schemas/Location"
          },
          "ok": {
            "type": "boolean"
          }
        },
        "description": "A status describing that the request hasn't been processed as it should be"
      },
      "EkasaWarning": {
        "type": "object",
        "properties": {
          "warningType": {
            "type": "string",
            "enum": [
              "PRINT",
              "EKASA",
              "MODEL",
              "WORM",
              "UNDOCUMENTED_ERROR",
              "UNDOCUMENTED_ERROR_RESEND_FAILED"
            ]
          },
          "message": {
            "type": "string"
          },
          "detail": {
            "type": "string"
          }
        },
        "description": "An optional warning further describing the status, for example that the request was offline."
      },
      "Gps": {
        "type": "object",
        "properties": {
          "x": {
            "type": "number"
          },
          "y": {
            "type": "number"
          }
        },
        "description": "GPS coordinates of the venue",
        "example": "Taxi SPZ ABC1234"
      },
      "Location": {
        "type": "object",
        "properties": {
          "internalId": {
            "type": "integer",
            "format": "int32"
          },
          "physicalAddress": {
            "$ref": "#/components/schemas/PhysicalAddress"
          },
          "gps": {
            "$ref": "#/components/schemas/Gps"
          },
          "other": {
            "type": "string"
          },
          "createDate": {
            "type": "string",
            "format": "date-time"
          },
          "processDate": {
            "type": "string",
            "format": "date-time"
          },
          "cashRegisterCode": {
            "type": "string"
          },
          "merchant": {
            "$ref": "#/components/schemas/Merchant"
          },
          "sendingCount": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "$ref": "#/components/schemas/EkasaStatus"
          }
        }
      },
      "Merchant": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "corporateFullName": {
            "type": "string"
          },
          "ico": {
            "type": "string"
          },
          "dic": {
            "type": "string"
          },
          "icDph": {
            "type": "string"
          },
          "physicalAddress": {
            "$ref": "#/components/schemas/PhysicalAddress"
          },
          "organizationUnit": {
            "$ref": "#/components/schemas/OrganizationUnit"
          },
          "status": {
            "$ref": "#/components/schemas/EkasaStatus"
          }
        },
        "description": "Data of the stored merchant"
      },
      "OrganizationUnit": {
        "required": [
          "cashRegisterCode",
          "cashRegisterType"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Venue name (optional)",
            "example": "nepovinný názov predajne"
          },
          "cashRegisterCode": {
            "type": "string",
            "description": "Code given to cash register by Tax office (mandatory)",
            "example": "88812345678900001"
          },
          "cashRegisterType": {
            "type": "string",
            "description": "Cash register type:\n\n- `PORTABLE`: Mobile cash register (e.g. for delivery services)\n- `STANDARD`: The cash register is fixed to a single venue and must be operated only at its registered address.",
            "example": "PORTABLE",
            "enum": [
              "PORTABLE",
              "STANDARD"
            ]
          },
          "location": {
            "$ref": "#/components/schemas/Location"
          }
        }
      },
      "PhysicalAddress": {
        "required": [
          "municipality",
          "postalCode",
          "street"
        ],
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "Country. (optional)",
            "example": "Slovenská Republika"
          },
          "municipality": {
            "type": "string",
            "description": "Municipality, its name of town (mandatory)",
            "example": "Bratislava"
          },
          "street": {
            "type": "string",
            "description": "Name of the street (mandatory)",
            "example": "Miletičova"
          },
          "buildingNumber": {
            "type": "string",
            "description": "Building number (orientačné číslo) (optional)",
            "example": "4"
          },
          "propertyRegistrationNumber": {
            "type": "string",
            "description": "Property registration number (číslo budovy) (optional)",
            "example": "22"
          },
          "postalCode": {
            "type": "string",
            "description": "Postal code (mandatory)",
            "example": "99999"
          }
        },
        "description": "Physical address of the venue"
      },
      "ResponseDocument": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Document type enumeration:\n\n- `PD`: Standard (pokladnicny doklad)\n- `UF`: Invoice (uhrada faktury)\n- `ND`: Invalid document used for testing purposes (neplatny dokument)\n- `VY`: Cash withdrawal (vyber)\n- `VK`: Cash deposit (vklad)",
            "enum": [
              "PD",
              "UF",
              "ND",
              "VY",
              "VK"
            ]
          },
          "externalId": {
            "type": "string",
            "description": "External custom id"
          },
          "invoiceId": {
            "type": "string",
            "description": "Invoice Id"
          },
          "merchant": {
            "$ref": "#/components/schemas/Merchant"
          },
          "cashRegisterCode": {
            "type": "string",
            "description": "Cash register code",
            "example": "88812345678900001"
          },
          "amount": {
            "type": "number",
            "description": "Amount of receipt",
            "example": 236.23
          },
          "issueDate": {
            "type": "string",
            "description": "Date of issuing receipt. This is NOT equal with createDate only for paragon document",
            "format": "date-time"
          },
          "createDate": {
            "type": "string",
            "description": "Date of creation in ekasa",
            "format": "date-time"
          },
          "processDate": {
            "type": "string",
            "description": "Process datetime of receipt on eKasa. Not present if offline receipt",
            "format": "date-time"
          },
          "customer": {
            "$ref": "#/components/schemas/Customer"
          },
          "paragonId": {
            "type": "integer",
            "description": "Paragon id is generated in sequence for each paragon.",
            "format": "int32"
          },
          "sequenceId": {
            "type": "integer",
            "description": "Sequence id. Restarted by every month starting of 1 in sequence",
            "format": "int32"
          },
          "uuid": {
            "type": "string",
            "description": "Receipt UUID generated by eKasa. Not present if offline receipt",
            "example": "O-544C525A6D5B47198C525A6D5BC"
          },
          "pkp": {
            "type": "string",
            "description": "Pkp printed on receipt",
            "example": "ZRvwrY1m0/lGyJaFSQd87GTXV/3+X/fRRw4j0ndyYfjJlujvWPeYXzdkBanV\\r\\n93Jz9aPlUfckYxTvJ5LRvxBlPVN947oo8QQth4UulkBtVdK++4GBk0gkPxb7\\r\\nBueGHps0liogyYexb3Yz3wa7R6IkbFAq5BLVxtO4hMNk+r4gqa9/+cvJbdvn\\r\\nGwzWzsxaHvav6dWiJXCiEcR2mA8N7RYiBN0hiCrIbKmzoi1bYrVsm7sy2ZWh\\r\\nL/Api7TupZhQCkHK+oqgAtcU4Zmw9AC1JekvSW7eIa/NKVKNdAsrMAXQ6DKF\\r\\nLw2WYq6LcramkaG3INBOEfwV5HkuondeOpKAAr1aNw\\u003d\\u003d"
          },
          "okp": {
            "type": "string",
            "description": "OKP printed on receipt",
            "example": "ED5592BF-19DB7396-19546BE7-7DC20E0A-75BB0777"
          },
          "qrCode": {
            "type": "string",
            "description": "Qr code printed on receipt",
            "example": "ED5592BF-19DB7396-19546BE7-7DC20E0A-75BB0777:88812345678900001:220212222223:11:236.23"
          },
          "documentEntries": {
            "type": "array",
            "description": "List of receipt items",
            "items": {
              "$ref": "#/components/schemas/DocumentItem"
            }
          },
          "vatRateSums": {
            "type": "array",
            "description": "Vat rate sums listed on document receipt",
            "items": {
              "$ref": "#/components/schemas/VatRateSum"
            }
          },
          "paymentTypes": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "description": "Payment types and sums used for receipt payment"
            },
            "description": "Payment types and sums used for receipt payment"
          },
          "header": {
            "type": "string",
            "description": "Custom header to print at the top of the receipt",
            "example": "Header text"
          },
          "footer": {
            "type": "string",
            "description": "Custom footer to print at the bottom of the receipt",
            "example": "Footer text"
          },
          "exception": {
            "type": "boolean",
            "description": "If this document has exception to send offline receipts later"
          },
          "electronic": {
            "type": "boolean",
            "description": "If receipt is going to be sent electronically"
          },
          "electronicReceipt": {
            "type": "string",
            "description": "Electronic receipt as bitmap in BASE64 encoding"
          },
          "documentNumber": {
            "type": "string",
            "description": "Formatted document number"
          },
          "packingSum": {
            "type": "number",
            "description": "Sum of all packing and packing refund items, which were omitted from VAT table. Present if such items exist."
          },
          "status": {
            "$ref": "#/components/schemas/EkasaStatus"
          }
        },
        "description": "Document representation in response message."
      },
      "Seller": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "sellerIdType": {
            "type": "string",
            "enum": [
              "DIC",
              "IC_DPH"
            ]
          }
        }
      },
      "VatRateSum": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "Vat rate definition:\n\n- `VAT_20`: Basic vat rate (up to 2024)\n- `VAT_10`: Reduced vat rate (up to 2024)\n- `VAT_0`: Zero or no vat rate (eg. for packing refunds)\n- `VAT_23`: Basic vat rate (from 2025 onwards)\n- `VAT_19`: Reduced vat rate (from 2025 onwards)\n- `VAT_5`: Second reduced vat rate (from 2025 onwards)\n- `TOTAL`: VAT totals (only internal usage)",
            "example": "VAT_20",
            "enum": [
              "23%",
              "20%",
              "19%",
              "10%",
              "5%",
              "0%",
              "Suma"
            ]
          },
          "base": {
            "type": "number",
            "description": "Base sum for vat",
            "example": 100
          },
          "vat": {
            "type": "number",
            "description": "Issued vat",
            "example": 20
          },
          "sum": {
            "type": "number",
            "description": "Total sum with vat",
            "example": 120
          }
        },
        "description": "Vat rate sums listed on document receipt"
      },
      "ErrorResponse": {
        "required": [
          "resultCode"
        ],
        "type": "object",
        "properties": {
          "resultCode": {
            "type": "integer",
            "description": "Request result code. `0` = OK; `-1` = Unknown error; for values greater than zero see result code list.",
            "format": "int32",
            "example": 0
          },
          "warning": {
            "type": "string",
            "description": "Filled only if any warning"
          },
          "error": {
            "type": "string",
            "description": "More detailed text description of the error. Do not use this field to retrieve the API call result, use the `resultCode` instead. This field has an informative character and its main purpose is to better identify the error reason. This field should be logged."
          },
          "ekasaStatus": {
            "$ref": "#/components/schemas/EkasaStatus"
          }
        }
      },
      "CashRequest": {
        "required": [
          "amount"
        ],
        "type": "object",
        "properties": {
          "externalId": {
            "type": "string",
            "description": "External id from external software"
          },
          "printer": {
            "$ref": "#/components/schemas/Printer"
          },
          "amount": {
            "type": "number",
            "description": "Cash in/out to/from cashier. Positive value means deposit, negative withdraw.",
            "example": 100
          },
          "exception": {
            "type": "boolean",
            "description": "If set to `true`, the merchant has granted an exception from sending data from ORP to eKasa system."
          },
          "openDrawer": {
            "type": "boolean",
            "description": "If set to `true`, a cash drawer will be opened while printing"
          }
        }
      },
      "Printer": {
        "type": "object",
        "properties": {
          "windowSize": {
            "type": "integer",
            "description": "How much data can be printed at once. Use `null` for default value. Applicable only for \"Get offline report\" request on ST POS, otherwise ignored.",
            "format": "int32",
            "example": 2500
          },
          "printDelay": {
            "type": "integer",
            "description": "Time in milliseconds to wait for the printer to cool down after printing certain amount of data defined in `windowSize` param. Use `null` for default value.  Applicable only for \"Get offline report\" request on ST POS, otherwise ignored.",
            "format": "int64",
            "example": 10000,
            "default": 13000
          }
        },
        "description": "Printer on which the document should be printed. Set `null` or empty for default printer."
      },
      "BlockStorageInfo": {
        "type": "object",
        "properties": {
          "totalBlocks": {
            "type": "integer",
            "description": "Storage size in blocks",
            "format": "int64",
            "example": 100000
          },
          "writtenBlocks": {
            "type": "integer",
            "description": "How many blocks were written so far",
            "format": "int64",
            "example": 3251
          },
          "blockSize": {
            "type": "integer",
            "description": "One block size in bytes",
            "format": "int64",
            "example": 500
          }
        }
      },
      "ChduInfoResponse": {
        "required": [
          "resultCode"
        ],
        "type": "object",
        "properties": {
          "params": {
            "$ref": "#/components/schemas/ChduParams"
          },
          "storageInfo": {
            "$ref": "#/components/schemas/BlockStorageInfo"
          },
          "warning": {
            "type": "string",
            "description": "Filled only if any warning"
          },
          "resultCode": {
            "type": "integer",
            "description": "Request result code. `0` = OK; `-1` = Unknown error; for values greater than zero see result code list.",
            "format": "int32",
            "example": 0
          }
        }
      },
      "ChduParams": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the CHDU",
            "example": "CHDU Storage"
          },
          "version": {
            "type": "string",
            "description": "CHDU version",
            "example": "A123"
          },
          "sn": {
            "type": "string",
            "description": "123-456"
          }
        },
        "description": "Static information about the CHDU"
      },
      "DocumentResponse": {
        "required": [
          "resultCode"
        ],
        "type": "object",
        "properties": {
          "document": {
            "$ref": "#/components/schemas/ResponseDocument"
          },
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResponseDocument"
            }
          },
          "printResultCode": {
            "type": "integer",
            "description": "Result code of the print. Present if print ended up with an error.",
            "format": "int32",
            "nullable": true,
            "example": 105
          },
          "warning": {
            "type": "string",
            "description": "Filled only if any warning"
          },
          "resultCode": {
            "type": "integer",
            "description": "Request result code. `0` = OK; `-1` = Unknown error; for values greater than zero see result code list.",
            "format": "int32",
            "example": 0
          }
        }
      },
      "DocumentByExternalId": {
        "required": [
          "externalId"
        ],
        "type": "object",
        "properties": {
          "externalId": {
            "type": "string",
            "description": "External software unique id, that were sent on storing"
          }
        },
        "description": "Get document by External(Software) Id"
      },
      "DocumentByInternalId": {
        "required": [
          "internalId"
        ],
        "type": "object",
        "properties": {
          "internalId": {
            "type": "integer",
            "description": "Internal ID generated by PPEKK",
            "format": "int32"
          }
        },
        "description": "Get document by Internal Id"
      },
      "DocumentByOkp": {
        "required": [
          "okp"
        ],
        "type": "object",
        "properties": {
          "okp": {
            "type": "string",
            "description": "OKP code of document which should be loaded"
          }
        },
        "description": "Get document by OKP"
      },
      "DocumentByPkp": {
        "required": [
          "pkp"
        ],
        "type": "object",
        "properties": {
          "pkp": {
            "type": "string",
            "description": "PKP code of document which should be loaded"
          }
        },
        "description": "Get document by PKP"
      },
      "DocumentBySequenceId": {
        "required": [
          "month",
          "sequenceId",
          "year"
        ],
        "type": "object",
        "properties": {
          "sequenceId": {
            "type": "integer",
            "description": "Sequence id generated by eKasa client on creation",
            "format": "int32"
          },
          "month": {
            "type": "integer",
            "description": "Month in which were the document created",
            "format": "int32"
          },
          "year": {
            "type": "integer",
            "description": "Year in which were the document created",
            "format": "int32"
          }
        },
        "description": "Get document by sequence Id"
      },
      "DocumentByUUID": {
        "required": [
          "uuid"
        ],
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "description": "UUID of document, that was received in response from eKasa",
            "example": "O-544C525A6D5B47198C525A6D5BC"
          }
        },
        "description": "Get document by UUID"
      },
      "GetDocumentRequest": {
        "type": "object",
        "properties": {
          "documentByExternalId": {
            "$ref": "#/components/schemas/DocumentByExternalId"
          },
          "documentByInternalId": {
            "$ref": "#/components/schemas/DocumentByInternalId"
          },
          "documentByOkp": {
            "$ref": "#/components/schemas/DocumentByOkp"
          },
          "documentByPkp": {
            "$ref": "#/components/schemas/DocumentByPkp"
          },
          "documentBySequenceId": {
            "$ref": "#/components/schemas/DocumentBySequenceId"
          },
          "documentByUUID": {
            "$ref": "#/components/schemas/DocumentByUUID"
          },
          "printer": {
            "$ref": "#/components/schemas/Printer"
          },
          "offlineDocuments": {
            "type": "boolean",
            "description": "For getting all documents that are offline (still not sent to eKasa)"
          }
        }
      },
      "LocationResponse": {
        "required": [
          "resultCode"
        ],
        "type": "object",
        "properties": {
          "location": {
            "$ref": "#/components/schemas/Location"
          },
          "warning": {
            "type": "string",
            "description": "Filled only if any warning"
          },
          "resultCode": {
            "type": "integer",
            "description": "Request result code. `0` = OK; `-1` = Unknown error; for values greater than zero see result code list.",
            "format": "int32",
            "example": 0
          }
        }
      },
      "MerchantResponse": {
        "required": [
          "resultCode"
        ],
        "type": "object",
        "properties": {
          "merchant": {
            "$ref": "#/components/schemas/Merchant"
          },
          "warning": {
            "type": "string",
            "description": "Filled only if any warning"
          },
          "resultCode": {
            "type": "integer",
            "description": "Request result code. `0` = OK; `-1` = Unknown error; for values greater than zero see result code list.",
            "format": "int32",
            "example": 0
          }
        }
      },
      "GetMerchantRequest": {
        "type": "object",
        "properties": {
          "merchantBySequenceId": {
            "$ref": "#/components/schemas/MerchantBySequenceId"
          },
          "merchantByCashRegisterCode": {
            "$ref": "#/components/schemas/MerchantByCashRegisterCode"
          }
        }
      },
      "MerchantByCashRegisterCode": {
        "required": [
          "cashRegisterCode"
        ],
        "type": "object",
        "properties": {
          "cashRegisterCode": {
            "type": "string",
            "description": "Cash register code",
            "example": "88812345678900001"
          }
        },
        "description": "Get merchant by cash register code"
      },
      "MerchantBySequenceId": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Sequence Id",
            "format": "int32",
            "example": 1
          }
        },
        "description": "Get merchant by sequence Id"
      },
      "CertificateStatusResponse": {
        "required": [
          "resultCode"
        ],
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/MerchantCertificateStatus"
          },
          "warning": {
            "type": "string",
            "description": "Filled only if any warning"
          },
          "resultCode": {
            "type": "integer",
            "description": "Request result code. `0` = OK; `-1` = Unknown error; for values greater than zero see result code list.",
            "format": "int32",
            "example": 0
          }
        }
      },
      "MerchantCertificateStatus": {
        "type": "object",
        "properties": {
          "expirationDate": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "type": "string",
            "description": "State of the certificate of current merchant:\n\n- OK: The certificate is valid and will be valid for more than one month. No warning or error should be displayed\n- EXPIRES_SOON: The certificate is valid and will be valid for less than one month. The calling app should display a warning\n- EXPIRED: The certificate is not valid anymore and must be replaced. The calling app should display an error",
            "enum": [
              "OK",
              "EXPIRES_SOON",
              "EXPIRED"
            ]
          }
        },
        "description": "Structure with merchant data validity"
      },
      "GetOfflineDocumentsRequest": {
        "type": "object",
        "properties": {
          "offlineDocumentsFilter": {
            "$ref": "#/components/schemas/OfflineDocumentsFilter"
          },
          "printer": {
            "$ref": "#/components/schemas/Printer"
          },
          "offset": {
            "minimum": 0,
            "type": "integer",
            "description": "How many documents to skip. Used when not all document were printed in previous request.",
            "format": "int32",
            "default": 0
          },
          "limit": {
            "minimum": 1,
            "type": "integer",
            "description": "How many documents should be returned at most. Keep in mind, that the limit is applied before the filtration.",
            "format": "int32",
            "default": 10000
          }
        }
      },
      "OfflineDocumentsFilter": {
        "type": "object",
        "properties": {
          "sequenceId": {
            "type": "integer",
            "description": "Document sequence id",
            "format": "int32",
            "example": 25
          },
          "from": {
            "type": "string",
            "description": "Only documents from this date and time will be returned",
            "format": "date-time"
          },
          "to": {
            "type": "string",
            "description": "Only documents to this date and time will be returned",
            "format": "date-time"
          }
        },
        "description": "Used to filter documents"
      },
      "OfflineReportResponse": {
        "required": [
          "resultCode"
        ],
        "type": "object",
        "properties": {
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResponseDocument"
            }
          },
          "locations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Location"
            }
          },
          "partialPrintInfo": {
            "$ref": "#/components/schemas/PartialPrintInfo"
          },
          "warning": {
            "type": "string",
            "description": "Filled only if any warning"
          },
          "resultCode": {
            "type": "integer",
            "description": "Request result code. `0` = OK; `-1` = Unknown error; for values greater than zero see result code list.",
            "format": "int32",
            "example": 0
          }
        }
      },
      "PartialPrintInfo": {
        "required": [
          "printerErrorResultCode"
        ],
        "type": "object",
        "properties": {
          "printedItemCount": {
            "type": "integer",
            "description": "How many items have been printed",
            "format": "int32",
            "example": 32
          },
          "totalItemCount": {
            "type": "integer",
            "description": "Total items that should had been printed",
            "format": "int32",
            "example": 100
          },
          "printerErrorResultCode": {
            "type": "integer",
            "description": "Result code of the printer error which caused the partial print",
            "format": "int32",
            "example": 105
          },
          "printerErrorMessage": {
            "type": "string",
            "description": "Additional description of the error which caused the partial print",
            "example": "No paper."
          }
        }
      },
      "ConnectedPrinterParams": {
        "type": "object",
        "properties": {
          "numberOfCharsInRow": {
            "type": "integer",
            "description": "How many characters can be printed in one row when using default font",
            "format": "int32",
            "example": 48
          }
        },
        "description": "Information about printer"
      },
      "PrinterResponse": {
        "required": [
          "resultCode"
        ],
        "type": "object",
        "properties": {
          "params": {
            "$ref": "#/components/schemas/ConnectedPrinterParams"
          },
          "warning": {
            "type": "string",
            "description": "Filled only if any warning"
          },
          "resultCode": {
            "type": "integer",
            "description": "Request result code. `0` = OK; `-1` = Unknown error; for values greater than zero see result code list.",
            "format": "int32",
            "example": 0
          }
        }
      },
      "AppSettings": {
        "type": "object",
        "properties": {
          "connectTimeout": {
            "maximum": 60,
            "minimum": 1,
            "type": "integer",
            "description": "How many seconds should the app wait to connect to the SFS",
            "format": "int32",
            "nullable": true,
            "example": 4
          },
          "readTimeout": {
            "maximum": 60,
            "minimum": 1,
            "type": "integer",
            "description": "How many seconds should the app wait to read data from SFS",
            "format": "int32",
            "nullable": true,
            "example": 4
          },
          "startingBlock": {
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "Application settings"
      },
      "SettingsResponse": {
        "required": [
          "resultCode"
        ],
        "type": "object",
        "properties": {
          "appSettings": {
            "$ref": "#/components/schemas/AppSettings"
          },
          "warning": {
            "type": "string",
            "description": "Filled only if any warning"
          },
          "resultCode": {
            "type": "integer",
            "description": "Request result code. `0` = OK; `-1` = Unknown error; for values greater than zero see result code list.",
            "format": "int32",
            "example": 0
          }
        }
      },
      "StatusResponse": {
        "required": [
          "resultCode"
        ],
        "type": "object",
        "properties": {
          "appStatus": {
            "type": "string",
            "enum": [
              "OK",
              "DOCUMENT_STUCK",
              "DOCUMENT_NOT_PRINTED"
            ]
          },
          "warning": {
            "type": "string",
            "description": "Filled only if any warning"
          },
          "resultCode": {
            "type": "integer",
            "description": "Request result code. `0` = OK; `-1` = Unknown error; for values greater than zero see result code list.",
            "format": "int32",
            "example": 0
          }
        }
      },
      "VersionData": {
        "type": "object",
        "properties": {
          "appName": {
            "title": "Name of the app",
            "type": "string",
            "description": "Official app name without version to distinguish the eKasa variant.",
            "example": "eKasa"
          },
          "appVersion": {
            "title": "App version",
            "type": "string",
            "description": "App version in semantic format, starting with letter `v`.",
            "example": "v1.2.30"
          },
          "apiVersion": {
            "title": "API version",
            "type": "string",
            "description": "API version in semantic format.",
            "example": "1.0.0"
          }
        },
        "description": "Static information about current app and API versions"
      },
      "VersionResponse": {
        "required": [
          "resultCode"
        ],
        "type": "object",
        "properties": {
          "version": {
            "$ref": "#/components/schemas/VersionData"
          },
          "warning": {
            "type": "string",
            "description": "Filled only if any warning"
          },
          "resultCode": {
            "type": "integer",
            "description": "Request result code. `0` = OK; `-1` = Unknown error; for values greater than zero see result code list.",
            "format": "int32",
            "example": 0
          }
        }
      },
      "GenericResponse": {
        "required": [
          "resultCode"
        ],
        "type": "object",
        "properties": {
          "warning": {
            "type": "string",
            "description": "Filled only if any warning"
          },
          "resultCode": {
            "type": "integer",
            "description": "Request result code. `0` = OK; `-1` = Unknown error; for values greater than zero see result code list.",
            "format": "int32",
            "example": 0
          }
        }
      },
      "OpenDrawerRequest": {
        "type": "object",
        "properties": {
          "printer": {
            "$ref": "#/components/schemas/Printer"
          }
        }
      },
      "LogoPreviewResponse": {
        "required": [
          "resultCode"
        ],
        "type": "object",
        "properties": {
          "printedLogoData": {
            "type": "string"
          },
          "electronicLogoData": {
            "type": "string"
          },
          "warning": {
            "type": "string",
            "description": "Filled only if any warning"
          },
          "resultCode": {
            "type": "integer",
            "description": "Request result code. `0` = OK; `-1` = Unknown error; for values greater than zero see result code list.",
            "format": "int32",
            "example": 0
          }
        }
      },
      "PreviewImageRequest": {
        "type": "object",
        "properties": {
          "imageData": {
            "type": "string",
            "description": "Image data. Use null remove the current image.",
            "format": "BASE64"
          },
          "fitOnReceipt": {
            "type": "boolean",
            "description": "If set to true, the preview will be generated with the receipt with, so the user can see how the image will look on the paper or electronic receipt.",
            "format": "boolean",
            "default": false
          },
          "format": {
            "type": "string",
            "description": "Defines which previews should be generated. PRINT, ELECTRONIC, or BOTH.",
            "format": "enumeration",
            "default": "PRINT",
            "enum": [
              "PRINT",
              "ELECTRONIC",
              "BOTH"
            ]
          }
        }
      },
      "SendOfflineRequest": {
        "required": [
          "limit"
        ],
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "description": "How many documents and locations can be sent in this batch",
            "format": "int32",
            "example": 5
          }
        }
      },
      "DocumentReceiptItem": {
        "required": [
          "itemType",
          "name",
          "vatRate"
        ],
        "type": "object",
        "properties": {
          "externalId": {
            "type": "string",
            "description": "External id",
            "example": "0001"
          },
          "price": {
            "type": "number"
          },
          "quantity": {
            "type": "number"
          },
          "name": {
            "type": "string",
            "description": "Name of the item",
            "example": "Tovar"
          },
          "referenceDocumentId": {
            "type": "string",
            "description": "Reference id of receipt which this `UPDATE` or `REFUND` applies on",
            "example": "O-544C525A6D5B47198C525A6D5BC"
          },
          "vatRate": {
            "type": "string",
            "description": "Vat rate definition:\n\n- `VAT_20`: Basic vat rate (up to 2024)\n- `VAT_10`: Reduced vat rate (up to 2024)\n- `VAT_0`: Zero or no vat rate (eg. for packing refunds)\n- `VAT_23`: Basic vat rate (from 2025 onwards)\n- `VAT_19`: Reduced vat rate (from 2025 onwards)\n- `VAT_5`: Second reduced vat rate (from 2025 onwards)\n- `TOTAL`: VAT totals (only internal usage)",
            "example": "VAT_19",
            "enum": [
              "23%",
              "20%",
              "19%",
              "10%",
              "5%",
              "0%",
              "Suma"
            ]
          },
          "itemType": {
            "type": "string",
            "description": "Document item type definition:\n\n- `SALE`: An item with a non-negative value recorded on the document (kladná položka)\n- `PACKING_REFUND`: item with a negative value for purchased backed-up packaging. Item with this type must have zero vat rate. (Vrátené obaly)\n- `REFUND`: Item with a negative value - cancellation of the previously registered item (Vrátená položka)\n- `UPDATE`: Adjustment item with the previous document reference. Its value is equal to the item in the referenced document, but with the opposite sign (Opravná položka)\n- `DISCOUNT`: Item with a negative value when providing a discount on the document (Zľava) \n- `DEPOSIT`: Negative item equal to the amount received in the advance (Odpočítaná záloha)\n- `VOUCHER`: Voucher application. The same voucher number must have exactly one sale item.\n- `PACKING`: Returnable packaging. Item with this type must have zero vat rate. (Vratné obaly)",
            "example": "K",
            "enum": [
              "SALE",
              "PACKING_REFUND",
              "REFUND",
              "UPDATE",
              "DISCOUNT",
              "DEPOSIT",
              "VOUCHER",
              "PACKING"
            ]
          },
          "specialRegulation": {
            "type": "string",
            "description": "Special regulation reason:\n\n- `PDP`: Transfer of tax liability (prenesenie daňovej povinnosti)\n- `OOD`: Item exempt from tax (oslobodené od dane)\n- `CK`: Travel agency item (úprava zdaňovania prirážky - cestovné kancelárie)\n- `PT`: Used item (úprava zdaňovania prirážky - použitý tovar)\n- `UD`: Artwork (úprava zdaňovania prirážky - umelecké diela)\n- `ZPS`: Collectibles and antiques  (úprava zdaňovania prirážky - zberateľské predmety a starožitnosti)",
            "example": "CK",
            "enum": [
              "PDP",
              "OOD",
              "CK",
              "PT",
              "UD",
              "ZPS"
            ]
          },
          "seller": {
            "$ref": "#/components/schemas/Seller"
          },
          "voucherNumber": {
            "type": "string",
            "description": "Number of exchange voucher if itemType is `VOUCHER` (required) or `SALE` (optional)",
            "example": "123456"
          }
        },
        "description": "Items sold on receipt."
      },
      "StoreDocumentRequest": {
        "required": [
          "amount",
          "type"
        ],
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Document type enumeration:\n\n- `PD`: Standard (pokladnicny doklad)\n- `UF`: Invoice (uhrada faktury)\n- `ND`: Invalid document used for testing purposes (neplatny dokument)\n- `VY`: Cash withdrawal (vyber)\n- `VK`: Cash deposit (vklad)",
            "enum": [
              "PD",
              "UF",
              "ND",
              "VY",
              "VK"
            ]
          },
          "externalId": {
            "type": "string",
            "description": "Id of this document in external software. Used for search purposes.",
            "example": "03/02"
          },
          "invoiceId": {
            "type": "string",
            "description": "Invoice number. Required when the document type is `UF`.",
            "example": "FA00001"
          },
          "amount": {
            "type": "number",
            "description": "Amount of receipt. This **is checked** against the sum of all items"
          },
          "paragonDate": {
            "type": "string",
            "description": "Issue date of a paragon. Used for paragon registration only.",
            "format": "date-time"
          },
          "paragonNumber": {
            "type": "integer",
            "description": "Paragon number. Must be filled along with paragonDate.",
            "format": "int32"
          },
          "documentEntries": {
            "type": "array",
            "description": "Items sold on receipt.",
            "items": {
              "$ref": "#/components/schemas/DocumentReceiptItem"
            }
          },
          "payments": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "description": "Payment types and sums used for receipt payment. This parameter sum is **NOT checked** against receipt sum."
            },
            "description": "Payment types and sums used for receipt payment. This parameter sum is **NOT checked** against receipt sum."
          },
          "header": {
            "type": "string",
            "description": "Custom header to print at the top of the receipt"
          },
          "footer": {
            "type": "string",
            "description": "Custom footer to print at the bottom of the receipt"
          },
          "printer": {
            "$ref": "#/components/schemas/Printer"
          },
          "electronicReceipt": {
            "type": "boolean",
            "description": "If the client wants an electronic receipt, set this value to `true`. Receipt will not be printed only if is online. Offline receipts will always be printed."
          },
          "openDrawer": {
            "type": "boolean",
            "description": "If set to `true`, a cash drawer will be opened while printing."
          },
          "exception": {
            "type": "boolean",
            "description": "If set to `true`, the merchant has granted an exception from sending data from ORP to eKasa system.",
            "default": false
          }
        }
      },
      "StoreImageRequest": {
        "type": "object",
        "properties": {
          "imageData": {
            "type": "string",
            "description": "Image data. Use null remove the current image.",
            "format": "BASE64"
          }
        }
      },
      "StoreMerchantRequest": {
        "required": [
          "authenticationData",
          "identificationData",
          "keyStorePassword",
          "privateKeyPassword"
        ],
        "type": "object",
        "properties": {
          "identificationData": {
            "type": "string",
            "description": "Identification data generated in clients eKasa account. XML file as string.",
            "example": "<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"yes\\\"?>\\n<eu:IdentityData xmlns:eu=\\\"http://financnasprava.sk/ekasa/udaje/schema/v2\\\">\\n\\t<eu:Dic>1234567890</eu:Dic>\\n\\t<eu:Ico>99999999</eu:Ico>\\n\\t<eu:CorporateBodyFullName>O.C.a.F.A. PORTABLE_DIC</eu:CorporateBodyFullName>\\n\\t<eu:OrganizationUnit>\\n\\t\\t<eu:OrganizationUnitName>nepovinný názov predajne</eu:OrganizationUnitName>\\n\\t\\t<eu:CashRegisterCode>88812345678900001</eu:CashRegisterCode>\\n\\t\\t<eu:CashRegisterType>PORTABLE</eu:CashRegisterType>\\n\\t</eu:OrganizationUnit>\\n\\t<eu:PhysicalAddress>\\n\\t\\t<eu:Country>Slovenská republika</eu:Country>\\n\\t\\t<eu:Municipality>Bratislava</eu:Municipality>\\n\\t\\t<eu:StreetName>Miletičova</eu:StreetName>\\n\\t\\t<eu:BuildingNumber>4</eu:BuildingNumber>\\n\\t\\t<eu:PropertyRegistrationNumber>22</eu:PropertyRegistrationNumber>\\n\\t\\t<eu:DeliveryAddress>\\n\\t\\t\\t<eu:PostalCode>99999</eu:PostalCode>\\n\\t\\t</eu:DeliveryAddress>\\n\\t</eu:PhysicalAddress>\\n</eu:IdentityData>"
          },
          "authenticationData": {
            "type": "string",
            "description": "Authentication data generated in clients eKasa account. XML file as string.",
            "example": "<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"yes\\\"?>\\n<eu:AuthData xmlns:eu=\\\"http://financnasprava.sk/ekasa/udaje/schema/v2\\\">\\n    <eu:KeyStoreType>PKCS12</eu:KeyStoreType>\\n    <eu:Data>MIITbgIBAzCCEygGCSqGSIb3DQEHAaCCExkEghMVMIITETCCBX4GCSqGSIb3DQEHAaCCBW8EggVrMIIFZzCCBWMGCyqGSIb3DQEMCgECoIIE+jCCBPYwKAYKKoZIhvcNAQwBAzAaBBR/MBZglKl5XQe7ZLoFhUEhUvMypgICBAAEggTITioyYrL8z+fZRZdQqW7v2jc/Pro8IaNclc+fzdRiHN6SWsecHT2FLtKYoAbgbPe0KakEYfj7LxloBGMUgVx7gaHghwxVkf2pwIdWgORQ5M3UMqeeMCFzV6dHOMUvoEnhejNPoUFxk/MV/RwF3V/omrYEQN5jAU/7LWWn9xvI9ANPvSRYuP6lsSUPNPsvqub0QcedbsKlxezBkAiFCBi+aAhXebmp76g1boE5ilYC6liD5bR0CeYq557Vp/2tWV9hXMTXvFDN2f24h08oNFSHus5mYWmKM5ZeOiCfzdAy9ARKzGC1sw+giYymUkgmfHwOc23XJHBn/Vk9m74J0TjE4RvbaSEV9SZBjdAwBEVzkUt8B/Q7AWwIz2fEX+yKVtByy0L4uNe29bxQ+XXw8boldoRo3PgRKgohZJuRraGMdRDGnCWUZzbJmdjrPghIJgP4qOMb7oAhHe+IkmbUjl6LrbRTYPWSiGXrazdFGr46ECvkLK3/hslfnMhVpLHHvzEQbHrkHevnpPTZJsExEwkqf3H7mE6HgqqElU5sHrrBDV/+Ef+4DeEH7RqdP9EV9Wy3mI7DO7kAg+p8hjE8DmG4vgXwhACdVn6ZVok9Zmhj4r01XqR9X7iO7MWSF8/aXJKM+DMnz4zPTBU4HJWrpiHC4wNvR94qZJhO9sObM1yyo5sRRCmDePpLmp6ndxoyOjt5TqOuuNRBRmGiNOiipGtckoV8FZXeZFu9isYiQA9U8ObI/+PJQ7oYoj6MkItC5hffOJJ2hg+X9JMeM/cRluoo3rWfGmmUKlVFQrmMrn4X9P70CvZkWIcSMcMenJqY/YIc+1uTSCbxCguCCIhw0MV8N6s6luGG/uXilY0fdtS58NkSYqsF2gJxP8AyGl7ylTWRO5uyogMdcAwXr1zhwNeacBYnFst8gb/b/nkwfmg2TXQvo5l3DUd1VeGeUanpY3tFwYb3NoOWjQPPLMSOY17mpHiRBAPSqZ0Dxdm3YvxSTZ8aly+CPH5J5/ul09ClDVAClYTJNw0dDePm/+APRulKNFyxknqsNFRhoUT0mYAD5Vv6T/koFfiRspLXZzHetKp59pMt/hifnrbR2pOEt5Na8RqZskyEN6JSvl7dlZOLb8/s7eSi4XrYM7JqBOXvNIlGJ7R1nmcQKsHEGC8N164jneFx9EtHjhQ0FBS5hO6d743HAozgiZ+WvijtIdFcjpsv/e/5K5lju89cMG6jH7MOo/fUfGqCu07NrLpZxhoUpUlX62xL1lRn4BdPpwHrMBcq5EZshFwA+VY7ilHDovC/y2rdOwPDC+WrDXTwyOI+YXNbYMMa7xoXuJexnhoMPalk5xrpCQUA4EbdW6sx3b5Rg2bZIzcsBncHhYzhLf8qPxmWC+erFnGTYI8B3OaL8yGQcrBAEvwLP1b1O7kL0c34NEjcJ7/ENwd4JVZXlDIr37qNYUYg0ERzjX18H1db5ywSCMM99cfd0UreBbfiQNH3SpeTyu0IYDi3RoyOJz+/L6lmIcPOb/OKheUCuXeMJ/0uGzQG7dqsuOqbpbOCdyfNkaJte8s/avoQklZfs1wt+5fY3TEuaIkGkiv0hz29iqLkpNwkg6aHfLB2ub/e2rFLOxuQ1pF4/EmKMVYwMQYJKoZIhvcNAQkUMSQeIgA4ADgAOAAxADIAMwA0ADUANgA3ADgAOQAwADAAMAAwADEwIQYJKoZIhvcNAQkVMRQEElRpbWUgMTU0ODkzNDU4OTE5MjCCDYsGCSqGSIb3DQEHBqCCDXwwgg14AgEAMIINcQYJKoZIhvcNAQcBMCgGCiqGSIb3DQEMAQYwGgQUEXa1MC2hctvQuNkIUGScz65lVF8CAgQAgIINOGzdDugbuy+UXtj/aSWi1qUN5xx+vZiKWyz0M7ukMeyxCHyXLDMMKGtaCWoY2fVvdUPCH7SPwhLy+uALkSDpAJC+6xL8WN+JV3QYECPOS9IhLa2HMa1mSr1Y6BfPBpW+70xdr20T+Djw2svMlrkLflxyO9JJXpCxKmIYlAEdedBYyybDViHXmjshHdTb7CVeh4rD0evZc4mrUIZG5WoXkgfRKjjS2PNYaHmfo2MXsDq287Qayu7OInW283mK9/0WI3wKoHxsncfZeUgDIbje8+IMUCnDnzw79QFzYHVsHupBfK0oG8QH6gkXKR3TgQ7U6dA0KXapN6Z3yXCFqvkucnthFaCe99EF60ve22ybuKPlpvngvDAkEY25Th/Zc5kJKbOvyft2aAfVFbSDhxbH1Y+KzR7Sgm6t2BVoNF9qcm0kyUmHExRs34COWKoVC3ETcL5DmrtZbkGHC1ciV9ipdP1BfAK1OsWK1rmdCwrK6jqwHMcJVWGTTKFyLSza2h9gaBb0sQe5+X8i5yWTYdvf3ujbC5+EawhbqeyFU30ul+R8rSbwz7PKO2HotBfI9cKy74WZ3w03Cfo1b1/t61KVr5gxtmLHvtgkDsuveodq6eAgJttNUiGlFy82qF+095hS/dmxfU7l3VcG3uclsavkW6xEMX+H/MlE1QW6ck8Y/eXIGBSDTTVi9DJDAo6Wsn8qVTXYpkVbaH4FT2wTbBJVcjw22nV+P8Itoxoguj6p7XPhb2Ie87f9QH2u4kHu3qj5RVyX5hY2XXSyNVUiQ2NrfIkS8bxWvli9d6+iGjtSXnb93EUbDj6NnH7rvFmvY+7QSnZpxgvhnWTM9SXg8nmvwi/GdQOBrRIf9g/j80c/iu/2BSuGuqae523T2xnsaPQB+nSNPe3dmnf5FagARhdHo+zxpuulk7bzliyc6twje0tkcn2FGQFk0P9ILPzAYgwy66KxONdKXJP9RN3H1g0L7Z9FV5Le09kzkAQwioDsg5VMph7QHdcyg8axzhj9QkV5dJft0uvDMJXceolCODiA6hYYvnJa/pc83WMS1HTUUhioTBo4wWALp590xh1jX67wCY5kmsbjgrBN8Hys86/YNZK+ApvafFPuTdcplbCzkoL4KzapZVMnyrXt3CihqcGdyrE3hjKMVeNXe8rk6sy2ktY3AzRQapaFkHj3zBtl6XjlYVtnngTBqyMFnkr43MiDkJ2xFekoefSYJ0Qi9+sptsvVOpHG5UxylPY5UGlTn/WXI6PWjUdBWBU7OPS38aBuBs7hCGqTLmR4q6XgL71ThlvhRCA+adq0gJAjrXfkBqBol7ohwkNNN5O3DU0OGNZnO9tZK1nafRNvoDJDiDlQj95sjK9QTIO4Qd4nzuNZQTtyM5PXgTjKfHp6JQwRJZBbb9kYRlyKvQZzQ1bA8a8R/+275dFKfxhM7desv+ooUa+SmbZtK1XESMG9uUJ/qLxUGOgGKbso4jHWw+LZaglyIc6QfbnnY90hBmInp+rJOPDovEQeLHp5ffbXZwupbIfqSv3VTRCY6U8mPA3ynF/Ienf9fP4PcTHyvgkk87Ank0fn9VpVvGfBWX7opuy9bb9Dkc9/crPPUdlHR+OMkePyp2gy8lpB6MFFbKXLEbtDNXxYfO719ojDOM4PYrplKSYh4NpdNP/HL82LTfD6EVgWInMCZ5yZSKS2lKkzVmWj8nY0b1/BFglXbunLqhblZNXgIAsKua5W5ny8ticSbeq5fkqtc2eLlu5g0bDGDK9+wc0wd3H/8Z+6DHGmGi4bnX/2wxP2a3swo2rV2ZMfQapSpfGfuY3HUqpIwBahbYKPwn2E2NOLhAYVu3W6qucXAWISMfVpj5RZ2I5WFQwVFBBl/GdlptMUTiL0LMhaDXfnyYNv4c+bmDza092LVKvieFh5/lYrNd95ogU4B6buw0m468VPiM+GJ7c/iY3B1gVYq82O0O3rYod7ctD7MwObmb0nTdo7eNsR/NHOeeWttU6ZsvFjiHO7yoNJcbrRsRTZONh3SufGgSdWUzPuR6NsptuqFomvLWHctazWUAK2iMhNt8QmY528GVVRzeYWH5AgTHF60E6CRcz6wzbHdG7AXFlVf/rR4v/l8C9zv5lV3Ss778F9mDsTzCgY6niR1OeEa97Jcxn8asgrVegtCRtdOtwDNG+8/QZmpJVx5c5orJX7ULF4sg2lLYI96RtB055OkOAqfofhApO+w+9MEfFfdZooWJxzOh/eI66x8CY0DDgFcdd7chUjRoe2Y46MdxHZnLcwCfJSZwDgQyhs33gZJI5eaVqvIW2tNj8qn11xdD+6P/BN6H2FdKbi6AXpsFAv7vyBVO6v9Y4tSYCalZxETa+J0LQiLt6H1A7rUYCco/WKLwlV/SarMfR3t8tDoUERsuho9GrDRHRwVK7zIBOKAsUOS1AEE65LZ3ed6ynM2ogOTa2rbJvmvixk9gGNc4LJmSvqHNF8GQ/XKi4iq0d6OhwFX2dYDab5nsJsR4i2AnJIr56E+bGv/RBW96DXukBpXeX4EoUl20el5fAMwKL3MGwRJWf9ZsZ7SuGByIodgch0OdAmjMhoHVQw3BkBm4ABD7guyJrU2YFxSsadpGYpzXWsZ8IWAYomAFhVTXJJlZQ7Tt2QKJZeVm1TlNDdDC5U+nVgFK2ZQUheL8satcbRrWHzvOgHzo2u6A02vkzCwrm4Ez5DAEJTqyvqjb/alT0Q7+wgMLLqL7dT2IEsHFJlXsuWDeoQO39thwSGLWdGOlY2TBpO4qcJB7OdgVKdUTRKQuOrPHqMwBW5S3bivE6UluWbJx5745zR/fjLquZCFpwrCSU1yvgqyGj6RqWCv0xl46mt0PT46FTWuDjlFl+zBrA7ScziJmHIA3JoXLHPMDMgSqHASfvDFNv0sOfwyJPFo003M6uJOEDSipVDWnMQQA4aNpxoumnYJCbciMb5t8DwoH/rCsDjiTUYP8b/Xwocs90zcRL38fl3fNtIcKt80EOtbCBI3AMMdA6GZQPDitaVJIxlEccGveu4q9xpmxXs10re7OpPAh2NAI4ezOo/etww8QVkoSmnqftRVnG9QzQ8dJIcb2FiX+P1ii1Q9aqn5uPgpg8giKSQPrYGYKEEx82jYpMFtS2z9xtDqtkt+xryF9Pp+s2M8uf/1BSQaM6FvZUq241DT4CqR8sA6bZWyO0EAGJM7QBQcXciNQihmzuXiEo5Z3hTp8+YM8y6UlNBRo/+CceUlaPvamrzLG7FQ+jZpbosDkkw3156AfswrcdF9gKHUsdfHpYVKeduLKHCqSgQfBoFJCqXuz2XTjldMmzdmideer3ZTNVMl0ayEZKbf8I8psz7081q07Jp2N3/wZeIoXkuRpmsk6mMANtOCaapfTlWXe4/Q+u06jNzpF0elG5f6YSgbmNwCaUekXLe3zRTZMBIypl0Mx9J4XAuTiVCfE4wQYJE+YFg+xpMB5eoeft8rfGT0qeSlf6JoUB/1PhjcRY0eSURX4eO1HjQ8WRpMqgty/ij5fRb3GHXZmF3oK0Hs2eOD+LhAY/77cWk08ErFIEBWOjVScBFDGDwg1uhIA152BIzD/BZ7EZvNvSQVtomt4l3ojY+4IFkz+MfXtQlbKptQOIeuFwyW+/+IIluJKPU5VKPFp+x5brqPjgWgyNgiXuykt3N943Uf02lyQUG5VLQMcBhspPXQjGm+Zp0Nk72kxG5Nd0J36BCwrhajUYTY5A32tZylfCW8wWF4Ps1lANsupyg6liWnYdyN+HpLk2bV5ZQZZMpnS235fMGmUdq1qwt2yRuBAW3OuSGsjnGVeKHePdw+Uxtyej07l2xjo7PGQ2MmQbpPMLIFgFkegyQCBYtAf3Q1S9beJIYI0Jc/3tbazo4/wFamoAGmzoECW0guSJZZiJ/qIpPM+sgJGL50lKoKdjdhhXT70WDfLGUqg4llELxIm1QbHO/CxWbpK09sU6b79uU0s5Si9vkcP+Osdpsz4+DwLZqFe5eO/S19pgdSCYwwP0v48+VAqlpN1Tr+cl8JmoK8v/kEXwA0LP0XVailozD0iFGQdsddrNO7adQq1j/jyFeUXrzxVRGdYsEz68ibN3gha1F5zywKTEpdVS0T1934knPG3gML1WjQHhC011GuZWakY5/EaJrgY6IVOSmGXlIsjeDfmPTjNMq6ZYb3QkrfHt7tlyZ5vjMw0/hbLr3fQ4E3OPy8KlJMDa8oj2h+18yn8PBuewveVhNooYUwaQmEiqNKfs7wp3sEdWWs50FZ9gv7xdtO1xIRu9kTSok7lg4n3Che9cREsJI6Yv1gyMlYygrzWxmMSaYnNkYSqqQt7lC2a4N/h6qMaJh0q4cRJ+mUHd6T0hgyQ0p/k7UOD9kP2bfyxIUX1ky6Zoc+lK67b8FsLEklHM7LPM9BeaLzXRSMWkWvnUwml+XWIgDdngSfk/AGbI6RCUODmr4MPVtLhIAsazrFrRp8cIm5tIPBDlhLtjcCFYe7nP1G/XaSp9HsjA9MCEwCQYFKw4DAhoFAAQUIRcwWzft7vcw7txJ/XfQZ+QsQa4EFIt/mfLE1RsHqwjr0LQlCxr3syVsAgIEAA==</eu:Data>\\n    <eu:CertificateAlias>88812345678900001</eu:CertificateAlias>\\n</eu:AuthData>"
          },
          "keyStorePassword": {
            "type": "string",
            "description": "Password for keystore",
            "example": "Heslo123"
          },
          "privateKeyPassword": {
            "type": "string",
            "description": "Password for private key",
            "example": "Heslo123"
          }
        }
      },
      "StoreSettingsRequest": {
        "type": "object",
        "properties": {
          "appSettings": {
            "$ref": "#/components/schemas/AppSettings"
          }
        }
      },
      "RawResponse": {
        "required": [
          "resultCode"
        ],
        "type": "object",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/ResponseMeta"
          },
          "rawData": {
            "type": "string"
          },
          "warning": {
            "type": "string",
            "description": "Filled only if any warning"
          },
          "resultCode": {
            "type": "integer",
            "description": "Request result code. `0` = OK; `-1` = Unknown error; for values greater than zero see result code list.",
            "format": "int32",
            "example": 0
          }
        }
      },
      "ResponseMeta": {
        "required": [
          "resultCode"
        ],
        "type": "object",
        "properties": {
          "resultCode": {
            "type": "integer",
            "description": "Request result code. `0` = OK; `-1` = Unknown error; for values greater than zero see result code list.",
            "format": "int32",
            "example": 0
          },
          "warning": {
            "type": "string",
            "description": "Filled only if any warning"
          }
        }
      },
      "PrintStringRequest": {
        "required": [
          "printData"
        ],
        "type": "object",
        "properties": {
          "printData": {
            "type": "string",
            "description": "Raw data in string for printing",
            "example": "Daily statement."
          },
          "printer": {
            "$ref": "#/components/schemas/Printer"
          }
        }
      },
      "FixDocument": {
        "type": "object",
        "properties": {
          "invoiceId": {
            "type": "string",
            "description": "Changes the id of the original document if the document was an invoice.",
            "example": "123456"
          },
          "createDate": {
            "type": "string",
            "description": "Changes the date when was the document created.",
            "format": "date-time"
          },
          "issueDate": {
            "type": "string",
            "description": "Changes the date when was the document issued.",
            "format": "date-time"
          },
          "customer": {
            "$ref": "#/components/schemas/Customer"
          },
          "useLastMerchant": {
            "type": "boolean",
            "description": "If set to `true`, the document will be sent to SFS with the current merchant data. Useful when the previous merchant certificate expired.",
            "example": false
          },
          "documentEntries": {
            "type": "array",
            "description": "Document items to fix. Size of this list must not be larger than the original item count. All item fixes will be applied by their order.",
            "items": {
              "$ref": "#/components/schemas/FixDocumentItem"
            }
          }
        },
        "description": "Data of the original document will be updated with values inside of this object.<br>Only `non-null` values will be changed."
      },
      "FixDocumentItem": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "If `not null`, original item's name will be replaced with this value.",
            "example": "Actual item name"
          },
          "voucherNumber": {
            "type": "string",
            "description": "If `not null`, original item's voucher will be replaced with this value. Keep in mind, that the original voucher number cannot be erased.",
            "example": "123456"
          },
          "seller": {
            "$ref": "#/components/schemas/Seller"
          },
          "referenceDocumentId": {
            "type": "string",
            "description": "If `not null`, referenceDocumentId of the original item will be replaced with this value. Keep in mind, that the original `referenceDocumentId` cannot be erased.",
            "example": "123"
          },
          "quantity": {
            "type": "number",
            "description": "If `not null`, original item's quantity will be replaced with this value.",
            "example": 2
          },
          "vatRate": {
            "type": "string",
            "description": "Vat rate definition:\n\n- `VAT_20`: Basic vat rate (up to 2024)\n- `VAT_10`: Reduced vat rate (up to 2024)\n- `VAT_0`: Zero or no vat rate (eg. for packing refunds)\n- `VAT_23`: Basic vat rate (from 2025 onwards)\n- `VAT_19`: Reduced vat rate (from 2025 onwards)\n- `VAT_5`: Second reduced vat rate (from 2025 onwards)\n- `TOTAL`: VAT totals (only internal usage)",
            "enum": [
              "23%",
              "20%",
              "19%",
              "10%",
              "5%",
              "0%",
              "Suma"
            ]
          },
          "specialRegulationChange": {
            "$ref": "#/components/schemas/SpecialRegulationChange"
          }
        },
        "description": "Data of the original document item will be updated with values inside of this object.<br>Only `non-null` values will be changed."
      },
      "SpecialRegulationChange": {
        "type": "object",
        "properties": {
          "newValue": {
            "type": "string",
            "description": "Special regulation reason:\n\n- `PDP`: Transfer of tax liability (prenesenie daňovej povinnosti)\n- `OOD`: Item exempt from tax (oslobodené od dane)\n- `CK`: Travel agency item (úprava zdaňovania prirážky - cestovné kancelárie)\n- `PT`: Used item (úprava zdaňovania prirážky - použitý tovar)\n- `UD`: Artwork (úprava zdaňovania prirážky - umelecké diela)\n- `ZPS`: Collectibles and antiques  (úprava zdaňovania prirážky - zberateľské predmety a starožitnosti)",
            "enum": [
              "PDP",
              "OOD",
              "CK",
              "PT",
              "UD",
              "ZPS"
            ]
          }
        },
        "description": "Indicates how specialRegulation should be changed."
      },
      "UpdateDocumentRequest": {
        "type": "object",
        "properties": {
          "fixDocument": {
            "$ref": "#/components/schemas/FixDocument"
          }
        }
      },
      "FixLocation": {
        "type": "object",
        "properties": {
          "createDate": {
            "type": "string",
            "description": "Actual creation of location record",
            "format": "date-time"
          },
          "physicalAddress": {
            "$ref": "#/components/schemas/PhysicalAddress"
          },
          "gps": {
            "$ref": "#/components/schemas/Gps"
          },
          "other": {
            "type": "string",
            "description": "Other textual description of the venue"
          },
          "useLastMerchant": {
            "type": "boolean",
            "description": "`true` if last merchant should been applied"
          }
        },
        "description": "Contains data to update in the stuck location report. Exactly one of the following attributes might be not null: `physicalAddress`, `gps` or `other`.<p>"
      },
      "UpdateLocationRequest": {
        "type": "object",
        "properties": {
          "physicalAddress": {
            "$ref": "#/components/schemas/PhysicalAddress"
          },
          "gps": {
            "$ref": "#/components/schemas/Gps"
          },
          "other": {
            "type": "string",
            "description": "Other location, for example taxi licence plate"
          },
          "fixLocation": {
            "$ref": "#/components/schemas/FixLocation"
          }
        },
        "description": "One of the following fields must not be null: `physicalAddress`, `gps`, `other` or `fixLocation`."
      }
    }
  }
}