API
Units
Retrieve units data for specified or all accessible stations with optional filters
AuthorizationBearer <token>
In: header
Query Parameters
station_ids?string
Comma-separated list of station IDs
to?string
Default
"2025-06-27T23:46:42.268Z"
Format
date-time
from?string
Default
"2025-06-26T23:46:42.268Z"
Format
date-time
type?array<string> & string
The unit types to filter by. Can be repeated (?type=sensor&type=actuator) or comma-separated (?type=sensor,actuator)
Default
[]
serial_number?string
The serial number of the unit to filter by
direction?array<string> & string
The directions to filter by. Can be repeated (?direction=input&direction=output) or comma-separated (?direction=input,output)
Default
["output"]
Response Body
curl -X GET "http://localhost:3000/units?station_ids=507f1f77bcf86cd799439011%2C507f1f77bcf86cd799439012&to=2025-06-27T23%3A46%3A42.268Z&from=2025-06-26T23%3A46%3A42.268Z&type=sensor&type=actuator&serial_number=string&direction=input&direction=output"
fetch("http://localhost:3000/units?station_ids=507f1f77bcf86cd799439011%2C507f1f77bcf86cd799439012&to=2025-06-27T23%3A46%3A42.268Z&from=2025-06-26T23%3A46%3A42.268Z&type=sensor&type=actuator&serial_number=string&direction=input&direction=output")
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "http://localhost:3000/units?station_ids=507f1f77bcf86cd799439011%2C507f1f77bcf86cd799439012&to=2025-06-27T23%3A46%3A42.268Z&from=2025-06-26T23%3A46%3A42.268Z&type=sensor&type=actuator&serial_number=string&direction=input&direction=output"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
import requests
url = "http://localhost:3000/units?station_ids=507f1f77bcf86cd799439011%2C507f1f77bcf86cd799439012&to=2025-06-27T23%3A46%3A42.268Z&from=2025-06-26T23%3A46%3A42.268Z&type=sensor&type=actuator&serial_number=string&direction=input&direction=output"
response = requests.request("GET", url)
print(response.text)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;
import java.time.Duration;
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("http://localhost:3000/units?station_ids=507f1f77bcf86cd799439011%2C507f1f77bcf86cd799439012&to=2025-06-27T23%3A46%3A42.268Z&from=2025-06-26T23%3A46%3A42.268Z&type=sensor&type=actuator&serial_number=string&direction=input&direction=output"))
.GET()
.build();
try {
HttpResponse<String> response = client.send(requestBuilder.build(), BodyHandlers.ofString());
System.out.println("Status code: " + response.statusCode());
System.out.println("Response body: " + response.body());
} catch (Exception e) {
e.printStackTrace();
}
using System;
using System.Net.Http;
using System.Text;
var client = new HttpClient();
var response = await client.GetAsync("http://localhost:3000/units?station_ids=507f1f77bcf86cd799439011%2C507f1f77bcf86cd799439012&to=2025-06-27T23%3A46%3A42.268Z&from=2025-06-26T23%3A46%3A42.268Z&type=sensor&type=actuator&serial_number=string&direction=input&direction=output");
var responseBody = await response.Content.ReadAsStringAsync();
{
"data": [
{
"station_id": "string",
"slot": "string",
"unit_serial": "string",
"time_created": "string",
"tz": "string",
"mode": "string",
"tags": [
"string"
],
"unit_type": "string",
"direction": "input",
"result": "string",
"metadata": null
}
],
"message": "Success",
"meta": {
"timestamp": "2019-08-24T14:15:22Z",
"request_id": "c2ed3e07-8c5f-4be9-b7ec-86bddcedd154",
"query_duration_ms": 0
}
}
{
"error": {
"code": "string",
"message": "string",
"details": null
}
}
{
"error": {
"code": "string",
"message": "string",
"details": null
}
}
{
"error": {
"code": "string",
"message": "string",
"details": null
}
}
{
"error": {
"code": "string",
"message": "string",
"details": null
}
}