Kontakt.io · Schema

Telemetry Data Model

Telemetry data varies by product model and configured settings.

CompanyIoTRTLSHealthcareAsset TrackingLocationOccupancyBluetoothDevice ManagementTelemetrySensorsStreaming

Properties

Name Type Description
content array
View JSON Schema on GitHub

JSON Schema

kontaktio-telemetry-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/kontaktio/main/json-schema/kontaktio-telemetry-schema.json",
  "title": "Telemetry Data Model",
  "description": "Telemetry data varies by product model and configured settings.",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/kontaktio-telemetry-api-openapi.yml#/components/schemas/Telemetry",
  "type": "object",
  "properties": {
    "content": {
      "type": "array",
      "uniqueItems": true,
      "minItems": 1,
      "items": {
        "type": "object",
        "properties": {
          "trackingId": {
            "type": "string",
            "minLength": 1,
            "description": "Tracking Id."
          },
          "timestamp": {
            "type": "string",
            "minLength": 1,
            "description": "Timestamp when telemetry was received by Kio Cloud."
          },
          "beaconTimestamp": {
            "type": "string",
            "minLength": 1,
            "description": "Telemetry timestamp from beacon."
          },
          "gatewayTimestamp": {
            "type": "string",
            "minLength": 1,
            "description": "Telemetry timestamp from gateway."
          },
          "cloudTimestamp": {
            "type": "string",
            "minLength": 1,
            "description": "Timestamp when telemetry comes to Kontakt.io cloud."
          },
          "accelerometerSensitivity": {
            "type": "number",
            "description": "Accelerometer sensitivity.\n\nThe accelerometer sensitivity represents the scale in which the following numbers are given. A sensitivity of 16 means that the numbers are in 16 mg units, or 0.016g.\n\nTo decode a triple [0, 1, 64] with sensitivity 16.:\n\nX component is just 0\n\nY component is -1 * 16 mg = -0.016g\n\nZ component is 64 * 16mg = 1.024g\n\nSo the raw vector [0, -1, 64] gets multiplied by 0.016g and the resulting vector is: [0, -0.016, 1.024] g.016g."
          },
          "accelerometerX": {
            "type": "number",
            "description": "Accelerometer in X axis. "
          },
          "accelerometerY": {
            "type": "number",
            "description": "Accelerometer in Y axis."
          },
          "accelerometerZ": {
            "type": "number",
            "description": "Accelerometer in Z axis."
          },
          "batteryLevel": {
            "type": "number",
            "description": "Device battery level in percentage (%)."
          },
          "channel": {
            "type": "number",
            "description": "Channel."
          },
          "clickCounter": {
            "type": "number",
            "description": "Click counter for default button (BLUE button)."
          },
          "secondButtonClickCounter": {
            "type": "number",
            "description": "Click counter for second button (RED button)."
          },
          "humidity": {
            "type": "number",
            "description": "Humidity reading in percentage (%)."
          },
          "lightIntensity": {
            "type": "number",
            "description": "Light intensity in percentage (%)"
          },
          "rssi": {
            "type": "number",
            "description": "RSSI in dB"
          },
          "movementCounter": {
            "type": "number",
            "description": "Movement counter."
          },
          "sourceId": {
            "type": "string",
            "minLength": 1,
            "description": "Source Id."
          },
          "temperature": {
            "type": "number",
            "description": "Temperature reading in Celsius."
          },
          "airQuality": {
            "type": "number",
            "description": "Index 0 to 255. The higher the value, the worse the air pollution."
          },
          "roomNumber": {
            "type": "number",
            "description": "Room number detected by device sensor."
          },
          "numberOfPeopleDetected": {
            "type": "number",
            "description": "Detected number of people in the room (count)."
          },
          "secondsSincePeopleDetection": {
            "type": "number",
            "description": "Time since last detection in seconds."
          },
          "timeSinceClick": {
            "type": "number",
            "description": "Time since click."
          },
          "timeSinceDoubleTap": {
            "type": "number",
            "description": "Time since double click."
          },
          "timeSinceMovement": {
            "type": "number",
            "description": "Time since movement."
          },
          "timeSinceTap": {
            "type": "number",
            "description": "Time since tap."
          },
          "firmware": {
            "type": "string",
            "minLength": 1,
            "description": "Firmware version of scanned device."
          },
          "model": {
            "type": "number",
            "description": "Scanned device version number."
          },
          "txPowerDbm": {
            "type": "number",
            "description": "Transmission Power (in dBm) of a scanned device."
          },
          "uniqueId": {
            "type": "string",
            "minLength": 1,
            "description": "Unique identifier (id) of a scanned device."
          },
          "calibratedRssi1m": {
            "type": "number",
            "description": "Calibrated RSSI value at 1 meter from a scanned device."
          },
          "calibratedRssi0m": {
            "type": "number",
            "description": "Calibrated RSSI value at 0 meters from a scanned device."
          },
          "moving": {
            "type": "boolean",
            "description": "Flag showing whether device is currently in motion."
          },
          "eddystoneNamespace": {
            "type": "string",
            "minLength": 1,
            "description": "Namespace value from Eddystone UID frame."
          },
          "eddystoneInstanceId": {
            "type": "string",
            "minLength": 1,
            "description": "Instance ID value from Eddystone UID frame."
          },
          "eddystoneEphemeralId": {
            "type": "string",
            "minLength": 1,
            "description": "Ephemeral value from Eddystone EID frame."
          },
          "iBeaconProximity": {
            "type": "string",
            "minLength": 1,
            "description": "Proximity UUID value from iBeacon frame."
          },
          "iBeaconMajor": {
            "type": "number",
            "description": "Major value from iBeacon frame."
          },
          "iBeaconMinor": {
            "type": "number",
            "description": "Minor value from iBeacon frame."
          }
        },
        "required": [
          "trackingId",
          "timestamp",
          "beaconTimestamp",
          "gatewayTimestamp",
          "cloudTimestamp"
        ]
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/kontaktio-telemetry"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.