Kontakt.io · Schema

New Gateway Config

CompanyIoTRTLSHealthcareAsset TrackingLocationOccupancyBluetoothDevice ManagementTelemetrySensorsStreaming
View JSON Schema on GitHub

JSON Schema

kontaktio-new-gateway-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-gateway-config-schema.json",
  "title": "New Gateway 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/NewGatewayConfig",
  "allOf": [
    {
      "$ref": "#/$defs/EditableGatewayConfig"
    },
    {
      "type": "object",
      "properties": {
        "uniqueId": {
          "description": "List of Gateway 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": [
            "GATEWAY"
          ]
        }
      }
    },
    {
      "$ref": "#/$defs/ConfigLocksRequest"
    }
  ],
  "$defs": {
    "ConfigLocksRequest": {
      "type": "object",
      "properties": {
        "locks": {
          "type": "object",
          "properties": {
            "roomNumber": {
              "$ref": "#/$defs/LockDetailsConfirmationId"
            },
            "temperatureMonitor": {
              "$ref": "#/$defs/LockDetailsConfirmationId"
            }
          }
        }
      }
    },
    "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",
                  "description": "Room ID used in location frame",
                  "default": 0
                },
                "tx_power": {
                  "type": "integer",
                  "description": "Tx power used by the gateway (allowed values are defined in documentation)"
                },
                "filtration_mask": {
                  "type": "integer",
                  "description": "Filtration mask is the second stage of frame filtration implemented in Portal light. Each bit in that mask defines whether to process a specific type of frames or omit them. \n Bit order is as follows: Mac filtration, Eddystone,iBeacon, Kontakt. \n The default value is 0b1111 (15 decimal), meaning that Kontakt frames, iBeacon, Eddystone and devices with Kontakt MAC will be sent to the cloud. It is possible to set this mask to process only selected types of frames/devices.",
                  "default": 15
                },
                "rssi_threshold": {
                  "type": "integer",
                  "description": "Rssi threshold filtration is the first stage of frame filtration implemented in Portal light. It means that if rssi filtration is on and set to desired value then all scans with lower rssi will be rejected.",
                  "default": -127
                },
                "bleAdvChannel": {
                  "type": "integer",
                  "description": "BLE advertising channel.\nAll channels advertising (0) is set as a default. Possibility to advertise only on one of three channels was added for Location Engine needs: 37, 38, 39 \n Other values such as 10,35 etc… will be treated as 0 - it means all channels advertising.",
                  "enum": [
                    0,
                    37,
                    38,
                    39
                  ]
                },
                "bleScanChannel": {
                  "type": "integer",
                  "description": "BLE scanning channel.\nAll channels scanning (0) is set as a default. Possibility to scan only on one of three channels was added for Location Engine needs: 37, 38, 39 \n Other values such as 10,35 etc… will be treated as 0 - it means all channels scanning.",
                  "enum": [
                    0,
                    37,
                    38,
                    39
                  ]
                },
                "dm_poll_interval_s": {
                  "type": "integer",
                  "description": "DM poll interval in seconds."
                },
                "defaultNTP": {
                  "type": "string",
                  "description": "Default NTP server URL.",
                  "format": "uri",
                  "minLength": 1
                },
                "secondNTP": {
                  "type": "string",
                  "description": "Secondary NTP server URL.",
                  "format": "uri",
                  "minLength": 1
                },
                "apiCACertificate": {
                  "type": "string",
                  "description": "API CA certificate.",
                  "minLength": 1
                },
                "wpa2Certificate": {
                  "type": "string",
                  "description": "Enterprise WiFi. Base64-encoded P12 certificate. \n Keystore in p12/pfx format (with certificate and private key)"
                },
                "wpa2CertificatePassword": {
                  "type": "string",
                  "description": "Enterprise WiFi. Certificate password. \n Password to the keystore"
                },
                "wpa2PrivateKeyAlias": {
                  "type": "string",
                  "description": "Enterprise WiFi. Alias for private key. \n Private key alias specified by --name param in openssl utility",
                  "default": "1"
                },
                "wpa2CACertificate": {
                  "type": "string",
                  "description": "Enterprise WiFi. For deployment and client-specific requirement there was a need to add CA certificates to validate the server. \n Sent as a string in .pem format with header -----BEGIN CERTIFICATE----- and footer ----END CERTIFICATE-----"
                },
                "beacon_packets_mask": {
                  "type": "integer",
                  "description": "Beacon packets mask."
                },
                "led_intensity": {
                  "type": "integer",
                  "description": "LED brightness can be adjusted from 0% (completely off) to 100% - maximum brightness.",
                  "minimum": 0,
                  "maximum": 100,
                  "default": 10
                },
                "blink_interval_s": {
                  "type": "integer",
                  "description": "Blink interval in seconds.",
                  "minimum": 0,
                  "maximum": 3600
                },
                "ir_duty_cycle": {
                  "type": "integer",
                  "description": "IR duty cycle (0-100%).",
                  "minimum": 0,
                  "maximum": 100
                },
                "ir_intensity": {
                  "type": "integer",
                  "description": "IR intensity (0-100%).",
                  "minimum": 0,
                  "maximum": 100
                },
                "device_name": {
                  "type": "string",
                  "description": "Device name.",
                  "minLength": 1
                },
                "adv_int": {
                  "type": "integer",
                  "description": "Advertising interval. Must be between 160 and 16384.",
                  "minimum": 160,
                  "maximum": 16384
                },
                "debug_features_mask": {
                  "type": "integer",
                  "description": "Debug features mask."
                },
                "bound_device": {
                  "type": "string",
                  "description": "Bound device must be a lowercase MAC address.\nOnly both bound_device and bound_device_password can be set to a non-blank string at the same time or both be set to blank."
                },
                "bound_device_password": {
                  "type": "string",
                  "description": "Bound device password. Must be provided together with bound_device."
                },
                "relay_mode": {
                  "type": "integer",
                  "description": "Relay mode."
                },
                "mqtt_auth": {
                  "type": "string",
                  "description": "MQTT authentication credentials."
                },
                "ir_config_mask": {
                  "type": "integer",
                  "description": "IR configuration mask.",
                  "minimum": 0,
                  "maximum": 255
                },
                "data_interval_ms": {
                  "type": "integer",
                  "description": "Target interval between scans uploads, in ms. 0 means as fast as possible.",
                  "minimum": 0,
                  "maximum": 65535,
                  "default": 2000
                }
              }
            }
          }
        }
      }
    },
    "LockDetailsConfirmationId": {
      "type": "string",
      "description": "The value included in the DeviceChangedEvent.UPDATED to confirm that a specific configuration has been applied on a device"
    },
    "UniqueId": {
      "description": "Unique identifier of a device.",
      "type": "string"
    }
  }
}

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-gateway-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.