Etiss VU
API Version: v1.0
Etiss VU API allows communication with Vending Unit using REST protocol. You can get various information about vending unit configuration, make payments with card or cash, and various other API functions. It’s designed to be RESTful and uses standard HTTP methods.
Get State
Gets the current vending unit state.
POST /api/update/angular/state
Example request:
curl -X POST \-H "Content-Length: 0" \https://mywellness-test-vu.maxcrc.de/api/update/angular/stateResponse:
{ "isOfflineMode": false, "isServiceMode": false, "isBurglaryMode": false, "isMaintenanceMode": false, "maintenaceModeReasons": [], "minHardwareConfigurationViolation": null, "token": "a2913c531578994645ff4807a221cp596ad31b56", "shopType": "PosOrder", "giftCardPaymentButtonType": null, "scanCard": null, "barcodeScan": { "barcode": "SIM1", "scanTime": "2025-03-17T13:03:56.6725410Z" }, "isAutoSaleMode": false, "isTestMode": false}isOfflineMode
type: boolean
default: false
In the Odoo backend there’s a checkbox “Offline mode”. This property is set to true when it is checked. Used to switch Vending Unit Offline.
"isOfflineMode": falseisServiceMode
type: boolean
default: false
When the door is opened this property is set to true.
"isServiceMode": falseisBurglaryMode
type: boolean
default: false
In case of unauthorized access to the VU, or burglary attempt, this property will be set to true.
"isBurglaryMode": falseisMaintenanceMode
type: boolean
default: false
Indicates that there’s some kind of problem with VU. It can be some kind of hardware fault, no connection to server or other errors.
"isMaintenanceMode": falsemaintenaceModeReasons
type: array
An array of reasons for maintenance mode.
"maintenaceModeReasons": ["not IsPosSessionOpened", "MinimalConfigurationViolated", "not IsConnectedToServer", "not AreProductsAvailable"],minHardwareConfigurationViolation
type: string
default: null
If there’s a problem with minimal hardware configuration and one or more devices don’t meet the config, here, you’ll see a list of faulty devices separated by comma.
"minHardwareConfigurationViolation": nulltoken
type: string
Token is used for direct authorization on Odoo server.
"token": "a2913c531578994645ff4807a221cp596ad31b56"shopType
type: string
Vending Unit has the ability to work with Odoo webshop. This property indicates with which types of orders the VU is configured to work, “POS orders” or “SALE orders”.
"shopType": "PosOrder"giftCardPaymentButtonType
type: string
default: null
Text for the button of gift card payments.
"giftCardPaymentButtonType": nullscanCard
type: object
An object with scanned card data.
"scanCard": { "cardId": "72672", "scanTime": "2025-03-17T13:03:56.6725410Z"}barcodeScan
type: object
An object with properties of the last scanned RFID-card or barcode. “scanTime” is changed every time the card or barcode is scanned. In case of gift card scanning in the “barcode” field we’ll get a scanned gift card id.
"barcodeScan": { "barcode": "SIM1", "scanTime": "2025-03-17T13:03:56.6725410Z"}isAutoSaleMode
type: boolean
default: false
If the VU is configured in column mode, it sells it’s products automatically (“autosale mode”). This property indicates whether the VU is operating in autosale mode or not.
"isAutoSaleMode": falseisTestMode
type: boolean
default: false
Vending Unit can operate in test mode, in which it automatically makes sales one-by-one. This property indicates whether the VU is operating in test mode or not.
"isTestMode": falseEnable led for tile
Enable led for tile
POST /api/touch-tile/enable
Example Request:
curl -X POST \ -H "Content-Type: application/json" \ -d '{"unitEnum": "CoinAcceptorLight", "color": "#F44336"}' \ -w "HTTP Status: %{http_code}\n" \ https://mywellness-test-vu.maxcrc.de/api/touch-tile/enableBody:
Color examples: #2C8CCD - blue, #2C8C1D - green, #F44336 - red
{ "unitEnum": "CoinAcceptorLight", "color": "#2C8C1D"}Response:
200 OKDisable led for tile
Disable led for tile
POST /api/touch-tile/disable
Example Request:
curl -X POST \ -H "Content-Type: application/json" \ -d '{"unitEnum": "CoinAcceptorLight"}' \ -w "HTTP Status: %{http_code}\n" \ https://mywellness-test-vu.maxcrc.de/api/touch-tile/disableBody:
{ "unitEnum": "CoinAcceptorLight"}Response:
200 OKDisable led for all tiles
Disable led for all tiles
POST /api/touch-tile/disable-all
Example Request:
curl -X POST \ -H "Content-Length: 0" \ -w "HTTP Status: %{http_code}\n" \ https://mywellness-test-vu.maxcrc.de/api/touch-tile/disable-allResponse:
200 OKEnable/Disable Barcode Led
Enable/Disable barcode led
POST /api/touch-tile/barcode-led-enable
Example Request:
curl -X POST \ -H "Content-Type: application/json" \ -d '{"enabled": "false"}' \ -w "HTTP Status: %{http_code}\n" \ https://mywellness-test-vu.maxcrc.de/api/touch-tile/barcode-led-enableBody:
{ "enabled": true/false}Response:
200 OKEnable/Disable RFID Card Led
Enable/Disable RFID Card Led
POST /api/touch-tile/rfid-card-led-enable
Example Request:
curl -X POST \ -H "Content-Type: application/json" \ -d '{"enabled": "false"}' \ -w "HTTP Status: %{http_code}\n" \ https://mywellness-test-vu.maxcrc.de/api/touch-tile/rfid-card-led-enableBody:
{ "enabled": true/false}Response:
200 OKEnable/Disable Card Dispenser Led
Enable/Disable Card Dispenser Led
POST /api/touch-tile/card-dispenser-led-enable
Example Request:
curl -X POST \ -H "Content-Type: application/json" \ -d '{"enabled": "false"}' \ -w "HTTP Status: %{http_code}\n" \ https://mywellness-test-vu.maxcrc.de/api/touch-tile/card-dispenser-led-enableBody:
{ "enabled": true/false}Response:
200 OKChange Switch
This is a unified enpoint that’s used to turn on/off leds on different devices such as Coin Acceptor, Bill Acceptor, Printer, etc..
Request body is an array of objects where name is the name of the device, and enabled determines whether to enable or disable led lights on it.
List of available devices: CreditCardLight, CoinAcceptorLight, BillAcceptorLight, RFIDLight, TicketBoxLight, CoinBoxLight, PinPadLight, FrameLight, BarcodeReaderLight, DispenserChuteLight, LogoLight, CardDispenserLight.
It is possible to manupulate lights on several devices at the same time, you just need to specify several device objects in the request body array.
POST /api/touch-tile/change-switch
Example Request:
curl -X POST \ -H "Content-Type: application/json" \ -d '[ { "name": "CoinAcceptorLight", "enabled": true } ]' \ -w "HTTP Status: %{http_code}\n" \ https://mywellness-test-vu.maxcrc.de/api/touch-tile/change-switchResponse:
200 OKBegin Payment Transaction
Starts a new payment transaction. The “paymentMethod” field determines whether this is a cash transaction (0), or cashless (1) transaction. Also there are additional variants of Bluecode payment (2) and GiftCard payment (3).
POST /api/payment/begin-transaction
Example Request:
curl -X POST \ -H "Content-Type: application/json" \ -d '{ "money": { "value": "9", "currencyCode": "EUR" }, "paymentMethod": 1, "barcode": "", "giftAmount": { "value": "0", "currencyCode": "EUR" } }' \ -w "HTTP Status: %{http_code}\n" \ https://mywellness-test-vu.maxcrc.de/api/payment/begin-transactionBody:
{ "money": { "value": "9", "currencyCode": "EUR" }, "paymentMethod": 1, "barcode": "", "giftAmount": { "value": "0", "currencyCode": "EUR" }}Response:
200 OKGet Accepted Cash
Returns currency nominations with which it is possible to pay given amount of money.
GET /api/payment/get-accepted-cash
Query parameters:
value: amount of money that you wish to pay on the VU
currencyCode: currency of the payment
Example Request:
curl \ -w "HTTP Status: %{http_code}\n" \ 'https://mywellness-test-vu.maxcrc.de/api/payment/get-accepted-cash?value=9¤cyCode=EUR'Response:
{ "coins": [ { "value": 0.10, "currencyCode": "EUR" }, { "value": 0.20, "currencyCode": "EUR" }, { "value": 0.50, "currencyCode": "EUR" }, { "value": 1.00, "currencyCode": "EUR" }, { "value": 2.00, "currencyCode": "EUR" } ], "banknotes": [ { "value": 5.00, "currencyCode": "EUR" }, { "value": 10.00, "currencyCode": "EUR" }, { "value": 20.00, "currencyCode": "EUR" }, { "value": 50.00, "currencyCode": "EUR" } ]}Payment Status
Gets the status of the payment transaction. The response object contains details and status of the corresponding payment transaction.
GET /api/payment/status
Example Request:
curl \ -w "HTTP Status: %{http_code}\n" \ https://mywellness-test-vu.maxcrc.de/api/payment/statusSuccess response in case of cashless payment:
{ "timeStamp": "2025-03-18T16:04:37.0624494+02:00", "price": { "value": 3, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, "paymentMethod": "Terminal", "paymentState": "Success", "paymentStateInfo": "FundsReservationIsCompleted", "cashReceived": "0", "cashReturned": "0", "moneyReturnInProgress": false}Success response in case of cash payment:
{ "timeStamp": "2025-03-18T16:07:39.7027464+02:00", "price": { "value": 3, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, "paymentMethod": "Cash", "paymentState": "Success", "paymentStateInfo": "", "cashReceived": " 1 * 2,00 EUR + 1 * 1,00 EUR + 1 * 0,50 EUR + 1 * 0,10 EUR", "cashReturned": " 1 * 0,50 EUR + 1 * 0,10 EUR", "moneyReturnInProgress": false}In case the vending unit wasn’t able to issue the rest, the “paymentState” will be “Failure”. In this case, you need to revert transaction manually.
Failure response in case of cash payment:
{ "timeStamp": "2025-03-18T16:07:39.7027464+02:00", "price": { "value": 3, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, "paymentMethod": "Cash", "paymentState": "Failure", "paymentStateInfo": "", "cashReceived": " 1 * 2,00 EUR + 1 * 1,00 EUR + 1 * 0,50 EUR + 1 * 0,10 EUR", "cashReturned": "", "moneyReturnInProgress": false}No money left on the card
In case there’s no money on the card, “paymentStateInfo” will have the value: “PaymentErrorMessageReceived”, and we’ll see a text “Insuffician balance. Please remove the card.” on the card terminal screen.
In this case you can use another card or revert the transaction.
Commit Transaction
Commits active transaction. “BoolValue”: false - force commits even partially paid transaction.
POST /api/payment/commit-transaction
Example Request:
curl -X POST \ -H "Content-Type: application/json" \ -d '{ "BoolValue": false }' \ -w "HTTP Status: %{http_code}\n" \ https://mywellness-test-vu.maxcrc.de/api/payment/commit-transactionBody:
{ "BoolValue": false}Response:
200 OKAbort Cashless Transaction
Aborts cashless transaction. “paymentMethod”: 1 specifies that this is cashless transaction. By passing various options (1,2,3) you can abort transactions of other types except of cash transactions.
This should be done when the card terminal is in the process of payment, if the payment has been finished, there’s no sense to use this endpoint.
POST /api/payment/abort-cashless-transaction
Example Request:
curl -X POST \ -H "Content-Type: application/json" \ -d '{ "paymentMethod": 1 }' \ -w "HTTP Status: %{http_code}\n" \ https://mywellness-test-vu.maxcrc.de/api/payment/abort-cashless-transactionBody:
{ "paymentMethod": 1}Response:
200 OKRevert Transaction
Reverts cashless/cash transactions. In case you’re reverting a cash transaction, and you need to return money to customer, you should specify in the request body “BoolValue”: true.
In case of a cashless transaction, you first need to perform api method abort-cashless-transaction, and then api method revert-transaction.
POST /api/payment/revert-transaction
Example Request:
curl -X POST \ -H "Content-Type: application/json" \ -d '{ "BoolValue": false }' \ -w "HTTP Status: %{http_code}\n" \ https://mywellness-test-vu.maxcrc.de/api/payment/revert-transactionBody:
{ "BoolValue": false}Response:
200 OKSave Order
Saves the order
POST /api/save-order
Example Request:
You can test this endpoint by downloading save-order-request-body.json and performing the following request:
curl -X POST \ -H "Content-Type: application/json" \ -d @save-order-request-body.json \ -w "HTTP Status: %{http_code}\n" \ https://mywellness-test-vu.maxcrc.de/api/save-orderBody:
{ "isReceipt": false, "id": 0, "uid": "ce87010c-5d96-44ab-80e4-479892a6aab8", "amountTotal": { "value": 9, "currencyCode": "EUR" }, "amountPrepaid": { "value": 30, "currencyCode": "EUR" }, "amountReceived": { "value": 9, "currencyCode": "EUR" }, "amountReturned": { "value": 0, "currencyCode": "EUR" }, "orderLines": [ { "uid": "5a243960-f268-4969-b644-ca5cbaef7b94", "name": "Saunaaufguss; Sand; 1l", "productId": 166, "price": { "value": 0, "currencyCode": "EUR" }, "quantity": 1, "amount": { "value": 0, "currencyCode": "EUR" }, "amountTax": { "value": 0, "currencyCode": "EUR" }, "taxRate": 0.19, "barcode": null, "ticketParameters": null, "rfidCard": false, "properties": { "full_product_name": "Saunaaufguss Sand" } } ], "paymentMethod": 1, "barcode": "", "type": "sale", "originalOrderId": 0, "properties": { "odoo_context": { "multi_basket": { "items": [ { "barcode": "SIM1", "customer": "", "customer_id": 399797, "total": 39, "base_total": 39, "currency": "€", "log_item": 1564, "order_guid": "2830738", "basket": { "receipt_printed": false, "type": "sale-order", "order_guid": "2830738", "customer_id": 399797, "lines": [ { "full_product_name": "Saunaaufguss Sand", "discount": 0, "price_unit": 0, "product_id": 166, "qty": 1 }, { "full_product_name": "4 Macarons", "discount": 0, "price_unit": 3.9, "product_id": 21, "qty": 5 } ], "payments": [ { "method": "open_invoice", "amount": 30, "journal_id": 24, "payment_method_id": 14, "payment_method_code": "MWS" } ], "amount_total": 39, "amount_to_pay": 9, "amount_tax": 7.41, "currency": "€", "tax_values": [ { "id": 14, "name": "19% MwSt", "rate": 19, "amount": 6.22 } ] }, "pre_payment_total": 30 } ], "primary_basket_guid": "2830738", "primary_basket_barcode": "SIM1", "total": 39, "total_prepay": 30, "total_pay": 9, "currency": "€", "tax_values": { "19% MwSt": 6.22 } }, "basket_amount": 39 }, "card_terminal_receipt": "" }, "giftCardEan13": "", "giftCardName": "", "giftCardPartialPaymentAmount": 0}Response:
{ "orderId": 219, "orderUid": "ce87010c-5d96-44ab-80e4-479892a6aab8", "isSuccess": true, "error": "", "properties": { "order_id": 219, "order_line_ids": [], "order_name": "00218-00001-00030", "barcodes_of_created_tickets": [], "tickets": [], "rfid_card_data": null, "warning_messages": [], "force_print_receipt": false, "fiskaltrust": { "wARNING": "THIS IS SIMULATED DATA !!!", "ftCashBoxID": "9521dba0-4af5-4529-9102-b014f460f874", "ftQueueID": "7d69975d-cbb3-4185-8e5c-053e2d31a517", "ftQueueItemID": "7596344f-34c1-4bf0-87ce-2bed8a5e7da9", "ftQueueRow": 246, "cbTerminalID": "TERMINAL SIMULATION", "cbReceiptReference": "00212-00000-00029", "ftCashBoxIdentification": "XZdpfbPLhUGOXAULTGlFw", "ftReceiptIdentification": "ftF5#IT246", "ftReceiptMoment": "2024-08-29T12:23:34.1370000Z", "ftSignatures": [ { "ftSignatureFormat": 3, "ftSignatureType": 4919338167972134913, "caption": "www.fiskaltrust.de", "data": "V0;XZdpfbPLhUGOXAULTGlFw;Kassenbeleg-V1;Beleg^0.00_0.00_0.00_39.00_0.00^39.00:Unbar;246;633;2024-08-29T12:23:33.000Z;2024-08-29T12:23:33.000Z;ecdsa-plain-SHA256;unixTime;f/gZUmDdsMKMFjrLP+520to4aqB+k/Q1RxJZ4FnIJ8tnW7URlGFkIn/0mt/nBoSS1a7Kl1vvzhRnCF/5oc5r4Q==;BPsSHuh/F5Rq5QR1JBXAE+ZIicm4+sSugf9anOXr59k8WP2bZKfeA4YVIPAsc8pttVgozPYZd2qhJloDHNknlpg=" }, { "ftSignatureFormat": 65549, "ftSignatureType": 4919338167972134928, "caption": "start-transaction-signature", "data": "1dCqH6xrOtFJ8fpMxAvx8qs/Ri8ewLRdkqR9DvA9xMfdxupJuC+rQDRSyEkcDDJW+BU8SBK4UJX9J/XUexoplg==" }, { "ftSignatureFormat": 1, "ftSignatureType": 0, "caption": "S A N D B O X", "data": "7d69975d-cbb3-4185-8e5c-053e2d31a517" } ], "ftState": 4919338167972134912 } }}orderId
type: number
Order that was received from “saveOrder”
"orderId": 203Print Picture
Prints a picture
POST /api/print/picture
PrintTaskType defines the type of the item to print. (0 - Receipt, 1 - Ticket, 2 - CreditCardReceipt, 3 - RFIDCardReceipt, 4 - IssueReceipt, 5 - Custom)
Example Request:
Place any image.png in your working directory and perform the following request:
curl -X POST \ -F "file=@image.png" \ -F "PrintTaskType=0" \ -w "HTTP Status: %{http_code}\n" \ https://mywellness-test-vu.maxcrc.de/api/print/pictureHeaders:
Content-type: multipart/form-dataBody:
| Key | Value | Description |
|---|---|---|
File | image.png | Binary file to print |
PrintTaskType | 0 | Defines what to print (Receipt, Ticket, etc…) |
Response:
200 OKPostman Example:

Print XML
Prints XML
POST /api/print/xml
Example Request:
You can test this endpoint by downloading 1.xml and performing the following request:
curl -X POST \ -F "file=@1.xml" \ -F "PrintTaskType=0" \ -w "HTTP Status: %{http_code}\n" \ https://mywellness-test-vu.maxcrc.de/api/print/xmlHeaders:
Content-type: multipart/form-dataBody:
| Key | Value |
|---|---|
File | 1.xml |
PrintTaskType | 0 |
Response:
200 OKPostman Example:

Rfid Card Status
Get Rfid-Card device status
GET /api/rfid-card/status
Example Request:
curl \ -w "HTTP Status: %{http_code}\n" \ https://mywellness-test-vu.maxcrc.de/api/rfid-card/statusResponse:
{ "is_available": true, "stack_empty": false}Get Accepted Credit Cards
Gets accepted credit cards
GET /api/credit-card-terminal/accepted-credit-cards
Example Request:
curl \ -w "HTTP Status: %{http_code}\n" \ https://mywellness-test-vu.maxcrc.de/api/credit-card-terminal/accepted-credit-cardsResponse:
[ { "name": "ALL" }]Get VU Configuration
Gets the current vending unit configuration.
GET /api/get-vu-configuration
Example Request:
curl \ -w "HTTP Status: %{http_code}\n" \ https://mywellness-test-vu.maxcrc.de/api/get-vu-configurationResponse:
{ "vuRole": "Entry", "locale": "en-US", "showArticlesOnMainPage": true, "printOrderReceipt": "UserChoice", "oneLineArticleSaleMode": "Disabled", "moneyExchnageSupported": false, "receiptPrinterType": null, "ticketPrinterType": null, "additionalProperties": { "external_api_request_timeout_ms": "30000", "is_credit_card_payment_available": "False", "is_cash_payment_available": "True", "is_bluecode_payment_available": "False", "support_languages": "" }, "customCss": "", "customLogoId": 0, "properties": { "id": 3, "name": "VU Muenster-30116", "serial": "30116", "is_online": true, "vu_role": "Entry", "type_unique_name": "vu_21", "configuration": { "id": 5, "name": "Default Configuration 30116", "locales": false, "default_language": "en_US", "default_culture": "en-US", "perform_maintenance_restart": true, "maintenance_restart_time": "2016-08-14 03:00:00", "time_synch_interval_in_minutes": 4, "time_synch_manual_peer_list": "2.de.pool.ntp.org", "accepted_coins": [ { "value": 0.10, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, { "value": 0.20, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, { "value": 0.50, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, { "value": 1.00, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, { "value": 2.00, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false } ], "accepted_bills": [ { "value": 5.00, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, { "value": 10.00, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, { "value": 20.00, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, { "value": 50.00, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false } ], "accepted_payment_cards": "ALL", "card_terminal_product_code": 0, "card_terminal_payment_screen_additional_message": false, "print_abort_card_terminal_receipt": true, "card_terminal_show_cancel_payment_button": false, "card_terminal_payment_inactivity_timeout_ms": 0, "coin_cashbox_maximum_stock": 1750, "bill_cashbox_maximum_stock": 500, "printer_roll_length": 100, "minimum_configuration": { "id": 5, "name": "Default Minimum Configuration 30116", "count_of_bill_acceptors": 0, "count_of_printers": 1, "count_of_rfid_readers": 0, "count_of_card_dispensers": 0, "count_of_card_terminals": 0, "count_of_coin_cash_boxes": 0, "count_of_turnstiles": 0, "count_of_barcode_readers": 1, "count_of_smart_hoppers": 1, "count_of_gates": 0, "count_of_lnt_boards": 1, "count_of_cio_boards": 1, "count_of_coin_acceptors": 0, "count_of_hoppers": 0 }, "maximum_configuration": { "id": 6, "name": "Default Maximum Configuration 30116", "count_of_bill_acceptors": 1, "count_of_printers": 1, "count_of_rfid_readers": 1, "count_of_card_dispensers": 0, "count_of_card_terminals": 0, "count_of_coin_cash_boxes": 1, "count_of_turnstiles": 0, "count_of_barcode_readers": 1, "count_of_smart_hoppers": 1, "count_of_gates": 0, "count_of_lnt_boards": 1, "count_of_cio_boards": 1, "count_of_coin_acceptors": 0, "count_of_hoppers": 0 }, "is_heater_always_on": false, "is_box_light_on": false, "accepted_payout_bills": [ { "value": 5.00, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, { "value": 10.00, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, { "value": 20.00, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, { "value": 50.00, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false } ], "accepted_payout_coins": [ { "value": 0.10, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, { "value": 0.20, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, { "value": 0.50, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, { "value": 1.00, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, { "value": 2.00, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false } ], "smart_hopper_maximum_stock": 1450, "smart_hopper_minimum_stock": 0, "turnstile_mode": "Automatics", "screen_saver_configuration": { "id": false, "name": false, "timeout": 0, "time_from": 0, "time_to": 0, "mode": false, "messages": false, "image_show_timeout": 0, "images": {}, "disable_lnt_board": false, "disable_screen": false, "hide_screen_saver_in_out_of_order_mode": false, "imagesIds": [] }, "show_articles_on_main_page": true, "print_order_receipt": "UserChoice", "smarh_hopper_free_pay_mode": false, "smarh_hopper_level_check": true, "smarh_hopper_high_motor_speed": true, "smarh_hopper_cashbox_pay": false, "ticket_information_input_by_virtual_keyboard": "AllSymbols", "ticket_information_input_by_barcode_reader": true, "ticket_information_input_by_rfid_reader": true, "maximum_payout_coins": "200 * 0.10 EUR + 100 * 1.00 EUR", "maximum_payout_bills": { "items": [ { "money": { "value": 5.00, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, "count": 35 }, { "money": { "value": 10.00, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, "count": 10 }, { "money": { "value": 20.00, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, "count": 10 } ], "isZero": false, "totalCountOfMoney": 55, "amount": { "value": 475.00, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false } }, "one_line_article_sale_mode": "Disabled", "custom_css":"", "custom_text": "", "image_id": false, "background": false, "show_basket_button_on_header": "None", "shop_url": false, "card_dispenser_auto_retract_timeout_ms": 60000, "money_exchange_configuration": { "id": false, "name": false, "rules": [] }, "hopper_type": "smart_hopper", "hopper_1_enabled": false, "hopper_1_accepted_coin": { "value": 0.50, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, "hopper_1_minimum_stock": 0, "hopper_1_maximum_stock": 1450, "hopper_2_enabled": false, "hopper_2_accepted_coin": { "value": 1.00, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, "hopper_2_minimum_stock": 0, "hopper_2_maximum_stock": 1450, "hopper_3_enabled": false, "hopper_3_accepted_coin": { "value": 2.00, "currencyCode": "EUR", "currencySign": "€", "isEmpty": false, "isZero": false, "isPositive": true, "isNegative": false }, "hopper_3_minimum_stock": 0, "hopper_3_maximum_stock": 1450, "shop_type": "PosOrder", "gift_card_partial_payment": true, "gift_card_separate_button": false, "gift_card_payment_button_type": "GiftCard", "card_terminal_end_of_day_operation_schedule": "00:00", "bluecode_end_of_day_operation_schedule": "00:05", "giftcard_end_of_day_operation_schedule": "00:10", "workflow_page_type": "Simple", "refund_payment_action": "WithoutRefundIfOrderWasSaved", "hide_back_button_on_payment_screen": true, "hidden_payment_journal_codes": [], "show_ticket_info_button": false, "is_debug_mode": false, "auto_sale_product_id": 0, "lite_mode_product_id": 0, "vu_keep_alive_timeout_sec": 10, "open_connected_fmcu_on_ticket_scan": false, "vu_save_events_interval_sec": 5, "maintenance_message": "", "print_order_receipt_button_text": "", "display_configuration": { "id": 1, "name": "Etiss Kiosk Display", "row_count": 33, "columns_count": 57, "items_info": [ { "items_tree": [ { "item_id": 1, "items": [ { "item_id": 10, "items": [] }, { "item_id": 11, "items": [] } ] } ], "items": [ { "id": 1, "name": "MainPage", "type": "category", "description": false, "html_template": false, "pos_x": 0, "pos_y": 0, "size_horizontal": 57, "size_vertical": 33, "sequence": 0, "z_index": 0, "asset": false, "print_template_type": false, "hide_back_button": false, "navigation_item_id": false, "api_url": false, "unique_name": "main_page_unique", "timeout_to_show_next_item": 0, "previous_display_item": false, "timeout": 0, "failure_item_id": false, "product_reference": false, "min_amount": 0, "max_amount": 0, "custom_price": 0, "api_read_request_url": false, "min_text_input_action": 0, "text_length": 0, "text_input_placeholder": "", "custom_layout": "", "translations": { "de_DE": { "name": "MainPage" } } }, { "id": 10, "name": "Scan RFID Card", "type": "rfid_card", "description": false, "html_template": " \u003cdiv class=\"myw-wrapper\"\u003e\n \u003cheader\u003e\n \u003cimg src=\"assets://file_21\" class=\"myw-logo\" /\u003e\n \u003c/header\u003e\n \u003cmain\u003e\n \u003cdiv class=\"myw-container\"\u003e\n \u003cdiv class=\"myw-row h-100\"\u003e\n \u003cdiv class=\"myw-col myw-col--5 myw-heading\"\u003e\n \u003cdiv\u003e\n \u003cspan class=\"myw-subtitle\"\u003e Bezahlautomat \u003c/span\u003e\n \u003ch1 class=\"myw-display-2\"\u003eScanne Deinen QR-Code\u003c/h1\u003e\n \u003c/div\u003e\n \u003cdiv class=\"bubble\"\u003eDen QR-Code-Reader findest Du unter dem Bildschirm.\u003c/div\u003e\n \u003c/div\u003e\n \u003ca class=\"myw-col myw-col--auto myw-terminal\"\u003e\n \u003cimg src=\"assets://file_22\" class=\"myw-qr-code\" /\u003e\n \u003cdiv class=\"myw-bubble\"\u003e\u003c/div\u003e\n \u003c/a\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/main\u003e\n \u003c/div\u003e", "pos_x": 1, "pos_y": 1, "size_horizontal": 57, "size_vertical": 33, "sequence": 0, "z_index": 0, "asset": false, "print_template_type": false, "hide_back_button": false, "navigation_item_id": false, "api_url": "https://mywellness-test.maxcrc.de/api/v1/kiosk/rfid", "unique_name": false, "timeout_to_show_next_item": 0, "previous_display_item": false, "timeout": 0, "failure_item_id": false, "product_reference": false, "min_amount": 0, "max_amount": 0, "custom_price": 0, "api_read_request_url": false, "min_text_input_action": 0, "text_length": 0, "text_input_placeholder": "", "custom_layout": "", "translations": { "en_US": { "html_template": " \u003cdiv class=\"myw-wrapper\"\u003e\n \u003cheader\u003e\n \u003cimg src=\"assets://file_21\" class=\"myw-logo\" /\u003e\n \u003c/header\u003e\n \u003cmain\u003e\n \u003cdiv class=\"myw-container\"\u003e\n \u003cdiv class=\"myw-row h-100\"\u003e\n \u003cdiv class=\"myw-col myw-col--5 myw-heading\"\u003e\n \u003cdiv\u003e\n \u003cspan class=\"myw-subtitle\"\u003e Bezahlautomat \u003c/span\u003e\n \u003ch1 class=\"myw-display-2\"\u003eScanne Deinen QR-Code\u003c/h1\u003e\n \u003c/div\u003e\n \u003cdiv class=\"bubble\"\u003eDen QR-Code-Reader findest Du unter dem Bildschirm.\u003c/div\u003e\n \u003c/div\u003e\n \u003ca class=\"myw-col myw-col--auto myw-terminal\"\u003e\n \u003cimg src=\"assets://file_22\" class=\"myw-qr-code\" /\u003e\n \u003cdiv class=\"myw-bubble\"\u003e\u003c/div\u003e\n \u003c/a\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/main\u003e\n \u003c/div\u003e" }, "de_DE": { "html_template": " \u003cdiv class=\"myw-wrapper\"\u003e\n \u003cheader\u003e\n \u003cimg src=\"assets://file_21\" class=\"myw-logo\" /\u003e\n \u003c/header\u003e\n \u003cmain\u003e\n \u003cdiv class=\"myw-container\"\u003e\n \u003cdiv class=\"myw-row h-100\"\u003e\n \u003cdiv class=\"myw-col myw-col--5 myw-heading\"\u003e\n \u003cdiv\u003e\n \u003cspan class=\"myw-subtitle\"\u003e Bezahlautomat \u003c/span\u003e\n \u003ch1 class=\"myw-display-2\"\u003eScanne Deinen QR-Code\u003c/h1\u003e\n \u003c/div\u003e\n \u003cdiv class=\"bubble\"\u003eDen QR-Code-Reader findest Du unter dem Bildschirm.\u003c/div\u003e\n \u003c/div\u003e\n \u003ca class=\"myw-col myw-col--auto myw-terminal\"\u003e\n \u003cimg src=\"assets://file_22\" class=\"myw-qr-code\" /\u003e\n \u003cdiv class=\"myw-bubble\"\u003e\u003c/div\u003e\n \u003c/a\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/main\u003e\n \u003c/div\u003e", "name": "Scan RFID Card" } } }, { "id": 11, "name": "Scan Barcode Main", "type": "ticket", "description": false, "html_template": false, "pos_x": 1, "pos_y": 1, "size_horizontal": 57, "size_vertical": 33, "sequence": 0, "z_index": 0, "asset": false, "print_template_type": false, "hide_back_button": false, "navigation_item_id": false, "api_url": "https://mywellness-test.maxcrc.de/api/v1/kiosk/barcode", "unique_name": false, "timeout_to_show_next_item": 0, "previous_display_item": false, "timeout": 0, "failure_item_id": false, "product_reference": false, "min_amount": 0, "max_amount": 0, "custom_price": 0, "api_read_request_url": false, "min_text_input_action": 0, "text_length": 0, "text_input_placeholder": "", "custom_layout": "", "translations": { "de_DE": { "name": "Scan Barcode Main" } } } ], "additional_items_tree": [], "name": "Etiss Kiosk Display", "row_count": [ 33 ], "columns_count": [ 57 ], "page_caption_type": [ "None" ], "extended_display": [ "Full" ], "background": "", "translations": { "de_DE": { "name": "Etiss Kiosk Display" } } } ] }, "display_configuration_id": 1, "default_pricelist_id": 1 }, "configuration_write_date": "2025-03-14 13:20:12", "user": { "id": 13, "name": "VU muenster-30116", "login": "30116" }, "payment_journal_codes": [ "CSH4", "CRD4", "MWS1" ], "generalSettings": { "external_api_request_timeout_ms": "30000" }, "fmcu_url": "", "fmcu_access_token": "", "fmcu_service_mode": false }, "backgroundId": 0, "displayConfigurationId": 1, "assets": [ { "id": "1", "fileName": "attachment_1_en_US.svg", "supportedLanguages": [ "en_US" ] }, { "id": "2", "fileName": "attachment_2_en_US.svg", "supportedLanguages": [ "en_US" ] }, { "id": "3", "fileName": "attachment_3_en_US.svg", "supportedLanguages": [ "en_US" ] }, { "id": "4", "fileName": "attachment_4_en_US.svg", "supportedLanguages": [ "en_US" ] }, { "id": "5", "fileName": "attachment_5_en_US.svg", "supportedLanguages": [ "en_US" ] }, { "id": "6", "fileName": "attachment_6_en_US.woff", "supportedLanguages": [ "en_US" ] }, { "id": "7", "fileName": "attachment_7_en_US.woff2", "supportedLanguages": [ "en_US" ] }, { "id": "8", "fileName": "attachment_8_en_US.eot", "supportedLanguages": [ "en_US" ] }, { "id": "9", "fileName": "attachment_9_en_US.woff", "supportedLanguages": [ "en_US" ] }, { "id": "10", "fileName": "attachment_10_en_US.woff2", "supportedLanguages": [ "en_US" ] }, { "id": "11", "fileName": "attachment_11_en_US.eot", "supportedLanguages": [ "en_US" ] }, { "id": "12", "fileName": "attachment_12_en_US.woff", "supportedLanguages": [ "en_US" ] }, { "id": "13", "fileName": "attachment_13_en_US.woff2", "supportedLanguages": [ "en_US" ] }, { "id": "14", "fileName": "attachment_14_en_US.eot", "supportedLanguages": [ "en_US" ] }, { "id": "15", "fileName": "attachment_15_en_US.svg", "supportedLanguages": [ "en_US" ] }, { "id": "16", "fileName": "attachment_16_en_US.svg", "supportedLanguages": [ "en_US" ] }, { "id": "17", "fileName": "attachment_17_en_US.svg", "supportedLanguages": [ "en_US" ] }, { "id": "18", "fileName": "attachment_18_en_US.svg", "supportedLanguages": [ "en_US" ] }, { "id": "19", "fileName": "attachment_19_en_US.svg", "supportedLanguages": [ "en_US" ] }, { "id": "20", "fileName": "attachment_20_en_US.svg", "supportedLanguages": [ "en_US" ] }, { "id": "21", "fileName": "attachment_21_de_DE.svg", "supportedLanguages": [ "de_DE" ] }, { "id": "22", "fileName": "attachment_22_de_DE.png", "supportedLanguages": [ "de_DE" ] }, { "id": "23", "fileName": "attachment_23_de_DE.woff", "supportedLanguages": [ "de_DE" ] }, { "id": "24", "fileName": "attachment_24_de_DE.woff", "supportedLanguages": [ "de_DE" ] }, { "id": "25", "fileName": "attachment_25_de_DE.woff", "supportedLanguages": [ "de_DE" ] }, { "id": "26", "fileName": "attachment_26_de_DE.woff", "supportedLanguages": [ "de_DE" ] }, { "id": "27", "fileName": "attachment_27_de_DE.woff", "supportedLanguages": [ "de_DE" ] }, { "id": "28", "fileName": "attachment_28_de_DE.svg", "supportedLanguages": [ "de_DE" ] } ], "showBasketButtonOnHeader": "None", "changeDate": "2025-03-14T13:20:12", "odooUrl": "https://mywellness-test.maxcrc.de", "odooToken": "a291fc537578994644ff4807a421c1596ad31b56", "shopType": "PosOrder", "giftCardPaymentButtonType": "GiftCard", "shopUrl": "", "maintenanceMessage": "", "cardDispenserAutoRetractTimeoutMs": 60000, "isSmartHopperPresentInMinConfiguration": true, "giftCardPartialPayment": true, "giftCardSeparateButton": false, "paymentMethods": [ 0, 1, 0 ], "rfidCardPaymentDeviceType": ""}