To enable the transmission of kiosk status metrics, navigate to Service Menu > Main Settings:

  • Enable the parameter Use metrics.
  • In the Metrics Service Base URL parameter, specify the address: https://rk-platform-monitoring.rkeeper.com.
  • Set the A/B Testing tag for metrics — used for additional labeling of metrics; the value can be any string, and there is no uniqueness check.


To retrieve data from the metrics service, you will need a Token. You can obtain the token by sending a request to the email: yaro@ucsrkeeper.at.

 Also create a separate extended properties for the restaurant:

  • System Name — GA_CUSTOM_ID
  • Types List — Restaurant.


In the Service > Stations and Devices directory for the restaurant, in the created extended property, specify ChampsID — the restaurant code in the global KFC system (data can be obtained from the Franchisee).

And create (if not already created) a separate extended property for the cash station:

  • System Name — StationType
  • Types List — Cash Station 

In the created extended property on the kiosk's cash station, set the value to 3. Stations with this value will be included in the station list in references.

Next, in the r_keeper manager station, in the restaurant properties, in the Basic section, fill in the Franchisee parameter. This data will also be transmitted in the station list in references.

Metric types (typeData):

  • References — we send a list of active cash registers (active stations with the extended property StationType = 3) and the restaurant schedule associated with the kiosk, country and franchise are sent.
  • Time based event — we send the name of the current kiosk screen once every 60 seconds.
  • Event based event — we send information about order payment or about sending the order for payment at the cashier.

Common fields for all metric types:

  • keyId active license key (key code in the Licensing System)
  • champsID  restaurant code in the global KFC system. Any text can be entered here. Uniqueness is not checked. Заполняется в менеджерской r_keeper в расширенном свойстве
  • kioskName - cashGuid — the GUID of the cash register the kiosk is connected to. In the Rkeeper Manager this field is GUID
  • kioskName - cashNetName — the network name of the cash register the kiosk is connected to. In the Rkeeper Manager this field is Network ID
  • kioskAppVersion - back — full information about version of kiosk's backend. 

    Value from example: v0.0.383.21-rev.7b44ad92-j.42173:

    • v0.0.383.21 — main information about kiosk's backend part;
    • rev.7b44ad92-j.42173 — technical information.
  • kioskAppVersion - front — front part version name
  • kioskAppVersion - altFront —  alternative frontend version
  • kioskAppVersion - theme — used theme
  • objectCode — full object code, kiosk is connected to
  • tagAB - A/B Testing tag. Used for additional labeling. Set during the initial kiosk configuration in the parameter A/B Testing tag for metrics. The value can be any string, and uniqueness is not checked.

Fields depending on the metric type (data):

Metric type: References 

The kiosk sends a list of active cash registers and the restaurant schedule associated with the kiosk.

Only active stations with the extended property StationType = 3 are sent

Frequency of sending References metrics:
Sent once a week or if changes are detected in the metric at kiosk startup compared to the last sent one.

Current example for the References metric type:

Example
 {
	"typeData": "References",
	"data": {
		"restaurantName": "3252 KFC Каскад",
		"restaurantGuid": "{5EB1B98D-5CDD-4733-9836-BFC9CC6F2B45}",
		"franchise": "AMREST",
		"country": "Belarus",
		"champsID": "375123456789",
		"restaurantSchedule": [
			{
				"daysOfWeek": "[dwSunday]",
				"startTime": 36000000,
				"endTime": 72000000
			},
			{
				"daysOfWeek": "[dwMonday]",
				"startTime": 36000000,
				"endTime": 72000000
			},
			{
				"daysOfWeek": "[dwTuesday]",
				"startTime": 36000000,
				"endTime": 72000000
			},
			{
				"daysOfWeek": "[dwWednesday]",
				"startTime": 39600000,
				"endTime": 75600000
			},
			{
				"daysOfWeek": "[dwThursday]",
				"startTime": 32400000,
				"endTime": 54000000
			},
			{
				"daysOfWeek": "[dwFriday]",
				"startTime": 36000000,
				"endTime": 72000000
			},
			{
				"daysOfWeek": "[dwSaturday]",
				"startTime": 60000,
				"endTime": 86340000
			}
		],
		"cashes": [
			{
				"cashGuid": "{7F2B98A5-B365-41EB-A5EC-265E52F05AF1}",
				"cashNetName": "3252_KIOSK_PRN_1"
			},
			{
				"cashGuid": "{A0E029D9-D6D3-414E-9B30-19329677F940}",
				"cashNetName": "3252_KIOSK_PRN_2"
			}
		],
		"kioskName": {
			"cashGuid": "{A0E029D9-D6D3-414E-9B30-19329677F940}",
			"cashNetName": "3252_KIOSK_PRN_2"
		},
		"kioskAppVersion": {
			"back": "0.0.450.24",
			"front": "0.0.423.24",
			"theme": "DefaultUCS"
		},
		"objectCode": "199990207",
		"tagAB": "",
		"keyId": "AE066500"
	},
	"cnt": 4
}
  • franchise restaurant property > Basic > Franchisee in the r_k 7 manager station
  • country — country (based on the 3-character prefix in champsID)
    • Austria — 43K
    • Belarus — 375
    • Bosnia — 387
    • Moldova — 373
    • Slovakia — 421
    • Ukraine — 380
  • restaurantSchedule —restaurant working schedule::
    • daysOfWeek — day of the week
    • startTime start time (time in milliseconds from the beginning of the day (00:00))
    • endTime — end time (time in milliseconds from the beginning of the day (00:00))
  • cashes list of active cash registers of the restaurant the kiosk is connected to:

    • cashGuid cash register GUID (in the Rkeeper Manager the GUID field);
    • cashNetName — network name of the cash register (in the Rkeeper Manager the Network ID field);

