SmaCH
SmaCH API

Captor

string · enum
Enum values:
accelerometer
temperature
humidity

Sensor

Sensor - IoT sensor probe (temperature, humidity, accelerometer)
identity
​string · minLength: 1 · pattern: \S(.*\S)? · required

Unique business identifier (IMEI or reference)

kinds
​Captor[] · minItems: 1 · required

Captors available on this probe

Enum values:
accelerometer
temperature
humidity
name
​string · minLength: 1 · required

Display name

id
​string · uuid · readOnly

Storage identifier

created
​string · date-time · readOnly

Creation timestamp

updated
​string · date-time · readOnly

Last update timestamp

description
​string

Description or model information

type
​string · readOnly

Inventory item type

Kind

string · enum
Enum values:
inclosure
crate

Packaging kind

Packaging

Packaging - Protection container (inclosure for static, crate for transport)
identity
​string · minLength: 1 · pattern: \S(.*\S)? · required

Unique business identifier (IMEI or reference)

kind
​Kind · enum · required

Packaging kind

Enum values:
inclosure
crate
name
​string · minLength: 1 · required

Display name

id
​string · uuid · readOnly

Storage identifier

created
​string · date-time · readOnly

Creation timestamp

updated
​string · date-time · readOnly

Last update timestamp

description
​string

Description or model information

category
​string

Packaging category

inside
​string

Internal material

outside
​string

External material

thermal
​string

Thermal insulation material

thermalRate
​integer · int32 · min: 0 · max: 5

Thermal protection rating (0-5)

vibration
​string

Vibration damping material

vibrationRate
​integer · int32 · min: 0 · max: 5

Vibration protection rating (0-5)

​Size

Packaging dimensions (mm)

weight
​integer · int64

Packaging weight (grams)

pictures
​string[]

Photo URLs

type
​string · readOnly

Inventory item type

Size

Physical dimensions in millimeters
height
​integer · int64

Height in mm

width
​integer · int64

Width in mm

depth
​integer · int64

Depth in mm

Logger

Logger - IoT datalogger central unit (GPS + Bluetooth box)
identity
​string · minLength: 1 · pattern: \S(.*\S)? · required

Unique business identifier (IMEI or reference)

name
​string · minLength: 1 · required

Display name

id
​string · uuid · readOnly

Storage identifier

created
​string · date-time · readOnly

Creation timestamp

updated
​string · date-time · readOnly

Last update timestamp

description
​string

Description or model information

type
​string · readOnly

Inventory item type

Gateway

Gateway - IoT relay device (cabin/trailer)
identity
​string · minLength: 1 · pattern: \S(.*\S)? · required

Unique business identifier (IMEI or reference)

name
​string · minLength: 1 · required

Display name

id
​string · uuid · readOnly

Storage identifier

created
​string · date-time · readOnly

Creation timestamp

updated
​string · date-time · readOnly

Last update timestamp

description
​string

Description or model information

type
​string · readOnly

Inventory item type

Artwork

