Skip to content

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:

Terminal window
curl -X POST \
-H "Content-Length: 0" \
https://mywellness-test-vu.maxcrc.de/api/update/angular/state

Response:

{
"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": false

isServiceMode

type: boolean
default: false

When the door is opened this property is set to true.

"isServiceMode": false

isBurglaryMode

type: boolean
default: false

In case of unauthorized access to the VU, or burglary attempt, this property will be set to true.

"isBurglaryMode": false

isMaintenanceMode

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": false

maintenaceModeReasons

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": null

token

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": null

scanCard

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": false

isTestMode

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": false

Enable led for tile

Enable led for tile

POST /api/touch-tile/enable

Example Request:

Terminal window
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/enable

Body:

Color examples: #2C8CCD - blue, #2C8C1D - green, #F44336 - red

{
"unitEnum": "CoinAcceptorLight",
"color": "#2C8C1D"
}

Response:

200 OK

Disable led for tile

Disable led for tile

POST /api/touch-tile/disable

Example Request:

Terminal window
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/disable

Body:

{
"unitEnum": "CoinAcceptorLight"
}

Response:

200 OK

Disable led for all tiles

Disable led for all tiles

POST /api/touch-tile/disable-all

Example Request:

Terminal window
curl -X POST \
-H "Content-Length: 0" \
-w "HTTP Status: %{http_code}\n" \
https://mywellness-test-vu.maxcrc.de/api/touch-tile/disable-all

Response:

200 OK

Enable/Disable Barcode Led

Enable/Disable barcode led

POST /api/touch-tile/barcode-led-enable

Example Request:

Terminal window
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-enable

Body:

{
"enabled": true/false
}

Response:

200 OK

Enable/Disable RFID Card Led

Enable/Disable RFID Card Led

POST /api/touch-tile/rfid-card-led-enable

Example Request:

Terminal window
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-enable

Body:

{
"enabled": true/false
}

Response:

200 OK

Enable/Disable Card Dispenser Led

Enable/Disable Card Dispenser Led

POST /api/touch-tile/card-dispenser-led-enable

Example Request:

Terminal window
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-enable

Body:

{
"enabled": true/false
}

Response:

200 OK

Change 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:

Terminal window
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-switch

Response:

200 OK

Begin 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:

Terminal window
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-transaction

Body:

{
"money": {
"value": "9",
"currencyCode": "EUR"
},
"paymentMethod": 1,
"barcode": "",
"giftAmount": {
"value": "0",
"currencyCode": "EUR"
}
}

Response:

200 OK

Get 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:

Terminal window
curl \
-w "HTTP Status: %{http_code}\n" \
'https://mywellness-test-vu.maxcrc.de/api/payment/get-accepted-cash?value=9&currencyCode=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:

Terminal window
curl \
-w "HTTP Status: %{http_code}\n" \
https://mywellness-test-vu.maxcrc.de/api/payment/status

Success 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:

Terminal window
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-transaction

Body:

{
"BoolValue": false
}

Response:

200 OK

Abort 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:

Terminal window
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-transaction

Body:

{
"paymentMethod": 1
}

Response:

200 OK

Revert 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:

Terminal window
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-transaction

Body:

{
"BoolValue": false
}

Response:

200 OK

Save 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:

Terminal window
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-order

Body:

{
"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": 203

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:

Terminal window
curl -X POST \
-F "file=@image.png" \
-F "PrintTaskType=0" \
-w "HTTP Status: %{http_code}\n" \
https://mywellness-test-vu.maxcrc.de/api/print/picture

Headers:

Content-type: multipart/form-data

Body:

KeyValueDescription
Fileimage.pngBinary file to print
PrintTaskType0Defines what to print (Receipt, Ticket, etc…)

Response:

200 OK

Postman Example:

postman_example_picture

Prints XML

POST /api/print/xml

Example Request:

You can test this endpoint by downloading 1.xml and performing the following request:

Terminal window
curl -X POST \
-F "file=@1.xml" \
-F "PrintTaskType=0" \
-w "HTTP Status: %{http_code}\n" \
https://mywellness-test-vu.maxcrc.de/api/print/xml

Headers:

Content-type: multipart/form-data

Body:

KeyValue
File1.xml
PrintTaskType0

Response:

200 OK

Postman Example:

postman_example_xml

Rfid Card Status

Get Rfid-Card device status

GET /api/rfid-card/status

Example Request:

Terminal window
curl \
-w "HTTP Status: %{http_code}\n" \
https://mywellness-test-vu.maxcrc.de/api/rfid-card/status

Response:

{
"is_available": true,
"stack_empty": false
}

Get Accepted Credit Cards

Gets accepted credit cards

GET /api/credit-card-terminal/accepted-credit-cards

Example Request:

Terminal window
curl \
-w "HTTP Status: %{http_code}\n" \
https://mywellness-test-vu.maxcrc.de/api/credit-card-terminal/accepted-credit-cards

Response:

[
{
"name": "ALL"
}
]

Get VU Configuration

Gets the current vending unit configuration.

GET /api/get-vu-configuration

Example Request:

Terminal window
curl \
-w "HTTP Status: %{http_code}\n" \
https://mywellness-test-vu.maxcrc.de/api/get-vu-configuration

Response:

{
"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": ""
}