@kohost/api-client 4.5.5 → 4.5.6

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.
Files changed (284) hide show
  1. package/dist/amqpClient.cjs.map +1 -1
  2. package/dist/amqpClient.js +1 -1
  3. package/dist/{chunk-HNKGUVQT.js → chunk-2NCUNQOW.js} +1 -1
  4. package/dist/{chunk-WIZSIXXQ.js → chunk-2OELB5TM.js} +1 -1
  5. package/dist/{chunk-6QIZNOTQ.js → chunk-3Y6EA4LH.js} +1 -1
  6. package/dist/{chunk-ZBNPXH3W.js → chunk-3Y7IZWVS.js} +1 -1
  7. package/dist/{chunk-ZBNPXH3W.js.map → chunk-3Y7IZWVS.js.map} +1 -1
  8. package/dist/{chunk-CIIC5YSI.js → chunk-AFDIENKV.js} +1 -1
  9. package/dist/{chunk-EFVZZ3UR.js → chunk-B7DSOBNO.js} +1 -1
  10. package/dist/{chunk-X4CIRNUQ.js → chunk-BZHDKU6Q.js} +1 -1
  11. package/dist/{chunk-FQWI5UT7.js → chunk-C2HFF7GR.js} +1 -1
  12. package/dist/{chunk-HVRHXRP6.js → chunk-CFZB6L3O.js} +1 -1
  13. package/dist/{chunk-AKBP4ULH.js → chunk-CSNJ6TPD.js} +1 -1
  14. package/dist/{chunk-EEWDLSCT.js → chunk-E7ZQPE7W.js} +1 -1
  15. package/dist/{chunk-YHALYQGQ.js → chunk-F2COB3LY.js} +1 -1
  16. package/dist/{chunk-Y767NEWB.js → chunk-F2GS72ZN.js} +1 -1
  17. package/dist/{chunk-CL66AXXT.js → chunk-FG4MP7JG.js} +1 -1
  18. package/dist/{chunk-WSBQZHQ5.js → chunk-FL7NHU5B.js} +1 -1
  19. package/dist/{chunk-3KZCYHSF.js → chunk-GZRWOTUY.js} +1 -1
  20. package/dist/{chunk-3KZCYHSF.js.map → chunk-GZRWOTUY.js.map} +1 -1
  21. package/dist/{chunk-IHVBHK4S.js → chunk-HAFKVIJ5.js} +1 -1
  22. package/dist/{chunk-2BGFVTK5.js → chunk-HWSRYZH4.js} +1 -1
  23. package/dist/{chunk-KW3HNS5S.js → chunk-IKENVIAC.js} +1 -1
  24. package/dist/{chunk-QOLVVEU5.js → chunk-IN2OIGRZ.js} +1 -1
  25. package/dist/{chunk-LZDFH4GB.js → chunk-IPBWBPTX.js} +1 -1
  26. package/dist/{chunk-PA6CL6LK.js → chunk-JMBE7UWS.js} +1 -1
  27. package/dist/{chunk-QHS6ZPJI.js → chunk-JYQELEL5.js} +1 -1
  28. package/dist/{chunk-J726LZFG.js → chunk-KCHXBWXK.js} +1 -1
  29. package/dist/chunk-KCHXBWXK.js.map +1 -0
  30. package/dist/{chunk-H4J6BULN.js → chunk-KUZHDHJ4.js} +1 -1
  31. package/dist/{chunk-H4J6BULN.js.map → chunk-KUZHDHJ4.js.map} +1 -1
  32. package/dist/{chunk-HQZCMOV5.js → chunk-KWPPE672.js} +1 -1
  33. package/dist/{chunk-CAALG6EM.js → chunk-KWQD3P4F.js} +1 -1
  34. package/dist/{chunk-KUKQHDC5.js → chunk-LHFPQRTC.js} +1 -1
  35. package/dist/{chunk-KUKQHDC5.js.map → chunk-LHFPQRTC.js.map} +1 -1
  36. package/dist/chunk-MKFIUAZ7.js +1 -0
  37. package/dist/{chunk-7ABCCOVA.js.map → chunk-MKFIUAZ7.js.map} +1 -1
  38. package/dist/{chunk-OUOPHOS3.js → chunk-N2CJHIDZ.js} +1 -1
  39. package/dist/{chunk-AVZIY77R.js → chunk-OT7U5VZF.js} +1 -1
  40. package/dist/{chunk-UOSPZFQA.js → chunk-OTMEPUU7.js} +1 -1
  41. package/dist/{chunk-UKIG7GFX.js → chunk-PROJNHZU.js} +1 -1
  42. package/dist/chunk-QJG67Q4K.js +1 -0
  43. package/dist/chunk-QJG67Q4K.js.map +1 -0
  44. package/dist/{chunk-CBGDQUVP.js → chunk-QY7WNU3I.js} +1 -1
  45. package/dist/{chunk-BW6WOT2G.js → chunk-QZ4554VE.js} +1 -1
  46. package/dist/{chunk-FIY4MTXC.js → chunk-RMHU5AEV.js} +1 -1
  47. package/dist/{chunk-4HA37GSM.js → chunk-RPYFWNFK.js} +1 -1
  48. package/dist/{chunk-XHPL3YQR.js → chunk-RUJTKA5Z.js} +1 -1
  49. package/dist/{chunk-O42G3HNO.js → chunk-RVNYUF3S.js} +1 -1
  50. package/dist/{chunk-CQHD5IHT.js → chunk-TSEWUOQC.js} +1 -1
  51. package/dist/chunk-TSEWUOQC.js.map +1 -0
  52. package/dist/{chunk-I3T6UG4N.js → chunk-U256GIKD.js} +1 -1
  53. package/dist/{chunk-74WBAGSV.js → chunk-UPYLEXUN.js} +1 -1
  54. package/dist/{chunk-7JLIE2YT.js → chunk-V6RJ5X6C.js} +1 -1
  55. package/dist/{chunk-IDKLDYJM.js → chunk-WFLTVDJX.js} +1 -1
  56. package/dist/{chunk-YAZ6Y4QK.js → chunk-WPM7T6WY.js} +1 -1
  57. package/dist/{chunk-KCHWGYJF.js → chunk-Y24PVHWC.js} +1 -1
  58. package/dist/{chunk-WHYNHNWY.js → chunk-Y4CZO7DH.js} +1 -1
  59. package/dist/{chunk-IOFW6KW3.js → chunk-YDN2FFXT.js} +1 -1
  60. package/dist/commands/index.cjs.map +1 -1
  61. package/dist/commands/index.js +1 -1
  62. package/dist/errors/index.cjs.map +1 -1
  63. package/dist/errors/index.js +1 -1
  64. package/dist/events/index.cjs.map +1 -1
  65. package/dist/events/index.js +1 -1
  66. package/dist/index.cjs +1 -1
  67. package/dist/index.cjs.map +1 -1
  68. package/dist/index.js +1 -1
  69. package/dist/models/alarm.cjs +1 -1
  70. package/dist/models/alarm.cjs.map +1 -1
  71. package/dist/models/alarm.d.cts +1 -1
  72. package/dist/models/alarm.d.ts +1 -1
  73. package/dist/models/alarm.js +1 -1
  74. package/dist/models/announcement.cjs +1 -1
  75. package/dist/models/announcement.cjs.map +1 -1
  76. package/dist/models/announcement.js +1 -1
  77. package/dist/models/automation.cjs +1 -1
  78. package/dist/models/automation.cjs.map +1 -1
  79. package/dist/models/automation.js +1 -1
  80. package/dist/models/camera.cjs +1 -1
  81. package/dist/models/camera.cjs.map +1 -1
  82. package/dist/models/camera.d.cts +5 -5
  83. package/dist/models/camera.d.ts +5 -5
  84. package/dist/models/camera.js +1 -1
  85. package/dist/models/category.cjs +1 -1
  86. package/dist/models/category.cjs.map +1 -1
  87. package/dist/models/category.d.cts +2 -2
  88. package/dist/models/category.d.ts +2 -2
  89. package/dist/models/category.js +1 -1
  90. package/dist/models/courtesy.cjs +1 -1
  91. package/dist/models/courtesy.cjs.map +1 -1
  92. package/dist/models/courtesy.d.cts +1 -1
  93. package/dist/models/courtesy.d.ts +1 -1
  94. package/dist/models/courtesy.js +1 -1
  95. package/dist/models/credential.cjs +1 -1
  96. package/dist/models/credential.cjs.map +1 -1
  97. package/dist/models/credential.d.cts +2 -2
  98. package/dist/models/credential.d.ts +2 -2
  99. package/dist/models/credential.js +1 -1
  100. package/dist/models/deviceRouter.cjs +1 -1
  101. package/dist/models/deviceRouter.cjs.map +1 -1
  102. package/dist/models/deviceRouter.js +1 -1
  103. package/dist/models/dimmer.cjs +1 -1
  104. package/dist/models/dimmer.cjs.map +1 -1
  105. package/dist/models/dimmer.d.cts +1 -1
  106. package/dist/models/dimmer.d.ts +1 -1
  107. package/dist/models/dimmer.js +1 -1
  108. package/dist/models/discoveredDevice.cjs +1 -1
  109. package/dist/models/discoveredDevice.cjs.map +1 -1
  110. package/dist/models/discoveredDevice.js +1 -1
  111. package/dist/models/emailMessage.cjs +1 -1
  112. package/dist/models/emailMessage.cjs.map +1 -1
  113. package/dist/models/emailMessage.js +1 -1
  114. package/dist/models/energyReport.cjs +1 -1
  115. package/dist/models/energyReport.cjs.map +1 -1
  116. package/dist/models/energyReport.js +1 -1
  117. package/dist/models/energyReportShard.cjs +1 -1
  118. package/dist/models/energyReportShard.cjs.map +1 -1
  119. package/dist/models/energyReportShard.js +1 -1
  120. package/dist/models/gateway.cjs +1 -1
  121. package/dist/models/gateway.cjs.map +1 -1
  122. package/dist/models/gateway.d.cts +1 -1
  123. package/dist/models/gateway.d.ts +1 -1
  124. package/dist/models/gateway.js +1 -1
  125. package/dist/models/identification.cjs +1 -1
  126. package/dist/models/identification.cjs.map +1 -1
  127. package/dist/models/identification.js +1 -1
  128. package/dist/models/index.cjs +1 -1
  129. package/dist/models/index.cjs.map +1 -1
  130. package/dist/models/index.js +1 -1
  131. package/dist/models/issue.cjs +1 -1
  132. package/dist/models/issue.cjs.map +1 -1
  133. package/dist/models/issue.js +1 -1
  134. package/dist/models/lock.cjs +1 -1
  135. package/dist/models/lock.cjs.map +1 -1
  136. package/dist/models/lock.d.cts +1 -1
  137. package/dist/models/lock.d.ts +1 -1
  138. package/dist/models/lock.js +1 -1
  139. package/dist/models/log.cjs +1 -1
  140. package/dist/models/log.cjs.map +1 -1
  141. package/dist/models/log.d.cts +1 -1
  142. package/dist/models/log.d.ts +1 -1
  143. package/dist/models/log.js +1 -1
  144. package/dist/models/mediaFile.cjs +1 -1
  145. package/dist/models/mediaFile.cjs.map +1 -1
  146. package/dist/models/mediaFile.js +1 -1
  147. package/dist/models/mediaSource.cjs +1 -1
  148. package/dist/models/mediaSource.cjs.map +1 -1
  149. package/dist/models/mediaSource.d.cts +1 -1
  150. package/dist/models/mediaSource.d.ts +1 -1
  151. package/dist/models/mediaSource.js +1 -1
  152. package/dist/models/motionSensor.cjs +1 -1
  153. package/dist/models/motionSensor.cjs.map +1 -1
  154. package/dist/models/motionSensor.d.cts +1 -1
  155. package/dist/models/motionSensor.d.ts +1 -1
  156. package/dist/models/motionSensor.js +1 -1
  157. package/dist/models/order.cjs +1 -1
  158. package/dist/models/order.cjs.map +1 -1
  159. package/dist/models/order.js +1 -1
  160. package/dist/models/organization.cjs +1 -1
  161. package/dist/models/organization.cjs.map +1 -1
  162. package/dist/models/organization.js +1 -1
  163. package/dist/models/payment.cjs +1 -1
  164. package/dist/models/payment.cjs.map +1 -1
  165. package/dist/models/payment.js +1 -1
  166. package/dist/models/policy.cjs +1 -1
  167. package/dist/models/policy.cjs.map +1 -1
  168. package/dist/models/policy.js +1 -1
  169. package/dist/models/product.cjs +1 -1
  170. package/dist/models/product.cjs.map +1 -1
  171. package/dist/models/product.d.cts +1 -1
  172. package/dist/models/product.d.ts +1 -1
  173. package/dist/models/product.js +1 -1
  174. package/dist/models/property.cjs +1 -1
  175. package/dist/models/property.cjs.map +1 -1
  176. package/dist/models/property.js +1 -1
  177. package/dist/models/reservation.cjs +1 -1
  178. package/dist/models/reservation.cjs.map +1 -1
  179. package/dist/models/reservation.d.cts +2 -2
  180. package/dist/models/reservation.d.ts +2 -2
  181. package/dist/models/reservation.js +1 -1
  182. package/dist/models/room.cjs +1 -1
  183. package/dist/models/room.cjs.map +1 -1
  184. package/dist/models/room.d.cts +3 -3
  185. package/dist/models/room.d.ts +3 -3
  186. package/dist/models/room.js +1 -1
  187. package/dist/models/scene.cjs +1 -1
  188. package/dist/models/scene.cjs.map +1 -1
  189. package/dist/models/scene.js +1 -1
  190. package/dist/models/shortLink.cjs +1 -1
  191. package/dist/models/shortLink.cjs.map +1 -1
  192. package/dist/models/shortLink.js +1 -1
  193. package/dist/models/smsMessage.cjs +1 -1
  194. package/dist/models/smsMessage.cjs.map +1 -1
  195. package/dist/models/smsMessage.js +1 -1
  196. package/dist/models/space.cjs +1 -1
  197. package/dist/models/space.cjs.map +1 -1
  198. package/dist/models/space.d.cts +2 -2
  199. package/dist/models/space.d.ts +2 -2
  200. package/dist/models/space.js +1 -1
  201. package/dist/models/switch.cjs +1 -1
  202. package/dist/models/switch.cjs.map +1 -1
  203. package/dist/models/switch.d.cts +1 -1
  204. package/dist/models/switch.d.ts +1 -1
  205. package/dist/models/switch.js +1 -1
  206. package/dist/models/systemUser.cjs +1 -1
  207. package/dist/models/systemUser.cjs.map +1 -1
  208. package/dist/models/systemUser.d.cts +2 -2
  209. package/dist/models/systemUser.d.ts +2 -2
  210. package/dist/models/systemUser.js +1 -1
  211. package/dist/models/thermostat.cjs +1 -1
  212. package/dist/models/thermostat.cjs.map +1 -1
  213. package/dist/models/thermostat.d.cts +1 -1
  214. package/dist/models/thermostat.d.ts +1 -1
  215. package/dist/models/thermostat.js +1 -1
  216. package/dist/models/ticket.cjs +1 -1
  217. package/dist/models/ticket.cjs.map +1 -1
  218. package/dist/models/ticket.js +1 -1
  219. package/dist/models/timeSheet.cjs +1 -1
  220. package/dist/models/timeSheet.cjs.map +1 -1
  221. package/dist/models/timeSheet.js +1 -1
  222. package/dist/models/user.cjs +1 -1
  223. package/dist/models/user.cjs.map +1 -1
  224. package/dist/models/user.js +1 -1
  225. package/dist/models/vendor.cjs +1 -1
  226. package/dist/models/vendor.cjs.map +1 -1
  227. package/dist/models/vendor.js +1 -1
  228. package/dist/models/windowCovering.cjs +1 -1
  229. package/dist/models/windowCovering.cjs.map +1 -1
  230. package/dist/models/windowCovering.d.cts +1 -1
  231. package/dist/models/windowCovering.d.ts +1 -1
  232. package/dist/models/windowCovering.js +1 -1
  233. package/dist/useCases/index.cjs.map +1 -1
  234. package/dist/useCases/index.js +1 -1
  235. package/dist/utils.cjs +1 -1
  236. package/dist/utils.cjs.map +1 -1
  237. package/dist/utils.js +1 -1
  238. package/package.json +1 -1
  239. package/dist/chunk-7ABCCOVA.js +0 -1
  240. package/dist/chunk-CQHD5IHT.js.map +0 -1
  241. package/dist/chunk-J726LZFG.js.map +0 -1
  242. package/dist/chunk-VLFQ27ZT.js +0 -1
  243. package/dist/chunk-VLFQ27ZT.js.map +0 -1
  244. /package/dist/{chunk-HNKGUVQT.js.map → chunk-2NCUNQOW.js.map} +0 -0
  245. /package/dist/{chunk-WIZSIXXQ.js.map → chunk-2OELB5TM.js.map} +0 -0
  246. /package/dist/{chunk-6QIZNOTQ.js.map → chunk-3Y6EA4LH.js.map} +0 -0
  247. /package/dist/{chunk-CIIC5YSI.js.map → chunk-AFDIENKV.js.map} +0 -0
  248. /package/dist/{chunk-EFVZZ3UR.js.map → chunk-B7DSOBNO.js.map} +0 -0
  249. /package/dist/{chunk-X4CIRNUQ.js.map → chunk-BZHDKU6Q.js.map} +0 -0
  250. /package/dist/{chunk-FQWI5UT7.js.map → chunk-C2HFF7GR.js.map} +0 -0
  251. /package/dist/{chunk-HVRHXRP6.js.map → chunk-CFZB6L3O.js.map} +0 -0
  252. /package/dist/{chunk-AKBP4ULH.js.map → chunk-CSNJ6TPD.js.map} +0 -0
  253. /package/dist/{chunk-EEWDLSCT.js.map → chunk-E7ZQPE7W.js.map} +0 -0
  254. /package/dist/{chunk-YHALYQGQ.js.map → chunk-F2COB3LY.js.map} +0 -0
  255. /package/dist/{chunk-Y767NEWB.js.map → chunk-F2GS72ZN.js.map} +0 -0
  256. /package/dist/{chunk-CL66AXXT.js.map → chunk-FG4MP7JG.js.map} +0 -0
  257. /package/dist/{chunk-WSBQZHQ5.js.map → chunk-FL7NHU5B.js.map} +0 -0
  258. /package/dist/{chunk-IHVBHK4S.js.map → chunk-HAFKVIJ5.js.map} +0 -0
  259. /package/dist/{chunk-2BGFVTK5.js.map → chunk-HWSRYZH4.js.map} +0 -0
  260. /package/dist/{chunk-KW3HNS5S.js.map → chunk-IKENVIAC.js.map} +0 -0
  261. /package/dist/{chunk-QOLVVEU5.js.map → chunk-IN2OIGRZ.js.map} +0 -0
  262. /package/dist/{chunk-LZDFH4GB.js.map → chunk-IPBWBPTX.js.map} +0 -0
  263. /package/dist/{chunk-PA6CL6LK.js.map → chunk-JMBE7UWS.js.map} +0 -0
  264. /package/dist/{chunk-QHS6ZPJI.js.map → chunk-JYQELEL5.js.map} +0 -0
  265. /package/dist/{chunk-HQZCMOV5.js.map → chunk-KWPPE672.js.map} +0 -0
  266. /package/dist/{chunk-CAALG6EM.js.map → chunk-KWQD3P4F.js.map} +0 -0
  267. /package/dist/{chunk-OUOPHOS3.js.map → chunk-N2CJHIDZ.js.map} +0 -0
  268. /package/dist/{chunk-AVZIY77R.js.map → chunk-OT7U5VZF.js.map} +0 -0
  269. /package/dist/{chunk-UOSPZFQA.js.map → chunk-OTMEPUU7.js.map} +0 -0
  270. /package/dist/{chunk-UKIG7GFX.js.map → chunk-PROJNHZU.js.map} +0 -0
  271. /package/dist/{chunk-CBGDQUVP.js.map → chunk-QY7WNU3I.js.map} +0 -0
  272. /package/dist/{chunk-BW6WOT2G.js.map → chunk-QZ4554VE.js.map} +0 -0
  273. /package/dist/{chunk-FIY4MTXC.js.map → chunk-RMHU5AEV.js.map} +0 -0
  274. /package/dist/{chunk-4HA37GSM.js.map → chunk-RPYFWNFK.js.map} +0 -0
  275. /package/dist/{chunk-XHPL3YQR.js.map → chunk-RUJTKA5Z.js.map} +0 -0
  276. /package/dist/{chunk-O42G3HNO.js.map → chunk-RVNYUF3S.js.map} +0 -0
  277. /package/dist/{chunk-I3T6UG4N.js.map → chunk-U256GIKD.js.map} +0 -0
  278. /package/dist/{chunk-74WBAGSV.js.map → chunk-UPYLEXUN.js.map} +0 -0
  279. /package/dist/{chunk-7JLIE2YT.js.map → chunk-V6RJ5X6C.js.map} +0 -0
  280. /package/dist/{chunk-IDKLDYJM.js.map → chunk-WFLTVDJX.js.map} +0 -0
  281. /package/dist/{chunk-YAZ6Y4QK.js.map → chunk-WPM7T6WY.js.map} +0 -0
  282. /package/dist/{chunk-KCHWGYJF.js.map → chunk-Y24PVHWC.js.map} +0 -0
  283. /package/dist/{chunk-WHYNHNWY.js.map → chunk-Y4CZO7DH.js.map} +0 -0
  284. /package/dist/{chunk-IOFW6KW3.js.map → chunk-YDN2FFXT.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils.js","../src/errors/appError.js","../src/errors/authenticationError.js","../src/errors/authorizationError.js","../src/errors/conflictError.js","../src/errors/deviceCommError.js","../src/errors/loginError.js","../src/errors/notFoundError.js","../src/errors/requestError.js","../src/errors/systemCommError.js","../src/errors/tokenExpiredError.js","../src/errors/unprocessableRequestError.js","../src/errors/validationError.js","../src/events/index.js","../src/defs.js","../src/events/event.js","../src/events/applicationInUse.js","../src/events/applicationOutOfUse.js","../src/events/emailEvent.js","../src/events/reservationCheckedIn.js","../src/events/reservationCheckedOut.js","../src/events/reservationSpaceChanged.js","../src/events/sceneSet.js","../src/events/shortLinkCreated.js","../src/events/smsEvent.js","../src/events/systemAlarmUpdated.js","../src/events/systemCameraUpdated.js","../src/events/systemCategoryUpdated.js","../src/events/systemCourtesyUpdated.js","../src/events/systemCredentialUpdated.js","../src/events/systemDimmerUpdated.js","../src/events/systemEntityDeleted.js","../src/events/systemGatewayUpdated.js","../src/events/systemLockUpdated.js","../src/events/systemMediaSourceUpdated.js","../src/events/systemMotionSensorUpdated.js","../src/events/systemOrganizationUpdated.js","../src/events/systemProductUpdated.js","../src/events/systemPropertyUpdated.js","../src/events/systemReservationUpdated.js","../src/events/systemSpaceUpdated.js","../src/events/systemSwitchUpdated.js","../src/events/systemThermostatUpdated.js","../src/events/systemUserUpdated.js","../src/events/systemWindowCoveringUpdated.js","../src/models/entity.js","../src/validate.js","../src/schemas/alarm.js","../src/schemas/announcement.js","../src/schemas/automation.js","../src/schemas/camera.js","../src/schemas/category.js","../src/schemas/courtesy.js","../src/schemas/credential.js","../src/schemas/definitions.js","../src/schemas/deviceRouter.js","../src/schemas/dimmer.js","../src/schemas/discoveredDevice.js","../src/schemas/emailMessage.js","../src/schemas/energyReport.js","../src/schemas/energyReportShard.js","../src/schemas/gateway.js","../src/schemas/identification.js","../src/schemas/issue.js","../src/schemas/lock.js","../src/schemas/log.js","../src/schemas/mediaFile.js","../src/schemas/mediaSource.js","../src/schemas/motionSensor.js","../src/schemas/order.js","../src/schemas/organization.js","../src/schemas/payment.js","../src/schemas/policy.js","../src/schemas/product.js","../src/schemas/property.js","../src/schemas/reservation.js","../src/schemas/room.js","../src/schemas/scene.js","../src/schemas/shortLink.js","../src/schemas/smsMessage.js","../src/schemas/space.js","../src/schemas/switch.js","../src/schemas/systemUser.js","../src/schemas/thermostat.js","../src/schemas/ticket.js","../src/schemas/timeSheet.js","../src/schemas/user.js","../src/schemas/vendor.js","../src/schemas/windowCovering.js","../src/models/alarm.js","../src/models/announcement.js","../src/models/automation.js","../src/models/camera.js","../src/models/category.js","../src/models/courtesy.js","../src/models/credential.js","../src/models/deviceRouter.js","../src/models/dimmer.js","../src/models/discoveredDevice.js","../src/models/emailMessage.js","../src/models/energyReport.js","../src/models/energyReportShard.js","../src/models/gateway.js","../src/models/identification.js","../src/models/issue.js","../src/models/lock.js","../src/models/log.js","../src/models/mediaFile.js","../src/models/mediaSource.js","../src/models/motionSensor.js","../src/models/order.js","../src/models/organization.js","../src/models/payment.js","../src/models/policy.js","../src/models/product.js","../src/models/property.js","../src/models/reservation.js","../src/models/room.js","../src/models/scene.js","../src/models/shortLink.js","../src/models/smsMessage.js","../src/models/space.js","../src/models/switch.js","../src/models/systemUser.js","../src/models/thermostat.js","../src/models/ticket.js","../src/models/timeSheet.js","../src/models/user.js","../src/models/vendor.js","../src/models/windowCovering.js"],"sourcesContent":["import * as Errors from \"./errors\";\nimport * as Events from \"./events\";\nimport * as Models from \"./models\";\n\nexport function entityFactory(type) {\n switch (type) {\n case \"reservation\":\n return Models.Reservation;\n case \"mediaFile\":\n return Models.MediaFile;\n case \"switch\":\n return Models.Switch;\n case \"alarm\":\n return Models.Alarm;\n case \"dimmer\":\n return Models.Dimmer;\n case \"lock\":\n return Models.Lock;\n case \"thermostat\":\n return Models.Thermostat;\n case \"windowCovering\":\n return Models.WindowCovering;\n case \"identification\":\n return Models.Identification;\n case \"user\":\n return Models.User;\n case \"systemUser\":\n return Models.SystemUser;\n case \"policy\":\n return Models.Policy;\n case \"courtesy\":\n return Models.Courtesy;\n case \"camera\":\n return Models.Camera;\n case \"motionSensor\":\n return Models.MotionSensor;\n case \"mediaSource\":\n return Models.MediaSource;\n case \"room\":\n return Models.Room;\n case \"space\":\n return Models.Space;\n case \"category\":\n return Models.Category;\n case \"ticket\":\n return Models.Ticket;\n case \"scene\":\n return Models.Scene;\n case \"gateway\":\n return Models.Gateway;\n case \"product\":\n return Models.Product;\n case \"order\":\n return Models.Order;\n case \"discoveredDevice\":\n return Models.DiscoveredDevice;\n case \"deviceRouter\":\n return Models.DeviceRouter;\n case \"credential\":\n return Models.Credential;\n case \"shortLink\":\n return Models.ShortLink;\n case \"energyReportShard\":\n return Models.EnergyReportShard;\n case \"energyReport\":\n return Models.EnergyReport;\n case \"smsMessage\":\n return Models.SmsMessage;\n case \"emailMessage\":\n return Models.EmailMessage;\n case \"announcement\":\n return Models.Announcement;\n case \"timeSheet\":\n return Models.TimeSheet;\n case \"property\":\n return Models.Property;\n case \"organization\":\n return Models.Organization;\n case \"issue\":\n return Models.Issue;\n case \"vendor\":\n return Models.Vendor;\n case \"log\":\n return Models.Log;\n default:\n throw new Error(\"Unknown entity type: \" + type);\n }\n}\n\nexport function errorFactory(errName) {\n switch (errName) {\n case \"AppError\":\n return Errors.AppError;\n case \"AuthenticationError\":\n return Errors.AuthenticationError;\n case \"AuthorizationError\":\n return Errors.AuthorizationError;\n case \"ConflictError\":\n return Errors.ConflictError;\n case \"DeviceCommError\":\n return Errors.DeviceCommError;\n case \"LoginError\":\n return Errors.LoginError;\n case \"NotFoundError\":\n return Errors.NotFoundError;\n case \"RequestError\":\n return Errors.RequestError;\n case \"SystemCommError\":\n return Errors.SystemCommError;\n case \"TokenExpiredError\":\n return Errors.TokenExpiredError;\n case \"UnprocessableRequestError\":\n return Errors.UnprocessableRequestError;\n case \"ValidationError\":\n return Errors.ValidationError;\n default:\n return new Error(\"Invalid error name: \" + errName);\n }\n}\n\nexport function eventFactory(eventName) {\n const AllEvents = Object.values(Events);\n const Event = AllEvents.find((E) => E.prototype.name === eventName);\n if (!Event) throw new Error(\"Invalid event name: \" + eventName);\n return Event;\n}\n","export class AppError extends Error {\n constructor(message = \"Internal Server Error\", options) {\n super(message, options);\n this.type = this.constructor.name;\n this.statusCode = 500;\n this.name = \"AppError\";\n Object.setPrototypeOf(this, AppError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class AuthenticationError extends AppError {\n constructor(message = \"Authentication Error\", options = {}) {\n super(message, options);\n this.statusCode = 401;\n this.name = \"AuthenticationError\";\n Object.setPrototypeOf(this, AuthenticationError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class AuthorizationError extends AppError {\n constructor(message = \"Authorization Error\", options = {}) {\n super(message, options);\n this.statusCode = 403;\n this.name = \"AuthorizationError\";\n Object.setPrototypeOf(this, AuthorizationError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class ConflictError extends AppError {\n constructor(message = \"Bad Request\", options = {}) {\n super(message, options);\n this.statusCode = 409;\n this.name = \"ConflictError\";\n Object.setPrototypeOf(this, ConflictError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class DeviceCommError extends AppError {\n constructor(message = \"Device Communication Error\", options = {}) {\n super(message, options);\n this.statusCode = 503;\n this.name = \"DeviceCommError\";\n Object.setPrototypeOf(this, DeviceCommError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class LoginError extends AppError {\n constructor(message = \"Invalid Login information provided\", options = {}) {\n super(message, options);\n this.statusCode = 401;\n this.name = \"LoginError\";\n Object.setPrototypeOf(this, LoginError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class NotFoundError extends AppError {\n constructor(message = \"Resource Not Found\", options = {}) {\n super(message, options);\n this.statusCode = 404;\n this.name = \"NotFoundError\";\n Object.setPrototypeOf(this, NotFoundError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class RequestError extends AppError {\n constructor(message = \"Bad Request\", options = {}) {\n super(message, options);\n this.statusCode = 400;\n this.name = \"RequestError\";\n Object.setPrototypeOf(this, RequestError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class SystemCommError extends AppError {\n constructor(message = \"System Communication Error\", options = {}) {\n super(message, options);\n this.statusCode = 503;\n this.name = \"SystemCommError\";\n Object.setPrototypeOf(this, SystemCommError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class TokenExpiredError extends AppError {\n constructor(message = \"Token Expired\", options = {}) {\n super(message, options);\n this.statusCode = 401;\n this.name = \"TokenExpiredError\";\n Object.setPrototypeOf(this, TokenExpiredError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class UnprocessableRequestError extends AppError {\n constructor(message = \"Unprocessable Request Error\", options = {}) {\n super(message, options);\n this.statusCode = 422;\n this.name = \"UnprocessableRequestError\";\n Object.setPrototypeOf(this, UnprocessableRequestError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class ValidationError extends AppError {\n constructor(message = \"Validation Error\", options = {}) {\n super(message, options);\n this.statusCode = 400;\n this.name = \"ValidationError\";\n Object.setPrototypeOf(this, ValidationError.prototype);\n }\n}\n","// This file is auto-generated. Do not edit this file manually.\n// Generated on: 2025-03-20T14:07:48.531Z\n\nexport * from \"./applicationInUse\";\nexport * from \"./applicationOutOfUse\";\nexport * from \"./emailEvent\";\nexport * from \"./event\";\nexport * from \"./reservationCheckedIn\";\nexport * from \"./reservationCheckedOut\";\nexport * from \"./reservationSpaceChanged\";\nexport * from \"./sceneSet\";\nexport * from \"./shortLinkCreated\";\nexport * from \"./smsEvent\";\nexport * from \"./systemAlarmUpdated\";\nexport * from \"./systemCameraUpdated\";\nexport * from \"./systemCategoryUpdated\";\nexport * from \"./systemCourtesyUpdated\";\nexport * from \"./systemCredentialUpdated\";\nexport * from \"./systemDimmerUpdated\";\nexport * from \"./systemEntityDeleted\";\nexport * from \"./systemGatewayUpdated\";\nexport * from \"./systemLockUpdated\";\nexport * from \"./systemMediaSourceUpdated\";\nexport * from \"./systemMotionSensorUpdated\";\nexport * from \"./systemOrganizationUpdated\";\nexport * from \"./systemProductUpdated\";\nexport * from \"./systemPropertyUpdated\";\nexport * from \"./systemReservationUpdated\";\nexport * from \"./systemSpaceUpdated\";\nexport * from \"./systemSwitchUpdated\";\nexport * from \"./systemThermostatUpdated\";\nexport * from \"./systemUserUpdated\";\nexport * from \"./systemWindowCoveringUpdated\";","export const amqpExchanges = {\n // routes commands based on `command-name` header and in many cases `property-id` header\n Commands: {\n name: \"kohost.commands\",\n type: \"headers\",\n options: {\n durable: true,\n },\n },\n CommandResponses: {\n name: \"kohost.commandResponses\",\n type: \"topic\",\n options: {\n durable: true,\n },\n },\n // routes events based on routing keys\n DriverEvents: {\n name: \"kohost.events.drivers\",\n type: \"topic\",\n options: {\n durable: true,\n },\n },\n AppEvents: {\n name: \"kohost.events.app\",\n type: \"topic\",\n options: {\n durable: true,\n },\n },\n Direct: {\n name: \"kohost.direct\",\n type: \"direct\",\n options: {\n durable: true,\n },\n },\n // dead letter exchange\n dlx: {\n name: \"kohost.dlx\",\n type: \"direct\",\n },\n};\n\nexport const deviceTypes = [\n \"dimmer\",\n \"switch\",\n \"thermostat\",\n \"lock\",\n \"windowCovering\",\n \"courtesy\",\n \"alarm\",\n \"camera\",\n \"mediaSource\",\n \"motionSensor\",\n \"gateway\",\n];\n","import { amqpExchanges } from \"../defs\";\n\nexport class Event {\n constructor(data, context = {}) {\n this.data = [];\n this.context = context;\n if (!data) throw new Error(\"Event data is required\");\n if (typeof data !== \"object\" && !Array.isArray(data))\n throw new Error(\"Event data must be an object or array\");\n\n if (!Array.isArray(data)) this.data = [data];\n else this.data = data;\n }\n\n get organizationId() {\n return this.context.organizationId || \"*\";\n }\n\n get propertyId() {\n return this.context.propertyId || \"*\";\n }\n\n static get type() {\n return \"Event\";\n }\n\n static get exchange() {\n return amqpExchanges.DriverEvents.name;\n }\n\n static get entity() {\n return \"\";\n }\n\n build() {\n return { data: { ...this.data } };\n }\n\n get routingKey() {\n return `${this.organizationId}.${this.propertyId}.${this.constructor.entity}.${this.constructor.name}`;\n }\n}\n","import { amqpExchanges } from \"../defs\";\nimport { Event } from \"./event\";\n\nexport class ApplicationInUse extends Event {\n constructor(data = {}, context) {\n super(data, context);\n }\n\n static get name() {\n return \"ApplicationInUse\";\n }\n\n static get entity() {\n return \"app\";\n }\n\n static get exchange() {\n return amqpExchanges.AppEvents.name;\n }\n}\n","import { amqpExchanges } from \"../defs\";\nimport { Event } from \"./event\";\n\nexport class ApplicationOutOfUse extends Event {\n constructor(data = {}, context = {}) {\n super(data, context);\n }\n\n static get name() {\n return \"ApplicationOutOfUse\";\n }\n\n static get entity() {\n return \"app\";\n }\n\n static get exchange() {\n return amqpExchanges.AppEvents.name;\n }\n}\n","import { Event } from \"./event\";\n\nexport class EmailEvent extends Event {\n constructor(email, context) {\n super(email, context);\n }\n\n static get name() {\n return \"EmailEvent\";\n }\n\n static get entity() {\n return \"emailMessage\";\n }\n}\n","import { amqpExchanges } from \"../defs\";\nimport { Event } from \"./event\";\n\nexport class ReservationCheckedIn extends Event {\n constructor(reservation, context) {\n super(reservation, context);\n }\n\n static get name() {\n return \"ReservationCheckedIn\";\n }\n\n static get entity() {\n return \"reservation\";\n }\n\n static get exchange() {\n return amqpExchanges.AppEvents.name;\n }\n}\n","import { amqpExchanges } from \"../defs\";\nimport { Event } from \"./event\";\n\nexport class ReservationCheckedOut extends Event {\n constructor(reservation, context) {\n super(reservation, context);\n }\n\n static get name() {\n return \"ReservationCheckedOut\";\n }\n\n static get entity() {\n return \"reservation\";\n }\n\n static get exchange() {\n return amqpExchanges.AppEvents.name;\n }\n}\n","import { amqpExchanges } from \"../defs\";\nimport { Event } from \"./event\";\n\nexport class ReservationSpaceChanged extends Event {\n constructor(reservation, context) {\n super(reservation, context);\n }\n\n static get name() {\n return \"ReservationSpaceChanged\";\n }\n\n static get entity() {\n return \"reservation\";\n }\n\n static get exchange() {\n return amqpExchanges.AppEvents.name;\n }\n}\n","import { Event } from \"./event\";\n\nexport class SceneSet extends Event {\n constructor(scene, context) {\n super(scene, context);\n }\n\n static get name() {\n return \"SceneSet\";\n }\n\n static get entity() {\n return \"scene\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class ShortLinkCreated extends Event {\n constructor(shortLink, context) {\n super(shortLink, context);\n }\n\n static get name() {\n return \"ShortLinkCreated\";\n }\n\n static get entity() {\n return \"shortLink\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SMSEvent extends Event {\n constructor(sms, context) {\n super(sms, context);\n }\n\n static get name() {\n return \"SMSEvent\";\n }\n\n static get entity() {\n return \"smsMessage\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemAlarmUpdated extends Event {\n constructor(alarm, context) {\n super(alarm, context);\n }\n\n static get name() {\n return \"SystemAlarmUpdated\";\n }\n\n static get entity() {\n return \"alarm\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemCameraUpdated extends Event {\n constructor(camera, context) {\n super(camera, context);\n }\n\n static get name() {\n return \"SystemCameraUpdated\";\n }\n\n static get entity() {\n return \"camera\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemCategoryUpdated extends Event {\n constructor(category, context) {\n super(category, context);\n }\n\n static get name() {\n return \"SystemCategoryUpdated\";\n }\n\n static get entity() {\n return \"category\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemCourtesyUpdated extends Event {\n constructor(courtesy, context) {\n super(courtesy, context);\n }\n\n static get name() {\n return \"SystemCourtesyUpdated\";\n }\n\n static get entity() {\n return \"courtesy\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemCredentialUpdated extends Event {\n constructor(cred, context) {\n super(cred, context);\n }\n\n static get name() {\n return \"SystemCredentialUpdated\";\n }\n\n static get entity() {\n return \"credential\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemDimmerUpdated extends Event {\n constructor(dimmer, context) {\n super(dimmer, context);\n }\n\n static get name() {\n return \"SystemDimmerUpdated\";\n }\n\n static get entity() {\n return \"dimmer\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemEntityDeleted extends Event {\n constructor(data, context) {\n super(data, context);\n }\n\n static get name() {\n return \"SystemEntityDeleted\";\n }\n\n static get entity() {\n return \"entity\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemGatewayUpdated extends Event {\n constructor(gateway, context) {\n super(gateway, context);\n }\n\n static get name() {\n return \"SystemGatewayUpdated\";\n }\n\n static get entity() {\n return \"gateway\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemLockUpdated extends Event {\n constructor(lock, context) {\n super(lock, context);\n }\n\n static get name() {\n return \"SystemLockUpdated\";\n }\n\n static get entity() {\n return \"lock\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemMediaSourceUpdated extends Event {\n constructor(mediaSource, context) {\n super(mediaSource, context);\n }\n\n static get name() {\n return \"SystemMediaSourceUpdated\";\n }\n\n static get entity() {\n return \"mediaSource\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemMotionSensorUpdated extends Event {\n constructor(motion, context) {\n super(motion, context);\n }\n\n static get name() {\n return \"SystemMotionSensorUpdated\";\n }\n\n static get entity() {\n return \"motionSensor\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemOrganizationUpdated extends Event {\n constructor(organization, context) {\n super(organization, context);\n }\n\n static get name() {\n return \"SystemOrganizationUpdated\";\n }\n\n static get entity() {\n return \"organization\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemProductUpdated extends Event {\n constructor(product, context) {\n super(product, context);\n }\n\n static get name() {\n return \"SystemProductUpdated\";\n }\n\n static get entity() {\n return \"product\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemPropertyUpdated extends Event {\n constructor(property, context) {\n super(property, context);\n }\n\n static get name() {\n return \"SystemPropertyUpdated\";\n }\n\n static get entity() {\n return \"property\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemReservationUpdated extends Event {\n constructor(reservation, context) {\n super(reservation, context);\n }\n\n static get name() {\n return \"SystemReservationUpdated\";\n }\n\n static get entity() {\n return \"reservation\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemSpaceUpdated extends Event {\n constructor(space, context) {\n super(space, context);\n }\n\n static get name() {\n return \"SystemSpaceUpdated\";\n }\n\n static get entity() {\n return \"space\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemSwitchUpdated extends Event {\n constructor(_switch, context) {\n super(_switch, context);\n }\n\n static get name() {\n return \"SystemSwitchUpdated\";\n }\n\n static get entity() {\n return \"switch\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemThermostatUpdated extends Event {\n constructor(thermostat, context) {\n super(thermostat, context);\n }\n\n static get name() {\n return \"SystemThermostatUpdated\";\n }\n\n static get entity() {\n return \"thermostat\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemUserUpdated extends Event {\n constructor(user, context) {\n super(user, context);\n }\n\n static get name() {\n return \"SystemUserUpdated\";\n }\n\n static get entity() {\n return \"user\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemWindowCoveringUpdated extends Event {\n constructor(wc, context) {\n super(wc, context);\n }\n\n static get name() {\n return \"SystemWindowCoveringUpdated\";\n }\n\n static get entity() {\n return \"windowCovering\";\n }\n}\n","import { ValidationError } from \"../errors/validationError\";\n\nexport class Entity {\n constructor(data) {\n if (!this.schema) {\n throw new Error(\"Schema is not defined\");\n }\n\n if (!this.validator) {\n throw new Error(\"Validator is not defined\");\n }\n\n this.#validate(data);\n }\n\n get schemaProperties() {\n return Object.keys(this.validator.schema.properties);\n }\n\n #validate(data) {\n const valid = this.validator(data);\n if (!valid) {\n throw new ValidationError(`Invalid ${this.constructor.name}`, {\n cause: this.validator.errors,\n });\n }\n }\n}\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\nimport { Ajv } from \"ajv\";\nimport addFormats from \"ajv-formats\";\n\nimport alarmschema from \"./schemas/alarm.js\";\nimport announcementschema from \"./schemas/announcement.js\";\nimport automationschema from \"./schemas/automation.js\";\nimport cameraschema from \"./schemas/camera.js\";\nimport categoryschema from \"./schemas/category.js\";\nimport courtesyschema from \"./schemas/courtesy.js\";\nimport credentialschema from \"./schemas/credential.js\";\nimport definitionsschema from \"./schemas/definitions.js\";\nimport deviceRouterschema from \"./schemas/deviceRouter.js\";\nimport dimmerschema from \"./schemas/dimmer.js\";\nimport discoveredDeviceschema from \"./schemas/discoveredDevice.js\";\nimport emailMessageschema from \"./schemas/emailMessage.js\";\nimport energyReportschema from \"./schemas/energyReport.js\";\nimport energyReportShardschema from \"./schemas/energyReportShard.js\";\nimport gatewayschema from \"./schemas/gateway.js\";\nimport identificationschema from \"./schemas/identification.js\";\nimport issueschema from \"./schemas/issue.js\";\nimport lockschema from \"./schemas/lock.js\";\nimport logschema from \"./schemas/log.js\";\nimport mediaFileschema from \"./schemas/mediaFile.js\";\nimport mediaSourceschema from \"./schemas/mediaSource.js\";\nimport motionSensorschema from \"./schemas/motionSensor.js\";\nimport orderschema from \"./schemas/order.js\";\nimport organizationschema from \"./schemas/organization.js\";\nimport paymentschema from \"./schemas/payment.js\";\nimport policyschema from \"./schemas/policy.js\";\nimport productschema from \"./schemas/product.js\";\nimport propertyschema from \"./schemas/property.js\";\nimport reservationschema from \"./schemas/reservation.js\";\nimport roomschema from \"./schemas/room.js\";\nimport sceneschema from \"./schemas/scene.js\";\nimport shortLinkschema from \"./schemas/shortLink.js\";\nimport smsMessageschema from \"./schemas/smsMessage.js\";\nimport spaceschema from \"./schemas/space.js\";\nimport switchschema from \"./schemas/switch.js\";\nimport systemUserschema from \"./schemas/systemUser.js\";\nimport thermostatschema from \"./schemas/thermostat.js\";\nimport ticketschema from \"./schemas/ticket.js\";\nimport timeSheetschema from \"./schemas/timeSheet.js\";\nimport userschema from \"./schemas/user.js\";\nimport vendorschema from \"./schemas/vendor.js\";\nimport windowCoveringschema from \"./schemas/windowCovering.js\";\n\nconst schemas = [\n alarmschema,\n announcementschema,\n automationschema,\n cameraschema,\n categoryschema,\n courtesyschema,\n credentialschema,\n definitionsschema,\n deviceRouterschema,\n dimmerschema,\n discoveredDeviceschema,\n emailMessageschema,\n energyReportschema,\n energyReportShardschema,\n gatewayschema,\n identificationschema,\n issueschema,\n lockschema,\n logschema,\n mediaFileschema,\n mediaSourceschema,\n motionSensorschema,\n orderschema,\n organizationschema,\n paymentschema,\n policyschema,\n productschema,\n propertyschema,\n reservationschema,\n roomschema,\n sceneschema,\n shortLinkschema,\n smsMessageschema,\n spaceschema,\n switchschema,\n systemUserschema,\n thermostatschema,\n ticketschema,\n timeSheetschema,\n userschema,\n vendorschema,\n windowCoveringschema,\n];\n\nconst ajv = new Ajv({\n allErrors: true,\n useDefaults: true,\n strict: false,\n allowMatchingProperties: true,\n allowUnionTypes: true,\n strictRequired: false,\n schemas: schemas,\n});\n\naddFormats(ajv);\n\nexport const validateAlarm = ajv.compile(alarmschema);\nexport const validateAnnouncement = ajv.compile(announcementschema);\nexport const validateAutomation = ajv.compile(automationschema);\nexport const validateCamera = ajv.compile(cameraschema);\nexport const validateCategory = ajv.compile(categoryschema);\nexport const validateCourtesy = ajv.compile(courtesyschema);\nexport const validateCredential = ajv.compile(credentialschema);\nexport const validateDeviceRouter = ajv.compile(deviceRouterschema);\nexport const validateDimmer = ajv.compile(dimmerschema);\nexport const validateDiscoveredDevice = ajv.compile(discoveredDeviceschema);\nexport const validateEmailMessage = ajv.compile(emailMessageschema);\nexport const validateEnergyReport = ajv.compile(energyReportschema);\nexport const validateEnergyReportShard = ajv.compile(energyReportShardschema);\nexport const validateGateway = ajv.compile(gatewayschema);\nexport const validateIdentification = ajv.compile(identificationschema);\nexport const validateIssue = ajv.compile(issueschema);\nexport const validateLock = ajv.compile(lockschema);\nexport const validateLog = ajv.compile(logschema);\nexport const validateMediaFile = ajv.compile(mediaFileschema);\nexport const validateMediaSource = ajv.compile(mediaSourceschema);\nexport const validateMotionSensor = ajv.compile(motionSensorschema);\nexport const validateOrder = ajv.compile(orderschema);\nexport const validateOrganization = ajv.compile(organizationschema);\nexport const validatePayment = ajv.compile(paymentschema);\nexport const validatePolicy = ajv.compile(policyschema);\nexport const validateProduct = ajv.compile(productschema);\nexport const validateProperty = ajv.compile(propertyschema);\nexport const validateReservation = ajv.compile(reservationschema);\nexport const validateRoom = ajv.compile(roomschema);\nexport const validateScene = ajv.compile(sceneschema);\nexport const validateShortLink = ajv.compile(shortLinkschema);\nexport const validateSmsMessage = ajv.compile(smsMessageschema);\nexport const validateSpace = ajv.compile(spaceschema);\nexport const validateSwitch = ajv.compile(switchschema);\nexport const validateSystemUser = ajv.compile(systemUserschema);\nexport const validateThermostat = ajv.compile(thermostatschema);\nexport const validateTicket = ajv.compile(ticketschema);\nexport const validateTimeSheet = ajv.compile(timeSheetschema);\nexport const validateUser = ajv.compile(userschema);\nexport const validateVendor = ajv.compile(vendorschema);\nexport const validateWindowCovering = ajv.compile(windowCoveringschema);\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"alarm.json\",\n title: \"Alarm\",\n description: \"Any smart alarm system\",\n type: \"object\",\n required: [\"id\", \"type\", \"areas\", \"zones\", \"driver\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n description: \"Name of the alarm\",\n },\n offline: {\n type: \"boolean\",\n },\n type: {\n type: \"string\",\n enum: [\"alarm\"],\n default: \"alarm\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n areas: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n number: {\n type: \"number\",\n },\n name: {\n type: \"string\",\n },\n securityMode: {\n type: [\"string\", \"null\"],\n enum: [\"arming\", \"disarming\", \"armed\", \"disarmed\", \"alarm\", null],\n },\n },\n additionalProperties: false,\n },\n },\n zones: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n number: {\n type: \"number\",\n minimum: 0,\n },\n name: {\n type: \"string\",\n },\n secure: {\n type: [\"boolean\", \"null\"],\n },\n bypassed: {\n type: [\"boolean\", \"null\"],\n },\n },\n additionalProperties: false,\n },\n },\n chime: {\n type: \"boolean\",\n description: \"Reflects whether console chime is enabled\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n address: {\n $ref: \"definitions.json#/definitions/address\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"announcement.json\",\n title: \"Announcement\",\n description: \"Announcement message sent to users\",\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: {\n type: \"string\",\n enum: [\"announcement\"],\n default: \"announcement\",\n },\n users: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n minItems: 1,\n },\n group: {\n type: \"string\",\n },\n body: {\n type: \"string\",\n },\n media: {\n $ref: \"mediaFile.json\",\n },\n sentBy: {\n type: \"string\",\n },\n tags: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n },\n additionalProperties: false,\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"automation.json\",\n title: \"Automation\",\n description: \"An automation is a collection of triggers and actions\",\n type: \"object\",\n required: [\"id\", \"type\", \"trigger\", \"actions\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n description: \"The friendly name of the automation\",\n },\n type: {\n type: \"string\",\n enum: [\"automation\"],\n default: \"automation\",\n },\n isEnabled: {\n type: \"boolean\",\n description: \"Whether the automation is currently enabled\",\n default: true,\n },\n\n trigger: {\n type: \"object\",\n description: \"The trigger that initiates the automation\",\n required: [\"discriminator\", \"schedule\"],\n properties: {\n discriminator: {\n type: \"string\",\n enum: [\"time\"],\n description: \"Type of trigger\",\n },\n // Time-based trigger properties\n schedule: {\n type: \"object\",\n description: \"Schedule for time-based triggers\",\n required: [\"days\", \"time\", \"timezone\"],\n properties: {\n days: {\n type: \"array\",\n description: \"Days of the week (0 = Sunday, 6 = Saturday)\",\n items: {\n type: \"integer\",\n minimum: 0,\n maximum: 6,\n },\n },\n time: {\n type: \"string\",\n description: \"Time of day to trigger the automation\",\n },\n timeOffsetSeconds: {\n type: \"integer\",\n description: \"Offset in seconds from the scheduled time\",\n default: 0,\n },\n repeat: {\n type: \"boolean\",\n description: \"Whether the schedule repeats\",\n default: true,\n },\n timezone: {\n type: \"string\",\n description: \"Timezone for the schedule (IANA timezone format)\",\n },\n },\n },\n },\n },\n actions: {\n type: \"array\",\n description: \"Actions to perform when the trigger conditions are met\",\n items: {\n type: \"object\",\n required: [\"deviceId\", \"roomId\", \"discriminator\", \"state\"],\n properties: {\n deviceId: {\n type: \"string\",\n description: \"ID of the device to control\",\n },\n roomId: {\n type: \"string\",\n description: \"ID of the room containing the device\",\n },\n discriminator: {\n type: \"string\",\n description:\n \"Type discriminator for the device (e.g., 'windowCovering', 'switch')\",\n },\n duration: {\n type: \"integer\",\n description:\n \"Duration in seconds to keep the device in the configured state\",\n minimum: 0,\n },\n state: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"property\", \"value\"],\n properties: {\n property: {\n type: \"string\",\n description:\n \"Property to set (e.g., 'state', 'level', 'setpoint')\",\n },\n value: {\n type: [\"string\", \"number\", \"boolean\"],\n description: \"Value to set the property to\",\n },\n },\n },\n },\n },\n },\n minItems: 1,\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/createdAt\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/updatedAt\",\n },\n lastTriggeredAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the automation was last triggered\",\n },\n },\n additionalProperties: false,\n};\n\nexport const getters = {\n /**\n * Check if the automation is time-based\n * @returns {boolean} True if the automation is time-based\n */\n isTimeBased() {\n return (\n this.discriminator === \"time\" ||\n (this.trigger && this.trigger.type === \"time\")\n );\n },\n\n /**\n * Check if the automation is device-based\n * @returns {boolean} True if the automation is device-based\n */\n isDeviceBased() {\n return (\n this.discriminator === \"device\" ||\n (this.trigger && this.trigger.type !== \"time\")\n );\n },\n\n /**\n * Check if the automation is repeating (only applicable for time-based automations)\n * @returns {boolean} True if the automation repeats\n */\n isRepeating() {\n return this.isTimeBased() && this.trigger?.schedule?.repeat !== false;\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"camera.json\",\n title: \"Camera\",\n description: \"Any smart camera\",\n type: \"object\",\n required: [\"id\", \"type\", \"driver\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n discriminator: {\n type: \"string\",\n enum: [\n \"doorStation\"\n ]\n },\n\n type: {\n type: \"string\",\n enum: [\"camera\"],\n default: \"camera\",\n },\n offline: {\n type: \"boolean\",\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n liveStreams: {\n type: \"object\",\n additionalProperties: false,\n $comment:\n \"This is now deprecated. Use liveStream instead. This will remain here for backwards compatibility.\",\n properties: {\n iframe: {\n type: [\"string\", \"null\"],\n },\n hls: {\n type: [\"string\", \"null\"],\n },\n webRTC: {\n type: [\"string\", \"null\"],\n },\n rtsp: {\n type: [\"string\", \"null\"],\n },\n },\n },\n liveStream: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n id: {\n type: \"string\",\n },\n driver: {\n type: \"string\",\n enum: [\n \"cloudflare-stream\",\n \"aws-kinesis\",\n \"digital-watchdog\",\n \"mediamtx\",\n ],\n },\n allowedOrigins: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n authRequired: {\n type: \"boolean\",\n },\n iframe: {\n type: [\"string\", \"null\"],\n },\n hls: {\n type: [\"string\", \"null\"],\n },\n webRTC: {\n type: [\"string\", \"null\"],\n },\n rtsp: {\n type: [\"string\", \"null\"],\n description: \"Local RTSP stream URL\",\n examples: [\n \"rtsp://192.168.1.4:544/channels/1\",\n \"rtsp://10.145.6.129:8554/unicast\",\n ],\n },\n previewImage: {\n type: [\"string\", \"null\"],\n description: \"Source to preview the camera stream\",\n examples: [\n \"https://example.com/preview.jpg\",\n \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QBYRXhpZgAATU0AKgAAAAgAA1EQAAEAAAABAQAAAFERAAQAAAABAAABAgABAA\",\n ],\n },\n },\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"category.json\",\n title: \"Category\",\n type: \"object\",\n required: [\"id\", \"type\", \"discriminator\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n enum: [\"category\"],\n default: \"category\",\n },\n name: {\n type: \"string\",\n minLength: 1,\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n description: {\n type: \"string\",\n },\n image: {\n $ref: \"mediaFile.json\",\n },\n rating: {\n type: \"number\",\n minimum: 0,\n maximum: 10,\n default: 9,\n },\n discriminator: {\n type: \"string\",\n enum: [\"space\", \"product\", \"mediaFile\"],\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"courtesy.json\",\n title: \"Courtesy\",\n description: \"Any smart courtesy system\",\n type: \"object\",\n required: [\"id\", \"type\", \"driver\", \"supportedStates\", \"state\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n offline: {\n type: \"boolean\",\n },\n supportedStates: {\n type: \"array\",\n uniqueItems: true,\n items: {\n enum: [\"privacy\", \"service\", \"none\"],\n },\n },\n state: {\n type: \"string\",\n $ref: \"#/properties/supportedStates/items\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"credential.json\",\n title: \"Credential\",\n type: \"object\",\n required: [\"type\", \"credential\", \"expires\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"credential\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n discriminator: {\n type: \"string\",\n enum: [\n \"verificationCode\",\n \"token\",\n \"mobileKey\",\n \"pin\",\n \"publicKey\",\n \"passkeyChallenge\",\n ],\n },\n credential: {\n type: \"string\",\n },\n userId: {\n type: \"string\",\n },\n organizationId: {\n type: \"string\",\n },\n propertyId: {\n type: \"string\",\n },\n deviceId: {\n type: \"string\",\n },\n userAgent: {\n type: \"string\",\n },\n expires: {\n type: [\"string\", \"object\", \"null\"],\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"definitions.json\",\n title: \"Definitions\",\n definitions: {\n id: {\n type: \"string\",\n description: \"Identifier of the object.\",\n not: {\n enum: [\"global\", \"system\"],\n },\n },\n systemId: {\n type: \"string\",\n description: \"Identifier of the object, directly related to the system.\",\n },\n systemData: {\n type: \"object\",\n },\n metadata: {\n type: \"object\",\n default: {},\n },\n date: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n createdAt: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n updatedAt: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n file: {\n type: \"object\",\n required: [\"name\", \"type\", \"data\"],\n properties: {\n name: {\n type: \"string\",\n description: \"Name of the file.\",\n },\n type: {\n type: \"string\",\n description: \"MIME type of the file (e.g. application/pdf).\",\n },\n data: {\n type: \"string\",\n description: \"Base64-encoded data of the file.\",\n },\n },\n },\n address: {\n type: \"object\",\n properties: {\n id: {\n type: \"string\",\n },\n line1: {\n type: \"string\",\n },\n line2: {\n type: \"string\",\n },\n line3: {\n type: \"string\",\n },\n city: {\n type: \"string\",\n },\n state: {\n type: \"string\",\n },\n postalCode: {\n type: \"string\",\n },\n countryCode: {\n type: \"string\",\n minLength: 2,\n maxLength: 2,\n },\n },\n },\n driver: {\n type: \"string\",\n description: \"Driver used to communicate with the object.\",\n enum: [\n \"adlink\",\n \"aws-kinesis\",\n \"bacnet\",\n \"butler\",\n \"comelit\",\n \"crestron\",\n \"dell\",\n \"digital-watchdog\",\n \"distech\",\n \"dmp\",\n \"doorbird\",\n \"dormakaba\",\n \"dsc\",\n \"ecobee\",\n \"epson\",\n \"geovision-rs\",\n \"geovision-as-manager\",\n \"honeywell-vista\",\n \"igor\",\n \"inncom\",\n \"isapi\",\n \"kohost-k7\",\n \"kohost\",\n \"lg\",\n \"lg-webos\",\n \"lapi\",\n \"lirc\",\n \"mews\",\n \"mht\",\n \"paxton\",\n \"pelican-wireless\",\n \"power-shades\",\n \"rachio\",\n \"rebrandly\",\n \"relay\",\n \"rtsp\",\n \"salto\",\n \"salto-irn\",\n \"samsung\",\n \"se\",\n \"sendgrid\",\n \"sonifi\",\n \"stay-n-touch\",\n \"storable\",\n \"twilio\",\n \"unifi\",\n \"valcom\",\n \"vivotek\",\n \"vizio\",\n \"wisenet\",\n \"cloudflare-images\",\n \"cloudflare-stream\",\n \"insperia-privacy\",\n ],\n },\n type: {\n type: \"string\",\n enum: [\n \"alarm\",\n \"dimmer\",\n \"switch\",\n \"motionSensor\",\n \"windowCovering\",\n \"camera\",\n \"mediaSource\",\n \"thermostat\",\n \"lock\",\n \"courtesy\",\n \"gateway\",\n \"tv\",\n \"dvr\",\n \"appleTv\",\n \"discPlayer\",\n \"mediaPlayer\",\n \"uncontrolledDevice\",\n ],\n },\n name: {\n type: \"string\",\n },\n supportedNotifications: {\n type: \"array\",\n uniqueItems: true,\n items: {\n enum: [\n \"button 1\",\n \"button 2\",\n \"button 3\",\n \"button 4\",\n \"button 5\",\n \"idle\",\n \"powerHasBeedApplied\",\n \"acMainsDisconnected\",\n \"acMainsReconnected\",\n \"replaceBatterySoon\",\n \"replaceBatteryNow\",\n \"batteryOk\",\n \"hardwareFailure\",\n \"softwareFailure\",\n \"hardwareFailureWithCode\",\n \"softwareFailureWithCode\",\n \"motionDetection\",\n \"airFilterNeedsCleaned\",\n \"airFilterNeedsReplaced\",\n \"smokeDetected\",\n \"outsideSafeTemperatureRange\",\n \"outsideSafeHumidityRange\",\n \"scheduleMaintenance\",\n \"doorAjar\",\n \"communicationFailure\",\n \"communicationOk\",\n \"burglarAlarm\",\n \"fireAlarm\",\n ],\n },\n },\n notification: {\n type: [\"object\", \"null\"],\n properties: {\n name: {\n type: \"string\",\n $ref: \"#/definitions/supportedNotifications/items\",\n },\n timestamp: {\n type: \"number\",\n minimum: 1655907956593,\n },\n description: {\n type: \"string\",\n },\n },\n },\n batteryLevel: {\n type: \"number\",\n minimum: 0,\n maximum: 100,\n },\n watts: {\n type: \"number\",\n minimum: 0,\n },\n revenue: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n date: {\n type: \"string\",\n format: \"date-time\",\n },\n price: {\n type: \"number\",\n },\n tax: {\n type: [\"number\", \"null\"],\n },\n },\n },\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"deviceRouter.json\",\n title: \"Device Router\",\n description:\n \"A device router contains instructions on where to route devices based on their organization and driver.\",\n type: \"object\",\n required: [\"driver\", \"organizationId\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"deviceRouter\",\n enum: [\"deviceRouter\"],\n },\n driver: {\n type: \"string\",\n },\n organizationId: {\n type: [\"string\", \"null\"],\n description: \"Reference (id) to the organization that owns this router\",\n },\n devices: {\n type: \"object\",\n additionalProperties: true,\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"dimmer.json\",\n title: \"Dimmer\",\n description: \"Any smart dimmer\",\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n offline: {\n type: \"boolean\",\n },\n level: {\n type: [\"number\", \"null\"],\n minimum: 0,\n maximum: 100,\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n },\n required: [\"id\", \"type\", \"level\", \"driver\"],\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"discoveredDevice.json\",\n title: \"Discovered Device\",\n description:\n \"A device that has been discovered by Kohost, but not yet added to the Kohost system.\",\n type: \"object\",\n required: [\"name\", \"deviceId\", \"deviceData\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n deviceId: {\n type: \"string\",\n },\n type: {\n type: \"string\",\n enum: [\"discoveredDevice\"],\n default: \"discoveredDevice\",\n },\n discriminator: {\n $ref: \"definitions.json#/definitions/type\",\n },\n driver: {\n type: \"string\",\n },\n deviceData: {\n type: \"object\",\n },\n ignore: {\n type: \"boolean\",\n },\n organizationId: {\n type: [\"string\", \"null\"],\n description: \"Reference (id) to the organization that owns this device\",\n },\n propertyId: {\n type: [\"string\", \"null\"],\n description: \"Reference (id) to the property that this device belongs to\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"emailMessage.json\",\n title: \"Email Message\",\n type: \"object\",\n required: [\"to\", \"from\", \"status\", \"subject\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"emailMessage\",\n enum: [\"emailMessage\"],\n },\n to: {\n type: \"string\",\n pattern: \"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\\\.[a-zA-Z0-9-.]+$\",\n },\n from: {\n type: \"string\",\n pattern: \".*<[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\\\.[a-zA-Z0-9-.]+>.*\",\n description: \"Must be in the format of 'Sender <email@example.com>\",\n },\n subject: {\n type: \"string\",\n },\n status: {\n type: \"string\",\n enum: [\n \"queued\",\n \"sending\",\n \"sent\",\n \"deferred\",\n \"delivered\",\n \"undelivered\",\n \"bounced\",\n \"blocked\",\n \"receiving\",\n \"received\",\n \"opened\",\n \"clicked\",\n \"unsubscribed\",\n \"spamReport\",\n ],\n },\n statusMessage: {\n type: \"string\",\n },\n html: {\n type: \"string\",\n },\n text: {\n type: \"string\",\n },\n driver: {\n type: \"string\",\n },\n appData: {\n type: \"object\",\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"energyReport.json\",\n title: \"Energy Report\",\n description: \"Hourly Report for Energy based on energy report shards\",\n type: \"object\",\n required: [\n \"id\",\n \"type\",\n \"roomId\",\n \"first\",\n \"last\",\n \"consumption\",\n \"totals\",\n \"costPerKw\",\n ],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n enum: [\"energyReport\"],\n default: \"energyReport\",\n },\n reportTime: {\n type: \"string\",\n enum: [\"hourly\", \"daily\", \"monthly\"],\n },\n roomId: {\n $ref: \"definitions.json#/definitions/id\",\n },\n first: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n last: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n consumption: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"id\", \"type\", \"kwh\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n },\n kwh: {\n type: \"number\",\n minimum: 0,\n },\n },\n },\n },\n totals: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"lights\", \"climate\", \"media\"],\n properties: {\n lights: {\n type: \"number\",\n minimum: 0,\n },\n climate: {\n type: \"number\",\n minimum: 0,\n },\n media: {\n type: \"number\",\n minimum: 0,\n },\n },\n },\n },\n costPerKw: {\n type: \"number\",\n minimum: 0,\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"energyReportShard.json\",\n title: \"Energy Report Shard\",\n description: \"Shard used for Energy Reports\",\n type: \"object\",\n required: [\n \"id\",\n \"type\",\n \"roomId\",\n \"first\",\n \"last\",\n \"data\",\n \"ndata\",\n \"expires\",\n ],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n enum: [\"energyReportShard\"],\n default: \"energyReportShard\",\n },\n roomId: {\n $ref: \"definitions.json#/definitions/id\",\n },\n first: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n last: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n data: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"time\", \"watts\", \"id\", \"type\", \"value\"],\n properties: {\n time: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n },\n value: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n },\n },\n },\n },\n ndata: {\n type: \"integer\",\n minimum: 0,\n maximum: 100000,\n default: 0,\n },\n expires: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"iotGateway.json\",\n title: \"Gateway\",\n description:\n \"Any smart gateway that is an entrypoint for controlling devices\",\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n offline: {\n type: \"boolean\",\n },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n status: {\n type: \"string\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n },\n required: [\"id\", \"type\", \"status\", \"driver\"],\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"identification.json\",\n title: \"Identification\",\n type: \"object\",\n required: [\"type\"],\n additionalProperties: false,\n oneOf: [\n {\n required: [\"number\"],\n },\n {\n required: [\"encryptedNumber\"],\n },\n ],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n enum: [\"driversLicense\", \"passport\", \"identityCard\", \"visa\"],\n },\n number: {\n type: \"string\",\n },\n maskedNumber: {\n type: \"string\",\n },\n encryptedNumber: {\n type: \"string\",\n },\n issued: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n expires: {\n type: [\"string\", \"object\", \"null\"],\n format: \"date-time\",\n },\n verified: {\n type: \"boolean\",\n },\n matched: {\n type: \"boolean\",\n },\n firstName: {\n type: \"string\",\n },\n lastName: {\n type: \"string\",\n },\n issuingCountry: {\n type: \"string\",\n minLength: 2,\n maxLength: 2,\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"issue.json\",\n title: \"Issue\",\n description: \"An issue associated with ticketing and concierge.\",\n type: \"object\",\n required: [\"id\", \"type\", \"name\", \"department\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n enum: [\"issue\"],\n default: \"issue\",\n },\n name: {\n type: \"string\",\n },\n description: {\n type: \"string\",\n },\n department: {\n type: \"string\",\n },\n autoAssign: {\n type: \"object\",\n properties: {\n userId: {\n type: \"string\",\n description: \"The user ID to assign tickets with this issue to.\",\n },\n vendorId: {\n type: \"string\",\n description: \"The vendor ID to assign tickets with this issue to.\",\n },\n priority: {\n $ref: \"ticket.json#/properties/priority\",\n description: \"The priority to assign tickets with this issue to.\",\n },\n tags: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n },\n },\n notify: {\n type: \"array\",\n description: \"A list of entities to notify when this issue is triggered.\",\n default: [],\n items: {\n type: \"object\",\n required: [\"id\", \"discriminator\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the entity to notify.\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\"],\n },\n },\n },\n },\n systemKey: {\n type: \"string\",\n },\n autoCreateTicket: {\n type: \"boolean\",\n default: true,\n },\n excludedResources: {\n type: \"array\",\n description:\n \"A list of resources that should not trigger notifications of this issue\",\n items: {\n type: \"string\",\n },\n default: [],\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"lock.json\",\n title: \"Lock\",\n description: \"Any smart lock\",\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n },\n offline: {\n type: \"boolean\",\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n state: {\n type: [\"string\", \"null\"],\n enum: [\"locked\", \"unlocked\", null],\n },\n mode: {\n type: [\"string\", \"null\"],\n enum: [\n \"normal\",\n \"autoLock\",\n \"emergencyOpen\",\n \"emergencyClose\",\n \"holdOpen\",\n \"lockdown\",\n null,\n ],\n description:\n \"emergencyOpen and emergencyClose are deprecated and can be removed once Salto, Paxton and Geovision drivers are updated\",\n default: null,\n },\n supportedModes: {\n type: \"array\",\n uniqueItems: true,\n items: {\n enum: [\n \"normal\",\n \"autoLock\",\n \"emergencyOpen\",\n \"emergencyClose\",\n \"holdOpen\",\n \"lockdown\",\n null,\n ],\n },\n },\n batteryLevel: {\n $ref: \"definitions.json#/definitions/batteryLevel\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n },\n required: [\"id\", \"type\", \"state\", \"driver\"],\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"log.json\",\n title: \"Log\",\n type: \"object\",\n required: [\"type\", \"timestamp\", \"id\", \"driver\", \"name\"],\n properties: {\n type: {\n type: \"string\",\n default: \"log\",\n enum: [\"log\"],\n },\n timestamp: {\n type: \"number\",\n minimum: 1655907956593,\n },\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n name: {\n type: \"string\",\n description: \"Event name\",\n },\n field1: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: {\n name: {\n type: \"string\",\n },\n value: {\n type: \"string\",\n },\n },\n },\n field2: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: {\n name: {\n type: \"string\",\n },\n value: {\n type: \"string\",\n },\n },\n },\n field3: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: {\n name: {\n type: \"string\",\n },\n value: {\n type: \"string\",\n },\n },\n },\n field4: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: {\n name: {\n type: \"string\",\n },\n value: {\n type: \"string\",\n },\n },\n },\n field5: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: {\n name: {\n type: \"string\",\n },\n value: {\n type: \"string\",\n },\n },\n },\n field6: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: {\n name: {\n type: \"string\",\n },\n value: {\n type: \"string\",\n },\n },\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"mediaFile.json\",\n title: \"Media File\",\n description: \"Any media file\",\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"mediaFile\",\n enum: [\"mediaFile\"],\n },\n name: {\n type: \"string\",\n },\n fileHash: {\n type: \"string\",\n },\n category: {\n type: \"string\",\n description: \"This is the category id\",\n },\n mimeType: {\n type: \"string\",\n enum: [\n \"image/*\",\n \"image/jpeg\",\n \"image/png\",\n \"image/gif\",\n \"image/webp\",\n \"image/avif\",\n \"image/svg+xml\",\n \"application/pdf\",\n ],\n },\n data: {\n type: \"string\",\n },\n url: {\n type: \"string\",\n format: \"uri\",\n },\n width: {\n type: \"integer\",\n minimum: 0,\n },\n height: {\n type: \"integer\",\n minimum: 0,\n },\n size: {\n type: \"integer\",\n minimum: 0,\n description: \"Size in bytes\",\n },\n uploadUrl: {\n type: \"string\",\n format: \"uri\",\n },\n uploadUrlExpires: {\n $ref: \"definitions.json#/definitions/date\",\n },\n createdBy: {\n type: \"string\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n additionalProperties: false,\n required: [\"type\"],\n};\n\nfunction createImageVariant(params) {\n if (this.mimeType != \"image/*\")\n throw new Error(\"Only dynamic images can have variants\");\n if (!this.url) throw new Error(\"MediaFile has no url\");\n // convert params to \"key=value\" pairs\n const query = Object.keys(params)\n .map((key) => `${key}=${params[key]}`)\n .join(\",\");\n\n // replace the final /public with the query above\n return this.url.replace(/\\/public$/, `/${query}`);\n}\n\nexport const methods = {\n createImageVariant: createImageVariant,\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"mediaSource.json\",\n title: \"Media Source\",\n description: \"Any media source\",\n type: \"object\",\n required: [\"id\", \"type\", \"discriminator\", \"audio\", \"video\", \"driver\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"mediaSource\",\n enum: [\"mediaSource\"],\n },\n discriminator: {\n type: \"string\",\n enum: [\n \"tv\",\n \"dvr\",\n \"appleTv\",\n \"discPlayer\",\n \"mediaPlayer\",\n \"paSystem\",\n \"uncontrolledDevice\",\n ],\n },\n playlists: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n $ref: \"definitions.json#/definitions/name\",\n },\n },\n },\n },\n remote: {\n type: \"string\",\n enum: [\n \"MR22GA\",\n \"XRT260\",\n \"XRT270\",\n \"HOF-16K 1.2\",\n \"219863500\",\n \"SONIFI\",\n \"AKB76039803\",\n \"BN59-01388A\",\n ],\n },\n name: {\n $ref: \"definitions.json#/definitions/name\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n offline: {\n type: \"boolean\",\n },\n audio: {\n type: \"boolean\",\n },\n video: {\n type: \"boolean\",\n },\n powerFeedback: {\n type: \"boolean\",\n },\n volumeFeedback: {\n type: \"boolean\",\n },\n muted: {\n type: \"boolean\",\n },\n volume: {\n type: \"number\",\n minimum: 0,\n maximum: 100,\n },\n brightness: {\n type: \"number\",\n minimum: 0,\n maximum: 100,\n },\n contrast: {\n type: \"number\",\n minimum: 0,\n maximum: 100,\n },\n power: {\n type: \"string\",\n enum: [\"on\", \"off\"],\n },\n input: {\n type: \"string\",\n },\n supportedInputs: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n supportedOutputs: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n command: {\n type: [\"string\", \"null\"],\n enum: [\n \"mute\",\n \"volumeUp\",\n \"volumeDown\",\n \"brightnessUp\",\n \"brightnessDown\",\n \"channelUp\",\n \"channelDown\",\n \"number0\",\n \"number1\",\n \"number2\",\n \"number3\",\n \"number4\",\n \"number5\",\n \"number6\",\n \"number7\",\n \"number8\",\n \"number9\",\n \"lastChannel\",\n \"display\",\n \"favoriteChannel\",\n \"play\",\n \"playing\",\n \"stop\",\n \"stopped\",\n \"pause\",\n \"paused\",\n \"fastForward\",\n \"fastForwarding\",\n \"rewind\",\n \"rewinding\",\n \"instantReplay\",\n \"record\",\n \"ac3\",\n \"pvrMenu\",\n \"guide\",\n \"menu\",\n \"menuUp\",\n \"menuDown\",\n \"menuLeft\",\n \"menuRight\",\n \"pageUp\",\n \"pageDown\",\n \"select\",\n \"exit\",\n \"input\",\n \"power\",\n \"enterChannel\",\n \"enterVolume\",\n \"enterBrightness\",\n \"enterContrast\",\n \"number10\",\n \"number11\",\n \"number12\",\n \"number13\",\n \"number14\",\n \"number15\",\n \"number16\",\n \"number10Plus\",\n \"number20Plus\",\n \"number100\",\n \"dash\",\n \"threeChan\",\n \"threeD\",\n \"sixChan\",\n \"a\",\n \"add\",\n \"alarm\",\n \"am\",\n \"analog\",\n \"angle\",\n \"antenna\",\n \"antennaEast\",\n \"antennaWest\",\n \"aspect\",\n \"audio1\",\n \"audio2\",\n \"audio3\",\n \"audioDumming\",\n \"audioLevelDown\",\n \"audioLevelUp\",\n \"b\",\n \"back\",\n \"c\",\n \"component1\",\n \"component2\",\n \"component3\",\n \"d\",\n \"home\",\n \"list\",\n \"liveTv\",\n \"discreteInputCable\",\n \"powerOff\",\n \"powerOn\",\n \"setupMenu\",\n \"skipForward\",\n \"skipReverse\",\n \"video1\",\n \"video2\",\n \"video3\",\n \"video4\",\n \"video5\",\n \"details\",\n \"hdmi1\",\n \"hdmi2\",\n \"hdmi3\",\n \"cecDeviceList\",\n \"mtsSap\",\n \"red\",\n \"green\",\n \"yellow\",\n \"blue\",\n \"alert\",\n \"order\",\n ],\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n },\n additionalProperties: false,\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"motionSensor.json\",\n title: \"Motion Sensor\",\n description: \"Any smart motion sensor\",\n type: \"object\",\n required: [\"id\", \"type\", \"driver\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n },\n offline: {\n type: \"boolean\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"order.json\",\n title: \"Order\",\n description: \"A purchase order for products or services.\",\n type: \"object\",\n required: [\"type\", \"status\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"order\",\n enum: [\"order\"],\n },\n orderNumber: {\n type: \"string\",\n },\n status: {\n type: \"string\",\n enum: [\n \"draft\",\n \"pendingPayment\",\n \"processing\",\n \"outForDelivery\",\n \"completed\",\n \"paymentFailed\",\n \"cancelled\",\n \"refunded\",\n ],\n },\n userId: {\n $ref: \"definitions.json#/definitions/id\",\n description: \"User id of purchaser\",\n },\n reservationId: {\n $ref: \"definitions.json#/definitions/id\",\n description: \"Reservation id if the order is for a reservation\",\n },\n date: {\n $ref: \"definitions.json#/definitions/date\",\n },\n items: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"name\", \"price\"],\n properties: {\n additionalProperties: false,\n name: {\n type: \"string\",\n },\n sku: {\n type: \"string\",\n },\n quantity: {\n type: \"number\",\n default: 1,\n },\n price: {\n type: \"number\",\n },\n taxClass: {\n type: \"string\",\n },\n deliveryClass: {\n type: \"string\",\n },\n productId: {\n type: \"string\",\n },\n },\n },\n },\n taxes: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"name\", \"rate\"],\n properties: {\n additionalProperties: false,\n name: {\n type: \"string\",\n },\n class: {\n type: \"string\",\n },\n rateType: {\n type: \"string\",\n enum: [\"percentage\", \"flat\"],\n default: \"percentage\",\n },\n rate: {\n type: \"number\",\n },\n total: {\n type: \"number\",\n },\n },\n },\n },\n fees: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"name\", \"price\"],\n properties: {\n additionalProperties: false,\n name: {\n type: \"string\",\n },\n price: {\n type: \"number\",\n },\n },\n },\n },\n delivery: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"name\", \"rate\"],\n properties: {\n additionalProperties: false,\n name: {\n type: \"string\",\n },\n class: {\n type: \"string\",\n },\n rateType: {\n type: \"string\",\n enum: [\"percentage\", \"flat\"],\n default: \"percentage\",\n },\n rate: {\n type: \"number\",\n },\n total: {\n type: \"number\",\n },\n },\n },\n },\n payments: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n properties: {\n method: {\n type: \"string\",\n enum: [\n \"folio\",\n \"invoice\",\n \"amex\",\n \"visa\",\n \"masterCard\",\n \"maestro\",\n \"discover\",\n \"diners\",\n \"jcb\",\n \"applePay\",\n \"alipay\",\n \"chinaUnionPay\",\n \"vpay\",\n ],\n },\n name: {\n type: \"string\",\n },\n date: {\n $ref: \"definitions.json#/definitions/date\",\n },\n amount: {\n type: \"number\",\n },\n transactionReference: {\n type: \"string\",\n },\n },\n },\n },\n },\n};\n\nfunction getSubTotal() {\n return this.items.reduce((acc, item) => {\n const qty = item.quantity || 1;\n return acc + item.price * qty;\n }, 0);\n}\n\nfunction getTaxTotal() {\n const taxes = this.taxes;\n if (!taxes) return 0;\n return this.items.reduce((acc, item) => {\n if (!item.taxClass) return acc;\n const tax = taxes.find((t) => t.class === item.taxClass);\n if (!tax) return acc;\n const { rateType, rate } = tax;\n if (rateType === \"percentage\") {\n return acc + item.price * rate;\n }\n if (rateType === \"flat\") {\n return acc + rate;\n }\n return acc + rate;\n }, 0);\n}\n\nfunction getDeliveryTotal() {\n const delivery = this.delivery;\n if (!delivery) return 0;\n return this.items.reduce((acc, item) => {\n if (!item.deliveryClass) return acc;\n const d = delivery.find((d) => d.class === item.deliveryClass);\n if (!d) return acc;\n const { rateType, rate } = d;\n if (rateType === \"percentage\") {\n return acc + item.price * rate;\n }\n return acc + rate;\n }, 0);\n}\n\nfunction getFeesTotal() {\n const fees = this.fees;\n return fees.reduce((acc, fee) => {\n return acc + fee.price;\n }, 0);\n}\n\nfunction getTotal() {\n return (\n this.getSubTotal() +\n this.getTaxTotal() +\n this.getDeliveryTotal() +\n this.getFeesTotal()\n );\n}\n\nfunction getPaymentsTotal() {\n return this.payments.reduce((acc, payment) => {\n return acc + payment.amount;\n }, 0);\n}\n\nfunction getBalance() {\n return this.getTotal() - this.getPaymentsTotal();\n}\n\nexport const methods = {\n getSubTotal: getSubTotal,\n getTaxTotal: getTaxTotal,\n getDeliveryTotal: getDeliveryTotal,\n getFeesTotal: getFeesTotal,\n getTotal: getTotal,\n getPaymentsTotal: getPaymentsTotal,\n getBalance: getBalance,\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"organization.json\",\n title: \"Organization\",\n type: \"object\",\n description:\n \"An organization is a group or entity that subscribes to Kohost software.\",\n required: [\"accountNumber\", \"name\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"organization\",\n enum: [\"organization\"],\n },\n accountNumber: {\n type: [\"number\", \"null\"],\n minimum: 10000,\n },\n name: {\n type: \"string\",\n },\n properties: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n hostname: {\n type: [\"string\", \"null\"],\n },\n appManifest: {\n type: \"object\",\n\n properties: {\n name: {\n type: \"string\",\n },\n short_name: {\n type: \"string\",\n },\n scope: {\n type: \"string\",\n },\n start_url: {\n type: \"string\",\n },\n themeColor: {\n type: \"string\",\n },\n backgroundColor: {\n type: \"string\",\n },\n display: {\n type: \"string\",\n enum: [\"fullscreen\", \"standalone\", \"minimal-ui\", \"browser\"],\n default: \"fullscreen\",\n },\n orientation: {\n type: \"string\",\n enum: [\"portrait\", \"landscape\"],\n default: \"portrait\",\n },\n splash: {\n type: \"object\",\n properties: {\n src: {\n type: \"string\",\n },\n type: {\n type: \"string\",\n },\n sizes: {\n type: \"string\",\n },\n },\n },\n icons: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n src: {\n type: \"string\",\n },\n sizes: {\n type: \"string\",\n },\n type: {\n type: \"string\",\n },\n },\n },\n },\n logo: {\n type: \"object\",\n properties: {\n src: {\n type: \"string\",\n },\n type: {\n type: \"string\",\n },\n sizes: {\n type: \"string\",\n },\n },\n },\n },\n default: {\n name: \"Kohost\",\n short_name: \"Kohost\",\n start_url: \"/\",\n scope: \"/\",\n display: \"fullscreen\",\n orientation: \"portrait\",\n theme_color: \"#1d1f22\",\n background_color: \"#1d1f22\",\n icons: [\n {\n src: \"https://images.kohost.io/cdn-cgi/imagedelivery/vcVX2aBwdFSYr66spcFKaA/9c85047f-ccba-4b1c-3070-5463fbe93b00/w=512\",\n sizes: \"512x512\",\n type: \"image/png\",\n },\n ],\n splash: {\n src: \"https://images.kohost.io/cdn-cgi/imagedelivery/vcVX2aBwdFSYr66spcFKaA/034fb112-5326-4d37-373e-d1cc2a4d0400/w=1500\",\n sizes: \"1500x800\",\n type: \"image/jpg\",\n },\n logo: {\n src: \"https://images.kohost.io/cdn-cgi/imagedelivery/vcVX2aBwdFSYr66spcFKaA/1e54c54d-3bac-4745-f46f-c2f98036af00/h=75\",\n sizes: \"300x75\",\n type: \"image/png\",\n },\n },\n },\n tickets: {\n type: \"object\",\n properties: {\n nextTicketNumber: {\n type: [\"string\", \"integer\"],\n default: 1,\n },\n },\n },\n credentials: {\n type: \"object\",\n additionalProperties: true,\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/createdAt\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/updatedAt\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"payment.json\",\n title: \"Payment\",\n type: \"object\",\n required: [\"type\", \"maskedNumber\", \"expires\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n enum: [\n \"amex\",\n \"visa\",\n \"masterCard\",\n \"maestro\",\n \"discover\",\n \"diners\",\n \"jcb\",\n \"applePay\",\n \"alipay\",\n \"chinaUnionPay\",\n \"vpay\",\n ],\n },\n enabled: {\n type: \"boolean\",\n default: true,\n },\n storageData: {\n type: [\"string\", \"null\"],\n },\n maskedNumber: {\n type: \"string\",\n },\n issued: {\n type: [\"string\", \"null\"],\n },\n expires: {\n type: \"string\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"policy.json\",\n title: \"Policy\",\n description:\n \"A policy is a set of permissions that can be applied to a user to limit their access to resources.\",\n type: \"object\",\n required: [\n \"name\",\n \"type\",\n \"organizationId\",\n \"propertyId\",\n \"permissions\",\n \"discriminator\",\n ],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"policy\",\n enum: [\"policy\"],\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\"],\n },\n name: {\n type: \"string\",\n minLength: 1,\n },\n description: {\n type: \"string\",\n },\n organizationId: {\n type: \"string\",\n },\n propertyId: {\n type: \"string\",\n },\n permissions: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"entities\", \"effect\"],\n properties: {\n entities: {\n type: \"array\",\n items: {\n type: \"string\",\n pattern: \"^[^:]+(:.+)+$\",\n },\n },\n effect: {\n type: \"string\",\n enum: [\"Allow\", \"Deny\"],\n },\n },\n },\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"product.json\",\n title: \"Product\",\n type: \"object\",\n required: [\"name\", \"price\", \"driver\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"product\",\n enum: [\"product\"],\n },\n name: {\n type: \"string\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n description: {\n type: \"string\",\n },\n price: {\n type: \"number\",\n },\n tax: {\n type: [\"number\", \"null\"],\n },\n image: {\n $ref: \"mediaFile.json\",\n },\n category: {\n type: \"string\",\n },\n imageUrl: {\n type: \"string\",\n format: \"uri\",\n pattern: \"^https?://\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"property.json\",\n title: \"Property\",\n type: \"object\",\n description: \"A property is a physical asset or building\",\n required: [\"id\", \"name\", \"type\", \"organization\", \"timezone\", \"discriminator\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n type: {\n type: \"string\",\n default: \"property\",\n enum: [\"property\"],\n },\n discriminator: {\n type: \"string\",\n enum: [\"hospitality\", \"education\", \"commercial\", \"storage\"],\n },\n organization: {\n type: [\"string\", \"null\"],\n description: \"Reference (id) to the organization that owns this property\",\n },\n departments: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n testModeEnabled: {\n type: \"boolean\",\n },\n testMode: {\n type: \"object\",\n properties: {\n notificationEmails: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n description:\n \"Only users with these email addresses will receive notifications in test mode, including sms, email, or push.\",\n },\n notificationEmailDomains: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n description:\n \"Only users with email addreses ending in these domains will receive notifications in test mode, including sms, email, or push.\",\n },\n },\n },\n timezone: {\n type: \"string\",\n description: \"IANA timezone string\",\n pattern: \"^([a-zA-Z]+/[a-zA-Z_]+)$\",\n examples: [\"America/New_York\", \"America/Los_Angeles\"],\n },\n smsNumber: {\n type: \"string\",\n },\n checkInTime: {\n type: \"string\",\n },\n checkOutTime: {\n type: \"string\",\n },\n address: {\n $ref: \"definitions.json#/definitions/address\",\n },\n latitude: {\n type: \"number\",\n },\n longitude: {\n type: \"number\",\n },\n appFeatures: {\n type: \"object\",\n properties: {\n RoomControl: {\n type: \"object\",\n properties: {\n disabledSystems: {\n type: \"array\",\n items: {\n type: \"string\",\n enum: [\"climate\", \"lights\", \"shades\", \"tv\", \"doors\"],\n },\n },\n excludedDeviceIds: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n default: [],\n },\n commonAreas: {\n type: \"object\",\n properties: {\n spaces: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n },\n },\n alarmConfig: {\n type: \"object\",\n patternProperties: {\n \"^[a-zA-Z0-9]+$\": {\n type: \"object\",\n properties: {\n zoneLockMap: {\n type: \"object\",\n description: \"Maps zone numbers to lock ids\",\n additionalProperties: { type: \"string\" },\n },\n },\n },\n },\n examples: [\n {\n wZz7hucY: {\n zoneLockMap: {\n 1: \"wc87hucc\",\n 2: \"bc86hzxc\",\n 3: \"zv5ah5jv\",\n },\n },\n },\n ],\n },\n },\n additionalProperties: false,\n },\n CheckIn: {\n type: \"object\",\n properties: {\n payment: {},\n identification: {},\n earlyCheckIn: {\n type: \"object\",\n required: [\"dynamic\"],\n properties: {\n dynamic: {\n type: \"boolean\",\n default: false,\n },\n minimumPrice: {\n type: \"number\",\n default: 10,\n },\n maximumPrice: {\n type: \"number\",\n default: 50,\n },\n priceRatioPerHour: {\n type: \"number\",\n default: 0.1,\n },\n minimumTime: {\n type: \"string\",\n },\n },\n },\n roomUpgrades: {},\n pet: {},\n promos: {},\n },\n },\n CheckOut: {\n type: \"object\",\n properties: {\n lateCheckOut: {\n type: \"object\",\n required: [\"dynamic\"],\n properties: {\n dynamic: {\n type: \"boolean\",\n default: false,\n },\n minimumPrice: {\n type: \"number\",\n default: 10,\n },\n maximumPrice: {\n type: \"number\",\n default: 50,\n },\n priceRatioPerHour: {\n type: \"number\",\n default: 0.1,\n },\n },\n },\n },\n },\n Concierge: {\n type: \"object\",\n properties: {\n timeTracking: {\n type: \"boolean\",\n default: false,\n },\n tipping: {\n type: \"boolean\",\n default: false,\n },\n feedback: {\n type: \"boolean\",\n default: true,\n },\n ratings: {\n type: \"boolean\",\n default: true,\n },\n newTicketCCs: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n default: [],\n },\n newMessageChannel: {\n type: [\"string\", \"null\"],\n enum: [\"sms\", \"email\"],\n default: \"sms\",\n description:\n \"Determines how users should be notified of new messages in the concierge system\",\n },\n quickServices: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: {\n type: \"string\",\n },\n description: {\n type: \"string\",\n },\n department: {\n type: \"string\",\n },\n image: {\n $ref: \"mediaFile.json\",\n },\n },\n required: [\"name\", \"description\", \"image\"],\n },\n },\n issues: {\n type: \"object\",\n properties: {\n syncWithPropertyId: {\n type: \"string\",\n },\n },\n },\n },\n },\n DigitalKey: {\n type: \"object\",\n properties: {\n system: {\n type: \"string\",\n enum: [\"salto\", \"dormakaba\"],\n },\n systemOnline: {\n type: \"boolean\",\n default: false,\n },\n systemConfig: {\n type: \"object\",\n properties: {\n legicUrl: {\n type: \"string\",\n format: \"uri\",\n },\n legicWalletName: {\n type: \"string\",\n },\n legicAppId: {\n type: \"number\",\n },\n legicTechUsername: {\n type: \"string\",\n },\n legicTechPassword: {\n type: \"string\",\n },\n },\n additionalProperties: false,\n default: {},\n },\n enableApp: {\n type: \"boolean\",\n },\n branding: {\n type: \"object\",\n properties: {\n logo: {\n type: \"string\",\n format: \"uri\",\n },\n gradient: {\n type: \"array\",\n items: {\n type: \"string\",\n pattern: \"^(?!#ffffff)(#[0-9a-fA-F]{6})$\",\n },\n minItems: 2,\n maxItems: 2,\n },\n highlightedGradient: {\n type: \"array\",\n items: {\n type: \"string\",\n pattern: \"^(?!#ffffff)(#[0-9a-fA-F]{6})$\",\n },\n minItems: 2,\n maxItems: 3,\n },\n },\n },\n },\n },\n SOS: {\n type: \"object\",\n properties: {\n active: {\n type: \"boolean\",\n },\n activeEmergencies: {\n type: \"array\",\n items: {\n type: \"string\",\n enum: [\n \"medical\",\n \"fire\",\n \"suspiciousPerson\",\n \"other\",\n \"conflict\",\n \"shooter\",\n ],\n },\n },\n },\n },\n Elevator: {\n type: \"object\",\n },\n Experiences: {\n type: \"object\",\n },\n Dining: {\n type: \"object\",\n properties: {\n system: {\n type: \"string\",\n enum: [\"gotab\"],\n },\n systemConfig: {\n type: \"object\",\n properties: {\n landingUrl: {\n type: \"string\",\n format: \"uri\",\n },\n includeUserDetails: {\n type: \"boolean\",\n },\n },\n additionalProperties: false,\n },\n },\n },\n Rentals: { type: \"object\" },\n Shop: { type: \"object\" },\n Spa: { type: \"object\" },\n Valet: { type: \"object\" },\n },\n additionalProperties: false,\n default: {\n RoomControl: {},\n },\n },\n notifications: {\n type: \"object\",\n properties: {\n email: {\n type: \"object\",\n properties: {\n enabled: {\n type: \"boolean\",\n },\n },\n additionalProperties: false,\n },\n sms: {\n type: \"object\",\n properties: {\n enabled: {\n type: \"boolean\",\n },\n },\n additionalProperties: false,\n },\n push: {\n type: \"object\",\n properties: {\n enabled: {\n type: \"boolean\",\n },\n },\n additionalProperties: false,\n },\n },\n additionalProperties: false,\n default: {\n email: {\n enabled: false,\n },\n sms: {\n enabled: false,\n },\n push: {\n enabled: false,\n },\n },\n },\n credentials: {\n type: \"object\",\n additionalProperties: true,\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"reservation.json\",\n title: \"Reservation\",\n type: \"object\",\n required: [\"type\", \"status\", \"checkInDateTime\", \"checkOutDateTime\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n primaryGuest: {\n type: \"string\",\n },\n type: {\n type: \"string\",\n default: \"reservation\",\n enum: [\"reservation\"],\n },\n sharedGuests: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n spaceCategory: {\n type: \"string\",\n },\n space: {\n type: [\"string\", \"null\"],\n },\n previousSpace: {\n type: [\"string\", \"null\"],\n default: null,\n description: \"Used when there was a space assigned and it changes\",\n },\n status: {\n type: \"string\",\n enum: [\n \"reserved\",\n \"checkedIn\",\n \"checkedOut\",\n \"cancelled\",\n \"noShow\",\n \"enquired\",\n \"requested\",\n \"optional\",\n ],\n description:\n \" 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)\",\n },\n mobileCheckInSpaceCategoryChanged: {\n type: \"boolean\",\n description: \"spaceCategory has changed from original.\",\n },\n mobileCheckInSpaceChanged: {\n type: \"boolean\",\n },\n mobileCheckInStatus: {\n type: \"string\",\n enum: [\n \"ready\",\n \"blocked\",\n \"preArrivalStepsRequired\",\n \"spaceNotAssigned\",\n \"spaceNotReady\",\n \"checkInTimeNotStarted\",\n ],\n },\n mobileCheckInStatusMessage: {\n type: \"string\",\n },\n confirmationNumber: {\n type: \"string\",\n },\n expectedCheckInDateTime: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n description: \"Expected arrival time of guest.\",\n },\n checkInDateTime: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n checkOutDateTime: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n adultCount: {\n type: \"number\",\n default: 1,\n minimum: 1,\n },\n childCount: {\n type: \"number\",\n default: 0,\n },\n\n spaceCategoryAvailabilites: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n type: \"string\",\n },\n price: {\n type: \"number\",\n },\n unit: {\n type: \"string\",\n enum: [\"night\", \"stay\", \"hour\"],\n },\n isUpgrade: {\n type: \"boolean\",\n },\n },\n },\n },\n revenue: {\n $ref: \"definitions.json#/definitions/revenue\",\n },\n rateSuppressed: {\n type: \"boolean\",\n },\n payment: {\n type: \"string\",\n },\n company: {\n type: \"string\",\n },\n travelAgent: {\n type: \"string\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n metadata: {\n $ref: \"definitions.json#/definitions/metadata\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/updatedAt\",\n },\n },\n};\n\nfunction checkInTime(tz) {\n return new Date(this.checkInDateTime).toLocaleString(\"default\", {\n hour: \"numeric\",\n minute: \"numeric\",\n timeZone: tz,\n });\n}\n\nfunction checkOutTime(tz) {\n return new Date(this.checkOutDateTime).toLocaleString(\"default\", {\n hour: \"numeric\",\n minute: \"numeric\",\n timeZone: tz,\n });\n}\n\nfunction getNights() {\n const start = new Date(this.checkInDateTime);\n const end = new Date(this.checkOutDateTime);\n let nights = Math.round((end - start) / (1000 * 60 * 60 * 24));\n if (nights <= 0) {\n nights = 1;\n }\n return nights;\n}\n\nexport const methods = {\n checkInTime,\n checkOutTime,\n getNights,\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"room.json\",\n title: \"Room\",\n description: \"A room represents a physical space of controllable IoT devices\",\n type: \"object\",\n required: [\"id\", \"name\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n enum: [\"room\"],\n default: \"room\",\n },\n name: {\n type: \"string\",\n },\n floor: {\n type: \"string\",\n },\n dimmers: {\n type: \"array\",\n default: [],\n items: {\n $ref: \"dimmer.json\",\n },\n },\n switches: {\n type: \"array\",\n default: [],\n items: {\n $ref: \"switch.json\",\n },\n },\n thermostats: {\n type: \"array\",\n default: [],\n items: {\n $ref: \"thermostat.json\",\n },\n },\n locks: {\n type: \"array\",\n default: [],\n items: {\n $ref: \"lock.json\",\n },\n },\n windowCoverings: {\n type: \"array\",\n default: [],\n items: {\n $ref: \"windowCovering.json\",\n },\n },\n courtesy: {\n type: \"array\",\n default: [],\n items: {\n $ref: \"courtesy.json\",\n },\n },\n cameras: {\n type: \"array\",\n default: [],\n items: {\n $ref: \"camera.json\",\n },\n },\n mediaSources: {\n type: \"array\",\n default: [],\n items: {\n $ref: \"mediaSource.json\",\n },\n },\n motionSensors: {\n type: \"array\",\n default: [],\n items: {\n $ref: \"motionSensor.json\",\n },\n },\n alarms: {\n type: \"array\",\n default: [],\n items: {\n $ref: \"alarm.json\",\n },\n },\n occupiedAt: {\n $ref: \"definitions.json#/definitions/createdAt\",\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/createdAt\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/updatedAt\",\n },\n },\n additionalProperties: false,\n};\n\nexport const getters = {\n /**\n * Check if the room has any dimmers\n * @returns {boolean} True if the room has dimmers, false otherwise\n */\n hasDimmer() {\n return this.dimmers?.length > 0;\n },\n\n /**\n * Check if the room has any switches\n * @returns {boolean} True if the room has switches, false otherwise\n */\n hasSwitch() {\n return this.switches?.length > 0;\n },\n\n /**\n * Check if the room has any window coverings\n * @returns {boolean} True if the room has window coverings, false otherwise\n */\n hasWindowCovering() {\n return this.windowCoverings?.length > 0;\n },\n\n /**\n * Alias for hasWindowCovering\n * @returns {boolean} True if the room has window coverings/shades, false otherwise\n */\n hasShade() {\n return this.hasWindowCovering;\n },\n\n /**\n * Check if the room has any thermostats\n * @returns {boolean} True if the room has thermostats, false otherwise\n */\n hasThermostat() {\n return this.thermostats?.length > 0;\n },\n\n /**\n * Alias for hasThermostat\n * @returns {boolean} True if the room has climate control, false otherwise\n */\n hasClimate() {\n return this.hasThermostat;\n },\n\n /**\n * Check if the room has any locks\n * @returns {boolean} True if the room has locks, false otherwise\n */\n hasLock() {\n return this.locks?.length > 0;\n },\n\n /**\n * Check if the room has any courtesy devices\n * @returns {boolean} True if the room has courtesy devices, false otherwise\n */\n hasCourtesy() {\n return this.courtesy?.length > 0;\n },\n\n /**\n * Check if the room has any cameras\n * @returns {boolean} True if the room has cameras, false otherwise\n */\n hasCamera() {\n return this.cameras?.length > 0;\n },\n\n /**\n * Check if the room has any media sources\n * @returns {boolean} True if the room has media sources, false otherwise\n */\n hasMedia() {\n return this.mediaSources?.length > 0;\n },\n\n /**\n * Check if the room has any lighting devices (dimmers or switches marked as lights/fans)\n * @returns {boolean} True if the room has lighting devices, false otherwise\n */\n hasLight() {\n const hasDiscriminatorLight = this.switches?.some((sw) => {\n return sw.discriminator === \"light\" || sw.discriminator === \"fan\";\n });\n return this.hasDimmer || hasDiscriminatorLight;\n },\n\n hasAlarm() {\n return this.alarms?.length > 0;\n },\n\n /**\n * Check if the room is currently occupied (within the last 60 minutes)\n * @returns {boolean} True if the room was occupied within the last hour, false otherwise\n */\n occupied() {\n const now = new Date();\n const lastOccupied = new Date(this.occupiedAt);\n const diff = now.getTime() - lastOccupied.getTime();\n return diff < 60 * 60 * 1000;\n },\n};\n\nexport const statics = {\n /**\n * Get the device path for a given device type\n * @param {string} type - The device type\n * @returns {\"mediaSources\" | \"courtesy\" | \"dimmers\" | \"thermostats\" | \"locks\" | \"windowCoverings\" | \"switches\" | \"cameras\" | \"motionSensors\" | \"alarms\"} The device path\n * @throws {Error} If the device type is invalid\n */\n getDevicePath(type) {\n switch (type) {\n case \"tv\":\n case \"dvr\":\n case \"appleTv\":\n case \"discPlayer\":\n case \"mediaPlayer\":\n case \"uncontrolledDevice\":\n case \"mediaSource\":\n return \"mediaSources\";\n case \"courtesy\":\n return \"courtesy\";\n case \"switch\":\n return \"switches\";\n case \"dimmer\":\n return \"dimmers\";\n case \"thermostat\":\n return \"thermostats\";\n case \"lock\":\n return \"locks\";\n case \"windowCovering\":\n return \"windowCoverings\";\n case \"camera\":\n return \"cameras\";\n case \"motionSensor\":\n return \"motionSensors\";\n case \"alarm\":\n return \"alarms\";\n\n default:\n throw new Error(\"Invalid device type:\" + type);\n }\n },\n /**\n *\n * @param {string} path\n * @returns\n */\n getDeviceTypeFromPath(path) {\n const validPaths = [\n \"dimmers\",\n \"switches\",\n \"thermostats\",\n \"locks\",\n \"windowCoverings\",\n \"courtesy\",\n \"cameras\",\n \"mediaSources\",\n \"motionSensors\",\n \"alarms\",\n ];\n if (!validPaths.includes(path))\n throw new Error(\"Invalid device path:\" + path);\n switch (path) {\n case \"courtesy\":\n return path;\n case \"switches\":\n return \"switch\";\n default:\n return path.slice(0, -1);\n }\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"scene.json\",\n title: \"Scene\",\n description: \"A room represents a physical space of controllable IoT devices\",\n type: \"object\",\n required: [\"id\", \"name\", \"type\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n description: {\n type: \"string\",\n },\n type: {\n type: \"string\",\n enum: [\"scene\"],\n default: \"scene\",\n },\n devices: {\n type: \"object\",\n properties: {\n switches: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n state: {\n $ref: \"switch.json#/properties/state\",\n },\n },\n default: [],\n },\n },\n dimmers: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n level: {\n $ref: \"dimmer.json#/properties/level\",\n },\n },\n },\n default: [],\n },\n windowCoverings: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n position: {\n $ref: \"windowCovering.json#/properties/position\",\n },\n },\n },\n default: [],\n },\n thermostats: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n hvacMode: {\n $ref: \"thermostat.json#/properties/hvacMode\",\n },\n setpoints: {\n $ref: \"thermostat.json#/properties/setpoints\",\n },\n fanMode: {\n $ref: \"thermostat.json#/properties/fanMode\",\n },\n setpointDelta: {\n type: \"number\",\n },\n },\n },\n default: [],\n },\n mediaSources: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n volume: {\n type: \"number\",\n minimum: 0,\n maximum: 100,\n },\n commands: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n },\n },\n },\n locks: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n state: {\n $ref: \"lock.json#/properties/state\",\n },\n mode: {\n $ref: \"lock.json#/properties/mode\",\n },\n },\n },\n },\n },\n additionalProperties: false,\n },\n isDefault: {\n type: \"boolean\",\n default: false,\n },\n showOnUi: {\n type: \"boolean\",\n default: true,\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"shortLink.json\",\n title: \"Short Link\",\n type: \"object\",\n required: [\"destination\", \"url\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"shortLink\",\n enum: [\"shortLink\"],\n },\n title: {\n type: \"string\",\n },\n destination: {\n type: \"string\",\n format: \"uri\",\n },\n url: {\n type: \"string\",\n format: \"uri\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"smsMessage.json\",\n title: \"Sms Message\",\n type: \"object\",\n required: [\"to\", \"from\", \"status\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"smsMessage\",\n enum: [\"smsMessage\", \"whatsappMessage\"],\n },\n to: {\n type: \"string\",\n },\n from: {\n type: \"string\",\n },\n media: {\n type: \"string\",\n format: \"uri\",\n },\n status: {\n type: \"string\",\n enum: [\n \"queued\",\n \"accepted\",\n \"sending\",\n \"sent\",\n \"failed\",\n \"delivered\",\n \"undelivered\",\n \"receiving\",\n \"received\",\n \"read\",\n ],\n },\n body: {\n type: \"string\",\n },\n driver: {\n type: \"string\",\n },\n appData: {\n type: \"object\",\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"space.json\",\n title: \"Space\",\n type: \"object\",\n required: [\"id\", \"name\", \"type\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n minLength: 1,\n },\n type: {\n type: \"string\",\n default: \"space\",\n enum: [\"space\"],\n },\n discriminator: {\n type: \"string\",\n enum: [\n \"classRoom\",\n \"hotelRoom\",\n \"office\",\n \"building\",\n \"commonArea\",\n \"conferenceRoom\",\n \"lobby\",\n \"gym\",\n \"pool\",\n \"restaurant\",\n \"unit\",\n ],\n },\n floor: {\n type: \"string\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n category: {\n type: \"string\",\n description: \"This is the category id\",\n },\n rooms: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n occupied: {\n type: \"boolean\",\n },\n inUse: {\n type: \"boolean\",\n },\n eco: {\n type: \"object\",\n additionalProperties: false,\n default: {\n active: false,\n allowed: false,\n previousState: null,\n },\n properties: {\n active: {\n type: \"boolean\",\n default: false,\n },\n activatedAt: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n allowed: {\n type: \"boolean\",\n default: false,\n },\n previousState: {\n type: [\"object\", \"null\"],\n properties: {\n thermostats: {\n type: \"object\",\n patternProperties: {\n \".*\": {\n type: \"object\",\n properties: {\n setpoints: {\n $ref: \"thermostat.json#/properties/setpoints\",\n },\n },\n },\n },\n },\n },\n additionalProperties: false,\n },\n },\n },\n features: {\n type: \"array\",\n items: {\n type: \"string\",\n enum: [\"pet\"],\n },\n },\n maximumOccupancy: {\n type: \"number\",\n minimum: 1,\n },\n housekeepingStatus: {\n type: \"string\",\n enum: [\"clean\", \"dirty\", \"inspected\", \"pickup\"],\n },\n serviceStatus: {\n type: \"string\",\n enum: [\"inService\", \"outOfOrder\", \"outOfService\"],\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n};\n\nexport const getters = {\n hasDimmer() {\n return this.rooms.some((room) => room.hasDimmer);\n },\n hasSwitch() {\n return this.rooms.some((room) => room.hasSwitch);\n },\n hasWindowCovering() {\n return this.rooms.some((room) => room.hasWindowCovering);\n },\n hasThermostat() {\n return this.rooms.some((room) => room.hasThermostat);\n },\n hasLock() {\n return this.rooms.some((room) => room.hasLock);\n },\n hasCourtesy() {\n return this.rooms.some((room) => room.hasCourtesy);\n },\n hasCamera() {\n return this.rooms.some((room) => room.hasCamera);\n },\n hasAlarm() {\n return this.rooms.some((room) => room.hasAlarm);\n },\n hasMedia() {\n return this.rooms.some((room) => room.hasMedia);\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"switch.json\",\n title: \"Switch\",\n description: \"Any smart switch\",\n type: \"object\",\n required: [\"id\", \"type\", \"state\", \"driver\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"light\", \"fan\", \"irrigation\"],\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n offline: {\n type: \"boolean\",\n },\n state: {\n type: \"string\",\n enum: [\"on\", \"off\"],\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n restoresAt: {\n type: \"string\",\n format: \"date-time\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"systemUser.json\",\n title: \"System User\",\n description:\n \"A system user is a user that originated from an external 3rd party system.\",\n type: \"object\",\n required: [\"id\", \"firstName\", \"lastName\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"systemUser\",\n enum: [\"systemUser\"],\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n firstName: {\n type: \"string\",\n },\n lastName: {\n type: \"string\",\n },\n phone: {\n type: [\"string\", \"null\"],\n pattern: \"^\\\\+[0-9]{1,14}$\",\n },\n email: {\n type: [\"string\", \"null\"],\n format: \"email\",\n },\n address: {\n $ref: \"definitions.json#/definitions/address\",\n },\n photo: {\n type: \"string\",\n },\n jobTitle: {\n type: \"string\",\n },\n dob: {\n type: \"string\",\n },\n gender: {\n type: \"string\",\n enum: [\"male\", \"female\"],\n },\n roles: {\n type: \"array\",\n items: {\n type: \"string\",\n enum: [\n \"Guest\",\n \"User\",\n \"Manager\",\n \"Maintenance\",\n \"Administrator\",\n \"SuperAdmin\",\n ],\n },\n },\n nationality: {\n type: \"string\",\n minLength: 2,\n maxLength: 2,\n },\n notes: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n files: {\n type: \"array\",\n items: {\n $ref: \"mediaFile.json#\",\n },\n },\n identifications: {\n type: \"array\",\n items: {\n $ref: \"identification.json#\",\n },\n },\n payments: {\n type: \"array\",\n items: {\n $ref: \"payment.json#\",\n },\n },\n revenue: {\n $ref: \"definitions.json#/definitions/revenue\",\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/createdAt\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/updatedAt\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"thermostat.json\",\n title: \"Thermostat\",\n description: \"Any smart thermostat\",\n type: \"object\",\n required: [\n \"id\",\n \"type\",\n \"hvacMode\",\n \"fanMode\",\n \"hvacState\",\n \"fanState\",\n \"setpoints\",\n \"temperatureScale\",\n \"supportedHvacModes\",\n \"supportedFanModes\",\n \"driver\",\n ],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n $ref: \"definitions.json#/definitions/name\",\n },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n default: \"thermostat\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n offline: {\n type: \"boolean\",\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n currentTemperature: {\n type: \"number\",\n },\n currentHumidity: {\n type: \"number\",\n minimum: 0,\n },\n hvacMode: {\n type: \"string\",\n $ref: \"#/properties/supportedHvacModes/items\",\n },\n hvacState: {\n type: [\"string\", \"null\"],\n enum: [\"cooling\", \"heating\", \"off\", null],\n },\n fanMode: {\n type: \"string\",\n $ref: \"#/properties/supportedFanModes/items\",\n },\n fanState: {\n type: [\"string\", \"null\"],\n enum: [\"off\", \"low\", \"medium\", \"high\", \"on\", null],\n },\n temperatureScale: {\n type: \"string\",\n enum: [\"celsius\", \"fahrenheit\"],\n default: \"fahrenheit\",\n },\n humidityScale: {\n type: [\"string\", \"null\"],\n enum: [\"absolute\", \"relative\", null],\n },\n supportedHvacModes: {\n type: \"array\",\n uniqueItems: true,\n minItems: 2,\n items: {\n enum: [\"cool\", \"heat\", \"auto\", \"off\"],\n },\n },\n supportedFanModes: {\n type: \"array\",\n uniqueItems: true,\n items: {\n enum: [\"auto\", \"low\", \"medium\", \"high\", \"off\", \"on\"],\n },\n },\n setpoints: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n cool: {\n $ref: \"#/$defs/setpoint\",\n },\n heat: {\n $ref: \"#/$defs/setpoint\",\n },\n auto: {\n $ref: \"#/$defs/setpoint\",\n },\n },\n },\n minAutoDelta: {\n type: \"number\",\n default: 3,\n },\n cycleRate: {\n type: \"number\",\n },\n batteryLevel: {\n $ref: \"definitions.json#/definitions/batteryLevel\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n },\n $defs: {\n setpoint: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n value: {\n $ref: \"#/$defs/setpointValue\",\n },\n min: {\n $ref: \"#/$defs/setpointMinMax\",\n },\n max: {\n $ref: \"#/$defs/setpointMinMax\",\n },\n },\n },\n setpointValue: {\n type: \"number\",\n minimum: 0,\n maximum: 99,\n },\n setpointMinMax: {\n type: [\"number\", \"null\"],\n minimum: 0,\n maximum: 99,\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"ticket.json\",\n title: \"Ticket\",\n description: \"A ticket is a request from a user.\",\n type: \"object\",\n required: [\n \"id\",\n \"conversation\",\n \"requester\",\n \"status\",\n \"tags\",\n \"createdAt\",\n \"updatedAt\",\n ],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n enum: [\"ticket\"],\n default: \"ticket\",\n },\n number: {\n type: \"string\",\n },\n issueId: {\n type: \"string\",\n },\n conversation: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"timestamp\", \"body\"],\n properties: {\n id: {\n type: \"string\",\n },\n discriminator: {\n type: \"string\",\n enum: [\n \"message\",\n \"opened\",\n \"assigned\",\n \"rated\",\n \"tipped\",\n \"scheduled\",\n \"collaboratorAdded\",\n \"collaboratorRemoved\",\n \"statusChanged\",\n \"priorityChanged\",\n \"scheduleDateChanged\",\n \"locationChanged\",\n ],\n default: \"message\",\n },\n userId: {\n type: \"string\",\n },\n userName: {\n type: \"string\",\n },\n vendorId: {\n type: \"string\",\n },\n vendorName: {\n type: \"string\",\n },\n systemId: {\n type: \"string\",\n },\n systemName: {\n type: \"string\",\n },\n timestamp: {\n $ref: \"definitions.json#/definitions/createdAt\",\n },\n body: {\n type: \"string\",\n },\n parsedBody: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n text: {\n type: \"string\",\n },\n mentions: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\n \"discriminator\",\n \"id\",\n \"index\",\n \"length\",\n \"originalText\",\n ],\n properties: {\n id: {\n type: \"string\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\", \"vendor\", \"system\"],\n },\n index: {\n type: \"integer\",\n },\n length: {\n type: \"integer\",\n },\n originalText: {\n type: \"string\",\n },\n },\n },\n },\n },\n },\n\n readBy: {\n type: \"array\",\n default: [],\n items: {\n type: \"string\",\n },\n },\n media: {\n anyOf: [{ $ref: \"mediaFile.json\" }, { type: \"null\" }],\n },\n },\n },\n },\n subject: {\n type: \"string\",\n },\n openedBy: {\n type: \"object\",\n properties: {\n userId: {\n type: \"string\",\n },\n userName: {\n type: \"string\",\n },\n systemId: {\n type: \"string\",\n },\n systemName: {\n type: \"string\",\n },\n },\n },\n requester: {\n type: \"object\",\n properties: {\n systemId: {\n type: \"string\",\n },\n systemName: {\n type: \"string\",\n },\n systemPhoto: {\n anyOf: [\n { $ref: \"mediaFile.json\" },\n { type: \"null\" },\n { type: \"string\" },\n ],\n },\n userId: {\n type: \"string\",\n },\n userName: {\n type: \"string\",\n },\n userPhoto: {\n anyOf: [\n { $ref: \"mediaFile.json\" },\n { type: \"null\" },\n { type: \"string\" },\n ],\n },\n deviceId: {\n type: \"string\",\n },\n roomId: {\n type: \"string\",\n },\n reservationId: {\n type: \"string\",\n },\n spaceId: {\n type: \"string\",\n },\n spaceName: {\n type: \"string\",\n },\n },\n },\n assignedTo: {\n type: \"object\",\n properties: {\n userId: {\n type: \"string\",\n },\n userName: {\n type: \"string\",\n },\n userPhoto: {\n anyOf: [\n { $ref: \"mediaFile.json\" },\n { type: \"null\" },\n { type: \"string\" },\n ],\n },\n vendorId: {\n type: \"string\",\n },\n vendorName: {\n type: \"string\",\n },\n vendorPhoto: {\n anyOf: [\n { $ref: \"mediaFile.json\" },\n { type: \"null\" },\n { type: \"string\" },\n ],\n },\n },\n },\n notify: {\n type: \"array\",\n description:\n \"A list of entities to notify when this ticket is created or resolved.\",\n default: [],\n items: {\n type: \"object\",\n required: [\"id\", \"discriminator\"],\n additionalProperties: false,\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the entity to notify.\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\"],\n },\n },\n },\n },\n collaborators: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"id\", \"name\", \"discriminator\"],\n additionalProperties: false,\n properties: {\n id: {\n type: \"string\",\n },\n name: {\n type: \"string\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\", \"vendor\"],\n },\n },\n },\n },\n location: {\n type: \"object\",\n required: [\"discriminator\", \"name\"],\n additionalProperties: false,\n properties: {\n id: {\n type: \"string\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"space\", \"room\", \"property\", \"customText\"],\n },\n name: {\n type: \"string\",\n },\n },\n },\n status: {\n type: \"string\",\n enum: [\"open\", \"pending\", \"solved\", \"closed\"],\n default: \"open\",\n },\n priority: {\n type: \"string\",\n enum: [\"low\", \"normal\", \"high\"],\n default: \"normal\",\n },\n tags: {\n type: \"array\",\n default: [],\n items: {\n type: \"string\",\n },\n },\n department: {\n type: \"string\",\n },\n rating: {\n type: \"number\",\n minimum: 0,\n maximum: 5,\n },\n ratingComment: {\n type: \"string\",\n },\n tipAmount: {\n type: \"string\",\n },\n autoCloseAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n scheduleDate: {\n $ref: \"definitions.json#/definitions/date\",\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n solvedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n closedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"timeSheet.json\",\n title: \"Time Sheet\",\n type: \"object\",\n required: [\"userId\", \"day\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"timeSheet\",\n enum: [\"timeSheet\"],\n },\n userId: {\n $ref: \"definitions.json#/definitions/id\",\n },\n day: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n locked: {\n type: \"boolean\",\n default: false,\n description: \"If true, the time sheet is locked and cannot be modified\",\n },\n timeEntries: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"working\", \"driving\", \"meeting\", \"break\"],\n },\n start: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n end: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n comment: {\n type: \"string\",\n },\n ticketId: {\n type: \"string\",\n },\n },\n required: [\"start\", \"discriminator\"],\n additionalProperties: false,\n },\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"user.json\",\n title: \"User\",\n type: \"object\",\n required: [\"id\", \"firstName\", \"lastName\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"user\",\n },\n firstName: {\n type: \"string\",\n },\n lastName: {\n type: \"string\",\n },\n phone: {\n type: [\"string\", \"null\"],\n pattern: \"^\\\\+[0-9]{1,14}$\",\n },\n phoneVerified: {\n type: \"boolean\",\n },\n email: {\n type: [\"string\", \"null\"],\n format: \"email\",\n },\n emailVerified: {\n type: \"boolean\",\n },\n whatsapp: {\n type: [\"string\", \"null\"],\n pattern: \"^\\\\+[0-9]{1,14}$\",\n },\n whatsappVerified: {\n type: \"boolean\",\n },\n address: {\n $ref: \"definitions.json#/definitions/address\",\n },\n secretKey: {\n type: \"string\",\n },\n photo: {\n $ref: \"mediaFile.json#\",\n },\n jobTitle: {\n type: \"string\",\n },\n dob: {\n type: \"string\",\n },\n gender: {\n type: \"string\",\n enum: [\"male\", \"female\"],\n },\n nationality: {\n type: \"string\",\n minLength: 2,\n maxLength: 2,\n },\n permissions: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"organizationId\", \"propertyId\", \"role\"],\n properties: {\n organizationId: {\n type: \"string\",\n description:\n \"The ID of the organization the permission is applies to.\",\n },\n propertyId: {\n type: \"string\",\n description: \"The ID of the property the permission is applies to.\",\n },\n role: {\n type: \"string\",\n enum: [\n \"Guest\",\n \"User\",\n \"Agent\",\n \"Manager\",\n \"Maintenance\",\n \"Administrator\",\n \"SuperAdmin\",\n ],\n },\n timeTrackingEnabled: {\n type: \"boolean\",\n description: \"Whether time tracking is enabled for this role.\",\n },\n department: {\n type: \"string\",\n description: \"The department the user belongs to.\",\n },\n policyIds: {\n type: \"array\",\n items: {\n type: \"string\",\n description: \"ID of a policy that is applied to this role.\",\n },\n },\n policies: {\n type: \"array\",\n items: {\n description:\n \"A policy object populated from the policyIds array.\",\n $ref: \"policy.json\",\n },\n },\n },\n additionalProperties: false,\n },\n },\n preferences: {\n type: \"array\",\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"organizationId\", \"propertyId\"],\n properties: {\n organizationId: {\n type: \"string\",\n },\n propertyId: {\n type: \"string\",\n },\n notifications: {\n type: \"array\",\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"discriminator\", \"enabled\"],\n properties: {\n discriminator: {\n type: \"string\",\n enum: [\"observerTicketCreated\", \"observerTicketResolved\"],\n },\n enabled: {\n type: \"boolean\",\n },\n },\n },\n },\n },\n },\n },\n notes: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n files: {\n type: \"array\",\n items: {\n $ref: \"mediaFile.json#\",\n },\n },\n identifications: {\n type: \"array\",\n items: {\n $ref: \"identification.json#\",\n },\n },\n payments: {\n type: \"array\",\n items: {\n $ref: \"payment.json#\",\n },\n },\n location: {\n type: \"object\",\n required: [\"accuracy\", \"latitude\", \"longitude\", \"timestamp\"],\n additionalProperties: false,\n properties: {\n accuracy: {\n type: [\"number\", \"null\"],\n },\n latitude: {\n type: [\"number\", \"null\"],\n },\n longitude: {\n type: [\"number\", \"null\"],\n },\n timestamp: {\n type: [\"number\", \"null\"],\n },\n },\n },\n reservations: {\n type: \"array\",\n items: {\n $ref: \"reservation.json\",\n },\n },\n spaceName: {\n type: \"string\",\n },\n revenue: {\n $ref: \"definitions.json#/definitions/revenue\",\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/createdAt\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/updatedAt\",\n },\n systems: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n properties: {\n systemId: {\n type: \"string\",\n },\n propertyId: {\n type: \"string\",\n },\n driver: {\n type: \"string\",\n },\n },\n required: [\"systemId\", \"propertyId\", \"driver\"],\n additionalProperties: false,\n },\n },\n },\n};\n\nexport const getters = {\n fullName() {\n return `${this.firstName} ${this.lastName}`;\n },\n roles() {\n const roles = new Set();\n if (this.permissions) {\n for (const permission of this.permissions) {\n roles.add(permission.role);\n }\n }\n return Array.from(roles);\n },\n isSuperAdmin() {\n return this.roles.includes(\"SuperAdmin\");\n },\n isAdmin() {\n return this.roles.includes(\"Admin\") || this.roles.includes(\"Administrator\");\n },\n isManager() {\n return this.roles.includes(\"Manager\");\n },\n isUser() {\n return this.roles.includes(\"User\");\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"vendor.json\",\n title: \"Vendor\",\n type: \"object\",\n required: [\"id\", \"name\", \"email\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"vendor\",\n enum: [\"vendor\"],\n },\n name: {\n type: \"string\",\n },\n phone: {\n type: [\"string\", \"null\"],\n pattern: \"^\\\\+[0-9]{1,14}$\",\n },\n email: {\n type: [\"string\", \"null\"],\n format: \"email\",\n },\n address: {\n $ref: \"definitions.json#/definitions/address\",\n },\n photo: {\n $ref: \"mediaFile.json#\",\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/createdAt\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/updatedAt\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"windowCovering.json\",\n title: \"Window Covering\",\n description: \"Any smart window covering\",\n required: [\"id\", \"type\", \"position\", \"driver\"],\n additionalProperties: false,\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n default: \"windowCovering\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"basic\", \"variable\"],\n default: \"variable\",\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n offline: {\n type: \"boolean\",\n },\n position: {\n type: [\"number\", \"null\"],\n minimum: 0,\n maximum: 100,\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n },\n};\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateAlarm as validate } from \"../validate\";\n\n/**\n * @typedef {Object} AlarmData Any smart alarm system\n * @property {string} id - Identifier of the object.\n * @property {string} [name] - Name of the alarm\n * @property {boolean} [offline]\n * @property {\"alarm\"} type - Default: \"alarm\"\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {{number?: number, name?: string, securityMode?: (\"arming\"|\"disarming\"|\"armed\"|\"disarmed\"|\"alarm\")}[]} areas\n * @property {{number?: number, name?: string, secure?: boolean, bypassed?: boolean}[]} zones\n * @property {boolean} [chime] - Reflects whether console chime is enabled\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n * @property {{id?: string, line1?: string, line2?: string, line3?: string, city?: string, state?: string, postalCode?: string, countryCode?: string}} [address]\n */\n\n/**\n * Any smart alarm system\n * @class Alarm\n * @extends {Entity}\n */\nexport class Alarm extends Entity {\n /**\n * @constructor\n * @param {AlarmData} data - The data to initialize the Alarm with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n if (data.offline !== undefined) this.offline = data.offline;\n this.type = data.type;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n this.driver = data.driver;\n this.areas = data.areas;\n this.zones = data.zones;\n if (data.chime !== undefined) this.chime = data.chime;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n if (data.address !== undefined) this.address = data.address;\n }\n}\n\nObject.defineProperty(Alarm.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"alarm.json\",\n title: \"Alarm\",\n description: \"Any smart alarm system\",\n type: \"object\",\n required: [\"id\", \"type\", \"areas\", \"zones\", \"driver\"],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\", description: \"Name of the alarm\" },\n offline: { type: \"boolean\" },\n type: { type: \"string\", enum: [\"alarm\"], default: \"alarm\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n areas: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n number: { type: \"number\" },\n name: { type: \"string\" },\n securityMode: {\n type: [\"string\", \"null\"],\n enum: [\"arming\", \"disarming\", \"armed\", \"disarmed\", \"alarm\", null],\n },\n },\n additionalProperties: false,\n },\n },\n zones: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n number: { type: \"number\", minimum: 0 },\n name: { type: \"string\" },\n secure: { type: [\"boolean\", \"null\"] },\n bypassed: { type: [\"boolean\", \"null\"] },\n },\n additionalProperties: false,\n },\n },\n chime: {\n type: \"boolean\",\n description: \"Reflects whether console chime is enabled\",\n },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n address: { $ref: \"definitions.json#/definitions/address\" },\n },\n },\n});\n\nObject.defineProperty(Alarm.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateAnnouncement as validate } from \"../validate\";\n\n/**\n * @typedef {Object} AnnouncementData Announcement message sent to users\n * @property {string} [id] - Identifier of the object.\n * @property {\"announcement\"} [type] - Default: \"announcement\"\n * @property {string[]} [users]\n * @property {string} [group]\n * @property {string} [body]\n * @property {{id?: any, type: \"mediaFile\", name?: string, fileHash?: string, category?: string, mimeType?: (\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\"), data?: string, url?: string, width?: number, height?: number, size?: number, uploadUrl?: string, uploadUrlExpires?: any, createdBy?: string, systemId?: any}} [media] - Any media file\n * @property {string} [sentBy]\n * @property {string[]} [tags]\n * @property {(string|object)} [createdAt]\n * @property {(string|object)} [updatedAt]\n */\n\n/**\n * Announcement message sent to users\n * @class Announcement\n * @extends {Entity}\n */\nexport class Announcement extends Entity {\n /**\n * @constructor\n * @param {AnnouncementData} data - The data to initialize the Announcement with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n if (data.users !== undefined) this.users = data.users;\n if (data.group !== undefined) this.group = data.group;\n if (data.body !== undefined) this.body = data.body;\n if (data.media !== undefined) this.media = data.media;\n if (data.sentBy !== undefined) this.sentBy = data.sentBy;\n if (data.tags !== undefined) this.tags = data.tags;\n if (data.createdAt !== undefined) this.createdAt = data.createdAt;\n if (data.updatedAt !== undefined) this.updatedAt = data.updatedAt;\n }\n}\n\nObject.defineProperty(Announcement.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"announcement.json\",\n title: \"Announcement\",\n description: \"Announcement message sent to users\",\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", enum: [\"announcement\"], default: \"announcement\" },\n users: { type: \"array\", items: { type: \"string\" }, minItems: 1 },\n group: { type: \"string\" },\n body: { type: \"string\" },\n media: { $ref: \"mediaFile.json\" },\n sentBy: { type: \"string\" },\n tags: { type: \"array\", items: { type: \"string\" } },\n createdAt: { $ref: \"definitions.json#/definitions/date\" },\n updatedAt: { $ref: \"definitions.json#/definitions/date\" },\n },\n additionalProperties: false,\n },\n});\n\nObject.defineProperty(Announcement.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateAutomation as validate } from \"../validate\";\n\n/**\n * @typedef {Object} AutomationData An automation is a collection of triggers and actions\n * @property {string} id - Identifier of the object.\n * @property {string} [name] - The friendly name of the automation\n * @property {\"automation\"} type - Default: \"automation\"\n * @property {boolean} [isEnabled] - Whether the automation is currently enabled. Default: true\n * @property {{discriminator: \"time\", schedule: {days: number[], time: string, timeOffsetSeconds?: number, repeat?: boolean, timezone: string}}} trigger - The trigger that initiates the automation\n * @property {\"time\"} trigger.discriminator - Type of trigger\n * @property {{days: number[], time: string, timeOffsetSeconds?: number, repeat?: boolean, timezone: string}} trigger.schedule - Schedule for time-based triggers\n * @property {number[]} trigger.schedule.days - Days of the week (0 = Sunday, 6 = Saturday)\n * @property {string} trigger.schedule.time - Time of day to trigger the automation\n * @property {number} [trigger.schedule.timeOffsetSeconds] - Offset in seconds from the scheduled time. Default: 0\n * @property {boolean} [trigger.schedule.repeat] - Whether the schedule repeats. Default: true\n * @property {string} trigger.schedule.timezone - Timezone for the schedule (IANA timezone format)\n * @property {{deviceId: string, roomId: string, discriminator: string, duration?: number, state: {property: string, value: (string|number|boolean)}[]}[]} actions - Actions to perform when the trigger conditions are met\n * @property {(string|object)} [createdAt]\n * @property {(string|object)} [updatedAt]\n * @property {(string|object)} [lastTriggeredAt] - When the automation was last triggered\n */\n\n/**\n * An automation is a collection of triggers and actions\n * @class Automation\n * @extends {Entity}\n */\nexport class Automation extends Entity {\n /**\n * @constructor\n * @param {AutomationData} data - The data to initialize the Automation with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n this.type = data.type;\n if (data.isEnabled !== undefined) this.isEnabled = data.isEnabled;\n this.trigger = data.trigger;\n this.actions = data.actions;\n if (data.createdAt !== undefined) this.createdAt = data.createdAt;\n if (data.updatedAt !== undefined) this.updatedAt = data.updatedAt;\n if (data.lastTriggeredAt !== undefined)\n this.lastTriggeredAt = data.lastTriggeredAt;\n }\n\n get isTimeBased() {\n return (\n this.discriminator === \"time\" ||\n (this.trigger && this.trigger.type === \"time\")\n );\n }\n get isDeviceBased() {\n return (\n this.discriminator === \"device\" ||\n (this.trigger && this.trigger.type !== \"time\")\n );\n }\n get isRepeating() {\n return this.isTimeBased() && this.trigger?.schedule?.repeat !== false;\n }\n}\n\nObject.defineProperty(Automation.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"automation.json\",\n title: \"Automation\",\n description: \"An automation is a collection of triggers and actions\",\n type: \"object\",\n required: [\"id\", \"type\", \"trigger\", \"actions\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: {\n type: \"string\",\n description: \"The friendly name of the automation\",\n },\n type: { type: \"string\", enum: [\"automation\"], default: \"automation\" },\n isEnabled: {\n type: \"boolean\",\n description: \"Whether the automation is currently enabled\",\n default: true,\n },\n trigger: {\n type: \"object\",\n description: \"The trigger that initiates the automation\",\n required: [\"discriminator\", \"schedule\"],\n properties: {\n discriminator: {\n type: \"string\",\n enum: [\"time\"],\n description: \"Type of trigger\",\n },\n schedule: {\n type: \"object\",\n description: \"Schedule for time-based triggers\",\n required: [\"days\", \"time\", \"timezone\"],\n properties: {\n days: {\n type: \"array\",\n description: \"Days of the week (0 = Sunday, 6 = Saturday)\",\n items: { type: \"integer\", minimum: 0, maximum: 6 },\n },\n time: {\n type: \"string\",\n description: \"Time of day to trigger the automation\",\n },\n timeOffsetSeconds: {\n type: \"integer\",\n description: \"Offset in seconds from the scheduled time\",\n default: 0,\n },\n repeat: {\n type: \"boolean\",\n description: \"Whether the schedule repeats\",\n default: true,\n },\n timezone: {\n type: \"string\",\n description: \"Timezone for the schedule (IANA timezone format)\",\n },\n },\n },\n },\n },\n actions: {\n type: \"array\",\n description: \"Actions to perform when the trigger conditions are met\",\n items: {\n type: \"object\",\n required: [\"deviceId\", \"roomId\", \"discriminator\", \"state\"],\n properties: {\n deviceId: {\n type: \"string\",\n description: \"ID of the device to control\",\n },\n roomId: {\n type: \"string\",\n description: \"ID of the room containing the device\",\n },\n discriminator: {\n type: \"string\",\n description:\n \"Type discriminator for the device (e.g., 'windowCovering', 'switch')\",\n },\n duration: {\n type: \"integer\",\n description:\n \"Duration in seconds to keep the device in the configured state\",\n minimum: 0,\n },\n state: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"property\", \"value\"],\n properties: {\n property: {\n type: \"string\",\n description:\n \"Property to set (e.g., 'state', 'level', 'setpoint')\",\n },\n value: {\n type: [\"string\", \"number\", \"boolean\"],\n description: \"Value to set the property to\",\n },\n },\n },\n },\n },\n },\n minItems: 1,\n },\n createdAt: { $ref: \"definitions.json#/definitions/createdAt\" },\n updatedAt: { $ref: \"definitions.json#/definitions/updatedAt\" },\n lastTriggeredAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the automation was last triggered\",\n },\n },\n additionalProperties: false,\n },\n});\n\nObject.defineProperty(Automation.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateCamera as validate } from \"../validate\";\n\n/**\n * @typedef {Object} CameraData Any smart camera\n * @property {string} id - Identifier of the object.\n * @property {string} [name]\n * @property {\"doorStation\"} [discriminator]\n * @property {\"camera\"} type - Default: \"camera\"\n * @property {boolean} [offline]\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {{iframe?: string, hls?: string, webRTC?: string, rtsp?: string}} [liveStreams]\n * @property {string} [liveStreams.iframe]\n * @property {string} [liveStreams.hls]\n * @property {string} [liveStreams.webRTC]\n * @property {string} [liveStreams.rtsp]\n * @property {{id?: string, driver?: (\"cloudflare-stream\"|\"aws-kinesis\"|\"digital-watchdog\"|\"mediamtx\"), allowedOrigins?: string[], authRequired?: boolean, iframe?: string, hls?: string, webRTC?: string, rtsp?: string, previewImage?: string}} [liveStream]\n * @property {string} [liveStream.id]\n * @property {(\"cloudflare-stream\"|\"aws-kinesis\"|\"digital-watchdog\"|\"mediamtx\")} [liveStream.driver]\n * @property {string[]} [liveStream.allowedOrigins]\n * @property {boolean} [liveStream.authRequired]\n * @property {string} [liveStream.iframe]\n * @property {string} [liveStream.hls]\n * @property {string} [liveStream.webRTC]\n * @property {string} [liveStream.rtsp] - Local RTSP stream URL\n * @property {string} [liveStream.previewImage] - Source to preview the camera stream\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n */\n\n/**\n * Any smart camera\n * @class Camera\n * @extends {Entity}\n */\nexport class Camera extends Entity {\n /**\n * @constructor\n * @param {CameraData} data - The data to initialize the Camera with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n if (data.discriminator !== undefined)\n this.discriminator = data.discriminator;\n this.type = data.type;\n if (data.offline !== undefined) this.offline = data.offline;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n this.driver = data.driver;\n if (data.liveStreams !== undefined) this.liveStreams = data.liveStreams;\n if (data.liveStream !== undefined) this.liveStream = data.liveStream;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n }\n}\n\nObject.defineProperty(Camera.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"camera.json\",\n title: \"Camera\",\n description: \"Any smart camera\",\n type: \"object\",\n required: [\"id\", \"type\", \"driver\"],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n discriminator: { type: \"string\", enum: [\"doorStation\"] },\n type: { type: \"string\", enum: [\"camera\"], default: \"camera\" },\n offline: { type: \"boolean\" },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n liveStreams: {\n type: \"object\",\n additionalProperties: false,\n $comment:\n \"This is now deprecated. Use liveStream instead. This will remain here for backwards compatibility.\",\n properties: {\n iframe: { type: [\"string\", \"null\"] },\n hls: { type: [\"string\", \"null\"] },\n webRTC: { type: [\"string\", \"null\"] },\n rtsp: { type: [\"string\", \"null\"] },\n },\n },\n liveStream: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n id: { type: \"string\" },\n driver: {\n type: \"string\",\n enum: [\n \"cloudflare-stream\",\n \"aws-kinesis\",\n \"digital-watchdog\",\n \"mediamtx\",\n ],\n },\n allowedOrigins: { type: \"array\", items: { type: \"string\" } },\n authRequired: { type: \"boolean\" },\n iframe: { type: [\"string\", \"null\"] },\n hls: { type: [\"string\", \"null\"] },\n webRTC: { type: [\"string\", \"null\"] },\n rtsp: {\n type: [\"string\", \"null\"],\n description: \"Local RTSP stream URL\",\n examples: [\n \"rtsp://192.168.1.4:544/channels/1\",\n \"rtsp://10.145.6.129:8554/unicast\",\n ],\n },\n previewImage: {\n type: [\"string\", \"null\"],\n description: \"Source to preview the camera stream\",\n examples: [\n \"https://example.com/preview.jpg\",\n \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QBYRXhpZgAATU0AKgAAAAgAA1EQAAEAAAABAQAAAFERAAQAAAABAAABAgABAA\",\n ],\n },\n },\n },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n },\n },\n});\n\nObject.defineProperty(Camera.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateCategory as validate } from \"../validate\";\n\n/**\n * @typedef {Object} CategoryData\n * @property {string} id - Identifier of the object.\n * @property {\"category\"} type - Default: \"category\"\n * @property {string} [name]\n * @property {(\"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\")} [driver] - Driver used to communicate with the object.\n * @property {string} [description]\n * @property {{id?: any, type: \"mediaFile\", name?: string, fileHash?: string, category?: string, mimeType?: (\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\"), data?: string, url?: string, width?: number, height?: number, size?: number, uploadUrl?: string, uploadUrlExpires?: any, createdBy?: string, systemId?: any}} [image] - Any media file\n * @property {number} [rating] - Default: 9\n * @property {(\"space\"|\"product\"|\"mediaFile\")} discriminator\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n *\n * @class Category\n * @extends {Entity}\n */\nexport class Category extends Entity {\n /**\n * @constructor\n * @param {CategoryData} data - The data to initialize the Category with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n this.type = data.type;\n if (data.name !== undefined) this.name = data.name;\n if (data.driver !== undefined) this.driver = data.driver;\n if (data.description !== undefined) this.description = data.description;\n if (data.image !== undefined) this.image = data.image;\n if (data.rating !== undefined) this.rating = data.rating;\n this.discriminator = data.discriminator;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n}\n\nObject.defineProperty(Category.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"category.json\",\n title: \"Category\",\n type: \"object\",\n required: [\"id\", \"type\", \"discriminator\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", enum: [\"category\"], default: \"category\" },\n name: { type: \"string\", minLength: 1 },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n description: { type: \"string\" },\n image: { $ref: \"mediaFile.json\" },\n rating: { type: \"number\", minimum: 0, maximum: 10, default: 9 },\n discriminator: {\n type: \"string\",\n enum: [\"space\", \"product\", \"mediaFile\"],\n },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n },\n});\n\nObject.defineProperty(Category.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateCourtesy as validate } from \"../validate\";\n\n/**\n * @typedef {Object} CourtesyData Any smart courtesy system\n * @property {string} id - Identifier of the object.\n * @property {string} [name]\n * @property {(\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\")} type\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {boolean} [offline]\n * @property {(\"privacy\"|\"service\"|\"none\")[]} supportedStates\n * @property {any} state\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n */\n\n/**\n * Any smart courtesy system\n * @class Courtesy\n * @extends {Entity}\n */\nexport class Courtesy extends Entity {\n /**\n * @constructor\n * @param {CourtesyData} data - The data to initialize the Courtesy with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n this.type = data.type;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n this.driver = data.driver;\n if (data.offline !== undefined) this.offline = data.offline;\n this.supportedStates = data.supportedStates;\n this.state = data.state;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n }\n}\n\nObject.defineProperty(Courtesy.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"courtesy.json\",\n title: \"Courtesy\",\n description: \"Any smart courtesy system\",\n type: \"object\",\n required: [\"id\", \"type\", \"driver\", \"supportedStates\", \"state\"],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n type: { $ref: \"definitions.json#/definitions/type\" },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n offline: { type: \"boolean\" },\n supportedStates: {\n type: \"array\",\n uniqueItems: true,\n items: { enum: [\"privacy\", \"service\", \"none\"] },\n },\n state: { type: \"string\", $ref: \"#/properties/supportedStates/items\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n },\n },\n});\n\nObject.defineProperty(Courtesy.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateCredential as validate } from \"../validate\";\n\n/**\n * @typedef {Object} CredentialData\n * @property {string} [id] - Identifier of the object.\n * @property {string} type - Default: \"credential\"\n * @property {(\"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\")} [driver] - Driver used to communicate with the object.\n * @property {(\"verificationCode\"|\"token\"|\"mobileKey\"|\"pin\"|\"publicKey\"|\"passkeyChallenge\")} [discriminator]\n * @property {string} credential\n * @property {string} [userId]\n * @property {string} [organizationId]\n * @property {string} [propertyId]\n * @property {string} [deviceId]\n * @property {string} [userAgent]\n * @property {(string|object)} expires\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n *\n * @class Credential\n * @extends {Entity}\n */\nexport class Credential extends Entity {\n /**\n * @constructor\n * @param {CredentialData} data - The data to initialize the Credential with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n this.type = data.type;\n if (data.driver !== undefined) this.driver = data.driver;\n if (data.discriminator !== undefined)\n this.discriminator = data.discriminator;\n this.credential = data.credential;\n if (data.userId !== undefined) this.userId = data.userId;\n if (data.organizationId !== undefined)\n this.organizationId = data.organizationId;\n if (data.propertyId !== undefined) this.propertyId = data.propertyId;\n if (data.deviceId !== undefined) this.deviceId = data.deviceId;\n if (data.userAgent !== undefined) this.userAgent = data.userAgent;\n this.expires = data.expires;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n}\n\nObject.defineProperty(Credential.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"credential.json\",\n title: \"Credential\",\n type: \"object\",\n required: [\"type\", \"credential\", \"expires\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"credential\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n discriminator: {\n type: \"string\",\n enum: [\n \"verificationCode\",\n \"token\",\n \"mobileKey\",\n \"pin\",\n \"publicKey\",\n \"passkeyChallenge\",\n ],\n },\n credential: { type: \"string\" },\n userId: { type: \"string\" },\n organizationId: { type: \"string\" },\n propertyId: { type: \"string\" },\n deviceId: { type: \"string\" },\n userAgent: { type: \"string\" },\n expires: { type: [\"string\", \"object\", \"null\"] },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n },\n});\n\nObject.defineProperty(Credential.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateDeviceRouter as validate } from \"../validate\";\n\n/**\n * @typedef {Object} DeviceRouterData A device router contains instructions on where to route devices based on their organization and driver.\n * @property {string} [id] - Identifier of the object.\n * @property {\"deviceRouter\"} [type] - Default: \"deviceRouter\"\n * @property {string} driver\n * @property {string} organizationId - Reference (id) to the organization that owns this router\n * @property {object} [devices]\n */\n\n/**\n * A device router contains instructions on where to route devices based on their organization and driver.\n * @class DeviceRouter\n * @extends {Entity}\n */\nexport class DeviceRouter extends Entity {\n /**\n * @constructor\n * @param {DeviceRouterData} data - The data to initialize the DeviceRouter with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n this.driver = data.driver;\n this.organizationId = data.organizationId;\n if (data.devices !== undefined) this.devices = data.devices;\n }\n}\n\nObject.defineProperty(DeviceRouter.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"deviceRouter.json\",\n title: \"Device Router\",\n description:\n \"A device router contains instructions on where to route devices based on their organization and driver.\",\n type: \"object\",\n required: [\"driver\", \"organizationId\"],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"deviceRouter\", enum: [\"deviceRouter\"] },\n driver: { type: \"string\" },\n organizationId: {\n type: [\"string\", \"null\"],\n description: \"Reference (id) to the organization that owns this router\",\n },\n devices: { type: \"object\", additionalProperties: true },\n },\n },\n});\n\nObject.defineProperty(DeviceRouter.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateDimmer as validate } from \"../validate\";\n\n/**\n * @typedef {Object} DimmerData Any smart dimmer\n * @property {string} id - Identifier of the object.\n * @property {string} [name]\n * @property {(\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\")} type\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {boolean} [offline]\n * @property {number} level\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n */\n\n/**\n * Any smart dimmer\n * @class Dimmer\n * @extends {Entity}\n */\nexport class Dimmer extends Entity {\n /**\n * @constructor\n * @param {DimmerData} data - The data to initialize the Dimmer with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n this.type = data.type;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n this.driver = data.driver;\n if (data.offline !== undefined) this.offline = data.offline;\n this.level = data.level;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n }\n}\n\nObject.defineProperty(Dimmer.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"dimmer.json\",\n title: \"Dimmer\",\n description: \"Any smart dimmer\",\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n type: { $ref: \"definitions.json#/definitions/type\" },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n offline: { type: \"boolean\" },\n level: { type: [\"number\", \"null\"], minimum: 0, maximum: 100 },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n },\n required: [\"id\", \"type\", \"level\", \"driver\"],\n },\n});\n\nObject.defineProperty(Dimmer.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateDiscoveredDevice as validate } from \"../validate\";\n\n/**\n * @typedef {Object} DiscoveredDeviceData A device that has been discovered by Kohost, but not yet added to the Kohost system.\n * @property {string} [id] - Identifier of the object.\n * @property {string} name\n * @property {string} deviceId\n * @property {\"discoveredDevice\"} [type] - Default: \"discoveredDevice\"\n * @property {(\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\")} [discriminator]\n * @property {string} [driver]\n * @property {object} deviceData\n * @property {boolean} [ignore]\n * @property {string} [organizationId] - Reference (id) to the organization that owns this device\n * @property {string} [propertyId] - Reference (id) to the property that this device belongs to\n */\n\n/**\n * A device that has been discovered by Kohost, but not yet added to the Kohost system.\n * @class DiscoveredDevice\n * @extends {Entity}\n */\nexport class DiscoveredDevice extends Entity {\n /**\n * @constructor\n * @param {DiscoveredDeviceData} data - The data to initialize the DiscoveredDevice with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n this.name = data.name;\n this.deviceId = data.deviceId;\n if (data.type !== undefined) this.type = data.type;\n if (data.discriminator !== undefined)\n this.discriminator = data.discriminator;\n if (data.driver !== undefined) this.driver = data.driver;\n this.deviceData = data.deviceData;\n if (data.ignore !== undefined) this.ignore = data.ignore;\n if (data.organizationId !== undefined)\n this.organizationId = data.organizationId;\n if (data.propertyId !== undefined) this.propertyId = data.propertyId;\n }\n}\n\nObject.defineProperty(DiscoveredDevice.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"discoveredDevice.json\",\n title: \"Discovered Device\",\n description:\n \"A device that has been discovered by Kohost, but not yet added to the Kohost system.\",\n type: \"object\",\n required: [\"name\", \"deviceId\", \"deviceData\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n deviceId: { type: \"string\" },\n type: {\n type: \"string\",\n enum: [\"discoveredDevice\"],\n default: \"discoveredDevice\",\n },\n discriminator: { $ref: \"definitions.json#/definitions/type\" },\n driver: { type: \"string\" },\n deviceData: { type: \"object\" },\n ignore: { type: \"boolean\" },\n organizationId: {\n type: [\"string\", \"null\"],\n description: \"Reference (id) to the organization that owns this device\",\n },\n propertyId: {\n type: [\"string\", \"null\"],\n description:\n \"Reference (id) to the property that this device belongs to\",\n },\n },\n },\n});\n\nObject.defineProperty(DiscoveredDevice.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateEmailMessage as validate } from \"../validate\";\n\n/**\n * @typedef {Object} EmailMessageData\n * @property {string} [id] - Identifier of the object.\n * @property {\"emailMessage\"} [type] - Default: \"emailMessage\"\n * @property {string} to\n * @property {string} from - Must be in the format of 'Sender <email@example.com>\n * @property {string} subject\n * @property {(\"queued\"|\"sending\"|\"sent\"|\"deferred\"|\"delivered\"|\"undelivered\"|\"bounced\"|\"blocked\"|\"receiving\"|\"received\"|\"opened\"|\"clicked\"|\"unsubscribed\"|\"spamReport\")} status\n * @property {string} [statusMessage]\n * @property {string} [html]\n * @property {string} [text]\n * @property {string} [driver]\n * @property {object} [appData]\n * @property {(string|object)} [createdAt]\n * @property {(string|object)} [updatedAt]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n *\n * @class EmailMessage\n * @extends {Entity}\n */\nexport class EmailMessage extends Entity {\n /**\n * @constructor\n * @param {EmailMessageData} data - The data to initialize the EmailMessage with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n this.to = data.to;\n this.from = data.from;\n this.subject = data.subject;\n this.status = data.status;\n if (data.statusMessage !== undefined)\n this.statusMessage = data.statusMessage;\n if (data.html !== undefined) this.html = data.html;\n if (data.text !== undefined) this.text = data.text;\n if (data.driver !== undefined) this.driver = data.driver;\n if (data.appData !== undefined) this.appData = data.appData;\n if (data.createdAt !== undefined) this.createdAt = data.createdAt;\n if (data.updatedAt !== undefined) this.updatedAt = data.updatedAt;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n}\n\nObject.defineProperty(EmailMessage.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"emailMessage.json\",\n title: \"Email Message\",\n type: \"object\",\n required: [\"to\", \"from\", \"status\", \"subject\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"emailMessage\", enum: [\"emailMessage\"] },\n to: {\n type: \"string\",\n pattern: \"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\\\.[a-zA-Z0-9-.]+$\",\n },\n from: {\n type: \"string\",\n pattern: \".*<[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\\\.[a-zA-Z0-9-.]+>.*\",\n description: \"Must be in the format of 'Sender <email@example.com>\",\n },\n subject: { type: \"string\" },\n status: {\n type: \"string\",\n enum: [\n \"queued\",\n \"sending\",\n \"sent\",\n \"deferred\",\n \"delivered\",\n \"undelivered\",\n \"bounced\",\n \"blocked\",\n \"receiving\",\n \"received\",\n \"opened\",\n \"clicked\",\n \"unsubscribed\",\n \"spamReport\",\n ],\n },\n statusMessage: { type: \"string\" },\n html: { type: \"string\" },\n text: { type: \"string\" },\n driver: { type: \"string\" },\n appData: { type: \"object\" },\n createdAt: { $ref: \"definitions.json#/definitions/date\" },\n updatedAt: { $ref: \"definitions.json#/definitions/date\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n },\n});\n\nObject.defineProperty(EmailMessage.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateEnergyReport as validate } from \"../validate\";\n\n/**\n * @typedef {Object} EnergyReportData Hourly Report for Energy based on energy report shards\n * @property {string} id - Identifier of the object.\n * @property {\"energyReport\"} type - Default: \"energyReport\"\n * @property {(\"hourly\"|\"daily\"|\"monthly\")} [reportTime]\n * @property {string} roomId - Identifier of the object.\n * @property {(string|object)} first\n * @property {(string|object)} last\n * @property {{id: string, type: (\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\"), kwh: number}[]} consumption\n * @property {{lights: number, climate: number, media: number}[]} totals\n * @property {number} costPerKw\n */\n\n/**\n * Hourly Report for Energy based on energy report shards\n * @class EnergyReport\n * @extends {Entity}\n */\nexport class EnergyReport extends Entity {\n /**\n * @constructor\n * @param {EnergyReportData} data - The data to initialize the EnergyReport with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n this.type = data.type;\n if (data.reportTime !== undefined) this.reportTime = data.reportTime;\n this.roomId = data.roomId;\n this.first = data.first;\n this.last = data.last;\n this.consumption = data.consumption;\n this.totals = data.totals;\n this.costPerKw = data.costPerKw;\n }\n}\n\nObject.defineProperty(EnergyReport.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"energyReport.json\",\n title: \"Energy Report\",\n description: \"Hourly Report for Energy based on energy report shards\",\n type: \"object\",\n required: [\n \"id\",\n \"type\",\n \"roomId\",\n \"first\",\n \"last\",\n \"consumption\",\n \"totals\",\n \"costPerKw\",\n ],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", enum: [\"energyReport\"], default: \"energyReport\" },\n reportTime: { type: \"string\", enum: [\"hourly\", \"daily\", \"monthly\"] },\n roomId: { $ref: \"definitions.json#/definitions/id\" },\n first: { type: [\"string\", \"object\"], format: \"date-time\" },\n last: { type: [\"string\", \"object\"], format: \"date-time\" },\n consumption: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"id\", \"type\", \"kwh\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { $ref: \"definitions.json#/definitions/type\" },\n kwh: { type: \"number\", minimum: 0 },\n },\n },\n },\n totals: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"lights\", \"climate\", \"media\"],\n properties: {\n lights: { type: \"number\", minimum: 0 },\n climate: { type: \"number\", minimum: 0 },\n media: { type: \"number\", minimum: 0 },\n },\n },\n },\n costPerKw: { type: \"number\", minimum: 0 },\n },\n },\n});\n\nObject.defineProperty(EnergyReport.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateEnergyReportShard as validate } from \"../validate\";\n\n/**\n * @typedef {Object} EnergyReportShardData Shard used for Energy Reports\n * @property {string} id - Identifier of the object.\n * @property {\"energyReportShard\"} type - Default: \"energyReportShard\"\n * @property {string} roomId - Identifier of the object.\n * @property {(string|object)} first\n * @property {(string|object)} last\n * @property {{time: (string|object), watts: number, id: string, type: (\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\"), value: number}[]} data\n * @property {number} ndata - Default: 0\n * @property {(string|object)} expires\n */\n\n/**\n * Shard used for Energy Reports\n * @class EnergyReportShard\n * @extends {Entity}\n */\nexport class EnergyReportShard extends Entity {\n /**\n * @constructor\n * @param {EnergyReportShardData} data - The data to initialize the EnergyReportShard with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n this.type = data.type;\n this.roomId = data.roomId;\n this.first = data.first;\n this.last = data.last;\n this.data = data.data;\n this.ndata = data.ndata;\n this.expires = data.expires;\n }\n}\n\nObject.defineProperty(EnergyReportShard.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"energyReportShard.json\",\n title: \"Energy Report Shard\",\n description: \"Shard used for Energy Reports\",\n type: \"object\",\n required: [\n \"id\",\n \"type\",\n \"roomId\",\n \"first\",\n \"last\",\n \"data\",\n \"ndata\",\n \"expires\",\n ],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: {\n type: \"string\",\n enum: [\"energyReportShard\"],\n default: \"energyReportShard\",\n },\n roomId: { $ref: \"definitions.json#/definitions/id\" },\n first: { type: [\"string\", \"object\"], format: \"date-time\" },\n last: { type: [\"string\", \"object\"], format: \"date-time\" },\n data: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"time\", \"watts\", \"id\", \"type\", \"value\"],\n properties: {\n time: { type: [\"string\", \"object\"], format: \"date-time\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { $ref: \"definitions.json#/definitions/type\" },\n value: { type: \"number\", minimum: 0, maximum: 1 },\n },\n },\n },\n ndata: { type: \"integer\", minimum: 0, maximum: 100000, default: 0 },\n expires: { type: [\"string\", \"object\"], format: \"date-time\" },\n },\n },\n});\n\nObject.defineProperty(EnergyReportShard.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateGateway as validate } from \"../validate\";\n\n/**\n * @typedef {Object} GatewayData Any smart gateway that is an entrypoint for controlling devices\n * @property {string} id - Identifier of the object.\n * @property {string} [name]\n * @property {boolean} [offline]\n * @property {(\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\")} type\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {string} status\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n */\n\n/**\n * Any smart gateway that is an entrypoint for controlling devices\n * @class Gateway\n * @extends {Entity}\n */\nexport class Gateway extends Entity {\n /**\n * @constructor\n * @param {GatewayData} data - The data to initialize the Gateway with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n if (data.offline !== undefined) this.offline = data.offline;\n this.type = data.type;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n this.status = data.status;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n this.driver = data.driver;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n }\n}\n\nObject.defineProperty(Gateway.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"iotGateway.json\",\n title: \"Gateway\",\n description:\n \"Any smart gateway that is an entrypoint for controlling devices\",\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n offline: { type: \"boolean\" },\n type: { $ref: \"definitions.json#/definitions/type\" },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n status: { type: \"string\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n },\n required: [\"id\", \"type\", \"status\", \"driver\"],\n },\n});\n\nObject.defineProperty(Gateway.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateIdentification as validate } from \"../validate\";\n\n/**\n * @typedef {Object} IdentificationData\n * @property {string} [id] - Identifier of the object.\n * @property {(\"driversLicense\"|\"passport\"|\"identityCard\"|\"visa\")} type\n * @property {string} [number]\n * @property {string} [maskedNumber]\n * @property {string} [encryptedNumber]\n * @property {(string|object)} [issued]\n * @property {(string|object)} [expires]\n * @property {boolean} [verified]\n * @property {boolean} [matched]\n * @property {string} [firstName]\n * @property {string} [lastName]\n * @property {string} [issuingCountry]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n *\n * @class Identification\n * @extends {Entity}\n */\nexport class Identification extends Entity {\n /**\n * @constructor\n * @param {IdentificationData} data - The data to initialize the Identification with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n this.type = data.type;\n if (data.number !== undefined) this.number = data.number;\n if (data.maskedNumber !== undefined) this.maskedNumber = data.maskedNumber;\n if (data.encryptedNumber !== undefined)\n this.encryptedNumber = data.encryptedNumber;\n if (data.issued !== undefined) this.issued = data.issued;\n if (data.expires !== undefined) this.expires = data.expires;\n if (data.verified !== undefined) this.verified = data.verified;\n if (data.matched !== undefined) this.matched = data.matched;\n if (data.firstName !== undefined) this.firstName = data.firstName;\n if (data.lastName !== undefined) this.lastName = data.lastName;\n if (data.issuingCountry !== undefined)\n this.issuingCountry = data.issuingCountry;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n}\n\nObject.defineProperty(Identification.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"identification.json\",\n title: \"Identification\",\n type: \"object\",\n required: [\"type\"],\n additionalProperties: false,\n oneOf: [{ required: [\"number\"] }, { required: [\"encryptedNumber\"] }],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: {\n type: \"string\",\n enum: [\"driversLicense\", \"passport\", \"identityCard\", \"visa\"],\n },\n number: { type: \"string\" },\n maskedNumber: { type: \"string\" },\n encryptedNumber: { type: \"string\" },\n issued: { type: [\"string\", \"object\"], format: \"date-time\" },\n expires: { type: [\"string\", \"object\", \"null\"], format: \"date-time\" },\n verified: { type: \"boolean\" },\n matched: { type: \"boolean\" },\n firstName: { type: \"string\" },\n lastName: { type: \"string\" },\n issuingCountry: { type: \"string\", minLength: 2, maxLength: 2 },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n },\n});\n\nObject.defineProperty(Identification.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateIssue as validate } from \"../validate\";\n\n/**\n * @typedef {Object} IssueData An issue associated with ticketing and concierge.\n * @property {string} id - Identifier of the object.\n * @property {\"issue\"} type - Default: \"issue\"\n * @property {string} name\n * @property {string} [description]\n * @property {string} department\n * @property {{userId?: string, vendorId?: string, priority?: (\"low\"|\"normal\"|\"high\"), tags?: string[]}} [autoAssign]\n * @property {string} [autoAssign.userId] - The user ID to assign tickets with this issue to.\n * @property {string} [autoAssign.vendorId] - The vendor ID to assign tickets with this issue to.\n * @property {(\"low\"|\"normal\"|\"high\")} [autoAssign.priority] - The priority to assign tickets with this issue to.\n * @property {string[]} [autoAssign.tags]\n * @property {{id: string, discriminator: \"user\"}[]} [notify] - A list of entities to notify when this issue is triggered.. Default: []\n * @property {string} [systemKey]\n * @property {boolean} [autoCreateTicket] - Default: true\n * @property {string[]} [excludedResources] - A list of resources that should not trigger notifications of this issue. Default: []\n */\n\n/**\n * An issue associated with ticketing and concierge.\n * @class Issue\n * @extends {Entity}\n */\nexport class Issue extends Entity {\n /**\n * @constructor\n * @param {IssueData} data - The data to initialize the Issue with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n this.type = data.type;\n this.name = data.name;\n if (data.description !== undefined) this.description = data.description;\n this.department = data.department;\n if (data.autoAssign !== undefined) this.autoAssign = data.autoAssign;\n if (data.notify !== undefined) this.notify = data.notify;\n if (data.systemKey !== undefined) this.systemKey = data.systemKey;\n if (data.autoCreateTicket !== undefined)\n this.autoCreateTicket = data.autoCreateTicket;\n if (data.excludedResources !== undefined)\n this.excludedResources = data.excludedResources;\n }\n}\n\nObject.defineProperty(Issue.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"issue.json\",\n title: \"Issue\",\n description: \"An issue associated with ticketing and concierge.\",\n type: \"object\",\n required: [\"id\", \"type\", \"name\", \"department\"],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", enum: [\"issue\"], default: \"issue\" },\n name: { type: \"string\" },\n description: { type: \"string\" },\n department: { type: \"string\" },\n autoAssign: {\n type: \"object\",\n properties: {\n userId: {\n type: \"string\",\n description: \"The user ID to assign tickets with this issue to.\",\n },\n vendorId: {\n type: \"string\",\n description: \"The vendor ID to assign tickets with this issue to.\",\n },\n priority: {\n $ref: \"ticket.json#/properties/priority\",\n description: \"The priority to assign tickets with this issue to.\",\n },\n tags: { type: \"array\", items: { type: \"string\" } },\n },\n },\n notify: {\n type: \"array\",\n description:\n \"A list of entities to notify when this issue is triggered.\",\n default: [],\n items: {\n type: \"object\",\n required: [\"id\", \"discriminator\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the entity to notify.\",\n },\n discriminator: { type: \"string\", enum: [\"user\"] },\n },\n },\n },\n systemKey: { type: \"string\" },\n autoCreateTicket: { type: \"boolean\", default: true },\n excludedResources: {\n type: \"array\",\n description:\n \"A list of resources that should not trigger notifications of this issue\",\n items: { type: \"string\" },\n default: [],\n },\n },\n },\n});\n\nObject.defineProperty(Issue.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateLock as validate } from \"../validate\";\n\n/**\n * @typedef {Object} LockData Any smart lock\n * @property {string} id - Identifier of the object.\n * @property {string} [name]\n * @property {(\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\")} type\n * @property {boolean} [offline]\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {(\"locked\"|\"unlocked\")} state\n * @property {(\"normal\"|\"autoLock\"|\"emergencyOpen\"|\"emergencyClose\"|\"holdOpen\"|\"lockdown\")} [mode] - emergencyOpen and emergencyClose are deprecated and can be removed once Salto, Paxton and Geovision drivers are updated. Default: null\n * @property {(\"normal\"|\"autoLock\"|\"emergencyOpen\"|\"emergencyClose\"|\"holdOpen\"|\"lockdown\")[]} [supportedModes]\n * @property {number} [batteryLevel]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n */\n\n/**\n * Any smart lock\n * @class Lock\n * @extends {Entity}\n */\nexport class Lock extends Entity {\n /**\n * @constructor\n * @param {LockData} data - The data to initialize the Lock with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n this.type = data.type;\n if (data.offline !== undefined) this.offline = data.offline;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n this.driver = data.driver;\n this.state = data.state;\n if (data.mode !== undefined) this.mode = data.mode;\n if (data.supportedModes !== undefined)\n this.supportedModes = data.supportedModes;\n if (data.batteryLevel !== undefined) this.batteryLevel = data.batteryLevel;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n }\n}\n\nObject.defineProperty(Lock.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"lock.json\",\n title: \"Lock\",\n description: \"Any smart lock\",\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n type: { $ref: \"definitions.json#/definitions/type\" },\n offline: { type: \"boolean\" },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n state: { type: [\"string\", \"null\"], enum: [\"locked\", \"unlocked\", null] },\n mode: {\n type: [\"string\", \"null\"],\n enum: [\n \"normal\",\n \"autoLock\",\n \"emergencyOpen\",\n \"emergencyClose\",\n \"holdOpen\",\n \"lockdown\",\n null,\n ],\n description:\n \"emergencyOpen and emergencyClose are deprecated and can be removed once Salto, Paxton and Geovision drivers are updated\",\n default: null,\n },\n supportedModes: {\n type: \"array\",\n uniqueItems: true,\n items: {\n enum: [\n \"normal\",\n \"autoLock\",\n \"emergencyOpen\",\n \"emergencyClose\",\n \"holdOpen\",\n \"lockdown\",\n null,\n ],\n },\n },\n batteryLevel: { $ref: \"definitions.json#/definitions/batteryLevel\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n },\n required: [\"id\", \"type\", \"state\", \"driver\"],\n },\n});\n\nObject.defineProperty(Lock.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateLog as validate } from \"../validate\";\n\n/**\n * @typedef {Object} LogData\n * @property {\"log\"} type - Default: \"log\"\n * @property {number} timestamp\n * @property {string} id - Identifier of the object.\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {string} name - Event name\n * @property {{name: string, value: string}} [field1]\n * @property {string} field1.name\n * @property {string} field1.value\n * @property {{name: string, value: string}} [field2]\n * @property {string} field2.name\n * @property {string} field2.value\n * @property {{name: string, value: string}} [field3]\n * @property {string} field3.name\n * @property {string} field3.value\n * @property {{name: string, value: string}} [field4]\n * @property {string} field4.name\n * @property {string} field4.value\n * @property {{name: string, value: string}} [field5]\n * @property {string} field5.name\n * @property {string} field5.value\n * @property {{name: string, value: string}} [field6]\n * @property {string} field6.name\n * @property {string} field6.value\n */\n\n/**\n *\n * @class Log\n * @extends {Entity}\n */\nexport class Log extends Entity {\n /**\n * @constructor\n * @param {LogData} data - The data to initialize the Log with\n */\n constructor(data) {\n super(data);\n this.type = data.type;\n this.timestamp = data.timestamp;\n this.id = data.id;\n this.driver = data.driver;\n this.name = data.name;\n if (data.field1 !== undefined) this.field1 = data.field1;\n if (data.field2 !== undefined) this.field2 = data.field2;\n if (data.field3 !== undefined) this.field3 = data.field3;\n if (data.field4 !== undefined) this.field4 = data.field4;\n if (data.field5 !== undefined) this.field5 = data.field5;\n if (data.field6 !== undefined) this.field6 = data.field6;\n }\n}\n\nObject.defineProperty(Log.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"log.json\",\n title: \"Log\",\n type: \"object\",\n required: [\"type\", \"timestamp\", \"id\", \"driver\", \"name\"],\n properties: {\n type: { type: \"string\", default: \"log\", enum: [\"log\"] },\n timestamp: { type: \"number\", minimum: 1655907956593 },\n id: { $ref: \"definitions.json#/definitions/id\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n name: { type: \"string\", description: \"Event name\" },\n field1: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: { name: { type: \"string\" }, value: { type: \"string\" } },\n },\n field2: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: { name: { type: \"string\" }, value: { type: \"string\" } },\n },\n field3: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: { name: { type: \"string\" }, value: { type: \"string\" } },\n },\n field4: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: { name: { type: \"string\" }, value: { type: \"string\" } },\n },\n field5: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: { name: { type: \"string\" }, value: { type: \"string\" } },\n },\n field6: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: { name: { type: \"string\" }, value: { type: \"string\" } },\n },\n },\n },\n});\n\nObject.defineProperty(Log.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateMediaFile as validate } from \"../validate\";\n\n/**\n * @typedef {Object} MediaFileData Any media file\n * @property {string} [id] - Identifier of the object.\n * @property {\"mediaFile\"} type - Default: \"mediaFile\"\n * @property {string} [name]\n * @property {string} [fileHash]\n * @property {string} [category] - This is the category id\n * @property {(\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\")} [mimeType]\n * @property {string} [data]\n * @property {string} [url]\n * @property {number} [width]\n * @property {number} [height]\n * @property {number} [size] - Size in bytes\n * @property {string} [uploadUrl]\n * @property {(string|object)} [uploadUrlExpires]\n * @property {string} [createdBy]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n * Any media file\n * @class MediaFile\n * @extends {Entity}\n */\nexport class MediaFile extends Entity {\n /**\n * @constructor\n * @param {MediaFileData} data - The data to initialize the MediaFile with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n this.type = data.type;\n if (data.name !== undefined) this.name = data.name;\n if (data.fileHash !== undefined) this.fileHash = data.fileHash;\n if (data.category !== undefined) this.category = data.category;\n if (data.mimeType !== undefined) this.mimeType = data.mimeType;\n if (data.data !== undefined) this.data = data.data;\n if (data.url !== undefined) this.url = data.url;\n if (data.width !== undefined) this.width = data.width;\n if (data.height !== undefined) this.height = data.height;\n if (data.size !== undefined) this.size = data.size;\n if (data.uploadUrl !== undefined) this.uploadUrl = data.uploadUrl;\n if (data.uploadUrlExpires !== undefined)\n this.uploadUrlExpires = data.uploadUrlExpires;\n if (data.createdBy !== undefined) this.createdBy = data.createdBy;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n\n createImageVariant(params) {\n if (this.mimeType != \"image/*\")\n throw new Error(\"Only dynamic images can have variants\");\n if (!this.url) throw new Error(\"MediaFile has no url\");\n // convert params to \"key=value\" pairs\n const query = Object.keys(params)\n .map((key) => `${key}=${params[key]}`)\n .join(\",\");\n\n // replace the final /public with the query above\n return this.url.replace(/\\/public$/, `/${query}`);\n }\n}\n\nObject.defineProperty(MediaFile.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"mediaFile.json\",\n title: \"Media File\",\n description: \"Any media file\",\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"mediaFile\", enum: [\"mediaFile\"] },\n name: { type: \"string\" },\n fileHash: { type: \"string\" },\n category: { type: \"string\", description: \"This is the category id\" },\n mimeType: {\n type: \"string\",\n enum: [\n \"image/*\",\n \"image/jpeg\",\n \"image/png\",\n \"image/gif\",\n \"image/webp\",\n \"image/avif\",\n \"image/svg+xml\",\n \"application/pdf\",\n ],\n },\n data: { type: \"string\" },\n url: { type: \"string\", format: \"uri\" },\n width: { type: \"integer\", minimum: 0 },\n height: { type: \"integer\", minimum: 0 },\n size: { type: \"integer\", minimum: 0, description: \"Size in bytes\" },\n uploadUrl: { type: \"string\", format: \"uri\" },\n uploadUrlExpires: { $ref: \"definitions.json#/definitions/date\" },\n createdBy: { type: \"string\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n additionalProperties: false,\n required: [\"type\"],\n },\n});\n\nObject.defineProperty(MediaFile.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateMediaSource as validate } from \"../validate\";\n\n/**\n * @typedef {Object} MediaSourceData Any media source\n * @property {string} id - Identifier of the object.\n * @property {\"mediaSource\"} type - Default: \"mediaSource\"\n * @property {(\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"paSystem\"|\"uncontrolledDevice\")} discriminator\n * @property {{id?: string, name?: string}[]} [playlists]\n * @property {(\"MR22GA\"|\"XRT260\"|\"XRT270\"|\"HOF-16K 1.2\"|\"219863500\"|\"SONIFI\"|\"AKB76039803\"|\"BN59-01388A\")} [remote]\n * @property {string} [name]\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {boolean} [offline]\n * @property {boolean} audio\n * @property {boolean} video\n * @property {boolean} [powerFeedback]\n * @property {boolean} [volumeFeedback]\n * @property {boolean} [muted]\n * @property {number} [volume]\n * @property {number} [brightness]\n * @property {number} [contrast]\n * @property {(\"on\"|\"off\")} [power]\n * @property {string} [input]\n * @property {string[]} [supportedInputs]\n * @property {string[]} [supportedOutputs]\n * @property {(\"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\")} [command]\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n */\n\n/**\n * Any media source\n * @class MediaSource\n * @extends {Entity}\n */\nexport class MediaSource extends Entity {\n /**\n * @constructor\n * @param {MediaSourceData} data - The data to initialize the MediaSource with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n this.type = data.type;\n this.discriminator = data.discriminator;\n if (data.playlists !== undefined) this.playlists = data.playlists;\n if (data.remote !== undefined) this.remote = data.remote;\n if (data.name !== undefined) this.name = data.name;\n this.driver = data.driver;\n if (data.offline !== undefined) this.offline = data.offline;\n this.audio = data.audio;\n this.video = data.video;\n if (data.powerFeedback !== undefined)\n this.powerFeedback = data.powerFeedback;\n if (data.volumeFeedback !== undefined)\n this.volumeFeedback = data.volumeFeedback;\n if (data.muted !== undefined) this.muted = data.muted;\n if (data.volume !== undefined) this.volume = data.volume;\n if (data.brightness !== undefined) this.brightness = data.brightness;\n if (data.contrast !== undefined) this.contrast = data.contrast;\n if (data.power !== undefined) this.power = data.power;\n if (data.input !== undefined) this.input = data.input;\n if (data.supportedInputs !== undefined)\n this.supportedInputs = data.supportedInputs;\n if (data.supportedOutputs !== undefined)\n this.supportedOutputs = data.supportedOutputs;\n if (data.command !== undefined) this.command = data.command;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n }\n}\n\nObject.defineProperty(MediaSource.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"mediaSource.json\",\n title: \"Media Source\",\n description: \"Any media source\",\n type: \"object\",\n required: [\"id\", \"type\", \"discriminator\", \"audio\", \"video\", \"driver\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"mediaSource\", enum: [\"mediaSource\"] },\n discriminator: {\n type: \"string\",\n enum: [\n \"tv\",\n \"dvr\",\n \"appleTv\",\n \"discPlayer\",\n \"mediaPlayer\",\n \"paSystem\",\n \"uncontrolledDevice\",\n ],\n },\n playlists: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { $ref: \"definitions.json#/definitions/name\" },\n },\n },\n },\n remote: {\n type: \"string\",\n enum: [\n \"MR22GA\",\n \"XRT260\",\n \"XRT270\",\n \"HOF-16K 1.2\",\n \"219863500\",\n \"SONIFI\",\n \"AKB76039803\",\n \"BN59-01388A\",\n ],\n },\n name: { $ref: \"definitions.json#/definitions/name\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n offline: { type: \"boolean\" },\n audio: { type: \"boolean\" },\n video: { type: \"boolean\" },\n powerFeedback: { type: \"boolean\" },\n volumeFeedback: { type: \"boolean\" },\n muted: { type: \"boolean\" },\n volume: { type: \"number\", minimum: 0, maximum: 100 },\n brightness: { type: \"number\", minimum: 0, maximum: 100 },\n contrast: { type: \"number\", minimum: 0, maximum: 100 },\n power: { type: \"string\", enum: [\"on\", \"off\"] },\n input: { type: \"string\" },\n supportedInputs: { type: \"array\", items: { type: \"string\" } },\n supportedOutputs: { type: \"array\", items: { type: \"string\" } },\n command: {\n type: [\"string\", \"null\"],\n enum: [\n \"mute\",\n \"volumeUp\",\n \"volumeDown\",\n \"brightnessUp\",\n \"brightnessDown\",\n \"channelUp\",\n \"channelDown\",\n \"number0\",\n \"number1\",\n \"number2\",\n \"number3\",\n \"number4\",\n \"number5\",\n \"number6\",\n \"number7\",\n \"number8\",\n \"number9\",\n \"lastChannel\",\n \"display\",\n \"favoriteChannel\",\n \"play\",\n \"playing\",\n \"stop\",\n \"stopped\",\n \"pause\",\n \"paused\",\n \"fastForward\",\n \"fastForwarding\",\n \"rewind\",\n \"rewinding\",\n \"instantReplay\",\n \"record\",\n \"ac3\",\n \"pvrMenu\",\n \"guide\",\n \"menu\",\n \"menuUp\",\n \"menuDown\",\n \"menuLeft\",\n \"menuRight\",\n \"pageUp\",\n \"pageDown\",\n \"select\",\n \"exit\",\n \"input\",\n \"power\",\n \"enterChannel\",\n \"enterVolume\",\n \"enterBrightness\",\n \"enterContrast\",\n \"number10\",\n \"number11\",\n \"number12\",\n \"number13\",\n \"number14\",\n \"number15\",\n \"number16\",\n \"number10Plus\",\n \"number20Plus\",\n \"number100\",\n \"dash\",\n \"threeChan\",\n \"threeD\",\n \"sixChan\",\n \"a\",\n \"add\",\n \"alarm\",\n \"am\",\n \"analog\",\n \"angle\",\n \"antenna\",\n \"antennaEast\",\n \"antennaWest\",\n \"aspect\",\n \"audio1\",\n \"audio2\",\n \"audio3\",\n \"audioDumming\",\n \"audioLevelDown\",\n \"audioLevelUp\",\n \"b\",\n \"back\",\n \"c\",\n \"component1\",\n \"component2\",\n \"component3\",\n \"d\",\n \"home\",\n \"list\",\n \"liveTv\",\n \"discreteInputCable\",\n \"powerOff\",\n \"powerOn\",\n \"setupMenu\",\n \"skipForward\",\n \"skipReverse\",\n \"video1\",\n \"video2\",\n \"video3\",\n \"video4\",\n \"video5\",\n \"details\",\n \"hdmi1\",\n \"hdmi2\",\n \"hdmi3\",\n \"cecDeviceList\",\n \"mtsSap\",\n \"red\",\n \"green\",\n \"yellow\",\n \"blue\",\n \"alert\",\n \"order\",\n ],\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n },\n additionalProperties: false,\n },\n});\n\nObject.defineProperty(MediaSource.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateMotionSensor as validate } from \"../validate\";\n\n/**\n * @typedef {Object} MotionSensorData Any smart motion sensor\n * @property {string} id - Identifier of the object.\n * @property {string} [name]\n * @property {(\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\")} type\n * @property {boolean} [offline]\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n */\n\n/**\n * Any smart motion sensor\n * @class MotionSensor\n * @extends {Entity}\n */\nexport class MotionSensor extends Entity {\n /**\n * @constructor\n * @param {MotionSensorData} data - The data to initialize the MotionSensor with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n this.type = data.type;\n if (data.offline !== undefined) this.offline = data.offline;\n this.driver = data.driver;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n }\n}\n\nObject.defineProperty(MotionSensor.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"motionSensor.json\",\n title: \"Motion Sensor\",\n description: \"Any smart motion sensor\",\n type: \"object\",\n required: [\"id\", \"type\", \"driver\"],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n type: { $ref: \"definitions.json#/definitions/type\" },\n offline: { type: \"boolean\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n },\n },\n});\n\nObject.defineProperty(MotionSensor.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateOrder as validate } from \"../validate\";\n\n/**\n * @typedef {Object} OrderData A purchase order for products or services.\n * @property {string} [id] - Identifier of the object.\n * @property {\"order\"} type - Default: \"order\"\n * @property {string} [orderNumber]\n * @property {(\"draft\"|\"pendingPayment\"|\"processing\"|\"outForDelivery\"|\"completed\"|\"paymentFailed\"|\"cancelled\"|\"refunded\")} status\n * @property {string} [userId] - Identifier of the object.. User id of purchaser\n * @property {string} [reservationId] - Identifier of the object.. Reservation id if the order is for a reservation\n * @property {(string|object)} [date]\n * @property {{additionalProperties?: any, name: string, sku?: string, quantity?: number, price: number, taxClass?: string, deliveryClass?: string, productId?: string}[]} [items] - Default: []\n * @property {{additionalProperties?: any, name: string, class?: string, rateType?: (\"percentage\"|\"flat\"), rate: number, total?: number}[]} [taxes] - Default: []\n * @property {{additionalProperties?: any, name: string, price: number}[]} [fees] - Default: []\n * @property {{additionalProperties?: any, name: string, class?: string, rateType?: (\"percentage\"|\"flat\"), rate: number, total?: number}[]} [delivery] - Default: []\n * @property {{method?: (\"folio\"|\"invoice\"|\"amex\"|\"visa\"|\"masterCard\"|\"maestro\"|\"discover\"|\"diners\"|\"jcb\"|\"applePay\"|\"alipay\"|\"chinaUnionPay\"|\"vpay\"), name?: string, date?: (string|object), amount?: number, transactionReference?: string}[]} [payments] - Default: []\n */\n\n/**\n * A purchase order for products or services.\n * @class Order\n * @extends {Entity}\n */\nexport class Order extends Entity {\n /**\n * @constructor\n * @param {OrderData} data - The data to initialize the Order with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n this.type = data.type;\n if (data.orderNumber !== undefined) this.orderNumber = data.orderNumber;\n this.status = data.status;\n if (data.userId !== undefined) this.userId = data.userId;\n if (data.reservationId !== undefined)\n this.reservationId = data.reservationId;\n if (data.date !== undefined) this.date = data.date;\n if (data.items !== undefined) this.items = data.items;\n if (data.taxes !== undefined) this.taxes = data.taxes;\n if (data.fees !== undefined) this.fees = data.fees;\n if (data.delivery !== undefined) this.delivery = data.delivery;\n if (data.payments !== undefined) this.payments = data.payments;\n }\n\n getSubTotal() {\n return this.items.reduce((acc, item) => {\n const qty = item.quantity || 1;\n return acc + item.price * qty;\n }, 0);\n }\n getTaxTotal() {\n const taxes = this.taxes;\n if (!taxes) return 0;\n return this.items.reduce((acc, item) => {\n if (!item.taxClass) return acc;\n const tax = taxes.find((t) => t.class === item.taxClass);\n if (!tax) return acc;\n const { rateType, rate } = tax;\n if (rateType === \"percentage\") {\n return acc + item.price * rate;\n }\n if (rateType === \"flat\") {\n return acc + rate;\n }\n return acc + rate;\n }, 0);\n }\n getDeliveryTotal() {\n const delivery = this.delivery;\n if (!delivery) return 0;\n return this.items.reduce((acc, item) => {\n if (!item.deliveryClass) return acc;\n const d = delivery.find((d) => d.class === item.deliveryClass);\n if (!d) return acc;\n const { rateType, rate } = d;\n if (rateType === \"percentage\") {\n return acc + item.price * rate;\n }\n return acc + rate;\n }, 0);\n }\n getFeesTotal() {\n const fees = this.fees;\n return fees.reduce((acc, fee) => {\n return acc + fee.price;\n }, 0);\n }\n getTotal() {\n return (\n this.getSubTotal() +\n this.getTaxTotal() +\n this.getDeliveryTotal() +\n this.getFeesTotal()\n );\n }\n getPaymentsTotal() {\n return this.payments.reduce((acc, payment) => {\n return acc + payment.amount;\n }, 0);\n }\n getBalance() {\n return this.getTotal() - this.getPaymentsTotal();\n }\n}\n\nObject.defineProperty(Order.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"order.json\",\n title: \"Order\",\n description: \"A purchase order for products or services.\",\n type: \"object\",\n required: [\"type\", \"status\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"order\", enum: [\"order\"] },\n orderNumber: { type: \"string\" },\n status: {\n type: \"string\",\n enum: [\n \"draft\",\n \"pendingPayment\",\n \"processing\",\n \"outForDelivery\",\n \"completed\",\n \"paymentFailed\",\n \"cancelled\",\n \"refunded\",\n ],\n },\n userId: {\n $ref: \"definitions.json#/definitions/id\",\n description: \"User id of purchaser\",\n },\n reservationId: {\n $ref: \"definitions.json#/definitions/id\",\n description: \"Reservation id if the order is for a reservation\",\n },\n date: { $ref: \"definitions.json#/definitions/date\" },\n items: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"name\", \"price\"],\n properties: {\n additionalProperties: false,\n name: { type: \"string\" },\n sku: { type: \"string\" },\n quantity: { type: \"number\", default: 1 },\n price: { type: \"number\" },\n taxClass: { type: \"string\" },\n deliveryClass: { type: \"string\" },\n productId: { type: \"string\" },\n },\n },\n },\n taxes: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"name\", \"rate\"],\n properties: {\n additionalProperties: false,\n name: { type: \"string\" },\n class: { type: \"string\" },\n rateType: {\n type: \"string\",\n enum: [\"percentage\", \"flat\"],\n default: \"percentage\",\n },\n rate: { type: \"number\" },\n total: { type: \"number\" },\n },\n },\n },\n fees: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"name\", \"price\"],\n properties: {\n additionalProperties: false,\n name: { type: \"string\" },\n price: { type: \"number\" },\n },\n },\n },\n delivery: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"name\", \"rate\"],\n properties: {\n additionalProperties: false,\n name: { type: \"string\" },\n class: { type: \"string\" },\n rateType: {\n type: \"string\",\n enum: [\"percentage\", \"flat\"],\n default: \"percentage\",\n },\n rate: { type: \"number\" },\n total: { type: \"number\" },\n },\n },\n },\n payments: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n properties: {\n method: {\n type: \"string\",\n enum: [\n \"folio\",\n \"invoice\",\n \"amex\",\n \"visa\",\n \"masterCard\",\n \"maestro\",\n \"discover\",\n \"diners\",\n \"jcb\",\n \"applePay\",\n \"alipay\",\n \"chinaUnionPay\",\n \"vpay\",\n ],\n },\n name: { type: \"string\" },\n date: { $ref: \"definitions.json#/definitions/date\" },\n amount: { type: \"number\" },\n transactionReference: { type: \"string\" },\n },\n },\n },\n },\n },\n});\n\nObject.defineProperty(Order.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateOrganization as validate } from \"../validate\";\n\n/**\n * @typedef {Object} OrganizationData An organization is a group or entity that subscribes to Kohost software.\n * @property {string} [id] - Identifier of the object.\n * @property {\"organization\"} [type] - Default: \"organization\"\n * @property {number} accountNumber\n * @property {string} name\n * @property {string[]} [properties]\n * @property {string} [hostname]\n * @property {{name?: string, short_name?: string, scope?: string, start_url?: string, themeColor?: string, backgroundColor?: string, display?: (\"fullscreen\"|\"standalone\"|\"minimal-ui\"|\"browser\"), orientation?: (\"portrait\"|\"landscape\"), splash?: {src?: string, type?: string, sizes?: string}, icons?: {src?: string, sizes?: string, type?: string}[], logo?: {src?: string, type?: string, sizes?: string}}} [appManifest] - 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\"}}\n * @property {string} [appManifest.name]\n * @property {string} [appManifest.short_name]\n * @property {string} [appManifest.scope]\n * @property {string} [appManifest.start_url]\n * @property {string} [appManifest.themeColor]\n * @property {string} [appManifest.backgroundColor]\n * @property {(\"fullscreen\"|\"standalone\"|\"minimal-ui\"|\"browser\")} [appManifest.display] - Default: \"fullscreen\"\n * @property {(\"portrait\"|\"landscape\")} [appManifest.orientation] - Default: \"portrait\"\n * @property {{src?: string, type?: string, sizes?: string}} [appManifest.splash]\n * @property {string} [appManifest.splash.src]\n * @property {string} [appManifest.splash.type]\n * @property {string} [appManifest.splash.sizes]\n * @property {{src?: string, sizes?: string, type?: string}[]} [appManifest.icons]\n * @property {{src?: string, type?: string, sizes?: string}} [appManifest.logo]\n * @property {string} [appManifest.logo.src]\n * @property {string} [appManifest.logo.type]\n * @property {string} [appManifest.logo.sizes]\n * @property {{nextTicketNumber?: (string|number)}} [tickets]\n * @property {(string|number)} [tickets.nextTicketNumber] - Default: 1\n * @property {object} [credentials]\n * @property {(string|object)} [createdAt]\n * @property {(string|object)} [updatedAt]\n */\n\n/**\n * An organization is a group or entity that subscribes to Kohost software.\n * @class Organization\n * @extends {Entity}\n */\nexport class Organization extends Entity {\n /**\n * @constructor\n * @param {OrganizationData} data - The data to initialize the Organization with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n this.accountNumber = data.accountNumber;\n this.name = data.name;\n if (data.properties !== undefined) this.properties = data.properties;\n if (data.hostname !== undefined) this.hostname = data.hostname;\n if (data.appManifest !== undefined) this.appManifest = data.appManifest;\n if (data.tickets !== undefined) this.tickets = data.tickets;\n if (data.credentials !== undefined) this.credentials = data.credentials;\n if (data.createdAt !== undefined) this.createdAt = data.createdAt;\n if (data.updatedAt !== undefined) this.updatedAt = data.updatedAt;\n }\n}\n\nObject.defineProperty(Organization.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"organization.json\",\n title: \"Organization\",\n type: \"object\",\n description:\n \"An organization is a group or entity that subscribes to Kohost software.\",\n required: [\"accountNumber\", \"name\"],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"organization\", enum: [\"organization\"] },\n accountNumber: { type: [\"number\", \"null\"], minimum: 10000 },\n name: { type: \"string\" },\n properties: { type: \"array\", items: { type: \"string\" } },\n hostname: { type: [\"string\", \"null\"] },\n appManifest: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n short_name: { type: \"string\" },\n scope: { type: \"string\" },\n start_url: { type: \"string\" },\n themeColor: { type: \"string\" },\n backgroundColor: { type: \"string\" },\n display: {\n type: \"string\",\n enum: [\"fullscreen\", \"standalone\", \"minimal-ui\", \"browser\"],\n default: \"fullscreen\",\n },\n orientation: {\n type: \"string\",\n enum: [\"portrait\", \"landscape\"],\n default: \"portrait\",\n },\n splash: {\n type: \"object\",\n properties: {\n src: { type: \"string\" },\n type: { type: \"string\" },\n sizes: { type: \"string\" },\n },\n },\n icons: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n src: { type: \"string\" },\n sizes: { type: \"string\" },\n type: { type: \"string\" },\n },\n },\n },\n logo: {\n type: \"object\",\n properties: {\n src: { type: \"string\" },\n type: { type: \"string\" },\n sizes: { type: \"string\" },\n },\n },\n },\n default: {\n name: \"Kohost\",\n short_name: \"Kohost\",\n start_url: \"/\",\n scope: \"/\",\n display: \"fullscreen\",\n orientation: \"portrait\",\n theme_color: \"#1d1f22\",\n background_color: \"#1d1f22\",\n icons: [\n {\n src: \"https://images.kohost.io/cdn-cgi/imagedelivery/vcVX2aBwdFSYr66spcFKaA/9c85047f-ccba-4b1c-3070-5463fbe93b00/w=512\",\n sizes: \"512x512\",\n type: \"image/png\",\n },\n ],\n splash: {\n src: \"https://images.kohost.io/cdn-cgi/imagedelivery/vcVX2aBwdFSYr66spcFKaA/034fb112-5326-4d37-373e-d1cc2a4d0400/w=1500\",\n sizes: \"1500x800\",\n type: \"image/jpg\",\n },\n logo: {\n src: \"https://images.kohost.io/cdn-cgi/imagedelivery/vcVX2aBwdFSYr66spcFKaA/1e54c54d-3bac-4745-f46f-c2f98036af00/h=75\",\n sizes: \"300x75\",\n type: \"image/png\",\n },\n },\n },\n tickets: {\n type: \"object\",\n properties: {\n nextTicketNumber: { type: [\"string\", \"integer\"], default: 1 },\n },\n },\n credentials: { type: \"object\", additionalProperties: true },\n createdAt: { $ref: \"definitions.json#/definitions/createdAt\" },\n updatedAt: { $ref: \"definitions.json#/definitions/updatedAt\" },\n },\n },\n});\n\nObject.defineProperty(Organization.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validatePayment as validate } from \"../validate\";\n\n/**\n * @typedef {Object} PaymentData\n * @property {string} [id] - Identifier of the object.\n * @property {(\"amex\"|\"visa\"|\"masterCard\"|\"maestro\"|\"discover\"|\"diners\"|\"jcb\"|\"applePay\"|\"alipay\"|\"chinaUnionPay\"|\"vpay\")} type\n * @property {boolean} [enabled] - Default: true\n * @property {string} [storageData]\n * @property {string} maskedNumber\n * @property {string} [issued]\n * @property {string} expires\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n *\n * @class Payment\n * @extends {Entity}\n */\nexport class Payment extends Entity {\n /**\n * @constructor\n * @param {PaymentData} data - The data to initialize the Payment with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n this.type = data.type;\n if (data.enabled !== undefined) this.enabled = data.enabled;\n if (data.storageData !== undefined) this.storageData = data.storageData;\n this.maskedNumber = data.maskedNumber;\n if (data.issued !== undefined) this.issued = data.issued;\n this.expires = data.expires;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n}\n\nObject.defineProperty(Payment.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"payment.json\",\n title: \"Payment\",\n type: \"object\",\n required: [\"type\", \"maskedNumber\", \"expires\"],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: {\n type: \"string\",\n enum: [\n \"amex\",\n \"visa\",\n \"masterCard\",\n \"maestro\",\n \"discover\",\n \"diners\",\n \"jcb\",\n \"applePay\",\n \"alipay\",\n \"chinaUnionPay\",\n \"vpay\",\n ],\n },\n enabled: { type: \"boolean\", default: true },\n storageData: { type: [\"string\", \"null\"] },\n maskedNumber: { type: \"string\" },\n issued: { type: [\"string\", \"null\"] },\n expires: { type: \"string\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n },\n});\n\nObject.defineProperty(Payment.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validatePolicy as validate } from \"../validate\";\n\n/**\n * @typedef {Object} PolicyData A policy is a set of permissions that can be applied to a user to limit their access to resources.\n * @property {string} [id] - Identifier of the object.\n * @property {\"policy\"} type - Default: \"policy\"\n * @property {\"user\"} discriminator\n * @property {string} name\n * @property {string} [description]\n * @property {string} organizationId\n * @property {string} propertyId\n * @property {{entities: string[], effect: (\"Allow\"|\"Deny\")}[]} permissions\n */\n\n/**\n * A policy is a set of permissions that can be applied to a user to limit their access to resources.\n * @class Policy\n * @extends {Entity}\n */\nexport class Policy extends Entity {\n /**\n * @constructor\n * @param {PolicyData} data - The data to initialize the Policy with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n this.type = data.type;\n this.discriminator = data.discriminator;\n this.name = data.name;\n if (data.description !== undefined) this.description = data.description;\n this.organizationId = data.organizationId;\n this.propertyId = data.propertyId;\n this.permissions = data.permissions;\n }\n}\n\nObject.defineProperty(Policy.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"policy.json\",\n title: \"Policy\",\n description:\n \"A policy is a set of permissions that can be applied to a user to limit their access to resources.\",\n type: \"object\",\n required: [\n \"name\",\n \"type\",\n \"organizationId\",\n \"propertyId\",\n \"permissions\",\n \"discriminator\",\n ],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"policy\", enum: [\"policy\"] },\n discriminator: { type: \"string\", enum: [\"user\"] },\n name: { type: \"string\", minLength: 1 },\n description: { type: \"string\" },\n organizationId: { type: \"string\" },\n propertyId: { type: \"string\" },\n permissions: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"entities\", \"effect\"],\n properties: {\n entities: {\n type: \"array\",\n items: { type: \"string\", pattern: \"^[^:]+(:.+)+$\" },\n },\n effect: { type: \"string\", enum: [\"Allow\", \"Deny\"] },\n },\n },\n },\n },\n },\n});\n\nObject.defineProperty(Policy.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateProduct as validate } from \"../validate\";\n\n/**\n * @typedef {Object} ProductData\n * @property {string} [id] - Identifier of the object.\n * @property {\"product\"} [type] - Default: \"product\"\n * @property {string} name\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {string} [description]\n * @property {number} price\n * @property {number} [tax]\n * @property {{id?: any, type: \"mediaFile\", name?: string, fileHash?: string, category?: string, mimeType?: (\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\"), data?: string, url?: string, width?: number, height?: number, size?: number, uploadUrl?: string, uploadUrlExpires?: any, createdBy?: string, systemId?: any}} [image] - Any media file\n * @property {string} [category]\n * @property {string} [imageUrl]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n *\n * @class Product\n * @extends {Entity}\n */\nexport class Product extends Entity {\n /**\n * @constructor\n * @param {ProductData} data - The data to initialize the Product with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n this.name = data.name;\n this.driver = data.driver;\n if (data.description !== undefined) this.description = data.description;\n this.price = data.price;\n if (data.tax !== undefined) this.tax = data.tax;\n if (data.image !== undefined) this.image = data.image;\n if (data.category !== undefined) this.category = data.category;\n if (data.imageUrl !== undefined) this.imageUrl = data.imageUrl;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n}\n\nObject.defineProperty(Product.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"product.json\",\n title: \"Product\",\n type: \"object\",\n required: [\"name\", \"price\", \"driver\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"product\", enum: [\"product\"] },\n name: { type: \"string\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n description: { type: \"string\" },\n price: { type: \"number\" },\n tax: { type: [\"number\", \"null\"] },\n image: { $ref: \"mediaFile.json\" },\n category: { type: \"string\" },\n imageUrl: { type: \"string\", format: \"uri\", pattern: \"^https?://\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n },\n});\n\nObject.defineProperty(Product.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateProperty as validate } from \"../validate\";\n\n/**\n * @typedef {Object} PropertyData A property is a physical asset or building\n * @property {string} id - Identifier of the object.\n * @property {string} name\n * @property {\"property\"} type - Default: \"property\"\n * @property {(\"hospitality\"|\"education\"|\"commercial\"|\"storage\")} discriminator\n * @property {string} organization - Reference (id) to the organization that owns this property\n * @property {string[]} [departments]\n * @property {boolean} [testModeEnabled]\n * @property {{notificationEmails?: string[], notificationEmailDomains?: string[]}} [testMode]\n * @property {string[]} [testMode.notificationEmails] - Only users with these email addresses will receive notifications in test mode, including sms, email, or push.\n * @property {string[]} [testMode.notificationEmailDomains] - Only users with email addreses ending in these domains will receive notifications in test mode, including sms, email, or push.\n * @property {string} timezone - IANA timezone string\n * @property {string} [smsNumber]\n * @property {string} [checkInTime]\n * @property {string} [checkOutTime]\n * @property {{id?: string, line1?: string, line2?: string, line3?: string, city?: string, state?: string, postalCode?: string, countryCode?: string}} [address]\n * @property {number} [latitude]\n * @property {number} [longitude]\n * @property {{RoomControl?: {disabledSystems?: (\"climate\"|\"lights\"|\"shades\"|\"tv\"|\"doors\")[], excludedDeviceIds?: string[], commonAreas?: {spaces?: string[]}, alarmConfig?: object}, CheckIn?: {payment?: any, identification?: any, earlyCheckIn?: {dynamic: boolean, minimumPrice?: number, maximumPrice?: number, priceRatioPerHour?: number, minimumTime?: string}, roomUpgrades?: any, pet?: any, promos?: any}, CheckOut?: {lateCheckOut?: {dynamic: boolean, minimumPrice?: number, maximumPrice?: number, priceRatioPerHour?: number}}, Concierge?: {timeTracking?: boolean, tipping?: boolean, feedback?: boolean, ratings?: boolean, newTicketCCs?: string[], newMessageChannel?: (\"sms\"|\"email\"), quickServices?: {name: string, description: string, department?: string, image: {id?: any, type: \"mediaFile\", name?: string, fileHash?: string, category?: string, mimeType?: (\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\"), data?: string, url?: string, width?: number, height?: number, size?: number, uploadUrl?: string, uploadUrlExpires?: any, createdBy?: string, systemId?: any}}[], issues?: {syncWithPropertyId?: string}}, DigitalKey?: {system?: (\"salto\"|\"dormakaba\"), systemOnline?: boolean, systemConfig?: {legicUrl?: string, legicWalletName?: string, legicAppId?: number, legicTechUsername?: string, legicTechPassword?: string}, enableApp?: boolean, branding?: {logo?: string, gradient?: string[], highlightedGradient?: string[]}}, SOS?: {active?: boolean, activeEmergencies?: (\"medical\"|\"fire\"|\"suspiciousPerson\"|\"other\"|\"conflict\"|\"shooter\")[]}, Elevator?: object, Experiences?: object, Dining?: {system?: \"gotab\", systemConfig?: {landingUrl?: string, includeUserDetails?: boolean}}, Rentals?: object, Shop?: object, Spa?: object, Valet?: object}} [appFeatures] - Default: {\"RoomControl\":{}}\n * @property {{disabledSystems?: (\"climate\"|\"lights\"|\"shades\"|\"tv\"|\"doors\")[], excludedDeviceIds?: string[], commonAreas?: {spaces?: string[]}, alarmConfig?: object}} [appFeatures.RoomControl]\n * @property {(\"climate\"|\"lights\"|\"shades\"|\"tv\"|\"doors\")[]} [appFeatures.RoomControl.disabledSystems]\n * @property {string[]} [appFeatures.RoomControl.excludedDeviceIds] - Default: []\n * @property {{spaces?: string[]}} [appFeatures.RoomControl.commonAreas]\n * @property {string[]} [appFeatures.RoomControl.commonAreas.spaces]\n * @property {object} [appFeatures.RoomControl.alarmConfig]\n * @property {{payment?: any, identification?: any, earlyCheckIn?: {dynamic: boolean, minimumPrice?: number, maximumPrice?: number, priceRatioPerHour?: number, minimumTime?: string}, roomUpgrades?: any, pet?: any, promos?: any}} [appFeatures.CheckIn]\n * @property {any} [appFeatures.CheckIn.payment]\n * @property {any} [appFeatures.CheckIn.identification]\n * @property {{dynamic: boolean, minimumPrice?: number, maximumPrice?: number, priceRatioPerHour?: number, minimumTime?: string}} [appFeatures.CheckIn.earlyCheckIn]\n * @property {boolean} appFeatures.CheckIn.earlyCheckIn.dynamic - Default: false\n * @property {number} [appFeatures.CheckIn.earlyCheckIn.minimumPrice] - Default: 10\n * @property {number} [appFeatures.CheckIn.earlyCheckIn.maximumPrice] - Default: 50\n * @property {number} [appFeatures.CheckIn.earlyCheckIn.priceRatioPerHour] - Default: 0.1\n * @property {string} [appFeatures.CheckIn.earlyCheckIn.minimumTime]\n * @property {any} [appFeatures.CheckIn.roomUpgrades]\n * @property {any} [appFeatures.CheckIn.pet]\n * @property {any} [appFeatures.CheckIn.promos]\n * @property {{lateCheckOut?: {dynamic: boolean, minimumPrice?: number, maximumPrice?: number, priceRatioPerHour?: number}}} [appFeatures.CheckOut]\n * @property {{dynamic: boolean, minimumPrice?: number, maximumPrice?: number, priceRatioPerHour?: number}} [appFeatures.CheckOut.lateCheckOut]\n * @property {boolean} appFeatures.CheckOut.lateCheckOut.dynamic - Default: false\n * @property {number} [appFeatures.CheckOut.lateCheckOut.minimumPrice] - Default: 10\n * @property {number} [appFeatures.CheckOut.lateCheckOut.maximumPrice] - Default: 50\n * @property {number} [appFeatures.CheckOut.lateCheckOut.priceRatioPerHour] - Default: 0.1\n * @property {{timeTracking?: boolean, tipping?: boolean, feedback?: boolean, ratings?: boolean, newTicketCCs?: string[], newMessageChannel?: (\"sms\"|\"email\"), quickServices?: {name: string, description: string, department?: string, image: {id?: any, type: \"mediaFile\", name?: string, fileHash?: string, category?: string, mimeType?: (\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\"), data?: string, url?: string, width?: number, height?: number, size?: number, uploadUrl?: string, uploadUrlExpires?: any, createdBy?: string, systemId?: any}}[], issues?: {syncWithPropertyId?: string}}} [appFeatures.Concierge]\n * @property {boolean} [appFeatures.Concierge.timeTracking] - Default: false\n * @property {boolean} [appFeatures.Concierge.tipping] - Default: false\n * @property {boolean} [appFeatures.Concierge.feedback] - Default: true\n * @property {boolean} [appFeatures.Concierge.ratings] - Default: true\n * @property {string[]} [appFeatures.Concierge.newTicketCCs] - Default: []\n * @property {(\"sms\"|\"email\")} [appFeatures.Concierge.newMessageChannel] - Determines how users should be notified of new messages in the concierge system. Default: \"sms\"\n * @property {{name: string, description: string, department?: string, image: {id?: any, type: \"mediaFile\", name?: string, fileHash?: string, category?: string, mimeType?: (\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\"), data?: string, url?: string, width?: number, height?: number, size?: number, uploadUrl?: string, uploadUrlExpires?: any, createdBy?: string, systemId?: any}}[]} [appFeatures.Concierge.quickServices]\n * @property {{syncWithPropertyId?: string}} [appFeatures.Concierge.issues]\n * @property {string} [appFeatures.Concierge.issues.syncWithPropertyId]\n * @property {{system?: (\"salto\"|\"dormakaba\"), systemOnline?: boolean, systemConfig?: {legicUrl?: string, legicWalletName?: string, legicAppId?: number, legicTechUsername?: string, legicTechPassword?: string}, enableApp?: boolean, branding?: {logo?: string, gradient?: string[], highlightedGradient?: string[]}}} [appFeatures.DigitalKey]\n * @property {(\"salto\"|\"dormakaba\")} [appFeatures.DigitalKey.system]\n * @property {boolean} [appFeatures.DigitalKey.systemOnline] - Default: false\n * @property {{legicUrl?: string, legicWalletName?: string, legicAppId?: number, legicTechUsername?: string, legicTechPassword?: string}} [appFeatures.DigitalKey.systemConfig] - Default: {}\n * @property {string} [appFeatures.DigitalKey.systemConfig.legicUrl]\n * @property {string} [appFeatures.DigitalKey.systemConfig.legicWalletName]\n * @property {number} [appFeatures.DigitalKey.systemConfig.legicAppId]\n * @property {string} [appFeatures.DigitalKey.systemConfig.legicTechUsername]\n * @property {string} [appFeatures.DigitalKey.systemConfig.legicTechPassword]\n * @property {boolean} [appFeatures.DigitalKey.enableApp]\n * @property {{logo?: string, gradient?: string[], highlightedGradient?: string[]}} [appFeatures.DigitalKey.branding]\n * @property {string} [appFeatures.DigitalKey.branding.logo]\n * @property {string[]} [appFeatures.DigitalKey.branding.gradient]\n * @property {string[]} [appFeatures.DigitalKey.branding.highlightedGradient]\n * @property {{active?: boolean, activeEmergencies?: (\"medical\"|\"fire\"|\"suspiciousPerson\"|\"other\"|\"conflict\"|\"shooter\")[]}} [appFeatures.SOS]\n * @property {boolean} [appFeatures.SOS.active]\n * @property {(\"medical\"|\"fire\"|\"suspiciousPerson\"|\"other\"|\"conflict\"|\"shooter\")[]} [appFeatures.SOS.activeEmergencies]\n * @property {object} [appFeatures.Elevator]\n * @property {object} [appFeatures.Experiences]\n * @property {{system?: \"gotab\", systemConfig?: {landingUrl?: string, includeUserDetails?: boolean}}} [appFeatures.Dining]\n * @property {\"gotab\"} [appFeatures.Dining.system]\n * @property {{landingUrl?: string, includeUserDetails?: boolean}} [appFeatures.Dining.systemConfig]\n * @property {string} [appFeatures.Dining.systemConfig.landingUrl]\n * @property {boolean} [appFeatures.Dining.systemConfig.includeUserDetails]\n * @property {object} [appFeatures.Rentals]\n * @property {object} [appFeatures.Shop]\n * @property {object} [appFeatures.Spa]\n * @property {object} [appFeatures.Valet]\n * @property {{email?: {enabled?: boolean}, sms?: {enabled?: boolean}, push?: {enabled?: boolean}}} [notifications] - Default: {\"email\":{\"enabled\":false},\"sms\":{\"enabled\":false},\"push\":{\"enabled\":false}}\n * @property {{enabled?: boolean}} [notifications.email]\n * @property {boolean} [notifications.email.enabled]\n * @property {{enabled?: boolean}} [notifications.sms]\n * @property {boolean} [notifications.sms.enabled]\n * @property {{enabled?: boolean}} [notifications.push]\n * @property {boolean} [notifications.push.enabled]\n * @property {object} [credentials]\n */\n\n/**\n * A property is a physical asset or building\n * @class Property\n * @extends {Entity}\n */\nexport class Property extends Entity {\n /**\n * @constructor\n * @param {PropertyData} data - The data to initialize the Property with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n this.name = data.name;\n this.type = data.type;\n this.discriminator = data.discriminator;\n this.organization = data.organization;\n if (data.departments !== undefined) this.departments = data.departments;\n if (data.testModeEnabled !== undefined)\n this.testModeEnabled = data.testModeEnabled;\n if (data.testMode !== undefined) this.testMode = data.testMode;\n this.timezone = data.timezone;\n if (data.smsNumber !== undefined) this.smsNumber = data.smsNumber;\n if (data.checkInTime !== undefined) this.checkInTime = data.checkInTime;\n if (data.checkOutTime !== undefined) this.checkOutTime = data.checkOutTime;\n if (data.address !== undefined) this.address = data.address;\n if (data.latitude !== undefined) this.latitude = data.latitude;\n if (data.longitude !== undefined) this.longitude = data.longitude;\n if (data.appFeatures !== undefined) this.appFeatures = data.appFeatures;\n if (data.notifications !== undefined)\n this.notifications = data.notifications;\n if (data.credentials !== undefined) this.credentials = data.credentials;\n }\n}\n\nObject.defineProperty(Property.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"property.json\",\n title: \"Property\",\n type: \"object\",\n description: \"A property is a physical asset or building\",\n required: [\n \"id\",\n \"name\",\n \"type\",\n \"organization\",\n \"timezone\",\n \"discriminator\",\n ],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n type: { type: \"string\", default: \"property\", enum: [\"property\"] },\n discriminator: {\n type: \"string\",\n enum: [\"hospitality\", \"education\", \"commercial\", \"storage\"],\n },\n organization: {\n type: [\"string\", \"null\"],\n description:\n \"Reference (id) to the organization that owns this property\",\n },\n departments: { type: \"array\", items: { type: \"string\" } },\n testModeEnabled: { type: \"boolean\" },\n testMode: {\n type: \"object\",\n properties: {\n notificationEmails: {\n type: \"array\",\n items: { type: \"string\" },\n description:\n \"Only users with these email addresses will receive notifications in test mode, including sms, email, or push.\",\n },\n notificationEmailDomains: {\n type: \"array\",\n items: { type: \"string\" },\n description:\n \"Only users with email addreses ending in these domains will receive notifications in test mode, including sms, email, or push.\",\n },\n },\n },\n timezone: {\n type: \"string\",\n description: \"IANA timezone string\",\n pattern: \"^([a-zA-Z]+/[a-zA-Z_]+)$\",\n examples: [\"America/New_York\", \"America/Los_Angeles\"],\n },\n smsNumber: { type: \"string\" },\n checkInTime: { type: \"string\" },\n checkOutTime: { type: \"string\" },\n address: { $ref: \"definitions.json#/definitions/address\" },\n latitude: { type: \"number\" },\n longitude: { type: \"number\" },\n appFeatures: {\n type: \"object\",\n properties: {\n RoomControl: {\n type: \"object\",\n properties: {\n disabledSystems: {\n type: \"array\",\n items: {\n type: \"string\",\n enum: [\"climate\", \"lights\", \"shades\", \"tv\", \"doors\"],\n },\n },\n excludedDeviceIds: {\n type: \"array\",\n items: { type: \"string\" },\n default: [],\n },\n commonAreas: {\n type: \"object\",\n properties: {\n spaces: { type: \"array\", items: { type: \"string\" } },\n },\n },\n alarmConfig: {\n type: \"object\",\n patternProperties: {\n \"^[a-zA-Z0-9]+$\": {\n type: \"object\",\n properties: {\n zoneLockMap: {\n type: \"object\",\n description: \"Maps zone numbers to lock ids\",\n additionalProperties: { type: \"string\" },\n },\n },\n },\n },\n examples: [\n {\n wZz7hucY: {\n zoneLockMap: {\n 1: \"wc87hucc\",\n 2: \"bc86hzxc\",\n 3: \"zv5ah5jv\",\n },\n },\n },\n ],\n },\n },\n additionalProperties: false,\n },\n CheckIn: {\n type: \"object\",\n properties: {\n payment: {},\n identification: {},\n earlyCheckIn: {\n type: \"object\",\n required: [\"dynamic\"],\n properties: {\n dynamic: { type: \"boolean\", default: false },\n minimumPrice: { type: \"number\", default: 10 },\n maximumPrice: { type: \"number\", default: 50 },\n priceRatioPerHour: { type: \"number\", default: 0.1 },\n minimumTime: { type: \"string\" },\n },\n },\n roomUpgrades: {},\n pet: {},\n promos: {},\n },\n },\n CheckOut: {\n type: \"object\",\n properties: {\n lateCheckOut: {\n type: \"object\",\n required: [\"dynamic\"],\n properties: {\n dynamic: { type: \"boolean\", default: false },\n minimumPrice: { type: \"number\", default: 10 },\n maximumPrice: { type: \"number\", default: 50 },\n priceRatioPerHour: { type: \"number\", default: 0.1 },\n },\n },\n },\n },\n Concierge: {\n type: \"object\",\n properties: {\n timeTracking: { type: \"boolean\", default: false },\n tipping: { type: \"boolean\", default: false },\n feedback: { type: \"boolean\", default: true },\n ratings: { type: \"boolean\", default: true },\n newTicketCCs: {\n type: \"array\",\n items: { type: \"string\" },\n default: [],\n },\n newMessageChannel: {\n type: [\"string\", \"null\"],\n enum: [\"sms\", \"email\"],\n default: \"sms\",\n description:\n \"Determines how users should be notified of new messages in the concierge system\",\n },\n quickServices: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n description: { type: \"string\" },\n department: { type: \"string\" },\n image: { $ref: \"mediaFile.json\" },\n },\n required: [\"name\", \"description\", \"image\"],\n },\n },\n issues: {\n type: \"object\",\n properties: { syncWithPropertyId: { type: \"string\" } },\n },\n },\n },\n DigitalKey: {\n type: \"object\",\n properties: {\n system: { type: \"string\", enum: [\"salto\", \"dormakaba\"] },\n systemOnline: { type: \"boolean\", default: false },\n systemConfig: {\n type: \"object\",\n properties: {\n legicUrl: { type: \"string\", format: \"uri\" },\n legicWalletName: { type: \"string\" },\n legicAppId: { type: \"number\" },\n legicTechUsername: { type: \"string\" },\n legicTechPassword: { type: \"string\" },\n },\n additionalProperties: false,\n default: {},\n },\n enableApp: { type: \"boolean\" },\n branding: {\n type: \"object\",\n properties: {\n logo: { type: \"string\", format: \"uri\" },\n gradient: {\n type: \"array\",\n items: {\n type: \"string\",\n pattern: \"^(?!#ffffff)(#[0-9a-fA-F]{6})$\",\n },\n minItems: 2,\n maxItems: 2,\n },\n highlightedGradient: {\n type: \"array\",\n items: {\n type: \"string\",\n pattern: \"^(?!#ffffff)(#[0-9a-fA-F]{6})$\",\n },\n minItems: 2,\n maxItems: 3,\n },\n },\n },\n },\n },\n SOS: {\n type: \"object\",\n properties: {\n active: { type: \"boolean\" },\n activeEmergencies: {\n type: \"array\",\n items: {\n type: \"string\",\n enum: [\n \"medical\",\n \"fire\",\n \"suspiciousPerson\",\n \"other\",\n \"conflict\",\n \"shooter\",\n ],\n },\n },\n },\n },\n Elevator: { type: \"object\" },\n Experiences: { type: \"object\" },\n Dining: {\n type: \"object\",\n properties: {\n system: { type: \"string\", enum: [\"gotab\"] },\n systemConfig: {\n type: \"object\",\n properties: {\n landingUrl: { type: \"string\", format: \"uri\" },\n includeUserDetails: { type: \"boolean\" },\n },\n additionalProperties: false,\n },\n },\n },\n Rentals: { type: \"object\" },\n Shop: { type: \"object\" },\n Spa: { type: \"object\" },\n Valet: { type: \"object\" },\n },\n additionalProperties: false,\n default: { RoomControl: {} },\n },\n notifications: {\n type: \"object\",\n properties: {\n email: {\n type: \"object\",\n properties: { enabled: { type: \"boolean\" } },\n additionalProperties: false,\n },\n sms: {\n type: \"object\",\n properties: { enabled: { type: \"boolean\" } },\n additionalProperties: false,\n },\n push: {\n type: \"object\",\n properties: { enabled: { type: \"boolean\" } },\n additionalProperties: false,\n },\n },\n additionalProperties: false,\n default: {\n email: { enabled: false },\n sms: { enabled: false },\n push: { enabled: false },\n },\n },\n credentials: { type: \"object\", additionalProperties: true },\n },\n },\n});\n\nObject.defineProperty(Property.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateReservation as validate } from \"../validate\";\n\n/**\n * @typedef {Object} ReservationData \n * @property {string} [id] - Identifier of the object.\n * @property {(\"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\")} [driver] - Driver used to communicate with the object.\n * @property {string} [primaryGuest]\n * @property {\"reservation\"} type - Default: \"reservation\"\n * @property {string[]} [sharedGuests]\n * @property {string} [spaceCategory]\n * @property {string} [space]\n * @property {string} [previousSpace] - Used when there was a space assigned and it changes. Default: null\n * @property {(\"reserved\"|\"checkedIn\"|\"checkedOut\"|\"cancelled\"|\"noShow\"|\"enquired\"|\"requested\"|\"optional\")} status - 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)\n * @property {boolean} [mobileCheckInSpaceCategoryChanged] - spaceCategory has changed from original.\n * @property {boolean} [mobileCheckInSpaceChanged]\n * @property {(\"ready\"|\"blocked\"|\"preArrivalStepsRequired\"|\"spaceNotAssigned\"|\"spaceNotReady\"|\"checkInTimeNotStarted\")} [mobileCheckInStatus]\n * @property {string} [mobileCheckInStatusMessage]\n * @property {string} [confirmationNumber]\n * @property {(string|object)} [expectedCheckInDateTime] - Expected arrival time of guest.\n * @property {(string|object)} checkInDateTime\n * @property {(string|object)} checkOutDateTime\n * @property {number} [adultCount] - Default: 1\n * @property {number} [childCount] - Default: 0\n * @property {{id?: string, price?: number, unit?: (\"night\"|\"stay\"|\"hour\"), isUpgrade?: boolean}[]} [spaceCategoryAvailabilites]\n * @property {{id?: string, name?: string, date?: string, price?: number, tax?: number}[]} [revenue]\n * @property {boolean} [rateSuppressed]\n * @property {string} [payment]\n * @property {string} [company]\n * @property {string} [travelAgent]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {{}} [metadata]\n * @property {(string|object)} [updatedAt]\n */\n\n/**\n *\n * @class Reservation\n * @extends {Entity}\n */\nexport class Reservation extends Entity {\n /**\n * @constructor\n * @param {ReservationData} data - The data to initialize the Reservation with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n if (data.driver !== undefined) this.driver = data.driver;\n if (data.primaryGuest !== undefined) this.primaryGuest = data.primaryGuest;\n this.type = data.type;\n if (data.sharedGuests !== undefined) this.sharedGuests = data.sharedGuests;\n if (data.spaceCategory !== undefined)\n this.spaceCategory = data.spaceCategory;\n if (data.space !== undefined) this.space = data.space;\n if (data.previousSpace !== undefined)\n this.previousSpace = data.previousSpace;\n this.status = data.status;\n if (data.mobileCheckInSpaceCategoryChanged !== undefined)\n this.mobileCheckInSpaceCategoryChanged =\n data.mobileCheckInSpaceCategoryChanged;\n if (data.mobileCheckInSpaceChanged !== undefined)\n this.mobileCheckInSpaceChanged = data.mobileCheckInSpaceChanged;\n if (data.mobileCheckInStatus !== undefined)\n this.mobileCheckInStatus = data.mobileCheckInStatus;\n if (data.mobileCheckInStatusMessage !== undefined)\n this.mobileCheckInStatusMessage = data.mobileCheckInStatusMessage;\n if (data.confirmationNumber !== undefined)\n this.confirmationNumber = data.confirmationNumber;\n if (data.expectedCheckInDateTime !== undefined)\n this.expectedCheckInDateTime = data.expectedCheckInDateTime;\n this.checkInDateTime = data.checkInDateTime;\n this.checkOutDateTime = data.checkOutDateTime;\n if (data.adultCount !== undefined) this.adultCount = data.adultCount;\n if (data.childCount !== undefined) this.childCount = data.childCount;\n if (data.spaceCategoryAvailabilites !== undefined)\n this.spaceCategoryAvailabilites = data.spaceCategoryAvailabilites;\n if (data.revenue !== undefined) this.revenue = data.revenue;\n if (data.rateSuppressed !== undefined)\n this.rateSuppressed = data.rateSuppressed;\n if (data.payment !== undefined) this.payment = data.payment;\n if (data.company !== undefined) this.company = data.company;\n if (data.travelAgent !== undefined) this.travelAgent = data.travelAgent;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.metadata !== undefined) this.metadata = data.metadata;\n if (data.updatedAt !== undefined) this.updatedAt = data.updatedAt;\n }\n\n checkInTime(tz) {\n return new Date(this.checkInDateTime).toLocaleString(\"default\", {\n hour: \"numeric\",\n minute: \"numeric\",\n timeZone: tz,\n });\n }\n checkOutTime(tz) {\n return new Date(this.checkOutDateTime).toLocaleString(\"default\", {\n hour: \"numeric\",\n minute: \"numeric\",\n timeZone: tz,\n });\n }\n getNights() {\n const start = new Date(this.checkInDateTime);\n const end = new Date(this.checkOutDateTime);\n let nights = Math.round((end - start) / (1000 * 60 * 60 * 24));\n if (nights <= 0) {\n nights = 1;\n }\n return nights;\n }\n}\n\nObject.defineProperty(Reservation.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"reservation.json\",\n title: \"Reservation\",\n type: \"object\",\n required: [\"type\", \"status\", \"checkInDateTime\", \"checkOutDateTime\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n primaryGuest: { type: \"string\" },\n type: { type: \"string\", default: \"reservation\", enum: [\"reservation\"] },\n sharedGuests: { type: \"array\", items: { type: \"string\" } },\n spaceCategory: { type: \"string\" },\n space: { type: [\"string\", \"null\"] },\n previousSpace: {\n type: [\"string\", \"null\"],\n default: null,\n description: \"Used when there was a space assigned and it changes\",\n },\n status: {\n type: \"string\",\n enum: [\n \"reserved\",\n \"checkedIn\",\n \"checkedOut\",\n \"cancelled\",\n \"noShow\",\n \"enquired\",\n \"requested\",\n \"optional\",\n ],\n description:\n \" 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)\",\n },\n mobileCheckInSpaceCategoryChanged: {\n type: \"boolean\",\n description: \"spaceCategory has changed from original.\",\n },\n mobileCheckInSpaceChanged: { type: \"boolean\" },\n mobileCheckInStatus: {\n type: \"string\",\n enum: [\n \"ready\",\n \"blocked\",\n \"preArrivalStepsRequired\",\n \"spaceNotAssigned\",\n \"spaceNotReady\",\n \"checkInTimeNotStarted\",\n ],\n },\n mobileCheckInStatusMessage: { type: \"string\" },\n confirmationNumber: { type: \"string\" },\n expectedCheckInDateTime: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n description: \"Expected arrival time of guest.\",\n },\n checkInDateTime: { type: [\"string\", \"object\"], format: \"date-time\" },\n checkOutDateTime: { type: [\"string\", \"object\"], format: \"date-time\" },\n adultCount: { type: \"number\", default: 1, minimum: 1 },\n childCount: { type: \"number\", default: 0 },\n spaceCategoryAvailabilites: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n price: { type: \"number\" },\n unit: { type: \"string\", enum: [\"night\", \"stay\", \"hour\"] },\n isUpgrade: { type: \"boolean\" },\n },\n },\n },\n revenue: { $ref: \"definitions.json#/definitions/revenue\" },\n rateSuppressed: { type: \"boolean\" },\n payment: { type: \"string\" },\n company: { type: \"string\" },\n travelAgent: { type: \"string\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n metadata: { $ref: \"definitions.json#/definitions/metadata\" },\n updatedAt: { $ref: \"definitions.json#/definitions/updatedAt\" },\n },\n },\n});\n\nObject.defineProperty(Reservation.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateRoom as validate } from \"../validate\";\n\n/**\n * @typedef {Object} RoomData A room represents a physical space of controllable IoT devices\n * @property {string} id - Identifier of the object.\n * @property {\"room\"} [type] - Default: \"room\"\n * @property {string} name\n * @property {string} [floor]\n * @property {{id: any, name?: string, type: any, supportedNotifications?: any, notification?: any, driver: any, offline?: boolean, level: number, systemId?: any, watts?: any, icon?: string, modelNumber?: string, serialNumber?: string, firmwareVersion?: string}[]} [dimmers] - Default: []\n * @property {{id: any, name?: string, type: any, discriminator?: (\"light\"|\"fan\"|\"irrigation\"), supportedNotifications?: any, notification?: any, driver: any, offline?: boolean, state: (\"on\"|\"off\"), systemId?: any, watts?: any, icon?: string, modelNumber?: string, serialNumber?: string, firmwareVersion?: string, restoresAt?: string}[]} [switches] - Default: []\n * @property {{id: any, name?: any, type: any, driver: any, offline?: boolean, supportedNotifications?: any, notification?: any, currentTemperature?: number, currentHumidity?: number, hvacMode: string, hvacState: (\"cooling\"|\"heating\"|\"off\"), fanMode: string, fanState: (\"off\"|\"low\"|\"medium\"|\"high\"|\"on\"), temperatureScale: (\"celsius\"|\"fahrenheit\"), humidityScale?: (\"absolute\"|\"relative\"), supportedHvacModes: (\"cool\"|\"heat\"|\"auto\"|\"off\")[], supportedFanModes: (\"auto\"|\"low\"|\"medium\"|\"high\"|\"off\"|\"on\")[], setpoints: {cool?: any, heat?: any, auto?: any}, minAutoDelta?: number, cycleRate?: number, batteryLevel?: any, systemId?: any, watts?: any, icon?: string, modelNumber?: string, serialNumber?: string, firmwareVersion?: string}[]} [thermostats] - Default: []\n * @property {{id: any, name?: string, type: any, offline?: boolean, supportedNotifications?: any, notification?: any, driver: any, state: (\"locked\"|\"unlocked\"), mode?: (\"normal\"|\"autoLock\"|\"emergencyOpen\"|\"emergencyClose\"|\"holdOpen\"|\"lockdown\"), supportedModes?: (\"normal\"|\"autoLock\"|\"emergencyOpen\"|\"emergencyClose\"|\"holdOpen\"|\"lockdown\")[], batteryLevel?: any, systemId?: any, watts?: any, icon?: string, modelNumber?: string, serialNumber?: string, firmwareVersion?: string}[]} [locks] - Default: []\n * @property {{id: any, name?: string, type: any, discriminator?: (\"basic\"|\"variable\"), supportedNotifications?: any, notification?: any, driver: any, offline?: boolean, position: number, systemId?: any, watts?: any, icon?: string, modelNumber?: string, serialNumber?: string, firmwareVersion?: string}[]} [windowCoverings] - Default: []\n * @property {{id: any, name?: string, type: any, supportedNotifications?: any, notification?: any, driver: any, offline?: boolean, supportedStates: (\"privacy\"|\"service\"|\"none\")[], state: string, systemId?: any, watts?: any, icon?: string, modelNumber?: string, serialNumber?: string, firmwareVersion?: string}[]} [courtesy] - Default: []\n * @property {{id: any, name?: string, discriminator?: \"doorStation\", type: \"camera\", offline?: boolean, supportedNotifications?: any, notification?: any, driver: any, liveStreams?: {iframe?: string, hls?: string, webRTC?: string, rtsp?: string}, liveStream?: {id?: string, driver?: (\"cloudflare-stream\"|\"aws-kinesis\"|\"digital-watchdog\"|\"mediamtx\"), allowedOrigins?: string[], authRequired?: boolean, iframe?: string, hls?: string, webRTC?: string, rtsp?: string, previewImage?: string}, systemId?: any, watts?: any, icon?: string, modelNumber?: string, serialNumber?: string, firmwareVersion?: string}[]} [cameras] - Default: []\n * @property {{id: any, type: \"mediaSource\", discriminator: (\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"paSystem\"|\"uncontrolledDevice\"), playlists?: {id?: string, name?: string}[], remote?: (\"MR22GA\"|\"XRT260\"|\"XRT270\"|\"HOF-16K 1.2\"|\"219863500\"|\"SONIFI\"|\"AKB76039803\"|\"BN59-01388A\"), name?: any, driver: any, offline?: boolean, audio: boolean, video: boolean, powerFeedback?: boolean, volumeFeedback?: boolean, muted?: boolean, volume?: number, brightness?: number, contrast?: number, power?: (\"on\"|\"off\"), input?: string, supportedInputs?: string[], supportedOutputs?: string[], command?: (\"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?: any, notification?: any, systemId?: any, watts?: any, icon?: string, modelNumber?: string, serialNumber?: string, firmwareVersion?: string}[]} [mediaSources] - Default: []\n * @property {{id: any, name?: string, type: any, offline?: boolean, driver: any, systemId?: any, supportedNotifications?: any, notification?: any, watts?: any, icon?: string, modelNumber?: string, serialNumber?: string, firmwareVersion?: string}[]} [motionSensors] - Default: []\n * @property {{id: any, name?: string, offline?: boolean, type: \"alarm\", systemId?: any, supportedNotifications?: any, notification?: any, driver: any, areas: {number?: number, name?: string, securityMode?: (\"arming\"|\"disarming\"|\"armed\"|\"disarmed\"|\"alarm\")}[], zones: {number?: number, name?: string, secure?: boolean, bypassed?: boolean}[], chime?: boolean, watts?: any, icon?: string, modelNumber?: string, serialNumber?: string, firmwareVersion?: string, address?: any}[]} [alarms] - Default: []\n * @property {(string|object)} [occupiedAt]\n * @property {(string|object)} [createdAt]\n * @property {(string|object)} [updatedAt]\n */\n\n/**\n * A room represents a physical space of controllable IoT devices\n * @class Room\n * @extends {Entity}\n */\nexport class Room extends Entity {\n /**\n * @constructor\n * @param {RoomData} data - The data to initialize the Room with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n this.name = data.name;\n if (data.floor !== undefined) this.floor = data.floor;\n if (data.dimmers !== undefined) this.dimmers = data.dimmers;\n if (data.switches !== undefined) this.switches = data.switches;\n if (data.thermostats !== undefined) this.thermostats = data.thermostats;\n if (data.locks !== undefined) this.locks = data.locks;\n if (data.windowCoverings !== undefined)\n this.windowCoverings = data.windowCoverings;\n if (data.courtesy !== undefined) this.courtesy = data.courtesy;\n if (data.cameras !== undefined) this.cameras = data.cameras;\n if (data.mediaSources !== undefined) this.mediaSources = data.mediaSources;\n if (data.motionSensors !== undefined)\n this.motionSensors = data.motionSensors;\n if (data.alarms !== undefined) this.alarms = data.alarms;\n if (data.occupiedAt !== undefined) this.occupiedAt = data.occupiedAt;\n if (data.createdAt !== undefined) this.createdAt = data.createdAt;\n if (data.updatedAt !== undefined) this.updatedAt = data.updatedAt;\n }\n\n static getDevicePath(type) {\n switch (type) {\n case \"tv\":\n case \"dvr\":\n case \"appleTv\":\n case \"discPlayer\":\n case \"mediaPlayer\":\n case \"uncontrolledDevice\":\n case \"mediaSource\":\n return \"mediaSources\";\n case \"courtesy\":\n return \"courtesy\";\n case \"switch\":\n return \"switches\";\n case \"dimmer\":\n return \"dimmers\";\n case \"thermostat\":\n return \"thermostats\";\n case \"lock\":\n return \"locks\";\n case \"windowCovering\":\n return \"windowCoverings\";\n case \"camera\":\n return \"cameras\";\n case \"motionSensor\":\n return \"motionSensors\";\n case \"alarm\":\n return \"alarms\";\n\n default:\n throw new Error(\"Invalid device type:\" + type);\n }\n }\n static getDeviceTypeFromPath(path) {\n const validPaths = [\n \"dimmers\",\n \"switches\",\n \"thermostats\",\n \"locks\",\n \"windowCoverings\",\n \"courtesy\",\n \"cameras\",\n \"mediaSources\",\n \"motionSensors\",\n \"alarms\",\n ];\n if (!validPaths.includes(path))\n throw new Error(\"Invalid device path:\" + path);\n switch (path) {\n case \"courtesy\":\n return path;\n case \"switches\":\n return \"switch\";\n default:\n return path.slice(0, -1);\n }\n }\n\n get hasDimmer() {\n return this.dimmers?.length > 0;\n }\n get hasSwitch() {\n return this.switches?.length > 0;\n }\n get hasWindowCovering() {\n return this.windowCoverings?.length > 0;\n }\n get hasShade() {\n return this.hasWindowCovering;\n }\n get hasThermostat() {\n return this.thermostats?.length > 0;\n }\n get hasClimate() {\n return this.hasThermostat;\n }\n get hasLock() {\n return this.locks?.length > 0;\n }\n get hasCourtesy() {\n return this.courtesy?.length > 0;\n }\n get hasCamera() {\n return this.cameras?.length > 0;\n }\n get hasMedia() {\n return this.mediaSources?.length > 0;\n }\n get hasLight() {\n const hasDiscriminatorLight = this.switches?.some((sw) => {\n return sw.discriminator === \"light\" || sw.discriminator === \"fan\";\n });\n return this.hasDimmer || hasDiscriminatorLight;\n }\n get hasAlarm() {\n return this.alarms?.length > 0;\n }\n get occupied() {\n const now = new Date();\n const lastOccupied = new Date(this.occupiedAt);\n const diff = now.getTime() - lastOccupied.getTime();\n return diff < 60 * 60 * 1000;\n }\n}\n\nObject.defineProperty(Room.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"room.json\",\n title: \"Room\",\n description:\n \"A room represents a physical space of controllable IoT devices\",\n type: \"object\",\n required: [\"id\", \"name\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", enum: [\"room\"], default: \"room\" },\n name: { type: \"string\" },\n floor: { type: \"string\" },\n dimmers: { type: \"array\", default: [], items: { $ref: \"dimmer.json\" } },\n switches: { type: \"array\", default: [], items: { $ref: \"switch.json\" } },\n thermostats: {\n type: \"array\",\n default: [],\n items: { $ref: \"thermostat.json\" },\n },\n locks: { type: \"array\", default: [], items: { $ref: \"lock.json\" } },\n windowCoverings: {\n type: \"array\",\n default: [],\n items: { $ref: \"windowCovering.json\" },\n },\n courtesy: {\n type: \"array\",\n default: [],\n items: { $ref: \"courtesy.json\" },\n },\n cameras: { type: \"array\", default: [], items: { $ref: \"camera.json\" } },\n mediaSources: {\n type: \"array\",\n default: [],\n items: { $ref: \"mediaSource.json\" },\n },\n motionSensors: {\n type: \"array\",\n default: [],\n items: { $ref: \"motionSensor.json\" },\n },\n alarms: { type: \"array\", default: [], items: { $ref: \"alarm.json\" } },\n occupiedAt: { $ref: \"definitions.json#/definitions/createdAt\" },\n createdAt: { $ref: \"definitions.json#/definitions/createdAt\" },\n updatedAt: { $ref: \"definitions.json#/definitions/updatedAt\" },\n },\n additionalProperties: false,\n },\n});\n\nObject.defineProperty(Room.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateScene as validate } from \"../validate\";\n\n/**\n * @typedef {Object} SceneData A room represents a physical space of controllable IoT devices\n * @property {string} id - Identifier of the object.\n * @property {string} name\n * @property {string} [description]\n * @property {\"scene\"} type - Default: \"scene\"\n * @property {{switches?: {id?: string, state?: (\"on\"|\"off\")}[], dimmers?: {id?: string, level?: number}[], windowCoverings?: {id?: string, position?: number}[], thermostats?: {id?: string, hvacMode?: string, setpoints?: {cool?: any, heat?: any, auto?: any}, fanMode?: string, setpointDelta?: number}[], mediaSources?: {id?: string, volume?: number, commands?: string[]}[], locks?: {id?: string, state?: (\"locked\"|\"unlocked\"), mode?: (\"normal\"|\"autoLock\"|\"emergencyOpen\"|\"emergencyClose\"|\"holdOpen\"|\"lockdown\")}[]}} [devices]\n * @property {{id?: string, state?: (\"on\"|\"off\")}[]} [devices.switches]\n * @property {{id?: string, level?: number}[]} [devices.dimmers] - Default: []\n * @property {{id?: string, position?: number}[]} [devices.windowCoverings] - Default: []\n * @property {{id?: string, hvacMode?: string, setpoints?: {cool?: any, heat?: any, auto?: any}, fanMode?: string, setpointDelta?: number}[]} [devices.thermostats] - Default: []\n * @property {{id?: string, volume?: number, commands?: string[]}[]} [devices.mediaSources]\n * @property {{id?: string, state?: (\"locked\"|\"unlocked\"), mode?: (\"normal\"|\"autoLock\"|\"emergencyOpen\"|\"emergencyClose\"|\"holdOpen\"|\"lockdown\")}[]} [devices.locks]\n * @property {boolean} [isDefault] - Default: false\n * @property {boolean} [showOnUi] - Default: true\n */\n\n/**\n * A room represents a physical space of controllable IoT devices\n * @class Scene\n * @extends {Entity}\n */\nexport class Scene extends Entity {\n /**\n * @constructor\n * @param {SceneData} data - The data to initialize the Scene with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n this.name = data.name;\n if (data.description !== undefined) this.description = data.description;\n this.type = data.type;\n if (data.devices !== undefined) this.devices = data.devices;\n if (data.isDefault !== undefined) this.isDefault = data.isDefault;\n if (data.showOnUi !== undefined) this.showOnUi = data.showOnUi;\n }\n}\n\nObject.defineProperty(Scene.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"scene.json\",\n title: \"Scene\",\n description:\n \"A room represents a physical space of controllable IoT devices\",\n type: \"object\",\n required: [\"id\", \"name\", \"type\"],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n description: { type: \"string\" },\n type: { type: \"string\", enum: [\"scene\"], default: \"scene\" },\n devices: {\n type: \"object\",\n properties: {\n switches: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n state: { $ref: \"switch.json#/properties/state\" },\n },\n default: [],\n },\n },\n dimmers: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n level: { $ref: \"dimmer.json#/properties/level\" },\n },\n },\n default: [],\n },\n windowCoverings: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n position: { $ref: \"windowCovering.json#/properties/position\" },\n },\n },\n default: [],\n },\n thermostats: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n hvacMode: { $ref: \"thermostat.json#/properties/hvacMode\" },\n setpoints: { $ref: \"thermostat.json#/properties/setpoints\" },\n fanMode: { $ref: \"thermostat.json#/properties/fanMode\" },\n setpointDelta: { type: \"number\" },\n },\n },\n default: [],\n },\n mediaSources: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n volume: { type: \"number\", minimum: 0, maximum: 100 },\n commands: { type: \"array\", items: { type: \"string\" } },\n },\n },\n },\n locks: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n state: { $ref: \"lock.json#/properties/state\" },\n mode: { $ref: \"lock.json#/properties/mode\" },\n },\n },\n },\n },\n additionalProperties: false,\n },\n isDefault: { type: \"boolean\", default: false },\n showOnUi: { type: \"boolean\", default: true },\n },\n },\n});\n\nObject.defineProperty(Scene.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateShortLink as validate } from \"../validate\";\n\n/**\n * @typedef {Object} ShortLinkData\n * @property {string} [id] - Identifier of the object.\n * @property {\"shortLink\"} [type] - Default: \"shortLink\"\n * @property {string} [title]\n * @property {string} destination\n * @property {string} url\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n *\n * @class ShortLink\n * @extends {Entity}\n */\nexport class ShortLink extends Entity {\n /**\n * @constructor\n * @param {ShortLinkData} data - The data to initialize the ShortLink with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n if (data.title !== undefined) this.title = data.title;\n this.destination = data.destination;\n this.url = data.url;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n}\n\nObject.defineProperty(ShortLink.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"shortLink.json\",\n title: \"Short Link\",\n type: \"object\",\n required: [\"destination\", \"url\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"shortLink\", enum: [\"shortLink\"] },\n title: { type: \"string\" },\n destination: { type: \"string\", format: \"uri\" },\n url: { type: \"string\", format: \"uri\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n },\n});\n\nObject.defineProperty(ShortLink.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateSmsMessage as validate } from \"../validate\";\n\n/**\n * @typedef {Object} SmsMessageData\n * @property {string} [id] - Identifier of the object.\n * @property {(\"smsMessage\"|\"whatsappMessage\")} [type] - Default: \"smsMessage\"\n * @property {string} to\n * @property {string} from\n * @property {string} [media]\n * @property {(\"queued\"|\"accepted\"|\"sending\"|\"sent\"|\"failed\"|\"delivered\"|\"undelivered\"|\"receiving\"|\"received\"|\"read\")} status\n * @property {string} [body]\n * @property {string} [driver]\n * @property {object} [appData]\n * @property {(string|object)} [createdAt]\n * @property {(string|object)} [updatedAt]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n *\n * @class SmsMessage\n * @extends {Entity}\n */\nexport class SmsMessage extends Entity {\n /**\n * @constructor\n * @param {SmsMessageData} data - The data to initialize the SmsMessage with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n this.to = data.to;\n this.from = data.from;\n if (data.media !== undefined) this.media = data.media;\n this.status = data.status;\n if (data.body !== undefined) this.body = data.body;\n if (data.driver !== undefined) this.driver = data.driver;\n if (data.appData !== undefined) this.appData = data.appData;\n if (data.createdAt !== undefined) this.createdAt = data.createdAt;\n if (data.updatedAt !== undefined) this.updatedAt = data.updatedAt;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n}\n\nObject.defineProperty(SmsMessage.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"smsMessage.json\",\n title: \"Sms Message\",\n type: \"object\",\n required: [\"to\", \"from\", \"status\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: {\n type: \"string\",\n default: \"smsMessage\",\n enum: [\"smsMessage\", \"whatsappMessage\"],\n },\n to: { type: \"string\" },\n from: { type: \"string\" },\n media: { type: \"string\", format: \"uri\" },\n status: {\n type: \"string\",\n enum: [\n \"queued\",\n \"accepted\",\n \"sending\",\n \"sent\",\n \"failed\",\n \"delivered\",\n \"undelivered\",\n \"receiving\",\n \"received\",\n \"read\",\n ],\n },\n body: { type: \"string\" },\n driver: { type: \"string\" },\n appData: { type: \"object\" },\n createdAt: { $ref: \"definitions.json#/definitions/date\" },\n updatedAt: { $ref: \"definitions.json#/definitions/date\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n },\n});\n\nObject.defineProperty(SmsMessage.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateSpace as validate } from \"../validate\";\n\n/**\n * @typedef {Object} SpaceData\n * @property {string} id - Identifier of the object.\n * @property {string} name\n * @property {\"space\"} type - Default: \"space\"\n * @property {(\"classRoom\"|\"hotelRoom\"|\"office\"|\"building\"|\"commonArea\"|\"conferenceRoom\"|\"lobby\"|\"gym\"|\"pool\"|\"restaurant\"|\"unit\")} [discriminator]\n * @property {string} [floor]\n * @property {(\"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\")} [driver] - Driver used to communicate with the object.\n * @property {string} [category] - This is the category id\n * @property {string[]} [rooms]\n * @property {boolean} [occupied]\n * @property {boolean} [inUse]\n * @property {{active?: boolean, activatedAt?: (string|object), allowed?: boolean, previousState?: object}} [eco] - Default: {\"active\":false,\"allowed\":false,\"previousState\":null}\n * @property {boolean} [eco.active] - Default: false\n * @property {(string|object)} [eco.activatedAt]\n * @property {boolean} [eco.allowed] - Default: false\n * @property {object} [eco.previousState]\n * @property {\"pet\"[]} [features]\n * @property {number} [maximumOccupancy]\n * @property {(\"clean\"|\"dirty\"|\"inspected\"|\"pickup\")} [housekeepingStatus]\n * @property {(\"inService\"|\"outOfOrder\"|\"outOfService\")} [serviceStatus]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n *\n * @class Space\n * @extends {Entity}\n */\nexport class Space extends Entity {\n /**\n * @constructor\n * @param {SpaceData} data - The data to initialize the Space with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n this.name = data.name;\n this.type = data.type;\n if (data.discriminator !== undefined)\n this.discriminator = data.discriminator;\n if (data.floor !== undefined) this.floor = data.floor;\n if (data.driver !== undefined) this.driver = data.driver;\n if (data.category !== undefined) this.category = data.category;\n if (data.rooms !== undefined) this.rooms = data.rooms;\n if (data.occupied !== undefined) this.occupied = data.occupied;\n if (data.inUse !== undefined) this.inUse = data.inUse;\n if (data.eco !== undefined) this.eco = data.eco;\n if (data.features !== undefined) this.features = data.features;\n if (data.maximumOccupancy !== undefined)\n this.maximumOccupancy = data.maximumOccupancy;\n if (data.housekeepingStatus !== undefined)\n this.housekeepingStatus = data.housekeepingStatus;\n if (data.serviceStatus !== undefined)\n this.serviceStatus = data.serviceStatus;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n\n get hasDimmer() {\n return this.rooms.some((room) => room.hasDimmer);\n }\n get hasSwitch() {\n return this.rooms.some((room) => room.hasSwitch);\n }\n get hasWindowCovering() {\n return this.rooms.some((room) => room.hasWindowCovering);\n }\n get hasThermostat() {\n return this.rooms.some((room) => room.hasThermostat);\n }\n get hasLock() {\n return this.rooms.some((room) => room.hasLock);\n }\n get hasCourtesy() {\n return this.rooms.some((room) => room.hasCourtesy);\n }\n get hasCamera() {\n return this.rooms.some((room) => room.hasCamera);\n }\n get hasAlarm() {\n return this.rooms.some((room) => room.hasAlarm);\n }\n get hasMedia() {\n return this.rooms.some((room) => room.hasMedia);\n }\n}\n\nObject.defineProperty(Space.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"space.json\",\n title: \"Space\",\n type: \"object\",\n required: [\"id\", \"name\", \"type\"],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\", minLength: 1 },\n type: { type: \"string\", default: \"space\", enum: [\"space\"] },\n discriminator: {\n type: \"string\",\n enum: [\n \"classRoom\",\n \"hotelRoom\",\n \"office\",\n \"building\",\n \"commonArea\",\n \"conferenceRoom\",\n \"lobby\",\n \"gym\",\n \"pool\",\n \"restaurant\",\n \"unit\",\n ],\n },\n floor: { type: \"string\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n category: { type: \"string\", description: \"This is the category id\" },\n rooms: { type: \"array\", items: { type: \"string\" } },\n occupied: { type: \"boolean\" },\n inUse: { type: \"boolean\" },\n eco: {\n type: \"object\",\n additionalProperties: false,\n default: { active: false, allowed: false, previousState: null },\n properties: {\n active: { type: \"boolean\", default: false },\n activatedAt: { type: [\"string\", \"object\"], format: \"date-time\" },\n allowed: { type: \"boolean\", default: false },\n previousState: {\n type: [\"object\", \"null\"],\n properties: {\n thermostats: {\n type: \"object\",\n patternProperties: {\n \".*\": {\n type: \"object\",\n properties: {\n setpoints: {\n $ref: \"thermostat.json#/properties/setpoints\",\n },\n },\n },\n },\n },\n },\n additionalProperties: false,\n },\n },\n },\n features: { type: \"array\", items: { type: \"string\", enum: [\"pet\"] } },\n maximumOccupancy: { type: \"number\", minimum: 1 },\n housekeepingStatus: {\n type: \"string\",\n enum: [\"clean\", \"dirty\", \"inspected\", \"pickup\"],\n },\n serviceStatus: {\n type: \"string\",\n enum: [\"inService\", \"outOfOrder\", \"outOfService\"],\n },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n },\n});\n\nObject.defineProperty(Space.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateSwitch as validate } from \"../validate\";\n\n/**\n * @typedef {Object} SwitchData Any smart switch\n * @property {string} id - Identifier of the object.\n * @property {string} [name]\n * @property {(\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\")} type\n * @property {(\"light\"|\"fan\"|\"irrigation\")} [discriminator]\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {boolean} [offline]\n * @property {(\"on\"|\"off\")} state\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n * @property {string} [restoresAt]\n */\n\n/**\n * Any smart switch\n * @class Switch\n * @extends {Entity}\n */\nexport class Switch extends Entity {\n /**\n * @constructor\n * @param {SwitchData} data - The data to initialize the Switch with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n this.type = data.type;\n if (data.discriminator !== undefined)\n this.discriminator = data.discriminator;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n this.driver = data.driver;\n if (data.offline !== undefined) this.offline = data.offline;\n this.state = data.state;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n if (data.restoresAt !== undefined) this.restoresAt = data.restoresAt;\n }\n}\n\nObject.defineProperty(Switch.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"switch.json\",\n title: \"Switch\",\n description: \"Any smart switch\",\n type: \"object\",\n required: [\"id\", \"type\", \"state\", \"driver\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n type: { $ref: \"definitions.json#/definitions/type\" },\n discriminator: { type: \"string\", enum: [\"light\", \"fan\", \"irrigation\"] },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n offline: { type: \"boolean\" },\n state: { type: \"string\", enum: [\"on\", \"off\"] },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n restoresAt: { type: \"string\", format: \"date-time\" },\n },\n },\n});\n\nObject.defineProperty(Switch.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateSystemUser as validate } from \"../validate\";\n\n/**\n * @typedef {Object} SystemUserData A system user is a user that originated from an external 3rd party system.\n * @property {string} id - Identifier of the object.\n * @property {\"systemUser\"} [type] - Default: \"systemUser\"\n * @property {(\"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\")} [driver] - Driver used to communicate with the object.\n * @property {string} firstName\n * @property {string} lastName\n * @property {string} [phone]\n * @property {string} [email]\n * @property {{id?: string, line1?: string, line2?: string, line3?: string, city?: string, state?: string, postalCode?: string, countryCode?: string}} [address]\n * @property {string} [photo]\n * @property {string} [jobTitle]\n * @property {string} [dob]\n * @property {(\"male\"|\"female\")} [gender]\n * @property {(\"Guest\"|\"User\"|\"Manager\"|\"Maintenance\"|\"Administrator\"|\"SuperAdmin\")[]} [roles]\n * @property {string} [nationality]\n * @property {string[]} [notes]\n * @property {{id?: any, type: \"mediaFile\", name?: string, fileHash?: string, category?: string, mimeType?: (\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\"), data?: string, url?: string, width?: number, height?: number, size?: number, uploadUrl?: string, uploadUrlExpires?: any, createdBy?: string, systemId?: any}[]} [files]\n * @property {{id?: any, type: (\"driversLicense\"|\"passport\"|\"identityCard\"|\"visa\"), number?: string, maskedNumber?: string, encryptedNumber?: string, issued?: (string|object), expires?: (string|object), verified?: boolean, matched?: boolean, firstName?: string, lastName?: string, issuingCountry?: string, systemId?: any}[]} [identifications]\n * @property {{id?: any, type: (\"amex\"|\"visa\"|\"masterCard\"|\"maestro\"|\"discover\"|\"diners\"|\"jcb\"|\"applePay\"|\"alipay\"|\"chinaUnionPay\"|\"vpay\"), enabled?: boolean, storageData?: string, maskedNumber: string, issued?: string, expires: string, systemId?: any}[]} [payments]\n * @property {{id?: string, name?: string, date?: string, price?: number, tax?: number}[]} [revenue]\n * @property {(string|object)} [createdAt]\n * @property {(string|object)} [updatedAt]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n * A system user is a user that originated from an external 3rd party system.\n * @class SystemUser\n * @extends {Entity}\n */\nexport class SystemUser extends Entity {\n /**\n * @constructor\n * @param {SystemUserData} data - The data to initialize the SystemUser with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n if (data.driver !== undefined) this.driver = data.driver;\n this.firstName = data.firstName;\n this.lastName = data.lastName;\n if (data.phone !== undefined) this.phone = data.phone;\n if (data.email !== undefined) this.email = data.email;\n if (data.address !== undefined) this.address = data.address;\n if (data.photo !== undefined) this.photo = data.photo;\n if (data.jobTitle !== undefined) this.jobTitle = data.jobTitle;\n if (data.dob !== undefined) this.dob = data.dob;\n if (data.gender !== undefined) this.gender = data.gender;\n if (data.roles !== undefined) this.roles = data.roles;\n if (data.nationality !== undefined) this.nationality = data.nationality;\n if (data.notes !== undefined) this.notes = data.notes;\n if (data.files !== undefined) this.files = data.files;\n if (data.identifications !== undefined)\n this.identifications = data.identifications;\n if (data.payments !== undefined) this.payments = data.payments;\n if (data.revenue !== undefined) this.revenue = data.revenue;\n if (data.createdAt !== undefined) this.createdAt = data.createdAt;\n if (data.updatedAt !== undefined) this.updatedAt = data.updatedAt;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n}\n\nObject.defineProperty(SystemUser.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"systemUser.json\",\n title: \"System User\",\n description:\n \"A system user is a user that originated from an external 3rd party system.\",\n type: \"object\",\n required: [\"id\", \"firstName\", \"lastName\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"systemUser\", enum: [\"systemUser\"] },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n firstName: { type: \"string\" },\n lastName: { type: \"string\" },\n phone: { type: [\"string\", \"null\"], pattern: \"^\\\\+[0-9]{1,14}$\" },\n email: { type: [\"string\", \"null\"], format: \"email\" },\n address: { $ref: \"definitions.json#/definitions/address\" },\n photo: { type: \"string\" },\n jobTitle: { type: \"string\" },\n dob: { type: \"string\" },\n gender: { type: \"string\", enum: [\"male\", \"female\"] },\n roles: {\n type: \"array\",\n items: {\n type: \"string\",\n enum: [\n \"Guest\",\n \"User\",\n \"Manager\",\n \"Maintenance\",\n \"Administrator\",\n \"SuperAdmin\",\n ],\n },\n },\n nationality: { type: \"string\", minLength: 2, maxLength: 2 },\n notes: { type: \"array\", items: { type: \"string\" } },\n files: { type: \"array\", items: { $ref: \"mediaFile.json#\" } },\n identifications: {\n type: \"array\",\n items: { $ref: \"identification.json#\" },\n },\n payments: { type: \"array\", items: { $ref: \"payment.json#\" } },\n revenue: { $ref: \"definitions.json#/definitions/revenue\" },\n createdAt: { $ref: \"definitions.json#/definitions/createdAt\" },\n updatedAt: { $ref: \"definitions.json#/definitions/updatedAt\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n },\n});\n\nObject.defineProperty(SystemUser.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateThermostat as validate } from \"../validate\";\n\n/**\n * @typedef {Object} ThermostatData Any smart thermostat\n * @property {string} id - Identifier of the object.\n * @property {string} [name]\n * @property {(\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\")} type - Default: \"thermostat\"\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {boolean} [offline]\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {number} [currentTemperature]\n * @property {number} [currentHumidity]\n * @property {any} hvacMode\n * @property {(\"cooling\"|\"heating\"|\"off\")} hvacState\n * @property {any} fanMode\n * @property {(\"off\"|\"low\"|\"medium\"|\"high\"|\"on\")} fanState\n * @property {(\"celsius\"|\"fahrenheit\")} temperatureScale - Default: \"fahrenheit\"\n * @property {(\"absolute\"|\"relative\")} [humidityScale]\n * @property {(\"cool\"|\"heat\"|\"auto\"|\"off\")[]} supportedHvacModes\n * @property {(\"auto\"|\"low\"|\"medium\"|\"high\"|\"off\"|\"on\")[]} supportedFanModes\n * @property {{cool?: any, heat?: any, auto?: any}} setpoints\n * @property {any} [setpoints.cool]\n * @property {any} [setpoints.heat]\n * @property {any} [setpoints.auto]\n * @property {number} [minAutoDelta] - Default: 3\n * @property {number} [cycleRate]\n * @property {number} [batteryLevel]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n */\n\n/**\n * Any smart thermostat\n * @class Thermostat\n * @extends {Entity}\n */\nexport class Thermostat extends Entity {\n /**\n * @constructor\n * @param {ThermostatData} data - The data to initialize the Thermostat with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n this.type = data.type;\n this.driver = data.driver;\n if (data.offline !== undefined) this.offline = data.offline;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n if (data.currentTemperature !== undefined)\n this.currentTemperature = data.currentTemperature;\n if (data.currentHumidity !== undefined)\n this.currentHumidity = data.currentHumidity;\n this.hvacMode = data.hvacMode;\n this.hvacState = data.hvacState;\n this.fanMode = data.fanMode;\n this.fanState = data.fanState;\n this.temperatureScale = data.temperatureScale;\n if (data.humidityScale !== undefined)\n this.humidityScale = data.humidityScale;\n this.supportedHvacModes = data.supportedHvacModes;\n this.supportedFanModes = data.supportedFanModes;\n this.setpoints = data.setpoints;\n if (data.minAutoDelta !== undefined) this.minAutoDelta = data.minAutoDelta;\n if (data.cycleRate !== undefined) this.cycleRate = data.cycleRate;\n if (data.batteryLevel !== undefined) this.batteryLevel = data.batteryLevel;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n }\n}\n\nObject.defineProperty(Thermostat.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"thermostat.json\",\n title: \"Thermostat\",\n description: \"Any smart thermostat\",\n type: \"object\",\n required: [\n \"id\",\n \"type\",\n \"hvacMode\",\n \"fanMode\",\n \"hvacState\",\n \"fanState\",\n \"setpoints\",\n \"temperatureScale\",\n \"supportedHvacModes\",\n \"supportedFanModes\",\n \"driver\",\n ],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { $ref: \"definitions.json#/definitions/name\" },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n default: \"thermostat\",\n },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n offline: { type: \"boolean\" },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n currentTemperature: { type: \"number\" },\n currentHumidity: { type: \"number\", minimum: 0 },\n hvacMode: {\n type: \"string\",\n $ref: \"#/properties/supportedHvacModes/items\",\n },\n hvacState: {\n type: [\"string\", \"null\"],\n enum: [\"cooling\", \"heating\", \"off\", null],\n },\n fanMode: { type: \"string\", $ref: \"#/properties/supportedFanModes/items\" },\n fanState: {\n type: [\"string\", \"null\"],\n enum: [\"off\", \"low\", \"medium\", \"high\", \"on\", null],\n },\n temperatureScale: {\n type: \"string\",\n enum: [\"celsius\", \"fahrenheit\"],\n default: \"fahrenheit\",\n },\n humidityScale: {\n type: [\"string\", \"null\"],\n enum: [\"absolute\", \"relative\", null],\n },\n supportedHvacModes: {\n type: \"array\",\n uniqueItems: true,\n minItems: 2,\n items: { enum: [\"cool\", \"heat\", \"auto\", \"off\"] },\n },\n supportedFanModes: {\n type: \"array\",\n uniqueItems: true,\n items: { enum: [\"auto\", \"low\", \"medium\", \"high\", \"off\", \"on\"] },\n },\n setpoints: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n cool: { $ref: \"#/$defs/setpoint\" },\n heat: { $ref: \"#/$defs/setpoint\" },\n auto: { $ref: \"#/$defs/setpoint\" },\n },\n },\n minAutoDelta: { type: \"number\", default: 3 },\n cycleRate: { type: \"number\" },\n batteryLevel: { $ref: \"definitions.json#/definitions/batteryLevel\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n },\n $defs: {\n setpoint: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n value: { $ref: \"#/$defs/setpointValue\" },\n min: { $ref: \"#/$defs/setpointMinMax\" },\n max: { $ref: \"#/$defs/setpointMinMax\" },\n },\n },\n setpointValue: { type: \"number\", minimum: 0, maximum: 99 },\n setpointMinMax: { type: [\"number\", \"null\"], minimum: 0, maximum: 99 },\n },\n },\n});\n\nObject.defineProperty(Thermostat.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateTicket as validate } from \"../validate\";\n\n/**\n * @typedef {Object} TicketData A ticket is a request from a user.\n * @property {string} id - Identifier of the object.\n * @property {\"ticket\"} [type] - Default: \"ticket\"\n * @property {string} [number]\n * @property {string} [issueId]\n * @property {{id: string, discriminator: (\"message\"|\"opened\"|\"assigned\"|\"rated\"|\"tipped\"|\"scheduled\"|\"collaboratorAdded\"|\"collaboratorRemoved\"|\"statusChanged\"|\"priorityChanged\"|\"scheduleDateChanged\"|\"locationChanged\"), userId?: string, userName?: string, vendorId?: string, vendorName?: string, systemId?: string, systemName?: string, timestamp: (string|object), body: string, parsedBody?: {text?: string, mentions?: {id: string, discriminator: (\"user\"|\"vendor\"|\"system\"), index: number, length: number, originalText: string}[]}, readBy?: string[], media?: any}[]} conversation - Default: []\n * @property {string} [subject]\n * @property {{userId?: string, userName?: string, systemId?: string, systemName?: string}} [openedBy]\n * @property {string} [openedBy.userId]\n * @property {string} [openedBy.userName]\n * @property {string} [openedBy.systemId]\n * @property {string} [openedBy.systemName]\n * @property {{systemId?: string, systemName?: string, systemPhoto?: any, userId?: string, userName?: string, userPhoto?: any, deviceId?: string, roomId?: string, reservationId?: string, spaceId?: string, spaceName?: string}} requester\n * @property {string} [requester.systemId]\n * @property {string} [requester.systemName]\n * @property {any} [requester.systemPhoto]\n * @property {string} [requester.userId]\n * @property {string} [requester.userName]\n * @property {any} [requester.userPhoto]\n * @property {string} [requester.deviceId]\n * @property {string} [requester.roomId]\n * @property {string} [requester.reservationId]\n * @property {string} [requester.spaceId]\n * @property {string} [requester.spaceName]\n * @property {{userId?: string, userName?: string, userPhoto?: any, vendorId?: string, vendorName?: string, vendorPhoto?: any}} [assignedTo]\n * @property {string} [assignedTo.userId]\n * @property {string} [assignedTo.userName]\n * @property {any} [assignedTo.userPhoto]\n * @property {string} [assignedTo.vendorId]\n * @property {string} [assignedTo.vendorName]\n * @property {any} [assignedTo.vendorPhoto]\n * @property {{id: string, discriminator: \"user\"}[]} [notify] - A list of entities to notify when this ticket is created or resolved.. Default: []\n * @property {{id: string, name: string, discriminator: (\"user\"|\"vendor\")}[]} [collaborators] - Default: []\n * @property {{id?: string, discriminator: (\"space\"|\"room\"|\"property\"|\"customText\"), name: string}} [location]\n * @property {string} [location.id]\n * @property {(\"space\"|\"room\"|\"property\"|\"customText\")} location.discriminator\n * @property {string} location.name\n * @property {(\"open\"|\"pending\"|\"solved\"|\"closed\")} status - Default: \"open\"\n * @property {(\"low\"|\"normal\"|\"high\")} [priority] - Default: \"normal\"\n * @property {string[]} tags - Default: []\n * @property {string} [department]\n * @property {number} [rating]\n * @property {string} [ratingComment]\n * @property {string} [tipAmount]\n * @property {(string|object)} [autoCloseAt]\n * @property {(string|object)} [scheduleDate]\n * @property {(string|object)} createdAt\n * @property {(string|object)} updatedAt\n * @property {(string|object)} [solvedAt]\n * @property {(string|object)} [closedAt]\n */\n\n/**\n * A ticket is a request from a user.\n * @class Ticket\n * @extends {Entity}\n */\nexport class Ticket extends Entity {\n /**\n * @constructor\n * @param {TicketData} data - The data to initialize the Ticket with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n if (data.number !== undefined) this.number = data.number;\n if (data.issueId !== undefined) this.issueId = data.issueId;\n this.conversation = data.conversation;\n if (data.subject !== undefined) this.subject = data.subject;\n if (data.openedBy !== undefined) this.openedBy = data.openedBy;\n this.requester = data.requester;\n if (data.assignedTo !== undefined) this.assignedTo = data.assignedTo;\n if (data.notify !== undefined) this.notify = data.notify;\n if (data.collaborators !== undefined)\n this.collaborators = data.collaborators;\n if (data.location !== undefined) this.location = data.location;\n this.status = data.status;\n if (data.priority !== undefined) this.priority = data.priority;\n this.tags = data.tags;\n if (data.department !== undefined) this.department = data.department;\n if (data.rating !== undefined) this.rating = data.rating;\n if (data.ratingComment !== undefined)\n this.ratingComment = data.ratingComment;\n if (data.tipAmount !== undefined) this.tipAmount = data.tipAmount;\n if (data.autoCloseAt !== undefined) this.autoCloseAt = data.autoCloseAt;\n if (data.scheduleDate !== undefined) this.scheduleDate = data.scheduleDate;\n this.createdAt = data.createdAt;\n this.updatedAt = data.updatedAt;\n if (data.solvedAt !== undefined) this.solvedAt = data.solvedAt;\n if (data.closedAt !== undefined) this.closedAt = data.closedAt;\n }\n}\n\nObject.defineProperty(Ticket.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"ticket.json\",\n title: \"Ticket\",\n description: \"A ticket is a request from a user.\",\n type: \"object\",\n required: [\n \"id\",\n \"conversation\",\n \"requester\",\n \"status\",\n \"tags\",\n \"createdAt\",\n \"updatedAt\",\n ],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", enum: [\"ticket\"], default: \"ticket\" },\n number: { type: \"string\" },\n issueId: { type: \"string\" },\n conversation: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"timestamp\", \"body\"],\n properties: {\n id: { type: \"string\" },\n discriminator: {\n type: \"string\",\n enum: [\n \"message\",\n \"opened\",\n \"assigned\",\n \"rated\",\n \"tipped\",\n \"scheduled\",\n \"collaboratorAdded\",\n \"collaboratorRemoved\",\n \"statusChanged\",\n \"priorityChanged\",\n \"scheduleDateChanged\",\n \"locationChanged\",\n ],\n default: \"message\",\n },\n userId: { type: \"string\" },\n userName: { type: \"string\" },\n vendorId: { type: \"string\" },\n vendorName: { type: \"string\" },\n systemId: { type: \"string\" },\n systemName: { type: \"string\" },\n timestamp: { $ref: \"definitions.json#/definitions/createdAt\" },\n body: { type: \"string\" },\n parsedBody: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n text: { type: \"string\" },\n mentions: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\n \"discriminator\",\n \"id\",\n \"index\",\n \"length\",\n \"originalText\",\n ],\n properties: {\n id: { type: \"string\" },\n discriminator: {\n type: \"string\",\n enum: [\"user\", \"vendor\", \"system\"],\n },\n index: { type: \"integer\" },\n length: { type: \"integer\" },\n originalText: { type: \"string\" },\n },\n },\n },\n },\n },\n readBy: { type: \"array\", default: [], items: { type: \"string\" } },\n media: { anyOf: [{ $ref: \"mediaFile.json\" }, { type: \"null\" }] },\n },\n },\n },\n subject: { type: \"string\" },\n openedBy: {\n type: \"object\",\n properties: {\n userId: { type: \"string\" },\n userName: { type: \"string\" },\n systemId: { type: \"string\" },\n systemName: { type: \"string\" },\n },\n },\n requester: {\n type: \"object\",\n properties: {\n systemId: { type: \"string\" },\n systemName: { type: \"string\" },\n systemPhoto: {\n anyOf: [\n { $ref: \"mediaFile.json\" },\n { type: \"null\" },\n { type: \"string\" },\n ],\n },\n userId: { type: \"string\" },\n userName: { type: \"string\" },\n userPhoto: {\n anyOf: [\n { $ref: \"mediaFile.json\" },\n { type: \"null\" },\n { type: \"string\" },\n ],\n },\n deviceId: { type: \"string\" },\n roomId: { type: \"string\" },\n reservationId: { type: \"string\" },\n spaceId: { type: \"string\" },\n spaceName: { type: \"string\" },\n },\n },\n assignedTo: {\n type: \"object\",\n properties: {\n userId: { type: \"string\" },\n userName: { type: \"string\" },\n userPhoto: {\n anyOf: [\n { $ref: \"mediaFile.json\" },\n { type: \"null\" },\n { type: \"string\" },\n ],\n },\n vendorId: { type: \"string\" },\n vendorName: { type: \"string\" },\n vendorPhoto: {\n anyOf: [\n { $ref: \"mediaFile.json\" },\n { type: \"null\" },\n { type: \"string\" },\n ],\n },\n },\n },\n notify: {\n type: \"array\",\n description:\n \"A list of entities to notify when this ticket is created or resolved.\",\n default: [],\n items: {\n type: \"object\",\n required: [\"id\", \"discriminator\"],\n additionalProperties: false,\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the entity to notify.\",\n },\n discriminator: { type: \"string\", enum: [\"user\"] },\n },\n },\n },\n collaborators: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"id\", \"name\", \"discriminator\"],\n additionalProperties: false,\n properties: {\n id: { type: \"string\" },\n name: { type: \"string\" },\n discriminator: { type: \"string\", enum: [\"user\", \"vendor\"] },\n },\n },\n },\n location: {\n type: \"object\",\n required: [\"discriminator\", \"name\"],\n additionalProperties: false,\n properties: {\n id: { type: \"string\" },\n discriminator: {\n type: \"string\",\n enum: [\"space\", \"room\", \"property\", \"customText\"],\n },\n name: { type: \"string\" },\n },\n },\n status: {\n type: \"string\",\n enum: [\"open\", \"pending\", \"solved\", \"closed\"],\n default: \"open\",\n },\n priority: {\n type: \"string\",\n enum: [\"low\", \"normal\", \"high\"],\n default: \"normal\",\n },\n tags: { type: \"array\", default: [], items: { type: \"string\" } },\n department: { type: \"string\" },\n rating: { type: \"number\", minimum: 0, maximum: 5 },\n ratingComment: { type: \"string\" },\n tipAmount: { type: \"string\" },\n autoCloseAt: { $ref: \"definitions.json#/definitions/date\" },\n scheduleDate: { $ref: \"definitions.json#/definitions/date\" },\n createdAt: { $ref: \"definitions.json#/definitions/date\" },\n updatedAt: { $ref: \"definitions.json#/definitions/date\" },\n solvedAt: { $ref: \"definitions.json#/definitions/date\" },\n closedAt: { $ref: \"definitions.json#/definitions/date\" },\n },\n },\n});\n\nObject.defineProperty(Ticket.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateTimeSheet as validate } from \"../validate\";\n\n/**\n * @typedef {Object} TimeSheetData\n * @property {string} [id] - Identifier of the object.\n * @property {\"timeSheet\"} [type] - Default: \"timeSheet\"\n * @property {string} userId - Identifier of the object.\n * @property {(string|object)} day\n * @property {boolean} [locked] - If true, the time sheet is locked and cannot be modified. Default: false\n * @property {{id?: string, discriminator: (\"working\"|\"driving\"|\"meeting\"|\"break\"), start: (string|object), end?: (string|object), comment?: string, ticketId?: string}[]} [timeEntries] - Default: []\n */\n\n/**\n *\n * @class TimeSheet\n * @extends {Entity}\n */\nexport class TimeSheet extends Entity {\n /**\n * @constructor\n * @param {TimeSheetData} data - The data to initialize the TimeSheet with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n this.userId = data.userId;\n this.day = data.day;\n if (data.locked !== undefined) this.locked = data.locked;\n if (data.timeEntries !== undefined) this.timeEntries = data.timeEntries;\n }\n}\n\nObject.defineProperty(TimeSheet.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"timeSheet.json\",\n title: \"Time Sheet\",\n type: \"object\",\n required: [\"userId\", \"day\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"timeSheet\", enum: [\"timeSheet\"] },\n userId: { $ref: \"definitions.json#/definitions/id\" },\n day: { type: [\"string\", \"object\"], format: \"date-time\" },\n locked: {\n type: \"boolean\",\n default: false,\n description: \"If true, the time sheet is locked and cannot be modified\",\n },\n timeEntries: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n discriminator: {\n type: \"string\",\n enum: [\"working\", \"driving\", \"meeting\", \"break\"],\n },\n start: { type: [\"string\", \"object\"], format: \"date-time\" },\n end: { type: [\"string\", \"object\"], format: \"date-time\" },\n comment: { type: \"string\" },\n ticketId: { type: \"string\" },\n },\n required: [\"start\", \"discriminator\"],\n additionalProperties: false,\n },\n },\n },\n },\n});\n\nObject.defineProperty(TimeSheet.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateUser as validate } from \"../validate\";\n\n/**\n * @typedef {Object} UserData\n * @property {string} id - Identifier of the object.\n * @property {string} [type] - Default: \"user\"\n * @property {string} firstName\n * @property {string} lastName\n * @property {string} [phone]\n * @property {boolean} [phoneVerified]\n * @property {string} [email]\n * @property {boolean} [emailVerified]\n * @property {string} [whatsapp]\n * @property {boolean} [whatsappVerified]\n * @property {{id?: string, line1?: string, line2?: string, line3?: string, city?: string, state?: string, postalCode?: string, countryCode?: string}} [address]\n * @property {string} [secretKey]\n * @property {{id?: any, type: \"mediaFile\", name?: string, fileHash?: string, category?: string, mimeType?: (\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\"), data?: string, url?: string, width?: number, height?: number, size?: number, uploadUrl?: string, uploadUrlExpires?: any, createdBy?: string, systemId?: any}} [photo] - Any media file\n * @property {string} [jobTitle]\n * @property {string} [dob]\n * @property {(\"male\"|\"female\")} [gender]\n * @property {string} [nationality]\n * @property {{organizationId: string, propertyId: string, role: (\"Guest\"|\"User\"|\"Agent\"|\"Manager\"|\"Maintenance\"|\"Administrator\"|\"SuperAdmin\"), timeTrackingEnabled?: boolean, department?: string, policyIds?: string[], policies?: {id?: any, type: \"policy\", discriminator: \"user\", name: string, description?: string, organizationId: string, propertyId: string, permissions: {entities: string[], effect: (\"Allow\"|\"Deny\")}[]}[]}[]} [permissions] - Default: []\n * @property {{organizationId: string, propertyId: string, notifications?: {discriminator: (\"observerTicketCreated\"|\"observerTicketResolved\"), enabled: boolean}[]}[]} [preferences]\n * @property {string[]} [notes]\n * @property {{id?: any, type: \"mediaFile\", name?: string, fileHash?: string, category?: string, mimeType?: (\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\"), data?: string, url?: string, width?: number, height?: number, size?: number, uploadUrl?: string, uploadUrlExpires?: any, createdBy?: string, systemId?: any}[]} [files]\n * @property {{id?: any, type: (\"driversLicense\"|\"passport\"|\"identityCard\"|\"visa\"), number?: string, maskedNumber?: string, encryptedNumber?: string, issued?: (string|object), expires?: (string|object), verified?: boolean, matched?: boolean, firstName?: string, lastName?: string, issuingCountry?: string, systemId?: any}[]} [identifications]\n * @property {{id?: any, type: (\"amex\"|\"visa\"|\"masterCard\"|\"maestro\"|\"discover\"|\"diners\"|\"jcb\"|\"applePay\"|\"alipay\"|\"chinaUnionPay\"|\"vpay\"), enabled?: boolean, storageData?: string, maskedNumber: string, issued?: string, expires: string, systemId?: any}[]} [payments]\n * @property {{accuracy: number, latitude: number, longitude: number, timestamp: number}} [location]\n * @property {number} location.accuracy\n * @property {number} location.latitude\n * @property {number} location.longitude\n * @property {number} location.timestamp\n * @property {{id?: any, driver?: any, primaryGuest?: string, type: \"reservation\", sharedGuests?: string[], spaceCategory?: string, space?: string, previousSpace?: string, status: (\"reserved\"|\"checkedIn\"|\"checkedOut\"|\"cancelled\"|\"noShow\"|\"enquired\"|\"requested\"|\"optional\"), mobileCheckInSpaceCategoryChanged?: boolean, mobileCheckInSpaceChanged?: boolean, mobileCheckInStatus?: (\"ready\"|\"blocked\"|\"preArrivalStepsRequired\"|\"spaceNotAssigned\"|\"spaceNotReady\"|\"checkInTimeNotStarted\"), mobileCheckInStatusMessage?: string, confirmationNumber?: string, expectedCheckInDateTime?: (string|object), checkInDateTime: (string|object), checkOutDateTime: (string|object), adultCount?: number, childCount?: number, spaceCategoryAvailabilites?: {id?: string, price?: number, unit?: (\"night\"|\"stay\"|\"hour\"), isUpgrade?: boolean}[], revenue?: any, rateSuppressed?: boolean, payment?: string, company?: string, travelAgent?: string, systemId?: any, metadata?: any, updatedAt?: any}[]} [reservations]\n * @property {string} [spaceName]\n * @property {{id?: string, name?: string, date?: string, price?: number, tax?: number}[]} [revenue]\n * @property {(string|object)} [createdAt]\n * @property {(string|object)} [updatedAt]\n * @property {{systemId: string, propertyId: string, driver: string}[]} [systems] - Default: []\n */\n\n/**\n *\n * @class User\n * @extends {Entity}\n */\nexport class User extends Entity {\n /**\n * @constructor\n * @param {UserData} data - The data to initialize the User with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n this.firstName = data.firstName;\n this.lastName = data.lastName;\n if (data.phone !== undefined) this.phone = data.phone;\n if (data.phoneVerified !== undefined)\n this.phoneVerified = data.phoneVerified;\n if (data.email !== undefined) this.email = data.email;\n if (data.emailVerified !== undefined)\n this.emailVerified = data.emailVerified;\n if (data.whatsapp !== undefined) this.whatsapp = data.whatsapp;\n if (data.whatsappVerified !== undefined)\n this.whatsappVerified = data.whatsappVerified;\n if (data.address !== undefined) this.address = data.address;\n if (data.secretKey !== undefined) this.secretKey = data.secretKey;\n if (data.photo !== undefined) this.photo = data.photo;\n if (data.jobTitle !== undefined) this.jobTitle = data.jobTitle;\n if (data.dob !== undefined) this.dob = data.dob;\n if (data.gender !== undefined) this.gender = data.gender;\n if (data.nationality !== undefined) this.nationality = data.nationality;\n if (data.permissions !== undefined) this.permissions = data.permissions;\n if (data.preferences !== undefined) this.preferences = data.preferences;\n if (data.notes !== undefined) this.notes = data.notes;\n if (data.files !== undefined) this.files = data.files;\n if (data.identifications !== undefined)\n this.identifications = data.identifications;\n if (data.payments !== undefined) this.payments = data.payments;\n if (data.location !== undefined) this.location = data.location;\n if (data.reservations !== undefined) this.reservations = data.reservations;\n if (data.spaceName !== undefined) this.spaceName = data.spaceName;\n if (data.revenue !== undefined) this.revenue = data.revenue;\n if (data.createdAt !== undefined) this.createdAt = data.createdAt;\n if (data.updatedAt !== undefined) this.updatedAt = data.updatedAt;\n if (data.systems !== undefined) this.systems = data.systems;\n }\n\n get fullName() {\n return `${this.firstName} ${this.lastName}`;\n }\n get roles() {\n const roles = new Set();\n if (this.permissions) {\n for (const permission of this.permissions) {\n roles.add(permission.role);\n }\n }\n return Array.from(roles);\n }\n get isSuperAdmin() {\n return this.roles.includes(\"SuperAdmin\");\n }\n get isAdmin() {\n return this.roles.includes(\"Admin\") || this.roles.includes(\"Administrator\");\n }\n get isManager() {\n return this.roles.includes(\"Manager\");\n }\n get isUser() {\n return this.roles.includes(\"User\");\n }\n}\n\nObject.defineProperty(User.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"user.json\",\n title: \"User\",\n type: \"object\",\n required: [\"id\", \"firstName\", \"lastName\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"user\" },\n firstName: { type: \"string\" },\n lastName: { type: \"string\" },\n phone: { type: [\"string\", \"null\"], pattern: \"^\\\\+[0-9]{1,14}$\" },\n phoneVerified: { type: \"boolean\" },\n email: { type: [\"string\", \"null\"], format: \"email\" },\n emailVerified: { type: \"boolean\" },\n whatsapp: { type: [\"string\", \"null\"], pattern: \"^\\\\+[0-9]{1,14}$\" },\n whatsappVerified: { type: \"boolean\" },\n address: { $ref: \"definitions.json#/definitions/address\" },\n secretKey: { type: \"string\" },\n photo: { $ref: \"mediaFile.json#\" },\n jobTitle: { type: \"string\" },\n dob: { type: \"string\" },\n gender: { type: \"string\", enum: [\"male\", \"female\"] },\n nationality: { type: \"string\", minLength: 2, maxLength: 2 },\n permissions: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"organizationId\", \"propertyId\", \"role\"],\n properties: {\n organizationId: {\n type: \"string\",\n description:\n \"The ID of the organization the permission is applies to.\",\n },\n propertyId: {\n type: \"string\",\n description:\n \"The ID of the property the permission is applies to.\",\n },\n role: {\n type: \"string\",\n enum: [\n \"Guest\",\n \"User\",\n \"Agent\",\n \"Manager\",\n \"Maintenance\",\n \"Administrator\",\n \"SuperAdmin\",\n ],\n },\n timeTrackingEnabled: {\n type: \"boolean\",\n description: \"Whether time tracking is enabled for this role.\",\n },\n department: {\n type: \"string\",\n description: \"The department the user belongs to.\",\n },\n policyIds: {\n type: \"array\",\n items: {\n type: \"string\",\n description: \"ID of a policy that is applied to this role.\",\n },\n },\n policies: {\n type: \"array\",\n items: {\n description:\n \"A policy object populated from the policyIds array.\",\n $ref: \"policy.json\",\n },\n },\n },\n additionalProperties: false,\n },\n },\n preferences: {\n type: \"array\",\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"organizationId\", \"propertyId\"],\n properties: {\n organizationId: { type: \"string\" },\n propertyId: { type: \"string\" },\n notifications: {\n type: \"array\",\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"discriminator\", \"enabled\"],\n properties: {\n discriminator: {\n type: \"string\",\n enum: [\"observerTicketCreated\", \"observerTicketResolved\"],\n },\n enabled: { type: \"boolean\" },\n },\n },\n },\n },\n },\n },\n notes: { type: \"array\", items: { type: \"string\" } },\n files: { type: \"array\", items: { $ref: \"mediaFile.json#\" } },\n identifications: {\n type: \"array\",\n items: { $ref: \"identification.json#\" },\n },\n payments: { type: \"array\", items: { $ref: \"payment.json#\" } },\n location: {\n type: \"object\",\n required: [\"accuracy\", \"latitude\", \"longitude\", \"timestamp\"],\n additionalProperties: false,\n properties: {\n accuracy: { type: [\"number\", \"null\"] },\n latitude: { type: [\"number\", \"null\"] },\n longitude: { type: [\"number\", \"null\"] },\n timestamp: { type: [\"number\", \"null\"] },\n },\n },\n reservations: { type: \"array\", items: { $ref: \"reservation.json\" } },\n spaceName: { type: \"string\" },\n revenue: { $ref: \"definitions.json#/definitions/revenue\" },\n createdAt: { $ref: \"definitions.json#/definitions/createdAt\" },\n updatedAt: { $ref: \"definitions.json#/definitions/updatedAt\" },\n systems: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n properties: {\n systemId: { type: \"string\" },\n propertyId: { type: \"string\" },\n driver: { type: \"string\" },\n },\n required: [\"systemId\", \"propertyId\", \"driver\"],\n additionalProperties: false,\n },\n },\n },\n },\n});\n\nObject.defineProperty(User.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateVendor as validate } from \"../validate\";\n\n/**\n * @typedef {Object} VendorData\n * @property {string} id - Identifier of the object.\n * @property {\"vendor\"} [type] - Default: \"vendor\"\n * @property {string} name\n * @property {string} [phone]\n * @property {string} email\n * @property {{id?: string, line1?: string, line2?: string, line3?: string, city?: string, state?: string, postalCode?: string, countryCode?: string}} [address]\n * @property {{id?: any, type: \"mediaFile\", name?: string, fileHash?: string, category?: string, mimeType?: (\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\"), data?: string, url?: string, width?: number, height?: number, size?: number, uploadUrl?: string, uploadUrlExpires?: any, createdBy?: string, systemId?: any}} [photo] - Any media file\n * @property {(string|object)} [createdAt]\n * @property {(string|object)} [updatedAt]\n */\n\n/**\n *\n * @class Vendor\n * @extends {Entity}\n */\nexport class Vendor extends Entity {\n /**\n * @constructor\n * @param {VendorData} data - The data to initialize the Vendor with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n this.name = data.name;\n if (data.phone !== undefined) this.phone = data.phone;\n this.email = data.email;\n if (data.address !== undefined) this.address = data.address;\n if (data.photo !== undefined) this.photo = data.photo;\n if (data.createdAt !== undefined) this.createdAt = data.createdAt;\n if (data.updatedAt !== undefined) this.updatedAt = data.updatedAt;\n }\n}\n\nObject.defineProperty(Vendor.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"vendor.json\",\n title: \"Vendor\",\n type: \"object\",\n required: [\"id\", \"name\", \"email\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"vendor\", enum: [\"vendor\"] },\n name: { type: \"string\" },\n phone: { type: [\"string\", \"null\"], pattern: \"^\\\\+[0-9]{1,14}$\" },\n email: { type: [\"string\", \"null\"], format: \"email\" },\n address: { $ref: \"definitions.json#/definitions/address\" },\n photo: { $ref: \"mediaFile.json#\" },\n createdAt: { $ref: \"definitions.json#/definitions/createdAt\" },\n updatedAt: { $ref: \"definitions.json#/definitions/updatedAt\" },\n },\n },\n});\n\nObject.defineProperty(Vendor.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateWindowCovering as validate } from \"../validate\";\n\n/**\n * @typedef {Object} WindowCoveringData Any smart window covering\n * @property {string} id - Identifier of the object.\n * @property {string} [name]\n * @property {(\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\")} type - Default: \"windowCovering\"\n * @property {(\"basic\"|\"variable\")} [discriminator] - Default: \"variable\"\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {boolean} [offline]\n * @property {number} position\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n */\n\n/**\n * Any smart window covering\n * @class WindowCovering\n * @extends {Entity}\n */\nexport class WindowCovering extends Entity {\n /**\n * @constructor\n * @param {WindowCoveringData} data - The data to initialize the WindowCovering with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n this.type = data.type;\n if (data.discriminator !== undefined)\n this.discriminator = data.discriminator;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n this.driver = data.driver;\n if (data.offline !== undefined) this.offline = data.offline;\n this.position = data.position;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n }\n}\n\nObject.defineProperty(WindowCovering.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"windowCovering.json\",\n title: \"Window Covering\",\n description: \"Any smart window covering\",\n required: [\"id\", \"type\", \"position\", \"driver\"],\n additionalProperties: false,\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n default: \"windowCovering\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"basic\", \"variable\"],\n default: \"variable\",\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n offline: { type: \"boolean\" },\n position: { type: [\"number\", \"null\"], minimum: 0, maximum: 100 },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n },\n },\n});\n\nObject.defineProperty(WindowCovering.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n"],"mappings":"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AAC,UAAU,MAAM;AAAA,MACvB,MAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB;AAA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","names":["addFormats","d","Event"]}
1
+ {"version":3,"sources":["../src/utils.js","../src/errors/appError.js","../src/errors/authenticationError.js","../src/errors/authorizationError.js","../src/errors/conflictError.js","../src/errors/deviceCommError.js","../src/errors/loginError.js","../src/errors/notFoundError.js","../src/errors/requestError.js","../src/errors/systemCommError.js","../src/errors/tokenExpiredError.js","../src/errors/unprocessableRequestError.js","../src/errors/validationError.js","../src/events/index.js","../src/defs.js","../src/events/event.js","../src/events/applicationInUse.js","../src/events/applicationOutOfUse.js","../src/events/emailEvent.js","../src/events/reservationCheckedIn.js","../src/events/reservationCheckedOut.js","../src/events/reservationSpaceChanged.js","../src/events/sceneSet.js","../src/events/shortLinkCreated.js","../src/events/smsEvent.js","../src/events/systemAlarmUpdated.js","../src/events/systemCameraUpdated.js","../src/events/systemCategoryUpdated.js","../src/events/systemCourtesyUpdated.js","../src/events/systemCredentialUpdated.js","../src/events/systemDimmerUpdated.js","../src/events/systemEntityDeleted.js","../src/events/systemGatewayUpdated.js","../src/events/systemLockUpdated.js","../src/events/systemMediaSourceUpdated.js","../src/events/systemMotionSensorUpdated.js","../src/events/systemOrganizationUpdated.js","../src/events/systemProductUpdated.js","../src/events/systemPropertyUpdated.js","../src/events/systemReservationUpdated.js","../src/events/systemSpaceUpdated.js","../src/events/systemSwitchUpdated.js","../src/events/systemThermostatUpdated.js","../src/events/systemUserUpdated.js","../src/events/systemWindowCoveringUpdated.js","../src/models/entity.js","../src/validate.js","../src/schemas/alarm.js","../src/schemas/announcement.js","../src/schemas/automation.js","../src/schemas/camera.js","../src/schemas/category.js","../src/schemas/courtesy.js","../src/schemas/credential.js","../src/schemas/definitions.js","../src/schemas/deviceRouter.js","../src/schemas/dimmer.js","../src/schemas/discoveredDevice.js","../src/schemas/emailMessage.js","../src/schemas/energyReport.js","../src/schemas/energyReportShard.js","../src/schemas/gateway.js","../src/schemas/identification.js","../src/schemas/issue.js","../src/schemas/lock.js","../src/schemas/log.js","../src/schemas/mediaFile.js","../src/schemas/mediaSource.js","../src/schemas/motionSensor.js","../src/schemas/order.js","../src/schemas/organization.js","../src/schemas/payment.js","../src/schemas/policy.js","../src/schemas/product.js","../src/schemas/property.js","../src/schemas/reservation.js","../src/schemas/room.js","../src/schemas/scene.js","../src/schemas/shortLink.js","../src/schemas/smsMessage.js","../src/schemas/space.js","../src/schemas/switch.js","../src/schemas/systemUser.js","../src/schemas/thermostat.js","../src/schemas/ticket.js","../src/schemas/timeSheet.js","../src/schemas/user.js","../src/schemas/vendor.js","../src/schemas/windowCovering.js","../src/models/alarm.js","../src/models/announcement.js","../src/models/automation.js","../src/models/camera.js","../src/models/category.js","../src/models/courtesy.js","../src/models/credential.js","../src/models/deviceRouter.js","../src/models/dimmer.js","../src/models/discoveredDevice.js","../src/models/emailMessage.js","../src/models/energyReport.js","../src/models/energyReportShard.js","../src/models/gateway.js","../src/models/identification.js","../src/models/issue.js","../src/models/lock.js","../src/models/log.js","../src/models/mediaFile.js","../src/models/mediaSource.js","../src/models/motionSensor.js","../src/models/order.js","../src/models/organization.js","../src/models/payment.js","../src/models/policy.js","../src/models/product.js","../src/models/property.js","../src/models/reservation.js","../src/models/room.js","../src/models/scene.js","../src/models/shortLink.js","../src/models/smsMessage.js","../src/models/space.js","../src/models/switch.js","../src/models/systemUser.js","../src/models/thermostat.js","../src/models/ticket.js","../src/models/timeSheet.js","../src/models/user.js","../src/models/vendor.js","../src/models/windowCovering.js"],"sourcesContent":["import * as Errors from \"./errors\";\nimport * as Events from \"./events\";\nimport * as Models from \"./models\";\n\nexport function entityFactory(type) {\n switch (type) {\n case \"reservation\":\n return Models.Reservation;\n case \"mediaFile\":\n return Models.MediaFile;\n case \"switch\":\n return Models.Switch;\n case \"alarm\":\n return Models.Alarm;\n case \"dimmer\":\n return Models.Dimmer;\n case \"lock\":\n return Models.Lock;\n case \"thermostat\":\n return Models.Thermostat;\n case \"windowCovering\":\n return Models.WindowCovering;\n case \"identification\":\n return Models.Identification;\n case \"user\":\n return Models.User;\n case \"systemUser\":\n return Models.SystemUser;\n case \"policy\":\n return Models.Policy;\n case \"courtesy\":\n return Models.Courtesy;\n case \"camera\":\n return Models.Camera;\n case \"motionSensor\":\n return Models.MotionSensor;\n case \"mediaSource\":\n return Models.MediaSource;\n case \"room\":\n return Models.Room;\n case \"space\":\n return Models.Space;\n case \"category\":\n return Models.Category;\n case \"ticket\":\n return Models.Ticket;\n case \"scene\":\n return Models.Scene;\n case \"gateway\":\n return Models.Gateway;\n case \"product\":\n return Models.Product;\n case \"order\":\n return Models.Order;\n case \"discoveredDevice\":\n return Models.DiscoveredDevice;\n case \"deviceRouter\":\n return Models.DeviceRouter;\n case \"credential\":\n return Models.Credential;\n case \"shortLink\":\n return Models.ShortLink;\n case \"energyReportShard\":\n return Models.EnergyReportShard;\n case \"energyReport\":\n return Models.EnergyReport;\n case \"smsMessage\":\n return Models.SmsMessage;\n case \"emailMessage\":\n return Models.EmailMessage;\n case \"announcement\":\n return Models.Announcement;\n case \"timeSheet\":\n return Models.TimeSheet;\n case \"property\":\n return Models.Property;\n case \"organization\":\n return Models.Organization;\n case \"issue\":\n return Models.Issue;\n case \"vendor\":\n return Models.Vendor;\n case \"log\":\n return Models.Log;\n default:\n throw new Error(\"Unknown entity type: \" + type);\n }\n}\n\nexport function errorFactory(errName) {\n switch (errName) {\n case \"AppError\":\n return Errors.AppError;\n case \"AuthenticationError\":\n return Errors.AuthenticationError;\n case \"AuthorizationError\":\n return Errors.AuthorizationError;\n case \"ConflictError\":\n return Errors.ConflictError;\n case \"DeviceCommError\":\n return Errors.DeviceCommError;\n case \"LoginError\":\n return Errors.LoginError;\n case \"NotFoundError\":\n return Errors.NotFoundError;\n case \"RequestError\":\n return Errors.RequestError;\n case \"SystemCommError\":\n return Errors.SystemCommError;\n case \"TokenExpiredError\":\n return Errors.TokenExpiredError;\n case \"UnprocessableRequestError\":\n return Errors.UnprocessableRequestError;\n case \"ValidationError\":\n return Errors.ValidationError;\n default:\n return new Error(\"Invalid error name: \" + errName);\n }\n}\n\nexport function eventFactory(eventName) {\n const AllEvents = Object.values(Events);\n const Event = AllEvents.find((E) => E.prototype.name === eventName);\n if (!Event) throw new Error(\"Invalid event name: \" + eventName);\n return Event;\n}\n","export class AppError extends Error {\n constructor(message = \"Internal Server Error\", options) {\n super(message, options);\n this.type = this.constructor.name;\n this.statusCode = 500;\n this.name = \"AppError\";\n Object.setPrototypeOf(this, AppError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class AuthenticationError extends AppError {\n constructor(message = \"Authentication Error\", options = {}) {\n super(message, options);\n this.statusCode = 401;\n this.name = \"AuthenticationError\";\n Object.setPrototypeOf(this, AuthenticationError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class AuthorizationError extends AppError {\n constructor(message = \"Authorization Error\", options = {}) {\n super(message, options);\n this.statusCode = 403;\n this.name = \"AuthorizationError\";\n Object.setPrototypeOf(this, AuthorizationError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class ConflictError extends AppError {\n constructor(message = \"Bad Request\", options = {}) {\n super(message, options);\n this.statusCode = 409;\n this.name = \"ConflictError\";\n Object.setPrototypeOf(this, ConflictError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class DeviceCommError extends AppError {\n constructor(message = \"Device Communication Error\", options = {}) {\n super(message, options);\n this.statusCode = 503;\n this.name = \"DeviceCommError\";\n Object.setPrototypeOf(this, DeviceCommError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class LoginError extends AppError {\n constructor(message = \"Invalid Login information provided\", options = {}) {\n super(message, options);\n this.statusCode = 401;\n this.name = \"LoginError\";\n Object.setPrototypeOf(this, LoginError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class NotFoundError extends AppError {\n constructor(message = \"Resource Not Found\", options = {}) {\n super(message, options);\n this.statusCode = 404;\n this.name = \"NotFoundError\";\n Object.setPrototypeOf(this, NotFoundError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class RequestError extends AppError {\n constructor(message = \"Bad Request\", options = {}) {\n super(message, options);\n this.statusCode = 400;\n this.name = \"RequestError\";\n Object.setPrototypeOf(this, RequestError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class SystemCommError extends AppError {\n constructor(message = \"System Communication Error\", options = {}) {\n super(message, options);\n this.statusCode = 503;\n this.name = \"SystemCommError\";\n Object.setPrototypeOf(this, SystemCommError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class TokenExpiredError extends AppError {\n constructor(message = \"Token Expired\", options = {}) {\n super(message, options);\n this.statusCode = 401;\n this.name = \"TokenExpiredError\";\n Object.setPrototypeOf(this, TokenExpiredError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class UnprocessableRequestError extends AppError {\n constructor(message = \"Unprocessable Request Error\", options = {}) {\n super(message, options);\n this.statusCode = 422;\n this.name = \"UnprocessableRequestError\";\n Object.setPrototypeOf(this, UnprocessableRequestError.prototype);\n }\n}\n","import { AppError } from \"./appError\";\n\nexport class ValidationError extends AppError {\n constructor(message = \"Validation Error\", options = {}) {\n super(message, options);\n this.statusCode = 400;\n this.name = \"ValidationError\";\n Object.setPrototypeOf(this, ValidationError.prototype);\n }\n}\n","// This file is auto-generated. Do not edit this file manually.\n// Generated on: 2025-03-20T14:44:14.759Z\n\nexport * from \"./applicationInUse\";\nexport * from \"./applicationOutOfUse\";\nexport * from \"./emailEvent\";\nexport * from \"./event\";\nexport * from \"./reservationCheckedIn\";\nexport * from \"./reservationCheckedOut\";\nexport * from \"./reservationSpaceChanged\";\nexport * from \"./sceneSet\";\nexport * from \"./shortLinkCreated\";\nexport * from \"./smsEvent\";\nexport * from \"./systemAlarmUpdated\";\nexport * from \"./systemCameraUpdated\";\nexport * from \"./systemCategoryUpdated\";\nexport * from \"./systemCourtesyUpdated\";\nexport * from \"./systemCredentialUpdated\";\nexport * from \"./systemDimmerUpdated\";\nexport * from \"./systemEntityDeleted\";\nexport * from \"./systemGatewayUpdated\";\nexport * from \"./systemLockUpdated\";\nexport * from \"./systemMediaSourceUpdated\";\nexport * from \"./systemMotionSensorUpdated\";\nexport * from \"./systemOrganizationUpdated\";\nexport * from \"./systemProductUpdated\";\nexport * from \"./systemPropertyUpdated\";\nexport * from \"./systemReservationUpdated\";\nexport * from \"./systemSpaceUpdated\";\nexport * from \"./systemSwitchUpdated\";\nexport * from \"./systemThermostatUpdated\";\nexport * from \"./systemUserUpdated\";\nexport * from \"./systemWindowCoveringUpdated\";","export const amqpExchanges = {\n // routes commands based on `command-name` header and in many cases `property-id` header\n Commands: {\n name: \"kohost.commands\",\n type: \"headers\",\n options: {\n durable: true,\n },\n },\n CommandResponses: {\n name: \"kohost.commandResponses\",\n type: \"topic\",\n options: {\n durable: true,\n },\n },\n // routes events based on routing keys\n DriverEvents: {\n name: \"kohost.events.drivers\",\n type: \"topic\",\n options: {\n durable: true,\n },\n },\n AppEvents: {\n name: \"kohost.events.app\",\n type: \"topic\",\n options: {\n durable: true,\n },\n },\n Direct: {\n name: \"kohost.direct\",\n type: \"direct\",\n options: {\n durable: true,\n },\n },\n // dead letter exchange\n dlx: {\n name: \"kohost.dlx\",\n type: \"direct\",\n },\n};\n\nexport const deviceTypes = [\n \"dimmer\",\n \"switch\",\n \"thermostat\",\n \"lock\",\n \"windowCovering\",\n \"courtesy\",\n \"alarm\",\n \"camera\",\n \"mediaSource\",\n \"motionSensor\",\n \"gateway\",\n];\n","import { amqpExchanges } from \"../defs\";\n\nexport class Event {\n constructor(data, context = {}) {\n this.data = [];\n this.context = context;\n if (!data) throw new Error(\"Event data is required\");\n if (typeof data !== \"object\" && !Array.isArray(data))\n throw new Error(\"Event data must be an object or array\");\n\n if (!Array.isArray(data)) this.data = [data];\n else this.data = data;\n }\n\n get organizationId() {\n return this.context.organizationId || \"*\";\n }\n\n get propertyId() {\n return this.context.propertyId || \"*\";\n }\n\n static get type() {\n return \"Event\";\n }\n\n static get exchange() {\n return amqpExchanges.DriverEvents.name;\n }\n\n static get entity() {\n return \"\";\n }\n\n build() {\n return { data: { ...this.data } };\n }\n\n get routingKey() {\n return `${this.organizationId}.${this.propertyId}.${this.constructor.entity}.${this.constructor.name}`;\n }\n}\n","import { amqpExchanges } from \"../defs\";\nimport { Event } from \"./event\";\n\nexport class ApplicationInUse extends Event {\n constructor(data = {}, context) {\n super(data, context);\n }\n\n static get name() {\n return \"ApplicationInUse\";\n }\n\n static get entity() {\n return \"app\";\n }\n\n static get exchange() {\n return amqpExchanges.AppEvents.name;\n }\n}\n","import { amqpExchanges } from \"../defs\";\nimport { Event } from \"./event\";\n\nexport class ApplicationOutOfUse extends Event {\n constructor(data = {}, context = {}) {\n super(data, context);\n }\n\n static get name() {\n return \"ApplicationOutOfUse\";\n }\n\n static get entity() {\n return \"app\";\n }\n\n static get exchange() {\n return amqpExchanges.AppEvents.name;\n }\n}\n","import { Event } from \"./event\";\n\nexport class EmailEvent extends Event {\n constructor(email, context) {\n super(email, context);\n }\n\n static get name() {\n return \"EmailEvent\";\n }\n\n static get entity() {\n return \"emailMessage\";\n }\n}\n","import { amqpExchanges } from \"../defs\";\nimport { Event } from \"./event\";\n\nexport class ReservationCheckedIn extends Event {\n constructor(reservation, context) {\n super(reservation, context);\n }\n\n static get name() {\n return \"ReservationCheckedIn\";\n }\n\n static get entity() {\n return \"reservation\";\n }\n\n static get exchange() {\n return amqpExchanges.AppEvents.name;\n }\n}\n","import { amqpExchanges } from \"../defs\";\nimport { Event } from \"./event\";\n\nexport class ReservationCheckedOut extends Event {\n constructor(reservation, context) {\n super(reservation, context);\n }\n\n static get name() {\n return \"ReservationCheckedOut\";\n }\n\n static get entity() {\n return \"reservation\";\n }\n\n static get exchange() {\n return amqpExchanges.AppEvents.name;\n }\n}\n","import { amqpExchanges } from \"../defs\";\nimport { Event } from \"./event\";\n\nexport class ReservationSpaceChanged extends Event {\n constructor(reservation, context) {\n super(reservation, context);\n }\n\n static get name() {\n return \"ReservationSpaceChanged\";\n }\n\n static get entity() {\n return \"reservation\";\n }\n\n static get exchange() {\n return amqpExchanges.AppEvents.name;\n }\n}\n","import { Event } from \"./event\";\n\nexport class SceneSet extends Event {\n constructor(scene, context) {\n super(scene, context);\n }\n\n static get name() {\n return \"SceneSet\";\n }\n\n static get entity() {\n return \"scene\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class ShortLinkCreated extends Event {\n constructor(shortLink, context) {\n super(shortLink, context);\n }\n\n static get name() {\n return \"ShortLinkCreated\";\n }\n\n static get entity() {\n return \"shortLink\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SMSEvent extends Event {\n constructor(sms, context) {\n super(sms, context);\n }\n\n static get name() {\n return \"SMSEvent\";\n }\n\n static get entity() {\n return \"smsMessage\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemAlarmUpdated extends Event {\n constructor(alarm, context) {\n super(alarm, context);\n }\n\n static get name() {\n return \"SystemAlarmUpdated\";\n }\n\n static get entity() {\n return \"alarm\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemCameraUpdated extends Event {\n constructor(camera, context) {\n super(camera, context);\n }\n\n static get name() {\n return \"SystemCameraUpdated\";\n }\n\n static get entity() {\n return \"camera\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemCategoryUpdated extends Event {\n constructor(category, context) {\n super(category, context);\n }\n\n static get name() {\n return \"SystemCategoryUpdated\";\n }\n\n static get entity() {\n return \"category\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemCourtesyUpdated extends Event {\n constructor(courtesy, context) {\n super(courtesy, context);\n }\n\n static get name() {\n return \"SystemCourtesyUpdated\";\n }\n\n static get entity() {\n return \"courtesy\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemCredentialUpdated extends Event {\n constructor(cred, context) {\n super(cred, context);\n }\n\n static get name() {\n return \"SystemCredentialUpdated\";\n }\n\n static get entity() {\n return \"credential\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemDimmerUpdated extends Event {\n constructor(dimmer, context) {\n super(dimmer, context);\n }\n\n static get name() {\n return \"SystemDimmerUpdated\";\n }\n\n static get entity() {\n return \"dimmer\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemEntityDeleted extends Event {\n constructor(data, context) {\n super(data, context);\n }\n\n static get name() {\n return \"SystemEntityDeleted\";\n }\n\n static get entity() {\n return \"entity\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemGatewayUpdated extends Event {\n constructor(gateway, context) {\n super(gateway, context);\n }\n\n static get name() {\n return \"SystemGatewayUpdated\";\n }\n\n static get entity() {\n return \"gateway\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemLockUpdated extends Event {\n constructor(lock, context) {\n super(lock, context);\n }\n\n static get name() {\n return \"SystemLockUpdated\";\n }\n\n static get entity() {\n return \"lock\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemMediaSourceUpdated extends Event {\n constructor(mediaSource, context) {\n super(mediaSource, context);\n }\n\n static get name() {\n return \"SystemMediaSourceUpdated\";\n }\n\n static get entity() {\n return \"mediaSource\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemMotionSensorUpdated extends Event {\n constructor(motion, context) {\n super(motion, context);\n }\n\n static get name() {\n return \"SystemMotionSensorUpdated\";\n }\n\n static get entity() {\n return \"motionSensor\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemOrganizationUpdated extends Event {\n constructor(organization, context) {\n super(organization, context);\n }\n\n static get name() {\n return \"SystemOrganizationUpdated\";\n }\n\n static get entity() {\n return \"organization\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemProductUpdated extends Event {\n constructor(product, context) {\n super(product, context);\n }\n\n static get name() {\n return \"SystemProductUpdated\";\n }\n\n static get entity() {\n return \"product\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemPropertyUpdated extends Event {\n constructor(property, context) {\n super(property, context);\n }\n\n static get name() {\n return \"SystemPropertyUpdated\";\n }\n\n static get entity() {\n return \"property\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemReservationUpdated extends Event {\n constructor(reservation, context) {\n super(reservation, context);\n }\n\n static get name() {\n return \"SystemReservationUpdated\";\n }\n\n static get entity() {\n return \"reservation\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemSpaceUpdated extends Event {\n constructor(space, context) {\n super(space, context);\n }\n\n static get name() {\n return \"SystemSpaceUpdated\";\n }\n\n static get entity() {\n return \"space\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemSwitchUpdated extends Event {\n constructor(_switch, context) {\n super(_switch, context);\n }\n\n static get name() {\n return \"SystemSwitchUpdated\";\n }\n\n static get entity() {\n return \"switch\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemThermostatUpdated extends Event {\n constructor(thermostat, context) {\n super(thermostat, context);\n }\n\n static get name() {\n return \"SystemThermostatUpdated\";\n }\n\n static get entity() {\n return \"thermostat\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemUserUpdated extends Event {\n constructor(user, context) {\n super(user, context);\n }\n\n static get name() {\n return \"SystemUserUpdated\";\n }\n\n static get entity() {\n return \"user\";\n }\n}\n","import { Event } from \"./event\";\n\nexport class SystemWindowCoveringUpdated extends Event {\n constructor(wc, context) {\n super(wc, context);\n }\n\n static get name() {\n return \"SystemWindowCoveringUpdated\";\n }\n\n static get entity() {\n return \"windowCovering\";\n }\n}\n","import { ValidationError } from \"../errors/validationError\";\n\nexport class Entity {\n constructor(data) {\n if (!this.schema) {\n throw new Error(\"Schema is not defined\");\n }\n\n if (!this.validator) {\n throw new Error(\"Validator is not defined\");\n }\n\n this.#validate(data);\n }\n\n get schemaProperties() {\n return Object.keys(this.validator.schema.properties);\n }\n\n #validate(data) {\n const valid = this.validator(data);\n if (!valid) {\n throw new ValidationError(`Invalid ${this.constructor.name}`, {\n cause: this.validator.errors,\n });\n }\n }\n}\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\nimport { Ajv } from \"ajv\";\nimport addFormats from \"ajv-formats\";\n\nimport alarmschema from \"./schemas/alarm.js\";\nimport announcementschema from \"./schemas/announcement.js\";\nimport automationschema from \"./schemas/automation.js\";\nimport cameraschema from \"./schemas/camera.js\";\nimport categoryschema from \"./schemas/category.js\";\nimport courtesyschema from \"./schemas/courtesy.js\";\nimport credentialschema from \"./schemas/credential.js\";\nimport definitionsschema from \"./schemas/definitions.js\";\nimport deviceRouterschema from \"./schemas/deviceRouter.js\";\nimport dimmerschema from \"./schemas/dimmer.js\";\nimport discoveredDeviceschema from \"./schemas/discoveredDevice.js\";\nimport emailMessageschema from \"./schemas/emailMessage.js\";\nimport energyReportschema from \"./schemas/energyReport.js\";\nimport energyReportShardschema from \"./schemas/energyReportShard.js\";\nimport gatewayschema from \"./schemas/gateway.js\";\nimport identificationschema from \"./schemas/identification.js\";\nimport issueschema from \"./schemas/issue.js\";\nimport lockschema from \"./schemas/lock.js\";\nimport logschema from \"./schemas/log.js\";\nimport mediaFileschema from \"./schemas/mediaFile.js\";\nimport mediaSourceschema from \"./schemas/mediaSource.js\";\nimport motionSensorschema from \"./schemas/motionSensor.js\";\nimport orderschema from \"./schemas/order.js\";\nimport organizationschema from \"./schemas/organization.js\";\nimport paymentschema from \"./schemas/payment.js\";\nimport policyschema from \"./schemas/policy.js\";\nimport productschema from \"./schemas/product.js\";\nimport propertyschema from \"./schemas/property.js\";\nimport reservationschema from \"./schemas/reservation.js\";\nimport roomschema from \"./schemas/room.js\";\nimport sceneschema from \"./schemas/scene.js\";\nimport shortLinkschema from \"./schemas/shortLink.js\";\nimport smsMessageschema from \"./schemas/smsMessage.js\";\nimport spaceschema from \"./schemas/space.js\";\nimport switchschema from \"./schemas/switch.js\";\nimport systemUserschema from \"./schemas/systemUser.js\";\nimport thermostatschema from \"./schemas/thermostat.js\";\nimport ticketschema from \"./schemas/ticket.js\";\nimport timeSheetschema from \"./schemas/timeSheet.js\";\nimport userschema from \"./schemas/user.js\";\nimport vendorschema from \"./schemas/vendor.js\";\nimport windowCoveringschema from \"./schemas/windowCovering.js\";\n\nconst schemas = [\n alarmschema,\n announcementschema,\n automationschema,\n cameraschema,\n categoryschema,\n courtesyschema,\n credentialschema,\n definitionsschema,\n deviceRouterschema,\n dimmerschema,\n discoveredDeviceschema,\n emailMessageschema,\n energyReportschema,\n energyReportShardschema,\n gatewayschema,\n identificationschema,\n issueschema,\n lockschema,\n logschema,\n mediaFileschema,\n mediaSourceschema,\n motionSensorschema,\n orderschema,\n organizationschema,\n paymentschema,\n policyschema,\n productschema,\n propertyschema,\n reservationschema,\n roomschema,\n sceneschema,\n shortLinkschema,\n smsMessageschema,\n spaceschema,\n switchschema,\n systemUserschema,\n thermostatschema,\n ticketschema,\n timeSheetschema,\n userschema,\n vendorschema,\n windowCoveringschema,\n];\n\nconst ajv = new Ajv({\n allErrors: true,\n useDefaults: true,\n strict: false,\n allowMatchingProperties: true,\n allowUnionTypes: true,\n strictRequired: false,\n schemas: schemas,\n});\n\naddFormats(ajv);\n\nexport const validateAlarm = ajv.compile(alarmschema);\nexport const validateAnnouncement = ajv.compile(announcementschema);\nexport const validateAutomation = ajv.compile(automationschema);\nexport const validateCamera = ajv.compile(cameraschema);\nexport const validateCategory = ajv.compile(categoryschema);\nexport const validateCourtesy = ajv.compile(courtesyschema);\nexport const validateCredential = ajv.compile(credentialschema);\nexport const validateDeviceRouter = ajv.compile(deviceRouterschema);\nexport const validateDimmer = ajv.compile(dimmerschema);\nexport const validateDiscoveredDevice = ajv.compile(discoveredDeviceschema);\nexport const validateEmailMessage = ajv.compile(emailMessageschema);\nexport const validateEnergyReport = ajv.compile(energyReportschema);\nexport const validateEnergyReportShard = ajv.compile(energyReportShardschema);\nexport const validateGateway = ajv.compile(gatewayschema);\nexport const validateIdentification = ajv.compile(identificationschema);\nexport const validateIssue = ajv.compile(issueschema);\nexport const validateLock = ajv.compile(lockschema);\nexport const validateLog = ajv.compile(logschema);\nexport const validateMediaFile = ajv.compile(mediaFileschema);\nexport const validateMediaSource = ajv.compile(mediaSourceschema);\nexport const validateMotionSensor = ajv.compile(motionSensorschema);\nexport const validateOrder = ajv.compile(orderschema);\nexport const validateOrganization = ajv.compile(organizationschema);\nexport const validatePayment = ajv.compile(paymentschema);\nexport const validatePolicy = ajv.compile(policyschema);\nexport const validateProduct = ajv.compile(productschema);\nexport const validateProperty = ajv.compile(propertyschema);\nexport const validateReservation = ajv.compile(reservationschema);\nexport const validateRoom = ajv.compile(roomschema);\nexport const validateScene = ajv.compile(sceneschema);\nexport const validateShortLink = ajv.compile(shortLinkschema);\nexport const validateSmsMessage = ajv.compile(smsMessageschema);\nexport const validateSpace = ajv.compile(spaceschema);\nexport const validateSwitch = ajv.compile(switchschema);\nexport const validateSystemUser = ajv.compile(systemUserschema);\nexport const validateThermostat = ajv.compile(thermostatschema);\nexport const validateTicket = ajv.compile(ticketschema);\nexport const validateTimeSheet = ajv.compile(timeSheetschema);\nexport const validateUser = ajv.compile(userschema);\nexport const validateVendor = ajv.compile(vendorschema);\nexport const validateWindowCovering = ajv.compile(windowCoveringschema);\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"alarm.json\",\n title: \"Alarm\",\n description: \"Any smart alarm system\",\n type: \"object\",\n required: [\"id\", \"type\", \"areas\", \"zones\", \"driver\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n description: \"Name of the alarm\",\n },\n offline: {\n type: \"boolean\",\n },\n type: {\n type: \"string\",\n enum: [\"alarm\"],\n default: \"alarm\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n areas: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n number: {\n type: \"number\",\n },\n name: {\n type: \"string\",\n },\n securityMode: {\n type: [\"string\", \"null\"],\n enum: [\"arming\", \"disarming\", \"armed\", \"disarmed\", \"alarm\", null],\n },\n },\n additionalProperties: false,\n },\n },\n zones: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n number: {\n type: \"number\",\n minimum: 0,\n },\n name: {\n type: \"string\",\n },\n secure: {\n type: [\"boolean\", \"null\"],\n },\n bypassed: {\n type: [\"boolean\", \"null\"],\n },\n },\n additionalProperties: false,\n },\n },\n chime: {\n type: \"boolean\",\n description: \"Reflects whether console chime is enabled\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n address: {\n $ref: \"definitions.json#/definitions/address\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"announcement.json\",\n title: \"Announcement\",\n description: \"Announcement message sent to users\",\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: {\n type: \"string\",\n enum: [\"announcement\"],\n default: \"announcement\",\n },\n users: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n minItems: 1,\n },\n group: {\n type: \"string\",\n },\n body: {\n type: \"string\",\n },\n media: {\n $ref: \"mediaFile.json\",\n },\n sentBy: {\n type: \"string\",\n },\n tags: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n },\n additionalProperties: false,\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"automation.json\",\n title: \"Automation\",\n description: \"An automation is a collection of triggers and actions\",\n type: \"object\",\n required: [\"id\", \"type\", \"trigger\", \"actions\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n description: \"The friendly name of the automation\",\n },\n type: {\n type: \"string\",\n enum: [\"automation\"],\n default: \"automation\",\n },\n isEnabled: {\n type: \"boolean\",\n description: \"Whether the automation is currently enabled\",\n default: true,\n },\n\n trigger: {\n type: \"object\",\n description: \"The trigger that initiates the automation\",\n required: [\"discriminator\", \"schedule\"],\n properties: {\n discriminator: {\n type: \"string\",\n enum: [\"time\"],\n description: \"Type of trigger\",\n },\n // Time-based trigger properties\n schedule: {\n type: \"object\",\n description: \"Schedule for time-based triggers\",\n required: [\"days\", \"time\", \"timezone\"],\n properties: {\n days: {\n type: \"array\",\n description: \"Days of the week (0 = Sunday, 6 = Saturday)\",\n items: {\n type: \"integer\",\n minimum: 0,\n maximum: 6,\n },\n },\n time: {\n type: \"string\",\n description: \"Time of day to trigger the automation\",\n },\n timeOffsetSeconds: {\n type: \"integer\",\n description: \"Offset in seconds from the scheduled time\",\n default: 0,\n },\n repeat: {\n type: \"boolean\",\n description: \"Whether the schedule repeats\",\n default: true,\n },\n timezone: {\n type: \"string\",\n description: \"Timezone for the schedule (IANA timezone format)\",\n },\n },\n },\n },\n },\n actions: {\n type: \"array\",\n description: \"Actions to perform when the trigger conditions are met\",\n items: {\n type: \"object\",\n required: [\"deviceId\", \"roomId\", \"discriminator\", \"state\"],\n properties: {\n deviceId: {\n type: \"string\",\n description: \"ID of the device to control\",\n },\n roomId: {\n type: \"string\",\n description: \"ID of the room containing the device\",\n },\n discriminator: {\n type: \"string\",\n description:\n \"Type discriminator for the device (e.g., 'windowCovering', 'switch')\",\n },\n duration: {\n type: \"integer\",\n description:\n \"Duration in seconds to keep the device in the configured state\",\n minimum: 0,\n },\n state: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"property\", \"value\"],\n properties: {\n property: {\n type: \"string\",\n description:\n \"Property to set (e.g., 'state', 'level', 'setpoint')\",\n },\n value: {\n type: [\"string\", \"number\", \"boolean\"],\n description: \"Value to set the property to\",\n },\n },\n },\n },\n },\n },\n minItems: 1,\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/createdAt\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/updatedAt\",\n },\n lastTriggeredAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the automation was last triggered\",\n },\n },\n additionalProperties: false,\n};\n\nexport const getters = {\n /**\n * Check if the automation is time-based\n * @returns {boolean} True if the automation is time-based\n */\n isTimeBased() {\n return (\n this.discriminator === \"time\" ||\n (this.trigger && this.trigger.type === \"time\")\n );\n },\n\n /**\n * Check if the automation is device-based\n * @returns {boolean} True if the automation is device-based\n */\n isDeviceBased() {\n return (\n this.discriminator === \"device\" ||\n (this.trigger && this.trigger.type !== \"time\")\n );\n },\n\n /**\n * Check if the automation is repeating (only applicable for time-based automations)\n * @returns {boolean} True if the automation repeats\n */\n isRepeating() {\n return this.isTimeBased() && this.trigger?.schedule?.repeat !== false;\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"camera.json\",\n title: \"Camera\",\n description: \"Any smart camera\",\n type: \"object\",\n required: [\"id\", \"type\", \"driver\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n discriminator: {\n type: \"string\",\n enum: [\n \"doorStation\"\n ]\n },\n type: {\n type: \"string\",\n enum: [\"camera\"],\n default: \"camera\",\n },\n offline: {\n type: \"boolean\",\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n liveStreams: {\n type: \"object\",\n additionalProperties: false,\n $comment:\n \"This is now deprecated. Use liveStream instead. This will remain here for backwards compatibility.\",\n properties: {\n iframe: {\n type: [\"string\", \"null\"],\n },\n hls: {\n type: [\"string\", \"null\"],\n },\n webRTC: {\n type: [\"string\", \"null\"],\n },\n rtsp: {\n type: [\"string\", \"null\"],\n },\n },\n },\n liveStream: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n id: {\n type: \"string\",\n },\n driver: {\n type: \"string\",\n enum: [\n \"aws-kinesis\",\n \"cloudflare-stream\",\n \"doorbird\",\n \"digital-watchdog\",\n \"mediamtx\",\n ],\n },\n allowedOrigins: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n authRequired: {\n type: \"boolean\",\n },\n iframe: {\n type: [\"string\", \"null\"],\n },\n hls: {\n type: [\"string\", \"null\"],\n },\n webRTC: {\n type: [\"string\", \"null\"],\n },\n rtsp: {\n type: [\"string\", \"null\"],\n description: \"Local RTSP stream URL\",\n examples: [\n \"rtsp://192.168.1.4:544/channels/1\",\n \"rtsp://10.145.6.129:8554/unicast\",\n ],\n },\n previewImage: {\n type: [\"string\", \"null\"],\n description: \"Source to preview the camera stream\",\n examples: [\n \"https://example.com/preview.jpg\",\n \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QBYRXhpZgAATU0AKgAAAAgAA1EQAAEAAAABAQAAAFERAAQAAAABAAABAgABAA\",\n ],\n },\n },\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"category.json\",\n title: \"Category\",\n type: \"object\",\n required: [\"id\", \"type\", \"discriminator\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n enum: [\"category\"],\n default: \"category\",\n },\n name: {\n type: \"string\",\n minLength: 1,\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n description: {\n type: \"string\",\n },\n image: {\n $ref: \"mediaFile.json\",\n },\n rating: {\n type: \"number\",\n minimum: 0,\n maximum: 10,\n default: 9,\n },\n discriminator: {\n type: \"string\",\n enum: [\"space\", \"product\", \"mediaFile\"],\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"courtesy.json\",\n title: \"Courtesy\",\n description: \"Any smart courtesy system\",\n type: \"object\",\n required: [\"id\", \"type\", \"driver\", \"supportedStates\", \"state\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n offline: {\n type: \"boolean\",\n },\n supportedStates: {\n type: \"array\",\n uniqueItems: true,\n items: {\n enum: [\"privacy\", \"service\", \"none\"],\n },\n },\n state: {\n type: \"string\",\n $ref: \"#/properties/supportedStates/items\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"credential.json\",\n title: \"Credential\",\n type: \"object\",\n required: [\"type\", \"credential\", \"expires\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"credential\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n discriminator: {\n type: \"string\",\n enum: [\n \"verificationCode\",\n \"token\",\n \"mobileKey\",\n \"pin\",\n \"publicKey\",\n \"passkeyChallenge\",\n ],\n },\n credential: {\n type: \"string\",\n },\n userId: {\n type: \"string\",\n },\n organizationId: {\n type: \"string\",\n },\n propertyId: {\n type: \"string\",\n },\n deviceId: {\n type: \"string\",\n },\n userAgent: {\n type: \"string\",\n },\n expires: {\n type: [\"string\", \"object\", \"null\"],\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"definitions.json\",\n title: \"Definitions\",\n definitions: {\n id: {\n type: \"string\",\n description: \"Identifier of the object.\",\n not: {\n enum: [\"global\", \"system\"],\n },\n },\n systemId: {\n type: \"string\",\n description: \"Identifier of the object, directly related to the system.\",\n },\n systemData: {\n type: \"object\",\n },\n metadata: {\n type: \"object\",\n default: {},\n },\n date: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n createdAt: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n updatedAt: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n file: {\n type: \"object\",\n required: [\"name\", \"type\", \"data\"],\n properties: {\n name: {\n type: \"string\",\n description: \"Name of the file.\",\n },\n type: {\n type: \"string\",\n description: \"MIME type of the file (e.g. application/pdf).\",\n },\n data: {\n type: \"string\",\n description: \"Base64-encoded data of the file.\",\n },\n },\n },\n address: {\n type: \"object\",\n properties: {\n id: {\n type: \"string\",\n },\n line1: {\n type: \"string\",\n },\n line2: {\n type: \"string\",\n },\n line3: {\n type: \"string\",\n },\n city: {\n type: \"string\",\n },\n state: {\n type: \"string\",\n },\n postalCode: {\n type: \"string\",\n },\n countryCode: {\n type: \"string\",\n minLength: 2,\n maxLength: 2,\n },\n },\n },\n driver: {\n type: \"string\",\n description: \"Driver used to communicate with the object.\",\n enum: [\n \"adlink\",\n \"aws-kinesis\",\n \"bacnet\",\n \"butler\",\n \"comelit\",\n \"crestron\",\n \"dell\",\n \"digital-watchdog\",\n \"distech\",\n \"dmp\",\n \"doorbird\",\n \"dormakaba\",\n \"dsc\",\n \"ecobee\",\n \"epson\",\n \"geovision-rs\",\n \"geovision-as-manager\",\n \"honeywell-vista\",\n \"igor\",\n \"inncom\",\n \"isapi\",\n \"kohost-k7\",\n \"kohost\",\n \"lg\",\n \"lg-webos\",\n \"lapi\",\n \"lirc\",\n \"mews\",\n \"mht\",\n \"paxton\",\n \"pelican-wireless\",\n \"power-shades\",\n \"rachio\",\n \"rebrandly\",\n \"relay\",\n \"rtsp\",\n \"salto\",\n \"salto-irn\",\n \"samsung\",\n \"se\",\n \"sendgrid\",\n \"sonifi\",\n \"stay-n-touch\",\n \"storable\",\n \"twilio\",\n \"unifi\",\n \"valcom\",\n \"vivotek\",\n \"vizio\",\n \"wisenet\",\n \"cloudflare-images\",\n \"cloudflare-stream\",\n \"insperia-privacy\",\n ],\n },\n type: {\n type: \"string\",\n enum: [\n \"alarm\",\n \"dimmer\",\n \"switch\",\n \"motionSensor\",\n \"windowCovering\",\n \"camera\",\n \"mediaSource\",\n \"thermostat\",\n \"lock\",\n \"courtesy\",\n \"gateway\",\n \"tv\",\n \"dvr\",\n \"appleTv\",\n \"discPlayer\",\n \"mediaPlayer\",\n \"uncontrolledDevice\",\n ],\n },\n name: {\n type: \"string\",\n },\n supportedNotifications: {\n type: \"array\",\n uniqueItems: true,\n items: {\n enum: [\n \"button 1\",\n \"button 2\",\n \"button 3\",\n \"button 4\",\n \"button 5\",\n \"idle\",\n \"powerHasBeedApplied\",\n \"acMainsDisconnected\",\n \"acMainsReconnected\",\n \"replaceBatterySoon\",\n \"replaceBatteryNow\",\n \"batteryOk\",\n \"hardwareFailure\",\n \"softwareFailure\",\n \"hardwareFailureWithCode\",\n \"softwareFailureWithCode\",\n \"motionDetection\",\n \"airFilterNeedsCleaned\",\n \"airFilterNeedsReplaced\",\n \"smokeDetected\",\n \"outsideSafeTemperatureRange\",\n \"outsideSafeHumidityRange\",\n \"scheduleMaintenance\",\n \"doorAjar\",\n \"communicationFailure\",\n \"communicationOk\",\n \"burglarAlarm\",\n \"fireAlarm\",\n ],\n },\n },\n notification: {\n type: [\"object\", \"null\"],\n properties: {\n name: {\n type: \"string\",\n $ref: \"#/definitions/supportedNotifications/items\",\n },\n timestamp: {\n type: \"number\",\n minimum: 1655907956593,\n },\n description: {\n type: \"string\",\n },\n },\n },\n batteryLevel: {\n type: \"number\",\n minimum: 0,\n maximum: 100,\n },\n watts: {\n type: \"number\",\n minimum: 0,\n },\n revenue: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n date: {\n type: \"string\",\n format: \"date-time\",\n },\n price: {\n type: \"number\",\n },\n tax: {\n type: [\"number\", \"null\"],\n },\n },\n },\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"deviceRouter.json\",\n title: \"Device Router\",\n description:\n \"A device router contains instructions on where to route devices based on their organization and driver.\",\n type: \"object\",\n required: [\"driver\", \"organizationId\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"deviceRouter\",\n enum: [\"deviceRouter\"],\n },\n driver: {\n type: \"string\",\n },\n organizationId: {\n type: [\"string\", \"null\"],\n description: \"Reference (id) to the organization that owns this router\",\n },\n devices: {\n type: \"object\",\n additionalProperties: true,\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"dimmer.json\",\n title: \"Dimmer\",\n description: \"Any smart dimmer\",\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n offline: {\n type: \"boolean\",\n },\n level: {\n type: [\"number\", \"null\"],\n minimum: 0,\n maximum: 100,\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n },\n required: [\"id\", \"type\", \"level\", \"driver\"],\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"discoveredDevice.json\",\n title: \"Discovered Device\",\n description:\n \"A device that has been discovered by Kohost, but not yet added to the Kohost system.\",\n type: \"object\",\n required: [\"name\", \"deviceId\", \"deviceData\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n deviceId: {\n type: \"string\",\n },\n type: {\n type: \"string\",\n enum: [\"discoveredDevice\"],\n default: \"discoveredDevice\",\n },\n discriminator: {\n $ref: \"definitions.json#/definitions/type\",\n },\n driver: {\n type: \"string\",\n },\n deviceData: {\n type: \"object\",\n },\n ignore: {\n type: \"boolean\",\n },\n organizationId: {\n type: [\"string\", \"null\"],\n description: \"Reference (id) to the organization that owns this device\",\n },\n propertyId: {\n type: [\"string\", \"null\"],\n description: \"Reference (id) to the property that this device belongs to\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"emailMessage.json\",\n title: \"Email Message\",\n type: \"object\",\n required: [\"to\", \"from\", \"status\", \"subject\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"emailMessage\",\n enum: [\"emailMessage\"],\n },\n to: {\n type: \"string\",\n pattern: \"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\\\.[a-zA-Z0-9-.]+$\",\n },\n from: {\n type: \"string\",\n pattern: \".*<[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\\\.[a-zA-Z0-9-.]+>.*\",\n description: \"Must be in the format of 'Sender <email@example.com>\",\n },\n subject: {\n type: \"string\",\n },\n status: {\n type: \"string\",\n enum: [\n \"queued\",\n \"sending\",\n \"sent\",\n \"deferred\",\n \"delivered\",\n \"undelivered\",\n \"bounced\",\n \"blocked\",\n \"receiving\",\n \"received\",\n \"opened\",\n \"clicked\",\n \"unsubscribed\",\n \"spamReport\",\n ],\n },\n statusMessage: {\n type: \"string\",\n },\n html: {\n type: \"string\",\n },\n text: {\n type: \"string\",\n },\n driver: {\n type: \"string\",\n },\n appData: {\n type: \"object\",\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"energyReport.json\",\n title: \"Energy Report\",\n description: \"Hourly Report for Energy based on energy report shards\",\n type: \"object\",\n required: [\n \"id\",\n \"type\",\n \"roomId\",\n \"first\",\n \"last\",\n \"consumption\",\n \"totals\",\n \"costPerKw\",\n ],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n enum: [\"energyReport\"],\n default: \"energyReport\",\n },\n reportTime: {\n type: \"string\",\n enum: [\"hourly\", \"daily\", \"monthly\"],\n },\n roomId: {\n $ref: \"definitions.json#/definitions/id\",\n },\n first: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n last: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n consumption: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"id\", \"type\", \"kwh\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n },\n kwh: {\n type: \"number\",\n minimum: 0,\n },\n },\n },\n },\n totals: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"lights\", \"climate\", \"media\"],\n properties: {\n lights: {\n type: \"number\",\n minimum: 0,\n },\n climate: {\n type: \"number\",\n minimum: 0,\n },\n media: {\n type: \"number\",\n minimum: 0,\n },\n },\n },\n },\n costPerKw: {\n type: \"number\",\n minimum: 0,\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"energyReportShard.json\",\n title: \"Energy Report Shard\",\n description: \"Shard used for Energy Reports\",\n type: \"object\",\n required: [\n \"id\",\n \"type\",\n \"roomId\",\n \"first\",\n \"last\",\n \"data\",\n \"ndata\",\n \"expires\",\n ],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n enum: [\"energyReportShard\"],\n default: \"energyReportShard\",\n },\n roomId: {\n $ref: \"definitions.json#/definitions/id\",\n },\n first: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n last: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n data: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"time\", \"watts\", \"id\", \"type\", \"value\"],\n properties: {\n time: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n },\n value: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n },\n },\n },\n },\n ndata: {\n type: \"integer\",\n minimum: 0,\n maximum: 100000,\n default: 0,\n },\n expires: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"iotGateway.json\",\n title: \"Gateway\",\n description:\n \"Any smart gateway that is an entrypoint for controlling devices\",\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n offline: {\n type: \"boolean\",\n },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n status: {\n type: \"string\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n },\n required: [\"id\", \"type\", \"status\", \"driver\"],\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"identification.json\",\n title: \"Identification\",\n type: \"object\",\n required: [\"type\"],\n additionalProperties: false,\n oneOf: [\n {\n required: [\"number\"],\n },\n {\n required: [\"encryptedNumber\"],\n },\n ],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n enum: [\"driversLicense\", \"passport\", \"identityCard\", \"visa\"],\n },\n number: {\n type: \"string\",\n },\n maskedNumber: {\n type: \"string\",\n },\n encryptedNumber: {\n type: \"string\",\n },\n issued: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n expires: {\n type: [\"string\", \"object\", \"null\"],\n format: \"date-time\",\n },\n verified: {\n type: \"boolean\",\n },\n matched: {\n type: \"boolean\",\n },\n firstName: {\n type: \"string\",\n },\n lastName: {\n type: \"string\",\n },\n issuingCountry: {\n type: \"string\",\n minLength: 2,\n maxLength: 2,\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"issue.json\",\n title: \"Issue\",\n description: \"An issue associated with ticketing and concierge.\",\n type: \"object\",\n required: [\"id\", \"type\", \"name\", \"department\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n enum: [\"issue\"],\n default: \"issue\",\n },\n name: {\n type: \"string\",\n },\n description: {\n type: \"string\",\n },\n department: {\n type: \"string\",\n },\n autoAssign: {\n type: \"object\",\n properties: {\n userId: {\n type: \"string\",\n description: \"The user ID to assign tickets with this issue to.\",\n },\n vendorId: {\n type: \"string\",\n description: \"The vendor ID to assign tickets with this issue to.\",\n },\n priority: {\n $ref: \"ticket.json#/properties/priority\",\n description: \"The priority to assign tickets with this issue to.\",\n },\n tags: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n },\n },\n notify: {\n type: \"array\",\n description: \"A list of entities to notify when this issue is triggered.\",\n default: [],\n items: {\n type: \"object\",\n required: [\"id\", \"discriminator\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the entity to notify.\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\"],\n },\n },\n },\n },\n systemKey: {\n type: \"string\",\n },\n autoCreateTicket: {\n type: \"boolean\",\n default: true,\n },\n excludedResources: {\n type: \"array\",\n description:\n \"A list of resources that should not trigger notifications of this issue\",\n items: {\n type: \"string\",\n },\n default: [],\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"lock.json\",\n title: \"Lock\",\n description: \"Any smart lock\",\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n },\n offline: {\n type: \"boolean\",\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n state: {\n type: [\"string\", \"null\"],\n enum: [\"locked\", \"unlocked\", null],\n },\n mode: {\n type: [\"string\", \"null\"],\n enum: [\n \"normal\",\n \"autoLock\",\n \"emergencyOpen\",\n \"emergencyClose\",\n \"holdOpen\",\n \"lockdown\",\n null,\n ],\n description:\n \"emergencyOpen and emergencyClose are deprecated and can be removed once Salto, Paxton and Geovision drivers are updated\",\n default: null,\n },\n supportedModes: {\n type: \"array\",\n uniqueItems: true,\n items: {\n enum: [\n \"normal\",\n \"autoLock\",\n \"emergencyOpen\",\n \"emergencyClose\",\n \"holdOpen\",\n \"lockdown\",\n null,\n ],\n },\n },\n batteryLevel: {\n $ref: \"definitions.json#/definitions/batteryLevel\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n },\n required: [\"id\", \"type\", \"state\", \"driver\"],\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"log.json\",\n title: \"Log\",\n type: \"object\",\n required: [\"type\", \"timestamp\", \"id\", \"driver\", \"name\"],\n properties: {\n type: {\n type: \"string\",\n default: \"log\",\n enum: [\"log\"],\n },\n timestamp: {\n type: \"number\",\n minimum: 1655907956593,\n },\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n name: {\n type: \"string\",\n description: \"Event name\",\n },\n field1: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: {\n name: {\n type: \"string\",\n },\n value: {\n type: \"string\",\n },\n },\n },\n field2: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: {\n name: {\n type: \"string\",\n },\n value: {\n type: \"string\",\n },\n },\n },\n field3: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: {\n name: {\n type: \"string\",\n },\n value: {\n type: \"string\",\n },\n },\n },\n field4: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: {\n name: {\n type: \"string\",\n },\n value: {\n type: \"string\",\n },\n },\n },\n field5: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: {\n name: {\n type: \"string\",\n },\n value: {\n type: \"string\",\n },\n },\n },\n field6: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: {\n name: {\n type: \"string\",\n },\n value: {\n type: \"string\",\n },\n },\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"mediaFile.json\",\n title: \"Media File\",\n description: \"Any media file\",\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"mediaFile\",\n enum: [\"mediaFile\"],\n },\n name: {\n type: \"string\",\n },\n fileHash: {\n type: \"string\",\n },\n category: {\n type: \"string\",\n description: \"This is the category id\",\n },\n mimeType: {\n type: \"string\",\n enum: [\n \"image/*\",\n \"image/jpeg\",\n \"image/png\",\n \"image/gif\",\n \"image/webp\",\n \"image/avif\",\n \"image/svg+xml\",\n \"application/pdf\",\n ],\n },\n data: {\n type: \"string\",\n },\n url: {\n type: \"string\",\n format: \"uri\",\n },\n width: {\n type: \"integer\",\n minimum: 0,\n },\n height: {\n type: \"integer\",\n minimum: 0,\n },\n size: {\n type: \"integer\",\n minimum: 0,\n description: \"Size in bytes\",\n },\n uploadUrl: {\n type: \"string\",\n format: \"uri\",\n },\n uploadUrlExpires: {\n $ref: \"definitions.json#/definitions/date\",\n },\n createdBy: {\n type: \"string\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n additionalProperties: false,\n required: [\"type\"],\n};\n\nfunction createImageVariant(params) {\n if (this.mimeType != \"image/*\")\n throw new Error(\"Only dynamic images can have variants\");\n if (!this.url) throw new Error(\"MediaFile has no url\");\n // convert params to \"key=value\" pairs\n const query = Object.keys(params)\n .map((key) => `${key}=${params[key]}`)\n .join(\",\");\n\n // replace the final /public with the query above\n return this.url.replace(/\\/public$/, `/${query}`);\n}\n\nexport const methods = {\n createImageVariant: createImageVariant,\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"mediaSource.json\",\n title: \"Media Source\",\n description: \"Any media source\",\n type: \"object\",\n required: [\"id\", \"type\", \"discriminator\", \"audio\", \"video\", \"driver\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"mediaSource\",\n enum: [\"mediaSource\"],\n },\n discriminator: {\n type: \"string\",\n enum: [\n \"tv\",\n \"dvr\",\n \"appleTv\",\n \"discPlayer\",\n \"mediaPlayer\",\n \"paSystem\",\n \"uncontrolledDevice\",\n ],\n },\n playlists: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n $ref: \"definitions.json#/definitions/name\",\n },\n },\n },\n },\n remote: {\n type: \"string\",\n enum: [\n \"MR22GA\",\n \"XRT260\",\n \"XRT270\",\n \"HOF-16K 1.2\",\n \"219863500\",\n \"SONIFI\",\n \"AKB76039803\",\n \"BN59-01388A\",\n ],\n },\n name: {\n $ref: \"definitions.json#/definitions/name\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n offline: {\n type: \"boolean\",\n },\n audio: {\n type: \"boolean\",\n },\n video: {\n type: \"boolean\",\n },\n powerFeedback: {\n type: \"boolean\",\n },\n volumeFeedback: {\n type: \"boolean\",\n },\n muted: {\n type: \"boolean\",\n },\n volume: {\n type: \"number\",\n minimum: 0,\n maximum: 100,\n },\n brightness: {\n type: \"number\",\n minimum: 0,\n maximum: 100,\n },\n contrast: {\n type: \"number\",\n minimum: 0,\n maximum: 100,\n },\n power: {\n type: \"string\",\n enum: [\"on\", \"off\"],\n },\n input: {\n type: \"string\",\n },\n supportedInputs: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n supportedOutputs: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n command: {\n type: [\"string\", \"null\"],\n enum: [\n \"mute\",\n \"volumeUp\",\n \"volumeDown\",\n \"brightnessUp\",\n \"brightnessDown\",\n \"channelUp\",\n \"channelDown\",\n \"number0\",\n \"number1\",\n \"number2\",\n \"number3\",\n \"number4\",\n \"number5\",\n \"number6\",\n \"number7\",\n \"number8\",\n \"number9\",\n \"lastChannel\",\n \"display\",\n \"favoriteChannel\",\n \"play\",\n \"playing\",\n \"stop\",\n \"stopped\",\n \"pause\",\n \"paused\",\n \"fastForward\",\n \"fastForwarding\",\n \"rewind\",\n \"rewinding\",\n \"instantReplay\",\n \"record\",\n \"ac3\",\n \"pvrMenu\",\n \"guide\",\n \"menu\",\n \"menuUp\",\n \"menuDown\",\n \"menuLeft\",\n \"menuRight\",\n \"pageUp\",\n \"pageDown\",\n \"select\",\n \"exit\",\n \"input\",\n \"power\",\n \"enterChannel\",\n \"enterVolume\",\n \"enterBrightness\",\n \"enterContrast\",\n \"number10\",\n \"number11\",\n \"number12\",\n \"number13\",\n \"number14\",\n \"number15\",\n \"number16\",\n \"number10Plus\",\n \"number20Plus\",\n \"number100\",\n \"dash\",\n \"threeChan\",\n \"threeD\",\n \"sixChan\",\n \"a\",\n \"add\",\n \"alarm\",\n \"am\",\n \"analog\",\n \"angle\",\n \"antenna\",\n \"antennaEast\",\n \"antennaWest\",\n \"aspect\",\n \"audio1\",\n \"audio2\",\n \"audio3\",\n \"audioDumming\",\n \"audioLevelDown\",\n \"audioLevelUp\",\n \"b\",\n \"back\",\n \"c\",\n \"component1\",\n \"component2\",\n \"component3\",\n \"d\",\n \"home\",\n \"list\",\n \"liveTv\",\n \"discreteInputCable\",\n \"powerOff\",\n \"powerOn\",\n \"setupMenu\",\n \"skipForward\",\n \"skipReverse\",\n \"video1\",\n \"video2\",\n \"video3\",\n \"video4\",\n \"video5\",\n \"details\",\n \"hdmi1\",\n \"hdmi2\",\n \"hdmi3\",\n \"cecDeviceList\",\n \"mtsSap\",\n \"red\",\n \"green\",\n \"yellow\",\n \"blue\",\n \"alert\",\n \"order\",\n ],\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n },\n additionalProperties: false,\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"motionSensor.json\",\n title: \"Motion Sensor\",\n description: \"Any smart motion sensor\",\n type: \"object\",\n required: [\"id\", \"type\", \"driver\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n },\n offline: {\n type: \"boolean\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"order.json\",\n title: \"Order\",\n description: \"A purchase order for products or services.\",\n type: \"object\",\n required: [\"type\", \"status\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"order\",\n enum: [\"order\"],\n },\n orderNumber: {\n type: \"string\",\n },\n status: {\n type: \"string\",\n enum: [\n \"draft\",\n \"pendingPayment\",\n \"processing\",\n \"outForDelivery\",\n \"completed\",\n \"paymentFailed\",\n \"cancelled\",\n \"refunded\",\n ],\n },\n userId: {\n $ref: \"definitions.json#/definitions/id\",\n description: \"User id of purchaser\",\n },\n reservationId: {\n $ref: \"definitions.json#/definitions/id\",\n description: \"Reservation id if the order is for a reservation\",\n },\n date: {\n $ref: \"definitions.json#/definitions/date\",\n },\n items: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"name\", \"price\"],\n properties: {\n additionalProperties: false,\n name: {\n type: \"string\",\n },\n sku: {\n type: \"string\",\n },\n quantity: {\n type: \"number\",\n default: 1,\n },\n price: {\n type: \"number\",\n },\n taxClass: {\n type: \"string\",\n },\n deliveryClass: {\n type: \"string\",\n },\n productId: {\n type: \"string\",\n },\n },\n },\n },\n taxes: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"name\", \"rate\"],\n properties: {\n additionalProperties: false,\n name: {\n type: \"string\",\n },\n class: {\n type: \"string\",\n },\n rateType: {\n type: \"string\",\n enum: [\"percentage\", \"flat\"],\n default: \"percentage\",\n },\n rate: {\n type: \"number\",\n },\n total: {\n type: \"number\",\n },\n },\n },\n },\n fees: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"name\", \"price\"],\n properties: {\n additionalProperties: false,\n name: {\n type: \"string\",\n },\n price: {\n type: \"number\",\n },\n },\n },\n },\n delivery: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"name\", \"rate\"],\n properties: {\n additionalProperties: false,\n name: {\n type: \"string\",\n },\n class: {\n type: \"string\",\n },\n rateType: {\n type: \"string\",\n enum: [\"percentage\", \"flat\"],\n default: \"percentage\",\n },\n rate: {\n type: \"number\",\n },\n total: {\n type: \"number\",\n },\n },\n },\n },\n payments: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n properties: {\n method: {\n type: \"string\",\n enum: [\n \"folio\",\n \"invoice\",\n \"amex\",\n \"visa\",\n \"masterCard\",\n \"maestro\",\n \"discover\",\n \"diners\",\n \"jcb\",\n \"applePay\",\n \"alipay\",\n \"chinaUnionPay\",\n \"vpay\",\n ],\n },\n name: {\n type: \"string\",\n },\n date: {\n $ref: \"definitions.json#/definitions/date\",\n },\n amount: {\n type: \"number\",\n },\n transactionReference: {\n type: \"string\",\n },\n },\n },\n },\n },\n};\n\nfunction getSubTotal() {\n return this.items.reduce((acc, item) => {\n const qty = item.quantity || 1;\n return acc + item.price * qty;\n }, 0);\n}\n\nfunction getTaxTotal() {\n const taxes = this.taxes;\n if (!taxes) return 0;\n return this.items.reduce((acc, item) => {\n if (!item.taxClass) return acc;\n const tax = taxes.find((t) => t.class === item.taxClass);\n if (!tax) return acc;\n const { rateType, rate } = tax;\n if (rateType === \"percentage\") {\n return acc + item.price * rate;\n }\n if (rateType === \"flat\") {\n return acc + rate;\n }\n return acc + rate;\n }, 0);\n}\n\nfunction getDeliveryTotal() {\n const delivery = this.delivery;\n if (!delivery) return 0;\n return this.items.reduce((acc, item) => {\n if (!item.deliveryClass) return acc;\n const d = delivery.find((d) => d.class === item.deliveryClass);\n if (!d) return acc;\n const { rateType, rate } = d;\n if (rateType === \"percentage\") {\n return acc + item.price * rate;\n }\n return acc + rate;\n }, 0);\n}\n\nfunction getFeesTotal() {\n const fees = this.fees;\n return fees.reduce((acc, fee) => {\n return acc + fee.price;\n }, 0);\n}\n\nfunction getTotal() {\n return (\n this.getSubTotal() +\n this.getTaxTotal() +\n this.getDeliveryTotal() +\n this.getFeesTotal()\n );\n}\n\nfunction getPaymentsTotal() {\n return this.payments.reduce((acc, payment) => {\n return acc + payment.amount;\n }, 0);\n}\n\nfunction getBalance() {\n return this.getTotal() - this.getPaymentsTotal();\n}\n\nexport const methods = {\n getSubTotal: getSubTotal,\n getTaxTotal: getTaxTotal,\n getDeliveryTotal: getDeliveryTotal,\n getFeesTotal: getFeesTotal,\n getTotal: getTotal,\n getPaymentsTotal: getPaymentsTotal,\n getBalance: getBalance,\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"organization.json\",\n title: \"Organization\",\n type: \"object\",\n description:\n \"An organization is a group or entity that subscribes to Kohost software.\",\n required: [\"accountNumber\", \"name\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"organization\",\n enum: [\"organization\"],\n },\n accountNumber: {\n type: [\"number\", \"null\"],\n minimum: 10000,\n },\n name: {\n type: \"string\",\n },\n properties: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n hostname: {\n type: [\"string\", \"null\"],\n },\n appManifest: {\n type: \"object\",\n\n properties: {\n name: {\n type: \"string\",\n },\n short_name: {\n type: \"string\",\n },\n scope: {\n type: \"string\",\n },\n start_url: {\n type: \"string\",\n },\n themeColor: {\n type: \"string\",\n },\n backgroundColor: {\n type: \"string\",\n },\n display: {\n type: \"string\",\n enum: [\"fullscreen\", \"standalone\", \"minimal-ui\", \"browser\"],\n default: \"fullscreen\",\n },\n orientation: {\n type: \"string\",\n enum: [\"portrait\", \"landscape\"],\n default: \"portrait\",\n },\n splash: {\n type: \"object\",\n properties: {\n src: {\n type: \"string\",\n },\n type: {\n type: \"string\",\n },\n sizes: {\n type: \"string\",\n },\n },\n },\n icons: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n src: {\n type: \"string\",\n },\n sizes: {\n type: \"string\",\n },\n type: {\n type: \"string\",\n },\n },\n },\n },\n logo: {\n type: \"object\",\n properties: {\n src: {\n type: \"string\",\n },\n type: {\n type: \"string\",\n },\n sizes: {\n type: \"string\",\n },\n },\n },\n },\n default: {\n name: \"Kohost\",\n short_name: \"Kohost\",\n start_url: \"/\",\n scope: \"/\",\n display: \"fullscreen\",\n orientation: \"portrait\",\n theme_color: \"#1d1f22\",\n background_color: \"#1d1f22\",\n icons: [\n {\n src: \"https://images.kohost.io/cdn-cgi/imagedelivery/vcVX2aBwdFSYr66spcFKaA/9c85047f-ccba-4b1c-3070-5463fbe93b00/w=512\",\n sizes: \"512x512\",\n type: \"image/png\",\n },\n ],\n splash: {\n src: \"https://images.kohost.io/cdn-cgi/imagedelivery/vcVX2aBwdFSYr66spcFKaA/034fb112-5326-4d37-373e-d1cc2a4d0400/w=1500\",\n sizes: \"1500x800\",\n type: \"image/jpg\",\n },\n logo: {\n src: \"https://images.kohost.io/cdn-cgi/imagedelivery/vcVX2aBwdFSYr66spcFKaA/1e54c54d-3bac-4745-f46f-c2f98036af00/h=75\",\n sizes: \"300x75\",\n type: \"image/png\",\n },\n },\n },\n tickets: {\n type: \"object\",\n properties: {\n nextTicketNumber: {\n type: [\"string\", \"integer\"],\n default: 1,\n },\n },\n },\n credentials: {\n type: \"object\",\n additionalProperties: true,\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/createdAt\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/updatedAt\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"payment.json\",\n title: \"Payment\",\n type: \"object\",\n required: [\"type\", \"maskedNumber\", \"expires\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n enum: [\n \"amex\",\n \"visa\",\n \"masterCard\",\n \"maestro\",\n \"discover\",\n \"diners\",\n \"jcb\",\n \"applePay\",\n \"alipay\",\n \"chinaUnionPay\",\n \"vpay\",\n ],\n },\n enabled: {\n type: \"boolean\",\n default: true,\n },\n storageData: {\n type: [\"string\", \"null\"],\n },\n maskedNumber: {\n type: \"string\",\n },\n issued: {\n type: [\"string\", \"null\"],\n },\n expires: {\n type: \"string\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"policy.json\",\n title: \"Policy\",\n description:\n \"A policy is a set of permissions that can be applied to a user to limit their access to resources.\",\n type: \"object\",\n required: [\n \"name\",\n \"type\",\n \"organizationId\",\n \"propertyId\",\n \"permissions\",\n \"discriminator\",\n ],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"policy\",\n enum: [\"policy\"],\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\"],\n },\n name: {\n type: \"string\",\n minLength: 1,\n },\n description: {\n type: \"string\",\n },\n organizationId: {\n type: \"string\",\n },\n propertyId: {\n type: \"string\",\n },\n permissions: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"entities\", \"effect\"],\n properties: {\n entities: {\n type: \"array\",\n items: {\n type: \"string\",\n pattern: \"^[^:]+(:.+)+$\",\n },\n },\n effect: {\n type: \"string\",\n enum: [\"Allow\", \"Deny\"],\n },\n },\n },\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"product.json\",\n title: \"Product\",\n type: \"object\",\n required: [\"name\", \"price\", \"driver\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"product\",\n enum: [\"product\"],\n },\n name: {\n type: \"string\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n description: {\n type: \"string\",\n },\n price: {\n type: \"number\",\n },\n tax: {\n type: [\"number\", \"null\"],\n },\n image: {\n $ref: \"mediaFile.json\",\n },\n category: {\n type: \"string\",\n },\n imageUrl: {\n type: \"string\",\n format: \"uri\",\n pattern: \"^https?://\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"property.json\",\n title: \"Property\",\n type: \"object\",\n description: \"A property is a physical asset or building\",\n required: [\"id\", \"name\", \"type\", \"organization\", \"timezone\", \"discriminator\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n type: {\n type: \"string\",\n default: \"property\",\n enum: [\"property\"],\n },\n discriminator: {\n type: \"string\",\n enum: [\"hospitality\", \"education\", \"commercial\", \"storage\"],\n },\n organization: {\n type: [\"string\", \"null\"],\n description: \"Reference (id) to the organization that owns this property\",\n },\n departments: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n testModeEnabled: {\n type: \"boolean\",\n },\n testMode: {\n type: \"object\",\n properties: {\n notificationEmails: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n description:\n \"Only users with these email addresses will receive notifications in test mode, including sms, email, or push.\",\n },\n notificationEmailDomains: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n description:\n \"Only users with email addreses ending in these domains will receive notifications in test mode, including sms, email, or push.\",\n },\n },\n },\n timezone: {\n type: \"string\",\n description: \"IANA timezone string\",\n pattern: \"^([a-zA-Z]+/[a-zA-Z_]+)$\",\n examples: [\"America/New_York\", \"America/Los_Angeles\"],\n },\n smsNumber: {\n type: \"string\",\n },\n checkInTime: {\n type: \"string\",\n },\n checkOutTime: {\n type: \"string\",\n },\n address: {\n $ref: \"definitions.json#/definitions/address\",\n },\n latitude: {\n type: \"number\",\n },\n longitude: {\n type: \"number\",\n },\n appFeatures: {\n type: \"object\",\n properties: {\n RoomControl: {\n type: \"object\",\n properties: {\n disabledSystems: {\n type: \"array\",\n items: {\n type: \"string\",\n enum: [\"climate\", \"lights\", \"shades\", \"tv\", \"doors\"],\n },\n },\n excludedDeviceIds: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n default: [],\n },\n commonAreas: {\n type: \"object\",\n properties: {\n spaces: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n },\n },\n alarmConfig: {\n type: \"object\",\n patternProperties: {\n \"^[a-zA-Z0-9]+$\": {\n type: \"object\",\n properties: {\n zoneLockMap: {\n type: \"object\",\n description: \"Maps zone numbers to lock ids\",\n additionalProperties: { type: \"string\" },\n },\n },\n },\n },\n examples: [\n {\n wZz7hucY: {\n zoneLockMap: {\n 1: \"wc87hucc\",\n 2: \"bc86hzxc\",\n 3: \"zv5ah5jv\",\n },\n },\n },\n ],\n },\n },\n additionalProperties: false,\n },\n CheckIn: {\n type: \"object\",\n properties: {\n payment: {},\n identification: {},\n earlyCheckIn: {\n type: \"object\",\n required: [\"dynamic\"],\n properties: {\n dynamic: {\n type: \"boolean\",\n default: false,\n },\n minimumPrice: {\n type: \"number\",\n default: 10,\n },\n maximumPrice: {\n type: \"number\",\n default: 50,\n },\n priceRatioPerHour: {\n type: \"number\",\n default: 0.1,\n },\n minimumTime: {\n type: \"string\",\n },\n },\n },\n roomUpgrades: {},\n pet: {},\n promos: {},\n },\n },\n CheckOut: {\n type: \"object\",\n properties: {\n lateCheckOut: {\n type: \"object\",\n required: [\"dynamic\"],\n properties: {\n dynamic: {\n type: \"boolean\",\n default: false,\n },\n minimumPrice: {\n type: \"number\",\n default: 10,\n },\n maximumPrice: {\n type: \"number\",\n default: 50,\n },\n priceRatioPerHour: {\n type: \"number\",\n default: 0.1,\n },\n },\n },\n },\n },\n Concierge: {\n type: \"object\",\n properties: {\n timeTracking: {\n type: \"boolean\",\n default: false,\n },\n tipping: {\n type: \"boolean\",\n default: false,\n },\n feedback: {\n type: \"boolean\",\n default: true,\n },\n ratings: {\n type: \"boolean\",\n default: true,\n },\n newTicketCCs: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n default: [],\n },\n newMessageChannel: {\n type: [\"string\", \"null\"],\n enum: [\"sms\", \"email\"],\n default: \"sms\",\n description:\n \"Determines how users should be notified of new messages in the concierge system\",\n },\n quickServices: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: {\n type: \"string\",\n },\n description: {\n type: \"string\",\n },\n department: {\n type: \"string\",\n },\n image: {\n $ref: \"mediaFile.json\",\n },\n },\n required: [\"name\", \"description\", \"image\"],\n },\n },\n issues: {\n type: \"object\",\n properties: {\n syncWithPropertyId: {\n type: \"string\",\n },\n },\n },\n },\n },\n DigitalKey: {\n type: \"object\",\n properties: {\n system: {\n type: \"string\",\n enum: [\"salto\", \"dormakaba\"],\n },\n systemOnline: {\n type: \"boolean\",\n default: false,\n },\n systemConfig: {\n type: \"object\",\n properties: {\n legicUrl: {\n type: \"string\",\n format: \"uri\",\n },\n legicWalletName: {\n type: \"string\",\n },\n legicAppId: {\n type: \"number\",\n },\n legicTechUsername: {\n type: \"string\",\n },\n legicTechPassword: {\n type: \"string\",\n },\n },\n additionalProperties: false,\n default: {},\n },\n enableApp: {\n type: \"boolean\",\n },\n branding: {\n type: \"object\",\n properties: {\n logo: {\n type: \"string\",\n format: \"uri\",\n },\n gradient: {\n type: \"array\",\n items: {\n type: \"string\",\n pattern: \"^(?!#ffffff)(#[0-9a-fA-F]{6})$\",\n },\n minItems: 2,\n maxItems: 2,\n },\n highlightedGradient: {\n type: \"array\",\n items: {\n type: \"string\",\n pattern: \"^(?!#ffffff)(#[0-9a-fA-F]{6})$\",\n },\n minItems: 2,\n maxItems: 3,\n },\n },\n },\n },\n },\n SOS: {\n type: \"object\",\n properties: {\n active: {\n type: \"boolean\",\n },\n activeEmergencies: {\n type: \"array\",\n items: {\n type: \"string\",\n enum: [\n \"medical\",\n \"fire\",\n \"suspiciousPerson\",\n \"other\",\n \"conflict\",\n \"shooter\",\n ],\n },\n },\n },\n },\n Elevator: {\n type: \"object\",\n },\n Experiences: {\n type: \"object\",\n },\n Dining: {\n type: \"object\",\n properties: {\n system: {\n type: \"string\",\n enum: [\"gotab\"],\n },\n systemConfig: {\n type: \"object\",\n properties: {\n landingUrl: {\n type: \"string\",\n format: \"uri\",\n },\n includeUserDetails: {\n type: \"boolean\",\n },\n },\n additionalProperties: false,\n },\n },\n },\n Rentals: { type: \"object\" },\n Shop: { type: \"object\" },\n Spa: { type: \"object\" },\n Valet: { type: \"object\" },\n },\n additionalProperties: false,\n default: {\n RoomControl: {},\n },\n },\n notifications: {\n type: \"object\",\n properties: {\n email: {\n type: \"object\",\n properties: {\n enabled: {\n type: \"boolean\",\n },\n },\n additionalProperties: false,\n },\n sms: {\n type: \"object\",\n properties: {\n enabled: {\n type: \"boolean\",\n },\n },\n additionalProperties: false,\n },\n push: {\n type: \"object\",\n properties: {\n enabled: {\n type: \"boolean\",\n },\n },\n additionalProperties: false,\n },\n },\n additionalProperties: false,\n default: {\n email: {\n enabled: false,\n },\n sms: {\n enabled: false,\n },\n push: {\n enabled: false,\n },\n },\n },\n credentials: {\n type: \"object\",\n additionalProperties: true,\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"reservation.json\",\n title: \"Reservation\",\n type: \"object\",\n required: [\"type\", \"status\", \"checkInDateTime\", \"checkOutDateTime\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n primaryGuest: {\n type: \"string\",\n },\n type: {\n type: \"string\",\n default: \"reservation\",\n enum: [\"reservation\"],\n },\n sharedGuests: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n spaceCategory: {\n type: \"string\",\n },\n space: {\n type: [\"string\", \"null\"],\n },\n previousSpace: {\n type: [\"string\", \"null\"],\n default: null,\n description: \"Used when there was a space assigned and it changes\",\n },\n status: {\n type: \"string\",\n enum: [\n \"reserved\",\n \"checkedIn\",\n \"checkedOut\",\n \"cancelled\",\n \"noShow\",\n \"enquired\",\n \"requested\",\n \"optional\",\n ],\n description:\n \" 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)\",\n },\n mobileCheckInSpaceCategoryChanged: {\n type: \"boolean\",\n description: \"spaceCategory has changed from original.\",\n },\n mobileCheckInSpaceChanged: {\n type: \"boolean\",\n },\n mobileCheckInStatus: {\n type: \"string\",\n enum: [\n \"ready\",\n \"blocked\",\n \"preArrivalStepsRequired\",\n \"spaceNotAssigned\",\n \"spaceNotReady\",\n \"checkInTimeNotStarted\",\n ],\n },\n mobileCheckInStatusMessage: {\n type: \"string\",\n },\n confirmationNumber: {\n type: \"string\",\n },\n expectedCheckInDateTime: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n description: \"Expected arrival time of guest.\",\n },\n checkInDateTime: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n checkOutDateTime: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n adultCount: {\n type: \"number\",\n default: 1,\n minimum: 1,\n },\n childCount: {\n type: \"number\",\n default: 0,\n },\n\n spaceCategoryAvailabilites: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n type: \"string\",\n },\n price: {\n type: \"number\",\n },\n unit: {\n type: \"string\",\n enum: [\"night\", \"stay\", \"hour\"],\n },\n isUpgrade: {\n type: \"boolean\",\n },\n },\n },\n },\n revenue: {\n $ref: \"definitions.json#/definitions/revenue\",\n },\n rateSuppressed: {\n type: \"boolean\",\n },\n payment: {\n type: \"string\",\n },\n company: {\n type: \"string\",\n },\n travelAgent: {\n type: \"string\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n metadata: {\n $ref: \"definitions.json#/definitions/metadata\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/updatedAt\",\n },\n },\n};\n\nfunction checkInTime(tz) {\n return new Date(this.checkInDateTime).toLocaleString(\"default\", {\n hour: \"numeric\",\n minute: \"numeric\",\n timeZone: tz,\n });\n}\n\nfunction checkOutTime(tz) {\n return new Date(this.checkOutDateTime).toLocaleString(\"default\", {\n hour: \"numeric\",\n minute: \"numeric\",\n timeZone: tz,\n });\n}\n\nfunction getNights() {\n const start = new Date(this.checkInDateTime);\n const end = new Date(this.checkOutDateTime);\n let nights = Math.round((end - start) / (1000 * 60 * 60 * 24));\n if (nights <= 0) {\n nights = 1;\n }\n return nights;\n}\n\nexport const methods = {\n checkInTime,\n checkOutTime,\n getNights,\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"room.json\",\n title: \"Room\",\n description: \"A room represents a physical space of controllable IoT devices\",\n type: \"object\",\n required: [\"id\", \"name\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n enum: [\"room\"],\n default: \"room\",\n },\n name: {\n type: \"string\",\n },\n floor: {\n type: \"string\",\n },\n dimmers: {\n type: \"array\",\n default: [],\n items: {\n $ref: \"dimmer.json\",\n },\n },\n switches: {\n type: \"array\",\n default: [],\n items: {\n $ref: \"switch.json\",\n },\n },\n thermostats: {\n type: \"array\",\n default: [],\n items: {\n $ref: \"thermostat.json\",\n },\n },\n locks: {\n type: \"array\",\n default: [],\n items: {\n $ref: \"lock.json\",\n },\n },\n windowCoverings: {\n type: \"array\",\n default: [],\n items: {\n $ref: \"windowCovering.json\",\n },\n },\n courtesy: {\n type: \"array\",\n default: [],\n items: {\n $ref: \"courtesy.json\",\n },\n },\n cameras: {\n type: \"array\",\n default: [],\n items: {\n $ref: \"camera.json\",\n },\n },\n mediaSources: {\n type: \"array\",\n default: [],\n items: {\n $ref: \"mediaSource.json\",\n },\n },\n motionSensors: {\n type: \"array\",\n default: [],\n items: {\n $ref: \"motionSensor.json\",\n },\n },\n alarms: {\n type: \"array\",\n default: [],\n items: {\n $ref: \"alarm.json\",\n },\n },\n occupiedAt: {\n $ref: \"definitions.json#/definitions/createdAt\",\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/createdAt\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/updatedAt\",\n },\n },\n additionalProperties: false,\n};\n\nexport const getters = {\n /**\n * Check if the room has any dimmers\n * @returns {boolean} True if the room has dimmers, false otherwise\n */\n hasDimmer() {\n return this.dimmers?.length > 0;\n },\n\n /**\n * Check if the room has any switches\n * @returns {boolean} True if the room has switches, false otherwise\n */\n hasSwitch() {\n return this.switches?.length > 0;\n },\n\n /**\n * Check if the room has any window coverings\n * @returns {boolean} True if the room has window coverings, false otherwise\n */\n hasWindowCovering() {\n return this.windowCoverings?.length > 0;\n },\n\n /**\n * Alias for hasWindowCovering\n * @returns {boolean} True if the room has window coverings/shades, false otherwise\n */\n hasShade() {\n return this.hasWindowCovering;\n },\n\n /**\n * Check if the room has any thermostats\n * @returns {boolean} True if the room has thermostats, false otherwise\n */\n hasThermostat() {\n return this.thermostats?.length > 0;\n },\n\n /**\n * Alias for hasThermostat\n * @returns {boolean} True if the room has climate control, false otherwise\n */\n hasClimate() {\n return this.hasThermostat;\n },\n\n /**\n * Check if the room has any locks\n * @returns {boolean} True if the room has locks, false otherwise\n */\n hasLock() {\n return this.locks?.length > 0;\n },\n\n /**\n * Check if the room has any courtesy devices\n * @returns {boolean} True if the room has courtesy devices, false otherwise\n */\n hasCourtesy() {\n return this.courtesy?.length > 0;\n },\n\n /**\n * Check if the room has any cameras\n * @returns {boolean} True if the room has cameras, false otherwise\n */\n hasCamera() {\n return this.cameras?.length > 0;\n },\n\n /**\n * Check if the room has any media sources\n * @returns {boolean} True if the room has media sources, false otherwise\n */\n hasMedia() {\n return this.mediaSources?.length > 0;\n },\n\n /**\n * Check if the room has any lighting devices (dimmers or switches marked as lights/fans)\n * @returns {boolean} True if the room has lighting devices, false otherwise\n */\n hasLight() {\n const hasDiscriminatorLight = this.switches?.some((sw) => {\n return sw.discriminator === \"light\" || sw.discriminator === \"fan\";\n });\n return this.hasDimmer || hasDiscriminatorLight;\n },\n\n hasAlarm() {\n return this.alarms?.length > 0;\n },\n\n /**\n * Check if the room is currently occupied (within the last 60 minutes)\n * @returns {boolean} True if the room was occupied within the last hour, false otherwise\n */\n occupied() {\n const now = new Date();\n const lastOccupied = new Date(this.occupiedAt);\n const diff = now.getTime() - lastOccupied.getTime();\n return diff < 60 * 60 * 1000;\n },\n};\n\nexport const statics = {\n /**\n * Get the device path for a given device type\n * @param {string} type - The device type\n * @returns {\"mediaSources\" | \"courtesy\" | \"dimmers\" | \"thermostats\" | \"locks\" | \"windowCoverings\" | \"switches\" | \"cameras\" | \"motionSensors\" | \"alarms\"} The device path\n * @throws {Error} If the device type is invalid\n */\n getDevicePath(type) {\n switch (type) {\n case \"tv\":\n case \"dvr\":\n case \"appleTv\":\n case \"discPlayer\":\n case \"mediaPlayer\":\n case \"uncontrolledDevice\":\n case \"mediaSource\":\n return \"mediaSources\";\n case \"courtesy\":\n return \"courtesy\";\n case \"switch\":\n return \"switches\";\n case \"dimmer\":\n return \"dimmers\";\n case \"thermostat\":\n return \"thermostats\";\n case \"lock\":\n return \"locks\";\n case \"windowCovering\":\n return \"windowCoverings\";\n case \"camera\":\n return \"cameras\";\n case \"motionSensor\":\n return \"motionSensors\";\n case \"alarm\":\n return \"alarms\";\n\n default:\n throw new Error(\"Invalid device type:\" + type);\n }\n },\n /**\n *\n * @param {string} path\n * @returns\n */\n getDeviceTypeFromPath(path) {\n const validPaths = [\n \"dimmers\",\n \"switches\",\n \"thermostats\",\n \"locks\",\n \"windowCoverings\",\n \"courtesy\",\n \"cameras\",\n \"mediaSources\",\n \"motionSensors\",\n \"alarms\",\n ];\n if (!validPaths.includes(path))\n throw new Error(\"Invalid device path:\" + path);\n switch (path) {\n case \"courtesy\":\n return path;\n case \"switches\":\n return \"switch\";\n default:\n return path.slice(0, -1);\n }\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"scene.json\",\n title: \"Scene\",\n description: \"A room represents a physical space of controllable IoT devices\",\n type: \"object\",\n required: [\"id\", \"name\", \"type\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n description: {\n type: \"string\",\n },\n type: {\n type: \"string\",\n enum: [\"scene\"],\n default: \"scene\",\n },\n devices: {\n type: \"object\",\n properties: {\n switches: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n state: {\n $ref: \"switch.json#/properties/state\",\n },\n },\n default: [],\n },\n },\n dimmers: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n level: {\n $ref: \"dimmer.json#/properties/level\",\n },\n },\n },\n default: [],\n },\n windowCoverings: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n position: {\n $ref: \"windowCovering.json#/properties/position\",\n },\n },\n },\n default: [],\n },\n thermostats: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n hvacMode: {\n $ref: \"thermostat.json#/properties/hvacMode\",\n },\n setpoints: {\n $ref: \"thermostat.json#/properties/setpoints\",\n },\n fanMode: {\n $ref: \"thermostat.json#/properties/fanMode\",\n },\n setpointDelta: {\n type: \"number\",\n },\n },\n },\n default: [],\n },\n mediaSources: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n volume: {\n type: \"number\",\n minimum: 0,\n maximum: 100,\n },\n commands: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n },\n },\n },\n locks: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n state: {\n $ref: \"lock.json#/properties/state\",\n },\n mode: {\n $ref: \"lock.json#/properties/mode\",\n },\n },\n },\n },\n },\n additionalProperties: false,\n },\n isDefault: {\n type: \"boolean\",\n default: false,\n },\n showOnUi: {\n type: \"boolean\",\n default: true,\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"shortLink.json\",\n title: \"Short Link\",\n type: \"object\",\n required: [\"destination\", \"url\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"shortLink\",\n enum: [\"shortLink\"],\n },\n title: {\n type: \"string\",\n },\n destination: {\n type: \"string\",\n format: \"uri\",\n },\n url: {\n type: \"string\",\n format: \"uri\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"smsMessage.json\",\n title: \"Sms Message\",\n type: \"object\",\n required: [\"to\", \"from\", \"status\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"smsMessage\",\n enum: [\"smsMessage\", \"whatsappMessage\"],\n },\n to: {\n type: \"string\",\n },\n from: {\n type: \"string\",\n },\n media: {\n type: \"string\",\n format: \"uri\",\n },\n status: {\n type: \"string\",\n enum: [\n \"queued\",\n \"accepted\",\n \"sending\",\n \"sent\",\n \"failed\",\n \"delivered\",\n \"undelivered\",\n \"receiving\",\n \"received\",\n \"read\",\n ],\n },\n body: {\n type: \"string\",\n },\n driver: {\n type: \"string\",\n },\n appData: {\n type: \"object\",\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"space.json\",\n title: \"Space\",\n type: \"object\",\n required: [\"id\", \"name\", \"type\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n minLength: 1,\n },\n type: {\n type: \"string\",\n default: \"space\",\n enum: [\"space\"],\n },\n discriminator: {\n type: \"string\",\n enum: [\n \"classRoom\",\n \"hotelRoom\",\n \"office\",\n \"building\",\n \"commonArea\",\n \"conferenceRoom\",\n \"lobby\",\n \"gym\",\n \"pool\",\n \"restaurant\",\n \"unit\",\n ],\n },\n floor: {\n type: \"string\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n category: {\n type: \"string\",\n description: \"This is the category id\",\n },\n rooms: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n occupied: {\n type: \"boolean\",\n },\n inUse: {\n type: \"boolean\",\n },\n eco: {\n type: \"object\",\n additionalProperties: false,\n default: {\n active: false,\n allowed: false,\n previousState: null,\n },\n properties: {\n active: {\n type: \"boolean\",\n default: false,\n },\n activatedAt: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n allowed: {\n type: \"boolean\",\n default: false,\n },\n previousState: {\n type: [\"object\", \"null\"],\n properties: {\n thermostats: {\n type: \"object\",\n patternProperties: {\n \".*\": {\n type: \"object\",\n properties: {\n setpoints: {\n $ref: \"thermostat.json#/properties/setpoints\",\n },\n },\n },\n },\n },\n },\n additionalProperties: false,\n },\n },\n },\n features: {\n type: \"array\",\n items: {\n type: \"string\",\n enum: [\"pet\"],\n },\n },\n maximumOccupancy: {\n type: \"number\",\n minimum: 1,\n },\n housekeepingStatus: {\n type: \"string\",\n enum: [\"clean\", \"dirty\", \"inspected\", \"pickup\"],\n },\n serviceStatus: {\n type: \"string\",\n enum: [\"inService\", \"outOfOrder\", \"outOfService\"],\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n};\n\nexport const getters = {\n hasDimmer() {\n return this.rooms.some((room) => room.hasDimmer);\n },\n hasSwitch() {\n return this.rooms.some((room) => room.hasSwitch);\n },\n hasWindowCovering() {\n return this.rooms.some((room) => room.hasWindowCovering);\n },\n hasThermostat() {\n return this.rooms.some((room) => room.hasThermostat);\n },\n hasLock() {\n return this.rooms.some((room) => room.hasLock);\n },\n hasCourtesy() {\n return this.rooms.some((room) => room.hasCourtesy);\n },\n hasCamera() {\n return this.rooms.some((room) => room.hasCamera);\n },\n hasAlarm() {\n return this.rooms.some((room) => room.hasAlarm);\n },\n hasMedia() {\n return this.rooms.some((room) => room.hasMedia);\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"switch.json\",\n title: \"Switch\",\n description: \"Any smart switch\",\n type: \"object\",\n required: [\"id\", \"type\", \"state\", \"driver\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"light\", \"fan\", \"irrigation\"],\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n offline: {\n type: \"boolean\",\n },\n state: {\n type: \"string\",\n enum: [\"on\", \"off\"],\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n restoresAt: {\n type: \"string\",\n format: \"date-time\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"systemUser.json\",\n title: \"System User\",\n description:\n \"A system user is a user that originated from an external 3rd party system.\",\n type: \"object\",\n required: [\"id\", \"firstName\", \"lastName\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"systemUser\",\n enum: [\"systemUser\"],\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n firstName: {\n type: \"string\",\n },\n lastName: {\n type: \"string\",\n },\n phone: {\n type: [\"string\", \"null\"],\n pattern: \"^\\\\+[0-9]{1,14}$\",\n },\n email: {\n type: [\"string\", \"null\"],\n format: \"email\",\n },\n address: {\n $ref: \"definitions.json#/definitions/address\",\n },\n photo: {\n type: \"string\",\n },\n jobTitle: {\n type: \"string\",\n },\n dob: {\n type: \"string\",\n },\n gender: {\n type: \"string\",\n enum: [\"male\", \"female\"],\n },\n roles: {\n type: \"array\",\n items: {\n type: \"string\",\n enum: [\n \"Guest\",\n \"User\",\n \"Manager\",\n \"Maintenance\",\n \"Administrator\",\n \"SuperAdmin\",\n ],\n },\n },\n nationality: {\n type: \"string\",\n minLength: 2,\n maxLength: 2,\n },\n notes: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n files: {\n type: \"array\",\n items: {\n $ref: \"mediaFile.json#\",\n },\n },\n identifications: {\n type: \"array\",\n items: {\n $ref: \"identification.json#\",\n },\n },\n payments: {\n type: \"array\",\n items: {\n $ref: \"payment.json#\",\n },\n },\n revenue: {\n $ref: \"definitions.json#/definitions/revenue\",\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/createdAt\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/updatedAt\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"thermostat.json\",\n title: \"Thermostat\",\n description: \"Any smart thermostat\",\n type: \"object\",\n required: [\n \"id\",\n \"type\",\n \"hvacMode\",\n \"fanMode\",\n \"hvacState\",\n \"fanState\",\n \"setpoints\",\n \"temperatureScale\",\n \"supportedHvacModes\",\n \"supportedFanModes\",\n \"driver\",\n ],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n $ref: \"definitions.json#/definitions/name\",\n },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n default: \"thermostat\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n offline: {\n type: \"boolean\",\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n currentTemperature: {\n type: \"number\",\n },\n currentHumidity: {\n type: \"number\",\n minimum: 0,\n },\n hvacMode: {\n type: \"string\",\n $ref: \"#/properties/supportedHvacModes/items\",\n },\n hvacState: {\n type: [\"string\", \"null\"],\n enum: [\"cooling\", \"heating\", \"off\", null],\n },\n fanMode: {\n type: \"string\",\n $ref: \"#/properties/supportedFanModes/items\",\n },\n fanState: {\n type: [\"string\", \"null\"],\n enum: [\"off\", \"low\", \"medium\", \"high\", \"on\", null],\n },\n temperatureScale: {\n type: \"string\",\n enum: [\"celsius\", \"fahrenheit\"],\n default: \"fahrenheit\",\n },\n humidityScale: {\n type: [\"string\", \"null\"],\n enum: [\"absolute\", \"relative\", null],\n },\n supportedHvacModes: {\n type: \"array\",\n uniqueItems: true,\n minItems: 2,\n items: {\n enum: [\"cool\", \"heat\", \"auto\", \"off\"],\n },\n },\n supportedFanModes: {\n type: \"array\",\n uniqueItems: true,\n items: {\n enum: [\"auto\", \"low\", \"medium\", \"high\", \"off\", \"on\"],\n },\n },\n setpoints: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n cool: {\n $ref: \"#/$defs/setpoint\",\n },\n heat: {\n $ref: \"#/$defs/setpoint\",\n },\n auto: {\n $ref: \"#/$defs/setpoint\",\n },\n },\n },\n minAutoDelta: {\n type: \"number\",\n default: 3,\n },\n cycleRate: {\n type: \"number\",\n },\n batteryLevel: {\n $ref: \"definitions.json#/definitions/batteryLevel\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n },\n $defs: {\n setpoint: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n value: {\n $ref: \"#/$defs/setpointValue\",\n },\n min: {\n $ref: \"#/$defs/setpointMinMax\",\n },\n max: {\n $ref: \"#/$defs/setpointMinMax\",\n },\n },\n },\n setpointValue: {\n type: \"number\",\n minimum: 0,\n maximum: 99,\n },\n setpointMinMax: {\n type: [\"number\", \"null\"],\n minimum: 0,\n maximum: 99,\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"ticket.json\",\n title: \"Ticket\",\n description: \"A ticket is a request from a user.\",\n type: \"object\",\n required: [\n \"id\",\n \"conversation\",\n \"requester\",\n \"status\",\n \"tags\",\n \"createdAt\",\n \"updatedAt\",\n ],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n enum: [\"ticket\"],\n default: \"ticket\",\n },\n number: {\n type: \"string\",\n },\n issueId: {\n type: \"string\",\n },\n conversation: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"timestamp\", \"body\"],\n properties: {\n id: {\n type: \"string\",\n },\n discriminator: {\n type: \"string\",\n enum: [\n \"message\",\n \"opened\",\n \"assigned\",\n \"rated\",\n \"tipped\",\n \"scheduled\",\n \"collaboratorAdded\",\n \"collaboratorRemoved\",\n \"statusChanged\",\n \"priorityChanged\",\n \"scheduleDateChanged\",\n \"locationChanged\",\n ],\n default: \"message\",\n },\n userId: {\n type: \"string\",\n },\n userName: {\n type: \"string\",\n },\n vendorId: {\n type: \"string\",\n },\n vendorName: {\n type: \"string\",\n },\n systemId: {\n type: \"string\",\n },\n systemName: {\n type: \"string\",\n },\n timestamp: {\n $ref: \"definitions.json#/definitions/createdAt\",\n },\n body: {\n type: \"string\",\n },\n parsedBody: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n text: {\n type: \"string\",\n },\n mentions: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\n \"discriminator\",\n \"id\",\n \"index\",\n \"length\",\n \"originalText\",\n ],\n properties: {\n id: {\n type: \"string\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\", \"vendor\", \"system\"],\n },\n index: {\n type: \"integer\",\n },\n length: {\n type: \"integer\",\n },\n originalText: {\n type: \"string\",\n },\n },\n },\n },\n },\n },\n\n readBy: {\n type: \"array\",\n default: [],\n items: {\n type: \"string\",\n },\n },\n media: {\n anyOf: [{ $ref: \"mediaFile.json\" }, { type: \"null\" }],\n },\n },\n },\n },\n subject: {\n type: \"string\",\n },\n openedBy: {\n type: \"object\",\n properties: {\n userId: {\n type: \"string\",\n },\n userName: {\n type: \"string\",\n },\n systemId: {\n type: \"string\",\n },\n systemName: {\n type: \"string\",\n },\n },\n },\n requester: {\n type: \"object\",\n properties: {\n systemId: {\n type: \"string\",\n },\n systemName: {\n type: \"string\",\n },\n systemPhoto: {\n anyOf: [\n { $ref: \"mediaFile.json\" },\n { type: \"null\" },\n { type: \"string\" },\n ],\n },\n userId: {\n type: \"string\",\n },\n userName: {\n type: \"string\",\n },\n userPhoto: {\n anyOf: [\n { $ref: \"mediaFile.json\" },\n { type: \"null\" },\n { type: \"string\" },\n ],\n },\n deviceId: {\n type: \"string\",\n },\n roomId: {\n type: \"string\",\n },\n reservationId: {\n type: \"string\",\n },\n spaceId: {\n type: \"string\",\n },\n spaceName: {\n type: \"string\",\n },\n },\n },\n assignedTo: {\n type: \"object\",\n properties: {\n userId: {\n type: \"string\",\n },\n userName: {\n type: \"string\",\n },\n userPhoto: {\n anyOf: [\n { $ref: \"mediaFile.json\" },\n { type: \"null\" },\n { type: \"string\" },\n ],\n },\n vendorId: {\n type: \"string\",\n },\n vendorName: {\n type: \"string\",\n },\n vendorPhoto: {\n anyOf: [\n { $ref: \"mediaFile.json\" },\n { type: \"null\" },\n { type: \"string\" },\n ],\n },\n },\n },\n notify: {\n type: \"array\",\n description:\n \"A list of entities to notify when this ticket is created or resolved.\",\n default: [],\n items: {\n type: \"object\",\n required: [\"id\", \"discriminator\"],\n additionalProperties: false,\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the entity to notify.\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\"],\n },\n },\n },\n },\n collaborators: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"id\", \"name\", \"discriminator\"],\n additionalProperties: false,\n properties: {\n id: {\n type: \"string\",\n },\n name: {\n type: \"string\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\", \"vendor\"],\n },\n },\n },\n },\n location: {\n type: \"object\",\n required: [\"discriminator\", \"name\"],\n additionalProperties: false,\n properties: {\n id: {\n type: \"string\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"space\", \"room\", \"property\", \"customText\"],\n },\n name: {\n type: \"string\",\n },\n },\n },\n status: {\n type: \"string\",\n enum: [\"open\", \"pending\", \"solved\", \"closed\"],\n default: \"open\",\n },\n priority: {\n type: \"string\",\n enum: [\"low\", \"normal\", \"high\"],\n default: \"normal\",\n },\n tags: {\n type: \"array\",\n default: [],\n items: {\n type: \"string\",\n },\n },\n department: {\n type: \"string\",\n },\n rating: {\n type: \"number\",\n minimum: 0,\n maximum: 5,\n },\n ratingComment: {\n type: \"string\",\n },\n tipAmount: {\n type: \"string\",\n },\n autoCloseAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n scheduleDate: {\n $ref: \"definitions.json#/definitions/date\",\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n solvedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n closedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"timeSheet.json\",\n title: \"Time Sheet\",\n type: \"object\",\n required: [\"userId\", \"day\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"timeSheet\",\n enum: [\"timeSheet\"],\n },\n userId: {\n $ref: \"definitions.json#/definitions/id\",\n },\n day: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n locked: {\n type: \"boolean\",\n default: false,\n description: \"If true, the time sheet is locked and cannot be modified\",\n },\n timeEntries: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"working\", \"driving\", \"meeting\", \"break\"],\n },\n start: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n end: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n comment: {\n type: \"string\",\n },\n ticketId: {\n type: \"string\",\n },\n },\n required: [\"start\", \"discriminator\"],\n additionalProperties: false,\n },\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"user.json\",\n title: \"User\",\n type: \"object\",\n required: [\"id\", \"firstName\", \"lastName\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"user\",\n },\n firstName: {\n type: \"string\",\n },\n lastName: {\n type: \"string\",\n },\n phone: {\n type: [\"string\", \"null\"],\n pattern: \"^\\\\+[0-9]{1,14}$\",\n },\n phoneVerified: {\n type: \"boolean\",\n },\n email: {\n type: [\"string\", \"null\"],\n format: \"email\",\n },\n emailVerified: {\n type: \"boolean\",\n },\n whatsapp: {\n type: [\"string\", \"null\"],\n pattern: \"^\\\\+[0-9]{1,14}$\",\n },\n whatsappVerified: {\n type: \"boolean\",\n },\n address: {\n $ref: \"definitions.json#/definitions/address\",\n },\n secretKey: {\n type: \"string\",\n },\n photo: {\n $ref: \"mediaFile.json#\",\n },\n jobTitle: {\n type: \"string\",\n },\n dob: {\n type: \"string\",\n },\n gender: {\n type: \"string\",\n enum: [\"male\", \"female\"],\n },\n nationality: {\n type: \"string\",\n minLength: 2,\n maxLength: 2,\n },\n permissions: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"organizationId\", \"propertyId\", \"role\"],\n properties: {\n organizationId: {\n type: \"string\",\n description:\n \"The ID of the organization the permission is applies to.\",\n },\n propertyId: {\n type: \"string\",\n description: \"The ID of the property the permission is applies to.\",\n },\n role: {\n type: \"string\",\n enum: [\n \"Guest\",\n \"User\",\n \"Agent\",\n \"Manager\",\n \"Maintenance\",\n \"Administrator\",\n \"SuperAdmin\",\n ],\n },\n timeTrackingEnabled: {\n type: \"boolean\",\n description: \"Whether time tracking is enabled for this role.\",\n },\n department: {\n type: \"string\",\n description: \"The department the user belongs to.\",\n },\n policyIds: {\n type: \"array\",\n items: {\n type: \"string\",\n description: \"ID of a policy that is applied to this role.\",\n },\n },\n policies: {\n type: \"array\",\n items: {\n description:\n \"A policy object populated from the policyIds array.\",\n $ref: \"policy.json\",\n },\n },\n },\n additionalProperties: false,\n },\n },\n preferences: {\n type: \"array\",\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"organizationId\", \"propertyId\"],\n properties: {\n organizationId: {\n type: \"string\",\n },\n propertyId: {\n type: \"string\",\n },\n notifications: {\n type: \"array\",\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"discriminator\", \"enabled\"],\n properties: {\n discriminator: {\n type: \"string\",\n enum: [\"observerTicketCreated\", \"observerTicketResolved\"],\n },\n enabled: {\n type: \"boolean\",\n },\n },\n },\n },\n },\n },\n },\n notes: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n files: {\n type: \"array\",\n items: {\n $ref: \"mediaFile.json#\",\n },\n },\n identifications: {\n type: \"array\",\n items: {\n $ref: \"identification.json#\",\n },\n },\n payments: {\n type: \"array\",\n items: {\n $ref: \"payment.json#\",\n },\n },\n location: {\n type: \"object\",\n required: [\"accuracy\", \"latitude\", \"longitude\", \"timestamp\"],\n additionalProperties: false,\n properties: {\n accuracy: {\n type: [\"number\", \"null\"],\n },\n latitude: {\n type: [\"number\", \"null\"],\n },\n longitude: {\n type: [\"number\", \"null\"],\n },\n timestamp: {\n type: [\"number\", \"null\"],\n },\n },\n },\n reservations: {\n type: \"array\",\n items: {\n $ref: \"reservation.json\",\n },\n },\n spaceName: {\n type: \"string\",\n },\n revenue: {\n $ref: \"definitions.json#/definitions/revenue\",\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/createdAt\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/updatedAt\",\n },\n systems: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n properties: {\n systemId: {\n type: \"string\",\n },\n propertyId: {\n type: \"string\",\n },\n driver: {\n type: \"string\",\n },\n },\n required: [\"systemId\", \"propertyId\", \"driver\"],\n additionalProperties: false,\n },\n },\n },\n};\n\nexport const getters = {\n fullName() {\n return `${this.firstName} ${this.lastName}`;\n },\n roles() {\n const roles = new Set();\n if (this.permissions) {\n for (const permission of this.permissions) {\n roles.add(permission.role);\n }\n }\n return Array.from(roles);\n },\n isSuperAdmin() {\n return this.roles.includes(\"SuperAdmin\");\n },\n isAdmin() {\n return this.roles.includes(\"Admin\") || this.roles.includes(\"Administrator\");\n },\n isManager() {\n return this.roles.includes(\"Manager\");\n },\n isUser() {\n return this.roles.includes(\"User\");\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"vendor.json\",\n title: \"Vendor\",\n type: \"object\",\n required: [\"id\", \"name\", \"email\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"vendor\",\n enum: [\"vendor\"],\n },\n name: {\n type: \"string\",\n },\n phone: {\n type: [\"string\", \"null\"],\n pattern: \"^\\\\+[0-9]{1,14}$\",\n },\n email: {\n type: [\"string\", \"null\"],\n format: \"email\",\n },\n address: {\n $ref: \"definitions.json#/definitions/address\",\n },\n photo: {\n $ref: \"mediaFile.json#\",\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/createdAt\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/updatedAt\",\n },\n },\n};\n","export default {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"windowCovering.json\",\n title: \"Window Covering\",\n description: \"Any smart window covering\",\n required: [\"id\", \"type\", \"position\", \"driver\"],\n additionalProperties: false,\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n default: \"windowCovering\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"basic\", \"variable\"],\n default: \"variable\",\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: {\n $ref: \"definitions.json#/definitions/notification\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n offline: {\n type: \"boolean\",\n },\n position: {\n type: [\"number\", \"null\"],\n minimum: 0,\n maximum: 100,\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n watts: {\n $ref: \"definitions.json#/definitions/watts\",\n },\n icon: {\n type: \"string\",\n },\n modelNumber: {\n type: \"string\",\n },\n serialNumber: {\n type: \"string\",\n },\n firmwareVersion: {\n type: \"string\",\n },\n },\n};\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateAlarm as validate } from \"../validate\";\n\n/**\n * @typedef {Object} AlarmData Any smart alarm system\n * @property {string} id - Identifier of the object.\n * @property {string} [name] - Name of the alarm\n * @property {boolean} [offline]\n * @property {\"alarm\"} type - Default: \"alarm\"\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {{number?: number, name?: string, securityMode?: (\"arming\"|\"disarming\"|\"armed\"|\"disarmed\"|\"alarm\")}[]} areas\n * @property {{number?: number, name?: string, secure?: boolean, bypassed?: boolean}[]} zones\n * @property {boolean} [chime] - Reflects whether console chime is enabled\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n * @property {{id?: string, line1?: string, line2?: string, line3?: string, city?: string, state?: string, postalCode?: string, countryCode?: string}} [address]\n */\n\n/**\n * Any smart alarm system\n * @class Alarm\n * @extends {Entity}\n */\nexport class Alarm extends Entity {\n /**\n * @constructor\n * @param {AlarmData} data - The data to initialize the Alarm with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n if (data.offline !== undefined) this.offline = data.offline;\n this.type = data.type;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n this.driver = data.driver;\n this.areas = data.areas;\n this.zones = data.zones;\n if (data.chime !== undefined) this.chime = data.chime;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n if (data.address !== undefined) this.address = data.address;\n }\n}\n\nObject.defineProperty(Alarm.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"alarm.json\",\n title: \"Alarm\",\n description: \"Any smart alarm system\",\n type: \"object\",\n required: [\"id\", \"type\", \"areas\", \"zones\", \"driver\"],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\", description: \"Name of the alarm\" },\n offline: { type: \"boolean\" },\n type: { type: \"string\", enum: [\"alarm\"], default: \"alarm\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n areas: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n number: { type: \"number\" },\n name: { type: \"string\" },\n securityMode: {\n type: [\"string\", \"null\"],\n enum: [\"arming\", \"disarming\", \"armed\", \"disarmed\", \"alarm\", null],\n },\n },\n additionalProperties: false,\n },\n },\n zones: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n number: { type: \"number\", minimum: 0 },\n name: { type: \"string\" },\n secure: { type: [\"boolean\", \"null\"] },\n bypassed: { type: [\"boolean\", \"null\"] },\n },\n additionalProperties: false,\n },\n },\n chime: {\n type: \"boolean\",\n description: \"Reflects whether console chime is enabled\",\n },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n address: { $ref: \"definitions.json#/definitions/address\" },\n },\n },\n});\n\nObject.defineProperty(Alarm.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateAnnouncement as validate } from \"../validate\";\n\n/**\n * @typedef {Object} AnnouncementData Announcement message sent to users\n * @property {string} [id] - Identifier of the object.\n * @property {\"announcement\"} [type] - Default: \"announcement\"\n * @property {string[]} [users]\n * @property {string} [group]\n * @property {string} [body]\n * @property {{id?: any, type: \"mediaFile\", name?: string, fileHash?: string, category?: string, mimeType?: (\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\"), data?: string, url?: string, width?: number, height?: number, size?: number, uploadUrl?: string, uploadUrlExpires?: any, createdBy?: string, systemId?: any}} [media] - Any media file\n * @property {string} [sentBy]\n * @property {string[]} [tags]\n * @property {(string|object)} [createdAt]\n * @property {(string|object)} [updatedAt]\n */\n\n/**\n * Announcement message sent to users\n * @class Announcement\n * @extends {Entity}\n */\nexport class Announcement extends Entity {\n /**\n * @constructor\n * @param {AnnouncementData} data - The data to initialize the Announcement with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n if (data.users !== undefined) this.users = data.users;\n if (data.group !== undefined) this.group = data.group;\n if (data.body !== undefined) this.body = data.body;\n if (data.media !== undefined) this.media = data.media;\n if (data.sentBy !== undefined) this.sentBy = data.sentBy;\n if (data.tags !== undefined) this.tags = data.tags;\n if (data.createdAt !== undefined) this.createdAt = data.createdAt;\n if (data.updatedAt !== undefined) this.updatedAt = data.updatedAt;\n }\n}\n\nObject.defineProperty(Announcement.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"announcement.json\",\n title: \"Announcement\",\n description: \"Announcement message sent to users\",\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", enum: [\"announcement\"], default: \"announcement\" },\n users: { type: \"array\", items: { type: \"string\" }, minItems: 1 },\n group: { type: \"string\" },\n body: { type: \"string\" },\n media: { $ref: \"mediaFile.json\" },\n sentBy: { type: \"string\" },\n tags: { type: \"array\", items: { type: \"string\" } },\n createdAt: { $ref: \"definitions.json#/definitions/date\" },\n updatedAt: { $ref: \"definitions.json#/definitions/date\" },\n },\n additionalProperties: false,\n },\n});\n\nObject.defineProperty(Announcement.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateAutomation as validate } from \"../validate\";\n\n/**\n * @typedef {Object} AutomationData An automation is a collection of triggers and actions\n * @property {string} id - Identifier of the object.\n * @property {string} [name] - The friendly name of the automation\n * @property {\"automation\"} type - Default: \"automation\"\n * @property {boolean} [isEnabled] - Whether the automation is currently enabled. Default: true\n * @property {{discriminator: \"time\", schedule: {days: number[], time: string, timeOffsetSeconds?: number, repeat?: boolean, timezone: string}}} trigger - The trigger that initiates the automation\n * @property {\"time\"} trigger.discriminator - Type of trigger\n * @property {{days: number[], time: string, timeOffsetSeconds?: number, repeat?: boolean, timezone: string}} trigger.schedule - Schedule for time-based triggers\n * @property {number[]} trigger.schedule.days - Days of the week (0 = Sunday, 6 = Saturday)\n * @property {string} trigger.schedule.time - Time of day to trigger the automation\n * @property {number} [trigger.schedule.timeOffsetSeconds] - Offset in seconds from the scheduled time. Default: 0\n * @property {boolean} [trigger.schedule.repeat] - Whether the schedule repeats. Default: true\n * @property {string} trigger.schedule.timezone - Timezone for the schedule (IANA timezone format)\n * @property {{deviceId: string, roomId: string, discriminator: string, duration?: number, state: {property: string, value: (string|number|boolean)}[]}[]} actions - Actions to perform when the trigger conditions are met\n * @property {(string|object)} [createdAt]\n * @property {(string|object)} [updatedAt]\n * @property {(string|object)} [lastTriggeredAt] - When the automation was last triggered\n */\n\n/**\n * An automation is a collection of triggers and actions\n * @class Automation\n * @extends {Entity}\n */\nexport class Automation extends Entity {\n /**\n * @constructor\n * @param {AutomationData} data - The data to initialize the Automation with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n this.type = data.type;\n if (data.isEnabled !== undefined) this.isEnabled = data.isEnabled;\n this.trigger = data.trigger;\n this.actions = data.actions;\n if (data.createdAt !== undefined) this.createdAt = data.createdAt;\n if (data.updatedAt !== undefined) this.updatedAt = data.updatedAt;\n if (data.lastTriggeredAt !== undefined)\n this.lastTriggeredAt = data.lastTriggeredAt;\n }\n\n get isTimeBased() {\n return (\n this.discriminator === \"time\" ||\n (this.trigger && this.trigger.type === \"time\")\n );\n }\n get isDeviceBased() {\n return (\n this.discriminator === \"device\" ||\n (this.trigger && this.trigger.type !== \"time\")\n );\n }\n get isRepeating() {\n return this.isTimeBased() && this.trigger?.schedule?.repeat !== false;\n }\n}\n\nObject.defineProperty(Automation.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"automation.json\",\n title: \"Automation\",\n description: \"An automation is a collection of triggers and actions\",\n type: \"object\",\n required: [\"id\", \"type\", \"trigger\", \"actions\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: {\n type: \"string\",\n description: \"The friendly name of the automation\",\n },\n type: { type: \"string\", enum: [\"automation\"], default: \"automation\" },\n isEnabled: {\n type: \"boolean\",\n description: \"Whether the automation is currently enabled\",\n default: true,\n },\n trigger: {\n type: \"object\",\n description: \"The trigger that initiates the automation\",\n required: [\"discriminator\", \"schedule\"],\n properties: {\n discriminator: {\n type: \"string\",\n enum: [\"time\"],\n description: \"Type of trigger\",\n },\n schedule: {\n type: \"object\",\n description: \"Schedule for time-based triggers\",\n required: [\"days\", \"time\", \"timezone\"],\n properties: {\n days: {\n type: \"array\",\n description: \"Days of the week (0 = Sunday, 6 = Saturday)\",\n items: { type: \"integer\", minimum: 0, maximum: 6 },\n },\n time: {\n type: \"string\",\n description: \"Time of day to trigger the automation\",\n },\n timeOffsetSeconds: {\n type: \"integer\",\n description: \"Offset in seconds from the scheduled time\",\n default: 0,\n },\n repeat: {\n type: \"boolean\",\n description: \"Whether the schedule repeats\",\n default: true,\n },\n timezone: {\n type: \"string\",\n description: \"Timezone for the schedule (IANA timezone format)\",\n },\n },\n },\n },\n },\n actions: {\n type: \"array\",\n description: \"Actions to perform when the trigger conditions are met\",\n items: {\n type: \"object\",\n required: [\"deviceId\", \"roomId\", \"discriminator\", \"state\"],\n properties: {\n deviceId: {\n type: \"string\",\n description: \"ID of the device to control\",\n },\n roomId: {\n type: \"string\",\n description: \"ID of the room containing the device\",\n },\n discriminator: {\n type: \"string\",\n description:\n \"Type discriminator for the device (e.g., 'windowCovering', 'switch')\",\n },\n duration: {\n type: \"integer\",\n description:\n \"Duration in seconds to keep the device in the configured state\",\n minimum: 0,\n },\n state: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"property\", \"value\"],\n properties: {\n property: {\n type: \"string\",\n description:\n \"Property to set (e.g., 'state', 'level', 'setpoint')\",\n },\n value: {\n type: [\"string\", \"number\", \"boolean\"],\n description: \"Value to set the property to\",\n },\n },\n },\n },\n },\n },\n minItems: 1,\n },\n createdAt: { $ref: \"definitions.json#/definitions/createdAt\" },\n updatedAt: { $ref: \"definitions.json#/definitions/updatedAt\" },\n lastTriggeredAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the automation was last triggered\",\n },\n },\n additionalProperties: false,\n },\n});\n\nObject.defineProperty(Automation.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateCamera as validate } from \"../validate\";\n\n/**\n * @typedef {Object} CameraData Any smart camera\n * @property {string} id - Identifier of the object.\n * @property {string} [name]\n * @property {\"doorStation\"} [discriminator]\n * @property {\"camera\"} type - Default: \"camera\"\n * @property {boolean} [offline]\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {{iframe?: string, hls?: string, webRTC?: string, rtsp?: string}} [liveStreams]\n * @property {string} [liveStreams.iframe]\n * @property {string} [liveStreams.hls]\n * @property {string} [liveStreams.webRTC]\n * @property {string} [liveStreams.rtsp]\n * @property {{id?: string, driver?: (\"aws-kinesis\"|\"cloudflare-stream\"|\"doorbird\"|\"digital-watchdog\"|\"mediamtx\"), allowedOrigins?: string[], authRequired?: boolean, iframe?: string, hls?: string, webRTC?: string, rtsp?: string, previewImage?: string}} [liveStream]\n * @property {string} [liveStream.id]\n * @property {(\"aws-kinesis\"|\"cloudflare-stream\"|\"doorbird\"|\"digital-watchdog\"|\"mediamtx\")} [liveStream.driver]\n * @property {string[]} [liveStream.allowedOrigins]\n * @property {boolean} [liveStream.authRequired]\n * @property {string} [liveStream.iframe]\n * @property {string} [liveStream.hls]\n * @property {string} [liveStream.webRTC]\n * @property {string} [liveStream.rtsp] - Local RTSP stream URL\n * @property {string} [liveStream.previewImage] - Source to preview the camera stream\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n */\n\n/**\n * Any smart camera\n * @class Camera\n * @extends {Entity}\n */\nexport class Camera extends Entity {\n /**\n * @constructor\n * @param {CameraData} data - The data to initialize the Camera with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n if (data.discriminator !== undefined)\n this.discriminator = data.discriminator;\n this.type = data.type;\n if (data.offline !== undefined) this.offline = data.offline;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n this.driver = data.driver;\n if (data.liveStreams !== undefined) this.liveStreams = data.liveStreams;\n if (data.liveStream !== undefined) this.liveStream = data.liveStream;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n }\n}\n\nObject.defineProperty(Camera.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"camera.json\",\n title: \"Camera\",\n description: \"Any smart camera\",\n type: \"object\",\n required: [\"id\", \"type\", \"driver\"],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n discriminator: { type: \"string\", enum: [\"doorStation\"] },\n type: { type: \"string\", enum: [\"camera\"], default: \"camera\" },\n offline: { type: \"boolean\" },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n liveStreams: {\n type: \"object\",\n additionalProperties: false,\n $comment:\n \"This is now deprecated. Use liveStream instead. This will remain here for backwards compatibility.\",\n properties: {\n iframe: { type: [\"string\", \"null\"] },\n hls: { type: [\"string\", \"null\"] },\n webRTC: { type: [\"string\", \"null\"] },\n rtsp: { type: [\"string\", \"null\"] },\n },\n },\n liveStream: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n id: { type: \"string\" },\n driver: {\n type: \"string\",\n enum: [\n \"aws-kinesis\",\n \"cloudflare-stream\",\n \"doorbird\",\n \"digital-watchdog\",\n \"mediamtx\",\n ],\n },\n allowedOrigins: { type: \"array\", items: { type: \"string\" } },\n authRequired: { type: \"boolean\" },\n iframe: { type: [\"string\", \"null\"] },\n hls: { type: [\"string\", \"null\"] },\n webRTC: { type: [\"string\", \"null\"] },\n rtsp: {\n type: [\"string\", \"null\"],\n description: \"Local RTSP stream URL\",\n examples: [\n \"rtsp://192.168.1.4:544/channels/1\",\n \"rtsp://10.145.6.129:8554/unicast\",\n ],\n },\n previewImage: {\n type: [\"string\", \"null\"],\n description: \"Source to preview the camera stream\",\n examples: [\n \"https://example.com/preview.jpg\",\n \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QBYRXhpZgAATU0AKgAAAAgAA1EQAAEAAAABAQAAAFERAAQAAAABAAABAgABAA\",\n ],\n },\n },\n },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n },\n },\n});\n\nObject.defineProperty(Camera.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateCategory as validate } from \"../validate\";\n\n/**\n * @typedef {Object} CategoryData\n * @property {string} id - Identifier of the object.\n * @property {\"category\"} type - Default: \"category\"\n * @property {string} [name]\n * @property {(\"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\")} [driver] - Driver used to communicate with the object.\n * @property {string} [description]\n * @property {{id?: any, type: \"mediaFile\", name?: string, fileHash?: string, category?: string, mimeType?: (\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\"), data?: string, url?: string, width?: number, height?: number, size?: number, uploadUrl?: string, uploadUrlExpires?: any, createdBy?: string, systemId?: any}} [image] - Any media file\n * @property {number} [rating] - Default: 9\n * @property {(\"space\"|\"product\"|\"mediaFile\")} discriminator\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n *\n * @class Category\n * @extends {Entity}\n */\nexport class Category extends Entity {\n /**\n * @constructor\n * @param {CategoryData} data - The data to initialize the Category with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n this.type = data.type;\n if (data.name !== undefined) this.name = data.name;\n if (data.driver !== undefined) this.driver = data.driver;\n if (data.description !== undefined) this.description = data.description;\n if (data.image !== undefined) this.image = data.image;\n if (data.rating !== undefined) this.rating = data.rating;\n this.discriminator = data.discriminator;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n}\n\nObject.defineProperty(Category.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"category.json\",\n title: \"Category\",\n type: \"object\",\n required: [\"id\", \"type\", \"discriminator\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", enum: [\"category\"], default: \"category\" },\n name: { type: \"string\", minLength: 1 },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n description: { type: \"string\" },\n image: { $ref: \"mediaFile.json\" },\n rating: { type: \"number\", minimum: 0, maximum: 10, default: 9 },\n discriminator: {\n type: \"string\",\n enum: [\"space\", \"product\", \"mediaFile\"],\n },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n },\n});\n\nObject.defineProperty(Category.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateCourtesy as validate } from \"../validate\";\n\n/**\n * @typedef {Object} CourtesyData Any smart courtesy system\n * @property {string} id - Identifier of the object.\n * @property {string} [name]\n * @property {(\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\")} type\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {boolean} [offline]\n * @property {(\"privacy\"|\"service\"|\"none\")[]} supportedStates\n * @property {any} state\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n */\n\n/**\n * Any smart courtesy system\n * @class Courtesy\n * @extends {Entity}\n */\nexport class Courtesy extends Entity {\n /**\n * @constructor\n * @param {CourtesyData} data - The data to initialize the Courtesy with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n this.type = data.type;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n this.driver = data.driver;\n if (data.offline !== undefined) this.offline = data.offline;\n this.supportedStates = data.supportedStates;\n this.state = data.state;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n }\n}\n\nObject.defineProperty(Courtesy.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"courtesy.json\",\n title: \"Courtesy\",\n description: \"Any smart courtesy system\",\n type: \"object\",\n required: [\"id\", \"type\", \"driver\", \"supportedStates\", \"state\"],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n type: { $ref: \"definitions.json#/definitions/type\" },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n offline: { type: \"boolean\" },\n supportedStates: {\n type: \"array\",\n uniqueItems: true,\n items: { enum: [\"privacy\", \"service\", \"none\"] },\n },\n state: { type: \"string\", $ref: \"#/properties/supportedStates/items\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n },\n },\n});\n\nObject.defineProperty(Courtesy.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateCredential as validate } from \"../validate\";\n\n/**\n * @typedef {Object} CredentialData\n * @property {string} [id] - Identifier of the object.\n * @property {string} type - Default: \"credential\"\n * @property {(\"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\")} [driver] - Driver used to communicate with the object.\n * @property {(\"verificationCode\"|\"token\"|\"mobileKey\"|\"pin\"|\"publicKey\"|\"passkeyChallenge\")} [discriminator]\n * @property {string} credential\n * @property {string} [userId]\n * @property {string} [organizationId]\n * @property {string} [propertyId]\n * @property {string} [deviceId]\n * @property {string} [userAgent]\n * @property {(string|object)} expires\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n *\n * @class Credential\n * @extends {Entity}\n */\nexport class Credential extends Entity {\n /**\n * @constructor\n * @param {CredentialData} data - The data to initialize the Credential with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n this.type = data.type;\n if (data.driver !== undefined) this.driver = data.driver;\n if (data.discriminator !== undefined)\n this.discriminator = data.discriminator;\n this.credential = data.credential;\n if (data.userId !== undefined) this.userId = data.userId;\n if (data.organizationId !== undefined)\n this.organizationId = data.organizationId;\n if (data.propertyId !== undefined) this.propertyId = data.propertyId;\n if (data.deviceId !== undefined) this.deviceId = data.deviceId;\n if (data.userAgent !== undefined) this.userAgent = data.userAgent;\n this.expires = data.expires;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n}\n\nObject.defineProperty(Credential.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"credential.json\",\n title: \"Credential\",\n type: \"object\",\n required: [\"type\", \"credential\", \"expires\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"credential\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n discriminator: {\n type: \"string\",\n enum: [\n \"verificationCode\",\n \"token\",\n \"mobileKey\",\n \"pin\",\n \"publicKey\",\n \"passkeyChallenge\",\n ],\n },\n credential: { type: \"string\" },\n userId: { type: \"string\" },\n organizationId: { type: \"string\" },\n propertyId: { type: \"string\" },\n deviceId: { type: \"string\" },\n userAgent: { type: \"string\" },\n expires: { type: [\"string\", \"object\", \"null\"] },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n },\n});\n\nObject.defineProperty(Credential.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateDeviceRouter as validate } from \"../validate\";\n\n/**\n * @typedef {Object} DeviceRouterData A device router contains instructions on where to route devices based on their organization and driver.\n * @property {string} [id] - Identifier of the object.\n * @property {\"deviceRouter\"} [type] - Default: \"deviceRouter\"\n * @property {string} driver\n * @property {string} organizationId - Reference (id) to the organization that owns this router\n * @property {object} [devices]\n */\n\n/**\n * A device router contains instructions on where to route devices based on their organization and driver.\n * @class DeviceRouter\n * @extends {Entity}\n */\nexport class DeviceRouter extends Entity {\n /**\n * @constructor\n * @param {DeviceRouterData} data - The data to initialize the DeviceRouter with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n this.driver = data.driver;\n this.organizationId = data.organizationId;\n if (data.devices !== undefined) this.devices = data.devices;\n }\n}\n\nObject.defineProperty(DeviceRouter.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"deviceRouter.json\",\n title: \"Device Router\",\n description:\n \"A device router contains instructions on where to route devices based on their organization and driver.\",\n type: \"object\",\n required: [\"driver\", \"organizationId\"],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"deviceRouter\", enum: [\"deviceRouter\"] },\n driver: { type: \"string\" },\n organizationId: {\n type: [\"string\", \"null\"],\n description: \"Reference (id) to the organization that owns this router\",\n },\n devices: { type: \"object\", additionalProperties: true },\n },\n },\n});\n\nObject.defineProperty(DeviceRouter.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateDimmer as validate } from \"../validate\";\n\n/**\n * @typedef {Object} DimmerData Any smart dimmer\n * @property {string} id - Identifier of the object.\n * @property {string} [name]\n * @property {(\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\")} type\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {boolean} [offline]\n * @property {number} level\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n */\n\n/**\n * Any smart dimmer\n * @class Dimmer\n * @extends {Entity}\n */\nexport class Dimmer extends Entity {\n /**\n * @constructor\n * @param {DimmerData} data - The data to initialize the Dimmer with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n this.type = data.type;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n this.driver = data.driver;\n if (data.offline !== undefined) this.offline = data.offline;\n this.level = data.level;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n }\n}\n\nObject.defineProperty(Dimmer.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"dimmer.json\",\n title: \"Dimmer\",\n description: \"Any smart dimmer\",\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n type: { $ref: \"definitions.json#/definitions/type\" },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n offline: { type: \"boolean\" },\n level: { type: [\"number\", \"null\"], minimum: 0, maximum: 100 },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n },\n required: [\"id\", \"type\", \"level\", \"driver\"],\n },\n});\n\nObject.defineProperty(Dimmer.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateDiscoveredDevice as validate } from \"../validate\";\n\n/**\n * @typedef {Object} DiscoveredDeviceData A device that has been discovered by Kohost, but not yet added to the Kohost system.\n * @property {string} [id] - Identifier of the object.\n * @property {string} name\n * @property {string} deviceId\n * @property {\"discoveredDevice\"} [type] - Default: \"discoveredDevice\"\n * @property {(\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\")} [discriminator]\n * @property {string} [driver]\n * @property {object} deviceData\n * @property {boolean} [ignore]\n * @property {string} [organizationId] - Reference (id) to the organization that owns this device\n * @property {string} [propertyId] - Reference (id) to the property that this device belongs to\n */\n\n/**\n * A device that has been discovered by Kohost, but not yet added to the Kohost system.\n * @class DiscoveredDevice\n * @extends {Entity}\n */\nexport class DiscoveredDevice extends Entity {\n /**\n * @constructor\n * @param {DiscoveredDeviceData} data - The data to initialize the DiscoveredDevice with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n this.name = data.name;\n this.deviceId = data.deviceId;\n if (data.type !== undefined) this.type = data.type;\n if (data.discriminator !== undefined)\n this.discriminator = data.discriminator;\n if (data.driver !== undefined) this.driver = data.driver;\n this.deviceData = data.deviceData;\n if (data.ignore !== undefined) this.ignore = data.ignore;\n if (data.organizationId !== undefined)\n this.organizationId = data.organizationId;\n if (data.propertyId !== undefined) this.propertyId = data.propertyId;\n }\n}\n\nObject.defineProperty(DiscoveredDevice.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"discoveredDevice.json\",\n title: \"Discovered Device\",\n description:\n \"A device that has been discovered by Kohost, but not yet added to the Kohost system.\",\n type: \"object\",\n required: [\"name\", \"deviceId\", \"deviceData\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n deviceId: { type: \"string\" },\n type: {\n type: \"string\",\n enum: [\"discoveredDevice\"],\n default: \"discoveredDevice\",\n },\n discriminator: { $ref: \"definitions.json#/definitions/type\" },\n driver: { type: \"string\" },\n deviceData: { type: \"object\" },\n ignore: { type: \"boolean\" },\n organizationId: {\n type: [\"string\", \"null\"],\n description: \"Reference (id) to the organization that owns this device\",\n },\n propertyId: {\n type: [\"string\", \"null\"],\n description:\n \"Reference (id) to the property that this device belongs to\",\n },\n },\n },\n});\n\nObject.defineProperty(DiscoveredDevice.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateEmailMessage as validate } from \"../validate\";\n\n/**\n * @typedef {Object} EmailMessageData\n * @property {string} [id] - Identifier of the object.\n * @property {\"emailMessage\"} [type] - Default: \"emailMessage\"\n * @property {string} to\n * @property {string} from - Must be in the format of 'Sender <email@example.com>\n * @property {string} subject\n * @property {(\"queued\"|\"sending\"|\"sent\"|\"deferred\"|\"delivered\"|\"undelivered\"|\"bounced\"|\"blocked\"|\"receiving\"|\"received\"|\"opened\"|\"clicked\"|\"unsubscribed\"|\"spamReport\")} status\n * @property {string} [statusMessage]\n * @property {string} [html]\n * @property {string} [text]\n * @property {string} [driver]\n * @property {object} [appData]\n * @property {(string|object)} [createdAt]\n * @property {(string|object)} [updatedAt]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n *\n * @class EmailMessage\n * @extends {Entity}\n */\nexport class EmailMessage extends Entity {\n /**\n * @constructor\n * @param {EmailMessageData} data - The data to initialize the EmailMessage with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n this.to = data.to;\n this.from = data.from;\n this.subject = data.subject;\n this.status = data.status;\n if (data.statusMessage !== undefined)\n this.statusMessage = data.statusMessage;\n if (data.html !== undefined) this.html = data.html;\n if (data.text !== undefined) this.text = data.text;\n if (data.driver !== undefined) this.driver = data.driver;\n if (data.appData !== undefined) this.appData = data.appData;\n if (data.createdAt !== undefined) this.createdAt = data.createdAt;\n if (data.updatedAt !== undefined) this.updatedAt = data.updatedAt;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n}\n\nObject.defineProperty(EmailMessage.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"emailMessage.json\",\n title: \"Email Message\",\n type: \"object\",\n required: [\"to\", \"from\", \"status\", \"subject\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"emailMessage\", enum: [\"emailMessage\"] },\n to: {\n type: \"string\",\n pattern: \"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\\\.[a-zA-Z0-9-.]+$\",\n },\n from: {\n type: \"string\",\n pattern: \".*<[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\\\.[a-zA-Z0-9-.]+>.*\",\n description: \"Must be in the format of 'Sender <email@example.com>\",\n },\n subject: { type: \"string\" },\n status: {\n type: \"string\",\n enum: [\n \"queued\",\n \"sending\",\n \"sent\",\n \"deferred\",\n \"delivered\",\n \"undelivered\",\n \"bounced\",\n \"blocked\",\n \"receiving\",\n \"received\",\n \"opened\",\n \"clicked\",\n \"unsubscribed\",\n \"spamReport\",\n ],\n },\n statusMessage: { type: \"string\" },\n html: { type: \"string\" },\n text: { type: \"string\" },\n driver: { type: \"string\" },\n appData: { type: \"object\" },\n createdAt: { $ref: \"definitions.json#/definitions/date\" },\n updatedAt: { $ref: \"definitions.json#/definitions/date\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n },\n});\n\nObject.defineProperty(EmailMessage.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateEnergyReport as validate } from \"../validate\";\n\n/**\n * @typedef {Object} EnergyReportData Hourly Report for Energy based on energy report shards\n * @property {string} id - Identifier of the object.\n * @property {\"energyReport\"} type - Default: \"energyReport\"\n * @property {(\"hourly\"|\"daily\"|\"monthly\")} [reportTime]\n * @property {string} roomId - Identifier of the object.\n * @property {(string|object)} first\n * @property {(string|object)} last\n * @property {{id: string, type: (\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\"), kwh: number}[]} consumption\n * @property {{lights: number, climate: number, media: number}[]} totals\n * @property {number} costPerKw\n */\n\n/**\n * Hourly Report for Energy based on energy report shards\n * @class EnergyReport\n * @extends {Entity}\n */\nexport class EnergyReport extends Entity {\n /**\n * @constructor\n * @param {EnergyReportData} data - The data to initialize the EnergyReport with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n this.type = data.type;\n if (data.reportTime !== undefined) this.reportTime = data.reportTime;\n this.roomId = data.roomId;\n this.first = data.first;\n this.last = data.last;\n this.consumption = data.consumption;\n this.totals = data.totals;\n this.costPerKw = data.costPerKw;\n }\n}\n\nObject.defineProperty(EnergyReport.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"energyReport.json\",\n title: \"Energy Report\",\n description: \"Hourly Report for Energy based on energy report shards\",\n type: \"object\",\n required: [\n \"id\",\n \"type\",\n \"roomId\",\n \"first\",\n \"last\",\n \"consumption\",\n \"totals\",\n \"costPerKw\",\n ],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", enum: [\"energyReport\"], default: \"energyReport\" },\n reportTime: { type: \"string\", enum: [\"hourly\", \"daily\", \"monthly\"] },\n roomId: { $ref: \"definitions.json#/definitions/id\" },\n first: { type: [\"string\", \"object\"], format: \"date-time\" },\n last: { type: [\"string\", \"object\"], format: \"date-time\" },\n consumption: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"id\", \"type\", \"kwh\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { $ref: \"definitions.json#/definitions/type\" },\n kwh: { type: \"number\", minimum: 0 },\n },\n },\n },\n totals: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"lights\", \"climate\", \"media\"],\n properties: {\n lights: { type: \"number\", minimum: 0 },\n climate: { type: \"number\", minimum: 0 },\n media: { type: \"number\", minimum: 0 },\n },\n },\n },\n costPerKw: { type: \"number\", minimum: 0 },\n },\n },\n});\n\nObject.defineProperty(EnergyReport.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateEnergyReportShard as validate } from \"../validate\";\n\n/**\n * @typedef {Object} EnergyReportShardData Shard used for Energy Reports\n * @property {string} id - Identifier of the object.\n * @property {\"energyReportShard\"} type - Default: \"energyReportShard\"\n * @property {string} roomId - Identifier of the object.\n * @property {(string|object)} first\n * @property {(string|object)} last\n * @property {{time: (string|object), watts: number, id: string, type: (\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\"), value: number}[]} data\n * @property {number} ndata - Default: 0\n * @property {(string|object)} expires\n */\n\n/**\n * Shard used for Energy Reports\n * @class EnergyReportShard\n * @extends {Entity}\n */\nexport class EnergyReportShard extends Entity {\n /**\n * @constructor\n * @param {EnergyReportShardData} data - The data to initialize the EnergyReportShard with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n this.type = data.type;\n this.roomId = data.roomId;\n this.first = data.first;\n this.last = data.last;\n this.data = data.data;\n this.ndata = data.ndata;\n this.expires = data.expires;\n }\n}\n\nObject.defineProperty(EnergyReportShard.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"energyReportShard.json\",\n title: \"Energy Report Shard\",\n description: \"Shard used for Energy Reports\",\n type: \"object\",\n required: [\n \"id\",\n \"type\",\n \"roomId\",\n \"first\",\n \"last\",\n \"data\",\n \"ndata\",\n \"expires\",\n ],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: {\n type: \"string\",\n enum: [\"energyReportShard\"],\n default: \"energyReportShard\",\n },\n roomId: { $ref: \"definitions.json#/definitions/id\" },\n first: { type: [\"string\", \"object\"], format: \"date-time\" },\n last: { type: [\"string\", \"object\"], format: \"date-time\" },\n data: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"time\", \"watts\", \"id\", \"type\", \"value\"],\n properties: {\n time: { type: [\"string\", \"object\"], format: \"date-time\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { $ref: \"definitions.json#/definitions/type\" },\n value: { type: \"number\", minimum: 0, maximum: 1 },\n },\n },\n },\n ndata: { type: \"integer\", minimum: 0, maximum: 100000, default: 0 },\n expires: { type: [\"string\", \"object\"], format: \"date-time\" },\n },\n },\n});\n\nObject.defineProperty(EnergyReportShard.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateGateway as validate } from \"../validate\";\n\n/**\n * @typedef {Object} GatewayData Any smart gateway that is an entrypoint for controlling devices\n * @property {string} id - Identifier of the object.\n * @property {string} [name]\n * @property {boolean} [offline]\n * @property {(\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\")} type\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {string} status\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n */\n\n/**\n * Any smart gateway that is an entrypoint for controlling devices\n * @class Gateway\n * @extends {Entity}\n */\nexport class Gateway extends Entity {\n /**\n * @constructor\n * @param {GatewayData} data - The data to initialize the Gateway with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n if (data.offline !== undefined) this.offline = data.offline;\n this.type = data.type;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n this.status = data.status;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n this.driver = data.driver;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n }\n}\n\nObject.defineProperty(Gateway.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"iotGateway.json\",\n title: \"Gateway\",\n description:\n \"Any smart gateway that is an entrypoint for controlling devices\",\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n offline: { type: \"boolean\" },\n type: { $ref: \"definitions.json#/definitions/type\" },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n status: { type: \"string\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n },\n required: [\"id\", \"type\", \"status\", \"driver\"],\n },\n});\n\nObject.defineProperty(Gateway.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateIdentification as validate } from \"../validate\";\n\n/**\n * @typedef {Object} IdentificationData\n * @property {string} [id] - Identifier of the object.\n * @property {(\"driversLicense\"|\"passport\"|\"identityCard\"|\"visa\")} type\n * @property {string} [number]\n * @property {string} [maskedNumber]\n * @property {string} [encryptedNumber]\n * @property {(string|object)} [issued]\n * @property {(string|object)} [expires]\n * @property {boolean} [verified]\n * @property {boolean} [matched]\n * @property {string} [firstName]\n * @property {string} [lastName]\n * @property {string} [issuingCountry]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n *\n * @class Identification\n * @extends {Entity}\n */\nexport class Identification extends Entity {\n /**\n * @constructor\n * @param {IdentificationData} data - The data to initialize the Identification with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n this.type = data.type;\n if (data.number !== undefined) this.number = data.number;\n if (data.maskedNumber !== undefined) this.maskedNumber = data.maskedNumber;\n if (data.encryptedNumber !== undefined)\n this.encryptedNumber = data.encryptedNumber;\n if (data.issued !== undefined) this.issued = data.issued;\n if (data.expires !== undefined) this.expires = data.expires;\n if (data.verified !== undefined) this.verified = data.verified;\n if (data.matched !== undefined) this.matched = data.matched;\n if (data.firstName !== undefined) this.firstName = data.firstName;\n if (data.lastName !== undefined) this.lastName = data.lastName;\n if (data.issuingCountry !== undefined)\n this.issuingCountry = data.issuingCountry;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n}\n\nObject.defineProperty(Identification.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"identification.json\",\n title: \"Identification\",\n type: \"object\",\n required: [\"type\"],\n additionalProperties: false,\n oneOf: [{ required: [\"number\"] }, { required: [\"encryptedNumber\"] }],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: {\n type: \"string\",\n enum: [\"driversLicense\", \"passport\", \"identityCard\", \"visa\"],\n },\n number: { type: \"string\" },\n maskedNumber: { type: \"string\" },\n encryptedNumber: { type: \"string\" },\n issued: { type: [\"string\", \"object\"], format: \"date-time\" },\n expires: { type: [\"string\", \"object\", \"null\"], format: \"date-time\" },\n verified: { type: \"boolean\" },\n matched: { type: \"boolean\" },\n firstName: { type: \"string\" },\n lastName: { type: \"string\" },\n issuingCountry: { type: \"string\", minLength: 2, maxLength: 2 },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n },\n});\n\nObject.defineProperty(Identification.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateIssue as validate } from \"../validate\";\n\n/**\n * @typedef {Object} IssueData An issue associated with ticketing and concierge.\n * @property {string} id - Identifier of the object.\n * @property {\"issue\"} type - Default: \"issue\"\n * @property {string} name\n * @property {string} [description]\n * @property {string} department\n * @property {{userId?: string, vendorId?: string, priority?: (\"low\"|\"normal\"|\"high\"), tags?: string[]}} [autoAssign]\n * @property {string} [autoAssign.userId] - The user ID to assign tickets with this issue to.\n * @property {string} [autoAssign.vendorId] - The vendor ID to assign tickets with this issue to.\n * @property {(\"low\"|\"normal\"|\"high\")} [autoAssign.priority] - The priority to assign tickets with this issue to.\n * @property {string[]} [autoAssign.tags]\n * @property {{id: string, discriminator: \"user\"}[]} [notify] - A list of entities to notify when this issue is triggered.. Default: []\n * @property {string} [systemKey]\n * @property {boolean} [autoCreateTicket] - Default: true\n * @property {string[]} [excludedResources] - A list of resources that should not trigger notifications of this issue. Default: []\n */\n\n/**\n * An issue associated with ticketing and concierge.\n * @class Issue\n * @extends {Entity}\n */\nexport class Issue extends Entity {\n /**\n * @constructor\n * @param {IssueData} data - The data to initialize the Issue with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n this.type = data.type;\n this.name = data.name;\n if (data.description !== undefined) this.description = data.description;\n this.department = data.department;\n if (data.autoAssign !== undefined) this.autoAssign = data.autoAssign;\n if (data.notify !== undefined) this.notify = data.notify;\n if (data.systemKey !== undefined) this.systemKey = data.systemKey;\n if (data.autoCreateTicket !== undefined)\n this.autoCreateTicket = data.autoCreateTicket;\n if (data.excludedResources !== undefined)\n this.excludedResources = data.excludedResources;\n }\n}\n\nObject.defineProperty(Issue.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"issue.json\",\n title: \"Issue\",\n description: \"An issue associated with ticketing and concierge.\",\n type: \"object\",\n required: [\"id\", \"type\", \"name\", \"department\"],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", enum: [\"issue\"], default: \"issue\" },\n name: { type: \"string\" },\n description: { type: \"string\" },\n department: { type: \"string\" },\n autoAssign: {\n type: \"object\",\n properties: {\n userId: {\n type: \"string\",\n description: \"The user ID to assign tickets with this issue to.\",\n },\n vendorId: {\n type: \"string\",\n description: \"The vendor ID to assign tickets with this issue to.\",\n },\n priority: {\n $ref: \"ticket.json#/properties/priority\",\n description: \"The priority to assign tickets with this issue to.\",\n },\n tags: { type: \"array\", items: { type: \"string\" } },\n },\n },\n notify: {\n type: \"array\",\n description:\n \"A list of entities to notify when this issue is triggered.\",\n default: [],\n items: {\n type: \"object\",\n required: [\"id\", \"discriminator\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the entity to notify.\",\n },\n discriminator: { type: \"string\", enum: [\"user\"] },\n },\n },\n },\n systemKey: { type: \"string\" },\n autoCreateTicket: { type: \"boolean\", default: true },\n excludedResources: {\n type: \"array\",\n description:\n \"A list of resources that should not trigger notifications of this issue\",\n items: { type: \"string\" },\n default: [],\n },\n },\n },\n});\n\nObject.defineProperty(Issue.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateLock as validate } from \"../validate\";\n\n/**\n * @typedef {Object} LockData Any smart lock\n * @property {string} id - Identifier of the object.\n * @property {string} [name]\n * @property {(\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\")} type\n * @property {boolean} [offline]\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {(\"locked\"|\"unlocked\")} state\n * @property {(\"normal\"|\"autoLock\"|\"emergencyOpen\"|\"emergencyClose\"|\"holdOpen\"|\"lockdown\")} [mode] - emergencyOpen and emergencyClose are deprecated and can be removed once Salto, Paxton and Geovision drivers are updated. Default: null\n * @property {(\"normal\"|\"autoLock\"|\"emergencyOpen\"|\"emergencyClose\"|\"holdOpen\"|\"lockdown\")[]} [supportedModes]\n * @property {number} [batteryLevel]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n */\n\n/**\n * Any smart lock\n * @class Lock\n * @extends {Entity}\n */\nexport class Lock extends Entity {\n /**\n * @constructor\n * @param {LockData} data - The data to initialize the Lock with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n this.type = data.type;\n if (data.offline !== undefined) this.offline = data.offline;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n this.driver = data.driver;\n this.state = data.state;\n if (data.mode !== undefined) this.mode = data.mode;\n if (data.supportedModes !== undefined)\n this.supportedModes = data.supportedModes;\n if (data.batteryLevel !== undefined) this.batteryLevel = data.batteryLevel;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n }\n}\n\nObject.defineProperty(Lock.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"lock.json\",\n title: \"Lock\",\n description: \"Any smart lock\",\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n type: { $ref: \"definitions.json#/definitions/type\" },\n offline: { type: \"boolean\" },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n state: { type: [\"string\", \"null\"], enum: [\"locked\", \"unlocked\", null] },\n mode: {\n type: [\"string\", \"null\"],\n enum: [\n \"normal\",\n \"autoLock\",\n \"emergencyOpen\",\n \"emergencyClose\",\n \"holdOpen\",\n \"lockdown\",\n null,\n ],\n description:\n \"emergencyOpen and emergencyClose are deprecated and can be removed once Salto, Paxton and Geovision drivers are updated\",\n default: null,\n },\n supportedModes: {\n type: \"array\",\n uniqueItems: true,\n items: {\n enum: [\n \"normal\",\n \"autoLock\",\n \"emergencyOpen\",\n \"emergencyClose\",\n \"holdOpen\",\n \"lockdown\",\n null,\n ],\n },\n },\n batteryLevel: { $ref: \"definitions.json#/definitions/batteryLevel\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n },\n required: [\"id\", \"type\", \"state\", \"driver\"],\n },\n});\n\nObject.defineProperty(Lock.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateLog as validate } from \"../validate\";\n\n/**\n * @typedef {Object} LogData\n * @property {\"log\"} type - Default: \"log\"\n * @property {number} timestamp\n * @property {string} id - Identifier of the object.\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {string} name - Event name\n * @property {{name: string, value: string}} [field1]\n * @property {string} field1.name\n * @property {string} field1.value\n * @property {{name: string, value: string}} [field2]\n * @property {string} field2.name\n * @property {string} field2.value\n * @property {{name: string, value: string}} [field3]\n * @property {string} field3.name\n * @property {string} field3.value\n * @property {{name: string, value: string}} [field4]\n * @property {string} field4.name\n * @property {string} field4.value\n * @property {{name: string, value: string}} [field5]\n * @property {string} field5.name\n * @property {string} field5.value\n * @property {{name: string, value: string}} [field6]\n * @property {string} field6.name\n * @property {string} field6.value\n */\n\n/**\n *\n * @class Log\n * @extends {Entity}\n */\nexport class Log extends Entity {\n /**\n * @constructor\n * @param {LogData} data - The data to initialize the Log with\n */\n constructor(data) {\n super(data);\n this.type = data.type;\n this.timestamp = data.timestamp;\n this.id = data.id;\n this.driver = data.driver;\n this.name = data.name;\n if (data.field1 !== undefined) this.field1 = data.field1;\n if (data.field2 !== undefined) this.field2 = data.field2;\n if (data.field3 !== undefined) this.field3 = data.field3;\n if (data.field4 !== undefined) this.field4 = data.field4;\n if (data.field5 !== undefined) this.field5 = data.field5;\n if (data.field6 !== undefined) this.field6 = data.field6;\n }\n}\n\nObject.defineProperty(Log.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"log.json\",\n title: \"Log\",\n type: \"object\",\n required: [\"type\", \"timestamp\", \"id\", \"driver\", \"name\"],\n properties: {\n type: { type: \"string\", default: \"log\", enum: [\"log\"] },\n timestamp: { type: \"number\", minimum: 1655907956593 },\n id: { $ref: \"definitions.json#/definitions/id\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n name: { type: \"string\", description: \"Event name\" },\n field1: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: { name: { type: \"string\" }, value: { type: \"string\" } },\n },\n field2: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: { name: { type: \"string\" }, value: { type: \"string\" } },\n },\n field3: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: { name: { type: \"string\" }, value: { type: \"string\" } },\n },\n field4: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: { name: { type: \"string\" }, value: { type: \"string\" } },\n },\n field5: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: { name: { type: \"string\" }, value: { type: \"string\" } },\n },\n field6: {\n type: \"object\",\n required: [\"name\", \"value\"],\n properties: { name: { type: \"string\" }, value: { type: \"string\" } },\n },\n },\n },\n});\n\nObject.defineProperty(Log.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateMediaFile as validate } from \"../validate\";\n\n/**\n * @typedef {Object} MediaFileData Any media file\n * @property {string} [id] - Identifier of the object.\n * @property {\"mediaFile\"} type - Default: \"mediaFile\"\n * @property {string} [name]\n * @property {string} [fileHash]\n * @property {string} [category] - This is the category id\n * @property {(\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\")} [mimeType]\n * @property {string} [data]\n * @property {string} [url]\n * @property {number} [width]\n * @property {number} [height]\n * @property {number} [size] - Size in bytes\n * @property {string} [uploadUrl]\n * @property {(string|object)} [uploadUrlExpires]\n * @property {string} [createdBy]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n * Any media file\n * @class MediaFile\n * @extends {Entity}\n */\nexport class MediaFile extends Entity {\n /**\n * @constructor\n * @param {MediaFileData} data - The data to initialize the MediaFile with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n this.type = data.type;\n if (data.name !== undefined) this.name = data.name;\n if (data.fileHash !== undefined) this.fileHash = data.fileHash;\n if (data.category !== undefined) this.category = data.category;\n if (data.mimeType !== undefined) this.mimeType = data.mimeType;\n if (data.data !== undefined) this.data = data.data;\n if (data.url !== undefined) this.url = data.url;\n if (data.width !== undefined) this.width = data.width;\n if (data.height !== undefined) this.height = data.height;\n if (data.size !== undefined) this.size = data.size;\n if (data.uploadUrl !== undefined) this.uploadUrl = data.uploadUrl;\n if (data.uploadUrlExpires !== undefined)\n this.uploadUrlExpires = data.uploadUrlExpires;\n if (data.createdBy !== undefined) this.createdBy = data.createdBy;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n\n createImageVariant(params) {\n if (this.mimeType != \"image/*\")\n throw new Error(\"Only dynamic images can have variants\");\n if (!this.url) throw new Error(\"MediaFile has no url\");\n // convert params to \"key=value\" pairs\n const query = Object.keys(params)\n .map((key) => `${key}=${params[key]}`)\n .join(\",\");\n\n // replace the final /public with the query above\n return this.url.replace(/\\/public$/, `/${query}`);\n }\n}\n\nObject.defineProperty(MediaFile.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"mediaFile.json\",\n title: \"Media File\",\n description: \"Any media file\",\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"mediaFile\", enum: [\"mediaFile\"] },\n name: { type: \"string\" },\n fileHash: { type: \"string\" },\n category: { type: \"string\", description: \"This is the category id\" },\n mimeType: {\n type: \"string\",\n enum: [\n \"image/*\",\n \"image/jpeg\",\n \"image/png\",\n \"image/gif\",\n \"image/webp\",\n \"image/avif\",\n \"image/svg+xml\",\n \"application/pdf\",\n ],\n },\n data: { type: \"string\" },\n url: { type: \"string\", format: \"uri\" },\n width: { type: \"integer\", minimum: 0 },\n height: { type: \"integer\", minimum: 0 },\n size: { type: \"integer\", minimum: 0, description: \"Size in bytes\" },\n uploadUrl: { type: \"string\", format: \"uri\" },\n uploadUrlExpires: { $ref: \"definitions.json#/definitions/date\" },\n createdBy: { type: \"string\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n additionalProperties: false,\n required: [\"type\"],\n },\n});\n\nObject.defineProperty(MediaFile.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateMediaSource as validate } from \"../validate\";\n\n/**\n * @typedef {Object} MediaSourceData Any media source\n * @property {string} id - Identifier of the object.\n * @property {\"mediaSource\"} type - Default: \"mediaSource\"\n * @property {(\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"paSystem\"|\"uncontrolledDevice\")} discriminator\n * @property {{id?: string, name?: string}[]} [playlists]\n * @property {(\"MR22GA\"|\"XRT260\"|\"XRT270\"|\"HOF-16K 1.2\"|\"219863500\"|\"SONIFI\"|\"AKB76039803\"|\"BN59-01388A\")} [remote]\n * @property {string} [name]\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {boolean} [offline]\n * @property {boolean} audio\n * @property {boolean} video\n * @property {boolean} [powerFeedback]\n * @property {boolean} [volumeFeedback]\n * @property {boolean} [muted]\n * @property {number} [volume]\n * @property {number} [brightness]\n * @property {number} [contrast]\n * @property {(\"on\"|\"off\")} [power]\n * @property {string} [input]\n * @property {string[]} [supportedInputs]\n * @property {string[]} [supportedOutputs]\n * @property {(\"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\")} [command]\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n */\n\n/**\n * Any media source\n * @class MediaSource\n * @extends {Entity}\n */\nexport class MediaSource extends Entity {\n /**\n * @constructor\n * @param {MediaSourceData} data - The data to initialize the MediaSource with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n this.type = data.type;\n this.discriminator = data.discriminator;\n if (data.playlists !== undefined) this.playlists = data.playlists;\n if (data.remote !== undefined) this.remote = data.remote;\n if (data.name !== undefined) this.name = data.name;\n this.driver = data.driver;\n if (data.offline !== undefined) this.offline = data.offline;\n this.audio = data.audio;\n this.video = data.video;\n if (data.powerFeedback !== undefined)\n this.powerFeedback = data.powerFeedback;\n if (data.volumeFeedback !== undefined)\n this.volumeFeedback = data.volumeFeedback;\n if (data.muted !== undefined) this.muted = data.muted;\n if (data.volume !== undefined) this.volume = data.volume;\n if (data.brightness !== undefined) this.brightness = data.brightness;\n if (data.contrast !== undefined) this.contrast = data.contrast;\n if (data.power !== undefined) this.power = data.power;\n if (data.input !== undefined) this.input = data.input;\n if (data.supportedInputs !== undefined)\n this.supportedInputs = data.supportedInputs;\n if (data.supportedOutputs !== undefined)\n this.supportedOutputs = data.supportedOutputs;\n if (data.command !== undefined) this.command = data.command;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n }\n}\n\nObject.defineProperty(MediaSource.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"mediaSource.json\",\n title: \"Media Source\",\n description: \"Any media source\",\n type: \"object\",\n required: [\"id\", \"type\", \"discriminator\", \"audio\", \"video\", \"driver\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"mediaSource\", enum: [\"mediaSource\"] },\n discriminator: {\n type: \"string\",\n enum: [\n \"tv\",\n \"dvr\",\n \"appleTv\",\n \"discPlayer\",\n \"mediaPlayer\",\n \"paSystem\",\n \"uncontrolledDevice\",\n ],\n },\n playlists: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { $ref: \"definitions.json#/definitions/name\" },\n },\n },\n },\n remote: {\n type: \"string\",\n enum: [\n \"MR22GA\",\n \"XRT260\",\n \"XRT270\",\n \"HOF-16K 1.2\",\n \"219863500\",\n \"SONIFI\",\n \"AKB76039803\",\n \"BN59-01388A\",\n ],\n },\n name: { $ref: \"definitions.json#/definitions/name\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n offline: { type: \"boolean\" },\n audio: { type: \"boolean\" },\n video: { type: \"boolean\" },\n powerFeedback: { type: \"boolean\" },\n volumeFeedback: { type: \"boolean\" },\n muted: { type: \"boolean\" },\n volume: { type: \"number\", minimum: 0, maximum: 100 },\n brightness: { type: \"number\", minimum: 0, maximum: 100 },\n contrast: { type: \"number\", minimum: 0, maximum: 100 },\n power: { type: \"string\", enum: [\"on\", \"off\"] },\n input: { type: \"string\" },\n supportedInputs: { type: \"array\", items: { type: \"string\" } },\n supportedOutputs: { type: \"array\", items: { type: \"string\" } },\n command: {\n type: [\"string\", \"null\"],\n enum: [\n \"mute\",\n \"volumeUp\",\n \"volumeDown\",\n \"brightnessUp\",\n \"brightnessDown\",\n \"channelUp\",\n \"channelDown\",\n \"number0\",\n \"number1\",\n \"number2\",\n \"number3\",\n \"number4\",\n \"number5\",\n \"number6\",\n \"number7\",\n \"number8\",\n \"number9\",\n \"lastChannel\",\n \"display\",\n \"favoriteChannel\",\n \"play\",\n \"playing\",\n \"stop\",\n \"stopped\",\n \"pause\",\n \"paused\",\n \"fastForward\",\n \"fastForwarding\",\n \"rewind\",\n \"rewinding\",\n \"instantReplay\",\n \"record\",\n \"ac3\",\n \"pvrMenu\",\n \"guide\",\n \"menu\",\n \"menuUp\",\n \"menuDown\",\n \"menuLeft\",\n \"menuRight\",\n \"pageUp\",\n \"pageDown\",\n \"select\",\n \"exit\",\n \"input\",\n \"power\",\n \"enterChannel\",\n \"enterVolume\",\n \"enterBrightness\",\n \"enterContrast\",\n \"number10\",\n \"number11\",\n \"number12\",\n \"number13\",\n \"number14\",\n \"number15\",\n \"number16\",\n \"number10Plus\",\n \"number20Plus\",\n \"number100\",\n \"dash\",\n \"threeChan\",\n \"threeD\",\n \"sixChan\",\n \"a\",\n \"add\",\n \"alarm\",\n \"am\",\n \"analog\",\n \"angle\",\n \"antenna\",\n \"antennaEast\",\n \"antennaWest\",\n \"aspect\",\n \"audio1\",\n \"audio2\",\n \"audio3\",\n \"audioDumming\",\n \"audioLevelDown\",\n \"audioLevelUp\",\n \"b\",\n \"back\",\n \"c\",\n \"component1\",\n \"component2\",\n \"component3\",\n \"d\",\n \"home\",\n \"list\",\n \"liveTv\",\n \"discreteInputCable\",\n \"powerOff\",\n \"powerOn\",\n \"setupMenu\",\n \"skipForward\",\n \"skipReverse\",\n \"video1\",\n \"video2\",\n \"video3\",\n \"video4\",\n \"video5\",\n \"details\",\n \"hdmi1\",\n \"hdmi2\",\n \"hdmi3\",\n \"cecDeviceList\",\n \"mtsSap\",\n \"red\",\n \"green\",\n \"yellow\",\n \"blue\",\n \"alert\",\n \"order\",\n ],\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n },\n additionalProperties: false,\n },\n});\n\nObject.defineProperty(MediaSource.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateMotionSensor as validate } from \"../validate\";\n\n/**\n * @typedef {Object} MotionSensorData Any smart motion sensor\n * @property {string} id - Identifier of the object.\n * @property {string} [name]\n * @property {(\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\")} type\n * @property {boolean} [offline]\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n */\n\n/**\n * Any smart motion sensor\n * @class MotionSensor\n * @extends {Entity}\n */\nexport class MotionSensor extends Entity {\n /**\n * @constructor\n * @param {MotionSensorData} data - The data to initialize the MotionSensor with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n this.type = data.type;\n if (data.offline !== undefined) this.offline = data.offline;\n this.driver = data.driver;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n }\n}\n\nObject.defineProperty(MotionSensor.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"motionSensor.json\",\n title: \"Motion Sensor\",\n description: \"Any smart motion sensor\",\n type: \"object\",\n required: [\"id\", \"type\", \"driver\"],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n type: { $ref: \"definitions.json#/definitions/type\" },\n offline: { type: \"boolean\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n },\n },\n});\n\nObject.defineProperty(MotionSensor.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateOrder as validate } from \"../validate\";\n\n/**\n * @typedef {Object} OrderData A purchase order for products or services.\n * @property {string} [id] - Identifier of the object.\n * @property {\"order\"} type - Default: \"order\"\n * @property {string} [orderNumber]\n * @property {(\"draft\"|\"pendingPayment\"|\"processing\"|\"outForDelivery\"|\"completed\"|\"paymentFailed\"|\"cancelled\"|\"refunded\")} status\n * @property {string} [userId] - Identifier of the object.. User id of purchaser\n * @property {string} [reservationId] - Identifier of the object.. Reservation id if the order is for a reservation\n * @property {(string|object)} [date]\n * @property {{additionalProperties?: any, name: string, sku?: string, quantity?: number, price: number, taxClass?: string, deliveryClass?: string, productId?: string}[]} [items] - Default: []\n * @property {{additionalProperties?: any, name: string, class?: string, rateType?: (\"percentage\"|\"flat\"), rate: number, total?: number}[]} [taxes] - Default: []\n * @property {{additionalProperties?: any, name: string, price: number}[]} [fees] - Default: []\n * @property {{additionalProperties?: any, name: string, class?: string, rateType?: (\"percentage\"|\"flat\"), rate: number, total?: number}[]} [delivery] - Default: []\n * @property {{method?: (\"folio\"|\"invoice\"|\"amex\"|\"visa\"|\"masterCard\"|\"maestro\"|\"discover\"|\"diners\"|\"jcb\"|\"applePay\"|\"alipay\"|\"chinaUnionPay\"|\"vpay\"), name?: string, date?: (string|object), amount?: number, transactionReference?: string}[]} [payments] - Default: []\n */\n\n/**\n * A purchase order for products or services.\n * @class Order\n * @extends {Entity}\n */\nexport class Order extends Entity {\n /**\n * @constructor\n * @param {OrderData} data - The data to initialize the Order with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n this.type = data.type;\n if (data.orderNumber !== undefined) this.orderNumber = data.orderNumber;\n this.status = data.status;\n if (data.userId !== undefined) this.userId = data.userId;\n if (data.reservationId !== undefined)\n this.reservationId = data.reservationId;\n if (data.date !== undefined) this.date = data.date;\n if (data.items !== undefined) this.items = data.items;\n if (data.taxes !== undefined) this.taxes = data.taxes;\n if (data.fees !== undefined) this.fees = data.fees;\n if (data.delivery !== undefined) this.delivery = data.delivery;\n if (data.payments !== undefined) this.payments = data.payments;\n }\n\n getSubTotal() {\n return this.items.reduce((acc, item) => {\n const qty = item.quantity || 1;\n return acc + item.price * qty;\n }, 0);\n }\n getTaxTotal() {\n const taxes = this.taxes;\n if (!taxes) return 0;\n return this.items.reduce((acc, item) => {\n if (!item.taxClass) return acc;\n const tax = taxes.find((t) => t.class === item.taxClass);\n if (!tax) return acc;\n const { rateType, rate } = tax;\n if (rateType === \"percentage\") {\n return acc + item.price * rate;\n }\n if (rateType === \"flat\") {\n return acc + rate;\n }\n return acc + rate;\n }, 0);\n }\n getDeliveryTotal() {\n const delivery = this.delivery;\n if (!delivery) return 0;\n return this.items.reduce((acc, item) => {\n if (!item.deliveryClass) return acc;\n const d = delivery.find((d) => d.class === item.deliveryClass);\n if (!d) return acc;\n const { rateType, rate } = d;\n if (rateType === \"percentage\") {\n return acc + item.price * rate;\n }\n return acc + rate;\n }, 0);\n }\n getFeesTotal() {\n const fees = this.fees;\n return fees.reduce((acc, fee) => {\n return acc + fee.price;\n }, 0);\n }\n getTotal() {\n return (\n this.getSubTotal() +\n this.getTaxTotal() +\n this.getDeliveryTotal() +\n this.getFeesTotal()\n );\n }\n getPaymentsTotal() {\n return this.payments.reduce((acc, payment) => {\n return acc + payment.amount;\n }, 0);\n }\n getBalance() {\n return this.getTotal() - this.getPaymentsTotal();\n }\n}\n\nObject.defineProperty(Order.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"order.json\",\n title: \"Order\",\n description: \"A purchase order for products or services.\",\n type: \"object\",\n required: [\"type\", \"status\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"order\", enum: [\"order\"] },\n orderNumber: { type: \"string\" },\n status: {\n type: \"string\",\n enum: [\n \"draft\",\n \"pendingPayment\",\n \"processing\",\n \"outForDelivery\",\n \"completed\",\n \"paymentFailed\",\n \"cancelled\",\n \"refunded\",\n ],\n },\n userId: {\n $ref: \"definitions.json#/definitions/id\",\n description: \"User id of purchaser\",\n },\n reservationId: {\n $ref: \"definitions.json#/definitions/id\",\n description: \"Reservation id if the order is for a reservation\",\n },\n date: { $ref: \"definitions.json#/definitions/date\" },\n items: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"name\", \"price\"],\n properties: {\n additionalProperties: false,\n name: { type: \"string\" },\n sku: { type: \"string\" },\n quantity: { type: \"number\", default: 1 },\n price: { type: \"number\" },\n taxClass: { type: \"string\" },\n deliveryClass: { type: \"string\" },\n productId: { type: \"string\" },\n },\n },\n },\n taxes: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"name\", \"rate\"],\n properties: {\n additionalProperties: false,\n name: { type: \"string\" },\n class: { type: \"string\" },\n rateType: {\n type: \"string\",\n enum: [\"percentage\", \"flat\"],\n default: \"percentage\",\n },\n rate: { type: \"number\" },\n total: { type: \"number\" },\n },\n },\n },\n fees: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"name\", \"price\"],\n properties: {\n additionalProperties: false,\n name: { type: \"string\" },\n price: { type: \"number\" },\n },\n },\n },\n delivery: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"name\", \"rate\"],\n properties: {\n additionalProperties: false,\n name: { type: \"string\" },\n class: { type: \"string\" },\n rateType: {\n type: \"string\",\n enum: [\"percentage\", \"flat\"],\n default: \"percentage\",\n },\n rate: { type: \"number\" },\n total: { type: \"number\" },\n },\n },\n },\n payments: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n properties: {\n method: {\n type: \"string\",\n enum: [\n \"folio\",\n \"invoice\",\n \"amex\",\n \"visa\",\n \"masterCard\",\n \"maestro\",\n \"discover\",\n \"diners\",\n \"jcb\",\n \"applePay\",\n \"alipay\",\n \"chinaUnionPay\",\n \"vpay\",\n ],\n },\n name: { type: \"string\" },\n date: { $ref: \"definitions.json#/definitions/date\" },\n amount: { type: \"number\" },\n transactionReference: { type: \"string\" },\n },\n },\n },\n },\n },\n});\n\nObject.defineProperty(Order.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateOrganization as validate } from \"../validate\";\n\n/**\n * @typedef {Object} OrganizationData An organization is a group or entity that subscribes to Kohost software.\n * @property {string} [id] - Identifier of the object.\n * @property {\"organization\"} [type] - Default: \"organization\"\n * @property {number} accountNumber\n * @property {string} name\n * @property {string[]} [properties]\n * @property {string} [hostname]\n * @property {{name?: string, short_name?: string, scope?: string, start_url?: string, themeColor?: string, backgroundColor?: string, display?: (\"fullscreen\"|\"standalone\"|\"minimal-ui\"|\"browser\"), orientation?: (\"portrait\"|\"landscape\"), splash?: {src?: string, type?: string, sizes?: string}, icons?: {src?: string, sizes?: string, type?: string}[], logo?: {src?: string, type?: string, sizes?: string}}} [appManifest] - 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\"}}\n * @property {string} [appManifest.name]\n * @property {string} [appManifest.short_name]\n * @property {string} [appManifest.scope]\n * @property {string} [appManifest.start_url]\n * @property {string} [appManifest.themeColor]\n * @property {string} [appManifest.backgroundColor]\n * @property {(\"fullscreen\"|\"standalone\"|\"minimal-ui\"|\"browser\")} [appManifest.display] - Default: \"fullscreen\"\n * @property {(\"portrait\"|\"landscape\")} [appManifest.orientation] - Default: \"portrait\"\n * @property {{src?: string, type?: string, sizes?: string}} [appManifest.splash]\n * @property {string} [appManifest.splash.src]\n * @property {string} [appManifest.splash.type]\n * @property {string} [appManifest.splash.sizes]\n * @property {{src?: string, sizes?: string, type?: string}[]} [appManifest.icons]\n * @property {{src?: string, type?: string, sizes?: string}} [appManifest.logo]\n * @property {string} [appManifest.logo.src]\n * @property {string} [appManifest.logo.type]\n * @property {string} [appManifest.logo.sizes]\n * @property {{nextTicketNumber?: (string|number)}} [tickets]\n * @property {(string|number)} [tickets.nextTicketNumber] - Default: 1\n * @property {object} [credentials]\n * @property {(string|object)} [createdAt]\n * @property {(string|object)} [updatedAt]\n */\n\n/**\n * An organization is a group or entity that subscribes to Kohost software.\n * @class Organization\n * @extends {Entity}\n */\nexport class Organization extends Entity {\n /**\n * @constructor\n * @param {OrganizationData} data - The data to initialize the Organization with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n this.accountNumber = data.accountNumber;\n this.name = data.name;\n if (data.properties !== undefined) this.properties = data.properties;\n if (data.hostname !== undefined) this.hostname = data.hostname;\n if (data.appManifest !== undefined) this.appManifest = data.appManifest;\n if (data.tickets !== undefined) this.tickets = data.tickets;\n if (data.credentials !== undefined) this.credentials = data.credentials;\n if (data.createdAt !== undefined) this.createdAt = data.createdAt;\n if (data.updatedAt !== undefined) this.updatedAt = data.updatedAt;\n }\n}\n\nObject.defineProperty(Organization.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"organization.json\",\n title: \"Organization\",\n type: \"object\",\n description:\n \"An organization is a group or entity that subscribes to Kohost software.\",\n required: [\"accountNumber\", \"name\"],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"organization\", enum: [\"organization\"] },\n accountNumber: { type: [\"number\", \"null\"], minimum: 10000 },\n name: { type: \"string\" },\n properties: { type: \"array\", items: { type: \"string\" } },\n hostname: { type: [\"string\", \"null\"] },\n appManifest: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n short_name: { type: \"string\" },\n scope: { type: \"string\" },\n start_url: { type: \"string\" },\n themeColor: { type: \"string\" },\n backgroundColor: { type: \"string\" },\n display: {\n type: \"string\",\n enum: [\"fullscreen\", \"standalone\", \"minimal-ui\", \"browser\"],\n default: \"fullscreen\",\n },\n orientation: {\n type: \"string\",\n enum: [\"portrait\", \"landscape\"],\n default: \"portrait\",\n },\n splash: {\n type: \"object\",\n properties: {\n src: { type: \"string\" },\n type: { type: \"string\" },\n sizes: { type: \"string\" },\n },\n },\n icons: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n src: { type: \"string\" },\n sizes: { type: \"string\" },\n type: { type: \"string\" },\n },\n },\n },\n logo: {\n type: \"object\",\n properties: {\n src: { type: \"string\" },\n type: { type: \"string\" },\n sizes: { type: \"string\" },\n },\n },\n },\n default: {\n name: \"Kohost\",\n short_name: \"Kohost\",\n start_url: \"/\",\n scope: \"/\",\n display: \"fullscreen\",\n orientation: \"portrait\",\n theme_color: \"#1d1f22\",\n background_color: \"#1d1f22\",\n icons: [\n {\n src: \"https://images.kohost.io/cdn-cgi/imagedelivery/vcVX2aBwdFSYr66spcFKaA/9c85047f-ccba-4b1c-3070-5463fbe93b00/w=512\",\n sizes: \"512x512\",\n type: \"image/png\",\n },\n ],\n splash: {\n src: \"https://images.kohost.io/cdn-cgi/imagedelivery/vcVX2aBwdFSYr66spcFKaA/034fb112-5326-4d37-373e-d1cc2a4d0400/w=1500\",\n sizes: \"1500x800\",\n type: \"image/jpg\",\n },\n logo: {\n src: \"https://images.kohost.io/cdn-cgi/imagedelivery/vcVX2aBwdFSYr66spcFKaA/1e54c54d-3bac-4745-f46f-c2f98036af00/h=75\",\n sizes: \"300x75\",\n type: \"image/png\",\n },\n },\n },\n tickets: {\n type: \"object\",\n properties: {\n nextTicketNumber: { type: [\"string\", \"integer\"], default: 1 },\n },\n },\n credentials: { type: \"object\", additionalProperties: true },\n createdAt: { $ref: \"definitions.json#/definitions/createdAt\" },\n updatedAt: { $ref: \"definitions.json#/definitions/updatedAt\" },\n },\n },\n});\n\nObject.defineProperty(Organization.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validatePayment as validate } from \"../validate\";\n\n/**\n * @typedef {Object} PaymentData\n * @property {string} [id] - Identifier of the object.\n * @property {(\"amex\"|\"visa\"|\"masterCard\"|\"maestro\"|\"discover\"|\"diners\"|\"jcb\"|\"applePay\"|\"alipay\"|\"chinaUnionPay\"|\"vpay\")} type\n * @property {boolean} [enabled] - Default: true\n * @property {string} [storageData]\n * @property {string} maskedNumber\n * @property {string} [issued]\n * @property {string} expires\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n *\n * @class Payment\n * @extends {Entity}\n */\nexport class Payment extends Entity {\n /**\n * @constructor\n * @param {PaymentData} data - The data to initialize the Payment with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n this.type = data.type;\n if (data.enabled !== undefined) this.enabled = data.enabled;\n if (data.storageData !== undefined) this.storageData = data.storageData;\n this.maskedNumber = data.maskedNumber;\n if (data.issued !== undefined) this.issued = data.issued;\n this.expires = data.expires;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n}\n\nObject.defineProperty(Payment.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"payment.json\",\n title: \"Payment\",\n type: \"object\",\n required: [\"type\", \"maskedNumber\", \"expires\"],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: {\n type: \"string\",\n enum: [\n \"amex\",\n \"visa\",\n \"masterCard\",\n \"maestro\",\n \"discover\",\n \"diners\",\n \"jcb\",\n \"applePay\",\n \"alipay\",\n \"chinaUnionPay\",\n \"vpay\",\n ],\n },\n enabled: { type: \"boolean\", default: true },\n storageData: { type: [\"string\", \"null\"] },\n maskedNumber: { type: \"string\" },\n issued: { type: [\"string\", \"null\"] },\n expires: { type: \"string\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n },\n});\n\nObject.defineProperty(Payment.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validatePolicy as validate } from \"../validate\";\n\n/**\n * @typedef {Object} PolicyData A policy is a set of permissions that can be applied to a user to limit their access to resources.\n * @property {string} [id] - Identifier of the object.\n * @property {\"policy\"} type - Default: \"policy\"\n * @property {\"user\"} discriminator\n * @property {string} name\n * @property {string} [description]\n * @property {string} organizationId\n * @property {string} propertyId\n * @property {{entities: string[], effect: (\"Allow\"|\"Deny\")}[]} permissions\n */\n\n/**\n * A policy is a set of permissions that can be applied to a user to limit their access to resources.\n * @class Policy\n * @extends {Entity}\n */\nexport class Policy extends Entity {\n /**\n * @constructor\n * @param {PolicyData} data - The data to initialize the Policy with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n this.type = data.type;\n this.discriminator = data.discriminator;\n this.name = data.name;\n if (data.description !== undefined) this.description = data.description;\n this.organizationId = data.organizationId;\n this.propertyId = data.propertyId;\n this.permissions = data.permissions;\n }\n}\n\nObject.defineProperty(Policy.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"policy.json\",\n title: \"Policy\",\n description:\n \"A policy is a set of permissions that can be applied to a user to limit their access to resources.\",\n type: \"object\",\n required: [\n \"name\",\n \"type\",\n \"organizationId\",\n \"propertyId\",\n \"permissions\",\n \"discriminator\",\n ],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"policy\", enum: [\"policy\"] },\n discriminator: { type: \"string\", enum: [\"user\"] },\n name: { type: \"string\", minLength: 1 },\n description: { type: \"string\" },\n organizationId: { type: \"string\" },\n propertyId: { type: \"string\" },\n permissions: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"entities\", \"effect\"],\n properties: {\n entities: {\n type: \"array\",\n items: { type: \"string\", pattern: \"^[^:]+(:.+)+$\" },\n },\n effect: { type: \"string\", enum: [\"Allow\", \"Deny\"] },\n },\n },\n },\n },\n },\n});\n\nObject.defineProperty(Policy.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateProduct as validate } from \"../validate\";\n\n/**\n * @typedef {Object} ProductData\n * @property {string} [id] - Identifier of the object.\n * @property {\"product\"} [type] - Default: \"product\"\n * @property {string} name\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {string} [description]\n * @property {number} price\n * @property {number} [tax]\n * @property {{id?: any, type: \"mediaFile\", name?: string, fileHash?: string, category?: string, mimeType?: (\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\"), data?: string, url?: string, width?: number, height?: number, size?: number, uploadUrl?: string, uploadUrlExpires?: any, createdBy?: string, systemId?: any}} [image] - Any media file\n * @property {string} [category]\n * @property {string} [imageUrl]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n *\n * @class Product\n * @extends {Entity}\n */\nexport class Product extends Entity {\n /**\n * @constructor\n * @param {ProductData} data - The data to initialize the Product with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n this.name = data.name;\n this.driver = data.driver;\n if (data.description !== undefined) this.description = data.description;\n this.price = data.price;\n if (data.tax !== undefined) this.tax = data.tax;\n if (data.image !== undefined) this.image = data.image;\n if (data.category !== undefined) this.category = data.category;\n if (data.imageUrl !== undefined) this.imageUrl = data.imageUrl;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n}\n\nObject.defineProperty(Product.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"product.json\",\n title: \"Product\",\n type: \"object\",\n required: [\"name\", \"price\", \"driver\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"product\", enum: [\"product\"] },\n name: { type: \"string\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n description: { type: \"string\" },\n price: { type: \"number\" },\n tax: { type: [\"number\", \"null\"] },\n image: { $ref: \"mediaFile.json\" },\n category: { type: \"string\" },\n imageUrl: { type: \"string\", format: \"uri\", pattern: \"^https?://\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n },\n});\n\nObject.defineProperty(Product.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateProperty as validate } from \"../validate\";\n\n/**\n * @typedef {Object} PropertyData A property is a physical asset or building\n * @property {string} id - Identifier of the object.\n * @property {string} name\n * @property {\"property\"} type - Default: \"property\"\n * @property {(\"hospitality\"|\"education\"|\"commercial\"|\"storage\")} discriminator\n * @property {string} organization - Reference (id) to the organization that owns this property\n * @property {string[]} [departments]\n * @property {boolean} [testModeEnabled]\n * @property {{notificationEmails?: string[], notificationEmailDomains?: string[]}} [testMode]\n * @property {string[]} [testMode.notificationEmails] - Only users with these email addresses will receive notifications in test mode, including sms, email, or push.\n * @property {string[]} [testMode.notificationEmailDomains] - Only users with email addreses ending in these domains will receive notifications in test mode, including sms, email, or push.\n * @property {string} timezone - IANA timezone string\n * @property {string} [smsNumber]\n * @property {string} [checkInTime]\n * @property {string} [checkOutTime]\n * @property {{id?: string, line1?: string, line2?: string, line3?: string, city?: string, state?: string, postalCode?: string, countryCode?: string}} [address]\n * @property {number} [latitude]\n * @property {number} [longitude]\n * @property {{RoomControl?: {disabledSystems?: (\"climate\"|\"lights\"|\"shades\"|\"tv\"|\"doors\")[], excludedDeviceIds?: string[], commonAreas?: {spaces?: string[]}, alarmConfig?: object}, CheckIn?: {payment?: any, identification?: any, earlyCheckIn?: {dynamic: boolean, minimumPrice?: number, maximumPrice?: number, priceRatioPerHour?: number, minimumTime?: string}, roomUpgrades?: any, pet?: any, promos?: any}, CheckOut?: {lateCheckOut?: {dynamic: boolean, minimumPrice?: number, maximumPrice?: number, priceRatioPerHour?: number}}, Concierge?: {timeTracking?: boolean, tipping?: boolean, feedback?: boolean, ratings?: boolean, newTicketCCs?: string[], newMessageChannel?: (\"sms\"|\"email\"), quickServices?: {name: string, description: string, department?: string, image: {id?: any, type: \"mediaFile\", name?: string, fileHash?: string, category?: string, mimeType?: (\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\"), data?: string, url?: string, width?: number, height?: number, size?: number, uploadUrl?: string, uploadUrlExpires?: any, createdBy?: string, systemId?: any}}[], issues?: {syncWithPropertyId?: string}}, DigitalKey?: {system?: (\"salto\"|\"dormakaba\"), systemOnline?: boolean, systemConfig?: {legicUrl?: string, legicWalletName?: string, legicAppId?: number, legicTechUsername?: string, legicTechPassword?: string}, enableApp?: boolean, branding?: {logo?: string, gradient?: string[], highlightedGradient?: string[]}}, SOS?: {active?: boolean, activeEmergencies?: (\"medical\"|\"fire\"|\"suspiciousPerson\"|\"other\"|\"conflict\"|\"shooter\")[]}, Elevator?: object, Experiences?: object, Dining?: {system?: \"gotab\", systemConfig?: {landingUrl?: string, includeUserDetails?: boolean}}, Rentals?: object, Shop?: object, Spa?: object, Valet?: object}} [appFeatures] - Default: {\"RoomControl\":{}}\n * @property {{disabledSystems?: (\"climate\"|\"lights\"|\"shades\"|\"tv\"|\"doors\")[], excludedDeviceIds?: string[], commonAreas?: {spaces?: string[]}, alarmConfig?: object}} [appFeatures.RoomControl]\n * @property {(\"climate\"|\"lights\"|\"shades\"|\"tv\"|\"doors\")[]} [appFeatures.RoomControl.disabledSystems]\n * @property {string[]} [appFeatures.RoomControl.excludedDeviceIds] - Default: []\n * @property {{spaces?: string[]}} [appFeatures.RoomControl.commonAreas]\n * @property {string[]} [appFeatures.RoomControl.commonAreas.spaces]\n * @property {object} [appFeatures.RoomControl.alarmConfig]\n * @property {{payment?: any, identification?: any, earlyCheckIn?: {dynamic: boolean, minimumPrice?: number, maximumPrice?: number, priceRatioPerHour?: number, minimumTime?: string}, roomUpgrades?: any, pet?: any, promos?: any}} [appFeatures.CheckIn]\n * @property {any} [appFeatures.CheckIn.payment]\n * @property {any} [appFeatures.CheckIn.identification]\n * @property {{dynamic: boolean, minimumPrice?: number, maximumPrice?: number, priceRatioPerHour?: number, minimumTime?: string}} [appFeatures.CheckIn.earlyCheckIn]\n * @property {boolean} appFeatures.CheckIn.earlyCheckIn.dynamic - Default: false\n * @property {number} [appFeatures.CheckIn.earlyCheckIn.minimumPrice] - Default: 10\n * @property {number} [appFeatures.CheckIn.earlyCheckIn.maximumPrice] - Default: 50\n * @property {number} [appFeatures.CheckIn.earlyCheckIn.priceRatioPerHour] - Default: 0.1\n * @property {string} [appFeatures.CheckIn.earlyCheckIn.minimumTime]\n * @property {any} [appFeatures.CheckIn.roomUpgrades]\n * @property {any} [appFeatures.CheckIn.pet]\n * @property {any} [appFeatures.CheckIn.promos]\n * @property {{lateCheckOut?: {dynamic: boolean, minimumPrice?: number, maximumPrice?: number, priceRatioPerHour?: number}}} [appFeatures.CheckOut]\n * @property {{dynamic: boolean, minimumPrice?: number, maximumPrice?: number, priceRatioPerHour?: number}} [appFeatures.CheckOut.lateCheckOut]\n * @property {boolean} appFeatures.CheckOut.lateCheckOut.dynamic - Default: false\n * @property {number} [appFeatures.CheckOut.lateCheckOut.minimumPrice] - Default: 10\n * @property {number} [appFeatures.CheckOut.lateCheckOut.maximumPrice] - Default: 50\n * @property {number} [appFeatures.CheckOut.lateCheckOut.priceRatioPerHour] - Default: 0.1\n * @property {{timeTracking?: boolean, tipping?: boolean, feedback?: boolean, ratings?: boolean, newTicketCCs?: string[], newMessageChannel?: (\"sms\"|\"email\"), quickServices?: {name: string, description: string, department?: string, image: {id?: any, type: \"mediaFile\", name?: string, fileHash?: string, category?: string, mimeType?: (\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\"), data?: string, url?: string, width?: number, height?: number, size?: number, uploadUrl?: string, uploadUrlExpires?: any, createdBy?: string, systemId?: any}}[], issues?: {syncWithPropertyId?: string}}} [appFeatures.Concierge]\n * @property {boolean} [appFeatures.Concierge.timeTracking] - Default: false\n * @property {boolean} [appFeatures.Concierge.tipping] - Default: false\n * @property {boolean} [appFeatures.Concierge.feedback] - Default: true\n * @property {boolean} [appFeatures.Concierge.ratings] - Default: true\n * @property {string[]} [appFeatures.Concierge.newTicketCCs] - Default: []\n * @property {(\"sms\"|\"email\")} [appFeatures.Concierge.newMessageChannel] - Determines how users should be notified of new messages in the concierge system. Default: \"sms\"\n * @property {{name: string, description: string, department?: string, image: {id?: any, type: \"mediaFile\", name?: string, fileHash?: string, category?: string, mimeType?: (\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\"), data?: string, url?: string, width?: number, height?: number, size?: number, uploadUrl?: string, uploadUrlExpires?: any, createdBy?: string, systemId?: any}}[]} [appFeatures.Concierge.quickServices]\n * @property {{syncWithPropertyId?: string}} [appFeatures.Concierge.issues]\n * @property {string} [appFeatures.Concierge.issues.syncWithPropertyId]\n * @property {{system?: (\"salto\"|\"dormakaba\"), systemOnline?: boolean, systemConfig?: {legicUrl?: string, legicWalletName?: string, legicAppId?: number, legicTechUsername?: string, legicTechPassword?: string}, enableApp?: boolean, branding?: {logo?: string, gradient?: string[], highlightedGradient?: string[]}}} [appFeatures.DigitalKey]\n * @property {(\"salto\"|\"dormakaba\")} [appFeatures.DigitalKey.system]\n * @property {boolean} [appFeatures.DigitalKey.systemOnline] - Default: false\n * @property {{legicUrl?: string, legicWalletName?: string, legicAppId?: number, legicTechUsername?: string, legicTechPassword?: string}} [appFeatures.DigitalKey.systemConfig] - Default: {}\n * @property {string} [appFeatures.DigitalKey.systemConfig.legicUrl]\n * @property {string} [appFeatures.DigitalKey.systemConfig.legicWalletName]\n * @property {number} [appFeatures.DigitalKey.systemConfig.legicAppId]\n * @property {string} [appFeatures.DigitalKey.systemConfig.legicTechUsername]\n * @property {string} [appFeatures.DigitalKey.systemConfig.legicTechPassword]\n * @property {boolean} [appFeatures.DigitalKey.enableApp]\n * @property {{logo?: string, gradient?: string[], highlightedGradient?: string[]}} [appFeatures.DigitalKey.branding]\n * @property {string} [appFeatures.DigitalKey.branding.logo]\n * @property {string[]} [appFeatures.DigitalKey.branding.gradient]\n * @property {string[]} [appFeatures.DigitalKey.branding.highlightedGradient]\n * @property {{active?: boolean, activeEmergencies?: (\"medical\"|\"fire\"|\"suspiciousPerson\"|\"other\"|\"conflict\"|\"shooter\")[]}} [appFeatures.SOS]\n * @property {boolean} [appFeatures.SOS.active]\n * @property {(\"medical\"|\"fire\"|\"suspiciousPerson\"|\"other\"|\"conflict\"|\"shooter\")[]} [appFeatures.SOS.activeEmergencies]\n * @property {object} [appFeatures.Elevator]\n * @property {object} [appFeatures.Experiences]\n * @property {{system?: \"gotab\", systemConfig?: {landingUrl?: string, includeUserDetails?: boolean}}} [appFeatures.Dining]\n * @property {\"gotab\"} [appFeatures.Dining.system]\n * @property {{landingUrl?: string, includeUserDetails?: boolean}} [appFeatures.Dining.systemConfig]\n * @property {string} [appFeatures.Dining.systemConfig.landingUrl]\n * @property {boolean} [appFeatures.Dining.systemConfig.includeUserDetails]\n * @property {object} [appFeatures.Rentals]\n * @property {object} [appFeatures.Shop]\n * @property {object} [appFeatures.Spa]\n * @property {object} [appFeatures.Valet]\n * @property {{email?: {enabled?: boolean}, sms?: {enabled?: boolean}, push?: {enabled?: boolean}}} [notifications] - Default: {\"email\":{\"enabled\":false},\"sms\":{\"enabled\":false},\"push\":{\"enabled\":false}}\n * @property {{enabled?: boolean}} [notifications.email]\n * @property {boolean} [notifications.email.enabled]\n * @property {{enabled?: boolean}} [notifications.sms]\n * @property {boolean} [notifications.sms.enabled]\n * @property {{enabled?: boolean}} [notifications.push]\n * @property {boolean} [notifications.push.enabled]\n * @property {object} [credentials]\n */\n\n/**\n * A property is a physical asset or building\n * @class Property\n * @extends {Entity}\n */\nexport class Property extends Entity {\n /**\n * @constructor\n * @param {PropertyData} data - The data to initialize the Property with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n this.name = data.name;\n this.type = data.type;\n this.discriminator = data.discriminator;\n this.organization = data.organization;\n if (data.departments !== undefined) this.departments = data.departments;\n if (data.testModeEnabled !== undefined)\n this.testModeEnabled = data.testModeEnabled;\n if (data.testMode !== undefined) this.testMode = data.testMode;\n this.timezone = data.timezone;\n if (data.smsNumber !== undefined) this.smsNumber = data.smsNumber;\n if (data.checkInTime !== undefined) this.checkInTime = data.checkInTime;\n if (data.checkOutTime !== undefined) this.checkOutTime = data.checkOutTime;\n if (data.address !== undefined) this.address = data.address;\n if (data.latitude !== undefined) this.latitude = data.latitude;\n if (data.longitude !== undefined) this.longitude = data.longitude;\n if (data.appFeatures !== undefined) this.appFeatures = data.appFeatures;\n if (data.notifications !== undefined)\n this.notifications = data.notifications;\n if (data.credentials !== undefined) this.credentials = data.credentials;\n }\n}\n\nObject.defineProperty(Property.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"property.json\",\n title: \"Property\",\n type: \"object\",\n description: \"A property is a physical asset or building\",\n required: [\n \"id\",\n \"name\",\n \"type\",\n \"organization\",\n \"timezone\",\n \"discriminator\",\n ],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n type: { type: \"string\", default: \"property\", enum: [\"property\"] },\n discriminator: {\n type: \"string\",\n enum: [\"hospitality\", \"education\", \"commercial\", \"storage\"],\n },\n organization: {\n type: [\"string\", \"null\"],\n description:\n \"Reference (id) to the organization that owns this property\",\n },\n departments: { type: \"array\", items: { type: \"string\" } },\n testModeEnabled: { type: \"boolean\" },\n testMode: {\n type: \"object\",\n properties: {\n notificationEmails: {\n type: \"array\",\n items: { type: \"string\" },\n description:\n \"Only users with these email addresses will receive notifications in test mode, including sms, email, or push.\",\n },\n notificationEmailDomains: {\n type: \"array\",\n items: { type: \"string\" },\n description:\n \"Only users with email addreses ending in these domains will receive notifications in test mode, including sms, email, or push.\",\n },\n },\n },\n timezone: {\n type: \"string\",\n description: \"IANA timezone string\",\n pattern: \"^([a-zA-Z]+/[a-zA-Z_]+)$\",\n examples: [\"America/New_York\", \"America/Los_Angeles\"],\n },\n smsNumber: { type: \"string\" },\n checkInTime: { type: \"string\" },\n checkOutTime: { type: \"string\" },\n address: { $ref: \"definitions.json#/definitions/address\" },\n latitude: { type: \"number\" },\n longitude: { type: \"number\" },\n appFeatures: {\n type: \"object\",\n properties: {\n RoomControl: {\n type: \"object\",\n properties: {\n disabledSystems: {\n type: \"array\",\n items: {\n type: \"string\",\n enum: [\"climate\", \"lights\", \"shades\", \"tv\", \"doors\"],\n },\n },\n excludedDeviceIds: {\n type: \"array\",\n items: { type: \"string\" },\n default: [],\n },\n commonAreas: {\n type: \"object\",\n properties: {\n spaces: { type: \"array\", items: { type: \"string\" } },\n },\n },\n alarmConfig: {\n type: \"object\",\n patternProperties: {\n \"^[a-zA-Z0-9]+$\": {\n type: \"object\",\n properties: {\n zoneLockMap: {\n type: \"object\",\n description: \"Maps zone numbers to lock ids\",\n additionalProperties: { type: \"string\" },\n },\n },\n },\n },\n examples: [\n {\n wZz7hucY: {\n zoneLockMap: {\n 1: \"wc87hucc\",\n 2: \"bc86hzxc\",\n 3: \"zv5ah5jv\",\n },\n },\n },\n ],\n },\n },\n additionalProperties: false,\n },\n CheckIn: {\n type: \"object\",\n properties: {\n payment: {},\n identification: {},\n earlyCheckIn: {\n type: \"object\",\n required: [\"dynamic\"],\n properties: {\n dynamic: { type: \"boolean\", default: false },\n minimumPrice: { type: \"number\", default: 10 },\n maximumPrice: { type: \"number\", default: 50 },\n priceRatioPerHour: { type: \"number\", default: 0.1 },\n minimumTime: { type: \"string\" },\n },\n },\n roomUpgrades: {},\n pet: {},\n promos: {},\n },\n },\n CheckOut: {\n type: \"object\",\n properties: {\n lateCheckOut: {\n type: \"object\",\n required: [\"dynamic\"],\n properties: {\n dynamic: { type: \"boolean\", default: false },\n minimumPrice: { type: \"number\", default: 10 },\n maximumPrice: { type: \"number\", default: 50 },\n priceRatioPerHour: { type: \"number\", default: 0.1 },\n },\n },\n },\n },\n Concierge: {\n type: \"object\",\n properties: {\n timeTracking: { type: \"boolean\", default: false },\n tipping: { type: \"boolean\", default: false },\n feedback: { type: \"boolean\", default: true },\n ratings: { type: \"boolean\", default: true },\n newTicketCCs: {\n type: \"array\",\n items: { type: \"string\" },\n default: [],\n },\n newMessageChannel: {\n type: [\"string\", \"null\"],\n enum: [\"sms\", \"email\"],\n default: \"sms\",\n description:\n \"Determines how users should be notified of new messages in the concierge system\",\n },\n quickServices: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n description: { type: \"string\" },\n department: { type: \"string\" },\n image: { $ref: \"mediaFile.json\" },\n },\n required: [\"name\", \"description\", \"image\"],\n },\n },\n issues: {\n type: \"object\",\n properties: { syncWithPropertyId: { type: \"string\" } },\n },\n },\n },\n DigitalKey: {\n type: \"object\",\n properties: {\n system: { type: \"string\", enum: [\"salto\", \"dormakaba\"] },\n systemOnline: { type: \"boolean\", default: false },\n systemConfig: {\n type: \"object\",\n properties: {\n legicUrl: { type: \"string\", format: \"uri\" },\n legicWalletName: { type: \"string\" },\n legicAppId: { type: \"number\" },\n legicTechUsername: { type: \"string\" },\n legicTechPassword: { type: \"string\" },\n },\n additionalProperties: false,\n default: {},\n },\n enableApp: { type: \"boolean\" },\n branding: {\n type: \"object\",\n properties: {\n logo: { type: \"string\", format: \"uri\" },\n gradient: {\n type: \"array\",\n items: {\n type: \"string\",\n pattern: \"^(?!#ffffff)(#[0-9a-fA-F]{6})$\",\n },\n minItems: 2,\n maxItems: 2,\n },\n highlightedGradient: {\n type: \"array\",\n items: {\n type: \"string\",\n pattern: \"^(?!#ffffff)(#[0-9a-fA-F]{6})$\",\n },\n minItems: 2,\n maxItems: 3,\n },\n },\n },\n },\n },\n SOS: {\n type: \"object\",\n properties: {\n active: { type: \"boolean\" },\n activeEmergencies: {\n type: \"array\",\n items: {\n type: \"string\",\n enum: [\n \"medical\",\n \"fire\",\n \"suspiciousPerson\",\n \"other\",\n \"conflict\",\n \"shooter\",\n ],\n },\n },\n },\n },\n Elevator: { type: \"object\" },\n Experiences: { type: \"object\" },\n Dining: {\n type: \"object\",\n properties: {\n system: { type: \"string\", enum: [\"gotab\"] },\n systemConfig: {\n type: \"object\",\n properties: {\n landingUrl: { type: \"string\", format: \"uri\" },\n includeUserDetails: { type: \"boolean\" },\n },\n additionalProperties: false,\n },\n },\n },\n Rentals: { type: \"object\" },\n Shop: { type: \"object\" },\n Spa: { type: \"object\" },\n Valet: { type: \"object\" },\n },\n additionalProperties: false,\n default: { RoomControl: {} },\n },\n notifications: {\n type: \"object\",\n properties: {\n email: {\n type: \"object\",\n properties: { enabled: { type: \"boolean\" } },\n additionalProperties: false,\n },\n sms: {\n type: \"object\",\n properties: { enabled: { type: \"boolean\" } },\n additionalProperties: false,\n },\n push: {\n type: \"object\",\n properties: { enabled: { type: \"boolean\" } },\n additionalProperties: false,\n },\n },\n additionalProperties: false,\n default: {\n email: { enabled: false },\n sms: { enabled: false },\n push: { enabled: false },\n },\n },\n credentials: { type: \"object\", additionalProperties: true },\n },\n },\n});\n\nObject.defineProperty(Property.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateReservation as validate } from \"../validate\";\n\n/**\n * @typedef {Object} ReservationData \n * @property {string} [id] - Identifier of the object.\n * @property {(\"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\")} [driver] - Driver used to communicate with the object.\n * @property {string} [primaryGuest]\n * @property {\"reservation\"} type - Default: \"reservation\"\n * @property {string[]} [sharedGuests]\n * @property {string} [spaceCategory]\n * @property {string} [space]\n * @property {string} [previousSpace] - Used when there was a space assigned and it changes. Default: null\n * @property {(\"reserved\"|\"checkedIn\"|\"checkedOut\"|\"cancelled\"|\"noShow\"|\"enquired\"|\"requested\"|\"optional\")} status - 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)\n * @property {boolean} [mobileCheckInSpaceCategoryChanged] - spaceCategory has changed from original.\n * @property {boolean} [mobileCheckInSpaceChanged]\n * @property {(\"ready\"|\"blocked\"|\"preArrivalStepsRequired\"|\"spaceNotAssigned\"|\"spaceNotReady\"|\"checkInTimeNotStarted\")} [mobileCheckInStatus]\n * @property {string} [mobileCheckInStatusMessage]\n * @property {string} [confirmationNumber]\n * @property {(string|object)} [expectedCheckInDateTime] - Expected arrival time of guest.\n * @property {(string|object)} checkInDateTime\n * @property {(string|object)} checkOutDateTime\n * @property {number} [adultCount] - Default: 1\n * @property {number} [childCount] - Default: 0\n * @property {{id?: string, price?: number, unit?: (\"night\"|\"stay\"|\"hour\"), isUpgrade?: boolean}[]} [spaceCategoryAvailabilites]\n * @property {{id?: string, name?: string, date?: string, price?: number, tax?: number}[]} [revenue]\n * @property {boolean} [rateSuppressed]\n * @property {string} [payment]\n * @property {string} [company]\n * @property {string} [travelAgent]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {{}} [metadata]\n * @property {(string|object)} [updatedAt]\n */\n\n/**\n *\n * @class Reservation\n * @extends {Entity}\n */\nexport class Reservation extends Entity {\n /**\n * @constructor\n * @param {ReservationData} data - The data to initialize the Reservation with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n if (data.driver !== undefined) this.driver = data.driver;\n if (data.primaryGuest !== undefined) this.primaryGuest = data.primaryGuest;\n this.type = data.type;\n if (data.sharedGuests !== undefined) this.sharedGuests = data.sharedGuests;\n if (data.spaceCategory !== undefined)\n this.spaceCategory = data.spaceCategory;\n if (data.space !== undefined) this.space = data.space;\n if (data.previousSpace !== undefined)\n this.previousSpace = data.previousSpace;\n this.status = data.status;\n if (data.mobileCheckInSpaceCategoryChanged !== undefined)\n this.mobileCheckInSpaceCategoryChanged =\n data.mobileCheckInSpaceCategoryChanged;\n if (data.mobileCheckInSpaceChanged !== undefined)\n this.mobileCheckInSpaceChanged = data.mobileCheckInSpaceChanged;\n if (data.mobileCheckInStatus !== undefined)\n this.mobileCheckInStatus = data.mobileCheckInStatus;\n if (data.mobileCheckInStatusMessage !== undefined)\n this.mobileCheckInStatusMessage = data.mobileCheckInStatusMessage;\n if (data.confirmationNumber !== undefined)\n this.confirmationNumber = data.confirmationNumber;\n if (data.expectedCheckInDateTime !== undefined)\n this.expectedCheckInDateTime = data.expectedCheckInDateTime;\n this.checkInDateTime = data.checkInDateTime;\n this.checkOutDateTime = data.checkOutDateTime;\n if (data.adultCount !== undefined) this.adultCount = data.adultCount;\n if (data.childCount !== undefined) this.childCount = data.childCount;\n if (data.spaceCategoryAvailabilites !== undefined)\n this.spaceCategoryAvailabilites = data.spaceCategoryAvailabilites;\n if (data.revenue !== undefined) this.revenue = data.revenue;\n if (data.rateSuppressed !== undefined)\n this.rateSuppressed = data.rateSuppressed;\n if (data.payment !== undefined) this.payment = data.payment;\n if (data.company !== undefined) this.company = data.company;\n if (data.travelAgent !== undefined) this.travelAgent = data.travelAgent;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.metadata !== undefined) this.metadata = data.metadata;\n if (data.updatedAt !== undefined) this.updatedAt = data.updatedAt;\n }\n\n checkInTime(tz) {\n return new Date(this.checkInDateTime).toLocaleString(\"default\", {\n hour: \"numeric\",\n minute: \"numeric\",\n timeZone: tz,\n });\n }\n checkOutTime(tz) {\n return new Date(this.checkOutDateTime).toLocaleString(\"default\", {\n hour: \"numeric\",\n minute: \"numeric\",\n timeZone: tz,\n });\n }\n getNights() {\n const start = new Date(this.checkInDateTime);\n const end = new Date(this.checkOutDateTime);\n let nights = Math.round((end - start) / (1000 * 60 * 60 * 24));\n if (nights <= 0) {\n nights = 1;\n }\n return nights;\n }\n}\n\nObject.defineProperty(Reservation.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"reservation.json\",\n title: \"Reservation\",\n type: \"object\",\n required: [\"type\", \"status\", \"checkInDateTime\", \"checkOutDateTime\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n primaryGuest: { type: \"string\" },\n type: { type: \"string\", default: \"reservation\", enum: [\"reservation\"] },\n sharedGuests: { type: \"array\", items: { type: \"string\" } },\n spaceCategory: { type: \"string\" },\n space: { type: [\"string\", \"null\"] },\n previousSpace: {\n type: [\"string\", \"null\"],\n default: null,\n description: \"Used when there was a space assigned and it changes\",\n },\n status: {\n type: \"string\",\n enum: [\n \"reserved\",\n \"checkedIn\",\n \"checkedOut\",\n \"cancelled\",\n \"noShow\",\n \"enquired\",\n \"requested\",\n \"optional\",\n ],\n description:\n \" 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)\",\n },\n mobileCheckInSpaceCategoryChanged: {\n type: \"boolean\",\n description: \"spaceCategory has changed from original.\",\n },\n mobileCheckInSpaceChanged: { type: \"boolean\" },\n mobileCheckInStatus: {\n type: \"string\",\n enum: [\n \"ready\",\n \"blocked\",\n \"preArrivalStepsRequired\",\n \"spaceNotAssigned\",\n \"spaceNotReady\",\n \"checkInTimeNotStarted\",\n ],\n },\n mobileCheckInStatusMessage: { type: \"string\" },\n confirmationNumber: { type: \"string\" },\n expectedCheckInDateTime: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n description: \"Expected arrival time of guest.\",\n },\n checkInDateTime: { type: [\"string\", \"object\"], format: \"date-time\" },\n checkOutDateTime: { type: [\"string\", \"object\"], format: \"date-time\" },\n adultCount: { type: \"number\", default: 1, minimum: 1 },\n childCount: { type: \"number\", default: 0 },\n spaceCategoryAvailabilites: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n price: { type: \"number\" },\n unit: { type: \"string\", enum: [\"night\", \"stay\", \"hour\"] },\n isUpgrade: { type: \"boolean\" },\n },\n },\n },\n revenue: { $ref: \"definitions.json#/definitions/revenue\" },\n rateSuppressed: { type: \"boolean\" },\n payment: { type: \"string\" },\n company: { type: \"string\" },\n travelAgent: { type: \"string\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n metadata: { $ref: \"definitions.json#/definitions/metadata\" },\n updatedAt: { $ref: \"definitions.json#/definitions/updatedAt\" },\n },\n },\n});\n\nObject.defineProperty(Reservation.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateRoom as validate } from \"../validate\";\n\n/**\n * @typedef {Object} RoomData A room represents a physical space of controllable IoT devices\n * @property {string} id - Identifier of the object.\n * @property {\"room\"} [type] - Default: \"room\"\n * @property {string} name\n * @property {string} [floor]\n * @property {{id: any, name?: string, type: any, supportedNotifications?: any, notification?: any, driver: any, offline?: boolean, level: number, systemId?: any, watts?: any, icon?: string, modelNumber?: string, serialNumber?: string, firmwareVersion?: string}[]} [dimmers] - Default: []\n * @property {{id: any, name?: string, type: any, discriminator?: (\"light\"|\"fan\"|\"irrigation\"), supportedNotifications?: any, notification?: any, driver: any, offline?: boolean, state: (\"on\"|\"off\"), systemId?: any, watts?: any, icon?: string, modelNumber?: string, serialNumber?: string, firmwareVersion?: string, restoresAt?: string}[]} [switches] - Default: []\n * @property {{id: any, name?: any, type: any, driver: any, offline?: boolean, supportedNotifications?: any, notification?: any, currentTemperature?: number, currentHumidity?: number, hvacMode: string, hvacState: (\"cooling\"|\"heating\"|\"off\"), fanMode: string, fanState: (\"off\"|\"low\"|\"medium\"|\"high\"|\"on\"), temperatureScale: (\"celsius\"|\"fahrenheit\"), humidityScale?: (\"absolute\"|\"relative\"), supportedHvacModes: (\"cool\"|\"heat\"|\"auto\"|\"off\")[], supportedFanModes: (\"auto\"|\"low\"|\"medium\"|\"high\"|\"off\"|\"on\")[], setpoints: {cool?: any, heat?: any, auto?: any}, minAutoDelta?: number, cycleRate?: number, batteryLevel?: any, systemId?: any, watts?: any, icon?: string, modelNumber?: string, serialNumber?: string, firmwareVersion?: string}[]} [thermostats] - Default: []\n * @property {{id: any, name?: string, type: any, offline?: boolean, supportedNotifications?: any, notification?: any, driver: any, state: (\"locked\"|\"unlocked\"), mode?: (\"normal\"|\"autoLock\"|\"emergencyOpen\"|\"emergencyClose\"|\"holdOpen\"|\"lockdown\"), supportedModes?: (\"normal\"|\"autoLock\"|\"emergencyOpen\"|\"emergencyClose\"|\"holdOpen\"|\"lockdown\")[], batteryLevel?: any, systemId?: any, watts?: any, icon?: string, modelNumber?: string, serialNumber?: string, firmwareVersion?: string}[]} [locks] - Default: []\n * @property {{id: any, name?: string, type: any, discriminator?: (\"basic\"|\"variable\"), supportedNotifications?: any, notification?: any, driver: any, offline?: boolean, position: number, systemId?: any, watts?: any, icon?: string, modelNumber?: string, serialNumber?: string, firmwareVersion?: string}[]} [windowCoverings] - Default: []\n * @property {{id: any, name?: string, type: any, supportedNotifications?: any, notification?: any, driver: any, offline?: boolean, supportedStates: (\"privacy\"|\"service\"|\"none\")[], state: string, systemId?: any, watts?: any, icon?: string, modelNumber?: string, serialNumber?: string, firmwareVersion?: string}[]} [courtesy] - Default: []\n * @property {{id: any, name?: string, discriminator?: \"doorStation\", type: \"camera\", offline?: boolean, supportedNotifications?: any, notification?: any, driver: any, liveStreams?: {iframe?: string, hls?: string, webRTC?: string, rtsp?: string}, liveStream?: {id?: string, driver?: (\"aws-kinesis\"|\"cloudflare-stream\"|\"doorbird\"|\"digital-watchdog\"|\"mediamtx\"), allowedOrigins?: string[], authRequired?: boolean, iframe?: string, hls?: string, webRTC?: string, rtsp?: string, previewImage?: string}, systemId?: any, watts?: any, icon?: string, modelNumber?: string, serialNumber?: string, firmwareVersion?: string}[]} [cameras] - Default: []\n * @property {{id: any, type: \"mediaSource\", discriminator: (\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"paSystem\"|\"uncontrolledDevice\"), playlists?: {id?: string, name?: string}[], remote?: (\"MR22GA\"|\"XRT260\"|\"XRT270\"|\"HOF-16K 1.2\"|\"219863500\"|\"SONIFI\"|\"AKB76039803\"|\"BN59-01388A\"), name?: any, driver: any, offline?: boolean, audio: boolean, video: boolean, powerFeedback?: boolean, volumeFeedback?: boolean, muted?: boolean, volume?: number, brightness?: number, contrast?: number, power?: (\"on\"|\"off\"), input?: string, supportedInputs?: string[], supportedOutputs?: string[], command?: (\"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?: any, notification?: any, systemId?: any, watts?: any, icon?: string, modelNumber?: string, serialNumber?: string, firmwareVersion?: string}[]} [mediaSources] - Default: []\n * @property {{id: any, name?: string, type: any, offline?: boolean, driver: any, systemId?: any, supportedNotifications?: any, notification?: any, watts?: any, icon?: string, modelNumber?: string, serialNumber?: string, firmwareVersion?: string}[]} [motionSensors] - Default: []\n * @property {{id: any, name?: string, offline?: boolean, type: \"alarm\", systemId?: any, supportedNotifications?: any, notification?: any, driver: any, areas: {number?: number, name?: string, securityMode?: (\"arming\"|\"disarming\"|\"armed\"|\"disarmed\"|\"alarm\")}[], zones: {number?: number, name?: string, secure?: boolean, bypassed?: boolean}[], chime?: boolean, watts?: any, icon?: string, modelNumber?: string, serialNumber?: string, firmwareVersion?: string, address?: any}[]} [alarms] - Default: []\n * @property {(string|object)} [occupiedAt]\n * @property {(string|object)} [createdAt]\n * @property {(string|object)} [updatedAt]\n */\n\n/**\n * A room represents a physical space of controllable IoT devices\n * @class Room\n * @extends {Entity}\n */\nexport class Room extends Entity {\n /**\n * @constructor\n * @param {RoomData} data - The data to initialize the Room with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n this.name = data.name;\n if (data.floor !== undefined) this.floor = data.floor;\n if (data.dimmers !== undefined) this.dimmers = data.dimmers;\n if (data.switches !== undefined) this.switches = data.switches;\n if (data.thermostats !== undefined) this.thermostats = data.thermostats;\n if (data.locks !== undefined) this.locks = data.locks;\n if (data.windowCoverings !== undefined)\n this.windowCoverings = data.windowCoverings;\n if (data.courtesy !== undefined) this.courtesy = data.courtesy;\n if (data.cameras !== undefined) this.cameras = data.cameras;\n if (data.mediaSources !== undefined) this.mediaSources = data.mediaSources;\n if (data.motionSensors !== undefined)\n this.motionSensors = data.motionSensors;\n if (data.alarms !== undefined) this.alarms = data.alarms;\n if (data.occupiedAt !== undefined) this.occupiedAt = data.occupiedAt;\n if (data.createdAt !== undefined) this.createdAt = data.createdAt;\n if (data.updatedAt !== undefined) this.updatedAt = data.updatedAt;\n }\n\n static getDevicePath(type) {\n switch (type) {\n case \"tv\":\n case \"dvr\":\n case \"appleTv\":\n case \"discPlayer\":\n case \"mediaPlayer\":\n case \"uncontrolledDevice\":\n case \"mediaSource\":\n return \"mediaSources\";\n case \"courtesy\":\n return \"courtesy\";\n case \"switch\":\n return \"switches\";\n case \"dimmer\":\n return \"dimmers\";\n case \"thermostat\":\n return \"thermostats\";\n case \"lock\":\n return \"locks\";\n case \"windowCovering\":\n return \"windowCoverings\";\n case \"camera\":\n return \"cameras\";\n case \"motionSensor\":\n return \"motionSensors\";\n case \"alarm\":\n return \"alarms\";\n\n default:\n throw new Error(\"Invalid device type:\" + type);\n }\n }\n static getDeviceTypeFromPath(path) {\n const validPaths = [\n \"dimmers\",\n \"switches\",\n \"thermostats\",\n \"locks\",\n \"windowCoverings\",\n \"courtesy\",\n \"cameras\",\n \"mediaSources\",\n \"motionSensors\",\n \"alarms\",\n ];\n if (!validPaths.includes(path))\n throw new Error(\"Invalid device path:\" + path);\n switch (path) {\n case \"courtesy\":\n return path;\n case \"switches\":\n return \"switch\";\n default:\n return path.slice(0, -1);\n }\n }\n\n get hasDimmer() {\n return this.dimmers?.length > 0;\n }\n get hasSwitch() {\n return this.switches?.length > 0;\n }\n get hasWindowCovering() {\n return this.windowCoverings?.length > 0;\n }\n get hasShade() {\n return this.hasWindowCovering;\n }\n get hasThermostat() {\n return this.thermostats?.length > 0;\n }\n get hasClimate() {\n return this.hasThermostat;\n }\n get hasLock() {\n return this.locks?.length > 0;\n }\n get hasCourtesy() {\n return this.courtesy?.length > 0;\n }\n get hasCamera() {\n return this.cameras?.length > 0;\n }\n get hasMedia() {\n return this.mediaSources?.length > 0;\n }\n get hasLight() {\n const hasDiscriminatorLight = this.switches?.some((sw) => {\n return sw.discriminator === \"light\" || sw.discriminator === \"fan\";\n });\n return this.hasDimmer || hasDiscriminatorLight;\n }\n get hasAlarm() {\n return this.alarms?.length > 0;\n }\n get occupied() {\n const now = new Date();\n const lastOccupied = new Date(this.occupiedAt);\n const diff = now.getTime() - lastOccupied.getTime();\n return diff < 60 * 60 * 1000;\n }\n}\n\nObject.defineProperty(Room.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"room.json\",\n title: \"Room\",\n description:\n \"A room represents a physical space of controllable IoT devices\",\n type: \"object\",\n required: [\"id\", \"name\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", enum: [\"room\"], default: \"room\" },\n name: { type: \"string\" },\n floor: { type: \"string\" },\n dimmers: { type: \"array\", default: [], items: { $ref: \"dimmer.json\" } },\n switches: { type: \"array\", default: [], items: { $ref: \"switch.json\" } },\n thermostats: {\n type: \"array\",\n default: [],\n items: { $ref: \"thermostat.json\" },\n },\n locks: { type: \"array\", default: [], items: { $ref: \"lock.json\" } },\n windowCoverings: {\n type: \"array\",\n default: [],\n items: { $ref: \"windowCovering.json\" },\n },\n courtesy: {\n type: \"array\",\n default: [],\n items: { $ref: \"courtesy.json\" },\n },\n cameras: { type: \"array\", default: [], items: { $ref: \"camera.json\" } },\n mediaSources: {\n type: \"array\",\n default: [],\n items: { $ref: \"mediaSource.json\" },\n },\n motionSensors: {\n type: \"array\",\n default: [],\n items: { $ref: \"motionSensor.json\" },\n },\n alarms: { type: \"array\", default: [], items: { $ref: \"alarm.json\" } },\n occupiedAt: { $ref: \"definitions.json#/definitions/createdAt\" },\n createdAt: { $ref: \"definitions.json#/definitions/createdAt\" },\n updatedAt: { $ref: \"definitions.json#/definitions/updatedAt\" },\n },\n additionalProperties: false,\n },\n});\n\nObject.defineProperty(Room.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateScene as validate } from \"../validate\";\n\n/**\n * @typedef {Object} SceneData A room represents a physical space of controllable IoT devices\n * @property {string} id - Identifier of the object.\n * @property {string} name\n * @property {string} [description]\n * @property {\"scene\"} type - Default: \"scene\"\n * @property {{switches?: {id?: string, state?: (\"on\"|\"off\")}[], dimmers?: {id?: string, level?: number}[], windowCoverings?: {id?: string, position?: number}[], thermostats?: {id?: string, hvacMode?: string, setpoints?: {cool?: any, heat?: any, auto?: any}, fanMode?: string, setpointDelta?: number}[], mediaSources?: {id?: string, volume?: number, commands?: string[]}[], locks?: {id?: string, state?: (\"locked\"|\"unlocked\"), mode?: (\"normal\"|\"autoLock\"|\"emergencyOpen\"|\"emergencyClose\"|\"holdOpen\"|\"lockdown\")}[]}} [devices]\n * @property {{id?: string, state?: (\"on\"|\"off\")}[]} [devices.switches]\n * @property {{id?: string, level?: number}[]} [devices.dimmers] - Default: []\n * @property {{id?: string, position?: number}[]} [devices.windowCoverings] - Default: []\n * @property {{id?: string, hvacMode?: string, setpoints?: {cool?: any, heat?: any, auto?: any}, fanMode?: string, setpointDelta?: number}[]} [devices.thermostats] - Default: []\n * @property {{id?: string, volume?: number, commands?: string[]}[]} [devices.mediaSources]\n * @property {{id?: string, state?: (\"locked\"|\"unlocked\"), mode?: (\"normal\"|\"autoLock\"|\"emergencyOpen\"|\"emergencyClose\"|\"holdOpen\"|\"lockdown\")}[]} [devices.locks]\n * @property {boolean} [isDefault] - Default: false\n * @property {boolean} [showOnUi] - Default: true\n */\n\n/**\n * A room represents a physical space of controllable IoT devices\n * @class Scene\n * @extends {Entity}\n */\nexport class Scene extends Entity {\n /**\n * @constructor\n * @param {SceneData} data - The data to initialize the Scene with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n this.name = data.name;\n if (data.description !== undefined) this.description = data.description;\n this.type = data.type;\n if (data.devices !== undefined) this.devices = data.devices;\n if (data.isDefault !== undefined) this.isDefault = data.isDefault;\n if (data.showOnUi !== undefined) this.showOnUi = data.showOnUi;\n }\n}\n\nObject.defineProperty(Scene.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"scene.json\",\n title: \"Scene\",\n description:\n \"A room represents a physical space of controllable IoT devices\",\n type: \"object\",\n required: [\"id\", \"name\", \"type\"],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n description: { type: \"string\" },\n type: { type: \"string\", enum: [\"scene\"], default: \"scene\" },\n devices: {\n type: \"object\",\n properties: {\n switches: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n state: { $ref: \"switch.json#/properties/state\" },\n },\n default: [],\n },\n },\n dimmers: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n level: { $ref: \"dimmer.json#/properties/level\" },\n },\n },\n default: [],\n },\n windowCoverings: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n position: { $ref: \"windowCovering.json#/properties/position\" },\n },\n },\n default: [],\n },\n thermostats: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n hvacMode: { $ref: \"thermostat.json#/properties/hvacMode\" },\n setpoints: { $ref: \"thermostat.json#/properties/setpoints\" },\n fanMode: { $ref: \"thermostat.json#/properties/fanMode\" },\n setpointDelta: { type: \"number\" },\n },\n },\n default: [],\n },\n mediaSources: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n volume: { type: \"number\", minimum: 0, maximum: 100 },\n commands: { type: \"array\", items: { type: \"string\" } },\n },\n },\n },\n locks: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n state: { $ref: \"lock.json#/properties/state\" },\n mode: { $ref: \"lock.json#/properties/mode\" },\n },\n },\n },\n },\n additionalProperties: false,\n },\n isDefault: { type: \"boolean\", default: false },\n showOnUi: { type: \"boolean\", default: true },\n },\n },\n});\n\nObject.defineProperty(Scene.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateShortLink as validate } from \"../validate\";\n\n/**\n * @typedef {Object} ShortLinkData\n * @property {string} [id] - Identifier of the object.\n * @property {\"shortLink\"} [type] - Default: \"shortLink\"\n * @property {string} [title]\n * @property {string} destination\n * @property {string} url\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n *\n * @class ShortLink\n * @extends {Entity}\n */\nexport class ShortLink extends Entity {\n /**\n * @constructor\n * @param {ShortLinkData} data - The data to initialize the ShortLink with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n if (data.title !== undefined) this.title = data.title;\n this.destination = data.destination;\n this.url = data.url;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n}\n\nObject.defineProperty(ShortLink.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"shortLink.json\",\n title: \"Short Link\",\n type: \"object\",\n required: [\"destination\", \"url\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"shortLink\", enum: [\"shortLink\"] },\n title: { type: \"string\" },\n destination: { type: \"string\", format: \"uri\" },\n url: { type: \"string\", format: \"uri\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n },\n});\n\nObject.defineProperty(ShortLink.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateSmsMessage as validate } from \"../validate\";\n\n/**\n * @typedef {Object} SmsMessageData\n * @property {string} [id] - Identifier of the object.\n * @property {(\"smsMessage\"|\"whatsappMessage\")} [type] - Default: \"smsMessage\"\n * @property {string} to\n * @property {string} from\n * @property {string} [media]\n * @property {(\"queued\"|\"accepted\"|\"sending\"|\"sent\"|\"failed\"|\"delivered\"|\"undelivered\"|\"receiving\"|\"received\"|\"read\")} status\n * @property {string} [body]\n * @property {string} [driver]\n * @property {object} [appData]\n * @property {(string|object)} [createdAt]\n * @property {(string|object)} [updatedAt]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n *\n * @class SmsMessage\n * @extends {Entity}\n */\nexport class SmsMessage extends Entity {\n /**\n * @constructor\n * @param {SmsMessageData} data - The data to initialize the SmsMessage with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n this.to = data.to;\n this.from = data.from;\n if (data.media !== undefined) this.media = data.media;\n this.status = data.status;\n if (data.body !== undefined) this.body = data.body;\n if (data.driver !== undefined) this.driver = data.driver;\n if (data.appData !== undefined) this.appData = data.appData;\n if (data.createdAt !== undefined) this.createdAt = data.createdAt;\n if (data.updatedAt !== undefined) this.updatedAt = data.updatedAt;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n}\n\nObject.defineProperty(SmsMessage.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"smsMessage.json\",\n title: \"Sms Message\",\n type: \"object\",\n required: [\"to\", \"from\", \"status\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: {\n type: \"string\",\n default: \"smsMessage\",\n enum: [\"smsMessage\", \"whatsappMessage\"],\n },\n to: { type: \"string\" },\n from: { type: \"string\" },\n media: { type: \"string\", format: \"uri\" },\n status: {\n type: \"string\",\n enum: [\n \"queued\",\n \"accepted\",\n \"sending\",\n \"sent\",\n \"failed\",\n \"delivered\",\n \"undelivered\",\n \"receiving\",\n \"received\",\n \"read\",\n ],\n },\n body: { type: \"string\" },\n driver: { type: \"string\" },\n appData: { type: \"object\" },\n createdAt: { $ref: \"definitions.json#/definitions/date\" },\n updatedAt: { $ref: \"definitions.json#/definitions/date\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n },\n});\n\nObject.defineProperty(SmsMessage.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateSpace as validate } from \"../validate\";\n\n/**\n * @typedef {Object} SpaceData\n * @property {string} id - Identifier of the object.\n * @property {string} name\n * @property {\"space\"} type - Default: \"space\"\n * @property {(\"classRoom\"|\"hotelRoom\"|\"office\"|\"building\"|\"commonArea\"|\"conferenceRoom\"|\"lobby\"|\"gym\"|\"pool\"|\"restaurant\"|\"unit\")} [discriminator]\n * @property {string} [floor]\n * @property {(\"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\")} [driver] - Driver used to communicate with the object.\n * @property {string} [category] - This is the category id\n * @property {string[]} [rooms]\n * @property {boolean} [occupied]\n * @property {boolean} [inUse]\n * @property {{active?: boolean, activatedAt?: (string|object), allowed?: boolean, previousState?: object}} [eco] - Default: {\"active\":false,\"allowed\":false,\"previousState\":null}\n * @property {boolean} [eco.active] - Default: false\n * @property {(string|object)} [eco.activatedAt]\n * @property {boolean} [eco.allowed] - Default: false\n * @property {object} [eco.previousState]\n * @property {\"pet\"[]} [features]\n * @property {number} [maximumOccupancy]\n * @property {(\"clean\"|\"dirty\"|\"inspected\"|\"pickup\")} [housekeepingStatus]\n * @property {(\"inService\"|\"outOfOrder\"|\"outOfService\")} [serviceStatus]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n *\n * @class Space\n * @extends {Entity}\n */\nexport class Space extends Entity {\n /**\n * @constructor\n * @param {SpaceData} data - The data to initialize the Space with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n this.name = data.name;\n this.type = data.type;\n if (data.discriminator !== undefined)\n this.discriminator = data.discriminator;\n if (data.floor !== undefined) this.floor = data.floor;\n if (data.driver !== undefined) this.driver = data.driver;\n if (data.category !== undefined) this.category = data.category;\n if (data.rooms !== undefined) this.rooms = data.rooms;\n if (data.occupied !== undefined) this.occupied = data.occupied;\n if (data.inUse !== undefined) this.inUse = data.inUse;\n if (data.eco !== undefined) this.eco = data.eco;\n if (data.features !== undefined) this.features = data.features;\n if (data.maximumOccupancy !== undefined)\n this.maximumOccupancy = data.maximumOccupancy;\n if (data.housekeepingStatus !== undefined)\n this.housekeepingStatus = data.housekeepingStatus;\n if (data.serviceStatus !== undefined)\n this.serviceStatus = data.serviceStatus;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n\n get hasDimmer() {\n return this.rooms.some((room) => room.hasDimmer);\n }\n get hasSwitch() {\n return this.rooms.some((room) => room.hasSwitch);\n }\n get hasWindowCovering() {\n return this.rooms.some((room) => room.hasWindowCovering);\n }\n get hasThermostat() {\n return this.rooms.some((room) => room.hasThermostat);\n }\n get hasLock() {\n return this.rooms.some((room) => room.hasLock);\n }\n get hasCourtesy() {\n return this.rooms.some((room) => room.hasCourtesy);\n }\n get hasCamera() {\n return this.rooms.some((room) => room.hasCamera);\n }\n get hasAlarm() {\n return this.rooms.some((room) => room.hasAlarm);\n }\n get hasMedia() {\n return this.rooms.some((room) => room.hasMedia);\n }\n}\n\nObject.defineProperty(Space.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"space.json\",\n title: \"Space\",\n type: \"object\",\n required: [\"id\", \"name\", \"type\"],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\", minLength: 1 },\n type: { type: \"string\", default: \"space\", enum: [\"space\"] },\n discriminator: {\n type: \"string\",\n enum: [\n \"classRoom\",\n \"hotelRoom\",\n \"office\",\n \"building\",\n \"commonArea\",\n \"conferenceRoom\",\n \"lobby\",\n \"gym\",\n \"pool\",\n \"restaurant\",\n \"unit\",\n ],\n },\n floor: { type: \"string\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n category: { type: \"string\", description: \"This is the category id\" },\n rooms: { type: \"array\", items: { type: \"string\" } },\n occupied: { type: \"boolean\" },\n inUse: { type: \"boolean\" },\n eco: {\n type: \"object\",\n additionalProperties: false,\n default: { active: false, allowed: false, previousState: null },\n properties: {\n active: { type: \"boolean\", default: false },\n activatedAt: { type: [\"string\", \"object\"], format: \"date-time\" },\n allowed: { type: \"boolean\", default: false },\n previousState: {\n type: [\"object\", \"null\"],\n properties: {\n thermostats: {\n type: \"object\",\n patternProperties: {\n \".*\": {\n type: \"object\",\n properties: {\n setpoints: {\n $ref: \"thermostat.json#/properties/setpoints\",\n },\n },\n },\n },\n },\n },\n additionalProperties: false,\n },\n },\n },\n features: { type: \"array\", items: { type: \"string\", enum: [\"pet\"] } },\n maximumOccupancy: { type: \"number\", minimum: 1 },\n housekeepingStatus: {\n type: \"string\",\n enum: [\"clean\", \"dirty\", \"inspected\", \"pickup\"],\n },\n serviceStatus: {\n type: \"string\",\n enum: [\"inService\", \"outOfOrder\", \"outOfService\"],\n },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n },\n});\n\nObject.defineProperty(Space.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateSwitch as validate } from \"../validate\";\n\n/**\n * @typedef {Object} SwitchData Any smart switch\n * @property {string} id - Identifier of the object.\n * @property {string} [name]\n * @property {(\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\")} type\n * @property {(\"light\"|\"fan\"|\"irrigation\")} [discriminator]\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {boolean} [offline]\n * @property {(\"on\"|\"off\")} state\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n * @property {string} [restoresAt]\n */\n\n/**\n * Any smart switch\n * @class Switch\n * @extends {Entity}\n */\nexport class Switch extends Entity {\n /**\n * @constructor\n * @param {SwitchData} data - The data to initialize the Switch with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n this.type = data.type;\n if (data.discriminator !== undefined)\n this.discriminator = data.discriminator;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n this.driver = data.driver;\n if (data.offline !== undefined) this.offline = data.offline;\n this.state = data.state;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n if (data.restoresAt !== undefined) this.restoresAt = data.restoresAt;\n }\n}\n\nObject.defineProperty(Switch.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"switch.json\",\n title: \"Switch\",\n description: \"Any smart switch\",\n type: \"object\",\n required: [\"id\", \"type\", \"state\", \"driver\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n type: { $ref: \"definitions.json#/definitions/type\" },\n discriminator: { type: \"string\", enum: [\"light\", \"fan\", \"irrigation\"] },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n offline: { type: \"boolean\" },\n state: { type: \"string\", enum: [\"on\", \"off\"] },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n restoresAt: { type: \"string\", format: \"date-time\" },\n },\n },\n});\n\nObject.defineProperty(Switch.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateSystemUser as validate } from \"../validate\";\n\n/**\n * @typedef {Object} SystemUserData A system user is a user that originated from an external 3rd party system.\n * @property {string} id - Identifier of the object.\n * @property {\"systemUser\"} [type] - Default: \"systemUser\"\n * @property {(\"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\")} [driver] - Driver used to communicate with the object.\n * @property {string} firstName\n * @property {string} lastName\n * @property {string} [phone]\n * @property {string} [email]\n * @property {{id?: string, line1?: string, line2?: string, line3?: string, city?: string, state?: string, postalCode?: string, countryCode?: string}} [address]\n * @property {string} [photo]\n * @property {string} [jobTitle]\n * @property {string} [dob]\n * @property {(\"male\"|\"female\")} [gender]\n * @property {(\"Guest\"|\"User\"|\"Manager\"|\"Maintenance\"|\"Administrator\"|\"SuperAdmin\")[]} [roles]\n * @property {string} [nationality]\n * @property {string[]} [notes]\n * @property {{id?: any, type: \"mediaFile\", name?: string, fileHash?: string, category?: string, mimeType?: (\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\"), data?: string, url?: string, width?: number, height?: number, size?: number, uploadUrl?: string, uploadUrlExpires?: any, createdBy?: string, systemId?: any}[]} [files]\n * @property {{id?: any, type: (\"driversLicense\"|\"passport\"|\"identityCard\"|\"visa\"), number?: string, maskedNumber?: string, encryptedNumber?: string, issued?: (string|object), expires?: (string|object), verified?: boolean, matched?: boolean, firstName?: string, lastName?: string, issuingCountry?: string, systemId?: any}[]} [identifications]\n * @property {{id?: any, type: (\"amex\"|\"visa\"|\"masterCard\"|\"maestro\"|\"discover\"|\"diners\"|\"jcb\"|\"applePay\"|\"alipay\"|\"chinaUnionPay\"|\"vpay\"), enabled?: boolean, storageData?: string, maskedNumber: string, issued?: string, expires: string, systemId?: any}[]} [payments]\n * @property {{id?: string, name?: string, date?: string, price?: number, tax?: number}[]} [revenue]\n * @property {(string|object)} [createdAt]\n * @property {(string|object)} [updatedAt]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n */\n\n/**\n * A system user is a user that originated from an external 3rd party system.\n * @class SystemUser\n * @extends {Entity}\n */\nexport class SystemUser extends Entity {\n /**\n * @constructor\n * @param {SystemUserData} data - The data to initialize the SystemUser with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n if (data.driver !== undefined) this.driver = data.driver;\n this.firstName = data.firstName;\n this.lastName = data.lastName;\n if (data.phone !== undefined) this.phone = data.phone;\n if (data.email !== undefined) this.email = data.email;\n if (data.address !== undefined) this.address = data.address;\n if (data.photo !== undefined) this.photo = data.photo;\n if (data.jobTitle !== undefined) this.jobTitle = data.jobTitle;\n if (data.dob !== undefined) this.dob = data.dob;\n if (data.gender !== undefined) this.gender = data.gender;\n if (data.roles !== undefined) this.roles = data.roles;\n if (data.nationality !== undefined) this.nationality = data.nationality;\n if (data.notes !== undefined) this.notes = data.notes;\n if (data.files !== undefined) this.files = data.files;\n if (data.identifications !== undefined)\n this.identifications = data.identifications;\n if (data.payments !== undefined) this.payments = data.payments;\n if (data.revenue !== undefined) this.revenue = data.revenue;\n if (data.createdAt !== undefined) this.createdAt = data.createdAt;\n if (data.updatedAt !== undefined) this.updatedAt = data.updatedAt;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n }\n}\n\nObject.defineProperty(SystemUser.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"systemUser.json\",\n title: \"System User\",\n description:\n \"A system user is a user that originated from an external 3rd party system.\",\n type: \"object\",\n required: [\"id\", \"firstName\", \"lastName\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"systemUser\", enum: [\"systemUser\"] },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n firstName: { type: \"string\" },\n lastName: { type: \"string\" },\n phone: { type: [\"string\", \"null\"], pattern: \"^\\\\+[0-9]{1,14}$\" },\n email: { type: [\"string\", \"null\"], format: \"email\" },\n address: { $ref: \"definitions.json#/definitions/address\" },\n photo: { type: \"string\" },\n jobTitle: { type: \"string\" },\n dob: { type: \"string\" },\n gender: { type: \"string\", enum: [\"male\", \"female\"] },\n roles: {\n type: \"array\",\n items: {\n type: \"string\",\n enum: [\n \"Guest\",\n \"User\",\n \"Manager\",\n \"Maintenance\",\n \"Administrator\",\n \"SuperAdmin\",\n ],\n },\n },\n nationality: { type: \"string\", minLength: 2, maxLength: 2 },\n notes: { type: \"array\", items: { type: \"string\" } },\n files: { type: \"array\", items: { $ref: \"mediaFile.json#\" } },\n identifications: {\n type: \"array\",\n items: { $ref: \"identification.json#\" },\n },\n payments: { type: \"array\", items: { $ref: \"payment.json#\" } },\n revenue: { $ref: \"definitions.json#/definitions/revenue\" },\n createdAt: { $ref: \"definitions.json#/definitions/createdAt\" },\n updatedAt: { $ref: \"definitions.json#/definitions/updatedAt\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n },\n },\n});\n\nObject.defineProperty(SystemUser.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateThermostat as validate } from \"../validate\";\n\n/**\n * @typedef {Object} ThermostatData Any smart thermostat\n * @property {string} id - Identifier of the object.\n * @property {string} [name]\n * @property {(\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\")} type - Default: \"thermostat\"\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {boolean} [offline]\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {number} [currentTemperature]\n * @property {number} [currentHumidity]\n * @property {any} hvacMode\n * @property {(\"cooling\"|\"heating\"|\"off\")} hvacState\n * @property {any} fanMode\n * @property {(\"off\"|\"low\"|\"medium\"|\"high\"|\"on\")} fanState\n * @property {(\"celsius\"|\"fahrenheit\")} temperatureScale - Default: \"fahrenheit\"\n * @property {(\"absolute\"|\"relative\")} [humidityScale]\n * @property {(\"cool\"|\"heat\"|\"auto\"|\"off\")[]} supportedHvacModes\n * @property {(\"auto\"|\"low\"|\"medium\"|\"high\"|\"off\"|\"on\")[]} supportedFanModes\n * @property {{cool?: any, heat?: any, auto?: any}} setpoints\n * @property {any} [setpoints.cool]\n * @property {any} [setpoints.heat]\n * @property {any} [setpoints.auto]\n * @property {number} [minAutoDelta] - Default: 3\n * @property {number} [cycleRate]\n * @property {number} [batteryLevel]\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n */\n\n/**\n * Any smart thermostat\n * @class Thermostat\n * @extends {Entity}\n */\nexport class Thermostat extends Entity {\n /**\n * @constructor\n * @param {ThermostatData} data - The data to initialize the Thermostat with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n this.type = data.type;\n this.driver = data.driver;\n if (data.offline !== undefined) this.offline = data.offline;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n if (data.currentTemperature !== undefined)\n this.currentTemperature = data.currentTemperature;\n if (data.currentHumidity !== undefined)\n this.currentHumidity = data.currentHumidity;\n this.hvacMode = data.hvacMode;\n this.hvacState = data.hvacState;\n this.fanMode = data.fanMode;\n this.fanState = data.fanState;\n this.temperatureScale = data.temperatureScale;\n if (data.humidityScale !== undefined)\n this.humidityScale = data.humidityScale;\n this.supportedHvacModes = data.supportedHvacModes;\n this.supportedFanModes = data.supportedFanModes;\n this.setpoints = data.setpoints;\n if (data.minAutoDelta !== undefined) this.minAutoDelta = data.minAutoDelta;\n if (data.cycleRate !== undefined) this.cycleRate = data.cycleRate;\n if (data.batteryLevel !== undefined) this.batteryLevel = data.batteryLevel;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n }\n}\n\nObject.defineProperty(Thermostat.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"thermostat.json\",\n title: \"Thermostat\",\n description: \"Any smart thermostat\",\n type: \"object\",\n required: [\n \"id\",\n \"type\",\n \"hvacMode\",\n \"fanMode\",\n \"hvacState\",\n \"fanState\",\n \"setpoints\",\n \"temperatureScale\",\n \"supportedHvacModes\",\n \"supportedFanModes\",\n \"driver\",\n ],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { $ref: \"definitions.json#/definitions/name\" },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n default: \"thermostat\",\n },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n offline: { type: \"boolean\" },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n currentTemperature: { type: \"number\" },\n currentHumidity: { type: \"number\", minimum: 0 },\n hvacMode: {\n type: \"string\",\n $ref: \"#/properties/supportedHvacModes/items\",\n },\n hvacState: {\n type: [\"string\", \"null\"],\n enum: [\"cooling\", \"heating\", \"off\", null],\n },\n fanMode: { type: \"string\", $ref: \"#/properties/supportedFanModes/items\" },\n fanState: {\n type: [\"string\", \"null\"],\n enum: [\"off\", \"low\", \"medium\", \"high\", \"on\", null],\n },\n temperatureScale: {\n type: \"string\",\n enum: [\"celsius\", \"fahrenheit\"],\n default: \"fahrenheit\",\n },\n humidityScale: {\n type: [\"string\", \"null\"],\n enum: [\"absolute\", \"relative\", null],\n },\n supportedHvacModes: {\n type: \"array\",\n uniqueItems: true,\n minItems: 2,\n items: { enum: [\"cool\", \"heat\", \"auto\", \"off\"] },\n },\n supportedFanModes: {\n type: \"array\",\n uniqueItems: true,\n items: { enum: [\"auto\", \"low\", \"medium\", \"high\", \"off\", \"on\"] },\n },\n setpoints: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n cool: { $ref: \"#/$defs/setpoint\" },\n heat: { $ref: \"#/$defs/setpoint\" },\n auto: { $ref: \"#/$defs/setpoint\" },\n },\n },\n minAutoDelta: { type: \"number\", default: 3 },\n cycleRate: { type: \"number\" },\n batteryLevel: { $ref: \"definitions.json#/definitions/batteryLevel\" },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n },\n $defs: {\n setpoint: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n value: { $ref: \"#/$defs/setpointValue\" },\n min: { $ref: \"#/$defs/setpointMinMax\" },\n max: { $ref: \"#/$defs/setpointMinMax\" },\n },\n },\n setpointValue: { type: \"number\", minimum: 0, maximum: 99 },\n setpointMinMax: { type: [\"number\", \"null\"], minimum: 0, maximum: 99 },\n },\n },\n});\n\nObject.defineProperty(Thermostat.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateTicket as validate } from \"../validate\";\n\n/**\n * @typedef {Object} TicketData A ticket is a request from a user.\n * @property {string} id - Identifier of the object.\n * @property {\"ticket\"} [type] - Default: \"ticket\"\n * @property {string} [number]\n * @property {string} [issueId]\n * @property {{id: string, discriminator: (\"message\"|\"opened\"|\"assigned\"|\"rated\"|\"tipped\"|\"scheduled\"|\"collaboratorAdded\"|\"collaboratorRemoved\"|\"statusChanged\"|\"priorityChanged\"|\"scheduleDateChanged\"|\"locationChanged\"), userId?: string, userName?: string, vendorId?: string, vendorName?: string, systemId?: string, systemName?: string, timestamp: (string|object), body: string, parsedBody?: {text?: string, mentions?: {id: string, discriminator: (\"user\"|\"vendor\"|\"system\"), index: number, length: number, originalText: string}[]}, readBy?: string[], media?: any}[]} conversation - Default: []\n * @property {string} [subject]\n * @property {{userId?: string, userName?: string, systemId?: string, systemName?: string}} [openedBy]\n * @property {string} [openedBy.userId]\n * @property {string} [openedBy.userName]\n * @property {string} [openedBy.systemId]\n * @property {string} [openedBy.systemName]\n * @property {{systemId?: string, systemName?: string, systemPhoto?: any, userId?: string, userName?: string, userPhoto?: any, deviceId?: string, roomId?: string, reservationId?: string, spaceId?: string, spaceName?: string}} requester\n * @property {string} [requester.systemId]\n * @property {string} [requester.systemName]\n * @property {any} [requester.systemPhoto]\n * @property {string} [requester.userId]\n * @property {string} [requester.userName]\n * @property {any} [requester.userPhoto]\n * @property {string} [requester.deviceId]\n * @property {string} [requester.roomId]\n * @property {string} [requester.reservationId]\n * @property {string} [requester.spaceId]\n * @property {string} [requester.spaceName]\n * @property {{userId?: string, userName?: string, userPhoto?: any, vendorId?: string, vendorName?: string, vendorPhoto?: any}} [assignedTo]\n * @property {string} [assignedTo.userId]\n * @property {string} [assignedTo.userName]\n * @property {any} [assignedTo.userPhoto]\n * @property {string} [assignedTo.vendorId]\n * @property {string} [assignedTo.vendorName]\n * @property {any} [assignedTo.vendorPhoto]\n * @property {{id: string, discriminator: \"user\"}[]} [notify] - A list of entities to notify when this ticket is created or resolved.. Default: []\n * @property {{id: string, name: string, discriminator: (\"user\"|\"vendor\")}[]} [collaborators] - Default: []\n * @property {{id?: string, discriminator: (\"space\"|\"room\"|\"property\"|\"customText\"), name: string}} [location]\n * @property {string} [location.id]\n * @property {(\"space\"|\"room\"|\"property\"|\"customText\")} location.discriminator\n * @property {string} location.name\n * @property {(\"open\"|\"pending\"|\"solved\"|\"closed\")} status - Default: \"open\"\n * @property {(\"low\"|\"normal\"|\"high\")} [priority] - Default: \"normal\"\n * @property {string[]} tags - Default: []\n * @property {string} [department]\n * @property {number} [rating]\n * @property {string} [ratingComment]\n * @property {string} [tipAmount]\n * @property {(string|object)} [autoCloseAt]\n * @property {(string|object)} [scheduleDate]\n * @property {(string|object)} createdAt\n * @property {(string|object)} updatedAt\n * @property {(string|object)} [solvedAt]\n * @property {(string|object)} [closedAt]\n */\n\n/**\n * A ticket is a request from a user.\n * @class Ticket\n * @extends {Entity}\n */\nexport class Ticket extends Entity {\n /**\n * @constructor\n * @param {TicketData} data - The data to initialize the Ticket with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n if (data.number !== undefined) this.number = data.number;\n if (data.issueId !== undefined) this.issueId = data.issueId;\n this.conversation = data.conversation;\n if (data.subject !== undefined) this.subject = data.subject;\n if (data.openedBy !== undefined) this.openedBy = data.openedBy;\n this.requester = data.requester;\n if (data.assignedTo !== undefined) this.assignedTo = data.assignedTo;\n if (data.notify !== undefined) this.notify = data.notify;\n if (data.collaborators !== undefined)\n this.collaborators = data.collaborators;\n if (data.location !== undefined) this.location = data.location;\n this.status = data.status;\n if (data.priority !== undefined) this.priority = data.priority;\n this.tags = data.tags;\n if (data.department !== undefined) this.department = data.department;\n if (data.rating !== undefined) this.rating = data.rating;\n if (data.ratingComment !== undefined)\n this.ratingComment = data.ratingComment;\n if (data.tipAmount !== undefined) this.tipAmount = data.tipAmount;\n if (data.autoCloseAt !== undefined) this.autoCloseAt = data.autoCloseAt;\n if (data.scheduleDate !== undefined) this.scheduleDate = data.scheduleDate;\n this.createdAt = data.createdAt;\n this.updatedAt = data.updatedAt;\n if (data.solvedAt !== undefined) this.solvedAt = data.solvedAt;\n if (data.closedAt !== undefined) this.closedAt = data.closedAt;\n }\n}\n\nObject.defineProperty(Ticket.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"ticket.json\",\n title: \"Ticket\",\n description: \"A ticket is a request from a user.\",\n type: \"object\",\n required: [\n \"id\",\n \"conversation\",\n \"requester\",\n \"status\",\n \"tags\",\n \"createdAt\",\n \"updatedAt\",\n ],\n additionalProperties: false,\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", enum: [\"ticket\"], default: \"ticket\" },\n number: { type: \"string\" },\n issueId: { type: \"string\" },\n conversation: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"timestamp\", \"body\"],\n properties: {\n id: { type: \"string\" },\n discriminator: {\n type: \"string\",\n enum: [\n \"message\",\n \"opened\",\n \"assigned\",\n \"rated\",\n \"tipped\",\n \"scheduled\",\n \"collaboratorAdded\",\n \"collaboratorRemoved\",\n \"statusChanged\",\n \"priorityChanged\",\n \"scheduleDateChanged\",\n \"locationChanged\",\n ],\n default: \"message\",\n },\n userId: { type: \"string\" },\n userName: { type: \"string\" },\n vendorId: { type: \"string\" },\n vendorName: { type: \"string\" },\n systemId: { type: \"string\" },\n systemName: { type: \"string\" },\n timestamp: { $ref: \"definitions.json#/definitions/createdAt\" },\n body: { type: \"string\" },\n parsedBody: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n text: { type: \"string\" },\n mentions: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\n \"discriminator\",\n \"id\",\n \"index\",\n \"length\",\n \"originalText\",\n ],\n properties: {\n id: { type: \"string\" },\n discriminator: {\n type: \"string\",\n enum: [\"user\", \"vendor\", \"system\"],\n },\n index: { type: \"integer\" },\n length: { type: \"integer\" },\n originalText: { type: \"string\" },\n },\n },\n },\n },\n },\n readBy: { type: \"array\", default: [], items: { type: \"string\" } },\n media: { anyOf: [{ $ref: \"mediaFile.json\" }, { type: \"null\" }] },\n },\n },\n },\n subject: { type: \"string\" },\n openedBy: {\n type: \"object\",\n properties: {\n userId: { type: \"string\" },\n userName: { type: \"string\" },\n systemId: { type: \"string\" },\n systemName: { type: \"string\" },\n },\n },\n requester: {\n type: \"object\",\n properties: {\n systemId: { type: \"string\" },\n systemName: { type: \"string\" },\n systemPhoto: {\n anyOf: [\n { $ref: \"mediaFile.json\" },\n { type: \"null\" },\n { type: \"string\" },\n ],\n },\n userId: { type: \"string\" },\n userName: { type: \"string\" },\n userPhoto: {\n anyOf: [\n { $ref: \"mediaFile.json\" },\n { type: \"null\" },\n { type: \"string\" },\n ],\n },\n deviceId: { type: \"string\" },\n roomId: { type: \"string\" },\n reservationId: { type: \"string\" },\n spaceId: { type: \"string\" },\n spaceName: { type: \"string\" },\n },\n },\n assignedTo: {\n type: \"object\",\n properties: {\n userId: { type: \"string\" },\n userName: { type: \"string\" },\n userPhoto: {\n anyOf: [\n { $ref: \"mediaFile.json\" },\n { type: \"null\" },\n { type: \"string\" },\n ],\n },\n vendorId: { type: \"string\" },\n vendorName: { type: \"string\" },\n vendorPhoto: {\n anyOf: [\n { $ref: \"mediaFile.json\" },\n { type: \"null\" },\n { type: \"string\" },\n ],\n },\n },\n },\n notify: {\n type: \"array\",\n description:\n \"A list of entities to notify when this ticket is created or resolved.\",\n default: [],\n items: {\n type: \"object\",\n required: [\"id\", \"discriminator\"],\n additionalProperties: false,\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the entity to notify.\",\n },\n discriminator: { type: \"string\", enum: [\"user\"] },\n },\n },\n },\n collaborators: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"id\", \"name\", \"discriminator\"],\n additionalProperties: false,\n properties: {\n id: { type: \"string\" },\n name: { type: \"string\" },\n discriminator: { type: \"string\", enum: [\"user\", \"vendor\"] },\n },\n },\n },\n location: {\n type: \"object\",\n required: [\"discriminator\", \"name\"],\n additionalProperties: false,\n properties: {\n id: { type: \"string\" },\n discriminator: {\n type: \"string\",\n enum: [\"space\", \"room\", \"property\", \"customText\"],\n },\n name: { type: \"string\" },\n },\n },\n status: {\n type: \"string\",\n enum: [\"open\", \"pending\", \"solved\", \"closed\"],\n default: \"open\",\n },\n priority: {\n type: \"string\",\n enum: [\"low\", \"normal\", \"high\"],\n default: \"normal\",\n },\n tags: { type: \"array\", default: [], items: { type: \"string\" } },\n department: { type: \"string\" },\n rating: { type: \"number\", minimum: 0, maximum: 5 },\n ratingComment: { type: \"string\" },\n tipAmount: { type: \"string\" },\n autoCloseAt: { $ref: \"definitions.json#/definitions/date\" },\n scheduleDate: { $ref: \"definitions.json#/definitions/date\" },\n createdAt: { $ref: \"definitions.json#/definitions/date\" },\n updatedAt: { $ref: \"definitions.json#/definitions/date\" },\n solvedAt: { $ref: \"definitions.json#/definitions/date\" },\n closedAt: { $ref: \"definitions.json#/definitions/date\" },\n },\n },\n});\n\nObject.defineProperty(Ticket.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateTimeSheet as validate } from \"../validate\";\n\n/**\n * @typedef {Object} TimeSheetData\n * @property {string} [id] - Identifier of the object.\n * @property {\"timeSheet\"} [type] - Default: \"timeSheet\"\n * @property {string} userId - Identifier of the object.\n * @property {(string|object)} day\n * @property {boolean} [locked] - If true, the time sheet is locked and cannot be modified. Default: false\n * @property {{id?: string, discriminator: (\"working\"|\"driving\"|\"meeting\"|\"break\"), start: (string|object), end?: (string|object), comment?: string, ticketId?: string}[]} [timeEntries] - Default: []\n */\n\n/**\n *\n * @class TimeSheet\n * @extends {Entity}\n */\nexport class TimeSheet extends Entity {\n /**\n * @constructor\n * @param {TimeSheetData} data - The data to initialize the TimeSheet with\n */\n constructor(data) {\n super(data);\n if (data.id !== undefined) this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n this.userId = data.userId;\n this.day = data.day;\n if (data.locked !== undefined) this.locked = data.locked;\n if (data.timeEntries !== undefined) this.timeEntries = data.timeEntries;\n }\n}\n\nObject.defineProperty(TimeSheet.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"timeSheet.json\",\n title: \"Time Sheet\",\n type: \"object\",\n required: [\"userId\", \"day\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"timeSheet\", enum: [\"timeSheet\"] },\n userId: { $ref: \"definitions.json#/definitions/id\" },\n day: { type: [\"string\", \"object\"], format: \"date-time\" },\n locked: {\n type: \"boolean\",\n default: false,\n description: \"If true, the time sheet is locked and cannot be modified\",\n },\n timeEntries: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n discriminator: {\n type: \"string\",\n enum: [\"working\", \"driving\", \"meeting\", \"break\"],\n },\n start: { type: [\"string\", \"object\"], format: \"date-time\" },\n end: { type: [\"string\", \"object\"], format: \"date-time\" },\n comment: { type: \"string\" },\n ticketId: { type: \"string\" },\n },\n required: [\"start\", \"discriminator\"],\n additionalProperties: false,\n },\n },\n },\n },\n});\n\nObject.defineProperty(TimeSheet.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateUser as validate } from \"../validate\";\n\n/**\n * @typedef {Object} UserData\n * @property {string} id - Identifier of the object.\n * @property {string} [type] - Default: \"user\"\n * @property {string} firstName\n * @property {string} lastName\n * @property {string} [phone]\n * @property {boolean} [phoneVerified]\n * @property {string} [email]\n * @property {boolean} [emailVerified]\n * @property {string} [whatsapp]\n * @property {boolean} [whatsappVerified]\n * @property {{id?: string, line1?: string, line2?: string, line3?: string, city?: string, state?: string, postalCode?: string, countryCode?: string}} [address]\n * @property {string} [secretKey]\n * @property {{id?: any, type: \"mediaFile\", name?: string, fileHash?: string, category?: string, mimeType?: (\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\"), data?: string, url?: string, width?: number, height?: number, size?: number, uploadUrl?: string, uploadUrlExpires?: any, createdBy?: string, systemId?: any}} [photo] - Any media file\n * @property {string} [jobTitle]\n * @property {string} [dob]\n * @property {(\"male\"|\"female\")} [gender]\n * @property {string} [nationality]\n * @property {{organizationId: string, propertyId: string, role: (\"Guest\"|\"User\"|\"Agent\"|\"Manager\"|\"Maintenance\"|\"Administrator\"|\"SuperAdmin\"), timeTrackingEnabled?: boolean, department?: string, policyIds?: string[], policies?: {id?: any, type: \"policy\", discriminator: \"user\", name: string, description?: string, organizationId: string, propertyId: string, permissions: {entities: string[], effect: (\"Allow\"|\"Deny\")}[]}[]}[]} [permissions] - Default: []\n * @property {{organizationId: string, propertyId: string, notifications?: {discriminator: (\"observerTicketCreated\"|\"observerTicketResolved\"), enabled: boolean}[]}[]} [preferences]\n * @property {string[]} [notes]\n * @property {{id?: any, type: \"mediaFile\", name?: string, fileHash?: string, category?: string, mimeType?: (\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\"), data?: string, url?: string, width?: number, height?: number, size?: number, uploadUrl?: string, uploadUrlExpires?: any, createdBy?: string, systemId?: any}[]} [files]\n * @property {{id?: any, type: (\"driversLicense\"|\"passport\"|\"identityCard\"|\"visa\"), number?: string, maskedNumber?: string, encryptedNumber?: string, issued?: (string|object), expires?: (string|object), verified?: boolean, matched?: boolean, firstName?: string, lastName?: string, issuingCountry?: string, systemId?: any}[]} [identifications]\n * @property {{id?: any, type: (\"amex\"|\"visa\"|\"masterCard\"|\"maestro\"|\"discover\"|\"diners\"|\"jcb\"|\"applePay\"|\"alipay\"|\"chinaUnionPay\"|\"vpay\"), enabled?: boolean, storageData?: string, maskedNumber: string, issued?: string, expires: string, systemId?: any}[]} [payments]\n * @property {{accuracy: number, latitude: number, longitude: number, timestamp: number}} [location]\n * @property {number} location.accuracy\n * @property {number} location.latitude\n * @property {number} location.longitude\n * @property {number} location.timestamp\n * @property {{id?: any, driver?: any, primaryGuest?: string, type: \"reservation\", sharedGuests?: string[], spaceCategory?: string, space?: string, previousSpace?: string, status: (\"reserved\"|\"checkedIn\"|\"checkedOut\"|\"cancelled\"|\"noShow\"|\"enquired\"|\"requested\"|\"optional\"), mobileCheckInSpaceCategoryChanged?: boolean, mobileCheckInSpaceChanged?: boolean, mobileCheckInStatus?: (\"ready\"|\"blocked\"|\"preArrivalStepsRequired\"|\"spaceNotAssigned\"|\"spaceNotReady\"|\"checkInTimeNotStarted\"), mobileCheckInStatusMessage?: string, confirmationNumber?: string, expectedCheckInDateTime?: (string|object), checkInDateTime: (string|object), checkOutDateTime: (string|object), adultCount?: number, childCount?: number, spaceCategoryAvailabilites?: {id?: string, price?: number, unit?: (\"night\"|\"stay\"|\"hour\"), isUpgrade?: boolean}[], revenue?: any, rateSuppressed?: boolean, payment?: string, company?: string, travelAgent?: string, systemId?: any, metadata?: any, updatedAt?: any}[]} [reservations]\n * @property {string} [spaceName]\n * @property {{id?: string, name?: string, date?: string, price?: number, tax?: number}[]} [revenue]\n * @property {(string|object)} [createdAt]\n * @property {(string|object)} [updatedAt]\n * @property {{systemId: string, propertyId: string, driver: string}[]} [systems] - Default: []\n */\n\n/**\n *\n * @class User\n * @extends {Entity}\n */\nexport class User extends Entity {\n /**\n * @constructor\n * @param {UserData} data - The data to initialize the User with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n this.firstName = data.firstName;\n this.lastName = data.lastName;\n if (data.phone !== undefined) this.phone = data.phone;\n if (data.phoneVerified !== undefined)\n this.phoneVerified = data.phoneVerified;\n if (data.email !== undefined) this.email = data.email;\n if (data.emailVerified !== undefined)\n this.emailVerified = data.emailVerified;\n if (data.whatsapp !== undefined) this.whatsapp = data.whatsapp;\n if (data.whatsappVerified !== undefined)\n this.whatsappVerified = data.whatsappVerified;\n if (data.address !== undefined) this.address = data.address;\n if (data.secretKey !== undefined) this.secretKey = data.secretKey;\n if (data.photo !== undefined) this.photo = data.photo;\n if (data.jobTitle !== undefined) this.jobTitle = data.jobTitle;\n if (data.dob !== undefined) this.dob = data.dob;\n if (data.gender !== undefined) this.gender = data.gender;\n if (data.nationality !== undefined) this.nationality = data.nationality;\n if (data.permissions !== undefined) this.permissions = data.permissions;\n if (data.preferences !== undefined) this.preferences = data.preferences;\n if (data.notes !== undefined) this.notes = data.notes;\n if (data.files !== undefined) this.files = data.files;\n if (data.identifications !== undefined)\n this.identifications = data.identifications;\n if (data.payments !== undefined) this.payments = data.payments;\n if (data.location !== undefined) this.location = data.location;\n if (data.reservations !== undefined) this.reservations = data.reservations;\n if (data.spaceName !== undefined) this.spaceName = data.spaceName;\n if (data.revenue !== undefined) this.revenue = data.revenue;\n if (data.createdAt !== undefined) this.createdAt = data.createdAt;\n if (data.updatedAt !== undefined) this.updatedAt = data.updatedAt;\n if (data.systems !== undefined) this.systems = data.systems;\n }\n\n get fullName() {\n return `${this.firstName} ${this.lastName}`;\n }\n get roles() {\n const roles = new Set();\n if (this.permissions) {\n for (const permission of this.permissions) {\n roles.add(permission.role);\n }\n }\n return Array.from(roles);\n }\n get isSuperAdmin() {\n return this.roles.includes(\"SuperAdmin\");\n }\n get isAdmin() {\n return this.roles.includes(\"Admin\") || this.roles.includes(\"Administrator\");\n }\n get isManager() {\n return this.roles.includes(\"Manager\");\n }\n get isUser() {\n return this.roles.includes(\"User\");\n }\n}\n\nObject.defineProperty(User.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"user.json\",\n title: \"User\",\n type: \"object\",\n required: [\"id\", \"firstName\", \"lastName\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"user\" },\n firstName: { type: \"string\" },\n lastName: { type: \"string\" },\n phone: { type: [\"string\", \"null\"], pattern: \"^\\\\+[0-9]{1,14}$\" },\n phoneVerified: { type: \"boolean\" },\n email: { type: [\"string\", \"null\"], format: \"email\" },\n emailVerified: { type: \"boolean\" },\n whatsapp: { type: [\"string\", \"null\"], pattern: \"^\\\\+[0-9]{1,14}$\" },\n whatsappVerified: { type: \"boolean\" },\n address: { $ref: \"definitions.json#/definitions/address\" },\n secretKey: { type: \"string\" },\n photo: { $ref: \"mediaFile.json#\" },\n jobTitle: { type: \"string\" },\n dob: { type: \"string\" },\n gender: { type: \"string\", enum: [\"male\", \"female\"] },\n nationality: { type: \"string\", minLength: 2, maxLength: 2 },\n permissions: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n required: [\"organizationId\", \"propertyId\", \"role\"],\n properties: {\n organizationId: {\n type: \"string\",\n description:\n \"The ID of the organization the permission is applies to.\",\n },\n propertyId: {\n type: \"string\",\n description:\n \"The ID of the property the permission is applies to.\",\n },\n role: {\n type: \"string\",\n enum: [\n \"Guest\",\n \"User\",\n \"Agent\",\n \"Manager\",\n \"Maintenance\",\n \"Administrator\",\n \"SuperAdmin\",\n ],\n },\n timeTrackingEnabled: {\n type: \"boolean\",\n description: \"Whether time tracking is enabled for this role.\",\n },\n department: {\n type: \"string\",\n description: \"The department the user belongs to.\",\n },\n policyIds: {\n type: \"array\",\n items: {\n type: \"string\",\n description: \"ID of a policy that is applied to this role.\",\n },\n },\n policies: {\n type: \"array\",\n items: {\n description:\n \"A policy object populated from the policyIds array.\",\n $ref: \"policy.json\",\n },\n },\n },\n additionalProperties: false,\n },\n },\n preferences: {\n type: \"array\",\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"organizationId\", \"propertyId\"],\n properties: {\n organizationId: { type: \"string\" },\n propertyId: { type: \"string\" },\n notifications: {\n type: \"array\",\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"discriminator\", \"enabled\"],\n properties: {\n discriminator: {\n type: \"string\",\n enum: [\"observerTicketCreated\", \"observerTicketResolved\"],\n },\n enabled: { type: \"boolean\" },\n },\n },\n },\n },\n },\n },\n notes: { type: \"array\", items: { type: \"string\" } },\n files: { type: \"array\", items: { $ref: \"mediaFile.json#\" } },\n identifications: {\n type: \"array\",\n items: { $ref: \"identification.json#\" },\n },\n payments: { type: \"array\", items: { $ref: \"payment.json#\" } },\n location: {\n type: \"object\",\n required: [\"accuracy\", \"latitude\", \"longitude\", \"timestamp\"],\n additionalProperties: false,\n properties: {\n accuracy: { type: [\"number\", \"null\"] },\n latitude: { type: [\"number\", \"null\"] },\n longitude: { type: [\"number\", \"null\"] },\n timestamp: { type: [\"number\", \"null\"] },\n },\n },\n reservations: { type: \"array\", items: { $ref: \"reservation.json\" } },\n spaceName: { type: \"string\" },\n revenue: { $ref: \"definitions.json#/definitions/revenue\" },\n createdAt: { $ref: \"definitions.json#/definitions/createdAt\" },\n updatedAt: { $ref: \"definitions.json#/definitions/updatedAt\" },\n systems: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n properties: {\n systemId: { type: \"string\" },\n propertyId: { type: \"string\" },\n driver: { type: \"string\" },\n },\n required: [\"systemId\", \"propertyId\", \"driver\"],\n additionalProperties: false,\n },\n },\n },\n },\n});\n\nObject.defineProperty(User.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateVendor as validate } from \"../validate\";\n\n/**\n * @typedef {Object} VendorData\n * @property {string} id - Identifier of the object.\n * @property {\"vendor\"} [type] - Default: \"vendor\"\n * @property {string} name\n * @property {string} [phone]\n * @property {string} email\n * @property {{id?: string, line1?: string, line2?: string, line3?: string, city?: string, state?: string, postalCode?: string, countryCode?: string}} [address]\n * @property {{id?: any, type: \"mediaFile\", name?: string, fileHash?: string, category?: string, mimeType?: (\"image/*\"|\"image/jpeg\"|\"image/png\"|\"image/gif\"|\"image/webp\"|\"image/avif\"|\"image/svg+xml\"|\"application/pdf\"), data?: string, url?: string, width?: number, height?: number, size?: number, uploadUrl?: string, uploadUrlExpires?: any, createdBy?: string, systemId?: any}} [photo] - Any media file\n * @property {(string|object)} [createdAt]\n * @property {(string|object)} [updatedAt]\n */\n\n/**\n *\n * @class Vendor\n * @extends {Entity}\n */\nexport class Vendor extends Entity {\n /**\n * @constructor\n * @param {VendorData} data - The data to initialize the Vendor with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.type !== undefined) this.type = data.type;\n this.name = data.name;\n if (data.phone !== undefined) this.phone = data.phone;\n this.email = data.email;\n if (data.address !== undefined) this.address = data.address;\n if (data.photo !== undefined) this.photo = data.photo;\n if (data.createdAt !== undefined) this.createdAt = data.createdAt;\n if (data.updatedAt !== undefined) this.updatedAt = data.updatedAt;\n }\n}\n\nObject.defineProperty(Vendor.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"vendor.json\",\n title: \"Vendor\",\n type: \"object\",\n required: [\"id\", \"name\", \"email\"],\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n type: { type: \"string\", default: \"vendor\", enum: [\"vendor\"] },\n name: { type: \"string\" },\n phone: { type: [\"string\", \"null\"], pattern: \"^\\\\+[0-9]{1,14}$\" },\n email: { type: [\"string\", \"null\"], format: \"email\" },\n address: { $ref: \"definitions.json#/definitions/address\" },\n photo: { $ref: \"mediaFile.json#\" },\n createdAt: { $ref: \"definitions.json#/definitions/createdAt\" },\n updatedAt: { $ref: \"definitions.json#/definitions/updatedAt\" },\n },\n },\n});\n\nObject.defineProperty(Vendor.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n","/* @ts-nocheck */\n/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity\";\nimport { validateWindowCovering as validate } from \"../validate\";\n\n/**\n * @typedef {Object} WindowCoveringData Any smart window covering\n * @property {string} id - Identifier of the object.\n * @property {string} [name]\n * @property {(\"alarm\"|\"dimmer\"|\"switch\"|\"motionSensor\"|\"windowCovering\"|\"camera\"|\"mediaSource\"|\"thermostat\"|\"lock\"|\"courtesy\"|\"gateway\"|\"tv\"|\"dvr\"|\"appleTv\"|\"discPlayer\"|\"mediaPlayer\"|\"uncontrolledDevice\")} type - Default: \"windowCovering\"\n * @property {(\"basic\"|\"variable\")} [discriminator] - Default: \"variable\"\n * @property {(\"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\")[]} [supportedNotifications]\n * @property {{name?: string, timestamp?: number, description?: string}} [notification]\n * @property {(\"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\")} driver - Driver used to communicate with the object.\n * @property {boolean} [offline]\n * @property {number} position\n * @property {string} [systemId] - Identifier of the object, directly related to the system.\n * @property {number} [watts]\n * @property {string} [icon]\n * @property {string} [modelNumber]\n * @property {string} [serialNumber]\n * @property {string} [firmwareVersion]\n */\n\n/**\n * Any smart window covering\n * @class WindowCovering\n * @extends {Entity}\n */\nexport class WindowCovering extends Entity {\n /**\n * @constructor\n * @param {WindowCoveringData} data - The data to initialize the WindowCovering with\n */\n constructor(data) {\n super(data);\n this.id = data.id;\n if (data.name !== undefined) this.name = data.name;\n this.type = data.type;\n if (data.discriminator !== undefined)\n this.discriminator = data.discriminator;\n if (data.supportedNotifications !== undefined)\n this.supportedNotifications = data.supportedNotifications;\n if (data.notification !== undefined) this.notification = data.notification;\n this.driver = data.driver;\n if (data.offline !== undefined) this.offline = data.offline;\n this.position = data.position;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.watts !== undefined) this.watts = data.watts;\n if (data.icon !== undefined) this.icon = data.icon;\n if (data.modelNumber !== undefined) this.modelNumber = data.modelNumber;\n if (data.serialNumber !== undefined) this.serialNumber = data.serialNumber;\n if (data.firmwareVersion !== undefined)\n this.firmwareVersion = data.firmwareVersion;\n }\n}\n\nObject.defineProperty(WindowCovering.prototype, \"schema\", {\n value: {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"windowCovering.json\",\n title: \"Window Covering\",\n description: \"Any smart window covering\",\n required: [\"id\", \"type\", \"position\", \"driver\"],\n additionalProperties: false,\n type: \"object\",\n properties: {\n id: { $ref: \"definitions.json#/definitions/id\" },\n name: { type: \"string\" },\n type: {\n $ref: \"definitions.json#/definitions/type\",\n default: \"windowCovering\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"basic\", \"variable\"],\n default: \"variable\",\n },\n supportedNotifications: {\n $ref: \"definitions.json#/definitions/supportedNotifications\",\n },\n notification: { $ref: \"definitions.json#/definitions/notification\" },\n driver: { $ref: \"definitions.json#/definitions/driver\" },\n offline: { type: \"boolean\" },\n position: { type: [\"number\", \"null\"], minimum: 0, maximum: 100 },\n systemId: { $ref: \"definitions.json#/definitions/systemId\" },\n watts: { $ref: \"definitions.json#/definitions/watts\" },\n icon: { type: \"string\" },\n modelNumber: { type: \"string\" },\n serialNumber: { type: \"string\" },\n firmwareVersion: { type: \"string\" },\n },\n },\n});\n\nObject.defineProperty(WindowCovering.prototype, \"validator\", {\n get: function () {\n return validate;\n },\n});\n"],"mappings":"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ACP,MAAM,CAAC,UAAU,MAAM;AAAA,MACvB,MAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,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","names":["addFormats","d","Event"]}