Metric type: Time based event

The kiosk sends the name of the current kiosk screen once every 60 seconds.

Example
{
 	"typeData": "Time based event",
 	"data": {
 		"state": "Order",
 		"champsID": "375123456789",
 		"kioskName": {
 			"cashGuid": "{A0E029D9-D6D3-414E-9B30-19329677F940}",
  			"cashNetName": "3252_KIOSK_PRN_2"
 		},
 		"kioskAppVersion":{
  			"back": "0.0.450.24", 
 			"front": "0.0.423.24", 
 			"theme": "DefaultUCS" 
 		},
 		"objectCode": "199990207",
 		"tagAB": "",
 		"keyId": "AE066500"
 	},
 	"cnt": 6
} 
Пример
{
	"typeData": "Time based event",
	"data": {
		"state": "Waiting window",
		"champsID": "375123456789",
		"kioskName": {
			"cashGuid": "{A0E029D9-D6D3-414E-9B30-19329677F940}",
			"cashNetName": "3252_KIOSK_PRN_2"
		},
		"kioskAppVersion": {
			"back": "0.0.450.24",
			"front": "0.0.423.24",
			"theme": "DefaultUCS"
		},
		"objectCode": "199990207",
		"tagAB": "",
		"keyId": "AE066500"
	},
	"cnt": 10
}

Options for the state field (describes the current screen on the kiosk):

  • Waiting window — initial welcome screen: the kiosk is operational but not in use at the moment the metric is sent
  • Order — the order process. Starts when the user enters the menu on the kiosk
  • Manager functions — staff is performing tasks in the kiosk’s manager interface
  • Locked — the kiosk is locked
  • Error — an error is displayed on the kiosk screen (for example, if something goes wrong during payment). The message is shown, but the kiosk remains operational
  • Unknown — another screen

Additionally, the kiosk sends:

error – error information (during payment or when sending the order for payment at the cash station):
code – error code. If there is no error, the value is 0.
msg – error message. If there is no error, the value is unknown.

The error block is added only if there is an error.
If the error is unknown, the code is KIOSK_INTERNAL_ERROR and the message is empty.

Пример
{
	"typeData": "Time based event",
	"data": {
		"state": "Error",
		"error": {
			"code": "RK7_5304",
			"msg": "Инстанс лицензии не найден."
		},
		"champsID": "375123456789",
		"kioskName": {
			"cashGuid": "{A0E029D9-D6D3-414E-9B30-19329677F940}",
			"cashNetName": "3252_KIOSK_PRN_2"
		},
		"kioskAppVersion": {
			"back": "0.0.450.24",
			"front": "0.0.423.24",
			"theme": "DefaultUCS"
		},
		"objectCode": "199990207",
		"tagAB": "",
		"keyId": "AE066500"
	},
	"cnt": 45
}

Metric type: Event based event

The kiosk sends information about order payment or about sending the order for payment at the cashier.

Пример
{
    "typeData": "Event based event",
    "data": {
        "orderResult": "successfully",
        "orderGuid": "{19D3BCD9-5706-4D4F-BEFF-336EF741A04A}",
        "champsID": "375123456789",
        "kioskName": {
            "cashGuid": "{A0E029D9-D6D3-414E-9B30-19329677F940}",
            "cashNetName": "3252_KIOSK_PRN_2"
        },
        "kioskAppVersion": {
            "back": "0.0.450.24",
            "front": "0.0.423.24",
            "theme": "DefaultUCS"
        },
        "objectCode": "199990207",
        "tagAB": "",
        "keyId": "AE066500"
    },
    "cnt": 5
}

  • orderResult — result of an order.

    Possible values:

    • Successfully — the order was successfully paid
    • Failed — an error occurred during payment
    • Error_sending — an error occurred while sending the order for payment at the cashier
    • Sended — the order was successfully sent to the cashier for payment
  • orderGuid — the order GUID. Filled only if the payment is made at the kiosk
  • error error information (during payment or sending the order for payment at the cashier):

    • code — error code. If there is no error, the value is 0
    • msg — error message. If there is no error, the value is unknown.

The error block is added only if there is an error.

If the error is unknown, the code KIOSK_INTERNAL_ERROR is added and the message is empty.

Errors in the state metric are always sent in English. 

Error examples

"error": {
                    "code": "RK7_3813",
                    "msg": "Интерфейс СБП: Ошибка \"Операция отменена\"(18)."
                }
"error": {
                    "code": "RK7_236",
                    "msg": "Ошибка отправки данных на SBP_FARCARDS2."
                }
"error": {
                    "code": "RK7_2043",
                    "msg": "Компьютер принтера \"3252_KIOSK_PRN_2 Plaintex 1(2123)\" (3252_KIOSK_PRN_2:3252_KIOSK_PRN_2) не подключен."
                }
                "error": {
                    "code": "RK7_2703",
                    "msg": "Некорректный код карты ПДС \"{B4034D6A-C0D0-4DFB-B768-689D7D20DD15}\"."
                }
                "error": {
                    "code": "RK7_3813",
                    "msg": "Интерфейс СБП: Ошибка \"Неверные параметры.\"(18)."
                }

Errors on the kiosk can be either external (from r_keeper 7) or internal (from kiosk).

