SensorUp SensorThings API Features

SensorUp’s SensorThings API is the world’s first OGC-compliant IoT cloud platform. Here is a complete feature list of the SensorUp SensorThings API v.1.0.

*This page is meant for those who would like to know the very details of our SensorThings implementation.

This page may be disturbing to some viewers as it contains too much technical detail. Viewer discretion is advised. 

SensorThings API Core

  • address to a collection of entities
  • address to an entity in a collection
  • address to a property of an entity
  • address to the value of an entity’s property
  • address to a navigation property (navigationLink)
  • address to an associationLink
  • unlimited nested resource path (<entities>(<id>)/<entities>(<id>)/<entities>(<id>)/<entities>(<id>)/…)

SensorThings Query Options (Analytics)

Selection and Pagination

  • $select: Specify the properties the service returns in response to a request
  • $expand: Inline representation of the specified related entity
  • Support for multilevel $expand
  • Support default pagination for expanded entities and custom pagination using inline $top and $skip
  • $orderby: Specify the order of returned entities
  • $top: Restrict the number of entities that the service returns
  • $skip: Specify the number of entities that shall be excluded from the service response
  • $count: Add the total count of the requested entities to the response
  • Configurable server-side pagination

 

Query and Filtering

  • $filter: Filter the collection of entities that the service returns, based on non-JSON properties of the entities, with different operators and functions
  • Operators: eq, ne, gt, ge,lt, le, and, or
  • String Functions: substringof, endswith, startswith, length, tolower, toupper
  • Date Functions: year, month, day, hour, minute, second
  • Math Functions: round, floor, ceiling
  • Geospatial Functions: geo.distance, geo.length, geo.intersects
  • Spatial Relationship Functions: st_equals, st_disjoint, st_touches, st_within, st_overlaps, st_crosses, st_intersects, st_contains, st_relate

SensorThings CREATE-UPDATE-DELETE Extension

(connecting sensors to SensorThings API)

Create Entities Using HTTP POST

  • to /<entities> with mandatory properties and link to mandatory related entities
  • to /<related_entities>(<id>)/<entities> with mandatory properties and link to other mandatory related entities using Deep Insert
  • Create Thing and Deep Insert Location, Datastream, Sensor, ObservedProperty, Observation, FeatureOfInterest
  • Create Datastream, Deep Insert Sensor, ObservedProperty, Observation, FeatureOfInterest, and link to Thing
  • Create Observation, Deep Insert FeatureOfInterest, and link to Datastream
  • Automatic FeatureOfInterest creation if not sent with Observation
  • Automatic HistoricalLocation creation when the Location of a Thing is changed
  • Ability to connect a Thing to multiple representations of its Location

 

Update Entities Using HTTP PATCH/PUT

  • Update entities using PUT to /<entities>(<id>) with at least all mandatory properties and no control information.
  • Partial update using PATCH to /<entities>(<id>) with some properties and no control information.

 

DELETE Entities Using HTTP DELETE

  • Delete entities with integrity constraints using DELETE to /<entities>(<id>)

SensorThings Data Array Extension

(minimizing data transmitted over the network)

  • Retrieve a Datastream’s Observation entities in dataArray
  • Create Observation entities with dataArray

SensorThings MQTT Extension

(real-time enablement)

  • Create Observations using MQTT Publish
  • Receive notification of entity creation, update, or delete using MQTT subscribe
  • Rule engine: filter the MQTT notifications of the system

SensorThings Enhancement Package

  • Support reusing entities such as Locations and ObservedProperties
  • $sample: Specify whether the service should only return a sample from requested data
  • Support archiving for stale Observations
  • address to a collection of entities
  • address to an entity in a collection
  • address to a property of an entity
  • address to the value of an entity’s property
  • address to a navigation property (navigationLink)
  • address to an associationLink
  • unlimited nested resource path (<entities>(<id>)/<entities>(<id>)/<entities>(<id>)/<entities>(<id>)/…)

Selection and Pagination

  • $select: Specify the properties the service returns in response to a request
  • $expand: Inline representation of the specified related entity
  • Support for multilevel $expand
  • Support default pagination for expanded entities and custom pagination using inline $top and $skip
  • $orderby: Specify the order that service returns entities
  • $top: restrict the number of entities that service returns
  • $skip: Specify the number of entities that shall be excluded from service response
  • $count: Add total count of the requested entities to the response
    configurable server-side pagination

Query and Filtering

  • $filter: Filter the collection of entities that service returns based on non-JSON properties of entities with different operators and functions
  • Operators: eq, ne, gt, ge,lt, le, and, or
  • String Functions: substringof, endswith, startswith, length, tolower, toupper
  • Date Functions: year, month, day, hour, minute, second
  • Math Functions: round, floor, ceiling
  • Geospatial Functions: geo.distance, geo.length, geo.intersetcs
  • Spatial Relationship Functions: st_equals, st_disjoint, st_touches, st_within, st_overlaps, st_crosses, st_intersects, st_contains, st_relate

Create entities using HTTP POST

  • to /<entities> with mandatory properties and link to mandatory related entities
  • to /<related_entities>(<id>)/<entities> with mandatory properties and link to other mandatory related entities
  • using Deep Insert
  • Create Thing and Deep Inserting Location, Datastream, Sensor, ObservedProperty, Observation, FeatureOfInterest
  • Create Datastream and Deep Inserting Sensor, ObservedProperty, Observation, FeatureOfInterest and link to Thing
  • Create Observation and Deep Insert FeatureOfInterest  and link to Datastream
  • Automatic FeatureOfInterest creation if not sent with Observation
  • Automatic HistoricalLocation creation when the Location of a Thing is changed
  • Ability to connect a Thing to multiple representation of its Location

Update entities using HTTP PATCH/PUT

  • Update entities using PUT to /<entities>(<id>) with at least all mandatory properties and no control information.
  • Partial update using PATCH to /<entities>(<id>) with some properties and no control information.

DELETE entities using HTTP DELETE

  • Delete entities with integrity constraints using DELETE to /<entities>(<id>)
  • Retrieve Datastream’s Observation entities in dataArray
  • Create Observation entities with dataArray
  • Create Observations using MQTT Publish
  • Receive notification of entities creation, update or delete using MQTT subscribe
  • Rule engine: filter the MQTT notifications of the system
  • Support reusing entities such as Locations and ObservedProperties
  • $sample: Specify whether the service should only return a sample from requested data
  • Support archiving for stale Observations