Parking Device
Service to communicate with parking devices.
Endpoints
GET/device/v1/commands/{command_id}
Get command
GET
/device/v1/devices/{device_id}
Get parking device
POST
/device/v1/devices/{device_id}/commands
Send device command (lock/unlock/etc)
GET
/device/v1/locations/{location_id}/devices
Get parking devices
/device/v1/commands/{command_id}
Get command
Get command sent to parking device
Path Parameters
| Name | Type | Description |
|---|---|---|
command_id |
string | Target command ID required |
Responses
200 response
name
string
id
string
state
object
Command state indicates if the command was successful, is pending, or something went wrong.
reason
string
Reason for the command state, e.g. error details.
value
string
NOT_SENTSENTERRORRECEIVEDSUCCESS
timeout_at
string
Timestamp of state timeout. If null, state won’t timeout.
uri
string
device
object
id
string
uri
string
events
[object]
name
string
Prefix REQUEST events are server events, RESPONSE prefix nominates hardware responses to requests, STATE prefix means the device state has changed.
value
string
Some events have a value, like telemetry events
timestamp
string
{
"name": "string",
"id": "00000000-0000-0000-0000-000000000000",
"state": {
"reason": "string",
"value": "NOT_SENT",
"timeout_at": "2025-01-15T12:00:00Z"
},
"uri": "https://example.com/resource",
"device": {
"id": "00000000-0000-0000-0000-000000000000",
"uri": "https://example.com/resource"
},
"events": [
{
"name": "string",
"value": "string",
"timestamp": "2025-01-15T12:00:00Z"
}
]
}
400 response
error_message
string
Human-readable error message.
status_code
integer
HTTP status code.
correlation_id
string
Request correlation ID for tracing.
error_code
string
Machine-readable error code, e.g. ERRORS.NOT_FOUND
{
"error_message": "string",
"status_code": 0,
"correlation_id": "00000000-0000-0000-0000-000000000000",
"error_code": "string"
}
403 response
error_message
string
Human-readable error message.
status_code
integer
HTTP status code.
correlation_id
string
Request correlation ID for tracing.
error_code
string
Machine-readable error code, e.g. ERRORS.NOT_FOUND
{
"error_message": "string",
"status_code": 0,
"correlation_id": "00000000-0000-0000-0000-000000000000",
"error_code": "string"
}
404 response
error_message
string
Human-readable error message.
status_code
integer
HTTP status code.
correlation_id
string
Request correlation ID for tracing.
error_code
string
Machine-readable error code, e.g. ERRORS.NOT_FOUND
{
"error_message": "string",
"status_code": 0,
"correlation_id": "00000000-0000-0000-0000-000000000000",
"error_code": "string"
}
500 response
error_message
string
Human-readable error message.
status_code
integer
HTTP status code.
correlation_id
string
Request correlation ID for tracing.
error_code
string
Machine-readable error code, e.g. ERRORS.NOT_FOUND
{
"error_message": "string",
"status_code": 0,
"correlation_id": "00000000-0000-0000-0000-000000000000",
"error_code": "string"
}
Example Request
curl \
"https://services.bikeep.com/device/v1/commands/{COMMAND_ID}" \
-H "Authorization: Bearer {ACCESS_TOKEN}"
/device/v1/devices/{device_id}
Get parking device
Get target parking device
Path Parameters
| Name | Type | Description |
|---|---|---|
device_id |
string | Target parking device id required |
Responses
200 response
wifi_rssi
number
deprecated
Deprecated: always returns null. Will be removed in a future version.
code
string
nr
string
deprecated
Deprecated: use alias instead
heartbeat
string
deprecated
Deprecated: simulated value, not real heartbeat data. Use heartbeat_v2.health and heartbeat_v2.dead_since instead.
sleep_state
string
LIGHT_SLEEPDEEP_SLEEP
Device sleep mode state. Empty string means the device is awake.
type
string
GUARD
BIKE_DOCK
SCOOTER_DOCK
LOCKER
BIKE_HOUSE_DOOR
BIKE_RENT
SCOOTER_RENT
DOCK
DOCK_SESSIONLESS
DOOR
has_otp_support
boolean
Whether the device supports TOTP-based access.
price_list
object
id
string
uri
string
heartbeat_latency
number
deprecated
Deprecated: always null. Will be removed in a future version.
alias
string
id
string
state
object
changed_at
string
Timestamp of latest state change.
value
string
ALLOCATED
LOCKED
LOCKING
UNLOCKED
UNLOCKING
BOOKED
timeout_at
string
Timestamp of state timeout. If null, state won’t timeout.
heartbeat_v2
object
Device health information. Only ‘health’ and ‘dead_since’ fields contain real data. Null if no health data is available.
sent_at
string
deprecated
Deprecated: simulated value, not a real heartbeat timestamp. Will be removed in a future version.
latency_millis
number
deprecated
Deprecated: always 0. Will be removed in a future version.
health
string
HEALTHYUNHEALTHYDEADLONG_DEAD
Device health status.
dead_since
string
Timestamp since the device has been dead. Null if the device is not dead.
commands
object
Map of commands available for this device. Keys are command names, values are command URIs. Send commands via POST /devices/{device_id}/commands with the command name in the request body.
command_name
string
field value == command url
has_access_lists
boolean
Whether the device has access lists configured.
has_subscription
boolean
Whether the device has an active subscription.
settings
object
Device settings, requires additional permissions
updated_at
string
Timestamp when the device settings were last updated.
created_at
string
Timestamp when the device settings were created.
deep_link
string
Deep link for the device.
lock_state
string
LOCKEDUNLOCKED
Physical lock state of the device.
heartbeat_health
string
deprecated
HEALTHYUNHEALTHYDEAD
Deprecated: does not distinguish LONG_DEAD from DEAD. Use heartbeat_v2.health instead.
uri
string
power_save_strategy
string
NONEREMOTE_WAKEUPLOCAL_WAKEUP
Device power management mode. NONE means always powered on, REMOTE_WAKEUP can be woken remotely, LOCAL_WAKEUP can be woken locally.
tags
[string]
comment
string
location
object
Location reference where the device is installed.
id
string
uri
string
user
object
Current user occupying the device, requires additional permissions
access_key
string
id
string
has_allowlist
boolean
Whether the device has allowlists configured.
hardware_id
string
Device hardware identifier
hardware_state
string
NORMAL
DISABLED
DISABLED_LOCKING
DISABLED_UNLOCKING
ERROR
NOT_RESPONDING
has_camera
boolean
Whether the device has a camera.
{
"wifi_rssi": 0,
"code": "string",
"nr": "string",
"heartbeat": "string",
"sleep_state": "",
"type": "GUARD",
"has_otp_support": true,
"price_list": {
"id": "00000000-0000-0000-0000-000000000000",
"uri": "https://example.com/resource"
},
"heartbeat_latency": 0,
"alias": "string",
"id": "00000000-0000-0000-0000-000000000000",
"state": {
"changed_at": "2025-01-15T12:00:00Z",
"value": "ALLOCATED",
"timeout_at": "2025-01-15T12:00:00Z"
},
"heartbeat_v2": {
"sent_at": "2025-01-15T12:00:00Z",
"latency_millis": 0,
"health": "HEALTHY",
"dead_since": "2025-01-15T12:00:00Z"
},
"commands": {
"command_name": "string"
},
"has_access_lists": true,
"has_subscription": true,
"settings": {
"updated_at": "2025-01-15T12:00:00Z",
"created_at": "2025-01-15T12:00:00Z",
"deep_link": "string"
},
"lock_state": "LOCKED",
"heartbeat_health": "HEALTHY",
"uri": "https://example.com/resource",
"power_save_strategy": "NONE",
"tags": [
"string"
],
"comment": "string",
"location": {
"id": "00000000-0000-0000-0000-000000000000",
"uri": "https://example.com/resource"
},
"user": {
"access_key": "string",
"id": "00000000-0000-0000-0000-000000000000"
},
"has_allowlist": true,
"hardware_id": "00000000-0000-0000-0000-000000000000",
"hardware_state": "NORMAL",
"has_camera": true
}
403 response
error_message
string
Human-readable error message.
status_code
integer
HTTP status code.
correlation_id
string
Request correlation ID for tracing.
error_code
string
Machine-readable error code, e.g. ERRORS.NOT_FOUND
{
"error_message": "string",
"status_code": 0,
"correlation_id": "00000000-0000-0000-0000-000000000000",
"error_code": "string"
}
404 response
error_message
string
Human-readable error message.
status_code
integer
HTTP status code.
correlation_id
string
Request correlation ID for tracing.
error_code
string
Machine-readable error code, e.g. ERRORS.NOT_FOUND
{
"error_message": "string",
"status_code": 0,
"correlation_id": "00000000-0000-0000-0000-000000000000",
"error_code": "string"
}
500 response
error_message
string
Human-readable error message.
status_code
integer
HTTP status code.
correlation_id
string
Request correlation ID for tracing.
error_code
string
Machine-readable error code, e.g. ERRORS.NOT_FOUND
{
"error_message": "string",
"status_code": 0,
"correlation_id": "00000000-0000-0000-0000-000000000000",
"error_code": "string"
}
Example Request
curl \
"https://services.bikeep.com/device/v1/devices/{DEVICE_ID}" \
-H "Authorization: Bearer {ACCESS_TOKEN}"
/device/v1/devices/{device_id}/commands
Send device command (lock/unlock/etc)
Send a command to the target device. Supported commands: lock, unlock, book, cancel-booking, force-lock, force-unlock, force-cancel-booking, sync-device, take-photo. Poll the returned command to monitor its progress.
Path Parameters
| Name | Type | Description |
|---|---|---|
device_id |
string | Target device ID required |
Request Body required
reason
string
STUCK_USER_RFID_ISSUE
STUCK_USER_APP_ISSUE
STUCK_USER_USER_ERROR
STUCK_USER_OTHER_ISSUE
LOCKED_EMPTY
MAINTENANCE
TESTING
RENTAL_VEHICLE_LOCKED
FALSE_LOCK
OTHER
Required for ‘force-unlock’ only. Must be at least 5 characters.
user_id
string
Only used by ‘lock’. Overrides the requesting user as the target user for the lock operation. If omitted, the requesting user is used. When different from the requesting user, requires ACT_ON_BEHALF_OF permission on the target user.
power_cycle
boolean
Only used by ‘sync-device’. Whether to power cycle the device during sync. Defaults to false.
comment
string
Only used with ‘force-unlock’ when reason is STUCK_USER_OTHER_ISSUE or OTHER. Must be at least 5 characters.
timeout_at
string
Booking expiration timestamp in RFC3339 format. Only used by the ‘book’ command. If omitted, defaults to 1 hour from now. Must be in the future; returns ERRORS.INVALID_TIMEOUT_AT if not.
command
string
lock
book
force-lock
force-cancel-booking
unlock
cancel-booking
force-unlock
sync-device
take-photo
lock: lock a device for the user | unlock: unlock a locked device | book: reserve a device with an optional timeout | cancel-booking: cancel the user’s active booking | force-lock: admin lock regardless of current state | force-unlock: admin unlock (requires reason) | force-cancel-booking: admin cancel any booking | sync-device: synchronize device state | take-photo: capture a device snapshot.
{
"reason": "STUCK_USER_RFID_ISSUE",
"user_id": "00000000-0000-0000-0000-000000000000",
"power_cycle": true,
"comment": "string",
"timeout_at": "2025-01-15T12:00:00Z",
"command": "lock"
}
Responses
200 response
name
string
id
string
state
object
Command state indicates if the command was successful, is pending, or something went wrong.
reason
string
Reason for the command state, e.g. error details.
value
string
NOT_SENTSENTERRORRECEIVEDSUCCESS
timeout_at
string
Timestamp of state timeout. If null, state won’t timeout.
uri
string
device
object
id
string
uri
string
events
[object]
name
string
Prefix REQUEST events are server events, RESPONSE prefix nominates hardware responses to requests, STATE prefix means the device state has changed.
value
string
Some events have a value, like telemetry events
timestamp
string
{
"name": "string",
"id": "00000000-0000-0000-0000-000000000000",
"state": {
"reason": "string",
"value": "NOT_SENT",
"timeout_at": "2025-01-15T12:00:00Z"
},
"uri": "https://example.com/resource",
"device": {
"id": "00000000-0000-0000-0000-000000000000",
"uri": "https://example.com/resource"
},
"events": [
{
"name": "string",
"value": "string",
"timestamp": "2025-01-15T12:00:00Z"
}
]
}
400 response
error_message
string
Human-readable error message.
status_code
integer
HTTP status code.
correlation_id
string
Request correlation ID for tracing.
error_code
string
Machine-readable error code, e.g. ERRORS.NOT_FOUND
{
"error_message": "string",
"status_code": 0,
"correlation_id": "00000000-0000-0000-0000-000000000000",
"error_code": "string"
}
403 response
error_message
string
Human-readable error message.
status_code
integer
HTTP status code.
correlation_id
string
Request correlation ID for tracing.
error_code
string
Machine-readable error code, e.g. ERRORS.NOT_FOUND
{
"error_message": "string",
"status_code": 0,
"correlation_id": "00000000-0000-0000-0000-000000000000",
"error_code": "string"
}
404 response
error_message
string
Human-readable error message.
status_code
integer
HTTP status code.
correlation_id
string
Request correlation ID for tracing.
error_code
string
Machine-readable error code, e.g. ERRORS.NOT_FOUND
{
"error_message": "string",
"status_code": 0,
"correlation_id": "00000000-0000-0000-0000-000000000000",
"error_code": "string"
}
500 response
error_message
string
Human-readable error message.
status_code
integer
HTTP status code.
correlation_id
string
Request correlation ID for tracing.
error_code
string
Machine-readable error code, e.g. ERRORS.NOT_FOUND
{
"error_message": "string",
"status_code": 0,
"correlation_id": "00000000-0000-0000-0000-000000000000",
"error_code": "string"
}
Example Request
curl \
-X POST \
"https://services.bikeep.com/device/v1/devices/{DEVICE_ID}/commands" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"reason": "STUCK_USER_RFID_ISSUE",
"user_id": "00000000-0000-0000-0000-000000000000",
"power_cycle": true,
"comment": "string",
"timeout_at": "2025-01-15T12:00:00Z",
"command": "lock"
}'
/device/v1/locations/{location_id}/devices
Get parking devices
Get parking devices in the target location
Path Parameters
| Name | Type | Description |
|---|---|---|
location_id |
string | Target location ID required |
Responses
200 response
data
[object]
wifi_rssi
number
deprecated
Deprecated: always returns null. Will be removed in a future version.
code
string
nr
string
deprecated
Deprecated: use alias instead
heartbeat
string
deprecated
Deprecated: simulated value, not real heartbeat data. Use heartbeat_v2.health and heartbeat_v2.dead_since instead.
sleep_state
string
LIGHT_SLEEPDEEP_SLEEP
Device sleep mode state. Empty string means the device is awake.
type
string
GUARD
BIKE_DOCK
SCOOTER_DOCK
LOCKER
BIKE_HOUSE_DOOR
BIKE_RENT
SCOOTER_RENT
DOCK
DOCK_SESSIONLESS
DOOR
has_otp_support
boolean
Whether the device supports TOTP-based access.
price_list
object
id
string
uri
string
heartbeat_latency
number
deprecated
Deprecated: always null. Will be removed in a future version.
alias
string
id
string
state
object
changed_at
string
Timestamp of latest state change.
value
string
ALLOCATED
LOCKED
LOCKING
UNLOCKED
UNLOCKING
BOOKED
timeout_at
string
Timestamp of state timeout. If null, state won’t timeout.
heartbeat_v2
object
Device health information. Only ‘health’ and ‘dead_since’ fields contain real data. Null if no health data is available.
sent_at
string
deprecated
Deprecated: simulated value, not a real heartbeat timestamp. Will be removed in a future version.
latency_millis
number
deprecated
Deprecated: always 0. Will be removed in a future version.
health
string
HEALTHYUNHEALTHYDEADLONG_DEAD
Device health status.
dead_since
string
Timestamp since the device has been dead. Null if the device is not dead.
commands
object
Map of commands available for this device. Keys are command names, values are command URIs. Send commands via POST /devices/{device_id}/commands with the command name in the request body.
command_name
string
field value == command url
has_access_lists
boolean
Whether the device has access lists configured.
has_subscription
boolean
Whether the device has an active subscription.
settings
object
Device settings, requires additional permissions
updated_at
string
Timestamp when the device settings were last updated.
created_at
string
Timestamp when the device settings were created.
deep_link
string
Deep link for the device.
lock_state
string
LOCKEDUNLOCKED
Physical lock state of the device.
heartbeat_health
string
deprecated
HEALTHYUNHEALTHYDEAD
Deprecated: does not distinguish LONG_DEAD from DEAD. Use heartbeat_v2.health instead.
uri
string
power_save_strategy
string
NONEREMOTE_WAKEUPLOCAL_WAKEUP
Device power management mode. NONE means always powered on, REMOTE_WAKEUP can be woken remotely, LOCAL_WAKEUP can be woken locally.
tags
[string]
comment
string
location
object
Location reference where the device is installed.
id
string
uri
string
user
object
Current user occupying the device, requires additional permissions
access_key
string
id
string
has_allowlist
boolean
Whether the device has allowlists configured.
hardware_id
string
Device hardware identifier
hardware_state
string
NORMAL
DISABLED
DISABLED_LOCKING
DISABLED_UNLOCKING
ERROR
NOT_RESPONDING
has_camera
boolean
Whether the device has a camera.
uri
string
{
"data": [
{
"wifi_rssi": 0,
"code": "string",
"nr": "string",
"heartbeat": "string",
"sleep_state": "",
"type": "GUARD",
"has_otp_support": true,
"price_list": {
"id": "00000000-0000-0000-0000-000000000000",
"uri": "https://example.com/resource"
},
"heartbeat_latency": 0,
"alias": "string",
"id": "00000000-0000-0000-0000-000000000000",
"state": {
"changed_at": "2025-01-15T12:00:00Z",
"value": "ALLOCATED",
"timeout_at": "2025-01-15T12:00:00Z"
},
"heartbeat_v2": {
"sent_at": "2025-01-15T12:00:00Z",
"latency_millis": 0,
"health": "HEALTHY",
"dead_since": "2025-01-15T12:00:00Z"
},
"commands": {
"command_name": "string"
},
"has_access_lists": true,
"has_subscription": true,
"settings": {
"updated_at": "2025-01-15T12:00:00Z",
"created_at": "2025-01-15T12:00:00Z",
"deep_link": "string"
},
"lock_state": "LOCKED",
"heartbeat_health": "HEALTHY",
"uri": "https://example.com/resource",
"power_save_strategy": "NONE",
"tags": [
"string"
],
"comment": "string",
"location": {
"id": "00000000-0000-0000-0000-000000000000",
"uri": "https://example.com/resource"
},
"user": {
"access_key": "string",
"id": "00000000-0000-0000-0000-000000000000"
},
"has_allowlist": true,
"hardware_id": "00000000-0000-0000-0000-000000000000",
"hardware_state": "NORMAL",
"has_camera": true
}
],
"uri": "https://example.com/resource"
}
403 response
error_message
string
Human-readable error message.
status_code
integer
HTTP status code.
correlation_id
string
Request correlation ID for tracing.
error_code
string
Machine-readable error code, e.g. ERRORS.NOT_FOUND
{
"error_message": "string",
"status_code": 0,
"correlation_id": "00000000-0000-0000-0000-000000000000",
"error_code": "string"
}
500 response
error_message
string
Human-readable error message.
status_code
integer
HTTP status code.
correlation_id
string
Request correlation ID for tracing.
error_code
string
Machine-readable error code, e.g. ERRORS.NOT_FOUND
{
"error_message": "string",
"status_code": 0,
"correlation_id": "00000000-0000-0000-0000-000000000000",
"error_code": "string"
}
Example Request
curl \
"https://services.bikeep.com/device/v1/locations/{LOCATION_ID}/devices" \
-H "Authorization: Bearer {ACCESS_TOKEN}"