Internal erorr codes: 

  "KIOSK_107": "Payment error.",
  "KIOSK_108": "Check device state error.",
  "KIOSK_109": "Udb files not sent.",
  "KIOSK_110": "Couldn't load RefData.",
  "KIOSK_111": "Weblate error.",
  "KIOSK_112": "Error to connect to midserver.",
  "KIOSK_113": "RK7_REF_LOAD_ACTIVITY_ERR",
  "KIOSK_114": "SameName error",
  "KIOSK_116": "error_shift_exceeded_specified_value",
  "KIOSK_117": "error_paper_low",
  "KIOSK_118": "error_paper_out",
  "KIOSK_119": "error_paper_other",
  "KIOSK_120": "error_eklz_full",
  "KIOSK_121": "error_fisc_over_24",
  "KIOSK_122": "error_fisc_available",
  "KIOSK_123": "error_ofd_unsended",
  "KIOSK_124": "error_device_uavailable",
  "KIOSK_125": "error_restaurant_is_closed",
  "KIOSK_126": "error_shift_automatically_closed",
  "KIOSK_127": "error_no_connection_to_cash_server",
  "KIOSK_128": "error_problem_with_getting_device_statuses",
  "KIOSK_129": "Error to void not closed orders.",
  "KIOSK_130": "There is no recipients.",
  "KIOSK_131": "Order is not Approved by Waiter.",
  "KIOSK_132": "Couldn't send XML order file.",
  "KIOSK_133": "Restaurant id is not set in browser.cfg",
  "KIOSK_134": "There is no tables in current hall plan",
  "KIOSK_135": "There is no such hallPlanId at current restaurant",
  "KIOSK_136": "Restart after lost connection to cash server",
  "KIOSK_137": "Cannot update orderMenu.",
  "KIOSK_137_2": "Cannot update orderMenu. Duplicated ID=",
  "KIOSK_138": "Cannot delete orderMenu. ",
  "KIOSK_139": "error_update_app_task_failed",
  "KIOSK_140": "Cannot find dish with such code",
  "KIOSK_141": "Dish with such code is blocked at Stop List",
  "KIOSK_142": "There is empty currencies for this bonus. Incorrect setting for \"Субсчёт для FarCards\" at rk7 management setting",
  "KIOSK_143": "Used wrong type kiosk mode for Marked Dishes, change kiosk setting mode type to write mode, please",
  "KIOSK_144": "Prepay sum cannot be equal 0",
  "KIOSK_145": "There is no Prepay line from rk7",
  "KIOSK_146": "To use this method please enable filter settings",
  "KIOSK_147": "Classification parent category for type id cannot be 0. Set correct classification parent category id at settings.",
  "KIOSK_148": "Classification parent category for ingredient id cannot be 0. Set correct classification parent category id at settings.",
  "KIOSK_149": "There is no information about fiscal check by this visitId and guid.",
  "KIOSK_150": "error_engineering_works",
  "KIOSK_151": "No order was found in the local storage while changing the type of order",
  "KIOSK_152": "Url of loyalty Burger King is not set at kiosk settings.",
  "KIOSK_153": "BK Loyalty Error : There is problem of interaction with Burger King Loyalty API",
  "KIOSK_154": "BK Loyalty Error : There is no token from Burger King Loyalty API",
  "KIOSK_155": "QRCode Generator : Something went wrong when generating QRCode image",
  "KIOSK_156": "BK Loyalty Error : Sorry user is not authorized at BK Loyalty system",
  "KIOSK_157": "BK Loyalty Error : Sorry incorrect confirm code for authentication by phone number at BK Loyalty system",
  "KIOSK_158": "BK Loyalty Error : Invalid duration refresh token calculation, duration value must be more than zero",
  "KIOSK_159": "BK Loyalty Error : Sorry we cannot pre calc with zero quantity dishes order at BK Loyalty system",
  "KIOSK_160": "Undefined selector for changeToCombo fuctionality. Set correct lunchSelIdent in settings",
  "KIOSK_161": "BK Loyalty Error : Sorry kiosk has internal error during transforming modifier data to Burger King loyalty format",
  "KIOSK_162": "BK Loyalty Error : It seems that Burger King loyalty is not enable. Please check kiosk settings.",
  "KIOSK_163": "There is no saved clientOrder at current local order",
  "KIOSK_164": "BK Loyalty Error : Sorry service is not available for now.",
  "KIOSK_165": "BK Loyalty Error : Sorry service is not available for now. Crowns may not be awarded.",
  "KIOSK_166": "The operation is prohibited since the check %s is a fiscal advance payment check. To delete a receipt, delete the fiscal prepayment at the checkout.",
  "KIOSK_167": "Get Opened Order : Sorry there is no opened order at rk7. Please contact with administrator",
  "KIOSK_168": "Get Order : Sorry order with visit = &quot%s" is not found at rk7. Please contact with administrator",
  "KIOSK_169": "PayOrder : Sorry there is some error when calculate payment for order.",
  "KIOSK_170": "rkeeper CRM : Get loyalty by service code : Sorry there is no loyalty. Please make check in or sign in at r_keeper Crm Loyalty before",
  "KIOSK_171": "rkeeper CRM : You cannot apply same loyalty to one order more than one time",
  "KIOSK_172": "rkeeper CRM : Sorry there is not passed applied loyalties",
  "KIOSK_173": "rkeeper CRM : Sorry there is no such product group",
  "KIOSK_174": "rkeeper CRM : Sorry there is no such product at this group",
  "KIOSK_175": "rkeeper CRM : Sorry there is a lot of products at this group that it can be",
  "KIOSK_176": "rkeeper CRM : Sorry max quantity same type product at this group is exceeded",
  "KIOSK_177": "Error while getting information about the organization",
  "KIOSK_178": "Invalid data format",
  "KIOSK_179": "Cannot get loyalty info for input code: %s",
  "KIOSK_180": "rkeeper CRM : Get loyalty by service code : Sorry there is no loyalty. Wrong input coupon service code.",
  "KIOSK_181": "multi payStep : terminalAuthStart2 : There is no Prepay info line from RK7.",
  "KIOSK_182": "Cannot find dish with such ident",
  "KIOSK_183": "Dish with such ident is blocked at Stop List",
  "KIOSK_184": "rkeeper CRM : Something went wrong during update amount of bonus write-off",
  "KIOSK_185": "Importing settings was not completed successfully",
  "KIOSK_186": "Loyalty Plant : You cannot apply more than one code",
  "KIOSK_187": "Loyalty Plant : Unknown type of loyalty",
  "KIOSK_188": "Metrics : There is problem of interaction with Metrics API",
  "KIOSK_189": "Metrics : Error while getting counter for metrics",
  "KIOSK_190": "Premium Bonus : Sorry there is no object of Premium Bonus with such service code",
  "KIOSK_191": "Premium Bonus : Sorry you cannot apply Premium Bonus more than one time for one order",
  "KIOSK_192": "Premium Bonus : Url of loyalty Premium Bonus is not set at kiosk settings.",
  "KIOSK_193": "Premium Bonus : AuthToken for Premium Bonus is not set at kiosk settings.",
  "KIOSK_194": "Premium Bonus : Sale Point Identifier for Premium Bonus is not set at kiosk settings.",
  "KIOSK_195": "Premium Bonus : Error response from Premium Bonus service - %s",
  "KIOSK_196": "Premium Bonus : Error user with phone number %s is not verified by sms code",
  "KIOSK_197": "Premium Bonus : Error user with phone number %s is not registered at Premium Bonus loyalty service",
  "KIOSK_198": "Premium Bonus : Error user with phone number %s is blocked at Premium Bonus loyalty service",
  "KIOSK_199": "Premium Bonus : Response error when try to authenticate at Premium Bonus loyalty service",
  "KIOSK_200": "Cannot find dish with such guid",
  "KIOSK_201": "Dish with such ident is blocked at Stop List",
  "KIOSK_202": "Premium Bonus: empty field setting for charge mark dish code",
  "KIOSK_203": "Premium Bonus: there is no dish with such guid for charge mark dish or it is blocked at Stop List",
  "KIOSK_204": "Kiosk cannot reach the licensing system. Contact your service provider or relicense kiosk"
  "KIOSK_205": "Today is the deadline for working with an invalid signature. Contact your service provider or relicense kiosk"
  "KIOSK_206": "Licensing Error: License data not available (null value)"
  "KIOSK_207": "Premium Bonus : selected menu option is null or empty."
  "KIOSK_208": "Premium Bonus : selected menu option is not in correct range values"
  "KIOSK_209": "Premium Bonus : discCodeBonusCard for charge bonus is null or empty"
  "KIOSK_210": "Kiosk cannot reach the licensing system. It will be blocked in %s days. Relicense kiosk or contact your service provider"
  "KIOSK_211": "Kiosk cannot reach the licensing system. It will be blocked in %s days. Contact your service provider"   "KIOSK_500": "error_unexpected_error",
  "KIOSK_500": "error_unexpected_error",
  "KIOSK_501": "Kiosk internal error while working with BK Loaylty API",
  "SETTINGS_404": "No setting for XmlInterface was found.",
  "RK7_2202": "The order "{guid}" is not found."

