@iotize/tap
Version:
IoTize Device client for Javascript
1,991 lines • 124 kB
JavaScript
/**
* This file has been generated from JSON file C:\Users\scale\dev\iotize\bitbucket\standalone\iotize-device-client.js\assets\schema\v1\tap-config.json
*/
export default {
"title": "Tap configurator config",
"$id": "http://iotize.com/schemas/v1/tap-config.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"required": ["config"],
"additionalProperties": false,
"properties": {
"meta": {
"type": "object",
"title": "TapConfiguratorOptions",
"properties": {
"version": {
"type": "string",
"pattern": "^(\\d+)\\.(\\d+)\\.(\\d+)$"
},
"options": {
"type": "object",
"description": "Options for the configurator engine",
"properties": {
"skipFactoryReset": {
"type": "boolean",
"description": "If set to true, configurator will not perform a factory reset before configuration. Values that are not written in this configuration will not be removed.",
"default": false
}
}
}
},
"additionalProperties": true
},
"config": {
"type": "object",
"title": "TapConfig",
"additionalProperties": false,
"required": ["version"],
"properties": {
"version": {
"$ref": "#/definitions/semanticVersion"
},
"configFormatVersion": {
"type": "integer"
},
"target": {
"title": "TargetConfig",
"oneOf": [
{
"$ref": "#/definitions/TapnpassTargetConfig"
},
{
"$ref": "#/definitions/MCUTargetConfig"
}
]
},
"wireless": {
"title": "Wireless Config",
"type": "object",
"additionalProperties": false,
"properties": {
"options": {
"type": "object",
"title": "WirelessOptionsConfig",
"additionalProperties": false,
"properties": {
"inactivityTimeout": {
"$ref": "#/definitions/uint8"
},
"authorizedProtocols": {
"type": "array",
"items": {
"$ref": "#/definitions/HostProtocol"
}
},
"pairing": {
"$ref": "#/definitions/WirelessPairingConfig"
}
}
},
"protocols": {
"type": "object",
"title": "WirelessProtocolsConfig",
"additionalProperties": false,
"properties": {
"ble": {
"title": "BleProtocolConfig",
"type": "object",
"required": [],
"properties": {
"pairingMode": {
"deprecated": true,
"type": "boolean",
"description": "True to require BLE pairing. Deprecated, use wireless.options.pairing option instead."
}
}
},
"lora": {
"title": "LoraProtocolConfig",
"type": "object",
"required": [],
"properties": {
"config": {
"$ref": "#/definitions/LoraConfig"
},
"ids": {
"$ref": "#/definitions/hexString"
}
}
},
"mqtt": {
"title": "MqttProtocolConfig",
"type": "object",
"additionalProperties": false,
"properties": {
"brokerCertificate": {
"title": "Broker certificate",
"description": "MQTT broker certificate",
"$ref": "#/definitions/Certificate"
},
"brokerHostname": {
"type": "string",
"description": "You can either specify the broker hostname or protocol://hostname. If protocol is not specified, it will be deduce from configured port."
},
"brokerPort": {
"type": "string",
"description": "Broker port. Default MQTT port are 1883 for non secure and 8883 to use with TLS."
},
"clientId": {
"type": "string",
"description": "MQTT client identifier."
},
"password": {
"type": "string",
"description": "Required only if your broker requires a username/password authentification"
},
"relayNetKey": {
"type": "string",
"deprecated": true,
"description": "@deprecated This option is deprecated. Use request topic and response topic instead."
},
"topicPrefix": {
"type": "string",
"deprecated": true,
"description": "@deprecated This option is deprecated. Use request topic and response topic instead."
},
"requestTopic": {
"type": "string",
"description": "Topic used to send requests for LwM2M over MQTT. Tap will subscribe to this topic and wait for incomming LwM2M requests."
},
"responseTopic": {
"type": "string",
"description": "Topic used to send response for LwM2M over MQTT. Tap will publish LwM2M responses on this."
},
"username": {
"type": "string",
"description": "Required only if your broker requires a username/password authentification"
}
}
},
"nfc": {
"title": "NfcProtocolConfig",
"type": "object",
"required": [],
"additionalProperties": false,
"properties": {
"autoLogProfileId": {
"$ref": "#/definitions/uint16"
},
"connectionPriority": {
"$ref": "#/definitions/NfcConnectionPriority"
},
"pairingMode": {
"deprecated": true,
"description": "This option has been moved. Use wireless.options.pairing option instead",
"$ref": "#/definitions/NfcPairingModeConfig",
"tsType": "NfcPairingModeConfig"
}
}
},
"wifi": {
"title": "WifiProtocolConfig",
"type": "object",
"additionalProperties": false,
"required": [],
"properties": {
"ip": {
"$ref": "#/definitions/IPV4Address"
},
"gatewayIp": {
"$ref": "#/definitions/IPV4Address"
},
"key": {
"tsType": "string",
"type": "string",
"description": "WEP/WPA2 key of the Wi-Fi network access point",
"maxLength": 64,
"minLength": 8
},
"keyVisibility": {
"$ref": "#/definitions/WifiKeyVisibility"
},
"mask": {
"$ref": "#/definitions/IPV4AddressMask"
},
"mode": {
"$ref": "#/definitions/WifiMode"
},
"protocol": {
"type": "array",
"items": {
"$ref": "#/definitions/WifiProtocol"
}
},
"countryCode": {
"description": "Country code ISO 3166",
"type": "integer",
"maximum": 999,
"minimum": 0
},
"ssid": {
"tsType": "string",
"description": "Wi-Fi SSID",
"type": "string",
"maxLength": 32,
"minLength": 1
},
"ssidVisibility": {
"$ref": "#/definitions/WifiSSIDVisibility"
},
"txPower": {
"$ref": "#/definitions/uint8"
},
"dnsIp": {
"$ref": "#/definitions/IPV4Address"
}
}
},
"ethernet": {
"title": "EthernetProtocolConfig",
"type": "object",
"required": [],
"additionalProperties": false,
"properties": {
"dnsIp": {
"$ref": "#/definitions/IPV4Address"
}
}
}
}
}
}
},
"slaveServer": {
"$ref": "#/definitions/SlaveServerConfig"
},
"ports": {
"description": "Communication ports",
"type": "object",
"additionalProperties": false,
"properties": {
"ethernet": {
"$ref": "#/definitions/EthernetConfig"
}
}
},
"application": {
"$ref": "#/definitions/ApplicationConfig"
},
"jvm": {
"$ref": "#/definitions/JVMConfig"
},
"cloud": {
"$ref": "#/definitions/CloudConfig"
},
"tap": {
"$ref": "#/definitions/TapOptions"
},
"data": {
"type": "object",
"additionalProperties": false,
"title": "DataConfig",
"properties": {
"profiles": {
"type": "array",
"items": {
"type": "object",
"oneOf": [
{
"$ref": "#/definitions/specialprofile"
},
{
"$ref": "#/definitions/anonymousprofile"
},
{
"$ref": "#/definitions/profile"
}
]
}
},
"bundles": {
"type": "array",
"items": {
"type": "object",
"title": "BundleConfig",
"required": ["id"],
"properties": {
"name": {
"$id": "#/properties/config/properties/schema/properties/bundles/items/properties/name",
"type": "string",
"title": "Bundle name",
"default": "",
"examples": ["Sensors"],
"pattern": "^(.*)$"
},
"id": {
"$id": "#/properties/config/properties/schema/properties/bundles/items/properties/id",
"type": "integer",
"title": "Bundle id",
"default": 0,
"minimum": 0,
"maximum": 65535,
"examples": [1]
},
"dataLog": {
"type": "object",
"default": {
"period": 0
},
"required": ["period"],
"properties": {
"period": {
"type": "integer",
"minimum": 0,
"description": "Data log period acquisition in seconds"
}
}
},
"features": {
"type": "array",
"items": {
"$ref": "#/definitions/SpecialFeature"
}
},
"variables": {
"type": "array",
"items": {
"title": "VariableConfig",
"anyOf": [
{
"$ref": "#/definitions/TargetVariable"
},
{
"$ref": "#/definitions/ModbusVariable"
},
{
"$ref": "#/definitions/InTapVariable"
},
{
"$ref": "#/definitions/GPIOVariable"
}
]
}
},
"acls": {
"$id": "#/properties/config/properties/schema/properties/bundles/items/properties/acls",
"type": "object",
"title": "AclMapConfig",
"additionalProperties": {
"$id": "#/properties/config/properties/schema/properties/bundles/items/properties/acls/properties/anonymous",
"type": "object",
"title": "AclConfig",
"required": ["read", "write"],
"additionalProperties": false,
"properties": {
"read": {
"$id": "#/properties/config/properties/schema/properties/bundles/items/properties/acls/properties/anonymous/properties/read",
"type": "boolean",
"description": "Grant read right",
"default": false,
"examples": [true]
},
"write": {
"$id": "#/properties/config/properties/schema/properties/bundles/items/properties/acls/properties/anonymous/properties/write",
"type": "boolean",
"description": "Grant write right",
"default": false,
"examples": [false]
}
}
}
}
}
}
}
}
}
}
}
},
"definitions": {
"TargetConfig.Protocol.SWDConfig": {
"title": "SWDProtocolConfig",
"type": "object",
"required": ["type"],
"additionalProperties": false,
"properties": {
"type": {
"type": "string",
"enum": ["SWD"],
"default": "SWD"
}
}
},
"TargetConfig.Protocol.NoneConfig": {
"title": "NoneProtocolConfig",
"type": "object",
"required": ["type"],
"additionalProperties": false,
"properties": {
"type": {
"type": "string",
"enum": ["NONE"],
"default": "NONE"
}
}
},
"TargetConfig.Protocol.S3PConfig": {
"title": "S3PProtocolConfig",
"type": "object",
"required": ["type", "config"],
"additionalProperties": false,
"properties": {
"type": {
"enum": ["S3P"],
"default": "S3P"
},
"config": {
"title": "S3PConfig",
"type": "object",
"required": ["mode", "delay"],
"additionalProperties": false,
"properties": {
"mode": {
"$ref": "#/definitions/S3PModeConfig"
},
"delay": {
"$ref": "#/definitions/uint8"
}
}
}
}
},
"TargetConfig.Protocol.ModbusConfig": {
"title": "ModbusProtocolConfig",
"type": "object",
"required": ["type"],
"additionalProperties": false,
"properties": {
"type": {
"enum": ["MODBUS"],
"default": "MODBUS"
},
"config": {
"$ref": "#/definitions/ModbusConfig"
}
}
},
"TargetConfig.Protocol.ModbusTcpConfig": {
"title": "ModbusTcpProtocolConfig",
"type": "object",
"required": ["type"],
"additionalProperties": false,
"properties": {
"type": {
"enum": ["MODBUS_TCP"],
"default": "MODBUS_TCP"
},
"config": {
"$ref": "#/definitions/ModbusTcpConfig"
}
}
},
"TargetConfig.Protocol.DirectIOConfig": {
"title": "DirectIOProtocolConfig",
"type": "object",
"required": ["type"],
"additionalProperties": false,
"properties": {
"type": {
"enum": ["DIRECT_IO"],
"default": "DIRECT_IO"
}
}
},
"TargetConfig.Protocol.SerialConfig": {
"title": "SerialProtocolConfig",
"type": "object",
"required": ["type"],
"additionalProperties": false,
"properties": {
"type": {
"enum": ["SERIAL"],
"default": "SERIAL"
},
"config": {
"type": "object",
"required": ["serial"],
"additionalProperties": true,
"properties": {
"serial": {
"$ref": "#/definitions/TargetSerialModbusConfigurationConfig.Serial"
}
}
}
}
},
"TargetConfig.Protocol.CustomConfig": {
"title": "CustomProtocolConfig",
"type": "object",
"required": ["type"],
"additionalProperties": false,
"properties": {
"type": {
"enum": ["CUSTOM"],
"default": "CUSTOM"
},
"config": {
"$ref": "#/definitions/hexString"
}
}
},
"TargetConfig.Protocol.GPIOConfig": {
"title": "GPIOProtocolConfig",
"description": "Deprecated. Use DirectIO protocol instead.",
"type": "object",
"required": ["type"],
"additionalProperties": false,
"properties": {
"type": {
"enum": ["GPIO"],
"default": "GPIO"
}
}
},
"TargetConfig.Protocol.CanConfig": {
"title": "CanProtocolConfig",
"type": "object",
"required": ["type"],
"additionalProperties": false,
"properties": {
"type": {
"enum": ["CAN"],
"default": "CAN"
},
"config": {
"$ref": "#/definitions/CanConfig"
}
}
},
"ApplicationConfig": {
"title": "ApplicationConfig",
"description": "Options related to the application that communicates with this Tap",
"type": "object",
"required": [],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"title": "Application name",
"description": "Application name (name will be broadcast with BLE or WiFi)",
"default": "TAP",
"examples": ["Sensor demo"],
"maxLength": 32,
"minLength": 1
},
"uri": {
"oneOf": [
{
"title": "ApplicationUriConfig",
"type": "object",
"required": ["value", "type"],
"additionalProperties": false,
"properties": {
"type": {
"$ref": "#/definitions/AppPathType"
},
"value": {
"type": "string",
"maxLength": 64
}
}
},
{
"type": "string",
"title": "Application url",
"description": "Application url loaded by Tap Manager",
"default": "",
"examples": ["http://yourappyurl.com"],
"maxLength": 128
}
]
},
"universalLink": {
"type": "string",
"title": "Universal link",
"default": "",
"examples": ["https://iotize.com"],
"maxLength": 128
},
"productCode": {
"description": "Product code. It can be used to identify which kind of target this Tap is linked to. It's used by multi tap configuration applications.",
"type": "string",
"maxLength": 32,
"default": "",
"examples": ["light", "motor-sensors"]
},
"data": {
"$ref": "#/definitions/hexString"
}
}
},
"BaseVariable": {
"title": "BaseVariableConfig",
"type": "object",
"required": ["id"],
"properties": {
"id": {
"type": "integer",
"title": "Variable id",
"minimum": 0,
"maximum": 65535,
"default": 0,
"examples": [1]
},
"length": {
"type": "integer",
"description": "Variable length (number of items) > 1 if it's an array",
"default": 1,
"minimum": 0,
"maximum": 65535,
"examples": [1]
},
"meta": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"title": "Variable name",
"default": "",
"examples": ["Temperature"],
"pattern": "^(.*)$",
"maxLength": 50,
"minLength": 0
},
"unit": {
"type": "string",
"title": "Unit",
"pattern": "^(.*)$",
"maxLength": 30,
"minLength": 0
}
}
},
"rawMeta": {
"$ref": "#/definitions/hexString"
},
"metaDataLength": {
"type": "integer",
"minimum": 0,
"maximum": 200,
"description": "Size (in bytes) reserved for variable meta data"
}
}
},
"TargetVariable": {
"title": "TargetVariableConfig",
"additionalProperties": false,
"required": ["id", "address", "dataType", "domain"],
"properties": {
"id": true,
"meta": true,
"rawMeta": true,
"address": true,
"domain": true,
"dataType": true,
"length": true,
"metaDataLength": true
},
"allOf": [
{
"$ref": "#/definitions/BaseVariable"
},
{
"type": "object",
"additionalProperties": true,
"required": ["address", "dataType", "domain"],
"properties": {
"dataType": {
"$ref": "#/definitions/VariableTypeConfig.Data"
},
"domain": {
"default": "TARGET",
"enum": ["TARGET"]
},
"address": {
"$ref": "#/definitions/address"
}
}
}
]
},
"InTapVariable": {
"title": "InTapVariableConfig",
"type": "object",
"allOf": [
{
"$ref": "#/definitions/BaseVariable"
},
{
"type": "object",
"required": ["domain", "dataType"],
"properties": {
"domain": {
"enum": ["IN_TAP_STATIC", "IN_TAP_VOLATIL"]
},
"dataType": {
"$ref": "#/definitions/VariableTypeConfig.Data"
},
"value": {
"oneOf": [
{
"oneOf": [
{
"$ref": "#/definitions/hexString"
},
{
"type": "number"
}
]
},
{
"type": "array",
"description": "Initial variable value for each item (according to variable length).",
"items": {
"oneOf": [
{
"$ref": "#/definitions/hexString"
},
{
"type": "number"
}
]
}
}
]
}
}
}
]
},
"GPIOVariable": {
"title": "GPIOVariableConfig",
"type": "object",
"additionalProperties": true,
"allOf": [
{
"$ref": "#/definitions/BaseVariable"
},
{
"type": "object",
"required": ["gpio"],
"properties": {
"gpio": {
"$ref": "#/definitions/GPIOMapping"
}
}
}
]
},
"ModbusVariable": {
"title": "ModbusVariableConfig",
"type": "object",
"additionalProperties": true,
"allOf": [
{
"$ref": "#/definitions/BaseVariable"
},
{
"type": "object",
"required": ["modbusAddress"],
"properties": {
"modbusAddress": {
"$ref": "#/definitions/ModbusVariableAddress"
},
"domain": {
"enum": ["TARGET"]
},
"dataType": {
"$ref": "#/definitions/VariableTypeConfig.Data"
}
}
}
]
},
"anonymousprofile": {
"title": "AnonymousProfileConfig",
"required": ["username"],
"properties": {
"username": {
"enum": ["anonymous"]
}
}
},
"specialprofile": {
"required": ["username"],
"title": "SpecialProfileConfig",
"type": "object",
"additionalProperties": false,
"properties": {
"key": {
"$ref": "#/definitions/userKey"
},
"password": {
"type": "string",
"default": "",
"examples": ["admin"],
"pattern": "^(.*)$",
"maxLength": 16
},
"username": {
"$ref": "#/definitions/SpecialUsername"
},
"lifeTime": {
"$id": "#/properties/config/properties/schema/properties/profiles/properties/admin/properties/lifeTime",
"type": "integer",
"title": "Session Lifetime",
"description": "Session lifetime in seconds",
"minimum": 0,
"maximum": 65535,
"default": 300,
"examples": [200]
},
"salt": {
"$id": "#/properties/config/properties/schema/properties/profiles/properties/admin/properties/salt",
"type": "integer",
"title": "Profile salt",
"default": 0,
"examples": [220238910087]
},
"users": {
"type": "array",
"items": {
"$ref": "#/definitions/user"
}
}
}
},
"user": {
"required": ["id", "username"],
"title": "UserConfig",
"type": "object",
"additionalProperties": true,
"properties": {
"key": {
"$ref": "#/definitions/userKey"
},
"password": {
"type": "string",
"default": "",
"examples": ["admin"],
"pattern": "^(.*)$",
"maxLength": 16
},
"username": {
"type": "string",
"description": "Username",
"default": "",
"examples": ["admin"],
"pattern": "^(.*)$",
"maxLength": 16
},
"id": {
"type": "integer",
"title": "Profile id",
"default": 0,
"minimum": 0,
"maximum": 65533,
"examples": [1]
},
"salt": {
"type": "integer",
"title": "Profile salt",
"default": 0,
"examples": [220238910087]
}
}
},
"profile": {
"title": "ProfileConfig",
"allOf": [
{
"$ref": "#/definitions/user"
},
{
"type": "object",
"properties": {
"lifeTime": {
"type": "integer",
"title": "Session Lifetime",
"tsType": "number",
"description": "Session lifetime in seconds",
"minimum": 0,
"maximum": 65535,
"default": 300,
"examples": [200]
},
"users": {
"type": "array",
"items": {
"$ref": "#/definitions/user"
}
}
}
}
]
},
"userKey": {
"examples": ["0x99C243D5F82EB712C281D5FFE7D12097"],
"allOf": [
{
"$ref": "#/definitions/hexString"
},
{
"type": "string",
"tsType": "any",
"maxLength": 74,
"minLength": 34
}
]
},
"JVMConfig": {
"title": "JvmConfig",
"type": "object",
"additionalProperties": false,
"properties": {
"codeSize": {
"description": "JVM code size in bytes. If not set, code size will be deduced from actual code size.",
"$ref": "#/definitions/uint32"
},
"code": {
"description": "Compressed byte code content",
"$ref": "#/definitions/hexString"
},
"profileId": {
"type": "integer",
"description": "User profile id"
}
}
},
"CloudConfig": {
"type": "object",
"title": "CloudConfig",
"additionalProperties": false,
"properties": {
"platform": {
"$ref": "#/definitions/CloudPlatform"
},
"dataLog": {
"type": "object",
"additionalProperties": false,
"properties": {
"uploadPeriod": {
"$ref": "#/definitions/uint32"
},
"mqttPublishTopic": {
"type": "string"
},
"mqttSubscribeTopic": {
"type": "string"
}
}
}
}
},
"EthernetConfig": {
"title": "EthernetConfig",
"type": "object",
"additionalProperties": false,
"properties": {
"ip": {
"$ref": "#/definitions/IPV4Address"
},
"ipMask": {
"$ref": "#/definitions/IPV4AddressMask"
},
"gatewayIp": {
"$ref": "#/definitions/IPV4Address"
}
}
},
"ModbusTcpModbusConfig": {
"title": "EthernetModbusConfig",
"additionalProperties": false,
"type": "object",
"properties": {
"defaultSlaveAddress": {
"title": "Default slave address",
"tsType": "string",
"$ref": "#/definitions/IPV4Address",
"description": "Default slave address for Modbus TCP protocol"
},
"port": {
"title": "Port",
"tsType": "number",
"type": "integer",
"description": "Port for Modbus TCP protocol",
"default": 502,
"minimum": 0,
"maximum": 65535
},
"timeout": {
"title": "Timeout",
"tsType": "number",
"description": "Timeout for Modbus TCP protocol",
"type": "integer",
"default": 100,
"minimum": 0,
"maximum": 3000
},
"firstRegisterAddress": {
"title": "First register address",
"tsType": "number",
"description": "First register address (0 or 1)",
"type": "integer",
"default": 0,
"minimum": 0,
"maximum": 1
}
}
},
"TapOptions": {
"type": "object",
"title": "Tap Options",
"additionalProperties": false,
"properties": {
"certificate": {
"type": "object",
"required": [],
"additionalProperties": false,
"properties": {
"privateKey": {
"title": "Device private key",
"description": "Device private key. This key is private and must not be shared.",
"$ref": "#/definitions/Certificate"
},
"publicKey": {
"title": "Device public key",
"$ref": "#/definitions/Certificate"
},
"rootKey": {
"title": "Root certificate",
"description": "Public key certificate that identifies a root certificate authority (CA)",
"$ref": "#/definitions/Certificate"
}
}
},
"powerOptimization": {
"$ref": "#/definitions/LowPowerOptimizationLevel"
},
"scram": {
"type": "object",
"required": [],
"additionalProperties": false,
"properties": {
"hashIteration": {
"$ref": "#/definitions/uint16"
}
}
},
"security": {
"$ref": "#/definitions/SecurityOptions"
},
"time": {
"type": "object",
"title": "TapTimeConfig",
"description": "Configure time zone and NTP server for your Tap",
"required": [],
"additionalProperties": false,
"properties": {
"ntpServer": {
"title": "NTP server url",
"type": "string",
"tsType": "string",
"description": "URL of the NTP server for retrieving Universal Coordinated Time. (UTC)",
"maxLength": 100
},
"zone": {
"title": "Time zone",
"type": "string",
"tsType": "string",
"description": "Time zone\nExpecting a POSIX-style TZ string\nBlank string means revert to default Universal Time = 'UTC0'\nsee https://www.iana.org/time-zones for more information",
"examples": ["", "UTC-1", "CST-8", "EST+5EDT,M4.1.0/2,M10.5.0/2"],
"maxLength": 64
}
}
},
"autoRebootTimeout": {
"type": "integer",
"default": 0
},
"maxLowPowerTime": {
"type": "integer",
"default": 0
}
}
},
"MCUTargetConfig": {
"title": "MCU Target config",
"required": ["type", "protocol"],
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"enum": ["MCU"],
"default": "MCU"
},
"firmwareVersion": {
"$ref": "#/definitions/semanticVersion"
},
"protocol": {
"title": "MCUTargetProtocolConfig",
"oneOf": [
{
"$ref": "#/definitions/TargetConfig.Protocol.SWDConfig"
},
{
"$ref": "#/definitions/TargetConfig.Protocol.NoneConfig"
},
{
"$ref": "#/definitions/TargetConfig.Protocol.S3PConfig"
},
{
"$ref": "#/definitions/TargetConfig.Protocol.ModbusConfig"
},
{
"$ref": "#/definitions/TargetConfig.Protocol.ModbusTcpConfig"
},
{
"$ref": "#/definitions/TargetConfig.Protocol.DirectIOConfig"
},
{
"$ref": "#/definitions/TargetConfig.Protocol.SerialConfig"
},
{
"$ref": "#/definitions/TargetConfig.Protocol.GPIOConfig"
},
{
"$ref": "#/definitions/TargetConfig.Protocol.CustomConfig"
},
{
"$ref": "#/definitions/TargetConfig.Protocol.CanConfig"
}
]
}
}
},
"TapnpassTargetConfig": {
"title": "Tapnpass Target config",
"required": ["type", "protocol"],
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"enum": ["TAPNPASS"],
"default": "TAPNPASS"
},
"firmwareVersion": {
"$ref": "#/definitions/semanticVersion"
},
"protocol": {
"type": "object",
"additionalProperties": false,
"properties": {
"config": {
"oneOf": [
{
"$ref": "#/definitions/TapnpassProtocolConfigurationConfig"
}
]
}
}
}
}
},
"SpecialUsername": {
"title": "SpecialUsername config",
"enum": ["admin", "supervisor"]
},
"S3PModeConfig": {
"enum": ["INDEXED", "EMULATION"],
"title": "S3P Mode Config"
},
"ModbusConfig": {
"title": "ModbusProtocolConfig",
"type": "object",
"additionalProperties": false,
"required": ["modbus", "serial"],
"properties": {
"modbus": {
"$ref": "#/definitions/TargetSerialModbusConfigurationConfig.Modbus"
},
"serial": {
"$ref": "#/definitions/TargetSerialModbusConfigurationConfig.Serial"
},
"usb": {
"$ref": "#/definitions/TapnpassProtocolConfigurationConfig.Usb"
}
}
},
"CanConfig": {
"title": "CanConfig",
"type": "object",
"required": ["frequency", "mode", "filter", "code", "mask"],
"additionalProperties": false,
"properties": {
"frequency": {
"$ref": "#/definitions/uint32",
"description": "Frequency in kbps"
},
"mode": {
"title": "CanModeConfig",
"type": "string",
"enum": ["NORMAL", "NO_ACK", "LISTEN"],
"default": "NORMAL"
},
"filter": {
"title": "CanFilterConfig",
"type": "string",
"enum": ["SINGLE", "DUAL"],
"default": "SINGLE"
},
"code": {
"$ref": "#/definitions/hexString",
"examples": ["0x00000000"],
"maxLength": 10
},
"mask": {
"$ref": "#/definitions/hexString",
"maxLength": 10
}
}
},
"ModbusTcpConfig": {
"title": "ModbusTcpConfig",
"type": "object",
"additionalProperties": false,
"required": [],
"properties": {
"modbus": {
"$ref": "#/definitions/ModbusTcpModbusConfig"
}
}
},
"GPIOMapping": {
"title": "GPIO mapping config",
"enum": [
"RST",
"TDI",
"TDO",
"SWDCK",
"SWDIO",
"SCL_FACTORYRST",
"EXT_A2",
"EXT_A3",
"EXT_A4",
"EXT_A5",
"EXT_A6",
"EXT_A7",
"EXT_A8",
"EXT_A9",
"EXT_A10",
"EXT_A11",
"EXT_B2",
"EXT_B3",
"EXT_B4",
"EXT_B5",
"EXT_B6",
"EXT_B7",
"EXT_B8",
"EXT_B9",
"EXT_B10",
"EXT_B11"
]
},
"SpecialFeature": {
"title": "SpecialFeature config",
"type": "string",
"examples": ["SWD_DIRECT_ACCESS"],
"enum": [
"SWD_DIRECT_ACCESS",
"SERIAL_ACCESS",
"MODBUS_DIRECT_ACCESS",
"TAPNPASS_CONTROL_ACCESS",
"SP_CODEEXEC_ACCESS"
]
},
"SecurityConfig": {
"title": "SecurityConfig",
"additionalProperties": false,
"type": "object",
"required": [],
"properties": {
"scramActivated": {
"type": "boolean",
"title": "Enable SCAN authentification",
"default": false
},
"hashPassword": {
"type": "boolean",
"default": true
},
"disableHardwareFactoryReset": {
"title": "Locking factory reset with lwm2m",
"type": "boolean",
"default": false
},
"disableLoginWithUID": {
"title": "Disable login with UID",
"type": "boolean",
"default": false
},
"disableResourceFactoryReset": {
"title": "Disable hardware factory reset",
"type": "boolean",
"default": false
}
}
},
"AppPathType": {
"type": "string",
"enum": [
"PRIMER_CLOUD_WEB_APP_URL",
"URL",
"ANDROID_APP_ID",
"PRIMER_CLOUD_CONFIG_URL",
"AAR_2"
]
},
"TargetSerialModbusConfigurationConfig.Modbus": {
"title": "ModbusConfig",
"type": "object",
"required": ["slave", "offsetFirstRegister"],
"additionalProperties": false,
"properties": {
"slave": {
"type": "integer",
"minimum": 0,
"maximum": 256,
"default": 1,
"description": "Default slave address"
},
"offsetFirstRegister": {
"type": "boolean",
"default": false,
"description": "True if first register address will be 1\nFalse if first register address is 0"
}
}
},
"TargetSerialModbusConfigurationConfig.Serial": {
"title": "SerialConfig",
"type": "object",
"required": [
"baudRate",
"stopBits",
"bitParity",
"dataBits",
"handshakeDelimiter",
"timeout"
],
"additionalProperties": false,
"properties": {
"baudRate": {
"type": "integer",
"minimum": 0,
"maximum": 1048576,
"default": 9600
},
"physicalPort": {
"$ref": "#/definitions/SerialSettings.PhysicalPort"
},
"stopBits": {
"$ref": "#/definitions/SerialSettings.StopBits"
},
"bitParity": {
"$ref": "#/definitions/SerialSettings.BitParity"
},
"dataBits": {
"$ref": "#/definitions/SerialSettings.DataBits"
},
"handshakeDelimiter": {
"$ref": "#/definitions/SerialSettings.HandshakeDelimiter"
},
"hardwareFlowControl": {
"$ref": "#/definitions/SerialSettings.HardwareFlowControl"
},
"timeout": {
"type": "integer",
"minimum": 0,
"maximum": 256,
"default": 100
}
}
},
"SerialSettings.BitParity": {
"title": "BitParity",
"type": "string",
"enum": ["NONE", "ODD", "EVEN"],
"default": "NONE"
},
"SerialSettings.HardwareFlowControl": {
"title": "Handshake",
"type": "string",
"enum": ["NONE", "RTS", "CTS", "RTS_CTS"],
"default": "NONE",
"description": "Type of handshake management"
},
"SerialSettings.StopBits": {
"title": "StopBit",
"type": "string",
"enum": ["ONE", "ONE_AND_HALF", "TWO"],
"default": "ONE"
},
"SerialSettings.PhysicalPort": {
"title": "PhysicalPort",
"type": "string",
"default": "AUTO",
"enum": [
"NONE",
"RS232",
"USB",
"AUTO",
"RS485",
"RS485_WITH_SIGNAL_DIRECTION"
]
},
"SerialSettings.HandshakeDelimiter": {
"title": "HandshakeDelimiter",
"type": "string",
"enum": ["NONE", "CR", "LF", "CR_LF"],
"default": "NONE"
},
"SerialSettings.DataBits": {
"type": "string",
"enum": ["_7", "_8", "_9"],
"default": "_8"
},
"CloudPlatform": {
"title": "CloudPlatformKey",
"enum": [
"CUSTOM",
"IOTIZE",
"IBM_BLUEMIX",
"MICROSOFT_AZURE",
"AMAZON_AWS"
]
},
"SecurityOptions": {
"title": "SecurityOptions config",
"type": "object",
"required": [],
"additionalProperties": false,
"properties": {
"scramActivated": {
"type": "boolean",
"description": "true if scram is activated"
},
"hashPassword": {
"type": "boolean",
"description": "true if login is done using the hash of the password instead of the password itself"
},
"disableHardwareFactoryReset": {
"type": "boolean",
"description": "true to disable factory reset using hardware"
},
"disableLoginWithUID": {
"type": "boolean",
"description": "true to disable login using UID (resource /1024//5)"
},
"disableResourceFactoryReset": {
"type": "boolean",
"description": "true to disable factory reset using LwM2M resource"
}
}
},
"LoraConfig": {
"title": "LoraConfig",
"type": "object",
"required": [
"classA",
"classB",
"classC",
"dataLoggingEnabled",
"singlePacketEnabled"
],
"additionalProperties": false,
"properties": {
"classA": {
"type": "boolean"
},
"classB": {
"type": "boolean"
},
"classC": {
"type": "boolean"
},
"dataLoggingEnabled": {
"type": "boolean"
},
"singlePacketEnabled": {
"type": "boolean"
}
}
},
"HostProtocol": {
"title": "Host protocol config",
"type": "string",
"examples": ["BLE"],
"enum": [
"NFC",
"BLUETOOTH",
"GSM",
"USB_RLINK",
"USB_CMISIS_DAP",
"LORA",
"WIFI",
"BLE",
"UART",
"MQTT",
"WEBSOCKET",
"SLAVE_SERVER"
]
},
"NfcConnectionPriority": {
"title": "NfcConnectionPriorityConfig",
"enum": ["NFC_PRIORITY", "NFC_NON_PRIORITY"]
},
"NfcPairingModeConfig": {
"title": "NfcPairingModeConfig",
"type": "string",
"enum": ["NO", "MANDATORY", "MANDATORY_FOR_LOGIN"],
"default": "NO"
},
"LowPowerOptimizationLevel": {
"title": "LowPowerOptimizationLevel config",
"type": "string",
"default": "NO",
"examples": ["NO"],
"enum": ["NO", "STANDBY", "SHUTDOWN"]
},
"WifiMode": {
"title": "Network mode config",
"type": "string",
"default": "PEER_TO_PEER",
"examples": ["PEER_TO_PEER"],
"enum": ["PEER_TO_PEER", "NETWORK"]
},
"TapnpassProtocolConfigurationConfig": {
"title": "TapnpassProtocolConfigurationConfig",
"type": "object",
"required": ["modbus", "serial", "usb"],
"additionalProperties": false,
"properties": {
"modbus": {
"$ref": "#/definitions/TapnpassProtocolConfigurationConfig.Modbus"
},
"serial": {
"$ref": "#/definitions/TapnpassProtocolConfigurationConfig.Serial"
},
"usb": {
"$ref": "#/definitions/TapnpassProtocolConfigurationConfig.Usb"
}
}
},
"TapnpassProtocolConfigurationConfig.Modbus": {
"title": "Modbus",
"type": "object",
"required": ["slave", "offsetFirstRegister"],
"additionalProperties": false,
"properties": {
"slave": {
"type": "integer",
"minimum": 0,
"maximum": 256
},
"offsetFirstRegister": {
"type": "boolean"
}
}
},
"TapnpassProtocolConfigurationConfig.Serial": {
"title": "Serial",
"type": "object",
"required": [
"baudRate",
"identification",
"ledStatus",
"physicalPort",
"stopBits",
"bitParity",
"dataBits",
"handshakeDelimiter",
"hardwareFlowControl",
"timeout"
],
"additionalProperties": false,
"properties": {
"baudRate": {
"type": "integer",
"minimum": 0,
"maximum": 1048576
},
"identification": {
"type": "boolean"
},
"ledStatus": {
"type": "boolean"
},
"physicalPort": {
"$ref": "#/definitions/SerialSettings.PhysicalPort"
},
"stopBits": {
"$ref": "#/definitions/SerialSettings.StopBits"
},
"bitParity": {
"$ref": "#/definitions/SerialSettings.BitParity"
},
"dataBits": {
"$ref": "#/definitions/SerialSettings.DataBits"
},
"handshakeDelimiter": {
"$ref": "#/definitions/SerialSettings.HandshakeDelimiter"
},
"hardwareFlowControl": {
"$ref": "#/definitions/SerialSettings.HardwareFlowControl"
},
"timeout": {
"type": "integer",
"minimum": 0,
"maximum": 256,
"default": 100
}
}
},
"TapnpassProtocolConfigurationConfig.Usb": {
"type": "object",
"required": ["aliases"],
"additionalProperties": false,
"properties": {
"aliases": {
"type": "array",
"items": {
"$ref": "#/definitions/TapnpassProtocolConfigurationConfig.Usb.Alias"
}
}
}
},
"TapnpassProtocolConfigurationConfig.Usb.Alias": {
"type": "object",
"additionalProperties": false,
"required": ["vid", "pid", "equ"],
"properties": {
"vid": {
"$ref": "#/definitions/uint16"
},
"pid": {
"$ref": "#/definitions/uint16"
},
"equ": {
"type": "integer",
"maximum": 5,
"minimum": 0
}
}
},
"TargetSerialModbusConfigurationConfig": {
"title": "TargetSerialModbusConfigurationConfig",
"type": "object",
"required": ["modbus", "serial"],
"additionalProperties": false,
"properties": {
"modbus": {
"$ref": "#/definitions/TargetSerialModbusConfigurationConfig.Modbus"
},
"serial": {
"$ref": "#/definitions/TargetSerialModbusConfigurationConfig.Serial"
}
}
},
"ModbusVariableAddress": {
"title": "ModbusVariableAddress",
"type": "object",
"required": ["functionCode", "slave", "address"],
"additionalProperties": false,
"properties": {
"functionCode": {
"type": "integer",
"minimum": 0,
"maximum": 256
},
"slave": {
"type": "integer",
"minimum": 0,
"maximum": 256
},
"address": {
"type": "integer",
"minimum": 0,
"maximum": 65536
}
}
},
"WifiKeyVisibility": {
"title": "WifiKeyVisibility",
"enum": ["VISIBLE", "HIDDEN"]
},
"WifiSSIDVisibility": {
"title": "WifiSSIDVisibility",
"enum": ["VISIBLE", "HIDDEN_FROM_SCAN", "HIDDEN"]
},
"WirelessPairingConfig": {
"type": "object",
"additionalProperties": false,
"required": [],
"properties": {
"blePairing": {
"tsType": "boolean",
"type": "boolean",
"description": "Set to true if Tap should try to activate BLE pairing"
},
"nfcPairingMode": {
"$ref": "#/definitions/NfcPairingModeConfig"
}
}
},
"WifiProtocol": {
"title": "WifiProtocol",
"enum": ["B", "G", "N"]
},
"TargetProtocol": {
"title": "Target protocol config",
"type": "string",
"default": "NONE",
"examples": ["SWD"],
"enum": [
"NONE",
"SWD",
"S3P",
"JTAG",
"MODBUS",
"GPIO",
"SERIAL",
"CUSTOM",
"CAN",
"MODBUS_TCP"
]
},
"VariableFormat": {
"title": "VariableFormat config",
"type": "string",
"default": "_32_BITS",
"examples": ["_32_BITS"],
"enum": ["_1_BIT", "_8_BITS", "_16_BITS", "_32_BITS"]
},
"VariableTypeConfig.Data": {
"title": "VariableTypeDataConfig",
"type": "string",
"default": "UINT32",
"examples": ["UINT32"],
"enum": [
"BOOLEAN",
"INT8",
"INT16",
"INT32",
"UINT8",
"UINT16",
"UINT32",
"FLOAT32",
"ASCII"
]
},
"VariableTypeConfig.Domain": {
"title": "VariableTypeConfigDomain",
"default": "target",
"enum": ["IN_TAP_STATIC", "IN_TAP_VOLATIL", "GPIO", "TARGET"]
},
"VariableTypeConfig": {
"title": "VariableTypeConfig",
"type": "object",
"required": ["domain", "data"],
"additionalProperties": false,
"properties": {
"domain": {
"$ref": "#/definitions/VariableTypeConfig.Domain"
},
"data": {
"$ref": "#/definitions/VariableTypeConfig.Data"
}
},
"definitions": {
"Data": {
"title": "Data",
"enum": [
"BOOLEAN",
"INT8",
"INT16",
"INT32",
"ASCII",
"FLOAT32",
"UINT8",
"UINT16",
"UINT32"
]
},
"Domain": {
"title": "Domain",
"enum": ["TARGET", "GPIO", "IN_TAP_STATIC", "IN_TAP_VOLATIL"]
}
}
},
"SlaveServerConfig": {
"type": "object",
"oneOf": [
{
"$ref": "#/definitions/SlaveServerModbusTcpConfig"
},
{
"$ref": "#/definitions/SlaveServerModbusRtuConfig"
},
{
"$ref": "#/definitions/SlaveServerSpiConfig"
},
{
"$ref": "#/definitions/SlaveServerCanConfig"
}
]
},
"SlaveServerModbusTcpConfig": {
"type": "object",
"required": ["type", "config"],
"additionalProperties": false,
"properties": {
"type": {
"enum": ["MODBUS_TCP"]
},
"config": {
"type": "object",
"additionalProperties": false,
"required": ["port"],
"properties": {
"firstRegisterAddress": {
"title": "First register address",
"tsType": "number",
"description": "First register address (0 or 1)",
"type": "integer",
"default": 0,
"minimum": 0,
"maximum": 1
},
"port": {
"type": "integer",
"minimum": 0,
"maximum": 655335,
"description": "Tcp port"
}
}
}
}
},
"SlaveServerModbusRtuConfig": {
"type": "object",
"required": ["type", "config"],
"additionalProperties": false,
"properties": {
"type": {
"enum": ["MODBUS_RTU"]
},
"config": {
"$ref": "#/definitions/TapnpassProtocolConfigurationConfig"
}
}
},
"SlaveServerCanConfig": {
"type": "object",
"required": ["type", "config"],
"additionalProperties": false,
"properties": {
"type": {
"enum": ["CAN"]
},
"config": {
"$ref": "#/definitions/CanConfig"
}
}
},
"SlaveServerSpiConfig": {
"type": "object",
"required": ["type"],
"additionalProperties": false,
"properties": {
"type": {
"enum": ["SPI"]
}
}
},
"address": {
"oneOf": [
{
"type": "integer",
"minimum": 0,
"default": 0,
"examples": [192]
},
{
"type": "string",
"pattern": "^0x([0-9a-fA-F]+)$",
"examples": ["0x2000000"]
}
]
},
"hexString": {
"type": "string",
"pattern": "^0x([0-9a-fA-F]+)$",
"examples": ["0xB3"],
"tsType": "string | Uint8Array",
"default": ""
},
"Certificate": {
"title": "Certificate",
"type": "string",
"examples": [],
"tsType": "string | Uint8Array",
"default": ""
},
"uint8": {
"type": "integer",
"minimum": 0,
"maximum": 255,
"description": "Unsigned integer on 8 bytes"
},
"int8": {
"type": "integer",
"minimum": -127,
"maximum": 128,
"description": "Signed integer on 8 bytes"
},
"uint16": {
"type": "integer",
"minimum": 0,
"maximum": 65535,
"description": "Unsigned integer on 16 bytes"
},
"uint32": {
"type": "integer",
"minimum": 0,
"maximum": 4294967296,
"description": "Unsigned integer on 32 bytes"
},
"semanticVersion": {
"type": "string",
"default": "1.0.0",
"examples": ["1.0.0"],
"pattern": "^(\\d+)\\.(\\d+)\\.(\\d+)$"
},
"IPV4Address": {
"type": "string",
"description": "IP V4",
"examples": ["192.168.20.3"],
"format": "ipv4"
},
"IPV4AddressMask": {
"type": "string",
"description": "IP V4 mask",
"examples": ["255.255.0.1"],
"default": "255.255.255.0",
"format": "ipv4"
}
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2NvbmZpZy9zY2hlbWEvdjEvc3JjL2xpYi9nZW4vdGFwLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTs7R0FFRztBQUNILGVBQWU7SUFDYixPQUFPLEVBQUUseUJBQXlCO0lBQ2xDLEtBQUssRUFBRSw4Q0FBOEM7SUFDckQsU0FBUyxFQUFFLHlDQUF5QztJQUNwRCxNQUFNLEVBQUUsUUFBUTtJQUNoQixVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDdEIsc0JBQXNCLEVBQUUsS0FBSztJQUM3QixZQUFZLEVBQUU7UUFDWixNQUFNLEVBQUU7WUFDTixNQUFNLEVBQUUsUUFBUTtZQUNoQixPQUFPLEVBQUUsd0JBQXdCO1lBQ2pDLFlBQVksRUFBRTtnQkFDWixTQUFTLEVBQUU7b0JBQ1QsTUFBTSxFQUFFLFFBQVE7b0JBQ2hCLFNBQVMsRUFBRSw0QkFBNEI7aUJBQ3hDO2dCQUNELFNBQVMsRUFBRTtvQkFDVCxNQUFNLEVBQUUsUUFBUTtvQkFDaEIsYUFBYSxFQUFFLHFDQUFxQztvQkFDcEQsWUFBWSxFQUFFO3dCQUNaLGtCQUFrQixFQUFFOzRCQUNsQixNQUFNLEVBQUUsU0FBUzs0QkFDakIsYUFBYSxFQUFFLDRKQUE0Sjs0QkFDM0ssU0FBUyxFQUFFLEtBQUs7eUJBQ2pCO3FCQUNGO2lCQUNGO2FBQ0Y7WUFDRCxzQkFBc0IsRUFBRSxJQUFJO1NBQzdCO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsTUFBTSxFQUFFLFFBQVE7WUFDaEIsT0FBTyxFQUFFLFdBQVc7WUFDcEIsc0JBQXNCLEVBQUUsS0FBSztZQUM3QixVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDdkIsWUFBWSxFQUFFO2dCQUNaLFNBQVMsRUFBRTtvQkFDVCxNQUFNLEVBQUUsK0JBQStCO2lCQUN4QztnQkFDRCxxQkFBcUIsRUFBRTtvQkFDckIsTUFBTSxF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