Artwork - the monitored work, its packaging, checklist and base configuration
reference
​string · minLength: 1 · pattern: ^[a-zA-Z0-9][a-zA-Z0… · required

Business key, unique within the organization, URL-safe

name
​string · minLength: 1 · required
description
​string · minLength: 1 · required
​Configuration · required

Monitoring configuration (captor thresholds and logger parameters). Inherited: artwork, then monitoring, then datalogger

id
​string · uuid · readOnly

Storage identifier

tags
​string[]

Free tags, used to group and filter

status
​string · enum

Lifecycle status. standby and monitoring are set by the monitoring lifecycle, never by a request

Enum values:
draft
ready
standby
monitoring
archived
cancelled
Default: draft
summary
​string
creator
​string
creation
​string

Date or period of creation, free text

picture
​string

Picture URL

medium
​string
​Size

Dimensions (mm)

weight
​integer · int64

Weight (grams)

​object
inclosure
​string

Identity of the inclosure, the static protection

crate
​string

Identity of the crate, the transport protection

​ChecklistItem[]
created
​string · date-time
updated
​string · date-time

ChecklistItem

One task to verify before a monitoring
title
​string · minLength: 1 · required
description
​string

Configuration

Monitoring configuration (captor thresholds and logger parameters). Inherited: artwork, then monitoring, then datalogger
​object

Settings keyed by captor (temperature, humidity, accelerometer)

​LoggerConfig

Logger (datalogger box) settings

LoggerConfig

Logger settings for battery, storage and recording frequency
battery
​integer · int32

Battery alert threshold (%)

storage
​integer · int32

Storage alert threshold (MB)

frequency
​integer · int32

Recording frequency (measurements per hour)

SensorConfig

Captor settings: interval, min and max for temperature and humidity, range and axis thresholds for the accelerometer
interval
​integer · int32

Measurement interval in seconds (temperature, humidity)

min
​integer · int32

Minimum threshold: °C for temperature, %RH for humidity

max
​integer · int32

Maximum threshold: °C for temperature, %RH for humidity

range
​string · enum · pattern: 2g|4g|8g|16g

Accelerometer measurement range (2g, 4g, 8g, 16g)

Enum values:
2g
4g
8g
16g
xMin
​integer · int32 · min: -32768 · max: 32767

X-axis minimum threshold (raw int16, -32768 to 32767)

xMax
​integer · int32 · min: -32768 · max: 32767

X-axis maximum threshold (raw int16, -32768 to 32767)

yMin
​integer · int32 · min: -32768 · max: 32767

Y-axis minimum threshold (raw int16, -32768 to 32767)

yMax
​integer · int32 · min: -32768 · max: 32767

Y-axis maximum threshold (raw int16, -32768 to 32767)

zMin
​integer · int32 · min: -32768 · max: 32767

Z-axis minimum threshold (raw int16, -32768 to 32767)

zMax
​integer · int32 · min: -32768 · max: 32767

Z-axis maximum threshold (raw int16, -32768 to 32767)

Datalogger

A logger paired with a sensor, as detected at setup
logger
​string · minLength: 1 · required

Identity of the logger, as the inventory holds it

sensor
​string · minLength: 1 · required

Identity of the sensor, as the inventory holds it

gateway
​string

Identity of the gateway this datalogger reaches, when there is one

note
​string

Where it was placed, in words

​Location

Where it was placed, relative to the artwork

​Configuration

Overrides the configuration of the monitoring, for this datalogger alone

GatewayAssignment

A gateway and where it sits in the vehicle
gateway
​string · minLength: 1 · required

Identity of the gateway, as the inventory holds it

position
​string · enum

Where it sits in the vehicle, when the gateway reported it

Enum values:
cabin
trailer

Gsm

Cell tower the device was reaching
id
​string

Cell tower identifier

rssi
​number · double

Received signal strength, in dBm

Location

Geographic coordinates, or a position relative to the artwork
latitude
​number · double

Latitude, or the relative Y position on the artwork

longitude
​number · double

Longitude, or the relative X position on the artwork

alt
​number · double

Altitude in metres

​Gsm

Cell the position was resolved against, when there is no satellite fix

Monitoring

Monitoring - one recording session of an artwork, with the equipment it engages
type
​string · enum · required

Stationary for a museum or a store, transport for a movement

Enum values:
stationary
transport
​Configuration · required

The configuration this session was set up with, copied from the artwork

​Datalogger[] · minItems: 1 · required

The dataloggers engaged, at least one

id
​string · uuid · readOnly

Identifier, public: what a URL names and what events reference

artwork
​string · readOnly

Reference of the monitored artwork

status
​string · enum · readOnly

Where the session stands. Moved by the lifecycle, never by a request

Enum values:
pending
in_progress
ended
Default: pending

Where each gateway sits in the vehicle. Transport only

created
​string · date-time
updated
​string · date-time

Coordinate

A reading on three axes
x
​number · double

X axis

y
​number · double

Y axis

z
​number · double

Z axis

Event

Event - what happened during a recording session
type
​string · enum · required

What happened

Enum values:
start
alert
position
notification
stop
severity
​string · enum · required

How much it matters

Enum values:
info
warning
critical
date
​string · date-time · required

When it happened, on the device

​Location · required

Where the device thought it was. The object is required, a fix is not: a position resolved against a cell carries no latitude

sourceType
​string · enum · required

What kind of thing the source names, which decides how the event is routed

Enum values:
monitoring
sensor
logger
user
source
​string · minLength: 1 · required

Who or what reported it: a monitoring id, a sensor or logger identity, or the email of a user

id
​string · uuid · readOnly

Identifier

organization
​string · readOnly

Organization of the monitoring this event was routed to

monitoring
​string · uuid · readOnly

Monitoring this event was routed to

artwork
​string · readOnly

Reference of the monitored artwork

message
​string

Why the threshold was crossed, on an alert

tag
​string

Free annotation carried by a notification

​Coordinate

Rotation of the device on three axes

​Coordinate

Acceleration of the device on three axes

speed
​number · double

Speed of the device, in metres per second

sensor
​Captor · enum

The captor that crossed its threshold, on an alert. Absent when the alert reports the state of the device itself, such as its battery or its storage

Enum values:
accelerometer
temperature
humidity
values
​number[]

What the captor measured: three axes for an accelerometer, one value for a temperature or a humidity

created
​string · date-time · readOnly

When this service received it

EventCountReport

What a recording session holds, counted
total
​integer · int64

Total number of events

​object

Count per type: start, alert, position, notification, stop

​object

Count per severity, alerts only: info, warning, critical

​object

Count per captor, alerts only: accelerometer, temperature, humidity

MonitoringCharts

The alerts of a monitoring, one series per captor, laid out in columns for a chart
​object

One series per captor that raised an alert. A captor with none is absent

Series

The alerts of one captor, as parallel columns
dates
​string[]

When each alert happened, as reported by the device, oldest first

values
​array[]

One column per component of the reading, each as long as dates: one for temperature and humidity, three (x, y, z) for the accelerometer, in raw device units. An entry the alert did not carry is null

severities
​string[]

The severity of each alert

Enum values:
info
warning
critical

MonitoringOverview

A monitoring, with what its events say about it
​Monitoring

The monitoring

started
​string · date-time

When recording started, from the start event. Absent while the monitoring is only set up

ended
​string · date-time

When recording stopped, from the stop event. Absent until the monitoring has ended

lastEvent
​string · date-time

Date of the latest event, as reported by the device. Absent when nothing was recorded

lastReceived
​string · date-time

When this service last received an event of the monitoring. A long gap is not by itself a fault: events are relayed by the mobile application, not sent by the devices

​object

Alerts per severity. A severity with no alert is absent and reads as zero

​Event

The latest alert

​Location

Where the latest position placed it. Transport only

SseEmitter

timeout
​integer · int64

Count

Number of resources matching the filters
count
​integer · int64

Exists

Existence check result
exists
​boolean

Tags

Tags in use
values
​string[]

User

A platform user (backed by a Keycloak user; email is the username)
email
​string · email · minLength: 1 · required

Email, also used as the username

id
​string · readOnly

Keycloak identifier, server-assigned

firstName
​string

Given name

lastName
​string

Family name

enabled
​boolean

Whether the account is active

emailVerified
​boolean · readOnly

Whether the person confirmed the address; false while the invitation is pending

passwordSet
​boolean · readOnly

Whether a password exists; only on the single-user read

locale
​string · pattern: [a-z]{2,3}(-[A-Z]{2}…

Language of the emails and the login page

superAdmin
​boolean

Whether the user holds the platform-wide super-admin role

organizations
​string[] · readOnly

Aliases of the organizations the user belongs to

lastLogin
​string · date-time · readOnly

Last login, absent when none is recorded: never logged in, older than the event retention (90 days), or login events not readable by the service

logins
​integer · int32 · readOnly

Logins over the event retention (90 days), counted up to 1000; only on the single-user read, and absent when login events are not readable by the service

Organization

A platform organization (backed by a Keycloak Organization)
name
​string · minLength: 1 · required

Display name

id
​string · readOnly

Keycloak identifier, server-assigned

alias
​string · pattern: [a-z0-9][a-z0-9-]*

Immutable technical alias

enabled
​boolean

Whether the organization is active

description
​string

Optional description

locale
​string · pattern: [a-z]{2,3}(-[A-Z]{2}…

Default language of its members

members
​integer · int32 · readOnly

Number of members

RoleAssignment

Role to grant to a member
role
​string · enum · required
Enum values:
administrator
viewer

Member

A member of an organization with their role
id
​string
email
​string
firstName
​string
lastName
​string
enabled
​boolean
emailVerified
​boolean

Whether the person confirmed the address; false while the invitation is pending

role
​string · enum
Enum values:
administrator
viewer

Profile

The current account's own profile
firstName
​string · minLength: 0 · maxLength: 255 · required

Given name

lastName
​string · minLength: 0 · maxLength: 255 · required

Family name

email
​string · readOnly

Email, also the username

locale
​string · pattern: [a-z]{2,3}(-[A-Z]{2}…

Language of the emails and the login page

MemberInvitation

A person to bring into the organization with a role
email
​string · email · minLength: 1 · required

Email, also used as the username

role
​string · enum · required

Role to grant in the organization

Enum values:
administrator
viewer
firstName
​string

Given name, used when the account is created

lastName
​string

Family name, used when the account is created

locale
​string · pattern: [a-z]{2,3}(-[A-Z]{2}…

Language of the emails and the login page, used when the account is created

OrganizationMembership

An organization a user belongs to, with their role in it
alias
​string
name
​string
role
​string | null · enum
Enum values:
administrator
viewer

CurrentUser

The account behind the current token
id
​string

Account identifier

email
​string

Account email, also its username

role
​string · enum

Realm-wide role, empty when the account holds none

Enum values:
super-admin
administrator
viewer
​string

Organizations the account belongs to, alias to display name

​string

Role held per organization, absent where none is held