Docs/Apio IoT Platform/Introduction

Architecture

Apio IoT is an industrial IoT platform that connects devices and other data sources, stores and processes their data, and exposes it to applications through documented APIs. The infrastructure is managed by Apio, so teams can focus on their devices and applications.

Apio IoT Platform architectureDevices, gateways and edge devices send data to the platform over MQTT or HTTPS and receive commands over MQTT. Inside the platform, data is stored as timeseries, aggregated and used to update the device state; the platform also manages the asset model, commands, firmware updates, events and anomalies, identity and access. Applications use the platform through the REST API over HTTPS.FIELDDevicesGateways (nodes)Edge devicesdatacommandsAPIO IOT PLATFORMMQTT · HTTPSREST APITimeseriesRecent and historicalAggregations15 min, hourly, daily…Device stateLatest valuesAsset modelPlants, devices, assetsCommandsTo devices and nodesFirmware updatesOver-the-air releasesEvents & anomaliesChanges and alarmsIdentity & accessRoles and API keysAPPLICATIONSApio IoT DashboardBalance · EMS · FlessibiliYour applicationsHTTPS

The platform sits between the field, where devices measure and act, and the applications that use the data: the Apio IoT Dashboard, the Apio products built on the platform (Balance, EMS, Flessibili) and your own software. Everything happens within a project, which isolates the resources, data and users of one customer or initiative.

Connectivity

Field equipment connects in two ways:

  • MQTT, for devices and gateways that stream data continuously and need to receive commands. See MQTT Connectivity.
  • HTTPS, through the REST API, for equipment and applications that send data occasionally. See Data Exchange.

Applications use the REST API over HTTPS for everything else: managing resources, reading data, sending commands.

Every connection is authenticated, with a bearer token for users or an API key for devices and applications, and authorized against the permissions granted in the project. See Identity Management and Credentials.

The platform tracks the connection of every MQTT client: when a device, a node or an application connects or disconnects, its connectivityStatus and lastConnectionAt / lastDisconnectionAt fields are updated and an event is recorded.

From Measurements to Data

When a device publishes a measurement:

  1. The platform validates the message and interprets its payload according to the device and its gateway.
  2. Every value is stored as a point of a timeseries, identified by device and property. See Query Timeseries.
  3. The device state is updated with the latest value of each property, and assets mapped to the device reflect it.
  4. When the device type declares aggregations, the platform computes aggregated series at 15 minutes, hourly, daily and longer periods.

Measurements are processed asynchronously, so a value can be readable a few moments after it was sent. Values older than the project’s retention period move to historical storage, where they remain available for queries. See Historical Data and Export.

From Applications to Devices

Applications act on the field through commands: a command sent through the API is delivered over MQTT to the target device or gateway, which acknowledges it and reports the outcome. The same mechanism distributes firmware updates and rotates device credentials.

Modelling the Field

The asset model describes the installation:

  • Plants group the resources at a site.
  • Nodes are the gateways and dataloggers that connect devices.
  • Devices produce measurements and receive commands. Device types describe their properties and commands, and device groups let you act on many devices at once.
  • Assets represent the equipment that matters to your domain, with a state built from the devices that monitor it.

Events

The platform records an event for every change to a resource, with a type in the form apio.core.<resource>.<action>, for example apio.core.devices.created, apio.core.assets.updated or apio.core.devices.connected. Each event carries the time of the change and the resource it refers to:

JSON
{
  "projectId": "my-project-id",
  "type": "apio.core.devices.connected",
  "source": "/projects/my-project-id/devices/my-device-uuid",
  "eventTime": "2026-10-01T10:00:00.000Z"
}

Edge

Part of the processing can run close to the devices, on edge hardware managed from the cloud. See Apio Edge Platform.

Type to search guides and API endpoints.