Schema Reference
Data Types
All Parquet files use these Apache Arrow/Parquet data types:
| Type | Description |
|---|---|
string | UTF-8 encoded text |
bool | Boolean (true / false) |
int64 | 64-bit signed integer |
decimal128(38, 20) | 128-bit decimal, precision 38, scale 20 (default for numeric columns) |
decimal256 | 256-bit decimal (used when inferred precision exceeds 38) |
timestamp[us, tz=UTC] | Microsecond-precision UTC timestamp |
Entity Schemas
Organization
Organization metadata.
| Column | Type | Nullable | Description |
|---|---|---|---|
id | string | ✗ | Unique identifier (UUID) |
name | string | ✗ | Organization name |
externalId | string | ✓ | External system identifier |
createdAt | timestamp | ✗ | Creation timestamp |
updatedAt | timestamp | ✓ | Last update timestamp |
Device
IoT device inventory and properties.
| Column | Type | Nullable | Description |
|---|---|---|---|
id | string | ✗ | Unique identifier (UUID) |
name | string | ✗ | Device name |
modelType | string | ✗ | Device model (e.g., com.haltian.device.tsar02) |
externalId | string | ✓ | External system identifier |
tuid | string | ✓ | Thingsee Unique Identifier |
orderId | string | ✓ | Purchase order identifier |
giai | string | ✓ | Global Individual Asset Identifier |
manufacturingDate | timestamp | ✓ | Manufacturing date |
shippingDate | timestamp | ✓ | Shipping date |
warrantyDate | timestamp | ✓ | Warranty expiration |
createdAt | timestamp | ✗ | Creation timestamp |
updatedAt | timestamp | ✓ | Last update timestamp |
lastSeen | timestamp | ✓ | Last communication time |
wirepasNodeId | int64 | ✓ | Wirepas mesh node ID |
wirepasNetworkId | int64 | ✓ | Wirepas mesh network ID |
imei | string | ✓ | IMEI (cellular devices) |
iccid | string | ✓ | SIM card ICCID |
bleMac | string | ✓ | Primary Bluetooth MAC |
bleMac2 | string | ✓ | Secondary Bluetooth MAC |
lanMac | string | ✓ | LAN MAC address |
wifiMac | string | ✓ | WiFi MAC address |
customerLabelId | string | ✓ | Customer-assigned label |
vendorSerial | string | ✓ | Vendor serial number |
spaceId | string | ✓ | Space where device is installed |
fixedPositionGlobal | string | ✓ | GeoJSON Point of fixed installation position |
wirepasStackVersion | string | ✓ | Wirepas stack version running on the device |
Device Group
Logical groupings of devices.
| Column | Type | Nullable | Description |
|---|---|---|---|
id | string | ✗ | Unique identifier (UUID) |
modelType | string | ✗ | Group model (e.g., com.haltian.device-group) |
externalId | string | ✓ | External system identifier |
manufacturingDate | timestamp | ✓ | Manufacturing date |
shippingDate | timestamp | ✓ | Shipping date |
warrantyDate | timestamp | ✓ | Warranty expiration |
name | string | ✗ | Device group name |
spaceId | string | ✓ | Space where the group is installed |
fixedPositionGlobal | string | ✓ | GeoJSON Point of fixed installation position |
createdAt | timestamp | ✗ | Creation timestamp |
updatedAt | timestamp | ✓ | Last update timestamp |
lastSeen | timestamp | ✓ | Last communication time |
lastOccupancyResetAt | timestamp | ✓ | Last time the group’s occupancy counter was reset |
Device groups also appear in the device table. They exist in both device.parquet and deviceGroup.parquet.
Device Group Devices
Junction table linking devices to device groups.
| Column | Type | Nullable | Description |
|---|---|---|---|
deviceGroupId | string | ✗ | Reference to device group |
deviceId | string | ✗ | Reference to device |
Device Keyword
Tags and labels assigned to devices.
| Column | Type | Nullable | Description |
|---|---|---|---|
deviceId | string | ✗ | Reference to device |
keyword | string | ✗ | Keyword/tag value |
createdAt | timestamp | ✗ | Creation timestamp |
updatedAt | timestamp | ✓ | Last update timestamp |
Device Note
Freeform notes attached to devices.
| Column | Type | Nullable | Description |
|---|---|---|---|
deviceId | string | ✗ | Reference to device |
note | string | ✗ | Note text |
createdAt | timestamp | ✗ | Creation timestamp |
updatedAt | timestamp | ✓ | Last update timestamp |
Space Keyword
Tags and labels assigned to spaces.
| Column | Type | Nullable | Description |
|---|---|---|---|
spaceId | string | ✗ | Reference to space |
keyword | string | ✗ | Keyword/tag value |
createdAt | timestamp | ✗ | Creation timestamp |
updatedAt | timestamp | ✓ | Last update timestamp |
Zone Keyword
Tags and labels assigned to zones.
| Column | Type | Nullable | Description |
|---|---|---|---|
zoneId | string | ✗ | Reference to zone |
keyword | string | ✗ | Keyword/tag value |
createdAt | timestamp | ✗ | Creation timestamp |
updatedAt | timestamp | ✓ | Last update timestamp |
Space
Spatial hierarchy: locations, buildings, floors.
| Column | Type | Nullable | Description |
|---|---|---|---|
id | string | ✗ | Unique identifier (UUID) |
name | string | ✓ | Space name |
parentId | string | ✓ | Parent space (hierarchical) |
type | string | ✗ | Type: location, building, floor |
positionGlobal | string | ✓ | GeoJSON Point coordinates |
northVector | decimal128(38, 20) | ✓ | North direction angle (degrees) |
createdAt | timestamp | ✗ | Creation timestamp |
updatedAt | timestamp | ✓ | Last update timestamp |
A null parentId indicates a root-level space with no parent.
Zone
Defined areas within spaces.
| Column | Type | Nullable | Description |
|---|---|---|---|
id | string | ✗ | Unique identifier (UUID) |
spaceId | string | ✗ | Parent space reference |
name | string | ✗ | Zone name |
type | string | ✗ | Zone type |
polygonGlobal | string | ✗ | GeoJSON polygon boundaries |
createdAt | timestamp | ✗ | Creation timestamp |
updatedAt | timestamp | ✓ | Last update timestamp |
Measurement Schemas
All measurement tables share common columns plus measurement-specific values.
Common Columns
Every measurement table includes:
| Column | Type | Nullable | Description |
|---|---|---|---|
deviceId | string | ✗ | Device that reported the measurement |
measuredAt | timestamp | ✗ | Measurement timestamp |
measurementAmbientLight
Ambient light level readings.
| Column | Type | Nullable | Description |
|---|---|---|---|
ambientLight | decimal128(38, 20) | ✗ | Ambient light level |
measurementBarometricPressure
Barometric (atmospheric) pressure readings.
| Column | Type | Nullable | Description |
|---|---|---|---|
barometricPressure | decimal128(38, 20) | ✗ | Barometric pressure |
measurementBatteryCurrent
Battery current draw.
| Column | Type | Nullable | Description |
|---|---|---|---|
batteryCurrent | decimal128(38, 20) | ✗ | Battery current |
measurementDeviceOrientation
Accelerometer-based device orientation.
| Column | Type | Nullable | Description |
|---|---|---|---|
accx | decimal128(38, 20) | ✗ | Accelerometer X axis |
accy | decimal128(38, 20) | ✗ | Accelerometer Y axis |
accz | decimal128(38, 20) | ✗ | Accelerometer Z axis |
measurementDeviceRole
Device role assignment (e.g. gateway vs. tag).
| Column | Type | Nullable | Description |
|---|---|---|---|
deviceRole | string | ✓ | Assigned device role |
measurementDiagnosticsInterval
Configured diagnostics-reporting interval.
| Column | Type | Nullable | Description |
|---|---|---|---|
diagnosticsInterval | int64 | ✓ | Reporting interval |
measurementEcho
Ultrasonic echo / distance measurement.
| Column | Type | Nullable | Description |
|---|---|---|---|
echo | decimal128(38, 20) | ✗ | Echo/distance reading |
measurementElectricalResistance
Electrical resistance readings.
| Column | Type | Nullable | Description |
|---|---|---|---|
electricalResistance | decimal128(38, 20) | ✗ | Electrical resistance |
measurementHarvesterStorageVoltage
Energy-harvesting device’s storage voltage.
| Column | Type | Nullable | Description |
|---|---|---|---|
harvesterStorageVoltage | decimal128(38, 20) | ✗ | Storage voltage |
measurementHumidity
Relative humidity readings.
| Column | Type | Nullable | Description |
|---|---|---|---|
humidity | decimal128(38, 20) | ✗ | Relative humidity (%) |
measurementAmbientTemperature
Ambient temperature readings.
| Column | Type | Nullable | Description |
|---|---|---|---|
ambientTemperature | decimal128(38, 20) | ✗ | Temperature in degrees Celsius |
measurementBatteryPercentage
Battery charge level.
| Column | Type | Nullable | Description |
|---|---|---|---|
batteryPercentage | decimal128(38, 20) | ✗ | Battery level (0–100%) |
measurementBatteryVoltage
Battery voltage readings.
| Column | Type | Nullable | Description |
|---|---|---|---|
batteryVoltage | decimal128(38, 20) | ✗ | Voltage in volts |
measurementBootCount
Device restart events.
| Column | Type | Nullable | Description |
|---|---|---|---|
bootCount | int64 | ✗ | Cumulative boot count |
bootReason | string | ✓ | Reason for restart |
measurementCO2
Carbon dioxide concentration.
| Column | Type | Nullable | Description |
|---|---|---|---|
co2 | decimal128(38, 20) | ✗ | CO₂ level in ppm |
measurementDirectionalMovement
Entry and exit counts (e.g., doorway sensors).
| Column | Type | Nullable | Description |
|---|---|---|---|
entries | int64 | ✗ | Number of entries |
exits | int64 | ✗ | Number of exits |
measurementDistance
Distance measurements.
| Column | Type | Nullable | Description |
|---|---|---|---|
distance | decimal128(38, 20) | ✗ | Distance (typically mm) |
measurementOccupancySeconds
Duration of occupancy within measurement period.
| Column | Type | Nullable | Description |
|---|---|---|---|
occupancySeconds | decimal128(38, 20) | ✗ | Occupancy duration in seconds |
measurementOccupancyStatus
Binary occupancy state.
| Column | Type | Nullable | Description |
|---|---|---|---|
isOccupied | bool | ✗ | false = unoccupied, true = occupied |
measurementMagneticState
Magnetic (door/window) open/closed state.
| Column | Type | Nullable | Description |
|---|---|---|---|
isOpen | bool | ✗ | false = closed, true = open |
measurementMagneticStateChanges
Cumulative magnetic-state (door/window) transition count.
| Column | Type | Nullable | Description |
|---|---|---|---|
magneticStateChanges | int64 | ✗ | Cumulative state-change count |
measurementMovementDetections
Cumulative movement-detection count.
| Column | Type | Nullable | Description |
|---|---|---|---|
movementDetections | int64 | ✗ | Cumulative detection count |
measurementOccupantsCount
Number of people detected.
| Column | Type | Nullable | Description |
|---|---|---|---|
occupantsCount | int64 | ✗ | Number of occupants |
measurementPosition
Device location tracking.
| Column | Type | Nullable | Description |
|---|---|---|---|
isStatic | bool | ✗ | false = moving, true = stationary |
spaceId | string | ✗ | Space where device is located |
positionGlobal | string | ✗ | GeoJSON Point coordinates |
measurementPositionZone
Zone-relative device position.
| Column | Type | Nullable | Description |
|---|---|---|---|
zoneId | string | ✗ | Zone where device is located |
measurementRss
Received signal strength between devices.
| Column | Type | Nullable | Description |
|---|---|---|---|
sourceDeviceId | string | ✗ | Device the signal was received from |
rss | decimal128(38, 20) | ✗ | Received signal strength |
isStatic | bool | ✗ | false = moving, true = stationary |
moveCount | int64 | ✓ | Movement count since last reading |
mode | string | ✓ | Device mode at time of reading (normal, inventory, low_power_inventory, low_power_inventory_acm_disabled) |
sourceDeviceId and mode are named to match the GraphQL API’s field naming for this measurement type.
measurementSolarPanelVoltage
Solar panel output voltage.
| Column | Type | Nullable | Description |
|---|---|---|---|
solarPanelVoltage | decimal128(38, 20) | ✗ | Solar panel voltage |
measurementSystemTemperature
Device internal (system) temperature readings.
| Column | Type | Nullable | Description |
|---|---|---|---|
systemTemperature | decimal128(38, 20) | ✗ | Internal temperature in degrees Celsius |
measurementTVOC
Total Volatile Organic Compounds.
| Column | Type | Nullable | Description |
|---|---|---|---|
tvoc | decimal128(38, 20) | ✗ | TVOC level (ppb or index) |
measurementUsbVoltage
USB power input voltage.
| Column | Type | Nullable | Description |
|---|---|---|---|
usbVoltage | decimal128(38, 20) | ✗ | USB input voltage |
measurementVibration
Vibration level and cumulative total.
| Column | Type | Nullable | Description |
|---|---|---|---|
level | decimal128(38, 20) | ✗ | Vibration level |
total | decimal128(38, 20) | ✗ | Cumulative vibration total |
GeoJSON Formats
Point (position data)
{
"type": "Point",
"coordinates": [longitude, latitude]
}
Example: {"type":"Point","coordinates":[25.4686, 65.0592]}
Polygon (zone boundaries)
{
"type": "Polygon",
"coordinates": [[[lon1, lat1], [lon2, lat2], [lon3, lat3], [lon1, lat1]]]
}
UUID Format
All identifiers use lowercase hyphenated UUID format:
550e8400-e29b-41d4-a716-446655440000
Timestamp Format
All timestamps are:
- Timezone: UTC
- Precision: Milliseconds
- Storage: Arrow timestamp type
When reading in most languages, timestamps convert automatically to native datetime types.