External error codes returned by rk7 (marked with the RK7_ prefix followed by the specific error code) are listed in the article Erorr codes.

Methods for retrieving specific information from metrics

Method

GET /api/v1/metrics/read

This method allows you to retrieve all metric types for a specific period, for a specific object code, and for a specific kiosk.

Filters:

  • dateFrom and dateTo — the time range for the metrics (from/to).
  • cntFrom and cntTo — the message counter range (field cnt).
  • total — the number of metrics to return in the response.
  • cashNetName — the kiosk name.
  • champsID — the kiosk's champsID.
  • objectCode — the kiosk object code.

Request:

curl --location --request POST 'https://rk-platform-monitoring.rkeeper.com/api/v1/metrics/read' \
--header 'Authorization: Bearer <Token> \ The Token can be obtained by requesting at yaro@ucsrkeeper.at.
--header 'Content-Type: application/json' \
--data-raw '{
    "dateFrom": "2025-05-06T00:00:00Z",
    "dateTo": "2025-05-07T23:00:00Z",
    "cntFrom": 12000,
    "cntTo": 13000,
    "total": 100,
    "cashNetName": "KIOSK_1_STM",
    "champsID": "387K04",
    "objectCode": "527280004"
}'

Response example
[
     {
        "timestamp": "2025-07-08T14:57:51Z",
        "payload": {
            "typeData": "Time based event",
            "data": {
                "state": "Waiting window",
                "champsID": "234234234234211",
                "kioskName": {
                    "cashGuid": "{1E5C9B01-A065-48B0-882A-DDB46C22BC9C}",
                    "cashNetName": "RK7CASH004"
                },
                "kioskAppVersion": {
                    "back": " v0.0.383.21-rev.7b44ad92-j.42173",
                    "front": "0.0.330.21",
                    "theme": "KFCCee"
                },
                "objectCode": "199990001",
                "tagAB": "AAA"
            },
            "cnt": 21259
        }
    }
]
  • timestamp —the date and time the metric was saved on server
  • payload - typeData metric type

  • payload - data — main information about the metric (depends on the type of metric)

  • payload - cnt metric counter. Starts at 1 for each kiosk and increments by 1 as metrics are sent from the kiosk.

To retrieve data from the metrics service, you will need a Token. You can obtain the token by sending a request to the email: yaro@ucsrkeeper.at.

 Also create a separate extended properties for the restaurant:

  • System Name — GA_CUSTOM_ID
  • Types List — Restaurant.



In the Service > Cash Stations and Devices directory for the restaurant, in the created extended property, specify ChampsID — the restaurant code in the global KFC system (data can be obtained from the Franchisee).

