Kontakt.io · Schema

New Beacon Config

CompanyIoTRTLSHealthcareAsset TrackingLocationOccupancyBluetoothDevice ManagementTelemetrySensorsStreaming
View JSON Schema on GitHub

JSON Schema

kontaktio-new-beacon-config-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/kontaktio/main/json-schema/kontaktio-new-beacon-config-schema.json",
  "title": "New Beacon Config",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/kontaktio-config-api-openapi.yml#/components/schemas/NewBeaconConfig",
  "allOf": [
    {
      "$ref": "#/$defs/BeaconConfig"
    },
    {
      "type": "object",
      "properties": {
        "uniqueId": {
          "description": "List of Beacon Unique IDs for which configs should be created.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/UniqueId"
          }
        },
        "deviceType": {
          "description": "Type of a device that a configuration should be created for.",
          "type": "string",
          "enum": [
            "BEACON"
          ]
        }
      }
    },
    {
      "$ref": "#/$defs/ConfigLocksRequest"
    }
  ],
  "$defs": {
    "AccelerometerSettings": {
      "type": "object",
      "x-stoplight": {
        "id": "q22ra4lowsp5r"
      },
      "description": "Accelerometer settings.",
      "properties": {
        "features": {
          "description": "List of Accelerometer features that are enabled",
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "ACCELEROMETER",
              "X_AXIS",
              "Y_AXIS",
              "Z_AXIS",
              "MOVE_DETECTION",
              "DOUBLE_TAP_DETECTION"
            ]
          }
        },
        "sensitivity": {
          "description": "Accelerometer sensitivity",
          "type": "integer",
          "enum": [
            16,
            32,
            64,
            128
          ]
        },
        "preset": {
          "description": "Preset for Accelerometer configuration",
          "type": "string",
          "enum": [
            "MOVEMENT",
            "FREE_FALL",
            "DOUBLE_TAP",
            "DOUBLE_TAP_AND_MOVEMENT",
            "DOUBLE_TAP_AND_FREE_FALL"
          ]
        },
        "move": {
          "description": "Movement detection parameters",
          "type": "object",
          "properties": {
            "threshold": {
              "description": "Value (in m*g*) that an acceleration needs to exceeds in order to trigger movement detection",
              "type": "integer"
            },
            "duration": {
              "description": "Time (in ms) than an acceleration needs to stay above threshold value in order to trigger movement detection",
              "type": "integer"
            },
            "detectionFlags": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "X_POSITIVE",
                  "Y_POSITIVE",
                  "Z_POSITIVE",
                  "X_NEGATIVE",
                  "Y_NEGATIVE",
                  "Z_NEGATIVE"
                ]
              }
            },
            "detectionFlagsJunction": {
              "type": "string",
              "enum": [
                "AND",
                "OR"
              ]
            }
          }
        },
        "doubleTap": {
          "description": "Double tap detection parameters",
          "type": "object",
          "properties": {
            "threshold": {
              "description": "Value ( in m*g*) that an acceleration needs to exceeds in order to trigger movement detection",
              "type": "integer"
            },
            "timeLimit": {
              "description": "Maximum duration (in ms) of a single tap",
              "type": "integer"
            },
            "timeLatency": {
              "description": "Minimum time gap (in ms) between two taps",
              "type": "integer"
            },
            "timeWindow": {
              "description": "Maximum duration (in ms) of the whole event",
              "type": "integer"
            },
            "detectionFlags": {
              "description": "List of accelerometer axes that are monitored for double tap events",
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "X_AXIS",
                  "Y_AXIS",
                  "Z_AXIS"
                ]
              }
            }
          }
        },
        "highPass": {
          "description": "High-pass filter parameters",
          "type": "object",
          "properties": {
            "accelerometerData": {
              "type": "boolean",
              "description": "Flag indicating whether the high-pass filter should be applied to raw accelerometer data"
            },
            "moveDetection": {
              "type": "boolean",
              "description": "Flag indicating whether the high-pass filter should be applied when movement detection is enabled"
            },
            "doubleTapDetection": {
              "type": "boolean",
              "description": "Flag indicating whether the high-pass filter should be applied when double tap detection is enabled"
            },
            "mode": {
              "description": "High-pass filter mode",
              "type": "string",
              "enum": [
                "NORMAL",
                "NORMAL_RESET",
                "AUTORESET",
                "REFERENCE"
              ]
            },
            "cutOffFrequency": {
              "description": "High-pass filter cut-off frequency",
              "type": "number",
              "enum": [
                0.05,
                0.1,
                0.2,
                0.5
              ]
            },
            "reference": {
              "description": "High-pass filter reference",
              "type": "integer"
            }
          }
        }
      }
    },
    "BeaconConfig": {
      "description": "Full beacon-type configuration.",
      "allOf": [
        {
          "$ref": "#/$defs/ConfigBle"
        },
        {
          "$ref": "#/$defs/ConfigIBeacon"
        },
        {
          "$ref": "#/$defs/ConfigEddystone"
        },
        {
          "$ref": "#/$defs/ConfigButton"
        },
        {
          "$ref": "#/$defs/ConfigEid"
        },
        {
          "type": "object",
          "properties": {
            "powerSaving": {
              "$ref": "#/$defs/PowerSavingSettings"
            },
            "accelerometer": {
              "$ref": "#/$defs/AccelerometerSettings"
            },
            "occupancy": {
              "$ref": "#/$defs/OccupancyPhysicalSettings"
            },
            "irReceiver": {
              "$ref": "#/$defs/IrReceiverSettings"
            },
            "irTransmitter": {
              "$ref": "#/$defs/IrTransmitterSettings"
            },
            "bleScan": {
              "$ref": "#/$defs/BleScanSettings"
            },
            "fingerprinting": {
              "type": "object",
              "description": "Alias for bleScan, same fields. Deprecated.",
              "deprecated": true
            },
            "irRoomNumber": {
              "type": "integer",
              "minimum": 0,
              "maximum": 4095,
              "default": 65535,
              "description": "Static room number to broadcast over BLE, and transmit over IR. Up to 12 bits. Default 0xFFFF (disabled)"
            },
            "irBlinkInterval": {
              "type": "integer",
              "minimum": 0,
              "maximum": 999,
              "default": 2,
              "description": "Time between IR transmissions, encoded as u16. 0 - disabled, 1 - 10 seconds, 11 - 999 milliseconds"
            },
            "irSlotDuration": {
              "type": "integer",
              "minimum": 0,
              "maximum": 65535,
              "default": 0,
              "description": "Time between IR slots in the same transmission window, in ms. Available for IR room emitters and IR receivers."
            },
            "irSlotCount": {
              "type": "integer",
              "minimum": 0,
              "maximum": 8,
              "default": 0,
              "description": "IR slot count. 0 - disabled, 1-4: 2 bits for slots, 5-8: 3 bits for slots. No other values allowed"
            },
            "irDetectionParams": {
              "type": "string",
              "pattern": "^[0-9A-Fa-f]{20}$",
              "description": "Opaque 10-byte struct for IR detection tuning."
            },
            "pirEnabled": {
              "type": "boolean",
              "description": "Turn PIR sensor on/off."
            },
            "airQualityInterval": {
              "type": "integer",
              "description": "Interval at which the air quality is measured. Unit is seconds. 0 to disable air quality probing.",
              "enum": [
                0,
                3,
                300
              ]
            },
            "lightSensorSamplingInterval": {
              "type": "integer",
              "minimum": 0,
              "maximum": 1800000,
              "description": "Interval at which the ambient light level is measured. Unit is milliseconds (i.e. 1800000 = 30 minutes)."
            },
            "temperatureOffset": {
              "type": "integer",
              "description": "Calibration parameter for devices equipped with dedicated thermometer and broadcasting temperature values in `KONTAKT_TLM` packet. This offset does not affect values reported in Eddystone Telemetry packets."
            },
            "displaySettings": {
              "$ref": "#/$defs/DisplaySettings"
            },
            "lowBatterySettings": {
              "$ref": "#/$defs/LowBatterySettings"
            },
            "sensorSettings": {
              "$ref": "#/$defs/SensorSettings"
            },
            "localAlertingSettings": {
              "$ref": "#/$defs/LocalAlertingSettings"
            },
            "buzzerSnoozing": {
              "$ref": "#/$defs/BuzzerSnoozing"
            },
            "dispenser": {
              "$ref": "#/$defs/Dispenser"
            },
            "timeSync": {
              "type": "boolean",
              "description": "Synchronizes the device's internal clock"
            },
            "systemTime": {
              "type": "string",
              "format": "date-time",
              "description": "Device system time in ISO 8601 format (UTC). Maps to PID h_system_time (0xA004). Available on nrf52 devices with firmware >= 1.20."
            }
          }
        }
      ]
    },
    "BleScanSettings": {
      "type": "object",
      "description": "BLE scanning setting. Can be used for fingerprinting.",
      "properties": {
        "interval": {
          "type": "integer",
          "minimum": 1,
          "maximum": 604800,
          "default": 82800,
          "description": "The interval between BLE scans. Unit is seconds. 0: disabled. Default: 23h = 82800 seconds"
        },
        "duration": {
          "type": "integer",
          "minimum": 100,
          "maximum": 65535,
          "default": 10000,
          "description": "Duration of each BLE scan. Unit is milliseconds."
        },
        "models": {
          "type": "string",
          "default": "090e1c1d1f22",
          "description": "Allowed models array for scanning, expressed as hexadecimal string."
        },
        "force": {
          "type": "boolean",
          "default": false,
          "description": "Force the BLE scan."
        },
        "size": {
          "type": "integer",
          "minimum": 0,
          "maximum": 255,
          "default": 20,
          "description": "Maximum number of scanned items reported per scan. Requires nrf52 firmware >= 2.5.88."
        }
      }
    },
    "BuzzerSnoozing": {
      "type": "object",
      "description": "Buzzer snoozing settings for Temperature Monitor Pro devices. Maps to PID buzzer_snooze_duration_m (0x917D).",
      "properties": {
        "state": {
          "type": "string",
          "description": "Snooze state. INACTIVE means snoozing is disabled, INFINITE snoozes indefinitely. Device mapping uses 0 for INACTIVE and -1 for INFINITE.",
          "enum": [
            "ACTIVE",
            "INACTIVE",
            "INFINITE"
          ]
        },
        "duration": {
          "type": "integer",
          "description": "Snooze duration in minutes for ACTIVE. Ignored for INACTIVE and INFINITE states. Device mapping uses 0/-1 for inactive/infinite, so minimum is 1.",
          "minimum": 1,
          "maximum": 32767
        }
      }
    },
    "ConfigBle": {
      "type": "object",
      "description": "General BLE advertising settings.",
      "properties": {
        "name": {
          "description": "Bluetooth name.",
          "maxLength": 15,
          "type": "string"
        },
        "profiles": {
          "type": [
            "array",
            "null"
          ],
          "description": "List of beacon profiles Device should broadcast.",
          "deprecated": true,
          "items": {
            "type": "string",
            "enum": [
              "IBEACON",
              "EDDYSTONE"
            ]
          }
        },
        "packets": {
          "description": "Beacon advertising packets that should be broadcasted by a device.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string",
            "enum": [
              "IBEACON",
              "EDDYSTONE_UID",
              "EDDYSTONE_URL",
              "EDDYSTONE_EID",
              "EDDYSTONE_TLM",
              "EDDYSTONE_ETLM",
              "KONTAKT",
              "KONTAKT_TLM",
              "KONTAKT_LOCATION",
              "BUTTON_IBEACON",
              "QUUPPA"
            ]
          }
        },
        "customConfiguration": {
          "type": [
            "string",
            "null"
          ],
          "description": "Custom configuration parameters for special use-cases. If the solution prepared for you by Kontakt.io takes advantage of these properties, please get in touch with our Support Team for a proper documentation.\n\n**Note (POST /config/create):** PIDs not on the target device's accepted list are silently filtered out before the pending-config record is persisted. The server returns `201` regardless. To detect a dropped PID, compare the `customConfiguration` keys you sent with the keys echoed back in the response for the same `uniqueId`.\n"
        },
        "shuffled": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Flag indicating whether a beacons should turn the Kontakt.io Secure Shuffling on (`true`) or of (`false`)."
        },
        "txPower": {
          "type": [
            "integer",
            "null"
          ],
          "minimum": 0,
          "maximum": 7,
          "description": "Bluetooth transmission power level. Possible values are integers from 0 to 7 (nRF51-based devices), 1 to 7 (nRF52-based devices), and 1 or 6 (Card Tag CT16-2)."
        },
        "interval": {
          "type": [
            "integer",
            "null"
          ],
          "minimum": 100,
          "maximum": 10240,
          "description": "Advertising interval in milliseconds for iBeacon and Eddystone packets."
        },
        "kontaktFrameInterval": {
          "type": [
            "integer",
            "null"
          ],
          "minimum": 20,
          "maximum": 10240,
          "description": "Advertising interval in milliseconds for Kontakt.io Secure Profile packet (Kontakt Packet)."
        },
        "telemetryInterval": {
          "type": [
            "integer",
            "null"
          ],
          "minimum": 20,
          "maximum": 10240,
          "description": "Advertising interval in milliseconds for Kontakt.io Telemetry packet."
        },
        "locationFrameInterval": {
          "type": [
            "integer",
            "null"
          ],
          "minimum": 100,
          "maximum": 10240,
          "description": "Advertising interval in milliseconds for Kontakt.io Location packet."
        },
        "telemetryFields": {
          "type": [
            "array",
            "null"
          ],
          "description": "Bitmask-based configuration of fields included in the Kontakt.io Telemetry packet.\nEach value enables a specific telemetry field. Available fields depend on device hardware capabilities.\n\n| Value | Description |\n|-------|-------------|\n| AIR_PRESSURE | Air pressure in Pa, as a float32 number |\n| AIR_QUALITY | Air-Quality-Index (AQI) in units 0-254, 255 meaning invalid |\n| BATTERY | Battery percentage, from 0% to 100%, with 255 meaning externally-powered |\n| BLE_CHANNEL | BLE channel on which it is advertising: 0 - 40 |\n| BLE_SCAN_RESULT | BLE scan results |\n| BUTTON_CLICK | Seconds since the last button click, saturating at 0xFFFF |\n| BUTTON_DOUBLE_CLICK | Seconds since the last double click, saturating at 0xFFFF |\n| DOUBLE_TAP_EVENT | Seconds since the last double tap, saturating at 0xFFFF |\n| GAS_SENSOR | Gas sensor reading |\n| GPIO | GPIO state as a telemetry, not implemented |\n| HUMIDITY | Relative humidity percentage 0-100, 255 meaning invalid |\n| IDENTIFIED_BUTTON_CLICK | Click 8-bit counter, and seconds since the last button click, saturating at 0xFFFF |\n| INOUT_COUNTER | In/out people counter |\n| IR_STATS | IR scan statistics |\n| LIGHT_LEVEL | Light level as a percentage: 0 - dark, 100 - sunny environment, 255 - invalid |\n| LIGHT_LEVEL_LUX | Light level in lux, as an uint16 |\n| LOGGING_ENABLED | Show if logging is enabled and if data is available for download |\n| MOVEMENT_EVENT | Movement 8-bit counter, and seconds since the last movement click, saturating at 0xFFFF |\n| MOVEMENT_THRESHOLD_EVENT | Seconds since the last movement, saturating at 0xFFFF |\n| OCCUPANCY | Number of people measured by the detector: 0 - 254, 255 - invalid |\n| PEOPLE_DETECTION | People detection |\n| PIR_DETECTION | Seconds since the last PIR movement, saturating at 0xFFFF |\n| PROXIMITY_REPORT | Proximity report |\n| ROOM_NUMBER | Room number, either measured, or configured. Uint16 |\n| RSSI_SCAN | RSSI scan results |\n| SOAP_DISPENSER | Soap dispenser event |\n| TAP_EVENT | Seconds since the last tap, saturating at 0xFFFF |\n| TEMPERATURE | Temperature as signed 8-bit integer, from -128 to 127C |\n| TEMPERATURE_16_BITS | Temperature as an FP8.8 signed fixed-point number |\n| TWO_BUTTON_INFO | 2x click 8-bit counters, and seconds since the any button click, saturating at 0xFFFF |\n| UTC_TIME | Unix timestamp, UTC time from 1970 in seconds |\n| RAW_ACCELEROMETER | Sensitivity: 1/1000 of a g; X, Y, Z values in units of the sensitivity |\n",
          "items": {
            "type": "string",
            "enum": [
              "AIR_PRESSURE",
              "AIR_QUALITY",
              "BATTERY",
              "BLE_CHANNEL",
              "BLE_SCAN_RESULT",
              "BUTTON_CLICK",
              "BUTTON_DOUBLE_CLICK",
              "DOUBLE_TAP_EVENT",
              "GAS_SENSOR",
              "GPIO",
              "HUMIDITY",
              "IDENTIFIED_BUTTON_CLICK",
              "INOUT_COUNTER",
              "IR_STATS",
              "LIGHT_LEVEL",
              "LIGHT_LEVEL_LUX",
              "LOGGING_ENABLED",
              "MOVEMENT_EVENT",
              "MOVEMENT_THRESHOLD_EVENT",
              "OCCUPANCY",
              "PEOPLE_DETECTION",
              "PIR_DETECTION",
              "PROXIMITY_REPORT",
              "ROOM_NUMBER",
              "RSSI_SCAN",
              "SOAP_DISPENSER",
              "TAP_EVENT",
              "TEMPERATURE",
              "TEMPERATURE_16_BITS",
              "TWO_BUTTON_INFO",
              "UTC_TIME",
              "RAW_ACCELEROMETER"
            ]
          }
        },
        "locationFrameChannel": {
          "type": [
            "integer",
            "null"
          ],
          "description": "BLE broadcasting channel used for Kontakt.io Location packet broadcasts. 0 means randomized channel broadcasting.",
          "enum": [
            0,
            37,
            38,
            39
          ]
        }
      }
    },
    "ConfigButton": {
      "type": "object",
      "description": "Button settings.",
      "properties": {
        "buttonFeatures": {
          "type": "array",
          "description": "Bitmask-based hardware button configuration. Each value in the list enables a specific flag.\nAn empty list `[]` corresponds to a mask of `0b000` (all flags unset) which is the default:\nclick and long-press are enabled, triple-click is disabled.\nSend an empty list to restore defaults.\n\nNote: `CLICK_OFF` and `LONG_PRESS_OFF` are inverted flags — setting them **disables** a behavior\nthat is on by default. `TRIPLE_CLICK` is a normal flag — setting it **enables** a behavior\nthat is off by default.\n\n| Value | Description |\n|-------|-------------|\n| CLICK_OFF | Disable single-click detection. On by default — set this flag to turn it off |\n| LONG_PRESS_OFF | Disable long-press detection. On by default — set this flag to turn it off |\n| TRIPLE_CLICK | Require a triple-click to trigger a panic event instead of a single click. Off by default |\n| MULTI_CLICK | Enable multi-click detection. Mutually exclusive with TRIPLE_CLICK. Off by default |\n",
          "items": {
            "type": "string",
            "enum": [
              "CLICK_OFF",
              "LONG_PRESS_OFF",
              "TRIPLE_CLICK",
              "MULTI_CLICK"
            ]
          }
        },
        "multiClickCount": {
          "type": "integer",
          "description": "Number of clicks required for multi-click detection (1–10). Only applicable when MULTI_CLICK is set in buttonFeatures.\n",
          "minimum": 1,
          "maximum": 10
        },
        "panicDuration": {
          "type": "integer",
          "minimum": 0,
          "maximum": 65535,
          "description": "Number of second the `BUTTON_IBEACON` packet should be broadcast after a button press."
        }
      }
    },
    "ConfigEddystone": {
      "type": "object",
      "description": "Eddystone settings.",
      "properties": {
        "namespace": {
          "type": [
            "string",
            "null"
          ],
          "description": "Eddystone UID Namespace.",
          "maxLength": 20,
          "minLength": 20
        },
        "instanceId": {
          "type": [
            "string",
            "null"
          ],
          "description": "Eddystone UID Instance ID.",
          "maxLength": 12,
          "minLength": 12
        },
        "url": {
          "type": [
            "string",
            "null"
          ],
          "description": "Eddystone URL address. Hex-encoded according to Eddystone specification."
        },
        "decodedUrl": {
          "type": [
            "string",
            "null"
          ],
          "description": "Eddystone URL address. Alias for `url` but in decoded format. `decodedUrl` takes precedence."
        },
        "rssi0m": {
          "type": [
            "array",
            "null"
          ],
          "description": "List of new Calibrated RSSI@0m values (Eddystone) for each TX power level the Device can use.",
          "deprecated": true,
          "items": {
            "type": "integer"
          }
        }
      }
    },
    "ConfigEid": {
      "type": "object",
      "description": "Eddystone-EID settings.",
      "properties": {
        "eidIdentityKey": {
          "description": "Eddystone-EID Identity Key.",
          "type": [
            "string",
            "null"
          ]
        },
        "eidRotationPeriodExponent": {
          "description": "Eddystone-EID rotation period exponent.",
          "type": [
            "integer",
            "null"
          ],
          "minimum": 0,
          "maximum": 15
        }
      }
    },
    "ConfigIBeacon": {
      "type": "object",
      "description": "iBeacon settings.",
      "properties": {
        "proximity": {
          "type": [
            "string",
            "null"
          ],
          "format": "UUID",
          "description": "iBeacon Proximity UUID."
        },
        "major": {
          "type": [
            "integer",
            "null"
          ],
          "format": "uint16",
          "minimum": 0,
          "maximum": 65535,
          "description": "iBeacon Major."
        },
        "minor": {
          "type": [
            "integer",
            "null"
          ],
          "format": "uint16",
          "minimum": 0,
          "maximum": 65535,
          "description": "iBeacon Minor."
        },
        "rssi1m": {
          "type": [
            "array",
            "null"
          ],
          "description": "List of new Calibrated RSSI@1m values (iBeacon) for each TX power level the Device can use.",
          "items": {
            "type": "integer"
          }
        }
      }
    },
    "ConfigLocksRequest": {
      "type": "object",
      "properties": {
        "locks": {
          "type": "object",
          "properties": {
            "roomNumber": {
              "$ref": "#/$defs/LockDetailsConfirmationId"
            },
            "temperatureMonitor": {
              "$ref": "#/$defs/LockDetailsConfirmationId"
            }
          }
        }
      }
    },
    "Dispenser": {
      "type": "object",
      "description": "Dispenser settings for UHH dispenser beacons. Maps to PIDs dispenser_model_id (0x917E) and dispenser_detection_params (0x917F). Requires soap_dispenser capability and firmware nrf52 >= 2.16.1.",
      "properties": {
        "model": {
          "type": "string",
          "description": "Dispenser model the beacon is mounted on. UNSET (0xFF) disables dispense detection.",
          "enum": [
            "ES8_GOJO",
            "ES10_GOJO",
            "GENERIC_UHH_MANUAL",
            "GENERIC_UHH_AUTO",
            "FMX12_GOJO",
            "FMX20_GOJO",
            "COMPACT_AUTO_ECOLAB",
            "COMPACT_MANUAL_ECOLAB",
            "CLASSIC_AUTO_ECOLAB",
            "CLASSIC_MANUAL_ECOLAB",
            "UNSET"
          ]
        },
        "detectionParams": {
          "type": "string",
          "description": "Hex-encoded binary blob (0-500 bytes) with detection algorithm parameters. Structure: uint16 params_id + uint8 model_id + uint8 algorithm_id + uint8[] params_data. Valid lengths: 0, 4, or >4 bytes.",
          "pattern": "^([0-9A-Fa-f]{2})*$",
          "maxLength": 1000
        }
      }
    },
    "DisplaySettings": {
      "type": "object",
      "description": "Device display settings.",
      "properties": {
        "ledIntensity": {
          "type": "number",
          "description": "LED light intensity, ranging from 0% (completely off) to 100% (maximum brightness).",
          "minimum": 0,
          "maximum": 100
        },
        "ledBlinkInterval": {
          "type": "number",
          "description": "The number of seconds between LED blinks.",
          "minimum": 1,
          "maximum": 255
        },
        "ledBlinkEnabled": {
          "type": "boolean",
          "description": "Indicates whether the LED light is enabled."
        },
        "temperatureUnit": {
          "type": "string",
          "description": "The unit for displaying temperature.",
          "enum": [
            "CELSIUS",
            "FAHRENHEIT"
          ]
        }
      }
    },
    "HumidityProbe": {
      "type": "object",
      "description": "Settings for a humidity probe.",
      "properties": {
        "alertMaxEnabled": {
          "type": "boolean",
          "description": "Indicates if the maximum humidity alert is enabled."
        },
        "alertMaxLevel": {
          "type": "integer",
          "description": "The maximum humidity level (in %) to trigger an alert.",
          "minimum": 0,
          "maximum": 100
        },
        "alertMinEnabled": {
          "type": "boolean",
          "description": "Indicates if the minimum humidity alert is enabled."
        },
        "alertMinLevel": {
          "type": "integer",
          "description": "The minimum humidity level (in %) to trigger an alert.",
          "minimum": 0,
          "maximum": 100
        },
        "sensorEnabled": {
          "type": "boolean",
          "description": "Indicates if the humidity sensor is enabled."
        }
      }
    },
    "HumidityProbesSettings": {
      "type": "object",
      "description": "Settings for humidity probes.",
      "properties": {
        "probe0": {
          "$ref": "#/$defs/HumidityProbe"
        }
      }
    },
    "IrReceiverSettings": {
      "type": "object",
      "description": "IR Receiver setting.",
      "properties": {
        "wakeUpInterval": {
          "type": "integer",
          "minimum": 0,
          "maximum": 255,
          "description": "Interval between detection attempts, encoded as u8. 0 - disabled. Encodes time using 2-bit scale + 6-bit mantissa: 0b00=seconds, 0b01=ms, 0b10=ms*10, 0b11=ms*100. Max 63 per scale (e.g. max 63 seconds, or 6300ms, or 63000ms)"
        },
        "maxListenInterval": {
          "type": "integer",
          "minimum": 0,
          "maximum": 255,
          "description": "Maximum duration to try and detect IR signal, encoded as u8. Encodes time using 2-bit scale + 6-bit mantissa: 0b00=seconds, 0b01=ms, 0b10=ms*10, 0b11=ms*100. Max 63 per scale (e.g. max 63 seconds, or 6300ms, or 63000ms)"
        },
        "disableOnNoMotion": {
          "type": "boolean",
          "description": "Whether or not to disable IR receiver when the beacon is stationary."
        }
      }
    },
    "IrTransmitterSettings": {
      "type": "object",
      "description": "IR Transmitter setting.",
      "properties": {
        "dutyCycle": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "Duty cycle used for the IR emission as a percentage"
        },
        "intensity": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "Power intensity for the IR emission as a percentage"
        },
        "protoV2": {
          "type": "boolean",
          "description": "Flag that enables IR Protocol V2"
        }
      }
    },
    "LocalAlertingSettings": {
      "type": "object",
      "description": "Device local alerting settings.",
      "properties": {
        "alertSamples": {
          "type": "integer",
          "description": "The number of samples considered for triggering alerts.",
          "minimum": 1,
          "maximum": 65535
        },
        "loggingFactor": {
          "type": "integer",
          "description": "Logging factor specifically used during alert mode.",
          "minimum": 1,
          "maximum": 65535
        },
        "armingState": {
          "type": "string",
          "description": "The current state of the device’s alert system.",
          "enum": [
            "ARMED",
            "PAUSED",
            "HALTED"
          ]
        },
        "armingDelay": {
          "type": "integer",
          "description": "Delay (in seconds) before the device transitions to the armed state.",
          "minimum": 0,
          "maximum": 3600
        },
        "deviceErrorSoundEnabled": {
          "type": "boolean",
          "description": "Indicates if the device error sound is enabled."
        },
        "sensorErrorSoundEnabled": {
          "type": "boolean",
          "description": "Indicates if sensor error sound is enabled."
        },
        "sensorOobSoundEnabled": {
          "type": "boolean",
          "description": "Indicates if sensor out-of-bound alert sound is enabled."
        },
        "temperatureProbes": {
          "$ref": "#/$defs/TemperatureProbesSettings"
        },
        "humidityProbes": {
          "$ref": "#/$defs/HumidityProbesSettings"
        }
      }
    },
    "LockDetailsConfirmationId": {
      "type": "string",
      "description": "The value included in the DeviceChangedEvent.UPDATED to confirm that a specific configuration has been applied on a device"
    },
    "LowBatterySettings": {
      "type": "object",
      "description": "Device low battery settings.",
      "properties": {
        "alertLevel": {
          "type": "integer",
          "description": "The battery level threshold (percentage) below which a low battery alert is triggered.",
          "minimum": 1,
          "maxi

# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kontaktio/refs/heads/main/json-schema/kontaktio-new-beacon-config-schema.json

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-new-beacon-config"
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.