@kohost/api-client 4.5.4 → 4.5.5
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-XV3KXIH2.js → chunk-2BGFVTK5.js} +1 -1
- package/dist/{chunk-ET6X74DQ.js → chunk-3KZCYHSF.js} +1 -1
- package/dist/{chunk-ET6X74DQ.js.map → chunk-3KZCYHSF.js.map} +1 -1
- package/dist/{chunk-BRZVBG7Y.js → chunk-4HA37GSM.js} +1 -1
- package/dist/{chunk-KJI445LX.js → chunk-6QIZNOTQ.js} +1 -1
- package/dist/{chunk-LNRGAGJF.js → chunk-74WBAGSV.js} +1 -1
- package/dist/chunk-7ABCCOVA.js +1 -0
- package/dist/{chunk-X2PHGWTM.js.map → chunk-7ABCCOVA.js.map} +1 -1
- package/dist/{chunk-K4X5REA5.js → chunk-7JLIE2YT.js} +1 -1
- package/dist/{chunk-7VS2JHRH.js → chunk-AKBP4ULH.js} +1 -1
- package/dist/{chunk-E7DC44YR.js → chunk-AVZIY77R.js} +1 -1
- package/dist/{chunk-BAIHVN4F.js → chunk-BW6WOT2G.js} +1 -1
- package/dist/{chunk-KD5V4VHT.js → chunk-CAALG6EM.js} +1 -1
- package/dist/{chunk-2ZHDK2LA.js → chunk-CBGDQUVP.js} +1 -1
- package/dist/{chunk-SIRKWUJR.js → chunk-CIIC5YSI.js} +1 -1
- package/dist/{chunk-G4JQYUAC.js → chunk-CL66AXXT.js} +1 -1
- package/dist/{chunk-ZR72266G.js → chunk-CQHD5IHT.js} +1 -1
- package/dist/chunk-CQHD5IHT.js.map +1 -0
- package/dist/{chunk-XORT6HQQ.js → chunk-EEWDLSCT.js} +1 -1
- package/dist/{chunk-GJIRL22D.js → chunk-EFVZZ3UR.js} +1 -1
- package/dist/{chunk-IP2J33M4.js → chunk-FIY4MTXC.js} +1 -1
- package/dist/{chunk-PHUGJKO5.js → chunk-FQWI5UT7.js} +1 -1
- package/dist/{chunk-ZARKTUMC.js → chunk-H4J6BULN.js} +1 -1
- package/dist/{chunk-ZARKTUMC.js.map → chunk-H4J6BULN.js.map} +1 -1
- package/dist/{chunk-EIKLORN2.js → chunk-HNKGUVQT.js} +1 -1
- package/dist/{chunk-J6NIJCBP.js → chunk-HQZCMOV5.js} +1 -1
- package/dist/{chunk-FJGHDCFU.js → chunk-HVRHXRP6.js} +1 -1
- package/dist/{chunk-6U3D7INH.js → chunk-I3T6UG4N.js} +1 -1
- package/dist/{chunk-ASUIVB2I.js → chunk-IDKLDYJM.js} +1 -1
- package/dist/{chunk-7OSTDOUM.js → chunk-IHVBHK4S.js} +1 -1
- package/dist/{chunk-KZGHAUI5.js → chunk-IOFW6KW3.js} +1 -1
- package/dist/chunk-J726LZFG.js +1 -0
- package/dist/chunk-J726LZFG.js.map +1 -0
- package/dist/{chunk-KVGMJRXC.js → chunk-KCHWGYJF.js} +1 -1
- package/dist/{chunk-3JKVMXXF.js → chunk-KUKQHDC5.js} +1 -1
- package/dist/{chunk-3JKVMXXF.js.map → chunk-KUKQHDC5.js.map} +1 -1
- package/dist/{chunk-MG2VQTNN.js → chunk-KW3HNS5S.js} +1 -1
- package/dist/{chunk-PBMLITMC.js → chunk-LZDFH4GB.js} +1 -1
- package/dist/{chunk-SW7K432L.js → chunk-O42G3HNO.js} +1 -1
- package/dist/{chunk-PWFIE4A4.js → chunk-OUOPHOS3.js} +1 -1
- package/dist/{chunk-T2E42CQF.js → chunk-PA6CL6LK.js} +1 -1
- package/dist/{chunk-XVQXZSHK.js → chunk-QHS6ZPJI.js} +1 -1
- package/dist/{chunk-AQVI4C4C.js → chunk-QOLVVEU5.js} +1 -1
- package/dist/{chunk-NFBNENWO.js → chunk-UKIG7GFX.js} +1 -1
- package/dist/{chunk-QE7MS5GE.js → chunk-UOSPZFQA.js} +1 -1
- package/dist/chunk-VLFQ27ZT.js +1 -0
- package/dist/chunk-VLFQ27ZT.js.map +1 -0
- package/dist/{chunk-P5SXOPMU.js → chunk-WHYNHNWY.js} +1 -1
- package/dist/{chunk-IKAINY4Q.js → chunk-WIZSIXXQ.js} +1 -1
- package/dist/{chunk-FTA53BGJ.js → chunk-WSBQZHQ5.js} +1 -1
- package/dist/{chunk-R2SDRMVZ.js → chunk-X4CIRNUQ.js} +1 -1
- package/dist/{chunk-NX5S46FI.js → chunk-XHPL3YQR.js} +1 -1
- package/dist/{chunk-UEVK66LP.js → chunk-Y767NEWB.js} +1 -1
- package/dist/{chunk-4JO2ZCI2.js → chunk-YAZ6Y4QK.js} +1 -1
- package/dist/{chunk-RQEWUMCP.js → chunk-YHALYQGQ.js} +1 -1
- package/dist/chunk-ZBNPXH3W.js +1 -0
- package/dist/{chunk-MKUF7EIW.js.map → chunk-ZBNPXH3W.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.d.cts +7 -0
- package/dist/models/camera.d.ts +7 -0
- 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.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/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 -1
- package/dist/models/room.d.ts +3 -1
- 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-DGMWQ4PP.js +0 -1
- package/dist/chunk-DGMWQ4PP.js.map +0 -1
- package/dist/chunk-H4CYVROE.js +0 -1
- package/dist/chunk-H4CYVROE.js.map +0 -1
- package/dist/chunk-MKUF7EIW.js +0 -1
- package/dist/chunk-X2PHGWTM.js +0 -1
- package/dist/chunk-ZR72266G.js.map +0 -1
- /package/dist/{chunk-XV3KXIH2.js.map → chunk-2BGFVTK5.js.map} +0 -0
- /package/dist/{chunk-BRZVBG7Y.js.map → chunk-4HA37GSM.js.map} +0 -0
- /package/dist/{chunk-KJI445LX.js.map → chunk-6QIZNOTQ.js.map} +0 -0
- /package/dist/{chunk-LNRGAGJF.js.map → chunk-74WBAGSV.js.map} +0 -0
- /package/dist/{chunk-K4X5REA5.js.map → chunk-7JLIE2YT.js.map} +0 -0
- /package/dist/{chunk-7VS2JHRH.js.map → chunk-AKBP4ULH.js.map} +0 -0
- /package/dist/{chunk-E7DC44YR.js.map → chunk-AVZIY77R.js.map} +0 -0
- /package/dist/{chunk-BAIHVN4F.js.map → chunk-BW6WOT2G.js.map} +0 -0
- /package/dist/{chunk-KD5V4VHT.js.map → chunk-CAALG6EM.js.map} +0 -0
- /package/dist/{chunk-2ZHDK2LA.js.map → chunk-CBGDQUVP.js.map} +0 -0
- /package/dist/{chunk-SIRKWUJR.js.map → chunk-CIIC5YSI.js.map} +0 -0
- /package/dist/{chunk-G4JQYUAC.js.map → chunk-CL66AXXT.js.map} +0 -0
- /package/dist/{chunk-XORT6HQQ.js.map → chunk-EEWDLSCT.js.map} +0 -0
- /package/dist/{chunk-GJIRL22D.js.map → chunk-EFVZZ3UR.js.map} +0 -0
- /package/dist/{chunk-IP2J33M4.js.map → chunk-FIY4MTXC.js.map} +0 -0
- /package/dist/{chunk-PHUGJKO5.js.map → chunk-FQWI5UT7.js.map} +0 -0
- /package/dist/{chunk-EIKLORN2.js.map → chunk-HNKGUVQT.js.map} +0 -0
- /package/dist/{chunk-J6NIJCBP.js.map → chunk-HQZCMOV5.js.map} +0 -0
- /package/dist/{chunk-FJGHDCFU.js.map → chunk-HVRHXRP6.js.map} +0 -0
- /package/dist/{chunk-6U3D7INH.js.map → chunk-I3T6UG4N.js.map} +0 -0
- /package/dist/{chunk-ASUIVB2I.js.map → chunk-IDKLDYJM.js.map} +0 -0
- /package/dist/{chunk-7OSTDOUM.js.map → chunk-IHVBHK4S.js.map} +0 -0
- /package/dist/{chunk-KZGHAUI5.js.map → chunk-IOFW6KW3.js.map} +0 -0
- /package/dist/{chunk-KVGMJRXC.js.map → chunk-KCHWGYJF.js.map} +0 -0
- /package/dist/{chunk-MG2VQTNN.js.map → chunk-KW3HNS5S.js.map} +0 -0
- /package/dist/{chunk-PBMLITMC.js.map → chunk-LZDFH4GB.js.map} +0 -0
- /package/dist/{chunk-SW7K432L.js.map → chunk-O42G3HNO.js.map} +0 -0
- /package/dist/{chunk-PWFIE4A4.js.map → chunk-OUOPHOS3.js.map} +0 -0
- /package/dist/{chunk-T2E42CQF.js.map → chunk-PA6CL6LK.js.map} +0 -0
- /package/dist/{chunk-XVQXZSHK.js.map → chunk-QHS6ZPJI.js.map} +0 -0
- /package/dist/{chunk-AQVI4C4C.js.map → chunk-QOLVVEU5.js.map} +0 -0
- /package/dist/{chunk-NFBNENWO.js.map → chunk-UKIG7GFX.js.map} +0 -0
- /package/dist/{chunk-QE7MS5GE.js.map → chunk-UOSPZFQA.js.map} +0 -0
- /package/dist/{chunk-P5SXOPMU.js.map → chunk-WHYNHNWY.js.map} +0 -0
- /package/dist/{chunk-IKAINY4Q.js.map → chunk-WIZSIXXQ.js.map} +0 -0
- /package/dist/{chunk-FTA53BGJ.js.map → chunk-WSBQZHQ5.js.map} +0 -0
- /package/dist/{chunk-R2SDRMVZ.js.map → chunk-X4CIRNUQ.js.map} +0 -0
- /package/dist/{chunk-NX5S46FI.js.map → chunk-XHPL3YQR.js.map} +0 -0
- /package/dist/{chunk-UEVK66LP.js.map → chunk-Y767NEWB.js.map} +0 -0
- /package/dist/{chunk-4JO2ZCI2.js.map → chunk-YAZ6Y4QK.js.map} +0 -0
- /package/dist/{chunk-RQEWUMCP.js.map → chunk-YHALYQGQ.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{EmailMessage}from"../chunk-
|
|
1
|
+
import{EmailMessage}from"../chunk-IDKLDYJM.js";import"../chunk-VLFQ27ZT.js";import"../chunk-YPJMXYGL.js";import"../chunk-5FSWHSBF.js";import"../chunk-P3ZPJTJ2.js";import"../chunk-XE4OXN2W.js";export{EmailMessage};//# sourceMappingURL=emailMessage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var mod,__create=Object.create,__defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__name=(target,value)=>__defProp(target,"name",{value:value,configurable:!0}),__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},energyReport_exports={};((target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})})(energyReport_exports,{EnergyReport:()=>EnergyReport}),module.exports=(mod=energyReport_exports,__copyProps(__defProp({},"__esModule",{value:!0}),mod));var AppError=class _AppError extends Error{static{__name(this,"AppError")}constructor(message="Internal Server Error",options){super(message,options),this.type=this.constructor.name,this.statusCode=500,this.name="AppError",Object.setPrototypeOf(this,_AppError.prototype)}},ValidationError=class _ValidationError extends AppError{static{__name(this,"ValidationError")}constructor(message="Validation Error",options={}){super(message,options),this.statusCode=400,this.name="ValidationError",Object.setPrototypeOf(this,_ValidationError.prototype)}},Entity=class{static{__name(this,"Entity")}constructor(data){if(!this.schema)throw new Error("Schema is not defined");if(!this.validator)throw new Error("Validator is not defined");this.#validate(data)}get schemaProperties(){return Object.keys(this.validator.schema.properties)}#validate(data){if(!this.validator(data))throw new ValidationError(`Invalid ${this.constructor.name}`,{cause:this.validator.errors})}},import_ajv=require("ajv"),import_ajv_formats=((mod,isNodeMode,target)=>(target=null!=mod?__create(__getProtoOf(mod)):{},__copyProps(!isNodeMode&&mod&&mod.__esModule?target:__defProp(target,"default",{value:mod,enumerable:!0}),mod)))(require("ajv-formats"),1),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"],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:{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"},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:["cloudflare-stream","aws-kinesis","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"]},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},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"]},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"}}},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"},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"},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"}}},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","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","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,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],ajv=new import_ajv.Ajv({allErrors:!0,useDefaults:!0,strict:!1,allowMatchingProperties:!0,allowUnionTypes:!0,strictRequired:!1,schemas:schemas});(0,import_ajv_formats.default)(ajv);ajv.compile(alarm_default),ajv.compile(announcement_default),ajv.compile(automation_default),ajv.compile(camera_default),ajv.compile(category_default),ajv.compile(courtesy_default),ajv.compile(credential_default),ajv.compile(deviceRouter_default),ajv.compile(dimmer_default),ajv.compile(discoveredDevice_default),ajv.compile(emailMessage_default);var validateEnergyReport=ajv.compile(energyReport_default),EnergyReport=(ajv.compile(energyReportShard_default),ajv.compile(gateway_default),ajv.compile(identification_default),ajv.compile(issue_default),ajv.compile(lock_default),ajv.compile(log_default),ajv.compile(mediaFile_default),ajv.compile(mediaSource_default),ajv.compile(motionSensor_default),ajv.compile(order_default),ajv.compile(organization_default),ajv.compile(payment_default),ajv.compile(policy_default),ajv.compile(product_default),ajv.compile(property_default),ajv.compile(reservation_default),ajv.compile(room_default),ajv.compile(scene_default),ajv.compile(shortLink_default),ajv.compile(smsMessage_default),ajv.compile(space_default),ajv.compile(switch_default),ajv.compile(systemUser_default),ajv.compile(thermostat_default),ajv.compile(ticket_default),ajv.compile(timeSheet_default),ajv.compile(user_default),ajv.compile(vendor_default),ajv.compile(windowCovering_default),class extends Entity{static{__name(this,"EnergyReport")}constructor(data){super(data),this.id=data.id,this.type=data.type,void 0!==data.reportTime&&(this.reportTime=data.reportTime),this.roomId=data.roomId,this.first=data.first,this.last=data.last,this.consumption=data.consumption,this.totals=data.totals,this.costPerKw=data.costPerKw}});Object.defineProperty(EnergyReport.prototype,"schema",{value:{$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}}}}),Object.defineProperty(EnergyReport.prototype,"validator",{get:__name((function(){return validateEnergyReport}),"get")});//# sourceMappingURL=energyReport.cjs.map
|
|
1
|
+
var mod,__create=Object.create,__defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__name=(target,value)=>__defProp(target,"name",{value:value,configurable:!0}),__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},energyReport_exports={};((target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})})(energyReport_exports,{EnergyReport:()=>EnergyReport}),module.exports=(mod=energyReport_exports,__copyProps(__defProp({},"__esModule",{value:!0}),mod));var AppError=class _AppError extends Error{static{__name(this,"AppError")}constructor(message="Internal Server Error",options){super(message,options),this.type=this.constructor.name,this.statusCode=500,this.name="AppError",Object.setPrototypeOf(this,_AppError.prototype)}},ValidationError=class _ValidationError extends AppError{static{__name(this,"ValidationError")}constructor(message="Validation Error",options={}){super(message,options),this.statusCode=400,this.name="ValidationError",Object.setPrototypeOf(this,_ValidationError.prototype)}},Entity=class{static{__name(this,"Entity")}constructor(data){if(!this.schema)throw new Error("Schema is not defined");if(!this.validator)throw new Error("Validator is not defined");this.#validate(data)}get schemaProperties(){return Object.keys(this.validator.schema.properties)}#validate(data){if(!this.validator(data))throw new ValidationError(`Invalid ${this.constructor.name}`,{cause:this.validator.errors})}},import_ajv=require("ajv"),import_ajv_formats=((mod,isNodeMode,target)=>(target=null!=mod?__create(__getProtoOf(mod)):{},__copyProps(!isNodeMode&&mod&&mod.__esModule?target:__defProp(target,"default",{value:mod,enumerable:!0}),mod)))(require("ajv-formats"),1),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"],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:{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:["cloudflare-stream","aws-kinesis","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"]},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},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"]},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"}}},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"},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"},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"}}},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","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","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,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],ajv=new import_ajv.Ajv({allErrors:!0,useDefaults:!0,strict:!1,allowMatchingProperties:!0,allowUnionTypes:!0,strictRequired:!1,schemas:schemas});(0,import_ajv_formats.default)(ajv);ajv.compile(alarm_default),ajv.compile(announcement_default),ajv.compile(automation_default),ajv.compile(camera_default),ajv.compile(category_default),ajv.compile(courtesy_default),ajv.compile(credential_default),ajv.compile(deviceRouter_default),ajv.compile(dimmer_default),ajv.compile(discoveredDevice_default),ajv.compile(emailMessage_default);var validateEnergyReport=ajv.compile(energyReport_default),EnergyReport=(ajv.compile(energyReportShard_default),ajv.compile(gateway_default),ajv.compile(identification_default),ajv.compile(issue_default),ajv.compile(lock_default),ajv.compile(log_default),ajv.compile(mediaFile_default),ajv.compile(mediaSource_default),ajv.compile(motionSensor_default),ajv.compile(order_default),ajv.compile(organization_default),ajv.compile(payment_default),ajv.compile(policy_default),ajv.compile(product_default),ajv.compile(property_default),ajv.compile(reservation_default),ajv.compile(room_default),ajv.compile(scene_default),ajv.compile(shortLink_default),ajv.compile(smsMessage_default),ajv.compile(space_default),ajv.compile(switch_default),ajv.compile(systemUser_default),ajv.compile(thermostat_default),ajv.compile(ticket_default),ajv.compile(timeSheet_default),ajv.compile(user_default),ajv.compile(vendor_default),ajv.compile(windowCovering_default),class extends Entity{static{__name(this,"EnergyReport")}constructor(data){super(data),this.id=data.id,this.type=data.type,void 0!==data.reportTime&&(this.reportTime=data.reportTime),this.roomId=data.roomId,this.first=data.first,this.last=data.last,this.consumption=data.consumption,this.totals=data.totals,this.costPerKw=data.costPerKw}});Object.defineProperty(EnergyReport.prototype,"schema",{value:{$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}}}}),Object.defineProperty(EnergyReport.prototype,"validator",{get:__name((function(){return validateEnergyReport}),"get")});//# sourceMappingURL=energyReport.cjs.map
|