And create (if not already created) a separate extended property for the cash station:

  • System Name — StationType
  • Types List — Cash Station 

In the created extended property on the kiosk's cash station, set the value to 3. Stations with this value will be included in the station list in references.

Next, in the r_keeper manager station, in the restaurant properties, in the Basic section, fill in the Franchisee parameter. This data will also be transmitted in the station list in references.

Metric types (typeData):

  • References — we send a list of active cash registers (active stations with the extended property StationType = 3) and the restaurant schedule associated with the kiosk, country and franchise are sent.
  • Time based event — we send the name of the current kiosk screen once every 60 seconds.
  • Event based event — we send information about order payment or about sending the order for payment at the cashier.

Common fields for all metric types:

  • keyId active license key (key code in the Licensing System)
  • champsID  restaurant code in the global KFC system. Any text can be entered here. Uniqueness is not checked. Filled in the r_keeper manager station as an extended property.
  • kioskName - cashGuid — the GUID of the cash register the kiosk is connected to. In the Rkeeper Manager this field is GUID
  • kioskName - cashNetName — the network name of the cash register the kiosk is connected to. In the Rkeeper Manager this field is Network ID

  • kioskAppVersion - back full information about version of kiosk's backend. 

    Value from example: v0.0.383.21-rev.7b44ad92-j.42173:

    • v0.0.383.21 — main information about kiosk's backend part;
    • rev.7b44ad92-j.42173 — technical information.
  • kioskAppVersion - front — front part version name
  • kioskAppVersion - altFront  alternative frontend version
  • kioskAppVersion - theme — used theme
  • objectCode — full object code, kiosk is connected to

  • tagAB - A/B Testing tag. Used for additional labeling. Set during the initial kiosk configuration in the parameter A/B Testing tag for metrics. The value can be any string, and uniqueness is not checked.

Fields depending on the metric type (data):

Metric type: References 

The kiosk sends a list of active cash registers and the restaurant schedule associated with the kiosk.

Only active stations with the extended property StationType = 3 are sent

Frequency of sending References metrics:
Sent once a week or if changes are detected in the metric at kiosk startup compared to the last sent one.

Current example for the References metric type:

Example
 {
	"typeData": "References",
	"data": {
		"restaurantName": "3252 KFC Kaskad",
		"restaurantGuid": "{5EB1B98D-5CDD-4733-9836-BFC9CC6F2B45}",
		"franchise": "AMREST",
		"country": "Belarus",
		"champsID": "375123456789",
		"restaurantSchedule": [
			{
				"daysOfWeek": "[dwSunday]",
				"startTime": 36000000,
				"endTime": 72000000
			},
			{
				"daysOfWeek": "[dwMonday]",
				"startTime": 36000000,
				"endTime": 72000000
			},
			{
				"daysOfWeek": "[dwTuesday]",
				"startTime": 36000000,
				"endTime": 72000000
			},
			{
				"daysOfWeek": "[dwWednesday]",
				"startTime": 39600000,
				"endTime": 75600000
			},
			{
				"daysOfWeek": "[dwThursday]",
				"startTime": 32400000,
				"endTime": 54000000
			},
			{
				"daysOfWeek": "[dwFriday]",
				"startTime": 36000000,
				"endTime": 72000000
			},
			{
				"daysOfWeek": "[dwSaturday]",
				"startTime": 60000,
				"endTime": 86340000
			}
		],
		"cashes": [
			{
				"cashGuid": "{7F2B98A5-B365-41EB-A5EC-265E52F05AF1}",
				"cashNetName": "3252_KIOSK_PRN_1"
			},
			{
				"cashGuid": "{A0E029D9-D6D3-414E-9B30-19329677F940}",
				"cashNetName": "3252_KIOSK_PRN_2"
			}
		],
		"kioskName": {
			"cashGuid": "{A0E029D9-D6D3-414E-9B30-19329677F940}",
			"cashNetName": "3252_KIOSK_PRN_2"
		},
		"kioskAppVersion": {
			"back": "0.0.450.24",
			"front": "0.0.423.24",
			"theme": "DefaultUCS"
		},
		"objectCode": "199990207",
		"tagAB": "",
		"keyId": "AE066500"
	},
	"cnt": 4
}
  • franchise  restaurant property > Basic > Franchisee in the r_k7 manager station
  • country country (based on the 3-character prefix in champsID)
    • Austria — 43K
    • Belarus — 375
    • Bosnia — 387
    • Moldova — 373
    • Slovakia — 421
    • Ukraine — 380
  • restaurantSchedule —restaurant working schedule::
    • daysOfWeek day of the week
    • startTime start time (time in milliseconds from the beginning of the day (00:00))
    • endTime — end time (time in milliseconds from the beginning of the day (00:00))
  • cashes list of active cash registers of the restaurant the kiosk is connected to:

    • cashGuid cash register GUID (in the Rkeeper Manager the GUID field);
    • cashNetName — network name of the cash register (in the Rkeeper Manager the Network ID field);

Metric type: Time based event

The kiosk sends the name of the current kiosk screen once every 60 seconds.

