KFI V1.01

The KFI (KassaForte Interface) is a simple API to send orders to a KassaForte POS and retrieve feedback about the order.

Table of Contents

Sending an Order

This is pretty simple: Just send a HTTP-POST request with the XML-document as the body to

https://webserver.kassaforte.de/interfaces/KFI/v1/

A simple example using curl can be found here

Request expected waiting times

With this, you can request the currently expected waiting times for delivery and pickup orders. Beware, these are general estimations and are not tied to a specific order.

https://webserver.kassaforte.de/interfaces/KFI/v1/waitingtimes/

This request doesn't need a body.

Expected waiting times updated

Your endpoint will receive this update, whenever the estimated waiting times are updated in KassaForte POS. This is the same information, that can be obtained by the request above.

The data will be send as application/x-www-form-urlencoded with the following parameters (regex shows possible values):

[ "report" => "expectedWaitingTime", "kfiUsername" => (\w+), "deliverytime" => (\d+|-1), "pickuptime" => (\d+|-1) ]

kfiUsername can be used to identify the shop on your end, as this call can't provide an order-id.

A value of -1 for the *time parameters means, that the user wished to explizitly close the shop for that particular order type.

Delivery time for order updated

Your endpoint will receive this update, when the order was received by KassaForte POS and the user chose an appropriate delivery time.

The data will be send as application/x-www-form-urlencoded with the following parameters (regex shows possible values):

[ "report" => "updateDeliveryTime", "orderId" => <your order-id>, "deliverytime" => <ISO 8601 date> // e.g. 2021-12-10T20:00:00+01:00 ]

Order canceled

Your endpoint will receive this update, when the order was received by KassaForte POS and the user chose to cancel the order.

The data will be send as application/x-www-form-urlencoded with the following parameters (regex shows possible values):

[ "report" => "cancel", "orderId" => <your order-id>, "reason" => <a string containing the reason for the cancellation> ]

Unfetched orders

Our webserver periodically searches for orders, that should have been transmitted to KassaForte POS, but didn't in time. There can be many reasons for this, but most likely it is a loss of communication between the POS and our webservers.

To mitigate the effects of this as much as possible, we can report unfetched order back to you, so you could act on this information if you find it nessessary.

An order is considered unfetched in two cases:

  1. It is a ASAP-order and was received more than 5 minutes ago
  2. It is an order with an desired delivery time, this time is within one hour from the time of the check and was recieved more than 5 minutes ago

Opening hours are also taken into account, to avoid false positives during downtimes.

The data will be send as application/x-www-form-urlencoded with the following parameters (regex shows possible values):

[ "report" => "unfetched", "orderIds" => [<your order-id>, <your order-id>,...], ]