Objects
Create or Update an Object
Creates a new object or updates an existing one.
If you are using IDs with slashes, (e.g. scooter/14
) as part of Hivekit's ID pattern functionality, make sure to URL encode them before passing them to the API via the URL.
Request Body
{
"label": "Scooter #14", // optional
"location": {
"longitude": 12.345, // required longitude in degree
"latitude": 12.345, // required latitude in degree
"altitude": 230, // optional altitude in meters above NN
"speed": 5, // optional speed in m/s
"heading": 90, // optional heading in degree
"accuracy": 6, // optional location accuracy in meters
"altitudeAccuracy": 7, // optional altitude accuracy in meters
"time": "2021-01-01T12:00:00Z" // optional time of location, expressed as RFC3339Nano
}
"data": { // optional
"charge": 0.7,
}
}
Response Body
{
"result": "success"
}
Create or Update Objects in Bulk
Creates or updates multiple objects at once. You can also use this endpoint to upload the location history for a single object.
If you are using IDs with slashes, (e.g. scooter/14
) as part of Hivekit's ID pattern functionality, make sure to URL encode them before passing them to the API via the URL.
Request Body
{"objects": [{
"id": "scooter/14", // required
"label": "Scooter #14", // optional
"location": {
"longitude": 12.345, // required longitude in degree
"latitude": 12.345, // required latitude in degree
"altitude": 230, // optional altitude in meters above NN
"speed": 5, // optional speed in m/s
"heading": 90, // optional heading in degree
"accuracy": 6, // optional location accuracy in meters
"altitudeAccuracy": 7, // optional altitude accuracy in meters
"time": "2021-01-01T12:00:00Z" // optional time of location, expressed as RFC3339Nano
},
"data": { // optional
"charge": 0.7,
}
},{
"id": "scooter/15", // required
// you can also include partial updates. In this case, only the specified fields will be updated
"location": {
"longitude": 12.345, // longitude in degree
"latitude": 12.345, // latitude in degree
},
}]}
Response Body
{
"result": "success"
}
Read an Object
Response Body
{
"id": "scooter/14",
"label": "Scooter #14",
"location": {
"longitude": 12.345,
"latitude": 12.345,
"altitude": 230,
"speed": 5,
"heading": 90,
"accuracy": 6,
"altitudeAccuracy": 7,
"time": "2021-01-01T12:00:00Z"
},
"data": {
"charge": 0.7
}
}
List Objects
Lists the objects within a given realm. The list can be filtered based on multiple criteria using the filter
parameter and restricted to certain bounds using shape
. You can also include additional fields from the object's data in the response using the fields
parameter.
If you are looking for a way to fulltext-search for objects instead, have a look at the realm/search endpoint.
Query parameters
fields
(optional): A comma-separated list of fields to include in the response. If not specified, only the object's ID and label will be returned.filter
(optional): A filter expression to restrict the list of returned objects. The expression can contain any number of conditions, each of which is a field name, followed by a comparison operator, followed by a value. The comparison operators are=
,!=
,>
,<
. The value can be a string, number, boolean, or null. The conditions are combined using the logical operatorand
. The filter expression is case-sensitive.shape
(optional): A bounding shape to restrict the list of returned objects. The shape can be a circle, rectangle, or polygon. The shape is specified as a JSON object with the following fields:- Circle:
{"cx":<longitude>,"cy":<latitude>,"r":<radius in meter>}
- Rectangle:
{"w":<longitude>,"n":<latitude>,"e":<longitude>,"s":<latitude>}
- Polygon:
{"points":[[<longitude>,<latitude>],...]}
- Circle:
Response Body
{
"scooter/14": {
"id": "scooter/14",
"label": "Scooter 14",
"data": {
"charge": 0.2
},
"connectionStatus": "dis"
},
"scooter/17": {
"id": "scooter/17",
"label": "Scooter 17",
"data": {
"charge": 0.7
},
"connectionStatus": "dis"
}
}
Examples
- List all objects in a realm:
GET https://api.hivekit.io/v2/realm/123/object
- List all objects in a realm and include their charge level and riderId:
GET https://api.hivekit.io/v2/realm/123/object?fields=charge,riderId
- List all objects in a realm with a charge level above 50% that currently have a rider:
GET https://api.hivekit.io/v2/realm/123/object?filter=charge>0.5,riderId!=null
- List all objects in a realm that are within a 10km radius of a given point:
GET https://api.hivekit.io/v2/realm/123/object?shape={"cx":56.78,"cy":14.109,"r":10000}
- List all objects in a realm that are within a given polygon:
GET https://api.hivekit.io/v2/realm/123/object?shape={"points":[[56.78,14.109],[56.78,14.119],[56.88,14.119],[56.88,14.109]]}
- List all objects in a realm that are within a given rectangle:
GET https://api.hivekit.io/v2/realm/123/object?shape={"w":56.78,"n":14.109,"e":56.88,"s":14.119}
Delete an Object
Response Body
{
"result": "success"
}