Example
{
 	"typeData": "Time based event",
 	"data": {
 		"state": "Order",
 		"champsID": "375123456789",
 		"kioskName": {
 			"cashGuid": "{A0E029D9-D6D3-414E-9B30-19329677F940}",
  			"cashNetName": "3252_KIOSK_PRN_2"
 		},
 		"kioskAppVersion":{
  			"back": "0.0.450.24", 
 			"front": "0.0.423.24", 
 			"theme": "DefaultUCS" 
 		},
 		"objectCode": "199990207",
 		"tagAB": "",
 		"keyId": "AE066500"
 	},
 	"cnt": 6
} 
Пример
{
	"typeData": "Time based event",
	"data": {
		"state": "Waiting window",
		"champsID": "375123456789",
		"kioskName": {
			"cashGuid": "{A0E029D9-D6D3-414E-9B30-19329677F940}",
			"cashNetName": "3252_KIOSK_PRN_2"
		},
		"kioskAppVersion": {
			"back": "0.0.450.24",
			"front": "0.0.423.24",
			"theme": "DefaultUCS"
		},
		"objectCode": "199990207",
		"tagAB": "",
		"keyId": "AE066500"
	},
	"cnt": 10
}

Options for the state field (describes the current screen on the kiosk):

  • Waiting window — initial welcome screen: the kiosk is operational but not in use at the moment the metric is sent
  • Order — the order process. Starts when the user enters the menu on the kiosk
  • Manager functions — staff is performing tasks in the kiosk’s manager interface
  • Locked — the kiosk is locked
  • Error — an error is displayed on the kiosk screen (for example, if something goes wrong during payment). The message is shown, but the kiosk remains operational
  • Unknown — another screen

Additionally, the kiosk sends:

error – error information (during payment or when sending the order for payment at the cash station):
code – error code. If there is no error, the value is 0.
msg – error message. If there is no error, the value is unknown.

The error block is added only if there is an error.
If the error is unknown, the code is KIOSK_INTERNAL_ERROR and the message is empty.

Пример
{
	"typeData": "Time based event",
	"data": {
		"state": "Error",
		"error": {
			"code": "RK7_5304",
			"msg": "License instance not found."
		},
		"champsID": "375123456789",
		"kioskName": {
			"cashGuid": "{A0E029D9-D6D3-414E-9B30-19329677F940}",
			"cashNetName": "3252_KIOSK_PRN_2"
		},
		"kioskAppVersion": {
			"back": "0.0.450.24",
			"front": "0.0.423.24",
			"theme": "DefaultUCS"
		},
		"objectCode": "199990207",
		"tagAB": "",
		"keyId": "AE066500"
	},
	"cnt": 45
}

Metric type: Event based event

The kiosk sends information about order payment or about sending the order for payment at the cashier.

Пример
{
    "typeData": "Event based event",
    "data": {
        "orderResult": "successfully",
        "orderGuid": "{19D3BCD9-5706-4D4F-BEFF-336EF741A04A}",
        "champsID": "375123456789",
        "kioskName": {
            "cashGuid": "{A0E029D9-D6D3-414E-9B30-19329677F940}",
            "cashNetName": "3252_KIOSK_PRN_2"
        },
        "kioskAppVersion": {
            "back": "0.0.450.24",
            "front": "0.0.423.24",
            "theme": "DefaultUCS"
        },
        "objectCode": "199990207",
        "tagAB": "",
        "keyId": "AE066500"
    },
    "cnt": 5
}

  • orderResult — result of an order.

    Possible values:

    • Successfully — the order was successfully paid
    • Failed — an error occurred during payment
    • Error_sending — an error occurred while sending the order for payment at the cashier
    • Sended — the order was successfully sent to the cashier for payment
  • orderGuid — the order GUID. Filled only if the payment is made at the kiosk
  • error error information (during payment or sending the order for payment at the cashier):

    • code — error code. If there is no error, the value is 0
    • msg — error message. If there is no error, the value is unknown.

The error block is added only if there is an error.

If the error is unknown, the code KIOSK_INTERNAL_ERROR is added and the message is empty.

Errors in the state metric are always sent in English. 

Error examples

"error": {
                    "code": "RK7_3813",
                    "msg": "FPS interface: Error \"Operation canceled\"(18)."
                }
"error": {
                    "code": "RK7_236",
                    "msg": "Error sending data to FPS_FARCARDS2.."
                }
"error": {
                    "code": "RK7_2043",
                    "msg": "Printer computer \"3252_KIOSK_PRN_2 Plaintex 1(2123)\" (3252_KIOSK_PRN_2:3252_KIOSK_PRN_2) is not connected."
                }
                "error": {
                    "code": "RK7_2703",
                    "msg": "Invalid PDS card code \"{B4034D6A-C0D0-4DFB-B768-689D7D20DD15}\"."
                }
                "error": {
                    "code": "RK7_3813",
                    "msg": "FPS interface: Error \"Invalid parameters.\"(18)."
                }

Errors on the kiosk can be either external (from r_keeper 7) or internal (from kiosk).

