@kohost/api-client 4.6.0 → 4.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/amqpClient.cjs.map +1 -1
- package/dist/amqpClient.js +1 -1
- package/dist/{chunk-O7GGGIEC.js → chunk-2IMG4AWC.js} +1 -1
- package/dist/{chunk-ZRDDUW43.js → chunk-2YL7KSQY.js} +1 -1
- package/dist/{chunk-MY66PCHD.js → chunk-3HJQSZ2T.js} +1 -1
- package/dist/{chunk-GEVEXWRC.js → chunk-4KN5ATFI.js} +1 -1
- package/dist/{chunk-SW6R25RL.js → chunk-4ZRENMIJ.js} +1 -1
- package/dist/{chunk-SW6R25RL.js.map → chunk-4ZRENMIJ.js.map} +1 -1
- package/dist/{chunk-WDJH6KB6.js → chunk-6JJKZ7S2.js} +1 -1
- package/dist/chunk-6UJNRRRN.js +1 -0
- package/dist/chunk-6UJNRRRN.js.map +1 -0
- package/dist/{chunk-C22WX2EA.js → chunk-7CMNK6AK.js} +1 -1
- package/dist/{chunk-KZUVMI75.js → chunk-7DKOUEFD.js} +1 -1
- package/dist/{chunk-H4QEW7UX.js → chunk-AOWAUMXJ.js} +1 -1
- package/dist/chunk-APYKNV6P.js +1 -0
- package/dist/chunk-APYKNV6P.js.map +1 -0
- package/dist/{chunk-K3BI7K45.js → chunk-BJVRWTSY.js} +1 -1
- package/dist/{chunk-5NTISVQI.js → chunk-CHJY3KBO.js} +1 -1
- package/dist/{chunk-COVXTXGW.js → chunk-CPIR7P2U.js} +1 -1
- package/dist/chunk-DFSZWI6O.js +1 -0
- package/dist/{chunk-FFZR6K5C.js.map → chunk-DFSZWI6O.js.map} +1 -1
- package/dist/{chunk-4LGPET2E.js → chunk-DLMLRKQZ.js} +1 -1
- package/dist/{chunk-ZNKWSRJZ.js → chunk-DX2J7NZO.js} +1 -1
- package/dist/{chunk-XFXPIQQM.js → chunk-ETAW42WY.js} +1 -1
- package/dist/{chunk-EQ2IXQI3.js → chunk-ETT4UEZQ.js} +1 -1
- package/dist/{chunk-SDAOQN36.js → chunk-FGOIBYLB.js} +1 -1
- package/dist/{chunk-5S72SAAF.js → chunk-FONYBVN5.js} +1 -1
- package/dist/{chunk-GMWCZUPL.js → chunk-G47QY3SE.js} +1 -1
- package/dist/{chunk-XYAPLVWB.js → chunk-HQ2QG6EN.js} +1 -1
- package/dist/{chunk-B4M7F7M5.js → chunk-IB7W7GOW.js} +1 -1
- package/dist/{chunk-6MWXN67I.js → chunk-IVLCEDR3.js} +1 -1
- package/dist/{chunk-FBDZ7FCK.js → chunk-IYYQE4TE.js} +1 -1
- package/dist/{chunk-SEHR2RFF.js → chunk-JL2S3MPB.js} +1 -1
- package/dist/{chunk-NTCRHBF6.js → chunk-JQPJ7NQ4.js} +1 -1
- package/dist/{chunk-CQ4BHSFC.js → chunk-K6UUTLUE.js} +1 -1
- package/dist/{chunk-36JIUO3H.js → chunk-KNJFTPNT.js} +1 -1
- package/dist/{chunk-U3G5ZHNU.js → chunk-L7YQHGGE.js} +1 -1
- package/dist/{chunk-U3G5ZHNU.js.map → chunk-L7YQHGGE.js.map} +1 -1
- package/dist/{chunk-GHIUL4AZ.js → chunk-LD25KYBD.js} +1 -1
- package/dist/chunk-LEGSBBUE.js +1 -0
- package/dist/chunk-LEGSBBUE.js.map +1 -0
- package/dist/{chunk-WJRMU6S7.js → chunk-MK7ONJNQ.js} +1 -1
- package/dist/{chunk-IM7UE4FC.js → chunk-OFBRETX4.js} +1 -1
- package/dist/{chunk-YTYVO2AI.js → chunk-OUVMW4V5.js} +1 -1
- package/dist/{chunk-YTYVO2AI.js.map → chunk-OUVMW4V5.js.map} +1 -1
- package/dist/{chunk-SFT5WKBP.js → chunk-OZFTX5YW.js} +1 -1
- package/dist/{chunk-LCSUHUEL.js → chunk-QILPAZ6I.js} +1 -1
- package/dist/{chunk-LWPTQZL7.js → chunk-QTOVVRD4.js} +1 -1
- package/dist/{chunk-5FYWVYCI.js → chunk-RA64RKAZ.js} +1 -1
- package/dist/{chunk-T72M33M2.js → chunk-RT32IDXF.js} +1 -1
- package/dist/{chunk-IM64FAMR.js → chunk-SQXJFAJ5.js} +1 -1
- package/dist/{chunk-5ZMJFNZZ.js → chunk-URMQYQTO.js} +1 -1
- package/dist/chunk-URMQYQTO.js.map +1 -0
- package/dist/{chunk-I6ZV2JRI.js → chunk-XCPRIGZQ.js} +1 -1
- package/dist/{chunk-E6RHOZIG.js → chunk-XMLTBQVM.js} +1 -1
- package/dist/{chunk-42QTPXOB.js → chunk-Y4J355RU.js} +1 -1
- package/dist/{chunk-RAOQ42RU.js → chunk-YI55AEJT.js} +1 -1
- package/dist/{chunk-7LBRDSLO.js → chunk-YTL6BSZ2.js} +1 -1
- package/dist/{chunk-N7RRNAL7.js → chunk-ZNENZ7TK.js} +1 -1
- package/dist/{chunk-KGOWFSKR.js → chunk-ZXVITJPZ.js} +1 -1
- package/dist/{chunk-KGOWFSKR.js.map → chunk-ZXVITJPZ.js.map} +1 -1
- package/dist/commands/index.cjs.map +1 -1
- package/dist/commands/index.js +1 -1
- package/dist/errors/index.cjs.map +1 -1
- package/dist/errors/index.js +1 -1
- package/dist/events/index.cjs.map +1 -1
- package/dist/events/index.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/models/alarm.cjs +1 -1
- package/dist/models/alarm.cjs.map +1 -1
- package/dist/models/alarm.js +1 -1
- package/dist/models/announcement.cjs +1 -1
- package/dist/models/announcement.cjs.map +1 -1
- package/dist/models/announcement.js +1 -1
- package/dist/models/automation.cjs +1 -1
- package/dist/models/automation.cjs.map +1 -1
- package/dist/models/automation.js +1 -1
- package/dist/models/camera.cjs +1 -1
- package/dist/models/camera.cjs.map +1 -1
- package/dist/models/camera.js +1 -1
- package/dist/models/category.cjs +1 -1
- package/dist/models/category.cjs.map +1 -1
- package/dist/models/category.js +1 -1
- package/dist/models/courtesy.cjs +1 -1
- package/dist/models/courtesy.cjs.map +1 -1
- package/dist/models/courtesy.js +1 -1
- package/dist/models/credential.cjs +1 -1
- package/dist/models/credential.cjs.map +1 -1
- package/dist/models/credential.js +1 -1
- package/dist/models/deviceRouter.cjs +1 -1
- package/dist/models/deviceRouter.cjs.map +1 -1
- package/dist/models/deviceRouter.js +1 -1
- package/dist/models/dimmer.cjs +1 -1
- package/dist/models/dimmer.cjs.map +1 -1
- package/dist/models/dimmer.js +1 -1
- package/dist/models/discoveredDevice.cjs +1 -1
- package/dist/models/discoveredDevice.cjs.map +1 -1
- package/dist/models/discoveredDevice.js +1 -1
- package/dist/models/emailMessage.cjs +1 -1
- package/dist/models/emailMessage.cjs.map +1 -1
- package/dist/models/emailMessage.js +1 -1
- package/dist/models/energyReport.cjs +1 -1
- package/dist/models/energyReport.cjs.map +1 -1
- package/dist/models/energyReport.js +1 -1
- package/dist/models/energyReportShard.cjs +1 -1
- package/dist/models/energyReportShard.cjs.map +1 -1
- package/dist/models/energyReportShard.js +1 -1
- package/dist/models/gateway.cjs +1 -1
- package/dist/models/gateway.cjs.map +1 -1
- package/dist/models/gateway.js +1 -1
- package/dist/models/identification.cjs +1 -1
- package/dist/models/identification.cjs.map +1 -1
- package/dist/models/identification.js +1 -1
- package/dist/models/index.cjs +1 -1
- package/dist/models/index.cjs.map +1 -1
- package/dist/models/index.js +1 -1
- package/dist/models/issue.cjs +1 -1
- package/dist/models/issue.cjs.map +1 -1
- package/dist/models/issue.js +1 -1
- package/dist/models/lock.cjs +1 -1
- package/dist/models/lock.cjs.map +1 -1
- package/dist/models/lock.js +1 -1
- package/dist/models/log.cjs +1 -1
- package/dist/models/log.cjs.map +1 -1
- package/dist/models/log.js +1 -1
- package/dist/models/mediaFile.cjs +1 -1
- package/dist/models/mediaFile.cjs.map +1 -1
- package/dist/models/mediaFile.js +1 -1
- package/dist/models/mediaSource.cjs +1 -1
- package/dist/models/mediaSource.cjs.map +1 -1
- package/dist/models/mediaSource.d.cts +3 -3
- package/dist/models/mediaSource.d.ts +3 -3
- package/dist/models/mediaSource.js +1 -1
- package/dist/models/motionSensor.cjs +1 -1
- package/dist/models/motionSensor.cjs.map +1 -1
- package/dist/models/motionSensor.js +1 -1
- package/dist/models/notification.cjs +1 -1
- package/dist/models/notification.cjs.map +1 -1
- package/dist/models/notification.d.cts +6 -0
- package/dist/models/notification.d.ts +6 -0
- package/dist/models/notification.js +1 -1
- package/dist/models/order.cjs +1 -1
- package/dist/models/order.cjs.map +1 -1
- package/dist/models/order.js +1 -1
- package/dist/models/organization.cjs +1 -1
- package/dist/models/organization.cjs.map +1 -1
- package/dist/models/organization.js +1 -1
- package/dist/models/payment.cjs +1 -1
- package/dist/models/payment.cjs.map +1 -1
- package/dist/models/payment.js +1 -1
- package/dist/models/policy.cjs +1 -1
- package/dist/models/policy.cjs.map +1 -1
- package/dist/models/policy.js +1 -1
- package/dist/models/product.cjs +1 -1
- package/dist/models/product.cjs.map +1 -1
- package/dist/models/product.js +1 -1
- package/dist/models/property.cjs +1 -1
- package/dist/models/property.cjs.map +1 -1
- package/dist/models/property.js +1 -1
- package/dist/models/reservation.cjs +1 -1
- package/dist/models/reservation.cjs.map +1 -1
- package/dist/models/reservation.js +1 -1
- package/dist/models/room.cjs +1 -1
- package/dist/models/room.cjs.map +1 -1
- package/dist/models/room.d.cts +3 -3
- package/dist/models/room.d.ts +3 -3
- package/dist/models/room.js +1 -1
- package/dist/models/scene.cjs +1 -1
- package/dist/models/scene.cjs.map +1 -1
- package/dist/models/scene.js +1 -1
- package/dist/models/shortLink.cjs +1 -1
- package/dist/models/shortLink.cjs.map +1 -1
- package/dist/models/shortLink.js +1 -1
- package/dist/models/smsMessage.cjs +1 -1
- package/dist/models/smsMessage.cjs.map +1 -1
- package/dist/models/smsMessage.js +1 -1
- package/dist/models/space.cjs +1 -1
- package/dist/models/space.cjs.map +1 -1
- package/dist/models/space.js +1 -1
- package/dist/models/switch.cjs +1 -1
- package/dist/models/switch.cjs.map +1 -1
- package/dist/models/switch.js +1 -1
- package/dist/models/systemUser.cjs +1 -1
- package/dist/models/systemUser.cjs.map +1 -1
- package/dist/models/systemUser.js +1 -1
- package/dist/models/thermostat.cjs +1 -1
- package/dist/models/thermostat.cjs.map +1 -1
- package/dist/models/thermostat.js +1 -1
- package/dist/models/ticket.cjs +1 -1
- package/dist/models/ticket.cjs.map +1 -1
- package/dist/models/ticket.js +1 -1
- package/dist/models/timeSheet.cjs +1 -1
- package/dist/models/timeSheet.cjs.map +1 -1
- package/dist/models/timeSheet.js +1 -1
- package/dist/models/user.cjs +1 -1
- package/dist/models/user.cjs.map +1 -1
- package/dist/models/user.js +1 -1
- package/dist/models/vendor.cjs +1 -1
- package/dist/models/vendor.cjs.map +1 -1
- package/dist/models/vendor.js +1 -1
- package/dist/models/windowCovering.cjs +1 -1
- package/dist/models/windowCovering.cjs.map +1 -1
- package/dist/models/windowCovering.js +1 -1
- package/dist/useCases/index.cjs.map +1 -1
- package/dist/useCases/index.js +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-5ZMJFNZZ.js.map +0 -1
- package/dist/chunk-FFZR6K5C.js +0 -1
- package/dist/chunk-HZTVHJZV.js +0 -1
- package/dist/chunk-HZTVHJZV.js.map +0 -1
- package/dist/chunk-TOFT3IJF.js +0 -1
- package/dist/chunk-TOFT3IJF.js.map +0 -1
- package/dist/chunk-V2Q4MYOW.js +0 -1
- package/dist/chunk-V2Q4MYOW.js.map +0 -1
- /package/dist/{chunk-O7GGGIEC.js.map → chunk-2IMG4AWC.js.map} +0 -0
- /package/dist/{chunk-ZRDDUW43.js.map → chunk-2YL7KSQY.js.map} +0 -0
- /package/dist/{chunk-MY66PCHD.js.map → chunk-3HJQSZ2T.js.map} +0 -0
- /package/dist/{chunk-GEVEXWRC.js.map → chunk-4KN5ATFI.js.map} +0 -0
- /package/dist/{chunk-WDJH6KB6.js.map → chunk-6JJKZ7S2.js.map} +0 -0
- /package/dist/{chunk-C22WX2EA.js.map → chunk-7CMNK6AK.js.map} +0 -0
- /package/dist/{chunk-KZUVMI75.js.map → chunk-7DKOUEFD.js.map} +0 -0
- /package/dist/{chunk-H4QEW7UX.js.map → chunk-AOWAUMXJ.js.map} +0 -0
- /package/dist/{chunk-K3BI7K45.js.map → chunk-BJVRWTSY.js.map} +0 -0
- /package/dist/{chunk-5NTISVQI.js.map → chunk-CHJY3KBO.js.map} +0 -0
- /package/dist/{chunk-COVXTXGW.js.map → chunk-CPIR7P2U.js.map} +0 -0
- /package/dist/{chunk-4LGPET2E.js.map → chunk-DLMLRKQZ.js.map} +0 -0
- /package/dist/{chunk-ZNKWSRJZ.js.map → chunk-DX2J7NZO.js.map} +0 -0
- /package/dist/{chunk-XFXPIQQM.js.map → chunk-ETAW42WY.js.map} +0 -0
- /package/dist/{chunk-EQ2IXQI3.js.map → chunk-ETT4UEZQ.js.map} +0 -0
- /package/dist/{chunk-SDAOQN36.js.map → chunk-FGOIBYLB.js.map} +0 -0
- /package/dist/{chunk-5S72SAAF.js.map → chunk-FONYBVN5.js.map} +0 -0
- /package/dist/{chunk-GMWCZUPL.js.map → chunk-G47QY3SE.js.map} +0 -0
- /package/dist/{chunk-XYAPLVWB.js.map → chunk-HQ2QG6EN.js.map} +0 -0
- /package/dist/{chunk-B4M7F7M5.js.map → chunk-IB7W7GOW.js.map} +0 -0
- /package/dist/{chunk-6MWXN67I.js.map → chunk-IVLCEDR3.js.map} +0 -0
- /package/dist/{chunk-FBDZ7FCK.js.map → chunk-IYYQE4TE.js.map} +0 -0
- /package/dist/{chunk-SEHR2RFF.js.map → chunk-JL2S3MPB.js.map} +0 -0
- /package/dist/{chunk-NTCRHBF6.js.map → chunk-JQPJ7NQ4.js.map} +0 -0
- /package/dist/{chunk-CQ4BHSFC.js.map → chunk-K6UUTLUE.js.map} +0 -0
- /package/dist/{chunk-36JIUO3H.js.map → chunk-KNJFTPNT.js.map} +0 -0
- /package/dist/{chunk-GHIUL4AZ.js.map → chunk-LD25KYBD.js.map} +0 -0
- /package/dist/{chunk-WJRMU6S7.js.map → chunk-MK7ONJNQ.js.map} +0 -0
- /package/dist/{chunk-IM7UE4FC.js.map → chunk-OFBRETX4.js.map} +0 -0
- /package/dist/{chunk-SFT5WKBP.js.map → chunk-OZFTX5YW.js.map} +0 -0
- /package/dist/{chunk-LCSUHUEL.js.map → chunk-QILPAZ6I.js.map} +0 -0
- /package/dist/{chunk-LWPTQZL7.js.map → chunk-QTOVVRD4.js.map} +0 -0
- /package/dist/{chunk-5FYWVYCI.js.map → chunk-RA64RKAZ.js.map} +0 -0
- /package/dist/{chunk-T72M33M2.js.map → chunk-RT32IDXF.js.map} +0 -0
- /package/dist/{chunk-IM64FAMR.js.map → chunk-SQXJFAJ5.js.map} +0 -0
- /package/dist/{chunk-I6ZV2JRI.js.map → chunk-XCPRIGZQ.js.map} +0 -0
- /package/dist/{chunk-E6RHOZIG.js.map → chunk-XMLTBQVM.js.map} +0 -0
- /package/dist/{chunk-42QTPXOB.js.map → chunk-Y4J355RU.js.map} +0 -0
- /package/dist/{chunk-RAOQ42RU.js.map → chunk-YI55AEJT.js.map} +0 -0
- /package/dist/{chunk-7LBRDSLO.js.map → chunk-YTL6BSZ2.js.map} +0 -0
- /package/dist/{chunk-N7RRNAL7.js.map → chunk-ZNENZ7TK.js.map} +0 -0
package/dist/amqpClient.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/amqpClient.js","../src/defs.js","../src/errors/index.js","../src/errors/appError.js","../src/errors/authenticationError.js","../src/errors/authorizationError.js","../src/errors/conflictError.js","../src/errors/deviceCommError.js","../src/errors/loginError.js","../src/errors/notFoundError.js","../src/errors/requestError.js","../src/errors/systemCommError.js","../src/errors/tokenExpiredError.js","../src/errors/unprocessableRequestError.js","../src/errors/validationError.js"],"sourcesContent":["import { connect } from \"amqplib\";\nimport { isFatalError } from \"amqplib/lib/connection\";\nimport dbg from \"debug\";\nimport { Buffer } from \"node:buffer\";\nimport * as crypto from \"node:crypto\";\nimport { amqpExchanges as exchanges } from \"./defs\";\nimport * as Errors from \"./errors\";\n\nconst randomUUID = crypto.randomUUID;\n\nconst debug = dbg(\"kohost:amqp-client\");\n\nconst HEADER_KEY_ORGANIZATION_ID = \"X-Organization-Id\";\nconst HEADER_KEY_PROPERTY_ID = \"X-Property-Id\";\nconst HEADER_KEY_DRIVER = \"X-Driver\";\nconst HEADER_KEY_COMMAND_NAME = \"X-Command-Name\";\nconst HEADER_KEY_EVENT_NAME = \"X-Event-Name\";\n\nexport class KohostAMQPClient {\n static get Message() {\n return Message;\n }\n\n static get exchanges() {\n return exchanges;\n }\n static generateCorrelationId() {\n return randomUUID();\n }\n\n static validateMessage(message) {\n if (!message) throw new Error(\"Message is required\");\n }\n\n static parseError(err) {\n let type;\n let message;\n let options = {};\n if (err.message && err.type) {\n const { message: errMessage, type: errType, ...rest } = err;\n type = errType;\n message = errMessage;\n options = rest;\n } else {\n message = err.message || \"Unknown Error\";\n }\n\n debug(\"parseError\", type, message, options);\n\n if (type && Errors[type]) {\n return new Errors[type](message, options);\n }\n\n return new Error(message, options);\n }\n\n static parseMessage(message) {\n let error = null;\n let data = {};\n let query = {};\n let context = {};\n let headers = {};\n\n const isCommand = message?.properties?.type === \"Command\";\n const isEvent = message?.properties?.type === \"Event\";\n\n const messageHeaders = message?.properties?.headers || {};\n\n const commandName = messageHeaders[HEADER_KEY_COMMAND_NAME] || null;\n const eventName = messageHeaders[HEADER_KEY_EVENT_NAME] || null;\n\n if (message.content) {\n try {\n const payload =\n message.properties?.contentType === \"application/json\"\n ? JSON.parse(message.content.toString())\n : message.content.toString();\n data = payload?.data || {};\n error = payload?.error;\n query = payload?.query || {};\n context = payload?.context || {};\n } catch (error) {\n debug(\"error parsing content\", error);\n data = message.content.toString();\n }\n }\n\n if (message?.properties?.headers) {\n const orgHeader = message.properties.headers[HEADER_KEY_ORGANIZATION_ID];\n const propertyHeader = message.properties.headers[HEADER_KEY_PROPERTY_ID];\n const driverHeader = message.properties.headers[HEADER_KEY_DRIVER];\n\n if (orgHeader) {\n context.organizationId = orgHeader;\n headers[HEADER_KEY_ORGANIZATION_ID] = orgHeader;\n }\n\n if (propertyHeader) {\n context.propertyId = propertyHeader;\n headers[HEADER_KEY_PROPERTY_ID] = propertyHeader;\n }\n\n if (driverHeader) {\n context.driver = driverHeader;\n headers[HEADER_KEY_DRIVER] = driverHeader;\n }\n }\n\n const parsed = {};\n\n if (error) parsed.error = this.parseError(error);\n\n parsed.data = data;\n parsed.query = query;\n parsed.context = context;\n parsed.headers = headers;\n\n if (isEvent && eventName) parsed.event = eventName;\n else if (isCommand && commandName) parsed.command = commandName;\n\n debug(\"amqp parsed %o\", parsed);\n\n return parsed;\n }\n\n static getMessage(message) {\n if (!message?.content) return null;\n const payload = JSON.parse(message.content.toString());\n const data = payload?.data;\n return data;\n }\n\n static isFatalError(err) {\n return isFatalError(err);\n }\n\n async createConnection(connection, options = {}) {\n return await connect(connection, options);\n }\n\n static createMessage(content) {\n return new Message(content);\n }\n\n async createChannel(connection) {\n const channel = await connection.createChannel();\n return channel;\n }\n\n async assertExchange(channel, { exchange, type, options }) {\n return await channel.assertExchange(exchange, type, options);\n }\n\n async assertQueue(channel, { queue, options }) {\n return await channel.assertQueue(queue, options);\n }\n\n async bindQueue(channel, { queue, exchange, routingKey, args }) {\n return await channel.bindQueue(queue, exchange, routingKey, args);\n }\n\n async bindExchange(channel, { source, destination, routingKey, args }) {\n return await channel.bindExchange(destination, source, routingKey, args);\n }\n\n async subscribeToQueue(channel, { queue, cb, options }) {\n return await channel.consume(queue, cb, options);\n }\n\n publishToExchange(channel, { exchange, routingKey, content, options }) {\n return channel.publish(exchange, routingKey, content, options);\n }\n}\n\nclass Message {\n constructor(content) {\n this.toExchange = null;\n this.content = content;\n this.options = {\n contentType: \"application/json\",\n timestamp: Date.now(),\n };\n this.routingKey = \"\";\n }\n\n get correlationId() {\n return this.options.correlationId || null;\n }\n\n to({ exchange }) {\n if (typeof exchange === \"undefined\")\n throw new Error(\"Exchange is required\");\n this.toExchange = exchange;\n return this;\n }\n\n withType(type) {\n this.options.type = type;\n return this;\n }\n\n withRoutingKey(routingKey) {\n this.routingKey = routingKey;\n return this;\n }\n\n withHeaders(headers) {\n if (!this.options.headers) this.options.headers = {};\n this.options.headers = { ...this.options.headers, ...headers };\n return this;\n }\n\n withContext(context) {\n for (let key in context) {\n this.withHeaders({ [key]: context[key] });\n }\n return this;\n }\n\n withCorrelationId(correlationId) {\n this.options.correlationId = correlationId;\n return this;\n }\n\n withReplyTo(queue) {\n this.options.replyTo = queue;\n return this;\n }\n\n build() {\n let content = this.content;\n if (content.build && typeof content.build === \"function\")\n content = content.build();\n\n return {\n exchange: this.toExchange,\n content: Buffer.from(JSON.stringify(content)),\n options: this.options,\n routingKey: this.routingKey,\n };\n }\n}\n","export const amqpExchanges = {\n // routes commands based on `command-name` header and in many cases `property-id` header\n Commands: {\n name: \"kohost.commands\",\n type: \"headers\",\n options: {\n durable: true,\n },\n },\n CommandResponses: {\n name: \"kohost.commandResponses\",\n type: \"topic\",\n options: {\n durable: true,\n },\n },\n // routes events based on routing keys\n DriverEvents: {\n name: \"kohost.events.drivers\",\n type: \"topic\",\n options: {\n durable: true,\n },\n },\n AppEvents: {\n name: \"kohost.events.app\",\n type: \"topic\",\n options: {\n durable: true,\n },\n },\n Direct: {\n name: \"kohost.direct\",\n type: \"direct\",\n options: {\n durable: true,\n },\n },\n // dead letter exchange\n dlx: {\n name: \"kohost.dlx\",\n type: \"direct\",\n },\n};\n\nexport const deviceTypes = [\n \"dimmer\",\n \"switch\",\n \"thermostat\",\n \"lock\",\n \"windowCovering\",\n \"courtesy\",\n \"alarm\",\n \"camera\",\n \"mediaSource\",\n \"motionSensor\",\n \"gateway\",\n];\n","// This file is auto-generated. Do not edit this file manually.\n// Generated on: 2025-04-24T18:49:38.403Z\n\nexport * from \"./appError\";\nexport * from \"./authenticationError\";\nexport * from \"./authorizationError\";\nexport * from \"./conflictError\";\nexport * from \"./deviceCommError\";\nexport * from \"./loginError\";\nexport * from \"./notFoundError\";\nexport * from \"./requestError\";\nexport * from \"./systemCommError\";\nexport * from \"./tokenExpiredError\";\nexport * from \"./unprocessableRequestError\";\nexport * from \"./validationError\";","export class AppError extends Error {\n constructor(message = \"Internal Server Error\", options) {\n super(message, options);\n this.type = this.constructor.name;\n this.statusCode = 500;\n this.name = \"AppError\";\n Object.setPrototypeOf(this, AppError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class AuthenticationError extends AppError {\n constructor(message = \"Authentication Error\", options = {}) {\n super(message, options);\n this.statusCode = 401;\n this.name = \"AuthenticationError\";\n Object.setPrototypeOf(this, AuthenticationError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class AuthorizationError extends AppError {\n constructor(message = \"Authorization Error\", options = {}) {\n super(message, options);\n this.statusCode = 403;\n this.name = \"AuthorizationError\";\n Object.setPrototypeOf(this, AuthorizationError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class ConflictError extends AppError {\n constructor(message = \"Bad Request\", options = {}) {\n super(message, options);\n this.statusCode = 409;\n this.name = \"ConflictError\";\n Object.setPrototypeOf(this, ConflictError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class DeviceCommError extends AppError {\n constructor(message = \"Device Communication Error\", options = {}) {\n super(message, options);\n this.statusCode = 503;\n this.name = \"DeviceCommError\";\n Object.setPrototypeOf(this, DeviceCommError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class LoginError extends AppError {\n constructor(message = \"Invalid Login information provided\", options = {}) {\n super(message, options);\n this.statusCode = 401;\n this.name = \"LoginError\";\n Object.setPrototypeOf(this, LoginError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class NotFoundError extends AppError {\n constructor(message = \"Resource Not Found\", options = {}) {\n super(message, options);\n this.statusCode = 404;\n this.name = \"NotFoundError\";\n Object.setPrototypeOf(this, NotFoundError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class RequestError extends AppError {\n constructor(message = \"Bad Request\", options = {}) {\n super(message, options);\n this.statusCode = 400;\n this.name = \"RequestError\";\n Object.setPrototypeOf(this, RequestError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class SystemCommError extends AppError {\n constructor(message = \"System Communication Error\", options = {}) {\n super(message, options);\n this.statusCode = 503;\n this.name = \"SystemCommError\";\n Object.setPrototypeOf(this, SystemCommError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class TokenExpiredError extends AppError {\n constructor(message = \"Token Expired\", options = {}) {\n super(message, options);\n this.statusCode = 401;\n this.name = \"TokenExpiredError\";\n Object.setPrototypeOf(this, TokenExpiredError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class UnprocessableRequestError extends AppError {\n constructor(message = \"Unprocessable Request Error\", options = {}) {\n super(message, options);\n this.statusCode = 422;\n this.name = \"UnprocessableRequestError\";\n Object.setPrototypeOf(this, UnprocessableRequestError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class ValidationError extends AppError {\n constructor(message = \"Validation Error\", options = {}) {\n super(message, options);\n this.statusCode = 400;\n this.name = \"ValidationError\";\n Object.setPrototypeOf(this, ValidationError.prototype);\n }\n}\n"],"mappings":"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","names":["randomUUID","dbg","error"]}
|
|
1
|
+
{"version":3,"sources":["../src/amqpClient.js","../src/defs.js","../src/errors/index.js","../src/errors/appError.js","../src/errors/authenticationError.js","../src/errors/authorizationError.js","../src/errors/conflictError.js","../src/errors/deviceCommError.js","../src/errors/loginError.js","../src/errors/notFoundError.js","../src/errors/requestError.js","../src/errors/systemCommError.js","../src/errors/tokenExpiredError.js","../src/errors/unprocessableRequestError.js","../src/errors/validationError.js"],"sourcesContent":["import { connect } from \"amqplib\";\nimport { isFatalError } from \"amqplib/lib/connection\";\nimport dbg from \"debug\";\nimport { Buffer } from \"node:buffer\";\nimport * as crypto from \"node:crypto\";\nimport { amqpExchanges as exchanges } from \"./defs\";\nimport * as Errors from \"./errors\";\n\nconst randomUUID = crypto.randomUUID;\n\nconst debug = dbg(\"kohost:amqp-client\");\n\nconst HEADER_KEY_ORGANIZATION_ID = \"X-Organization-Id\";\nconst HEADER_KEY_PROPERTY_ID = \"X-Property-Id\";\nconst HEADER_KEY_DRIVER = \"X-Driver\";\nconst HEADER_KEY_COMMAND_NAME = \"X-Command-Name\";\nconst HEADER_KEY_EVENT_NAME = \"X-Event-Name\";\n\nexport class KohostAMQPClient {\n static get Message() {\n return Message;\n }\n\n static get exchanges() {\n return exchanges;\n }\n static generateCorrelationId() {\n return randomUUID();\n }\n\n static validateMessage(message) {\n if (!message) throw new Error(\"Message is required\");\n }\n\n static parseError(err) {\n let type;\n let message;\n let options = {};\n if (err.message && err.type) {\n const { message: errMessage, type: errType, ...rest } = err;\n type = errType;\n message = errMessage;\n options = rest;\n } else {\n message = err.message || \"Unknown Error\";\n }\n\n debug(\"parseError\", type, message, options);\n\n if (type && Errors[type]) {\n return new Errors[type](message, options);\n }\n\n return new Error(message, options);\n }\n\n static parseMessage(message) {\n let error = null;\n let data = {};\n let query = {};\n let context = {};\n let headers = {};\n\n const isCommand = message?.properties?.type === \"Command\";\n const isEvent = message?.properties?.type === \"Event\";\n\n const messageHeaders = message?.properties?.headers || {};\n\n const commandName = messageHeaders[HEADER_KEY_COMMAND_NAME] || null;\n const eventName = messageHeaders[HEADER_KEY_EVENT_NAME] || null;\n\n if (message.content) {\n try {\n const payload =\n message.properties?.contentType === \"application/json\"\n ? JSON.parse(message.content.toString())\n : message.content.toString();\n data = payload?.data || {};\n error = payload?.error;\n query = payload?.query || {};\n context = payload?.context || {};\n } catch (error) {\n debug(\"error parsing content\", error);\n data = message.content.toString();\n }\n }\n\n if (message?.properties?.headers) {\n const orgHeader = message.properties.headers[HEADER_KEY_ORGANIZATION_ID];\n const propertyHeader = message.properties.headers[HEADER_KEY_PROPERTY_ID];\n const driverHeader = message.properties.headers[HEADER_KEY_DRIVER];\n\n if (orgHeader) {\n context.organizationId = orgHeader;\n headers[HEADER_KEY_ORGANIZATION_ID] = orgHeader;\n }\n\n if (propertyHeader) {\n context.propertyId = propertyHeader;\n headers[HEADER_KEY_PROPERTY_ID] = propertyHeader;\n }\n\n if (driverHeader) {\n context.driver = driverHeader;\n headers[HEADER_KEY_DRIVER] = driverHeader;\n }\n }\n\n const parsed = {};\n\n if (error) parsed.error = this.parseError(error);\n\n parsed.data = data;\n parsed.query = query;\n parsed.context = context;\n parsed.headers = headers;\n\n if (isEvent && eventName) parsed.event = eventName;\n else if (isCommand && commandName) parsed.command = commandName;\n\n debug(\"amqp parsed %o\", parsed);\n\n return parsed;\n }\n\n static getMessage(message) {\n if (!message?.content) return null;\n const payload = JSON.parse(message.content.toString());\n const data = payload?.data;\n return data;\n }\n\n static isFatalError(err) {\n return isFatalError(err);\n }\n\n async createConnection(connection, options = {}) {\n return await connect(connection, options);\n }\n\n static createMessage(content) {\n return new Message(content);\n }\n\n async createChannel(connection) {\n const channel = await connection.createChannel();\n return channel;\n }\n\n async assertExchange(channel, { exchange, type, options }) {\n return await channel.assertExchange(exchange, type, options);\n }\n\n async assertQueue(channel, { queue, options }) {\n return await channel.assertQueue(queue, options);\n }\n\n async bindQueue(channel, { queue, exchange, routingKey, args }) {\n return await channel.bindQueue(queue, exchange, routingKey, args);\n }\n\n async bindExchange(channel, { source, destination, routingKey, args }) {\n return await channel.bindExchange(destination, source, routingKey, args);\n }\n\n async subscribeToQueue(channel, { queue, cb, options }) {\n return await channel.consume(queue, cb, options);\n }\n\n publishToExchange(channel, { exchange, routingKey, content, options }) {\n return channel.publish(exchange, routingKey, content, options);\n }\n}\n\nclass Message {\n constructor(content) {\n this.toExchange = null;\n this.content = content;\n this.options = {\n contentType: \"application/json\",\n timestamp: Date.now(),\n };\n this.routingKey = \"\";\n }\n\n get correlationId() {\n return this.options.correlationId || null;\n }\n\n to({ exchange }) {\n if (typeof exchange === \"undefined\")\n throw new Error(\"Exchange is required\");\n this.toExchange = exchange;\n return this;\n }\n\n withType(type) {\n this.options.type = type;\n return this;\n }\n\n withRoutingKey(routingKey) {\n this.routingKey = routingKey;\n return this;\n }\n\n withHeaders(headers) {\n if (!this.options.headers) this.options.headers = {};\n this.options.headers = { ...this.options.headers, ...headers };\n return this;\n }\n\n withContext(context) {\n for (let key in context) {\n this.withHeaders({ [key]: context[key] });\n }\n return this;\n }\n\n withCorrelationId(correlationId) {\n this.options.correlationId = correlationId;\n return this;\n }\n\n withReplyTo(queue) {\n this.options.replyTo = queue;\n return this;\n }\n\n build() {\n let content = this.content;\n if (content.build && typeof content.build === \"function\")\n content = content.build();\n\n return {\n exchange: this.toExchange,\n content: Buffer.from(JSON.stringify(content)),\n options: this.options,\n routingKey: this.routingKey,\n };\n }\n}\n","export const amqpExchanges = {\n // routes commands based on `command-name` header and in many cases `property-id` header\n Commands: {\n name: \"kohost.commands\",\n type: \"headers\",\n options: {\n durable: true,\n },\n },\n CommandResponses: {\n name: \"kohost.commandResponses\",\n type: \"topic\",\n options: {\n durable: true,\n },\n },\n // routes events based on routing keys\n DriverEvents: {\n name: \"kohost.events.drivers\",\n type: \"topic\",\n options: {\n durable: true,\n },\n },\n AppEvents: {\n name: \"kohost.events.app\",\n type: \"topic\",\n options: {\n durable: true,\n },\n },\n Direct: {\n name: \"kohost.direct\",\n type: \"direct\",\n options: {\n durable: true,\n },\n },\n // dead letter exchange\n dlx: {\n name: \"kohost.dlx\",\n type: \"direct\",\n },\n};\n\nexport const deviceTypes = [\n \"dimmer\",\n \"switch\",\n \"thermostat\",\n \"lock\",\n \"windowCovering\",\n \"courtesy\",\n \"alarm\",\n \"camera\",\n \"mediaSource\",\n \"motionSensor\",\n \"gateway\",\n];\n","// This file is auto-generated. Do not edit this file manually.\n// Generated on: 2025-05-09T23:07:51.113Z\n\nexport * from \"./appError\";\nexport * from \"./authenticationError\";\nexport * from \"./authorizationError\";\nexport * from \"./conflictError\";\nexport * from \"./deviceCommError\";\nexport * from \"./loginError\";\nexport * from \"./notFoundError\";\nexport * from \"./requestError\";\nexport * from \"./systemCommError\";\nexport * from \"./tokenExpiredError\";\nexport * from \"./unprocessableRequestError\";\nexport * from \"./validationError\";","export class AppError extends Error {\n constructor(message = \"Internal Server Error\", options) {\n super(message, options);\n this.type = this.constructor.name;\n this.statusCode = 500;\n this.name = \"AppError\";\n Object.setPrototypeOf(this, AppError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class AuthenticationError extends AppError {\n constructor(message = \"Authentication Error\", options = {}) {\n super(message, options);\n this.statusCode = 401;\n this.name = \"AuthenticationError\";\n Object.setPrototypeOf(this, AuthenticationError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class AuthorizationError extends AppError {\n constructor(message = \"Authorization Error\", options = {}) {\n super(message, options);\n this.statusCode = 403;\n this.name = \"AuthorizationError\";\n Object.setPrototypeOf(this, AuthorizationError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class ConflictError extends AppError {\n constructor(message = \"Bad Request\", options = {}) {\n super(message, options);\n this.statusCode = 409;\n this.name = \"ConflictError\";\n Object.setPrototypeOf(this, ConflictError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class DeviceCommError extends AppError {\n constructor(message = \"Device Communication Error\", options = {}) {\n super(message, options);\n this.statusCode = 503;\n this.name = \"DeviceCommError\";\n Object.setPrototypeOf(this, DeviceCommError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class LoginError extends AppError {\n constructor(message = \"Invalid Login information provided\", options = {}) {\n super(message, options);\n this.statusCode = 401;\n this.name = \"LoginError\";\n Object.setPrototypeOf(this, LoginError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class NotFoundError extends AppError {\n constructor(message = \"Resource Not Found\", options = {}) {\n super(message, options);\n this.statusCode = 404;\n this.name = \"NotFoundError\";\n Object.setPrototypeOf(this, NotFoundError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class RequestError extends AppError {\n constructor(message = \"Bad Request\", options = {}) {\n super(message, options);\n this.statusCode = 400;\n this.name = \"RequestError\";\n Object.setPrototypeOf(this, RequestError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class SystemCommError extends AppError {\n constructor(message = \"System Communication Error\", options = {}) {\n super(message, options);\n this.statusCode = 503;\n this.name = \"SystemCommError\";\n Object.setPrototypeOf(this, SystemCommError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class TokenExpiredError extends AppError {\n constructor(message = \"Token Expired\", options = {}) {\n super(message, options);\n this.statusCode = 401;\n this.name = \"TokenExpiredError\";\n Object.setPrototypeOf(this, TokenExpiredError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class UnprocessableRequestError extends AppError {\n constructor(message = \"Unprocessable Request Error\", options = {}) {\n super(message, options);\n this.statusCode = 422;\n this.name = \"UnprocessableRequestError\";\n Object.setPrototypeOf(this, UnprocessableRequestError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class ValidationError extends AppError {\n constructor(message = \"Validation Error\", options = {}) {\n super(message, options);\n this.statusCode = 400;\n this.name = \"ValidationError\";\n Object.setPrototypeOf(this, ValidationError.prototype);\n }\n}\n"],"mappings":"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","names":["randomUUID","dbg","error"]}
|
package/dist/amqpClient.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{KohostAMQPClient}from"./chunk-
|
|
1
|
+
import{KohostAMQPClient}from"./chunk-6JJKZ7S2.js";import"./chunk-4ZRENMIJ.js";import"./chunk-FU3MLFEZ.js";import"./chunk-S3LGXCUW.js";import"./chunk-R36FVWOK.js";import"./chunk-J3IXW2RX.js";import"./chunk-ELAUVDF4.js";import"./chunk-ZXW3Q5ZK.js";import"./chunk-5FSWHSBF.js";import"./chunk-FWQABD55.js";import"./chunk-WN4Z5JJD.js";import"./chunk-7GGLCJ6I.js";import"./chunk-3AE3KSKI.js";import"./chunk-P3ZPJTJ2.js";import"./chunk-THXOWLL3.js";import"./chunk-XE4OXN2W.js";export{KohostAMQPClient};//# sourceMappingURL=amqpClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{validateCategory}from"./chunk-
|
|
1
|
+
import{validateCategory}from"./chunk-6UJNRRRN.js";import{Entity}from"./chunk-YPJMXYGL.js";import{__name}from"./chunk-XE4OXN2W.js";var Category=class extends Entity{static{__name(this,"Category")}constructor(data){super(data),this.id=data.id,this.type=data.type,void 0!==data.name&&(this.name=data.name),void 0!==data.driver&&(this.driver=data.driver),void 0!==data.description&&(this.description=data.description),void 0!==data.image&&(this.image=data.image),void 0!==data.rating&&(this.rating=data.rating),this.discriminator=data.discriminator,void 0!==data.systemId&&(this.systemId=data.systemId)}};Object.defineProperty(Category.prototype,"schema",{value:{$schema:"http://json-schema.org/draft-07/schema",$id:"category.json",title:"Category",type:"object",required:["id","type","discriminator"],properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",enum:["category"],default:"category"},name:{type:"string",minLength:1},driver:{$ref:"definitions.json#/definitions/driver"},description:{type:"string"},image:{$ref:"mediaFile.json"},rating:{type:"number",minimum:0,maximum:10,default:9},discriminator:{type:"string",enum:["space","product","mediaFile","property","user"]},systemId:{$ref:"definitions.json#/definitions/systemId"}}}}),Object.defineProperty(Category.prototype,"validator",{get:__name((function(){return validateCategory}),"get")});export{Category};//# sourceMappingURL=chunk-2IMG4AWC.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{validateTimeSheet}from"./chunk-
|
|
1
|
+
import{validateTimeSheet}from"./chunk-6UJNRRRN.js";import{Entity}from"./chunk-YPJMXYGL.js";import{__name}from"./chunk-XE4OXN2W.js";var TimeSheet=class extends Entity{static{__name(this,"TimeSheet")}constructor(data){super(data),void 0!==data.id&&(this.id=data.id),void 0!==data.type&&(this.type=data.type),this.userId=data.userId,this.day=data.day,void 0!==data.locked&&(this.locked=data.locked),void 0!==data.timeEntries&&(this.timeEntries=data.timeEntries)}};Object.defineProperty(TimeSheet.prototype,"schema",{value:{$schema:"http://json-schema.org/draft-07/schema",$id:"timeSheet.json",title:"Time Sheet",type:"object",required:["userId","day"],properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",default:"timeSheet",enum:["timeSheet"]},userId:{$ref:"definitions.json#/definitions/id"},day:{type:["string","object"],format:"date-time"},locked:{type:"boolean",default:!1,description:"If true, the time sheet is locked and cannot be modified"},timeEntries:{type:"array",default:[],items:{type:"object",properties:{id:{$ref:"definitions.json#/definitions/id"},discriminator:{type:"string",enum:["working","driving","meeting","break"]},start:{type:["string","object"],format:"date-time"},end:{type:["string","object"],format:"date-time"},comment:{type:"string"},ticketId:{type:"string"}},required:["start","discriminator"],additionalProperties:!1}}}}}),Object.defineProperty(TimeSheet.prototype,"validator",{get:__name((function(){return validateTimeSheet}),"get")});export{TimeSheet};//# sourceMappingURL=chunk-2YL7KSQY.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{validateLock}from"./chunk-
|
|
1
|
+
import{validateLock}from"./chunk-6UJNRRRN.js";import{Entity}from"./chunk-YPJMXYGL.js";import{__name}from"./chunk-XE4OXN2W.js";var Lock=class extends Entity{static{__name(this,"Lock")}constructor(data){super(data),this.id=data.id,void 0!==data.name&&(this.name=data.name),this.type=data.type,void 0!==data.offline&&(this.offline=data.offline),void 0!==data.supportedNotifications&&(this.supportedNotifications=data.supportedNotifications),void 0!==data.notification&&(this.notification=data.notification),this.driver=data.driver,this.state=data.state,void 0!==data.mode&&(this.mode=data.mode),void 0!==data.supportedModes&&(this.supportedModes=data.supportedModes),void 0!==data.batteryLevel&&(this.batteryLevel=data.batteryLevel),void 0!==data.systemId&&(this.systemId=data.systemId),void 0!==data.watts&&(this.watts=data.watts),void 0!==data.icon&&(this.icon=data.icon),void 0!==data.modelNumber&&(this.modelNumber=data.modelNumber),void 0!==data.serialNumber&&(this.serialNumber=data.serialNumber),void 0!==data.firmwareVersion&&(this.firmwareVersion=data.firmwareVersion)}};Object.defineProperty(Lock.prototype,"schema",{value:{$schema:"http://json-schema.org/draft-07/schema",$id:"lock.json",title:"Lock",description:"Any smart lock",type:"object",properties:{id:{$ref:"definitions.json#/definitions/id"},name:{type:"string"},type:{$ref:"definitions.json#/definitions/type"},offline:{type:"boolean"},supportedNotifications:{$ref:"definitions.json#/definitions/supportedNotifications"},notification:{$ref:"definitions.json#/definitions/notification"},driver:{$ref:"definitions.json#/definitions/driver"},state:{type:["string","null"],enum:["locked","unlocked",null]},mode:{type:["string","null"],enum:["normal","autoLock","emergencyOpen","emergencyClose","holdOpen","lockdown",null],description:"emergencyOpen and emergencyClose are deprecated and can be removed once Salto, Paxton and Geovision drivers are updated",default:null},supportedModes:{type:"array",uniqueItems:!0,items:{enum:["normal","autoLock","emergencyOpen","emergencyClose","holdOpen","lockdown",null]}},batteryLevel:{$ref:"definitions.json#/definitions/batteryLevel"},systemId:{$ref:"definitions.json#/definitions/systemId"},watts:{$ref:"definitions.json#/definitions/watts"},icon:{type:"string"},modelNumber:{type:"string"},serialNumber:{type:"string"},firmwareVersion:{type:"string"}},required:["id","type","state","driver"]}}),Object.defineProperty(Lock.prototype,"validator",{get:__name((function(){return validateLock}),"get")});export{Lock};//# sourceMappingURL=chunk-3HJQSZ2T.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{validateDimmer}from"./chunk-
|
|
1
|
+
import{validateDimmer}from"./chunk-6UJNRRRN.js";import{Entity}from"./chunk-YPJMXYGL.js";import{__name}from"./chunk-XE4OXN2W.js";var Dimmer=class extends Entity{static{__name(this,"Dimmer")}constructor(data){super(data),this.id=data.id,void 0!==data.name&&(this.name=data.name),this.type=data.type,void 0!==data.supportedNotifications&&(this.supportedNotifications=data.supportedNotifications),void 0!==data.notification&&(this.notification=data.notification),this.driver=data.driver,void 0!==data.offline&&(this.offline=data.offline),this.level=data.level,void 0!==data.systemId&&(this.systemId=data.systemId),void 0!==data.watts&&(this.watts=data.watts),void 0!==data.icon&&(this.icon=data.icon),void 0!==data.modelNumber&&(this.modelNumber=data.modelNumber),void 0!==data.serialNumber&&(this.serialNumber=data.serialNumber),void 0!==data.firmwareVersion&&(this.firmwareVersion=data.firmwareVersion)}};Object.defineProperty(Dimmer.prototype,"schema",{value:{$schema:"http://json-schema.org/draft-07/schema",$id:"dimmer.json",title:"Dimmer",description:"Any smart dimmer",type:"object",properties:{id:{$ref:"definitions.json#/definitions/id"},name:{type:"string"},type:{$ref:"definitions.json#/definitions/type"},supportedNotifications:{$ref:"definitions.json#/definitions/supportedNotifications"},notification:{$ref:"definitions.json#/definitions/notification"},driver:{$ref:"definitions.json#/definitions/driver"},offline:{type:"boolean"},level:{type:["number","null"],minimum:0,maximum:100},systemId:{$ref:"definitions.json#/definitions/systemId"},watts:{$ref:"definitions.json#/definitions/watts"},icon:{type:"string"},modelNumber:{type:"string"},serialNumber:{type:"string"},firmwareVersion:{type:"string"}},required:["id","type","level","driver"]}}),Object.defineProperty(Dimmer.prototype,"validator",{get:__name((function(){return validateDimmer}),"get")});export{Dimmer};//# sourceMappingURL=chunk-4KN5ATFI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{LoginError}from"./chunk-FU3MLFEZ.js";import{NotFoundError}from"./chunk-S3LGXCUW.js";import{RequestError}from"./chunk-R36FVWOK.js";import{SystemCommError}from"./chunk-J3IXW2RX.js";import{TokenExpiredError}from"./chunk-ELAUVDF4.js";import{UnprocessableRequestError}from"./chunk-ZXW3Q5ZK.js";import{ValidationError}from"./chunk-5FSWHSBF.js";import{AuthenticationError}from"./chunk-FWQABD55.js";import{AuthorizationError}from"./chunk-WN4Z5JJD.js";import{ConflictError}from"./chunk-7GGLCJ6I.js";import{DeviceCommError}from"./chunk-3AE3KSKI.js";import{AppError}from"./chunk-P3ZPJTJ2.js";import{__export}from"./chunk-XE4OXN2W.js";var errors_exports={};__export(errors_exports,{AppError:()=>AppError,AuthenticationError:()=>AuthenticationError,AuthorizationError:()=>AuthorizationError,ConflictError:()=>ConflictError,DeviceCommError:()=>DeviceCommError,LoginError:()=>LoginError,NotFoundError:()=>NotFoundError,RequestError:()=>RequestError,SystemCommError:()=>SystemCommError,TokenExpiredError:()=>TokenExpiredError,UnprocessableRequestError:()=>UnprocessableRequestError,ValidationError:()=>ValidationError});export{errors_exports};//# sourceMappingURL=chunk-
|
|
1
|
+
import{LoginError}from"./chunk-FU3MLFEZ.js";import{NotFoundError}from"./chunk-S3LGXCUW.js";import{RequestError}from"./chunk-R36FVWOK.js";import{SystemCommError}from"./chunk-J3IXW2RX.js";import{TokenExpiredError}from"./chunk-ELAUVDF4.js";import{UnprocessableRequestError}from"./chunk-ZXW3Q5ZK.js";import{ValidationError}from"./chunk-5FSWHSBF.js";import{AuthenticationError}from"./chunk-FWQABD55.js";import{AuthorizationError}from"./chunk-WN4Z5JJD.js";import{ConflictError}from"./chunk-7GGLCJ6I.js";import{DeviceCommError}from"./chunk-3AE3KSKI.js";import{AppError}from"./chunk-P3ZPJTJ2.js";import{__export}from"./chunk-XE4OXN2W.js";var errors_exports={};__export(errors_exports,{AppError:()=>AppError,AuthenticationError:()=>AuthenticationError,AuthorizationError:()=>AuthorizationError,ConflictError:()=>ConflictError,DeviceCommError:()=>DeviceCommError,LoginError:()=>LoginError,NotFoundError:()=>NotFoundError,RequestError:()=>RequestError,SystemCommError:()=>SystemCommError,TokenExpiredError:()=>TokenExpiredError,UnprocessableRequestError:()=>UnprocessableRequestError,ValidationError:()=>ValidationError});export{errors_exports};//# sourceMappingURL=chunk-4ZRENMIJ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors/index.js"],"sourcesContent":["// This file is auto-generated. Do not edit this file manually.\n// Generated on: 2025-
|
|
1
|
+
{"version":3,"sources":["../src/errors/index.js"],"sourcesContent":["// This file is auto-generated. Do not edit this file manually.\n// Generated on: 2025-05-09T23:07:51.113Z\n\nexport * from \"./appError\";\nexport * from \"./authenticationError\";\nexport * from \"./authorizationError\";\nexport * from \"./conflictError\";\nexport * from \"./deviceCommError\";\nexport * from \"./loginError\";\nexport * from \"./notFoundError\";\nexport * from \"./requestError\";\nexport * from \"./systemCommError\";\nexport * from \"./tokenExpiredError\";\nexport * from \"./unprocessableRequestError\";\nexport * from \"./validationError\";"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{errors_exports}from"./chunk-
|
|
1
|
+
import{errors_exports}from"./chunk-4ZRENMIJ.js";import{amqpExchanges}from"./chunk-THXOWLL3.js";import{__name}from"./chunk-XE4OXN2W.js";import{connect}from"amqplib";import{isFatalError}from"amqplib/lib/connection";import dbg from"debug";import{Buffer}from"node:buffer";import*as crypto from"node:crypto";var randomUUID2=crypto.randomUUID,debug=dbg("kohost:amqp-client"),KohostAMQPClient=class{static{__name(this,"KohostAMQPClient")}static get Message(){return Message}static get exchanges(){return amqpExchanges}static generateCorrelationId(){return randomUUID2()}static validateMessage(message){if(!message)throw new Error("Message is required")}static parseError(err){let type,message,options={};if(err.message&&err.type){const{message:errMessage,type:errType,...rest}=err;type=errType,message=errMessage,options=rest}else message=err.message||"Unknown Error";return debug("parseError",type,message,options),type&&errors_exports[type]?new errors_exports[type](message,options):new Error(message,options)}static parseMessage(message){let error=null,data={},query={},context={},headers={};const isCommand="Command"===message?.properties?.type,isEvent="Event"===message?.properties?.type,messageHeaders=message?.properties?.headers||{},commandName=messageHeaders["X-Command-Name"]||null,eventName=messageHeaders["X-Event-Name"]||null;if(message.content)try{const payload="application/json"===message.properties?.contentType?JSON.parse(message.content.toString()):message.content.toString();data=payload?.data||{},error=payload?.error,query=payload?.query||{},context=payload?.context||{}}catch(error2){debug("error parsing content",error2),data=message.content.toString()}if(message?.properties?.headers){const orgHeader=message.properties.headers["X-Organization-Id"],propertyHeader=message.properties.headers["X-Property-Id"],driverHeader=message.properties.headers["X-Driver"];orgHeader&&(context.organizationId=orgHeader,headers["X-Organization-Id"]=orgHeader),propertyHeader&&(context.propertyId=propertyHeader,headers["X-Property-Id"]=propertyHeader),driverHeader&&(context.driver=driverHeader,headers["X-Driver"]=driverHeader)}const parsed={};return error&&(parsed.error=this.parseError(error)),parsed.data=data,parsed.query=query,parsed.context=context,parsed.headers=headers,isEvent&&eventName?parsed.event=eventName:isCommand&&commandName&&(parsed.command=commandName),debug("amqp parsed %o",parsed),parsed}static getMessage(message){if(!message?.content)return null;const payload=JSON.parse(message.content.toString()),data=payload?.data;return data}static isFatalError(err){return isFatalError(err)}async createConnection(connection,options={}){return await connect(connection,options)}static createMessage(content){return new Message(content)}async createChannel(connection){return await connection.createChannel()}async assertExchange(channel,{exchange:exchange,type:type,options:options}){return await channel.assertExchange(exchange,type,options)}async assertQueue(channel,{queue:queue,options:options}){return await channel.assertQueue(queue,options)}async bindQueue(channel,{queue:queue,exchange:exchange,routingKey:routingKey,args:args}){return await channel.bindQueue(queue,exchange,routingKey,args)}async bindExchange(channel,{source:source,destination:destination,routingKey:routingKey,args:args}){return await channel.bindExchange(destination,source,routingKey,args)}async subscribeToQueue(channel,{queue:queue,cb:cb,options:options}){return await channel.consume(queue,cb,options)}publishToExchange(channel,{exchange:exchange,routingKey:routingKey,content:content,options:options}){return channel.publish(exchange,routingKey,content,options)}},Message=class{static{__name(this,"Message")}constructor(content){this.toExchange=null,this.content=content,this.options={contentType:"application/json",timestamp:Date.now()},this.routingKey=""}get correlationId(){return this.options.correlationId||null}to({exchange:exchange}){if(void 0===exchange)throw new Error("Exchange is required");return this.toExchange=exchange,this}withType(type){return this.options.type=type,this}withRoutingKey(routingKey){return this.routingKey=routingKey,this}withHeaders(headers){return this.options.headers||(this.options.headers={}),this.options.headers={...this.options.headers,...headers},this}withContext(context){for(let key in context)this.withHeaders({[key]:context[key]});return this}withCorrelationId(correlationId){return this.options.correlationId=correlationId,this}withReplyTo(queue){return this.options.replyTo=queue,this}build(){let content=this.content;return content.build&&"function"==typeof content.build&&(content=content.build()),{exchange:this.toExchange,content:Buffer.from(JSON.stringify(content)),options:this.options,routingKey:this.routingKey}}};export{KohostAMQPClient};//# sourceMappingURL=chunk-6JJKZ7S2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Ajv}from"ajv";import addFormats from"ajv-formats";var alarm_default={$schema:"http://json-schema.org/draft-07/schema",$id:"alarm.json",title:"Alarm",description:"Any smart alarm system",type:"object",required:["id","type","areas","zones","driver"],additionalProperties:!1,properties:{id:{$ref:"definitions.json#/definitions/id"},name:{type:"string",description:"Name of the alarm"},offline:{type:"boolean"},type:{type:"string",enum:["alarm"],default:"alarm"},systemId:{$ref:"definitions.json#/definitions/systemId"},supportedNotifications:{$ref:"definitions.json#/definitions/supportedNotifications"},notification:{$ref:"definitions.json#/definitions/notification"},driver:{$ref:"definitions.json#/definitions/driver"},areas:{type:"array",items:{type:"object",properties:{number:{type:"number"},name:{type:"string"},securityMode:{type:["string","null"],enum:["arming","disarming","armed","disarmed","alarm",null]}},additionalProperties:!1}},zones:{type:"array",items:{type:"object",properties:{number:{type:"number",minimum:0},name:{type:"string"},secure:{type:["boolean","null"]},bypassed:{type:["boolean","null"]}},additionalProperties:!1}},chime:{type:"boolean",description:"Reflects whether console chime is enabled"},watts:{$ref:"definitions.json#/definitions/watts"},icon:{type:"string"},modelNumber:{type:"string"},serialNumber:{type:"string"},firmwareVersion:{type:"string"},address:{$ref:"definitions.json#/definitions/address"}}},announcement_default={$schema:"http://json-schema.org/draft-07/schema",$id:"announcement.json",title:"Announcement",description:"Announcement message sent to users",type:"object",properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",enum:["announcement"],default:"announcement"},users:{type:"array",items:{type:"string"},minItems:1},group:{type:"string"},body:{type:"string"},media:{$ref:"mediaFile.json"},sentBy:{type:"string"},tags:{type:"array",items:{type:"string"}},createdAt:{$ref:"definitions.json#/definitions/date"},updatedAt:{$ref:"definitions.json#/definitions/date"}},additionalProperties:!1},automation_default={$schema:"http://json-schema.org/draft-07/schema",$id:"automation.json",title:"Automation",description:"An automation is a collection of triggers and actions",type:"object",required:["id","type","trigger","actions"],properties:{id:{$ref:"definitions.json#/definitions/id"},name:{type:"string",description:"The friendly name of the automation"},type:{type:"string",enum:["automation"],default:"automation"},isEnabled:{type:"boolean",description:"Whether the automation is currently enabled",default:!0},trigger:{type:"object",description:"The trigger that initiates the automation",required:["discriminator","schedule"],properties:{discriminator:{type:"string",enum:["time","event"],description:"Type of trigger"},schedule:{type:"object",description:"Schedule for time-based triggers",required:["days","time","timezone"],properties:{days:{type:"array",description:"Days of the week (0 = Sunday, 6 = Saturday)",items:{type:"integer",minimum:0,maximum:6}},time:{type:"string",description:"Time of day to trigger the automation"},timeOffsetSeconds:{type:"integer",description:"Offset in seconds from the scheduled time",default:0},repeat:{type:"boolean",description:"Whether the schedule repeats",default:!0},timezone:{type:"string",description:"Timezone for the schedule (IANA timezone format)"}}}}},actions:{type:"array",description:"Actions to perform when the trigger conditions are met",items:{type:"object",required:["deviceId","roomId","discriminator","state"],properties:{entityId:{type:"string",description:"ID of the entity to control"},entityType:{type:"string",description:"Type of entity to control",enum:["switch"]},deviceId:{type:"string",description:"ID of the device to control"},roomId:{type:"string",description:"ID of the room containing the device"},discriminator:{type:"string",description:"Type discriminator for the device (e.g., 'windowCovering', 'switch')"},duration:{type:"integer",description:"Duration in seconds to keep the device in the configured state",minimum:0},state:{type:"array",items:{type:"object",required:["property","value"],properties:{property:{type:"string",description:"Property to set (e.g., 'state', 'level', 'setpoint')"},value:{type:["string","number","boolean"],description:"Value to set the property to"}}}}}},minItems:1},createdAt:{$ref:"definitions.json#/definitions/createdAt"},updatedAt:{$ref:"definitions.json#/definitions/updatedAt"},lastTriggeredAt:{$ref:"definitions.json#/definitions/date",description:"When the automation was last triggered"}},additionalProperties:!1},camera_default={$schema:"http://json-schema.org/draft-07/schema",$id:"camera.json",title:"Camera",description:"Any smart camera",type:"object",required:["id","type","driver"],additionalProperties:!1,properties:{id:{$ref:"definitions.json#/definitions/id"},name:{type:"string"},discriminator:{type:"string",enum:["doorStation"]},type:{type:"string",enum:["camera"],default:"camera"},offline:{type:"boolean"},supportedNotifications:{$ref:"definitions.json#/definitions/supportedNotifications"},notification:{$ref:"definitions.json#/definitions/notification"},driver:{$ref:"definitions.json#/definitions/driver"},liveStreams:{type:"object",additionalProperties:!1,$comment:"This is now deprecated. Use liveStream instead. This will remain here for backwards compatibility.",properties:{iframe:{type:["string","null"]},hls:{type:["string","null"]},webRTC:{type:["string","null"]},rtsp:{type:["string","null"]}}},liveStream:{type:"object",additionalProperties:!1,properties:{id:{type:"string"},driver:{type:"string",enum:["aws-kinesis","cloudflare-stream","doorbird","digital-watchdog","mediamtx"]},allowedOrigins:{type:"array",items:{type:"string"}},authRequired:{type:"boolean"},iframe:{type:["string","null"]},hls:{type:["string","null"]},webRTC:{type:["string","null"]},rtsp:{type:["string","null"],description:"Local RTSP stream URL",examples:["rtsp://192.168.1.4:544/channels/1","rtsp://10.145.6.129:8554/unicast"]},previewImage:{type:["string","null"],description:"Source to preview the camera stream",examples:["https://example.com/preview.jpg","data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QBYRXhpZgAATU0AKgAAAAgAA1EQAAEAAAABAQAAAFERAAQAAAABAAABAgABAA"]}}},systemId:{$ref:"definitions.json#/definitions/systemId"},watts:{$ref:"definitions.json#/definitions/watts"},icon:{type:"string"},modelNumber:{type:"string"},serialNumber:{type:"string"},firmwareVersion:{type:"string"}}},category_default={$schema:"http://json-schema.org/draft-07/schema",$id:"category.json",title:"Category",type:"object",required:["id","type","discriminator"],properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",enum:["category"],default:"category"},name:{type:"string",minLength:1},driver:{$ref:"definitions.json#/definitions/driver"},description:{type:"string"},image:{$ref:"mediaFile.json"},rating:{type:"number",minimum:0,maximum:10,default:9},discriminator:{type:"string",enum:["space","product","mediaFile","property","user"]},systemId:{$ref:"definitions.json#/definitions/systemId"}}},courtesy_default={$schema:"http://json-schema.org/draft-07/schema",$id:"courtesy.json",title:"Courtesy",description:"Any smart courtesy system",type:"object",required:["id","type","driver","supportedStates","state"],additionalProperties:!1,properties:{id:{$ref:"definitions.json#/definitions/id"},name:{type:"string"},type:{$ref:"definitions.json#/definitions/type"},supportedNotifications:{$ref:"definitions.json#/definitions/supportedNotifications"},notification:{$ref:"definitions.json#/definitions/notification"},driver:{$ref:"definitions.json#/definitions/driver"},offline:{type:"boolean"},supportedStates:{type:"array",uniqueItems:!0,items:{enum:["privacy","service","none"]}},state:{type:"string",$ref:"#/properties/supportedStates/items"},systemId:{$ref:"definitions.json#/definitions/systemId"},watts:{$ref:"definitions.json#/definitions/watts"},icon:{type:"string"},modelNumber:{type:"string"},serialNumber:{type:"string"},firmwareVersion:{type:"string"}}},credential_default={$schema:"http://json-schema.org/draft-07/schema",$id:"credential.json",title:"Credential",type:"object",required:["type","credential","expires"],properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",default:"credential"},driver:{$ref:"definitions.json#/definitions/driver"},discriminator:{type:"string",enum:["verificationCode","token","mobileKey","pin","publicKey","passkeyChallenge"]},credential:{type:"string"},userId:{type:"string"},organizationId:{type:"string"},propertyId:{type:"string"},deviceId:{type:"string"},userAgent:{type:"string"},expires:{type:["string","object","null"]},systemId:{$ref:"definitions.json#/definitions/systemId"}}},deviceRouter_default={$schema:"http://json-schema.org/draft-07/schema",$id:"deviceRouter.json",title:"Device Router",description:"A device router contains instructions on where to route devices based on their organization and driver.",type:"object",required:["driver","organizationId"],additionalProperties:!1,properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",default:"deviceRouter",enum:["deviceRouter"]},driver:{type:"string"},organizationId:{type:["string","null"],description:"Reference (id) to the organization that owns this router"},devices:{type:"object",additionalProperties:!0}}},dimmer_default={$schema:"http://json-schema.org/draft-07/schema",$id:"dimmer.json",title:"Dimmer",description:"Any smart dimmer",type:"object",properties:{id:{$ref:"definitions.json#/definitions/id"},name:{type:"string"},type:{$ref:"definitions.json#/definitions/type"},supportedNotifications:{$ref:"definitions.json#/definitions/supportedNotifications"},notification:{$ref:"definitions.json#/definitions/notification"},driver:{$ref:"definitions.json#/definitions/driver"},offline:{type:"boolean"},level:{type:["number","null"],minimum:0,maximum:100},systemId:{$ref:"definitions.json#/definitions/systemId"},watts:{$ref:"definitions.json#/definitions/watts"},icon:{type:"string"},modelNumber:{type:"string"},serialNumber:{type:"string"},firmwareVersion:{type:"string"}},required:["id","type","level","driver"]},discoveredDevice_default={$schema:"http://json-schema.org/draft-07/schema",$id:"discoveredDevice.json",title:"Discovered Device",description:"A device that has been discovered by Kohost, but not yet added to the Kohost system.",type:"object",required:["name","deviceId","deviceData"],properties:{id:{$ref:"definitions.json#/definitions/id"},name:{type:"string"},deviceId:{type:"string"},type:{type:"string",enum:["discoveredDevice"],default:"discoveredDevice"},discriminator:{$ref:"definitions.json#/definitions/type"},driver:{type:"string"},deviceData:{type:"object"},ignore:{type:"boolean"},organizationId:{type:["string","null"],description:"Reference (id) to the organization that owns this device"},propertyId:{type:["string","null"],description:"Reference (id) to the property that this device belongs to"}}},emailMessage_default={$schema:"http://json-schema.org/draft-07/schema",$id:"emailMessage.json",title:"Email Message",type:"object",required:["to","from","status","subject"],properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",default:"emailMessage",enum:["emailMessage"]},to:{type:"string",pattern:"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$"},from:{type:"string",pattern:".*<[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+>.*",description:"Must be in the format of 'Sender <email@example.com>"},subject:{type:"string"},status:{type:"string",enum:["queued","sending","sent","deferred","delivered","undelivered","bounced","blocked","receiving","received","opened","clicked","unsubscribed","spamReport"]},statusMessage:{type:"string"},html:{type:"string"},text:{type:"string"},driver:{type:"string"},appData:{type:"object"},createdAt:{$ref:"definitions.json#/definitions/date"},updatedAt:{$ref:"definitions.json#/definitions/date"},systemId:{$ref:"definitions.json#/definitions/systemId"}}},energyReport_default={$schema:"http://json-schema.org/draft-07/schema",$id:"energyReport.json",title:"Energy Report",description:"Hourly Report for Energy based on energy report shards",type:"object",required:["id","type","roomId","first","last","consumption","totals","costPerKw"],properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",enum:["energyReport"],default:"energyReport"},reportTime:{type:"string",enum:["hourly","daily","monthly"]},roomId:{$ref:"definitions.json#/definitions/id"},first:{type:["string","object"],format:"date-time"},last:{type:["string","object"],format:"date-time"},consumption:{type:"array",items:{type:"object",required:["id","type","kwh"],properties:{id:{$ref:"definitions.json#/definitions/id"},type:{$ref:"definitions.json#/definitions/type"},kwh:{type:"number",minimum:0}}}},totals:{type:"array",items:{type:"object",required:["lights","climate","media"],properties:{lights:{type:"number",minimum:0},climate:{type:"number",minimum:0},media:{type:"number",minimum:0}}}},costPerKw:{type:"number",minimum:0}}},energyReportShard_default={$schema:"http://json-schema.org/draft-07/schema",$id:"energyReportShard.json",title:"Energy Report Shard",description:"Shard used for Energy Reports",type:"object",required:["id","type","roomId","first","last","data","ndata","expires"],properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",enum:["energyReportShard"],default:"energyReportShard"},roomId:{$ref:"definitions.json#/definitions/id"},first:{type:["string","object"],format:"date-time"},last:{type:["string","object"],format:"date-time"},data:{type:"array",items:{type:"object",required:["time","watts","id","type","value"],properties:{time:{type:["string","object"],format:"date-time"},watts:{$ref:"definitions.json#/definitions/watts"},id:{$ref:"definitions.json#/definitions/id"},type:{$ref:"definitions.json#/definitions/type"},value:{type:"number",minimum:0,maximum:1}}}},ndata:{type:"integer",minimum:0,maximum:1e5,default:0},expires:{type:["string","object"],format:"date-time"}}},gateway_default={$schema:"http://json-schema.org/draft-07/schema",$id:"iotGateway.json",title:"Gateway",description:"Any smart gateway that is an entrypoint for controlling devices",type:"object",properties:{id:{$ref:"definitions.json#/definitions/id"},name:{type:"string"},offline:{type:"boolean"},type:{$ref:"definitions.json#/definitions/type"},supportedNotifications:{$ref:"definitions.json#/definitions/supportedNotifications"},notification:{$ref:"definitions.json#/definitions/notification"},status:{type:"string"},systemId:{$ref:"definitions.json#/definitions/systemId"},driver:{$ref:"definitions.json#/definitions/driver"},watts:{$ref:"definitions.json#/definitions/watts"},icon:{type:"string"},modelNumber:{type:"string"},serialNumber:{type:"string"},firmwareVersion:{type:"string"}},required:["id","type","status","driver"]},identification_default={$schema:"http://json-schema.org/draft-07/schema",$id:"identification.json",title:"Identification",type:"object",required:["type"],additionalProperties:!1,oneOf:[{required:["number"]},{required:["encryptedNumber"]}],properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",enum:["driversLicense","passport","identityCard","visa"]},number:{type:"string"},maskedNumber:{type:"string"},encryptedNumber:{type:"string"},issued:{type:["string","object"],format:"date-time"},expires:{type:["string","object","null"],format:"date-time"},verified:{type:"boolean"},matched:{type:"boolean"},firstName:{type:"string"},lastName:{type:"string"},issuingCountry:{type:"string",minLength:2,maxLength:2},issuingState:{type:"string",minLength:2,maxLength:2},systemId:{$ref:"definitions.json#/definitions/systemId"}}},issue_default={$schema:"http://json-schema.org/draft-07/schema",$id:"issue.json",title:"Issue",description:"An issue associated with ticketing and concierge.",type:"object",required:["id","type","name","department"],additionalProperties:!1,properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",enum:["issue"],default:"issue"},name:{type:"string"},description:{type:"string"},department:{type:"string"},autoAssign:{type:"object",properties:{userId:{type:"string",description:"The user ID to assign tickets with this issue to."},vendorId:{type:"string",description:"The vendor ID to assign tickets with this issue to."},priority:{$ref:"ticket.json#/properties/priority",description:"The priority to assign tickets with this issue to."},tags:{type:"array",items:{type:"string"}}}},notify:{type:"array",description:"A list of entities to notify when this issue is triggered.",default:[],items:{type:"object",required:["id","discriminator"],properties:{id:{type:"string",description:"The ID of the entity to notify."},discriminator:{type:"string",enum:["user"]}}}},systemKey:{type:"string"},autoCreateTicket:{type:"boolean",default:!0},excludedResources:{type:"array",description:"A list of resources that should not trigger notifications of this issue",items:{type:"string"},default:[]}}},lock_default={$schema:"http://json-schema.org/draft-07/schema",$id:"lock.json",title:"Lock",description:"Any smart lock",type:"object",properties:{id:{$ref:"definitions.json#/definitions/id"},name:{type:"string"},type:{$ref:"definitions.json#/definitions/type"},offline:{type:"boolean"},supportedNotifications:{$ref:"definitions.json#/definitions/supportedNotifications"},notification:{$ref:"definitions.json#/definitions/notification"},driver:{$ref:"definitions.json#/definitions/driver"},state:{type:["string","null"],enum:["locked","unlocked",null]},mode:{type:["string","null"],enum:["normal","autoLock","emergencyOpen","emergencyClose","holdOpen","lockdown",null],description:"emergencyOpen and emergencyClose are deprecated and can be removed once Salto, Paxton and Geovision drivers are updated",default:null},supportedModes:{type:"array",uniqueItems:!0,items:{enum:["normal","autoLock","emergencyOpen","emergencyClose","holdOpen","lockdown",null]}},batteryLevel:{$ref:"definitions.json#/definitions/batteryLevel"},systemId:{$ref:"definitions.json#/definitions/systemId"},watts:{$ref:"definitions.json#/definitions/watts"},icon:{type:"string"},modelNumber:{type:"string"},serialNumber:{type:"string"},firmwareVersion:{type:"string"}},required:["id","type","state","driver"]},log_default={$schema:"http://json-schema.org/draft-07/schema",$id:"log.json",title:"Log",type:"object",required:["type","timestamp","id","driver","name"],properties:{type:{type:"string",default:"log",enum:["log"]},timestamp:{type:"number",minimum:1655907956593},id:{$ref:"definitions.json#/definitions/id"},driver:{$ref:"definitions.json#/definitions/driver"},name:{type:"string",description:"Event name"},field1:{type:"object",required:["name","value"],properties:{name:{type:"string"},value:{type:"string"}}},field2:{type:"object",required:["name","value"],properties:{name:{type:"string"},value:{type:"string"}}},field3:{type:"object",required:["name","value"],properties:{name:{type:"string"},value:{type:"string"}}},field4:{type:"object",required:["name","value"],properties:{name:{type:"string"},value:{type:"string"}}},field5:{type:"object",required:["name","value"],properties:{name:{type:"string"},value:{type:"string"}}},field6:{type:"object",required:["name","value"],properties:{name:{type:"string"},value:{type:"string"}}}}},mediaFile_default={$schema:"http://json-schema.org/draft-07/schema",$id:"mediaFile.json",title:"Media File",description:"Any media file",type:"object",properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",default:"mediaFile",enum:["mediaFile"]},name:{type:"string"},fileHash:{type:"string"},category:{type:"string",description:"This is the category id"},mimeType:{type:"string",enum:["image/*","image/jpeg","image/png","image/gif","image/webp","image/avif","image/svg+xml","application/pdf"]},data:{type:"string"},url:{type:"string",format:"uri"},width:{type:"integer",minimum:0},height:{type:"integer",minimum:0},size:{type:"integer",minimum:0,description:"Size in bytes"},uploadUrl:{type:"string",format:"uri"},uploadUrlExpires:{$ref:"definitions.json#/definitions/date"},createdBy:{type:"string"},systemId:{$ref:"definitions.json#/definitions/systemId"}},additionalProperties:!1,required:["type"]},mediaSource_default={$schema:"http://json-schema.org/draft-07/schema",$id:"mediaSource.json",title:"Media Source",description:"Any media source",type:"object",required:["id","type","discriminator","audio","video","driver"],properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",default:"mediaSource",enum:["mediaSource"]},discriminator:{type:"string",enum:["tv","dvr","appleTv","discPlayer","mediaPlayer","paSystem","uncontrolledDevice"]},playlists:{type:"array",items:{type:"object",properties:{id:{$ref:"definitions.json#/definitions/id"},name:{$ref:"definitions.json#/definitions/name"}}}},remote:{type:"string",enum:["MR22GA","XRT260","XRT270","HOF-16K 1.2","219863500","SONIFI","AKB76039803","BN59-01388A","TRY01"]},name:{$ref:"definitions.json#/definitions/name"},driver:{$ref:"definitions.json#/definitions/driver"},offline:{type:"boolean"},audio:{type:"boolean"},video:{type:"boolean"},powerFeedback:{type:"boolean"},volumeFeedback:{type:"boolean"},muted:{type:"boolean"},volume:{type:"number",minimum:0,maximum:100},brightness:{type:"number",minimum:0,maximum:100},contrast:{type:"number",minimum:0,maximum:100},power:{type:"string",enum:["on","off"]},input:{type:"string"},supportedInputs:{type:"array",items:{type:"string"}},supportedOutputs:{type:"array",items:{type:"string"}},command:{type:["string","null"],enum:["mute","volumeUp","volumeDown","brightnessUp","brightnessDown","channelUp","channelDown","number0","number1","number2","number3","number4","number5","number6","number7","number8","number9","lastChannel","display","favoriteChannel","play","playing","stop","stopped","pause","paused","fastForward","fastForwarding","rewind","rewinding","instantReplay","record","ac3","pvrMenu","guide","menu","menuUp","menuDown","menuLeft","menuRight","pageUp","pageDown","select","exit","input","power","enterChannel","enterVolume","enterBrightness","enterContrast","number10","number11","number12","number13","number14","number15","number16","number10Plus","number20Plus","number100","dash","threeChan","threeD","sixChan","a","add","alarm","am","analog","angle","antenna","antennaEast","antennaWest","aspect","audio1","audio2","audio3","audioDumming","audioLevelDown","audioLevelUp","b","back","c","component1","component2","component3","d","home","list","liveTv","discreteInputCable","powerOff","powerOn","setupMenu","skipForward","skipReverse","video1","video2","video3","video4","video5","details","hdmi1","hdmi2","hdmi3","cecDeviceList","mtsSap","red","green","yellow","blue","alert","order"]},supportedNotifications:{$ref:"definitions.json#/definitions/supportedNotifications"},notification:{$ref:"definitions.json#/definitions/notification"},systemId:{$ref:"definitions.json#/definitions/systemId"},watts:{$ref:"definitions.json#/definitions/watts"},icon:{type:"string"},modelNumber:{type:"string"},serialNumber:{type:"string"},firmwareVersion:{type:"string"}},additionalProperties:!1},motionSensor_default={$schema:"http://json-schema.org/draft-07/schema",$id:"motionSensor.json",title:"Motion Sensor",description:"Any smart motion sensor",type:"object",required:["id","type","driver"],additionalProperties:!1,properties:{id:{$ref:"definitions.json#/definitions/id"},name:{type:"string"},type:{$ref:"definitions.json#/definitions/type"},offline:{type:"boolean"},driver:{$ref:"definitions.json#/definitions/driver"},systemId:{$ref:"definitions.json#/definitions/systemId"},supportedNotifications:{$ref:"definitions.json#/definitions/supportedNotifications"},notification:{$ref:"definitions.json#/definitions/notification"},watts:{$ref:"definitions.json#/definitions/watts"},icon:{type:"string"},modelNumber:{type:"string"},serialNumber:{type:"string"},firmwareVersion:{type:"string"}}},notification_default={$schema:"http://json-schema.org/draft-07/schema",$id:"notification.json",title:"Notification",type:"object",required:["id","type","discriminator","content"],properties:{id:{type:"string"},type:{type:"string",default:"notification",enum:["notification"]},isEnabled:{type:"boolean",default:!0},name:{type:"string"},discriminator:{type:"string",enum:["sms","email","push"]},content:{type:"string"},subject:{type:"string"}}},order_default={$schema:"http://json-schema.org/draft-07/schema",$id:"order.json",title:"Order",description:"A purchase order for products or services.",type:"object",required:["type","status"],properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",default:"order",enum:["order"]},orderNumber:{type:"string"},status:{type:"string",enum:["draft","pendingPayment","processing","outForDelivery","completed","paymentFailed","cancelled","refunded"]},userId:{$ref:"definitions.json#/definitions/id",description:"User id of purchaser"},reservationId:{$ref:"definitions.json#/definitions/id",description:"Reservation id if the order is for a reservation"},date:{$ref:"definitions.json#/definitions/date"},items:{type:"array",default:[],items:{type:"object",required:["name","price"],properties:{additionalProperties:!1,name:{type:"string"},sku:{type:"string"},quantity:{type:"number",default:1},price:{type:"number"},taxClass:{type:"string"},deliveryClass:{type:"string"},productId:{type:"string"}}}},taxes:{type:"array",default:[],items:{type:"object",required:["name","rate"],properties:{additionalProperties:!1,name:{type:"string"},class:{type:"string"},rateType:{type:"string",enum:["percentage","flat"],default:"percentage"},rate:{type:"number"},total:{type:"number"}}}},fees:{type:"array",default:[],items:{type:"object",required:["name","price"],properties:{additionalProperties:!1,name:{type:"string"},price:{type:"number"}}}},delivery:{type:"array",default:[],items:{type:"object",required:["name","rate"],properties:{additionalProperties:!1,name:{type:"string"},class:{type:"string"},rateType:{type:"string",enum:["percentage","flat"],default:"percentage"},rate:{type:"number"},total:{type:"number"}}}},payments:{type:"array",default:[],items:{type:"object",properties:{method:{type:"string",enum:["folio","invoice","amex","visa","masterCard","maestro","discover","diners","jcb","applePay","alipay","chinaUnionPay","vpay"]},name:{type:"string"},date:{$ref:"definitions.json#/definitions/date"},amount:{type:"number"},transactionReference:{type:"string"}}}}}},organization_default={$schema:"http://json-schema.org/draft-07/schema",$id:"organization.json",title:"Organization",type:"object",description:"An organization is a group or entity that subscribes to Kohost software.",required:["accountNumber","name"],additionalProperties:!1,properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",default:"organization",enum:["organization"]},accountNumber:{type:["number","null"],minimum:1e4},name:{type:"string"},smsNumber:{type:"string"},properties:{type:"array",items:{type:"string"}},hostname:{type:["string","null"]},appManifest:{type:"object",properties:{name:{type:"string"},short_name:{type:"string"},scope:{type:"string"},start_url:{type:"string"},themeColor:{type:"string"},backgroundColor:{type:"string"},display:{type:"string",enum:["fullscreen","standalone","minimal-ui","browser"],default:"fullscreen"},orientation:{type:"string",enum:["portrait","landscape"],default:"portrait"},splash:{type:"object",properties:{src:{type:"string"},type:{type:"string"},sizes:{type:"string"}}},icons:{type:"array",items:{type:"object",properties:{src:{type:"string"},sizes:{type:"string"},type:{type:"string"}}}},logo:{type:"object",properties:{src:{type:"string"},type:{type:"string"},sizes:{type:"string"}}}},default:{name:"Kohost",short_name:"Kohost",start_url:"/",scope:"/",display:"fullscreen",orientation:"portrait",theme_color:"#1d1f22",background_color:"#1d1f22",icons:[{src:"https://images.kohost.io/cdn-cgi/imagedelivery/vcVX2aBwdFSYr66spcFKaA/9c85047f-ccba-4b1c-3070-5463fbe93b00/w=512",sizes:"512x512",type:"image/png"}],splash:{src:"https://images.kohost.io/cdn-cgi/imagedelivery/vcVX2aBwdFSYr66spcFKaA/034fb112-5326-4d37-373e-d1cc2a4d0400/w=1500",sizes:"1500x800",type:"image/jpg"},logo:{src:"https://images.kohost.io/cdn-cgi/imagedelivery/vcVX2aBwdFSYr66spcFKaA/1e54c54d-3bac-4745-f46f-c2f98036af00/h=75",sizes:"300x75",type:"image/png"}}},tickets:{type:"object",properties:{nextTicketNumber:{type:["string","integer"],default:1}}},credentials:{type:"object",additionalProperties:!0},createdAt:{$ref:"definitions.json#/definitions/createdAt"},updatedAt:{$ref:"definitions.json#/definitions/updatedAt"}}},payment_default={$schema:"http://json-schema.org/draft-07/schema",$id:"payment.json",title:"Payment",type:"object",required:["type","maskedNumber","expires"],additionalProperties:!1,properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",enum:["amex","visa","masterCard","maestro","discover","diners","jcb","applePay","alipay","chinaUnionPay","vpay"]},enabled:{type:"boolean",default:!0},storageData:{type:["string","null"]},maskedNumber:{type:"string"},issued:{type:["string","null"]},expires:{type:"string"},systemId:{$ref:"definitions.json#/definitions/systemId"}}},policy_default={$schema:"http://json-schema.org/draft-07/schema",$id:"policy.json",title:"Policy",description:"A policy is a set of permissions that can be applied to a user to limit their access to resources.",type:"object",required:["name","type","organizationId","propertyId","permissions","discriminator"],properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",default:"policy",enum:["policy"]},discriminator:{type:"string",enum:["user"]},name:{type:"string",minLength:1},description:{type:"string"},organizationId:{type:"string"},propertyId:{type:"string"},permissions:{type:"array",items:{type:"object",required:["entities","effect"],properties:{entities:{type:"array",items:{type:"string",pattern:"^[^:]+(:.+)+$"}},effect:{type:"string",enum:["Allow","Deny"]}}}}}},product_default={$schema:"http://json-schema.org/draft-07/schema",$id:"product.json",title:"Product",type:"object",required:["name","price","driver"],properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",default:"product",enum:["product"]},name:{type:"string"},driver:{$ref:"definitions.json#/definitions/driver"},description:{type:"string"},price:{type:"number"},tax:{type:["number","null"]},image:{$ref:"mediaFile.json"},category:{type:"string"},imageUrl:{type:"string",format:"uri",pattern:"^https?://"},systemId:{$ref:"definitions.json#/definitions/systemId"}}},property_default={$schema:"http://json-schema.org/draft-07/schema",$id:"property.json",title:"Property",type:"object",description:"A property is a physical asset or building",required:["id","name","type","organization","timezone","discriminator"],properties:{id:{$ref:"definitions.json#/definitions/id"},name:{type:"string"},type:{type:"string",default:"property",enum:["property"]},discriminator:{type:"string",enum:["hospitality","education","commercial","storage"]},organization:{type:["string","null"],description:"Reference (id) to the organization that owns this property"},departments:{type:"array",items:{type:"string"}},testModeEnabled:{type:"boolean"},testMode:{type:"object",properties:{notificationEmails:{type:"array",items:{type:"string"},description:"Only users with these email addresses will receive notifications in test mode, including sms, email, or push."},notificationEmailDomains:{type:"array",items:{type:"string"},description:"Only users with email addreses ending in these domains will receive notifications in test mode, including sms, email, or push."}}},timezone:{type:"string",description:"IANA timezone string",pattern:"^([a-zA-Z]+/[a-zA-Z_]+)$",examples:["America/New_York","America/Los_Angeles"]},smsNumber:{type:"string"},voiceNumber:{type:"string"},tags:{type:"array",items:{type:"string"}},checkInTime:{type:"string"},checkOutTime:{type:"string"},address:{$ref:"definitions.json#/definitions/address"},latitude:{type:"number"},longitude:{type:"number"},appFeatures:{type:"object",properties:{RoomControl:{type:"object",properties:{disabledSystems:{type:"array",items:{type:"string",enum:["climate","lights","shades","tv","doors"]}},excludedDeviceIds:{type:"array",items:{type:"string"},default:[]},commonAreas:{type:"object",properties:{spaces:{type:"array",items:{type:"string"}}}},alarmConfig:{type:"object",patternProperties:{"^[a-zA-Z0-9]+$":{type:"object",properties:{zoneLockMap:{type:"object",description:"Maps zone numbers to lock ids",additionalProperties:{type:"string"}}}}},examples:[{wZz7hucY:{zoneLockMap:{1:"wc87hucc",2:"bc86hzxc",3:"zv5ah5jv"}}}]}},additionalProperties:!1},CheckIn:{type:"object",properties:{payment:{},identification:{},earlyCheckIn:{type:"object",required:["dynamic"],properties:{dynamic:{type:"boolean",default:!1},minimumPrice:{type:"number",default:10},maximumPrice:{type:"number",default:50},priceRatioPerHour:{type:"number",default:.1},minimumTime:{type:"string"}}},roomUpgrades:{},pet:{},promos:{}}},CheckOut:{type:"object",properties:{lateCheckOut:{type:"object",required:["dynamic"],properties:{dynamic:{type:"boolean",default:!1},minimumPrice:{type:"number",default:10},maximumPrice:{type:"number",default:50},priceRatioPerHour:{type:"number",default:.1}}}}},Concierge:{type:"object",properties:{timeTracking:{type:"boolean",default:!1},tipping:{type:"boolean",default:!1},feedback:{type:"boolean",default:!0},ratings:{type:"boolean",default:!0},newTicketCCs:{type:"array",items:{type:"string"},default:[]},newMessageChannel:{type:["string","null"],enum:["sms","email"],default:"sms",description:"Determines how users should be notified of new messages in the concierge system"},quickServices:{type:"array",items:{type:"object",properties:{name:{type:"string"},description:{type:"string"},department:{type:"string"},image:{$ref:"mediaFile.json"}},required:["name","description","image"]}},issues:{type:"object",properties:{syncWithPropertyId:{type:"string"}}}}},DigitalKey:{type:"object",properties:{system:{type:"string",enum:["salto","dormakaba"]},systemOnline:{type:"boolean",default:!1},systemConfig:{type:"object",properties:{legicUrl:{type:"string",format:"uri"},legicWalletName:{type:"string"},legicAppId:{type:"number"},legicTechUsername:{type:"string"},legicTechPassword:{type:"string"}},additionalProperties:!1,default:{}},enableApp:{type:"boolean"},branding:{type:"object",properties:{logo:{type:"string",format:"uri"},gradient:{type:"array",items:{type:"string",pattern:"^(?!#ffffff)(#[0-9a-fA-F]{6})$"},minItems:2,maxItems:2},highlightedGradient:{type:"array",items:{type:"string",pattern:"^(?!#ffffff)(#[0-9a-fA-F]{6})$"},minItems:2,maxItems:3}}}}},SOS:{type:"object",properties:{active:{type:"boolean"},activeEmergencies:{type:"array",items:{type:"string",enum:["medical","fire","suspiciousPerson","other","conflict","shooter"]}}}},Elevator:{type:"object"},Experiences:{type:"object"},Dining:{type:"object",properties:{system:{type:"string",enum:["gotab"]},systemConfig:{type:"object",properties:{landingUrl:{type:"string",format:"uri"},includeUserDetails:{type:"boolean"}},additionalProperties:!1}}},Rentals:{type:"object"},Shop:{type:"object"},Spa:{type:"object"},Valet:{type:"object"}},additionalProperties:!1,default:{RoomControl:{}}},notifications:{type:"object",properties:{email:{type:"object",properties:{enabled:{type:"boolean"}},additionalProperties:!1},sms:{type:"object",properties:{enabled:{type:"boolean"}},additionalProperties:!1},push:{type:"object",properties:{enabled:{type:"boolean"}},additionalProperties:!1}},additionalProperties:!1,default:{email:{enabled:!1},sms:{enabled:!1},push:{enabled:!1}}},credentials:{type:"object",additionalProperties:!0}}},reservation_default={$schema:"http://json-schema.org/draft-07/schema",$id:"reservation.json",title:"Reservation",type:"object",required:["type","status","checkInDateTime","checkOutDateTime"],properties:{id:{$ref:"definitions.json#/definitions/id"},driver:{$ref:"definitions.json#/definitions/driver"},primaryGuest:{type:"string"},type:{type:"string",default:"reservation",enum:["reservation"]},sharedGuests:{type:"array",items:{type:"string"}},spaceCategory:{type:"string"},space:{type:["string","null"]},previousSpace:{type:["string","null"],default:null,description:"Used when there was a space assigned and it changes"},status:{type:"string",enum:["reserved","checkedIn","checkedOut","cancelled","noShow","enquired","requested","optional"],description:" reserved - confirmed by both parties, before check-in\n checkedIn - checked in\n checkedOut - checked out\n cancelled - Cancelled\n noShow - No show\n enquired - Confirmed neither by the customer nor enterprise\n requested - Confirmed by the customer but not the enterprise (waitlist)\n optional - Confirmed by the enterprise but not the customer (holding)"},mobileCheckInSpaceCategoryChanged:{type:"boolean",description:"spaceCategory has changed from original."},mobileCheckInSpaceChanged:{type:"boolean"},mobileCheckInStatus:{type:"string",enum:["ready","blocked","preArrivalStepsRequired","spaceNotAssigned","spaceNotReady","checkInTimeNotStarted"]},mobileCheckInStatusMessage:{type:"string"},confirmationNumber:{type:"string"},expectedCheckInDateTime:{type:["string","object"],format:"date-time",description:"Expected arrival time of guest."},checkInDateTime:{type:["string","object"],format:"date-time"},checkOutDateTime:{type:["string","object"],format:"date-time"},adultCount:{type:"number",default:1,minimum:1},childCount:{type:"number",default:0},spaceCategoryAvailabilites:{type:"array",items:{type:"object",properties:{id:{type:"string"},price:{type:"number"},unit:{type:"string",enum:["night","stay","hour"]},isUpgrade:{type:"boolean"}}}},revenue:{$ref:"definitions.json#/definitions/revenue"},rateSuppressed:{type:"boolean"},payment:{type:"string"},company:{type:"string"},travelAgent:{type:"string"},systemId:{$ref:"definitions.json#/definitions/systemId"},metadata:{$ref:"definitions.json#/definitions/metadata"},updatedAt:{$ref:"definitions.json#/definitions/updatedAt"}}},room_default={$schema:"http://json-schema.org/draft-07/schema",$id:"room.json",title:"Room",description:"A room represents a physical space of controllable IoT devices",type:"object",required:["id","name"],properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",enum:["room"],default:"room"},name:{type:"string"},floor:{type:"string"},dimmers:{type:"array",default:[],items:{$ref:"dimmer.json"}},switches:{type:"array",default:[],items:{$ref:"switch.json"}},thermostats:{type:"array",default:[],items:{$ref:"thermostat.json"}},locks:{type:"array",default:[],items:{$ref:"lock.json"}},windowCoverings:{type:"array",default:[],items:{$ref:"windowCovering.json"}},courtesy:{type:"array",default:[],items:{$ref:"courtesy.json"}},cameras:{type:"array",default:[],items:{$ref:"camera.json"}},mediaSources:{type:"array",default:[],items:{$ref:"mediaSource.json"}},motionSensors:{type:"array",default:[],items:{$ref:"motionSensor.json"}},alarms:{type:"array",default:[],items:{$ref:"alarm.json"}},occupiedAt:{$ref:"definitions.json#/definitions/createdAt"},createdAt:{$ref:"definitions.json#/definitions/createdAt"},updatedAt:{$ref:"definitions.json#/definitions/updatedAt"}},additionalProperties:!1},scene_default={$schema:"http://json-schema.org/draft-07/schema",$id:"scene.json",title:"Scene",description:"A room represents a physical space of controllable IoT devices",type:"object",required:["id","name","type"],additionalProperties:!1,properties:{id:{$ref:"definitions.json#/definitions/id"},name:{type:"string"},description:{type:"string"},type:{type:"string",enum:["scene"],default:"scene"},devices:{type:"object",properties:{switches:{type:"array",items:{type:"object",properties:{id:{$ref:"definitions.json#/definitions/id"},state:{$ref:"switch.json#/properties/state"}},default:[]}},dimmers:{type:"array",items:{type:"object",properties:{id:{$ref:"definitions.json#/definitions/id"},level:{$ref:"dimmer.json#/properties/level"}}},default:[]},windowCoverings:{type:"array",items:{type:"object",properties:{id:{$ref:"definitions.json#/definitions/id"},position:{$ref:"windowCovering.json#/properties/position"}}},default:[]},thermostats:{type:"array",items:{type:"object",properties:{id:{$ref:"definitions.json#/definitions/id"},hvacMode:{$ref:"thermostat.json#/properties/hvacMode"},setpoints:{$ref:"thermostat.json#/properties/setpoints"},fanMode:{$ref:"thermostat.json#/properties/fanMode"},setpointDelta:{type:"number"}}},default:[]},mediaSources:{type:"array",items:{type:"object",properties:{id:{$ref:"definitions.json#/definitions/id"},volume:{type:"number",minimum:0,maximum:100},commands:{type:"array",items:{type:"string"}}}}},locks:{type:"array",items:{type:"object",properties:{id:{$ref:"definitions.json#/definitions/id"},state:{$ref:"lock.json#/properties/state"},mode:{$ref:"lock.json#/properties/mode"}}}}},additionalProperties:!1},isDefault:{type:"boolean",default:!1},showOnUi:{type:"boolean",default:!0}}},shortLink_default={$schema:"http://json-schema.org/draft-07/schema",$id:"shortLink.json",title:"Short Link",type:"object",required:["destination","url"],properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",default:"shortLink",enum:["shortLink"]},title:{type:"string"},destination:{type:"string",format:"uri"},url:{type:"string",format:"uri"},systemId:{$ref:"definitions.json#/definitions/systemId"}}},smsMessage_default={$schema:"http://json-schema.org/draft-07/schema",$id:"smsMessage.json",title:"Sms Message",type:"object",required:["to","from","status"],properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",default:"smsMessage",enum:["smsMessage","whatsappMessage"]},to:{type:"string"},from:{type:"string"},media:{type:"string",format:"uri"},status:{type:"string",enum:["queued","accepted","sending","sent","failed","delivered","undelivered","receiving","received","read"]},body:{type:"string"},driver:{type:"string"},appData:{type:"object"},createdAt:{$ref:"definitions.json#/definitions/date"},updatedAt:{$ref:"definitions.json#/definitions/date"},systemId:{$ref:"definitions.json#/definitions/systemId"}}},space_default={$schema:"http://json-schema.org/draft-07/schema",$id:"space.json",title:"Space",type:"object",required:["id","name","type"],additionalProperties:!1,properties:{id:{$ref:"definitions.json#/definitions/id"},name:{type:"string",minLength:1},type:{type:"string",default:"space",enum:["space"]},discriminator:{type:"string",enum:["classRoom","hotelRoom","office","building","commonArea","conferenceRoom","lobby","gym","pool","restaurant","unit"]},floor:{type:"string"},driver:{$ref:"definitions.json#/definitions/driver"},category:{type:"string",description:"This is the category id"},rooms:{type:"array",items:{type:"string"}},occupied:{type:"boolean"},inUse:{type:"boolean"},eco:{type:"object",additionalProperties:!1,default:{active:!1,allowed:!1,previousState:null},properties:{active:{type:"boolean",default:!1},activatedAt:{type:["string","object"],format:"date-time"},allowed:{type:"boolean",default:!1},previousState:{type:["object","null"],properties:{thermostats:{type:"object",patternProperties:{".*":{type:"object",properties:{setpoints:{$ref:"thermostat.json#/properties/setpoints"}}}}}},additionalProperties:!1}}},features:{type:"array",items:{type:"string",enum:["pet"]}},maximumOccupancy:{type:"number",minimum:1},housekeepingStatus:{type:"string",enum:["clean","dirty","inspected","pickup"]},serviceStatus:{type:"string",enum:["inService","outOfOrder","outOfService"]},systemId:{$ref:"definitions.json#/definitions/systemId"}}},switch_default={$schema:"http://json-schema.org/draft-07/schema",$id:"switch.json",title:"Switch",description:"Any smart switch",type:"object",required:["id","type","state","driver"],properties:{id:{$ref:"definitions.json#/definitions/id"},name:{type:"string"},type:{$ref:"definitions.json#/definitions/type"},discriminator:{type:"string",enum:["light","fan","irrigation"]},supportedNotifications:{$ref:"definitions.json#/definitions/supportedNotifications"},notification:{$ref:"definitions.json#/definitions/notification"},driver:{$ref:"definitions.json#/definitions/driver"},offline:{type:"boolean"},state:{type:"string",enum:["on","off"]},systemId:{$ref:"definitions.json#/definitions/systemId"},watts:{$ref:"definitions.json#/definitions/watts"},icon:{type:"string"},modelNumber:{type:"string"},serialNumber:{type:"string"},firmwareVersion:{type:"string"},restoresAt:{type:"string",format:"date-time"}}},systemUser_default={$schema:"http://json-schema.org/draft-07/schema",$id:"systemUser.json",title:"System User",description:"A system user is a user that originated from an external 3rd party system.",type:"object",required:["id","firstName","lastName"],properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",default:"systemUser",enum:["systemUser"]},driver:{$ref:"definitions.json#/definitions/driver"},firstName:{type:"string"},lastName:{type:"string"},phone:{type:["string","null"],pattern:"^\\+[0-9]{1,14}$"},email:{type:["string","null"],format:"email"},address:{$ref:"definitions.json#/definitions/address"},photo:{type:"string"},jobTitle:{type:"string"},dob:{type:"string"},gender:{type:"string",enum:["male","female"]},roles:{type:"array",items:{type:"string",enum:["Guest","User","Manager","Maintenance","Administrator","SuperAdmin"]}},nationality:{type:"string",minLength:2,maxLength:2},notes:{type:"array",items:{type:"string"}},files:{type:"array",items:{$ref:"mediaFile.json#"}},identifications:{type:"array",items:{$ref:"identification.json#"}},payments:{type:"array",items:{$ref:"payment.json#"}},revenue:{$ref:"definitions.json#/definitions/revenue"},createdAt:{$ref:"definitions.json#/definitions/createdAt"},updatedAt:{$ref:"definitions.json#/definitions/updatedAt"},systemId:{$ref:"definitions.json#/definitions/systemId"}}},thermostat_default={$schema:"http://json-schema.org/draft-07/schema",$id:"thermostat.json",title:"Thermostat",description:"Any smart thermostat",type:"object",required:["id","type","hvacMode","fanMode","hvacState","fanState","setpoints","temperatureScale","supportedHvacModes","supportedFanModes","driver"],additionalProperties:!1,properties:{id:{$ref:"definitions.json#/definitions/id"},name:{$ref:"definitions.json#/definitions/name"},type:{$ref:"definitions.json#/definitions/type",default:"thermostat"},driver:{$ref:"definitions.json#/definitions/driver"},offline:{type:"boolean"},supportedNotifications:{$ref:"definitions.json#/definitions/supportedNotifications"},notification:{$ref:"definitions.json#/definitions/notification"},currentTemperature:{type:"number"},currentHumidity:{type:"number",minimum:0},hvacMode:{type:"string",$ref:"#/properties/supportedHvacModes/items"},hvacState:{type:["string","null"],enum:["cooling","heating","off",null]},fanMode:{type:"string",$ref:"#/properties/supportedFanModes/items"},fanState:{type:["string","null"],enum:["off","low","medium","high","on",null]},temperatureScale:{type:"string",enum:["celsius","fahrenheit"],default:"fahrenheit"},humidityScale:{type:["string","null"],enum:["absolute","relative",null]},supportedHvacModes:{type:"array",uniqueItems:!0,minItems:2,items:{enum:["cool","heat","auto","off"]}},supportedFanModes:{type:"array",uniqueItems:!0,items:{enum:["auto","low","medium","high","off","on"]}},setpoints:{type:"object",additionalProperties:!1,properties:{cool:{$ref:"#/$defs/setpoint"},heat:{$ref:"#/$defs/setpoint"},auto:{$ref:"#/$defs/setpoint"}}},minAutoDelta:{type:"number",default:3},cycleRate:{type:"number"},batteryLevel:{$ref:"definitions.json#/definitions/batteryLevel"},systemId:{$ref:"definitions.json#/definitions/systemId"},watts:{$ref:"definitions.json#/definitions/watts"},icon:{type:"string"},modelNumber:{type:"string"},serialNumber:{type:"string"},firmwareVersion:{type:"string"}},$defs:{setpoint:{type:"object",additionalProperties:!1,properties:{value:{$ref:"#/$defs/setpointValue"},min:{$ref:"#/$defs/setpointMinMax"},max:{$ref:"#/$defs/setpointMinMax"}}},setpointValue:{type:"number",minimum:0,maximum:99},setpointMinMax:{type:["number","null"],minimum:0,maximum:99}}},ticket_default={$schema:"http://json-schema.org/draft-07/schema",$id:"ticket.json",title:"Ticket",description:"A ticket is a request from a user.",type:"object",required:["id","conversation","requester","status","tags","createdAt","updatedAt"],additionalProperties:!1,properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",enum:["ticket"],default:"ticket"},number:{type:"string"},issueId:{type:"string"},conversation:{type:"array",default:[],items:{type:"object",additionalProperties:!1,required:["id","discriminator","timestamp","body"],properties:{id:{type:"string"},discriminator:{type:"string",enum:["message","opened","assigned","rated","tipped","scheduled","collaboratorAdded","collaboratorRemoved","statusChanged","priorityChanged","scheduleDateChanged","locationChanged"],default:"message"},userId:{type:"string"},userName:{type:"string"},vendorId:{type:"string"},vendorName:{type:"string"},systemId:{type:"string"},systemName:{type:"string"},timestamp:{$ref:"definitions.json#/definitions/createdAt"},body:{type:"string"},parsedBody:{type:"object",additionalProperties:!1,properties:{text:{type:"string"},mentions:{type:"array",default:[],items:{type:"object",additionalProperties:!1,required:["discriminator","id","index","length","originalText"],properties:{id:{type:"string"},discriminator:{type:"string",enum:["user","vendor","system"]},index:{type:"integer"},length:{type:"integer"},originalText:{type:"string"}}}}}},readBy:{type:"array",default:[],items:{type:"string"}},media:{anyOf:[{$ref:"mediaFile.json"},{type:"null"}]}}}},subject:{type:"string"},openedBy:{type:"object",properties:{userId:{type:"string"},userName:{type:"string"},systemId:{type:"string"},systemName:{type:"string"}}},requester:{type:"object",properties:{systemId:{type:"string"},systemName:{type:"string"},systemPhoto:{anyOf:[{$ref:"mediaFile.json"},{type:"null"},{type:"string"}]},userId:{type:"string"},userName:{type:"string"},userPhoto:{anyOf:[{$ref:"mediaFile.json"},{type:"null"},{type:"string"}]},deviceId:{type:"string"},roomId:{type:"string"},reservationId:{type:"string"},spaceId:{type:"string"},spaceName:{type:"string"}}},assignedTo:{type:"object",properties:{userId:{type:"string"},userName:{type:"string"},userPhoto:{anyOf:[{$ref:"mediaFile.json"},{type:"null"},{type:"string"}]},vendorId:{type:"string"},vendorName:{type:"string"},vendorPhoto:{anyOf:[{$ref:"mediaFile.json"},{type:"null"},{type:"string"}]}}},notify:{type:"array",description:"A list of entities to notify when this ticket is created or resolved.",default:[],items:{type:"object",required:["id","discriminator"],additionalProperties:!1,properties:{id:{type:"string",description:"The ID of the entity to notify."},discriminator:{type:"string",enum:["user"]}}}},collaborators:{type:"array",default:[],items:{type:"object",required:["id","name","discriminator"],additionalProperties:!1,properties:{id:{type:"string"},name:{type:"string"},discriminator:{type:"string",enum:["user","vendor"]}}}},location:{type:"object",required:["discriminator","name"],additionalProperties:!1,properties:{id:{type:"string"},discriminator:{type:"string",enum:["space","room","property","customText"]},name:{type:"string"}}},status:{type:"string",enum:["open","pending","solved","closed"],default:"open"},priority:{type:"string",enum:["low","normal","high"],default:"normal"},tags:{type:"array",default:[],items:{type:"string"}},department:{type:"string"},rating:{type:"number",minimum:0,maximum:5},ratingComment:{type:"string"},tipAmount:{type:"string"},autoCloseAt:{$ref:"definitions.json#/definitions/date"},scheduleDate:{$ref:"definitions.json#/definitions/date"},createdAt:{$ref:"definitions.json#/definitions/date"},updatedAt:{$ref:"definitions.json#/definitions/date"},solvedAt:{$ref:"definitions.json#/definitions/date"},closedAt:{$ref:"definitions.json#/definitions/date"}}},timeSheet_default={$schema:"http://json-schema.org/draft-07/schema",$id:"timeSheet.json",title:"Time Sheet",type:"object",required:["userId","day"],properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",default:"timeSheet",enum:["timeSheet"]},userId:{$ref:"definitions.json#/definitions/id"},day:{type:["string","object"],format:"date-time"},locked:{type:"boolean",default:!1,description:"If true, the time sheet is locked and cannot be modified"},timeEntries:{type:"array",default:[],items:{type:"object",properties:{id:{$ref:"definitions.json#/definitions/id"},discriminator:{type:"string",enum:["working","driving","meeting","break"]},start:{type:["string","object"],format:"date-time"},end:{type:["string","object"],format:"date-time"},comment:{type:"string"},ticketId:{type:"string"}},required:["start","discriminator"],additionalProperties:!1}}}},user_default={$schema:"http://json-schema.org/draft-07/schema",$id:"user.json",title:"User",type:"object",required:["id","firstName","lastName"],properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",default:"user"},firstName:{type:"string"},lastName:{type:"string"},phone:{type:["string","null"],pattern:"^\\+[0-9]{1,14}$"},phoneVerified:{type:"boolean"},email:{type:["string","null"],format:"email"},emailVerified:{type:"boolean"},whatsapp:{type:["string","null"],pattern:"^\\+[0-9]{1,14}$"},whatsappVerified:{type:"boolean"},address:{$ref:"definitions.json#/definitions/address"},secretKey:{type:"string"},photo:{$ref:"mediaFile.json#"},jobTitle:{type:"string"},dob:{type:"string"},gender:{type:"string",enum:["male","female"]},nationality:{type:"string",minLength:2,maxLength:2},permissions:{type:"array",default:[],items:{type:"object",required:["organizationId","propertyId","role"],properties:{organizationId:{type:"string",description:"The ID of the organization the permission is applies to."},propertyId:{type:"string",description:"The ID of the property the permission is applies to."},role:{type:"string",enum:["Guest","User","Agent","Manager","Maintenance","Administrator","SuperAdmin"]},timeTrackingEnabled:{type:"boolean",description:"Whether time tracking is enabled for this role."},department:{type:"string",description:"The department the user belongs to."},policyIds:{type:"array",items:{type:"string",description:"ID of a policy that is applied to this role."}},policies:{type:"array",items:{description:"A policy object populated from the policyIds array.",$ref:"policy.json"}}},additionalProperties:!1}},preferences:{type:"array",items:{type:"object",additionalProperties:!1,required:["organizationId","propertyId"],properties:{organizationId:{type:"string"},propertyId:{type:"string"},notifications:{type:"array",items:{type:"object",additionalProperties:!1,required:["discriminator","enabled"],properties:{discriminator:{type:"string",enum:["observerTicketCreated","observerTicketResolved"]},enabled:{type:"boolean"}}}}}}},notes:{type:"array",items:{type:"string"}},files:{type:"array",items:{$ref:"mediaFile.json#"}},identifications:{type:"array",items:{$ref:"identification.json#"}},payments:{type:"array",items:{$ref:"payment.json#"}},location:{type:"object",required:["accuracy","latitude","longitude","timestamp"],additionalProperties:!1,properties:{accuracy:{type:["number","null"]},latitude:{type:["number","null"]},longitude:{type:["number","null"]},timestamp:{type:["number","null"]}}},reservations:{type:"array",items:{$ref:"reservation.json"}},spaceName:{type:"string"},revenue:{$ref:"definitions.json#/definitions/revenue"},createdAt:{$ref:"definitions.json#/definitions/createdAt"},updatedAt:{$ref:"definitions.json#/definitions/updatedAt"},systems:{type:"array",default:[],items:{type:"object",properties:{systemId:{type:"string"},propertyId:{type:"string"},driver:{type:"string"}},required:["systemId","propertyId","driver"],additionalProperties:!1}}}},vendor_default={$schema:"http://json-schema.org/draft-07/schema",$id:"vendor.json",title:"Vendor",type:"object",required:["id","name","email"],properties:{id:{$ref:"definitions.json#/definitions/id"},type:{type:"string",default:"vendor",enum:["vendor"]},name:{type:"string"},phone:{type:["string","null"],pattern:"^\\+[0-9]{1,14}$"},email:{type:["string","null"],format:"email"},address:{$ref:"definitions.json#/definitions/address"},photo:{$ref:"mediaFile.json#"},createdAt:{$ref:"definitions.json#/definitions/createdAt"},updatedAt:{$ref:"definitions.json#/definitions/updatedAt"}}},windowCovering_default={$schema:"http://json-schema.org/draft-07/schema",$id:"windowCovering.json",title:"Window Covering",description:"Any smart window covering",required:["id","type","position","driver"],additionalProperties:!1,type:"object",properties:{id:{$ref:"definitions.json#/definitions/id"},name:{type:"string"},type:{$ref:"definitions.json#/definitions/type",default:"windowCovering"},discriminator:{type:"string",enum:["basic","variable"],default:"variable"},supportedNotifications:{$ref:"definitions.json#/definitions/supportedNotifications"},notification:{$ref:"definitions.json#/definitions/notification"},driver:{$ref:"definitions.json#/definitions/driver"},offline:{type:"boolean"},position:{type:["number","null"],minimum:0,maximum:100},systemId:{$ref:"definitions.json#/definitions/systemId"},watts:{$ref:"definitions.json#/definitions/watts"},icon:{type:"string"},modelNumber:{type:"string"},serialNumber:{type:"string"},firmwareVersion:{type:"string"}}},ajv=new Ajv({allErrors:!0,useDefaults:!0,strict:!1,allowMatchingProperties:!0,allowUnionTypes:!0,strictRequired:!1,schemas:[alarm_default,announcement_default,automation_default,camera_default,category_default,courtesy_default,credential_default,{$schema:"http://json-schema.org/draft-07/schema",$id:"definitions.json",title:"Definitions",definitions:{id:{type:"string",description:"Identifier of the object.",not:{enum:["global","system"]}},systemId:{type:"string",description:"Identifier of the object, directly related to the system."},systemData:{type:"object"},metadata:{type:"object",default:{}},date:{type:["string","object"],format:"date-time"},createdAt:{type:["string","object"],format:"date-time"},updatedAt:{type:["string","object"],format:"date-time"},file:{type:"object",required:["name","type","data"],properties:{name:{type:"string",description:"Name of the file."},type:{type:"string",description:"MIME type of the file (e.g. application/pdf)."},data:{type:"string",description:"Base64-encoded data of the file."}}},address:{type:"object",properties:{id:{type:"string"},line1:{type:"string"},line2:{type:"string"},line3:{type:"string"},city:{type:"string"},state:{type:"string"},postalCode:{type:"string"},countryCode:{type:"string",minLength:2,maxLength:2}}},driver:{type:"string",description:"Driver used to communicate with the object.",enum:["adlink","aws-kinesis","bacnet","benq","butler","comelit","crestron","dell","digital-watchdog","distech","dmp","doorbird","dormakaba","dsc","ecobee","epson","geovision-rs","geovision-as-manager","honeywell-vista","igor","inncom","isapi","kohost-k7","kohost","lg","lg-webos","lapi","lirc","mews","mht","paxton","pelican-wireless","power-shades","rachio","rebrandly","relay","rtsp","salto","salto-irn","samsung","se","sendgrid","smartboard","sonifi","stay-n-touch","storable","twilio","unifi","valcom","vivotek","vizio","wisenet","cloudflare-images","cloudflare-stream","insperia-privacy"]},type:{type:"string",enum:["alarm","dimmer","switch","motionSensor","windowCovering","camera","mediaSource","thermostat","lock","courtesy","gateway","tv","dvr","appleTv","discPlayer","mediaPlayer","uncontrolledDevice"]},name:{type:"string"},supportedNotifications:{type:"array",uniqueItems:!0,items:{enum:["button 1","button 2","button 3","button 4","button 5","idle","powerHasBeedApplied","acMainsDisconnected","acMainsReconnected","replaceBatterySoon","replaceBatteryNow","batteryOk","hardwareFailure","softwareFailure","hardwareFailureWithCode","softwareFailureWithCode","motionDetection","airFilterNeedsCleaned","airFilterNeedsReplaced","smokeDetected","outsideSafeTemperatureRange","outsideSafeHumidityRange","scheduleMaintenance","doorAjar","communicationFailure","communicationOk","burglarAlarm","fireAlarm"]}},notification:{type:["object","null"],properties:{name:{type:"string",$ref:"#/definitions/supportedNotifications/items"},timestamp:{type:"number",minimum:1655907956593},description:{type:"string"}}},batteryLevel:{type:"number",minimum:0,maximum:100},watts:{type:"number",minimum:0},revenue:{type:"array",items:{type:"object",properties:{id:{$ref:"definitions.json#/definitions/id"},name:{type:"string"},date:{type:"string",format:"date-time"},price:{type:"number"},tax:{type:["number","null"]}}}}}},deviceRouter_default,dimmer_default,discoveredDevice_default,emailMessage_default,energyReport_default,energyReportShard_default,gateway_default,identification_default,issue_default,lock_default,log_default,mediaFile_default,mediaSource_default,motionSensor_default,notification_default,order_default,organization_default,payment_default,policy_default,product_default,property_default,reservation_default,room_default,scene_default,shortLink_default,smsMessage_default,space_default,switch_default,systemUser_default,thermostat_default,ticket_default,timeSheet_default,user_default,vendor_default,windowCovering_default]});addFormats(ajv);var validateAlarm=ajv.compile(alarm_default),validateAnnouncement=ajv.compile(announcement_default),validateAutomation=ajv.compile(automation_default),validateCamera=ajv.compile(camera_default),validateCategory=ajv.compile(category_default),validateCourtesy=ajv.compile(courtesy_default),validateCredential=ajv.compile(credential_default),validateDeviceRouter=ajv.compile(deviceRouter_default),validateDimmer=ajv.compile(dimmer_default),validateDiscoveredDevice=ajv.compile(discoveredDevice_default),validateEmailMessage=ajv.compile(emailMessage_default),validateEnergyReport=ajv.compile(energyReport_default),validateEnergyReportShard=ajv.compile(energyReportShard_default),validateGateway=ajv.compile(gateway_default),validateIdentification=ajv.compile(identification_default),validateIssue=ajv.compile(issue_default),validateLock=ajv.compile(lock_default),validateLog=ajv.compile(log_default),validateMediaFile=ajv.compile(mediaFile_default),validateMediaSource=ajv.compile(mediaSource_default),validateMotionSensor=ajv.compile(motionSensor_default),validateNotification=ajv.compile(notification_default),validateOrder=ajv.compile(order_default),validateOrganization=ajv.compile(organization_default),validatePayment=ajv.compile(payment_default),validatePolicy=ajv.compile(policy_default),validateProduct=ajv.compile(product_default),validateProperty=ajv.compile(property_default),validateReservation=ajv.compile(reservation_default),validateRoom=ajv.compile(room_default),validateScene=ajv.compile(scene_default),validateShortLink=ajv.compile(shortLink_default),validateSmsMessage=ajv.compile(smsMessage_default),validateSpace=ajv.compile(space_default),validateSwitch=ajv.compile(switch_default),validateSystemUser=ajv.compile(systemUser_default),validateThermostat=ajv.compile(thermostat_default),validateTicket=ajv.compile(ticket_default),validateTimeSheet=ajv.compile(timeSheet_default),validateUser=ajv.compile(user_default),validateVendor=ajv.compile(vendor_default),validateWindowCovering=ajv.compile(windowCovering_default);export{validateAlarm,validateAnnouncement,validateAutomation,validateCamera,validateCategory,validateCourtesy,validateCredential,validateDeviceRouter,validateDimmer,validateDiscoveredDevice,validateEmailMessage,validateEnergyReport,validateEnergyReportShard,validateGateway,validateIdentification,validateIssue,validateLock,validateLog,validateMediaFile,validateMediaSource,validateMotionSensor,validateNotification,validateOrder,validateOrganization,validatePayment,validatePolicy,validateProduct,validateProperty,validateReservation,validateRoom,validateScene,validateShortLink,validateSmsMessage,validateSpace,validateSwitch,validateSystemUser,validateThermostat,validateTicket,validateTimeSheet,validateUser,validateVendor,validateWindowCovering};//# sourceMappingURL=chunk-6UJNRRRN.js.map
|