(function (global, factory) {
    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
    typeof define === 'function' && define.amd ? define('@iotize/tap/config/schema/v1', ['exports'], factory) :
    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.iotize = global.iotize || {}, global.iotize.tap = global.iotize.tap || {}, global.iotize.tap.config = global.iotize.tap.config || {}, global.iotize.tap.config.schema = global.iotize.tap.config.schema || {}, global.iotize.tap.config.schema.v1 = {})));
})(this, (function (exports) { 'use strict';

    /**
     * This file has been generated from JSON file C:\Users\scale\dev\iotize\bitbucket\standalone\iotize-device-client.js\assets\schema\v1\common.json
     */
    var common = {
        "$id": "http://iotize.com/schemas/v1/common.json",
        "definitions": {
            "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"],
                "default": "0x00"
            },
            "uint8": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255,
                "description": "Unsigned 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": {
                "title": "SemanticVersion",
                "type": "string",
                "default": "1.0.0",
                "examples": ["1.0.0"],
                "pattern": "^(\\d+)\\.(\\d+)\\.(\\d+)$"
            },
            "IpAddressV4": {
                "title": "SemanticVersion",
                "type": "string",
                "default": "1.0.0",
                "examples": ["1.0.0"],
                "pattern": "^[0-255]\\.[0-255]\\.[0-255]\\.[0-255]$"
            }
        }
    };

    /**
     * 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
     */
    var tapConfig = {
        "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": {
                                            "type": "object",
                                            "title": "AclMapConfig",
                                            "additionalProperties": {
                                                "type": "object",
                                                "title": "AclConfig",
                                                "required": ["read", "write"],
                                                "additionalProperties": false,
                                                "properties": {
                                                    "read": {
                                                        "type": "boolean",
                                                        "description": "Grant read right",
                                                        "default": false,
                                                        "examples": [true]
                                                    },
                                                    "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": {
                    "maxWakeUpTimeActivated": {
                        "type": "boolean",
                        "title": "Enable max wake up time",
                        "default": false
                    },
                    "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": {
                    "maxWakeUpTimeActivated": {
                        "type": "boolean",
                        "title": "Enable max wake up time",
                        "default": false
                    },
                    "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,
                "title": "TapnpassProtocolConfigurationConfigUsb",
                "properties": {
                    "aliases": {
                        "type": "array",
                        "items": {
                            "$ref": "#/definitions/TapnpassProtocolConfigurationConfig.Usb.Alias"
                        }
                    }
                }
            },
            "TapnpassProtocolConfigurationConfig.Usb.Alias": {
                "type": "object",
                "title": "TapnpassProtocolConfigurationConfigUsbAlias",
                "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",
                    "LORA"
                ]
            },
            "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"
            }
        }
    };

    /**
     * This file has been generated from JSON file C:\Users\scale\dev\iotize\bitbucket\standalone\iotize-device-client.js\assets\schema\v1\tap-types.json
     */
    var tapTypes = {
        "$schema": "http://json-schema.org/draft-07/schema",
        "$id": "http://iotize.com/schemas/v1/tap-types.json",
        "definitions": {
            "NfcPairingMode": {
                "title": "NfcPairingMode config",
                "type": "string",
                "enum": ["NO", "MANDATORY", "MANDATORY_FOR_LOGIN"],
                "default": "NO"
            },
            "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",
                "type": "integer",
                "enum": ["VISIBLE", "HIDDEN"]
            },
            "WifiSSIDVisibility": {
                "title": "WifiSSIDVisibility",
                "type": "integer",
                "enum": ["VISIBLE", "HIDDEN_FROM_SCAN", "HIDDEN"]
            },
            "WifiProtocol": {
                "title": "WifiProtocol",
                "type": "integer",
                "enum": ["B", "G", "N"]
            },
            "TargetProtocol": {
                "title": "Target protocol config",
                "type": "string",
                "default": "NONE",
                "examples": ["SWD"],
                "enum": [
                    "NONE",
                    "SWD",
                    "S3P",
                    "JTAG",
                    "MODBUS",
                    "GPIO",
                    "SERIAL",
                    "CUSTOM",
                    "LORA"
                ]
            },
            "VariableFormat": {
                "title": "VariableFormat config",
                "type": "string",
                "default": "_32_BITS",
                "examples": ["_32_BITS"],
                "enum": ["_1_BIT", "_8_BITS", "_16_BITS", "_32_BITS"]
            },
            "VariableType.Data": {
                "description": "Variable type config",
                "title": "VariableTypeConfig",
                "type": "string",
                "default": "UINT32",
                "examples": ["UINT32"],
                "enum": [
                    "INT8",
                    "INT16",
                    "INT32",
                    "UINT8",
                    "UINT16",
                    "UINT32",
                    "FLOAT32",
                    "STRING"
                ]
            },
            "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"
                ]
            },
            "HostProtocol": {
                "title": "HostProtocol config",
                "type": "string",
                "examples": ["BLE"],
                "enum": ["NFC", "BLE", "WIFI", "LORA"],
                "tsEnumNames": ["NFC", "BLE", "WIFI", "LORA"]
            },
            "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"]
            },
            "UartSettings": {
                "title": "UartSettings config",
                "type": "object",
                "additionalAttributes": false,
                "attributes": {
                    "slv": {
                        "type": "integer",
                        "minValue": 0,
                        "maxValue": 255
                    },
                    "ofs": {
                        "type": "boolean"
                    },
                    "baudRate": {
                        "type": "integer",
                        "minValue": 0
                    },
                    "physicalPort": {
                        "$ref": "#/PhysicalPort"
                    },
                    "stopBit": {
                        "$ref": "#/StopBit"
                    },
                    "bitParity": {
                        "$ref": "#/BitParity"
                    },
                    "dataBits": {
                        "$ref": "#/DataBitsLength"
                    },
                    "handshakeDelimiter": {
                        "$ref": "#/HandshakeDelimiter"
                    },
                    "handshakeValue": {
                        "$ref": "#/Handshake"
                    },
                    "timeout": {
                        "type": "integer",
                        "minValue": 0,
                        "maxValue": 255
                    }
                }
            },
            "BitParity": {
                "title": "BitParity",
                "type": "string",
                "enum": ["NONE", "ODD", "EVEN"]
            },
            "Handshake": {
                "title": "Handshake",
                "type": "string",
                "enum": ["NONE", "RTS", "CTS", "RTS_CTS"]
            },
            "StopBit": {
                "title": "StopBit",
                "type": "string",
                "enum": ["ONE", "ONE_AND_HALF", "TWO"]
            },
            "PhysicalPort": {
                "title": "PhysicalPort",
                "type": "string",
                "enum": ["NONE", "RS232", "USB", "AUTO", "RS485"]
            },
            "HandshakeDelimiter": {
                "title": "HandshakeDelimiter",
                "type": "string",
                "enum": ["NONE", "CR", "LF", "CR_LF"]
            },
            "DataBitsLength": {
                "title": "DataBitsLength",
                "type": "string",
                "enum": ["_7", "_8", "_9"]
            },
            "SecurityConfig": {
                "title": "SecurityConfig",
                "additionalProperties": false,
                "type": "object",
                "required": [
                    "scramActivated",
                    "hashPassword",
                    "factoryReset",
                    "disableLoginWithUID",
                    "disableResourceFactoryReset"
                ],
                "properties": {
                    "maxWakeUpTimeActivated": {
                        "type": "boolean",
                        "title": "Enable max wake up time",
                        "default": false
                    },
                    "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
                    }
                }
            },
            "SpecialUsername": {
                "title": "SpecialUsername config",
                "enum": ["admin", "supervisor"]
            },
            "UsbAlias": {
                "title": "UsbAlias  config",
                "type": "object",
                "additionalProperties": false,
                "required": ["vid", "pid", "equ"],
                "properties": {
                    "vid": {
                        "allOf": [
                            {
                                "$ref": "common.json#/definitions/hexString"
                            },
                            {
                                "tsType": "any",
                                "maxLength": 6
                            }
                        ]
                    },
                    "pid": {
                        "allOf": [
                            {
                                "$ref": "common.json#/definitions/hexString"
                            },
                            {
                                "tsType": "any",
                                "maxLength": 6
                            }
                        ]
                    },
                    "equ": {
                        "type": "integer",
                        "maximum": 5,
                        "minimum": 0
                    }
                }
            }
        }
    };

    /**
     * Generated bundle index. Do not edit.
     */

    exports.CommonTypeJsonSchema = common;
    exports.TapConfigJsonSchema = tapConfig;
    exports.TapTypeJsonSchema = tapTypes;

    Object.defineProperty(exports, '__esModule', { value: true });

}));
//# sourceMappingURL=iotize-tap-config-schema-v1.umd.js.map