Internal erorr codes: 

  "KIOSK_107": "Payment error.",
  "KIOSK_108": "Check device state error.",
  "KIOSK_109": "Udb files not sent.",
  "KIOSK_110": "Couldn't load RefData.",
  "KIOSK_111": "Weblate error.",
  "KIOSK_112": "Error to connect to midserver.",
  "KIOSK_113": "RK7_REF_LOAD_ACTIVITY_ERR",
  "KIOSK_114": "SameName error",
  "KIOSK_116": "error_shift_exceeded_specified_value",
  "KIOSK_117": "error_paper_low",
  "KIOSK_118": "error_paper_out",
  "KIOSK_119": "error_paper_other",
  "KIOSK_120": "error_eklz_full",
  "KIOSK_121": "error_fisc_over_24",
  "KIOSK_122": "error_fisc_available",
  "KIOSK_123": "error_ofd_unsended",
  "KIOSK_124": "error_device_uavailable",
  "KIOSK_125": "error_restaurant_is_closed",
  "KIOSK_126": "error_shift_automatically_closed",
  "KIOSK_127": "error_no_connection_to_cash_server",
  "KIOSK_128": "error_problem_with_getting_device_statuses",
  "KIOSK_129": "Error to void not closed orders.",
  "KIOSK_130": "There is no recipients.",
  "KIOSK_131": "Order is not Approved by Waiter.",
  "KIOSK_132": "Couldn't send XML order file.",
  "KIOSK_133": "Restaurant id is not set in browser.cfg",
  "KIOSK_134": "There is no tables in current hall plan",
  "KIOSK_135": "There is no such hallPlanId at current restaurant",
  "KIOSK_136": "Restart after lost connection to cash server",
  "KIOSK_137": "Cannot update orderMenu.",
  "KIOSK_137_2": "Cannot update orderMenu. Duplicated ID=",
  "KIOSK_138": "Cannot delete orderMenu. ",
  "KIOSK_139": "error_update_app_task_failed",
  "KIOSK_140": "Cannot find dish with such code",
  "KIOSK_141": "Dish with such code is blocked at Stop List",
  "KIOSK_142": "There is empty currencies for this bonus. Incorrect setting for \"Subaccount for FarCards\" at rk7 management setting",
  "KIOSK_143": "Used wrong type kiosk mode for Marked Dishes, change kiosk setting mode type to write mode, please",
  "KIOSK_144": "Prepay sum cannot be equal 0",
  "KIOSK_145": "There is no Prepay line from rk7",
  "KIOSK_146": "To use this method please enable filter settings",
  "KIOSK_147": "Classification parent category for type id cannot be 0. Set correct classification parent category id at settings.",
  "KIOSK_148": "Classification parent category for ingredient id cannot be 0. Set correct classification parent category id at settings.",
  "KIOSK_149": "There is no information about fiscal check by this visitId and guid.",
  "KIOSK_150": "error_engineering_works",
  "KIOSK_151": "No order was found in the local storage while changing the type of order",
  "KIOSK_152": "Url of loyalty Burger King is not set at kiosk settings.",
  "KIOSK_153": "BK Loyalty Error : There is problem of interaction with Burger King Loyalty API",
  "KIOSK_154": "BK Loyalty Error : There is no token from Burger King Loyalty API",
  "KIOSK_155": "QRCode Generator : Something went wrong when generating QRCode image",
  "KIOSK_156": "BK Loyalty Error : Sorry user is not authorized at BK Loyalty system",
  "KIOSK_157": "BK Loyalty Error : Sorry incorrect confirm code for authentication by phone number at BK Loyalty system",
  "KIOSK_158": "BK Loyalty Error : Invalid duration refresh token calculation, duration value must be more than zero",
  "KIOSK_159": "BK Loyalty Error : Sorry we cannot pre calc with zero quantity dishes order at BK Loyalty system",
  "KIOSK_160": "Undefined selector for changeToCombo fuctionality. Set correct lunchSelIdent in settings",
  "KIOSK_161": "BK Loyalty Error : Sorry kiosk has internal error during transforming modifier data to Burger King loyalty format",
  "KIOSK_162": "BK Loyalty Error : It seems that Burger King loyalty is not enable. Please check kiosk settings.",
  "KIOSK_163": "There is no saved clientOrder at current local order",
  "KIOSK_164": "BK Loyalty Error : Sorry service is not available for now.",
  "KIOSK_165": "BK Loyalty Error : Sorry service is not available for now. Crowns may not be awarded.",
  "KIOSK_166": "The operation is prohibited since the check %s is a fiscal advance payment check. To delete a receipt, delete the fiscal prepayment at the checkout.",
  "KIOSK_167": "Get Opened Order : Sorry there is no opened order at rk7. Please contact with administrator",
  "KIOSK_168": "Get Order : Sorry order with visit = &quot%s&quot; is not found at rk7. Please contact with administrator",
  "KIOSK_169": "PayOrder : Sorry there is some error when calculate payment for order.",
  "KIOSK_170": "rkeeper CRM : Get loyalty by service code : Sorry there is no loyalty. Please make check in or sign in at r_keeper Crm Loyalty before",
  "KIOSK_171": "rkeeper CRM : You cannot apply same loyalty to one order more than one time",
  "KIOSK_172": "rkeeper CRM : Sorry there is not passed applied loyalties",
  "KIOSK_173": "rkeeper CRM : Sorry there is no such product group",
  "KIOSK_174": "rkeeper CRM : Sorry there is no such product at this group",
  "KIOSK_175": "rkeeper CRM : Sorry there is a lot of products at this group that it can be",
  "KIOSK_176": "rkeeper CRM : Sorry max quantity same type product at this group is exceeded",
  "KIOSK_177": "Error while getting information about the organization",
  "KIOSK_178": "Invalid data format",
  "KIOSK_179": "Cannot get loyalty info for input code: %s",
  "KIOSK_180": "rkeeper CRM : Get loyalty by service code : Sorry there is no loyalty. Wrong input coupon service code.",
  "KIOSK_181": "multi payStep : terminalAuthStart2 : There is no Prepay info line from RK7.",
  "KIOSK_182": "Cannot find dish with such ident",
  "KIOSK_183": "Dish with such ident is blocked at Stop List",
  "KIOSK_184": "rkeeper CRM : Something went wrong during update amount of bonus write-off",
  "KIOSK_185": "Importing settings was not completed successfully",
  "KIOSK_186": "Loyalty Plant : You cannot apply more than one code",
  "KIOSK_187": "Loyalty Plant : Unknown type of loyalty",
  "KIOSK_188": "Metrics : There is problem of interaction with Metrics API",
  "KIOSK_189": "Metrics : Error while getting counter for metrics",
  "KIOSK_190": "Premium Bonus : Sorry there is no object of Premium Bonus with such service code",
  "KIOSK_191": "Premium Bonus : Sorry you cannot apply Premium Bonus more than one time for one order",
  "KIOSK_192": "Premium Bonus : Url of loyalty Premium Bonus is not set at kiosk settings.",
  "KIOSK_193": "Premium Bonus : AuthToken for Premium Bonus is not set at kiosk settings.",
  "KIOSK_194": "Premium Bonus : Sale Point Identifier for Premium Bonus is not set at kiosk settings.",
  "KIOSK_195": "Premium Bonus : Error response from Premium Bonus service - %s",
  "KIOSK_196": "Premium Bonus : Error user with phone number %s is not verified by sms code",
  "KIOSK_197": "Premium Bonus : Error user with phone number %s is not registered at Premium Bonus loyalty service",
  "KIOSK_198": "Premium Bonus : Error user with phone number %s is blocked at Premium Bonus loyalty service",
  "KIOSK_199": "Premium Bonus : Response error when try to authenticate at Premium Bonus loyalty service",
  "KIOSK_200": "Cannot find dish with such guid",
  "KIOSK_201": "Dish with such ident is blocked at Stop List",
  "KIOSK_202": "Premium Bonus: empty field setting for charge mark dish code",
  "KIOSK_203": "Premium Bonus: there is no dish with such guid for charge mark dish or it is blocked at Stop List",
  "KIOSK_204": "Kiosk cannot reach the licensing system. Contact your service provider or relicense kiosk"
  "KIOSK_205": "Today is the deadline for working with an invalid signature. Contact your service provider or relicense kiosk"
  "KIOSK_206": "Licensing Error: License data not available (null value)"
  "KIOSK_207": "Premium Bonus : selected menu option is null or empty."
  "KIOSK_208": "Premium Bonus : selected menu option is not in correct range values"
  "KIOSK_209": "Premium Bonus : discCodeBonusCard for charge bonus is null or empty"
  "KIOSK_210": "Kiosk cannot reach the licensing system. It will be blocked in %s days. Relicense kiosk or contact your service provider"
  "KIOSK_211": "Kiosk cannot reach the licensing system. It will be blocked in %s days. Contact your service provider"   "KIOSK_500": "error_unexpected_error",
  "KIOSK_500": "error_unexpected_error",
  "KIOSK_501": "Kiosk internal error while working with BK Loaylty API",
  "SETTINGS_404": "No setting for XmlInterface was found.",
  "RK7_2202": "The order &quot;{guid}&quot; is not found."

