### request=booking_update **request** PUSH start, pause, cancel and end bike rental is implemented via this update request. Prerequisite is the reservation via the initial "request=booking_request". The following booking states are implemented: `state=canceled` booking request will be canceled. The bike is set to `state=available` in the COPRI backend. `state=occupied` bike rental starts. `state=occupied` marks the start of the rental in copri. A multiple "occupied" will be acknowledged with an error, because a rental can only be started once. So that the rental start is recorded in any case in the backend, please set the `state=occupied` in the request before the smartlock will be unlocked. `state=available` end the bike rental, which makes the bike `state=available` again in the COPRI backend. The following lock states are implemented: `lock_state=unlocking` start unlocking signal, smartlock was triggered to unlock. `lock_state=unlocked` successfully unlocking the lock. `lock_state=locking` start locking signal, smartlock was triggered to close. `lock_state=locked` closed successfully. | key | Required | Format | Comment | | ------------ | ----------- | -------- | ------------------------------ | | authcookie | + | text | unique encrypted key | | bike | + | text | bike prefix+number | | state | + | text | one of the bike states: canceled, occupied, available | | lock_state | o/+ | text | one of the lock states: unlocking, unlocked, locking, locked | | station_state | o | text | station smartlock locking state | | latitude | + | text | App GPS only necessary on state=available | | longitude | + | text | App GPS only necessary on state=available | | gps_age | o/+ | text | App GPS age only necessary on state=available. value in milliseconds. | | gps_accuracy | o | text | App GPS accuracy on state=available in meters | | | firmware | o | text | Firmware Version | | Ilockit_GUID | o | text | example: 00000000-0000-0000-e57e6b9aee16 | **response** returns `bikes_occupied` JSON-Objects with booking states Example **request** starts bike rental and unlock smartlock at once. lock_state=unlocked can also be done on second request. ``` https://sharee-operator.example.tld/APIjsonserver?request=booking_update&bike=FR1540&state=occupied&lock_state=unlocked&authcookie=6103_7dc3c95028d06c9663378f6d44346de7_12345678 ``` **response** sharee JSON defaults + **response** rental states in `user_bikes_occupied` JSON-objects ``` { "shareejson" : { ***sharee JSON defaults*** }, "bikes_occupied" : { "155896" : { "start_time" : "2021-10-28 18:09:17.454818+02", "unit_price" : "2.00", "description" : "Vauban-bike (Ilockit)", "lock_state" : "unlocked", "request_time" : "2021-10-28 17:56:07.541766+02", "K_u" : "[-26, 6, -7, -80, 82, -71, -117, 57, 24, -91, 32, -44, 80, -112, 32, -66, -51, -106, 100, -99, 0, 0, 0, 0]", "K_seed" : "[122, -30, 85, -21, -47, 71, 54, 25, -60, -53, 78, 49, -74, 84, 72, 63]", "bike_group" : [ "FR300001" ], "uri_operator" : "https://shareeapp-fr01.copri-bike.de", "real_hours" : "0", "system" : "Ilockit", "computed_hours" : "0", "gps" : { "longitude" : "7.825490", "latitude" : "47.976634" }, "bike_type" : { "category" : "cargo", "engine" : { "manufacturer" : "dummy" }, "wheels" : "2" } }, "rental_description" : { "tarif_elements" : { "4" : [ "Max. Gebühr", "10,00 € / Tag" ], "6" : [ "Gratis Mietzeit", "20 Min / Tag" ], "1" : [ "Mietgebühr", "1,50 € / 30 Min " ], "7" : [ "Aktuelle Mietzeit", "7 Std 12 Min " ], "8" : [ "Aktuelle Mietkosten", "9,00 €" ] }, "id" : "5519", "name" : "Cargo-Bikes", "rental_info" : { "2" : [ "AGB", "Mit der Mietrad Anmietung wird der Betreiber AGB zugestimmt." ] } }, "state" : "occupied", "bike" : "FR1540", "total_price" : "0.00", "station" : "FR101", "Ilockit_GUID" : "00000000-0000-0000-0000-fc3c002a2add", "Ilockit_ID" : "ISHAREIT-2200540", "end_time" : "2021-10-28 18:09:19" } }, "155899" : { ... } } ```