Every API 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 apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
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 API
curl "https://apis.io/api/v1/apis/kontaktio-external-device-api"
All apis
curl "https://apis.io/api/v1/apis?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.
openapi: 3.2.0
info:
title: Device Management External Device API
x-logo:
url: https://kontakt.io/wp-content/themes/kontakt/dist/img/site-header/logo.svg
backgroundColor: '#FFFFFF'
version: '10'
description: 'This Kontakt.io API provides direct access to all Kio Cloud Device Management resources. It allows integrating device administration functionality into 3rd-party applications without the need to build all underlying logic from the ground up.
## Authentication
All requests must include a **JWT Bearer token** in the `Authorization` header, obtained via the [OAuth2 Client Credentials flow](https://developer.kontakt.io/docs/entity-management-integration-api/0255c5646ab01-authentication-o-auth2-client-credentials-flow).
> **Deprecated:** The `Api-Key` header is still accepted for backward compatibility but is deprecated and will be removed. Do not use it for new integrations.
Each API call requires the `Accept` header with the API version. **By default, set to the current stable version:** `application/vnd.com.kontakt+json;version=10`
'
contact:
name: Support
url: https://support.kontakt.io
email: support@kontakt.io
termsOfService: https://kontakt.io/legal-documents/terms-of-sale-and-service/
servers:
- url: https://dm-api.cloud.us.kontakt.io
description: Kio Cloud US region
- url: https://dm-api.cloud.uk.kontakt.io
description: Kio Cloud UK region
security:
- bearer_token: []
- api_key: []
tags:
- name: External Device
description: External Device feature is a method of adding arbitrary external devices to the system. Such devices have MAC, unique id, and other virtual attributes, but they cannot be managed (configured).
paths:
/device/delete:
post:
tags:
- External Device
summary: Delete an external device
description: This endpoint allows you to delete an external device. This operation is irreversible.
requestBody:
content:
application/x-www-form-urlencoded:
schema:
properties:
uniqueId:
description: List of external device Unique IDs to delete.
type: array
items:
$ref: '#/components/schemas/UniqueId'
required:
- uniqueId
responses:
'200':
description: OK
content:
application/vnd.com.kontakt+json; version=10:
schema:
type: object
properties:
message:
type: string
description: Success message.
example: Delete successful
required:
- message
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'422':
description: Unprocessable Entity - validation errors
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
parameters:
- $ref: '#/components/parameters/accept'
security:
- bearer_token: []
- api_key: []
/device/external:
post:
tags:
- External Device
summary: Create a single external device
description: 'External device represents device that exists outside the Kio Cloud platform. It can be imported to the Kio Cloud platform so the platform is aware of that device.
This process is synchronous, meaning the device is ready to use as soon as the API response from this endpoint is received.
'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewExternalDevice'
required: true
responses:
'200':
description: New external device created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Device'
'422':
description: Unable to process the request, e.g. invalid request body
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
/device/external/import:
post:
tags:
- External Device
summary: Import external devices
description: 'External device represents device that exists outside the Kio Cloud platform. It can be imported to the Kio Cloud platform so the platform is aware of that device.
This process is A-synchronous, so you should poll for status via `GET /device/external/import/{jobKey}` with `jobKey` taken from response.
To import devices the CSV file needs to be provided with the following columns.
| Value name | Description | CSV header | Required | Example |
|---------------|----------------|----------------|--------------|--------------|
| Unique Id | Free text value used to identify the device. If not provided, it is generated automatically. | uniqueId | No | A12dBB |
| MAC address | MAC address that uniquely identifies the device. Needs to be provided in format XX:XX:XX:XX:XX:XX. MAC address is always converted to uppercase for consistency. | mac | Yes | 08:00:04:02:00:00 |
| Product name | Name of the product in a human-readable way | product | Yes | External device |
| Product code | Code of the product that identifies its type | productCode | No | external_device |
| Tags | List of labels that can be used to group devices | tags | No | external,bulb,white |
| Notes | User defined description | alias | No | White bulb |
| Deployment status | Status of a device representing its point in the lifecycle. Allowed values are TO_BE_DEPLOYED, DEPLOYED, END_OF_LIFE | deployment.status | Yes | TO_BE_DEPLOYED |
| Device category | Category that the device belongs to. Allowed values are TAG, INFRASTRUCTURE | category | Yes | TAG |
'
requestBody:
content:
application/octet-stream:
schema:
type: string
description: CSV file with a list of devices to be imported.
format: binary
responses:
'200':
description: Import completed with success
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalDeviceImportResponse'
get:
tags:
- External Device
summary: Get status of the import process
description: Returns status of external devices import process started by the `POST /device/external/import` call
responses:
'200':
description: Import completed with success
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalDeviceImportResponse'
/device/external/import/{jobKey}:
delete:
tags:
- External Device
summary: Resets status of external devices import process started by the `POST /device/external/import` call
parameters:
- name: jobKey
in: path
description: The job id to be reset
required: true
schema:
type: string
responses:
'200':
description: Import process canceled
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalDeviceImportJobResetResponse'
components:
schemas:
OccupancyInclusionZones:
description: Inclusion zones. Areas included in occupancy counting. Applicable only in seat occupancy. Zone ids must match seat ids from Smart Location system. **It's a virtual attribute.**
type: array
items:
$ref: '#/components/schemas/Polygon'
Polygon:
type: object
properties:
id:
type: string
format: uuid
polygon:
type: array
items:
type: object
properties:
x:
type: integer
y:
type: integer
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
example: '00010002030405'
DeploymentInfo:
type: object
description: Information about device's deployment.
properties:
status:
$ref: '#/components/schemas/DeploymentStatus'
deploymentDate:
type:
- string
- 'null'
format: date-time
description: Timestamp of when the device was deployed (ISO 8601 format). Defaults to the current time when deployment info is updated without an explicit date.
example: '2026-04-10T12:00:00Z'
installerEmail:
type:
- string
- 'null'
description: Email address of the person who deployed the device.
example: john.doe@example.com
installerName:
type:
- string
- 'null'
description: First and last name of the person who deployed the device.
example: John Doe
required:
- status
ApiError:
type: object
title: API Error
properties:
id:
type: string
description: Internal API error code
example: API_ERROR_1693477316246
status:
type: number
description: HTTP response status code
example: 422
cause:
type: string
description: General cause of the error
example: ValidationError
message:
type: string
description: Error message with an explanation of the problem
example: Invalid value for field name
details:
type:
- array
- 'null'
description: Optional details
items:
type: object
properties:
field:
type: string
example: name
error:
type: string
description: Error name
example: INVALID_VALUE
message:
type: string
description: Error message
example: Invalid value for field name
StitchingPivotLocal:
description: Pivot (rotation point) of the image in the device image's local coordinates.
type: object
required:
- x
- y
properties:
x:
description: X coordinate in local coordinates, between 0 and 1. Where 0 is leftmost and 1 is rightmost.
type: number
format: decimal
minimum: 0
maximum: 1
example: 0.5
y:
description: Y coordinate in local coordinates, between 0 and 1. Where 0 is top and 1 is bottom.
type: number
format: decimal
minimum: 0
maximum: 1
example: 0.5
OccupancyPhysicalSettings:
type: object
x-stoplight:
id: ri25ewp162tv9
description: Occupancy settings. Only applicable to devices with occupancy capability.
properties:
sleepInterval:
type: integer
minimum: 0
maximum: 65535
default: 0
description: Occupancy sampling interval in seconds when in power-saving mode (outside of working hours).
minInterval:
type: integer
minimum: 0
maximum: 65535
default: 60
description: Min sampling interval in seconds. 0 means disabled.
calibration:
type: integer
minimum: -128
maximum: 127
default: 0
description: Common threshold delta (all occupancy modes). Allows to fine-tune the sensitivity relative to the newest default. For example, use -5 to lower the threshold by 5 units from the default (allow more detections), or conversely setting it to 5 adds 5 to that threshold, reducing false positives. In other words, this is a linear value, not a percentage.
sensitivity:
type: integer
minimum: 0
maximum: 100
deprecated: true
description: Deprecated! Please use the calibration parameter instead. Percentage of sensitivity. 0-100, 0 for very strict, 100 accept everything
model:
type: integer
description: "Detection model. \n\n0 - static occupancy. \n2 - traffic footfall."
footfallLine:
type: string
default: 28502800
description: Threshold line for footfall detection. [x0, y0, x1, y1] pixel coordinates for the line. Hex encoded.
footfallSensitivity:
type: integer
minimum: 0
maximum: 100
default: 40
deprecated: true
description: Deprecated! Please use the calibration parameter instead. Sensitivity for accepting footfall tracks. 0-100, 0 for very strict, 100 accept everything
LockDetailsConfirmationId:
type: string
description: The value included in the DeviceChangedEvent.UPDATED to confirm that a specific configuration has been applied on a device
example: ed26348a-e33e-428c-a343-33e0054ebdf9
PendingBeaconConfig:
description: Pending Beacon Configuration.
x-stoplight:
id: gnufpxhymraym
allOf:
- $ref: '#/components/schemas/BeaconConfig'
- type: object
properties:
created:
$ref: '#/components/schemas/CreatedDate'
updated:
$ref: '#/components/schemas/UpdatedDate'
uniqueId:
$ref: '#/components/schemas/UniqueId'
model:
$ref: '#/components/schemas/DeviceModel'
- $ref: '#/components/schemas/ConfigLocksResponse'
DeploymentStatus:
type: string
description: 'Current deployment status of this device - e.g. whether is it deployed or not.
`END_OF_LIFE` means the device is not going to be used anymore. Can occur for many reasons: battery dead, unserviceable device, contract with owning company was discontinued, etc.'
enum:
- TO_BE_DEPLOYED
- DEPLOYED
- END_OF_LIFE
NewExternalDevice:
type: object
properties:
uniqueId:
type: string
description: Unique ID of the new external device
mac:
type: string
description: MAC address of the new external device
example: AA:BB:12:34:18:38
bleMac:
type: string
description: BLE MAC address of the new external device
example: AA:BB:12:34:18:39
wifiMac:
type: string
description: Wi-Fi MAC address of the new external device
example: AA:BB:12:34:18:3A
eddystoneMac:
type: string
description: Eddystone MAC address of the new external device
example: AA:BB:12:34:18:3B
iBeaconMac:
type: string
description: iBeacon MAC address of the new external device
example: AA:BB:12:34:18:3C
productName:
type: string
description: Product name of the new external device
example: Somy AB-44
productCode:
type: string
description: Product code of the new external device
example: KNKT_product_code
alias:
type:
- string
- 'null'
description: Alternative description for the Device, stored only on Kontakt.io backend - it's not possible to read this value via Bluetooth directly from the Device itself. In Device Management App represented as a Notes.
tags:
description: Comma-separated list of maximum 20 user-defined labels (no longer than 32 characters).
type: array
maxItems: 20
uniqueItems: true
items:
type: string
maxLength: 32
deploymentStatus:
$ref: '#/components/schemas/DeploymentStatus'
category:
$ref: '#/components/schemas/DeviceCategory'
LocalAlertingSettings:
type: object
description: Device local alerting settings.
properties:
alertSamples:
type: integer
description: The number of samples considered for triggering alerts.
example: 15
minimum: 1
maximum: 65535
loggingFactor:
type: integer
description: Logging factor specifically used during alert mode.
example: 1
minimum: 1
maximum: 65535
armingState:
type: string
description: The current state of the device’s alert system.
enum:
- ARMED
- PAUSED
- HALTED
example: ARMED
armingDelay:
type: integer
description: Delay (in seconds) before the device transitions to the armed state.
example: 300
minimum: 0
maximum: 3600
deviceErrorSoundEnabled:
type: boolean
description: Indicates if the device error sound is enabled.
example: true
sensorErrorSoundEnabled:
type: boolean
description: Indicates if sensor error sound is enabled.
example: true
sensorOobSoundEnabled:
type: boolean
description: Indicates if sensor out-of-bound alert sound is enabled.
example: true
temperatureProbes:
$ref: '#/components/schemas/TemperatureProbesSettings'
humidityProbes:
$ref: '#/components/schemas/HumidityProbesSettings'
UniqueId:
description: Unique identifier of a device.
type: string
example: 11P10AvW
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.
**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`.
'
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.
Each value enables a specific telemetry field. Available fields depend on device hardware capabilities.
| Value | Description |
|-------|-------------|
| AIR_PRESSURE | Air pressure in Pa, as a float32 number |
| AIR_QUALITY | Air-Quality-Index (AQI) in units 0-254, 255 meaning invalid |
| BATTERY | Battery percentage, from 0% to 100%, with 255 meaning externally-powered |
| BLE_CHANNEL | BLE channel on which it is advertising: 0 - 40 |
| BLE_SCAN_RESULT | BLE scan results |
| BUTTON_CLICK | Seconds since the last button click, saturating at 0xFFFF |
| BUTTON_DOUBLE_CLICK | Seconds since the last double click, saturating at 0xFFFF |
| DOUBLE_TAP_EVENT | Seconds since the last double tap, saturating at 0xFFFF |
| GAS_SENSOR | Gas sensor reading |
| GPIO | GPIO state as a telemetry, not implemented |
| HUMIDITY | Relative humidity percentage 0-100, 255 meaning invalid |
| IDENTIFIED_BUTTON_CLICK | Click 8-bit counter, and seconds since the last button click, saturating at 0xFFFF |
| INOUT_COUNTER | In/out people counter |
| IR_STATS | IR scan statistics |
| LIGHT_LEVEL | Light level as a percentage: 0 - dark, 100 - sunny environment, 255 - invalid |
| LIGHT_LEVEL_LUX | Light level in lux, as an uint16 |
| LOGGING_ENABLED | Show if logging is enabled and if data is available for download |
| MOVEMENT_EVENT | Movement 8-bit counter, and seconds since the last movement click, saturating at 0xFFFF |
| MOVEMENT_THRESHOLD_EVENT | Seconds since the last movement, saturating at 0xFFFF |
| OCCUPANCY | Number of people measured by the detector: 0 - 254, 255 - invalid |
| PEOPLE_DETECTION | People detection |
| PIR_DETECTION | Seconds since the last PIR movement, saturating at 0xFFFF |
| PROXIMITY_REPORT | Proximity report |
| ROOM_NUMBER | Room number, either measured, or configured. Uint16 |
| RSSI_SCAN | RSSI scan results |
| SOAP_DISPENSER | Soap dispenser event |
| TAP_EVENT | Seconds since the last tap, saturating at 0xFFFF |
| TEMPERATURE | Temperature as signed 8-bit integer, from -128 to 127C |
| TEMPERATURE_16_BITS | Temperature as an FP8.8 signed fixed-point number |
| TWO_BUTTON_INFO | 2x click 8-bit counters, and seconds since the any button click, saturating at 0xFFFF |
| UTC_TIME | Unix timestamp, UTC time from 1970 in seconds |
| RAW_ACCELEROMETER | Sensitivity: 1/1000 of a g; X, Y, Z values in units of the sensitivity |
'
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
ExternalDeviceImportResult:
type: object
x-examples:
Example 1:
status: FAILURE
fileUrl: http://api.kontakt.io/storage/file?path=external-device-import/945ac1be-a543-4dde-8e2c-2d489d4f0dac.csv
errors:
deploymentStatus: Deployment status is required
category: Category is required
productName: Product name is required
mac: MAC address is required
properties:
status:
$ref: '#/components/schemas/ExternalDeviceImportStatus'
fileUrl:
type: string
description: URL pointing to the CSV file with the import result
errors:
type: object
description: List of errors related to the import process
additionalProperties:
type: string
description: Error description
description: Detailed result details of finished external devices import.
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.
example: 10
minimum: 1
maximum: 100
alertEnabled:
type: boolean
description: Indicates whether the low battery alert is enabled.
example: true
LocationInfo:
type: object
description: Information about device location.
properties:
campusId:
type: number
description: Campus identifier
example: 100
campusName:
type: string
description: Campus name
buildingId:
type: number
description: Building identifier
example: 100
buildingName:
type: string
description: Building name
floorId:
type: number
description: Floor identifier
example: 100
floorName:
type: string
description: Floor name
roomId:
type: number
description: Room identifier
example: 100
roomName:
type: string
description: Room name
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
EditableGatewayConfig:
description: Gateway (e.g. Portal Light) settings that can be changed via API
type: object
properties:
applications:
type: object
properties:
system:
type: object
properties:
wifiSsid:
type: string
description: Name of the WiFi network a gateway should connect to
minLength: 2
maxLength: 32
wifiProtocol:
type: string
description: WiFi authentication protocol that a gateway should use
enum:
- WPA_PSK
- WPA_EAP
- OPEN
wifiUserName:
type: string
description: When `wifiProtocol` is set to `WPA_EAP` this parameter represents PEAP MSCHAPv2 username. If `WPA_PSK` is used, this value will be ignored by a gateway.
maxLength: 256
wifiPassword:
type: string
description: When `wifiProtocol` is set to `WPA_EAP` this parameter represents PEAP MSCHAPv2 password. If `WPA_PSK` is used, this value will be ignored by a gateway.
maxLength: 63
apiHost:
type: string
description: DM API host URL.
format: uri
minLength: 1
apiKey:
type: string
description: API key for DM API (alphanumeric)
minLength: 1
dataHost:
type: string
description: Data host URL
format: uri
dataApiKey:
type: string
description: API key for Data host (alphanumeric)
otaUrl:
type: string
description: OTA update URL
format: uri
maxLength: 64
proxyURL:
type: string
description: Proxy URL for the gateway to connect to. Empty value disables proxying.
minLength: 0
maxLength: 64
default: ''
proxyPort:
type: integer
description: Proxy port for the gateway to connect to
minimum: 0
maximum: 65535
default: 80
eapType:
type: string
description: Extensible Authentication Protocol (EAP) for network access
enum:
- DEFAULT
- TLS
- TTLS
- PEAP
default: DEFAULT
ibeaconUUID:
type: string
format: uuid
description: "iBeacon UUID to broadcast. \n Broadcasting the iBeacon is disabled by default. To enable, the ibeaconUUID need to be set."
minLength: 36
maxLength: 36
default: 00000000-0000-0000-0000-000000000000
ibeacon_major:
type: integer
description: Major to use when broadcasting iBeacon frames.
default: 0
ibeacon_minor:
type: integer
description: Minor to use when broadcasting iBeacon frames.
default: 0
roomID:
type: integer
# --- truncated at 32 KB (80 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kontaktio/refs/heads/main/openapi/kontaktio-external-device-api-openapi.yml