External error codes returned by rk7 (marked with the RK7_ prefix followed by the specific error code) are listed in the article Erorr codes.

Methods for retrieving specific information from metrics

Method

GET /api/v1/metrics/read

This method allows you to retrieve all metric types for a specific period, for a specific object code, and for a specific kiosk.

Filters:

  • dateFrom and dateTo — the time range for the metrics (from/to).
  • cntFrom and cntTo — the message counter range (field cnt).
  • total — the number of metrics to return in the response.
  • cashNetName — the kiosk name.
  • champsID — the kiosk's champsID.
  • objectCode — the kiosk object code.

Request:

curl --location --request POST 'https://rk-platform-monitoring.rkeeper.com/api/v1/metrics/read' \
--header 'Authorization: Bearer <Token> \ The Token can be obtained by requesting at yaro@ucsrkeeper.at.
--header 'Content-Type: application/json' \
--data-raw '{
    "dateFrom": "2025-05-06T00:00:00Z",
    "dateTo": "2025-05-07T23:00:00Z",
    "cntFrom": 12000,
    "cntTo": 13000,
    "total": 100,
    "cashNetName": "KIOSK_1_STM",
    "champsID": "387K04",
    "objectCode": "527280004"
}'

Response example
[
     {
        "timestamp": "2025-07-08T14:57:51Z",
        "payload": {
            "typeData": "Time based event",
            "data": {
                "state": "Waiting window",
                "champsID": "234234234234211",
                "kioskName": {
                    "cashGuid": "{1E5C9B01-A065-48B0-882A-DDB46C22BC9C}",
                    "cashNetName": "RK7CASH004"
                },
                "kioskAppVersion": {
                    "back": " v0.0.383.21-rev.7b44ad92-j.42173",
                    "front": "0.0.330.21",
                    "theme": "KFCCee"
                },
                "objectCode": "199990001",
                "tagAB": "AAA"
            },
            "cnt": 21259
        }
    }
]
  • timestamp —the date and time the metric was saved on server
  • payload - typeData metric type

  • payload - data — main information about the metric (depends on the type of metric)

  • payload - cnt metric counter. Starts at 1 for each kiosk and increments by 1 as metrics are sent from the kiosk.

Method

GET /api/v1/references/{objectCode}

This method allows you to obtain, by object code from the licensing system, a list of all active keyId. Then, for each keyId, a mapping is made between the station guid and cashNetName from the state metrics.

Filters

The method supports optional filters:

  • startDate
  • endDate

If filters are not specified, data is returned for the current date.

You can pass as a value:

  • a date;
  • a date and time.

Response example:

If under a certain keyId the cashNetName and cashGuid are empty, it means that station does not send metrics.

Method

GET /api/v1/country/{country}/objects

This method allows you to obtain data on object codes and the list of kiosks by country.

Filters

The method supports optional filters:

  • startDate
  • endDate

If filters are not specified, data is returned for the current date.

You can pass as a value:

  • a date;
  • a date and time.

Response example:

If the response is empty, it means that restaurants in that country do not have champsID filled in, since the country is determined by it.

Method

GET /api/v1/cash/{cashGuid}/errors

This method allows you to obtain error data for a specific kiosk.

Filters

The method supports optional filters:

  • startDate
  • endDate

If filters are not specified, data is returned for the current date.

You can pass as a value:

  • a date;
  • a date and time.

Response example:

  • No labels