{ "$schema": "http://json-schema.org/draft-07/schema#", "definitions": { "multilingual": { "type": "object", "required": [ "en" ], "patternProperties": { "en|de|ru|pt|nl|fr|it|es|pl|uk|zh-cn": { "type": "string" } }, "additionalProperties": false }, "iobrokerObject": { "type": "object", "required": [ "_id", "type" ], "properties": { "_id": { "type": "string" }, "type": { "type": "string" }, "common": { "type": "object" } } }, "isCompactTrue": { "properties": { "compact": { "const": true } }, "required": [ "compact" ] }, "disallowNodeProcessParams": { "not": { "required": [ "nodeProcessParams" ] } }, "license": { "description": "The license this software is published under.", "type": "string", "enum": [ "X11", "HPND-export2-US", "OpenPBS-2.3", "OSL-3.0", "Rdisc", "LPD-document", "BSD-3-Clause-LBNL", "AFL-1.1", "HP-1989", "CC-BY-ND-4.0", "RSA-MD", "HPND-sell-variant", "threeparttable", "AMPAS", "ngrep", "mplus", "MIT-Festival", "HDF5", "Artistic-1.0-Perl", "BSD-4-Clause-UC", "SAX-PD", "APSL-1.1", "AGPL-1.0-or-later", "ANTLR-PD", "Zimbra-1.3", "GLWTPL", "Minpack", "OSL-2.1", "PolyForm-Small-Business-1.0.0", "DOC", "Cronyx", "LPPL-1.3c", "SGI-OpenGL", "libtiff", "OpenVision", "TrustedQSL", "Sun-PPP", "Entessa", "AFL-2.0", "Sleepycat", "Latex2e", "FDK-AAC", "CECILL-C", "ODC-By-1.0", "Bitstream-Charter", "UMich-Merit", "CC-BY-NC-2.5", "diffmark", "BlueOak-1.0.0", "Info-ZIP", "CC-BY-NC-ND-4.0", "JSON", "Sendmail-8.23", "SGI-B-1.0", "RPL-1.1", "ISC", "FSFUL", "Multics", "3D-Slicer-1.0", "Libpng", "LPPL-1.0", "NGPL", "Clips", "CC-BY-4.0", "GFDL-1.1-or-later", "GPL-1.0-or-later", "GFDL-1.3-invariants-only", "Sun-PPP-2000", "Glide", "Furuseth", "GFDL-1.3-no-invariants-or-later", "any-OSI", "LGPL-2.0-or-later", "ADSL", "Noweb", "Linux-man-pages-1-para", "CC-BY-SA-3.0", "TAPR-OHL-1.0", "SMLNJ", "OFL-1.1-RFN", "SL", "Afmparse", "CC-SA-1.0", "APSL-1.0", "Hippocratic-2.1", "UPL-1.0", "CC-BY-NC-SA-4.0", "xzoom", "SchemeReport", "Boehm-GC", "xinetd", "CC-BY-NC-ND-3.0", "CECILL-2.1", "SSLeay-standalone", "CATOSL-1.1", "NIST-PD", "GPL-2.0-or-later", "CECILL-1.1", "GFDL-1.2-no-invariants-only", "mpich2", "JasPer-2.0", "RPSL-1.0", "OLDAP-1.4", "TU-Berlin-1.0", "CC-BY-3.0-AT", "BSD-3-Clause-No-Nuclear-License", "Xdebug-1.03", "SISSL", "Apache-1.1", "HPND-DEC", "Unlicense-libtelnet", "Condor-1.1", "Unicode-TOU", "OML", "QPL-1.0-INRIA-2004", "CC-BY-ND-1.0", "PolyForm-Noncommercial-1.0.0", "man2html", "OLFL-1.3", "copyleft-next-0.3.0", "LGPLLR", "CDDL-1.1", "Xfig", "CC-BY-2.5-AU", "APL-1.0", "OpenSSL-standalone", "OGDL-Taiwan-1.0", "BSL-1.0", "generic-xts", "PHP-3.0", "LAL-1.2", "DRL-1.1", "LPL-1.0", "Leptonica", "CNRI-Jython", "DL-DE-ZERO-2.0", "Cube", "w3m", "TGPPL-1.0", "HPND-UC-export-US", "EFL-1.0", "NRL", "CPAL-1.0", "NCSA", "CC-BY-SA-2.1-JP", "PPL", "GPL-1.0-only", "ASWF-Digital-Assets-1.1", "NCL", "App-s2p", "BitTorrent-1.0", "HPND-merchantability-variant", "EPICS", "BSD-3-Clause-Attribution", "curl", "NLPL", "Apache-2.0", "BSD-Protection", "DEC-3-Clause", "MakeIndex", "RSCPL", "bcrypt-Solar-Designer", "OGL-UK-1.0", "OLDAP-2.1", "HPND-export-US-modify", "MIT-0", "MPL-2.0-no-copyleft-exception", "CERN-OHL-S-2.0", "TMate", "CMU-Mach", "OSL-2.0", "UnixCrypt", "Plexus", "MulanPSL-2.0", "OSET-PL-2.1", "DocBook-Schema", "CC-BY-NC-ND-3.0-DE", "IPA", "LGPL-2.1-or-later", "zlib-acknowledgement", "Zed", "Fair", "AGPL-3.0-only", "GFDL-1.2-invariants-only", "Spencer-86", "AMDPLPA", "NPOSL-3.0", "SWL", "CC-BY-SA-2.0-UK", "Brian-Gladman-2-Clause", "CC-BY-NC-SA-2.0", "CERN-OHL-P-2.0", "OFL-1.0-RFN", "Linux-man-pages-copyleft-var", "OFL-1.1-no-RFN", "BSD-3-Clause-flex", "Intel-ACPI", "CFITSIO", "Bitstream-Vera", "HPND", "HPND-UC", "PSF-2.0", "xkeyboard-config-Zinoviev", "mpi-permissive", "TORQUE-1.1", "CC-BY-NC-ND-2.5", "cve-tou", "Artistic-2.0", "ANTLR-PD-fallback", "CERN-OHL-W-2.0", "Spencer-99", "PHP-3.01", "SugarCRM-1.1.3", "GFDL-1.3-only", "SNIA", "HPND-sell-variant-MIT-disclaimer", "libpng-2.0", "BSD-4-Clause", "HPND-Intel", "LiLiQ-R-1.1", "any-OSI-perl-modules", "Aspell-RU", "LiLiQ-P-1.1", "HPND-INRIA-IMAG", "BUSL-1.1", "Parity-7.0.0", "TTYP0", "LOOP", "LiLiQ-Rplus-1.1", "BSD-3-Clause-No-Nuclear-License-2014", "BSD-3-Clause-Sun", "Parity-6.0.0", "IBM-pibs", "bzip2-1.0.6", "GFDL-1.2-no-invariants-or-later", "FSFULLRWD", "Game-Programming-Gems", "gnuplot", "X11-swapped", "NLOD-1.0", "CPOL-1.02", "OAR", "Abstyles", "SISSL-1.2", "Unicode-DFS-2015", "Graphics-Gems", "CC-BY-SA-4.0", "Dotseqn", "RHeCos-1.1", "BSD-3-Clause-Clear", "CC-BY-SA-2.0", "GFDL-1.2-invariants-or-later", "EUDatagrid", "libselinux-1.0", "FreeImage", "APSL-1.2", "Sendmail", "SHL-0.5", "Ubuntu-font-1.0", "BSD-4-Clause-Shortened", "GCR-docs", "GFDL-1.1-invariants-only", "ZPL-2.1", "CC-PDDC", "OCLC-2.0", "OpenSSL", "MS-RL", "BSD-3-Clause-acpica", "TCP-wrappers", "CC-BY-NC-SA-3.0-DE", "LPPL-1.3a", "OLDAP-1.2", "HP-1986", "hdparm", "PADL", "OPL-UK-3.0", "BSD-1-Clause", "MIT-CMU", "Mup", "ICU", "xpp", "Artistic-1.0-cl8", "CC-BY-2.5", "XSkat", "YPL-1.0", "W3C-20150513", "SGI-B-1.1", "LGPL-2.1-only", "CUA-OPL-1.0", "Eurosym", "FSFULLRSD", "CC-BY-NC-SA-2.0-FR", "X11-distribute-modifications-variant", "MPEG-SSG", "MIT-Modern-Variant", "CAL-1.0", "HPND-doc-sell", "Naumen", "Unicode-3.0", "Unicode-DFS-2016", "HIDAPI", "Baekmuk", "Kazlib", "HPND-MIT-disclaimer", "OLDAP-2.2.2", "AdaCore-doc", "0BSD", "ISC-Veillard", "CERN-OHL-1.2", "dvipdfm", "MulanPSL-1.0", "JPL-image", "FSFULLR", "CryptoSwift", "CC-BY-NC-3.0-DE", "BitTorrent-1.1", "EPL-2.0", "Vim", "Inner-Net-2.0", "LGPL-2.0-only", "Zimbra-1.4", "Cornell-Lossless-JPEG", "Knuth-CTAN", "OLDAP-1.1", "CC-BY-NC-ND-2.0", "Borceux", "DSDP", "Unlicense", "ECL-2.0", "HPND-Pbmplus", "ASWF-Digital-Assets-1.0", "HPND-sell-MIT-disclaimer-xserver", "SPL-1.0", "AFL-3.0", "OLDAP-2.6", "BSD-Advertising-Acknowledgement", "SAX-PD-2.0", "Crossword", "swrule", "LZMA-SDK-9.11-to-9.20", "MIPS", "CNRI-Python", "UCAR", "InnoSetup", "MIT-Wu", "CC-BY-NC-SA-2.0-DE", "HPND-sell-variant-MIT-disclaimer-rev", "CC-BY-NC-SA-3.0", "GL2PS", "Martin-Birgmeier", "xlock", "etalab-2.0", "OLDAP-2.8", "W3C-19980720", "CC-BY-3.0-US", "CPL-1.0", "OFFIS", "CC0-1.0", "CECILL-2.0", "OCCT-PL", "NPL-1.0", "magaz", "Soundex", "SOFA", "Frameworx-1.0", "check-cvs", "OLDAP-2.2.1", "Apache-1.0", "URT-RLE", "mailprio", "OLDAP-2.4", "BSD-Source-beginning-file", "CC-BY-SA-1.0", "CDL-1.0", "OLDAP-1.3", "HPND-Netrek", "Artistic-1.0", "checkmk", "Saxpath", "CMU-Mach-nodoc", "NCGL-UK-2.0", "EUPL-1.1", "CC-BY-ND-2.5", "SunPro", "Elastic-2.0", "ODbL-1.0", "CERN-OHL-1.1", "IEC-Code-Components-EULA", "OGL-UK-2.0", "Caldera-no-preamble", "libutil-David-Nugent", "ThirdEye", "MIT-open-group", "EUPL-1.0", "NICTA-1.0", "CDDL-1.0", "MIT-feh", "CC-BY-3.0-IGO", "OLDAP-2.3", "RPL-1.5", "OPUBL-1.0", "AGPL-1.0-only", "TOSL", "FTL", "WTFPL", "Intel", "Barr", "Zlib", "BSD-Systemics-W3Works", "psfrag", "AAL", "CECILL-B", "NTIA-PD", "CC-BY-NC-1.0", "libpng-1.6.35", "BSD-2-Clause", "NASA-1.3", "Mackerras-3-Clause-acknowledgment", "BSD-4.3RENO", "Pixar", "CC-BY-3.0-NL", "AMD-newlib", "MIT-Click", "AML-glslang", "MIT-advertising", "CC-BY-2.0", "CC-BY-NC-ND-1.0", "OLDAP-2.5", "Zend-2.0", "HPND-Fenneberg-Livingston", "DRL-1.0", "NIST-Software", "CrystalStacker", "BSD-Source-Code", "Spencer-94", "SimPL-2.0", "OSL-1.1", "CDLA-Permissive-1.0", "metamail", "GFDL-1.1-only", "CC-BY-ND-3.0", "CC-BY-3.0-DE", "HPND-export-US", "NBPL-1.0", "GPL-2.0-only", "NAIST-2003", "SSH-OpenSSH", "Nokia", "gtkbook", "Boehm-GC-without-fee", "GPL-3.0-or-later", "CECILL-1.0", "AGPL-3.0-or-later", "Xnet", "NOSL", "ImageMagick", "MITNFA", "APAFML", "Jam", "FBM", "BSD-2-Clause-Darwin", "HTMLTIDY", "W3C", "AFL-1.2", "YPL-1.1", "iMatix", "Caldera", "SCEA", "O-UDA-1.0", "LPPL-1.2", "HPND-export-US-acknowledgement", "GFDL-1.2-or-later", "McPhee-slideshow", "Ruby", "Kastrup", "Adobe-Glyph", "CC-BY-SA-3.0-AT", "DocBook-Stylesheet", "Aladdin", "MIT-testregex", "BSD-3-Clause-Modification", "BSD-3-Clause-No-Military-License", "Adobe-Display-PostScript", "psutils", "LGPL-3.0-or-later", "LZMA-SDK-9.22", "Bahyph", "BSD-Attribution-HPND-disclaimer", "Motosoto", "MIT-Khronos-old", "Ruby-pty", "CC-BY-NC-SA-1.0", "Artistic-dist", "IJG", "Linux-OpenIB", "ulem", "MIT", "GFDL-1.3-no-invariants-only", "Symlinks", "NPL-1.1", "Giftware", "CDLA-Permissive-2.0", "LAL-1.3", "Widget-Workshop", "Latex2e-translated-notice", "Gutmann", "COIL-1.0", "Watcom-1.0", "HPND-Kevlin-Henney", "fwlw", "DL-DE-BY-2.0", "Interbase-1.0", "OGTSL", "BSD-Inferno-Nettverk", "BSD-2-Clause-Views", "ssh-keyscan", "GFDL-1.1-invariants-or-later", "Mackerras-3-Clause", "TPL-1.0", "ErlPL-1.1", "LPPL-1.1", "BSD-2-Clause-first-lines", "OGL-Canada-2.0", "D-FSL-1.0", "SMAIL-GPL", "CC-PDM-1.0", "CDLA-Sharing-1.0", "GD", "GFDL-1.3-invariants-or-later", "Zeeff", "Imlib2", "CC-BY-NC-2.0", "Adobe-Utopia", "ZPL-2.0", "Beerware", "SUL-1.0", "EPL-1.0", "CC-BY-1.0", "CC-BY-NC-4.0", "FSFAP", "VSL-1.0", "lsof", "Wsuipa", "Unlicense-libwhirlpool", "NTP-0", "BSD-3-Clause", "APSL-2.0", "CAL-1.0-Combined-Work-Exception", "OGL-UK-3.0", "CC-BY-SA-3.0-IGO", "SGP4", "SSH-short", "OLDAP-2.7", "VOSTROM", "CC-BY-3.0", "CC-BY-NC-ND-3.0-IGO", "dtoa", "SMPPL", "MIT-enna", "Catharon", "SHL-0.51", "copyleft-next-0.3.1", "BSD-2-Clause-Patent", "FSL-1.1-ALv2", "Python-2.0.1", "CC-BY-ND-2.0", "MTLL", "OFL-1.0", "Qhull", "IPL-1.0", "Linux-man-pages-copyleft-2-para", "softSurfer", "snprintf", "GFDL-1.2-only", "EUPL-1.2", "ZPL-1.1", "TTWL", "MPL-2.0", "HPND-doc", "BSD-Systemics", "DocBook-DTD", "EFL-2.0", "HaskellReport", "BSD-3-Clause-No-Nuclear-Warranty", "Newsletr", "OFL-1.1", "GFDL-1.1-no-invariants-only", "CC-BY-ND-3.0-DE", "UCL-1.0", "OGC-1.0", "eGenix", "OPL-1.0", "Xerox", "NIST-PD-fallback", "SGI-B-2.0", "TermReadKey", "Sendmail-Open-Source-1.1", "NTP", "HPND-Markus-Kuhn", "BSD-2-Clause-pkgconf-disclaimer", "TCL", "NetCDF", "wwl", "Python-2.0", "FSFAP-no-warranty-disclaimer", "python-ldap", "CC-BY-SA-2.5", "GPL-3.0-only", "GFDL-1.3-or-later", "LGPL-3.0-only", "Glulxe", "CC-BY-NC-SA-3.0-IGO", "BSD-3-Clause-Open-MPI", "FSL-1.1-MIT", "Linux-man-pages-copyleft", "ECL-1.0", "jove", "BSD-3-Clause-HP", "AML", "FreeBSD-DOC", "XFree86-1.1", "CC-BY-3.0-AU", "Arphic-1999", "OSL-1.0", "OFL-1.0-no-RFN", "OLDAP-2.0.1", "JPNIC", "LPL-1.02", "OLDAP-2.0", "Adobe-2006", "CC-BY-NC-SA-2.5", "C-UDA-1.0", "Lucida-Bitmap-Fonts", "Ferguson-Twofish", "MMIXware", "SSPL-1.0", "MPL-1.0", "TPDL", "OLDAP-2.2", "gSOAP-1.3b", "TU-Berlin-2.0", "pkgconf", "CC-BY-NC-SA-2.0-UK", "DocBook-XML", "CNRI-Python-GPL-Compatible", "MS-LPL", "Brian-Gladman-3-Clause", "radvd", "MPL-1.1", "blessing", "HPND-sell-regexpr", "AFL-2.1", "CC-BY-SA-3.0-DE", "PDDL-1.0", "BSD-4.3TAHOE", "CC-BY-NC-3.0", "NLOD-2.0", "GFDL-1.1-no-invariants-or-later", "ClArtistic", "pnmstitch", "MirOS", "QPL-1.0", "IJG-short", "Community-Spec-1.0", "NCBI-PD", "PostgreSQL", "MS-PL" ] } }, "type": "object", "required": [ "common" ], "additionalProperties": false, "properties": { "$schema": { "description": "JSON schema for validation", "type": "string" }, "common": { "required": [ "name", "version", "platform", "tier", "titleLang", "news", "desc", "mode", "licenseInformation" ], "additionalProperties": false, "description": "Contains all common instance attributes", "type": "object", "properties": { "name": { "description": "Name of the adapter without ioBroker", "type": "string", "pattern": "^(?![i|I][o|O][b|B][r|R][o|O][k|K][e|E][r|R])" }, "version": { "description": "Current adapter version", "type": "string", "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$" }, "platform": { "description": "Platform, normally Javascript/Node.js", "type": "string", "enum": [ "Javascript/Node.js" ] }, "title": { "description": "Longer name of adapter DEPRECATED: For admin version >= 5 this property is no longer required", "type": "string" }, "titleLang": { "description": "Longer name of adapter in all supported languages like {en: 'Adapter', de: 'adapter', ru: 'Драйвер'}", "$ref": "#/definitions/multilingual" }, "news": { "description": "Short form of changelog in all supported languages", "type": "object", "minProperties": 1, "maxProperties": 20, "patternProperties": { "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$": { "$ref": "#/definitions/multilingual" } }, "additionalProperties": false }, "desc": { "description": "Description, object for multilingual description", "$ref": "#/definitions/multilingual" }, "messagebox": { "description": "true if messagebox supported. Hence, the adapter can receive sendTo messages. Up from controller v5, please use common.supportedMessages.custom = true", "type": "boolean" }, "blockedVersions": { "description": "Array which lists all blocked versions. Blocked versions will not be started. Use semver notation to specify the version ranges. The information is always used from the io-package.json in the GitHub repository.", "type": "array", "items": { "type": "string" } }, "supportedMessages": { "description": "Object which defines, if the adapter supports receiving messages via sendTo. Additionally, it defines if specific messages are supported.", "type": "object", "additionalProperties": false, "properties": { "custom": { "description": "If custom messages are supported (same as legacy messagebox)", "type": "boolean" }, "deviceManager": { "description": "If adapter supports the device manager and thus responds to the corresponding messages", "type": "boolean" }, "notifications": { "description": "If notification handling is supported, for information, see https://github.com/foxriver76/ioBroker.notification-manager#requirements-for-messaging-adapters", "type": "boolean" }, "stopInstance": { "description": "If adapter supports signal stopInstance. Use number if you need more than 1000 ms for stop routine. The signal will be sent before stop to the adapter. (used if problems occurred with SIGTERM). (Same as legacy `supportStopInstance`)", "anyOf": [ { "type": "boolean" }, { "type": "number", "multipleOf": 1, "minimum": 1000 } ] }, "getHistory": { "description": "If adapter supports getHistory message. (Same as legacy `getHistory`, to avoid problems, set both flags in parallel for now)", "type": "boolean" } } }, "readme": { "description": "Url of the ReadMe file", "type": "string" }, "adminUI": { "description": "Type of the admin UI", "type": "object", "additionalProperties": false, "required": [ "config" ], "properties": { "custom": { "description": "UI type of custom tab inside admin UI", "type": "string", "const": "json" }, "config": { "description": "UI type of config page inside admin UI", "type": "string", "enum": [ "html", "json", "materialize", "none" ] }, "tab": { "description": "UI type of tab inside admin UI", "type": "string", "enum": [ "html", "json", "materialize" ] } } }, "automaticUpgrade": { "description": "Automatically upgrade the adapter in the configured semver range. Best practice is to leave this as none and let the user opt-in.", "type": "string", "enum": [ "none", "patch", "minor", "major" ] }, "docs": { "description": "The structure like {\"en\": \"docs/en/README.md\", \"de\": [\"docs/de/README.md\", \"docs/de/README1.md\"]} that describes the documentation if not in README.md", "type": "object", "required": [ "en" ], "patternProperties": { "en|de|ru|pt|nl|fr|it|es|pl|uk|zh-cn": { "type": [ "string", "array" ], "minItems": 1, "items": { "type": "string" } } }, "additionalProperties": false }, "authors": { "description": "Array of authors as string", "type": "array", "minItems": 1, "items": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": false, "required": [ "name" ], "properties": { "name": { "type": "string" }, "email": { "type": "string" } } } ] } }, "license": { "description": "DEPRECATED: Use 'common.licenseInformation' instead, move the current 'common.license' attribute to package.json instead!", "$ref": "#/definitions/license" }, "licenseInformation": { "type": "object", "properties": { "license": { "$ref": "#/definitions/license" }, "type": { "description": "Use 'paid' for adapters which do not work without a paid license. Use 'commercial' for adapters which require a license for commercial use only. Use 'limited' if some functionalities are not available without a paid license.", "type": "string", "enum": [ "free", "paid", "commercial", "limited" ] }, "link": { "description": "Hyperlink, where information about the license can be found. For non-free licenses the linked page should contain information about free features (if applicable), time of validity, link to shop and seller information. This is required if the license type is different from 'free'. For 'free' licenses an optional link to the license file can be placed here.", "type": "string", "pattern": "^https://.+$" } }, "additionalProperties": false, "required": [ "type" ], "if": { "properties": { "type": { "enum": [ "paid", "commercial", "limited" ] } } }, "then": { "required": [ "link" ] } }, "javascriptRules": { "type": "object", "properties": { "i18n": { "description": "Translation for the rule block", "anyOf": [ { "description": "Translations will be loaded from javascriptRules.url and i18n/.json", "const": true }, { "description": "Define translations here", "type": "object", "patternProperties": { ".+": { "$ref": "#/definitions/multilingual" } } } ] }, "type": { "description": "Define type='module' if rules written with TypeScript", "type": "string", "enum": [ "module" ] }, "url": { "description": "Link to module, like 'rules/customRuleBlocks.js'. That means it will loaded from admin/rules directory of the adapter", "type": "string" }, "name": { "description": "Name of the module, like 'ActionTelegram'", "type": "string" } }, "additionalProperties": false, "required": [ "url", "name" ] }, "type": { "description": "Type of the adapter", "type": "string", "enum": [ "alarm", "climate-control", "communication", "date-and-time", "energy", "garden", "general", "geoposition", "hardware", "health", "household", "infrastructure", "iot-systems", "lighting", "logic", "messaging", "metering", "misc-data", "multimedia", "network", "protocols", "storage", "utility", "vehicle", "visualization", "visualization-icons", "visualization-widgets", "weather" ] }, "install": { "description": "The adapter will be executed once additionally after installation and the `install` event will be emitted during this run. This allows for executing one time installation code.", "type": "boolean" }, "unsafePerm": { "description": "if the package must be installed with \"npm --unsafe-perm\" parameter", "type": "boolean" }, "plugins": { "description": "ioBroker plugins to be used", "type": "object" }, "adminColumns": { "description": "Custom attributes, that must be shown in admin in the object browser. Like: [{\"name\": {\"en\": \"KNX address\"}, \"path\": \"native.address\", \"width\": 100, \"align\": \"left\"}, {\"name\": \"DPT\", \"path\": \"native.dpt\", \"width\": 100, \"align\": \"right\", \"type\": \"number\", \"edit\": true, \"objTypes\": [\"state\", \"channel\"]}]. type is a type of the attribute (e.g. string, number, boolean) and only needed if edit is enabled. objTypes is a list of the object types, that could have such attribute. Used only in edit mode too.", "type": "array", "minItems": 1, "items": { "type": "object", "required": [ "name", "path", "width", "align" ], "properties": { "name": { "anyOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "path": { "type": "string" }, "width": { "type": "number", "minimum": 0 }, "align": { "type": "string", "enum": [ "left", "right", "center", "justify" ] }, "type": { "type": "string" }, "edit": { "type": "boolean" }, "objTypes": { "type": "array", "items": { "type": "string" } } } } }, "adminTab": { "description": "Adds a Tab which can be shown in admin adapter", "type": "object", "additionalProperties": false, "properties": { "fa-icon": { "description": "Font-Awesome icon name for TAB", "type": "string" }, "ignoreConfigUpdate": { "description": "Do not update config TAB if configuration changed (to enable configure settings in TAB)", "type": "boolean" }, "link": { "description": "Link for iframe or JSON config file in the TAB. You can use parameters replacement like this: \"https://%ip%:%port%\". IP will be replaced with host IP. \"port\" will be extracted from native.port.", "type": "string" }, "name": { "description": "Name of TAB (multilingual object) in admin", "$ref": "#/definitions/multilingual" }, "singleton": { "description": "If true, only one TAB for all instances will be shown.", "type": "boolean" }, "supportsLoadingMessage": { "description": "If true, the page sends an 'iobLoaded' event when loaded", "type": "boolean" } } }, "controller": { "description": "Only used by js-controller", "type": "boolean" }, "allowInit": { "description": "allow for \"scheduled\" adapter to be called \"not in the time schedule\", if settings changed or adapter started. Or allow scheduled adapter start once after configuration changed and then by schedule.", "type": "boolean" }, "availableModes": { "description": "values for common.mode if more than one mode is possible", "type": "array", "minItems": 1, "items": { "type": "string", "enum": [ "none", "daemon", "schedule", "once", "extension" ] } }, "blockly": { "description": "if adapter has custom blocks for blockly (admin/blockly.js required)", "type": "boolean" }, "connectionType": { "description": "Type of connection to device", "type": "string", "enum": [ "none", "local", "cloud" ] }, "compact": { "description": "If compact mode supported", "type": "boolean" }, "dataFolder": { "description": "Folder relative to iobroker-data where the adapter stores the data. This folder will be backed up and restored automatically. You can use variable '%INSTANCE%' in it", "type": "string" }, "dataSource": { "description": "How the data will be received from device", "type": "string", "enum": [ "none", "poll", "push", "assumption" ] }, "dependencies": { "description": "Array like [{\"js-controller\": \">=2.0.0\"}] that describes which ioBroker modules are required for this adapter on the same host", "type": "array", "items": { "type": [ "object", "string" ] } }, "enabled": { "description": "Value should be false so new instances are disabled by default", "type": "boolean" }, "eraseOnUpload": { "description": "erase all previous data in the directory before upload", "type": "boolean", "default": true }, "extIcon": { "description": "Link to external icon for uninstalled adapters. Normally on GitHub", "type": "string" }, "getHistory": { "description": "if adapter supports getHistory message. (Up from controller v5, please use `common.supportedMessages.getHistory`)", "type": "boolean" }, "globalDependencies": { "description": "Array like [{\"admin\": \">=2.0.0\"}] that describes which ioBroker modules are required for this adapter on one of the hosts", "type": "array", "items": { "type": [ "object", "string" ] } }, "ifInstalledDependencies": { "description": "Object like {\"admin\": \">=2.0.0\", \"javascript\": \">=3.0.0\"} that describes which versions of ioBroker modules are required for this adapter on one of the hosts, but only if this adapter is installed", "type": "object", "patternProperties": { ".+": { "type": "string" } } }, "icon": { "description": "name of the local icon (should be located in subdirectory \"admin\")", "type": "string" }, "keywords": { "description": "Similar to keywords in package.json, but can be defined in many languages.", "type": "array", "items": { "type": "string" } }, "localLinks": { "description": "Link to the web service of this adapter. E.g {\"_default\": \"http://localhost:5984/_utils\"} for button in admin", "type": "object", "patternProperties": { ".+": { "anyOf": [ { "type": "string", "description": "DEPRECATED: Please use structure {link, color, pro, cloud, intro, icon, name, order} instead of string" }, { "properties": { "link": { "type": "string", "description": "Link to the web service of this adapter, like: %web_protocol%://%ip%:%web_port%/vis-2/edit.html" }, "color": { "type": "string" }, "pro": { "anyOf": [ { "type": "boolean", "description": "DEPRECATED: Please use link template as string instead of boolean" }, { "description": "Link to the adapter, like: vis-2/index.html according to \"https://iobroker.pro/\"", "type": "string" } ] }, "cloud": { "description": "Link to the adapter, like: vis-2/index.html according to \"https://iobroker.net/\"", "type": "string" }, "intro": { "description": "If this link should be shown on the intro tab in admin", "type": "boolean" }, "icon": { "description": "Link to icon, like \"vis-2/img/favicon.png\"", "type": "string" }, "name": { "description": "Name of the link. Could be multi-language", "anyOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "order": { "description": "Used on \"intro\" and cloud tabs to sort the links", "type": "number" }, "description": { "description": "Description of the link. Could be multi-language", "anyOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] } }, "additionalProperties": false, "required": [ "link" ] } ] } } }, "loglevel": { "description": "Default Loglevel after instance creation", "type": "string", "enum": [ "silly", "debug", "info", "warn", "error" ] }, "logTransporter": { "description": "If this adapter receives logs from other hosts and adapters (e.g. to store them somewhere)", "type": "boolean" }, "main": { "description": "Name of the start file. DEPRECATED: For controller >= 3.3 please use package.json main.", "type": "string" }, "materialize": { "description": "If adapter supports > admin3 (materialize style) DEPRECATED: For admin version >= 5 please use the property 'adminUI'", "type": "boolean" }, "materializeTab": { "description": "If adapter supports > admin3 for tab (materialize style) DEPRECATED: For admin version >= 5 please use the property 'adminUI'", "type": "boolean" }, "mode": { "description": "Execution mode of the adapter", "type": "string", "enum": [ "none", "daemon", "schedule", "once", "extension" ] }, "noConfig": { "description": "Do not show configuration dialog for instance DEPRECATED: For admin version >= 5 please use adminUI.config = \"none\"", "type": "boolean" }, "noIntro": { "description": "never show instances of this adapter on Intro/Overview screen in admin (like icons, widgets)", "type": "boolean" }, "noRepository": { "description": "If adapter delivered with initial installation or has own repository", "type": "boolean" }, "nogit": { "description": "If true, no install from github directly is possible", "type": "boolean" }, "nondeletable": { "description": "This adapter cannot be deleted or updated. It will be updated together with controller.", "type": "boolean" }, "onlyWWW": { "description": "Say to controller, that adapter has only html files and no main.js, like rickshaw", "type": "boolean" }, "osDependencies": { "description": "OS packages which should be installed on adapter installation", "type": "object", "additionalProperties": false, "patternProperties": { "linux|darwin|win32": { "type": "array", "items": { "type": "string" } } } }, "os": { "description": "String or array of supported operation systems, e.g [\"linux\", \"darwin\"]", "anyOf": [ { "type": "string", "enum": [ "linux", "darwin", "win32" ] }, { "type": "array", "minItems": 1, "items": { "type": "string", "enum": [ "linux", "darwin", "win32" ] } } ] }, "preserveSettings": { "description": "String (or array) with names of attributes in common of instance, which will not be deleted. E.g. \"history\", so by setState('system.adapter.mqtt.0\", {..}) the field common.history will not be deleted even if new object does not have this field. To delete the attribute it must be explicitly done with common:{history: null}.", "type": [ "string", "array" ], "items": { "type": "string" } }, "restartAdapters": { "description": "Array with names of adapter that must be restarted after this adapter is installed, e.g. [\"vis\"]", "type": "array", "items": { "type": "string" } }, "restartSchedule": { "description": "CRON schedule to restart mode daemon adapters", "type": "string" }, "schedule": { "description": "CRON schedule if adapter runs in mode schedule", "type": "string" }, "serviceStates": { "description": "If adapter can deliver additional states. If true, the path adapter/lib/states.js (or given path as string) will be called and it give following parameters function (objects, states, instance, config, callback). The function must deliver the array of points with values like function (err, result) { result = [{id: 'id1', val: 1}, {id: 'id2', val: 2}]}", "type": [ "boolean", "string" ] }, "singletonHost": { "description": "Adapter can be installed only once on one host", "type": "boolean" }, "singleton": { "description": "Adapter can be installed only once in whole system", "type": "boolean" }, "stopBeforeUpdate": { "description": "If adapter must be stopped before update", "type": "boolean" }, "stopTimeout": { "description": "timeout in ms to wait, till adapter shut down", "type": "number", "default": 500, "minimum": 0, "multipleOf": 1 }, "subscribable": { "description": "Variables of this adapter must be subscribed with sendTo to enable updates", "type": "boolean" }, "supportCustoms": { "description": "If the adapter supports settings for every state. It requires file jsonCustom.json in admin and \"common.adminUI\":{\"custom\":\"json\"}. Sample can be found in ioBroker.history", "type": "boolean" }, "supportStopInstance": { "description": "If adapter supports signal stopInstance (messagebox required). Use number if you need more than 1000 ms for stop routine. The signal will be sent before stop to the adapter. (used if problems occurred with SIGTERM). (Up from controller v5, please use `common.supportedMessages.stopInstance`)", "anyOf": [ { "type": "boolean" }, { "type": "number", "multipleOf": 1, "minimum": 1000 } ] }, "visWidgets": { "description": "Overview of vis 2 widgets provided by the adapter, define the name of the provided sets as keys", "minProperties": 1, "type": "object", "patternProperties": { ".+": { "description": "The key represents the name of a provided widget set", "required": [ "name", "url", "components", "i18n" ], "type": "object", "properties": { "i18n": { "description": "Translation for the widget", "anyOf": [ { "description": "Translations will be loaded from visWidgets..url and i18n/.json", "const": true }, { "description": "Translations will be loaded from customComponent.js with name ./translations", "const": "component" }, { "description": "Define translations here", "type": "object", "patternProperties": { ".+": { "$ref": "#/definitions/multilingual" } } } ] }, "name": { "description": "Name of the widget set", "type": "string" }, "url": { "description": "Relative path ('http://ip:port/vis/widgets/' + url) or full url to load component from", "type": "string" }, "components": { "description": "Names of widgets which have to be shown, normally equal to the content of 'modulefederation.config.js'", "type": "array", "minItems": 1, "items": { "type": "string" } }, "bundlerType": { "description": "Bundler type of the widget set. Currently only 'module' is supported, if the widget was written with TypeScript. If the widget was written with JavaScript, let it empty.", "type": "string", "enum": [ "module" ] }, "ignoreInVersions": { "description": "The vis widget does not support the listed major versions of vis", "type": "array", "items": { "type": "number", "multipleOf": 1 } } } } } }, "visIconSets": { "description": "Overview of vis 2 SVG icon sets provided by the adapter, define the name of the provided sets as keys", "minProperties": 1, "type": "object", "patternProperties": { ".+": { "description": "The key represents the name of a provided icon set", "required": [ "url" ], "type": "object", "properties": { "url": { "description": "Relative path ('http://ip:port/vis/widgets/' + url) or full url to load JSON file from", "type": "string" }, "ignoreInVersions": { "description": "The vis icon set does not support the listed major versions of vis", "type": "array", "items": { "type": "number", "multipleOf": 1 } }, "name": { "description": "Name of the icon set", "anyOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "icon": { "description": "Base 64 icon of the widget set, data:image/svg+xml;base64,...", "type": "string" } } } } }, "webByVersion": { "description": "Show version as prefix in web adapter (usually - ip:port/material, webByVersion - ip:port/1.2.3/material)", "type": "boolean" }, "webExtendable": { "description": "If web server in this adapter can be extended with plugin/extensions like proxy, simple-api", "type": "boolean" }, "webExtension": { "description": "Relative filename to connect the web extension. E.g. in simple-api \"lib/simpleapi.js\" relative to the adapter root directory. Additionally is native.webInstance required to say where this extension will be included. Empty means, it must run as own web service. \"*\" means every web server must include it.", "type": "string" }, "webPreSettings": { "description": "Object of parameters that must be included into info.js by webServer adapter. (Example material)", "type": "object" }, "webservers": { "description": "Array of web server's instances that should serve content from the adapters www folder", "type": "array", "items": { "type": "string" } }, "welcomeScreen": { "description": "DEPRECATED: Please use common.localLinks instead. Array of pages, that should be shown on the \"web\" index.html page. [\"vis/edit.html\", \"vis/index.html\"] or [{\"link\": \"vis/edit.html\", \"name\": \"Vis editor\", \"img\": \"vis/img/edit.png\", \"color\": \"blue\"}, \"vis/index.html\"]", "type": "array", "items": { "type": [ "string", "object" ] } }, "welcomeScreenPro": { "description": "DEPRECATED: Please use common.localLinks instead. Array of pages used on access via ioBroker cloud, that should be shown on the \"web\" index.html page. [\"vis/edit.html\", \"vis/index.html\"] or [{\"link\": \"vis/edit.html\", \"name\": \"Vis editor\", \"img\": \"vis/img/edit.png\", \"color\": \"blue\"}, \"vis/index.html\"]", "type": "array", "items": { "type": [ "string", "object" ] } }, "wwwDontUpload": { "description": "Do not upload the www directory into DB. Used only for admin.", "type": "boolean" }, "tier": { "description": "Lower tiers are started before higher tiers instances, TIER 1: LOGIC, TIER 2: APIs & other data, TIER 3: not fastly needed data, like BackItUp, Visualization, etc.", "type": "number", "minimum": 1, "maximum": 3, "default": 3 }, "messages": { "description": "Messages can be shown on adapter installation, update and instance creation", "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "title", "text", "buttons" ], "properties": { "condition": { "description": "Message will only be shown if condition matches", "additionalProperties": false, "type": "object", "properties": { "operand": { "description": "Operand to connect multiple rules", "enum": [ "or", "and" ], "default": "and" }, "rules": { "description": "Rules which need to be true, e.g. [\"oldVersion<2.0.0\", \"newVersion>=2.0.0\"]", "type": "array", "items": { "type": "string" } } } }, "title": { "description": "Title of the shown message", "$ref": "#/definitions/multilingual" }, "text": { "description": "Text of the shown message", "$ref": "#/definitions/multilingual" }, "link": { "description": "You can define a hyperlink, which will be shown, define its text with `linkText`", "type": "string" }, "level": { "description": "The importance of the message", "enum": [ "info", "warn", "error" ], "default": "warn" }, "linkText": { "description": "If a link is defined and should be embedded in text, you can define the text here", "$ref": "#/definitions/multilingual" }, "buttons": { "description": "Predefined buttons of the message window", "type": "array", "items": { "enum": [ "ok", "agree", "cancel" ] } } } } }, "nodeProcessParams": { "type": "array", "items": { "type": "string" } } }, "allOf": [ { "if": { "$ref": "#/definitions/isCompactTrue" }, "then": { "$ref": "#/definitions/disallowNodeProcessParams" } } ] }, "objects": { "description": "Objects which will be created for the adapter", "type": "array", "items": { "$ref": "#/definitions/iobrokerObject" } }, "instanceObjects": { "description": "Objects which will be created for each instance", "type": "array", "items": { "$ref": "#/definitions/iobrokerObject" } }, "notifications": { "description": "Register notifications for the built-in notification system", "type": "array", "items": { "type": "object", "required": [ "scope", "name", "description", "categories" ], "additionalProperties": false, "properties": { "scope": { "type": "string" }, "name": { "description": "Name which will be shown to the user", "$ref": "#/definitions/multilingual" }, "description": { "description": "Description which will be shown to the user", "$ref": "#/definitions/multilingual" }, "categories": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "category", "name", "severity", "description", "regex", "limit" ], "properties": { "category": { "type": "string" }, "name": { "$ref": "#/definitions/multilingual" }, "severity": { "type": "string", "enum": [ "info", "notify", "alert" ], "description": "`info` will only be shown by admin, while `notify` might also be used by messaging adapters, `alert` ensures both" }, "description": { "$ref": "#/definitions/multilingual" }, "regex": { "type": "array", "items": { "type": "string" } }, "limit": { "type": "number", "description": "Maximum amount of notifications to collect of this type" } } } } } } }, "native": { "description": "Predefined attributes which are accessible in index_m.html and at runtime via adapter.config., e.g. {\"port\": 1234, \"password\": \"secret\"}", "type": "object" }, "protectedNative": { "description": "Array of config attributes which will only be accessible by the own adapter, e.g. [\"password\"]", "type": "array", "items": { "type": "string" } }, "encryptedNative": { "description": "Array of config attributes which will be automatically encrypted when stored via Admin configuration page and automatically decrypted at adapter runtime, e.g. [\"password\", \"token\"]", "type": "array", "items": { "type": "string" } } } }