@kohost/api-client 1.0.0-alpha.2 → 1.0.0-alpha.3

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 (112) hide show
  1. package/.eslintrc.js +10 -0
  2. package/bitbucket-pipelines.yml +39 -0
  3. package/commands/Command.js +38 -0
  4. package/commands/SetAlarmCommand.js +21 -0
  5. package/commands/SetCourtesyCommand.js +21 -0
  6. package/commands/SetDimmerCommand.js +21 -0
  7. package/commands/SetLockCommand.js +21 -0
  8. package/commands/SetSceneControllerCommand.js +21 -0
  9. package/commands/SetSwitchCommand.js +21 -0
  10. package/commands/SetThermostatCommand.js +21 -0
  11. package/commands/SetWindowCoveringCommand.js +21 -0
  12. package/commands/VerifyDocumentCommand.js +24 -0
  13. package/commands/index.js +21 -0
  14. package/defs/deviceTypes.js +15 -0
  15. package/defs/formalDeviceTypes.js +6 -0
  16. package/defs/http.js +7 -0
  17. package/defs/index.js +11 -0
  18. package/errors/AppError.js +8 -0
  19. package/errors/AuthenticationError.js +9 -0
  20. package/errors/AuthorizationError.js +9 -0
  21. package/errors/DeviceCommError.js +9 -0
  22. package/errors/LoginError.js +9 -0
  23. package/errors/NotFoundError.js +9 -0
  24. package/errors/RequestError.js +9 -0
  25. package/errors/SystemCommError.js +9 -0
  26. package/errors/TokenExpiredError.js +9 -0
  27. package/errors/UnprocessableRequestError.js +9 -0
  28. package/errors/ValidationError.js +9 -0
  29. package/errors/index.js +15 -0
  30. package/events/Event.js +33 -0
  31. package/events/SystemCameraUpdatedEvent.js +17 -0
  32. package/events/SystemCourtesyUpdatedEvent.js +17 -0
  33. package/events/SystemDimmerUpdatedEvent.js +17 -0
  34. package/events/SystemLockUpdatedEvent.js +17 -0
  35. package/events/SystemReservationUpdatedEvent.js +17 -0
  36. package/events/SystemSceneControllerUpdatedEvent.js +17 -0
  37. package/events/SystemSourceUpdatedEvent.js +17 -0
  38. package/events/SystemSpaceUpdatedEvent.js +17 -0
  39. package/events/SystemSwitchUpdatedEvent.js +17 -0
  40. package/events/SystemThermostatUpdatedEvent.js +17 -0
  41. package/events/SystemUserUpdatedEvent.js +17 -0
  42. package/events/SystemWindowCoveringUpdatedEvent.js +17 -0
  43. package/events/index.js +28 -0
  44. package/http/handleResponseError.js +53 -0
  45. package/http/handleResponseSuccess.js +15 -0
  46. package/http/index.js +159 -0
  47. package/index.js +19 -2
  48. package/models/acl.js +29 -0
  49. package/models/admin/customer.js +28 -0
  50. package/models/admin/property.js +28 -0
  51. package/models/alarm.js +25 -3
  52. package/models/application.js +28 -0
  53. package/models/camera.js +29 -0
  54. package/models/courtesy.js +29 -3
  55. package/models/dimmer.js +45 -3
  56. package/models/discoveredDevice.js +30 -0
  57. package/models/gateway.js +33 -3
  58. package/models/index.js +38 -1
  59. package/models/integration.js +76 -0
  60. package/models/iotGateway.js +29 -0
  61. package/models/kohost.js +95 -0
  62. package/models/lock.js +29 -3
  63. package/models/mediaSource.js +29 -0
  64. package/models/motionSensor.js +29 -0
  65. package/models/reservation.js +36 -0
  66. package/models/room.js +185 -0
  67. package/models/scene.js +28 -0
  68. package/models/sceneController.js +24 -5
  69. package/models/space.js +99 -0
  70. package/models/switch.js +29 -3
  71. package/models/thermostat.js +71 -31
  72. package/models/ticket.js +91 -0
  73. package/models/user.js +58 -0
  74. package/models/windowCovering.js +44 -5
  75. package/package.json +27 -5
  76. package/prepare.js +4 -0
  77. package/schemas/acl.json +111 -0
  78. package/schemas/admin/customer.json +32 -0
  79. package/schemas/admin/property.json +54 -0
  80. package/schemas/alarm.json +5 -5
  81. package/schemas/application.json +24 -0
  82. package/schemas/camera.json +41 -0
  83. package/schemas/courtesy.json +5 -6
  84. package/schemas/definitions/common.json +21 -0
  85. package/schemas/definitions/device.json +21 -3
  86. package/schemas/dimmer.json +8 -5
  87. package/schemas/discoveredDevice.json +43 -0
  88. package/schemas/gateway.json +45 -13
  89. package/schemas/identification.json +35 -0
  90. package/schemas/integration.json +94 -0
  91. package/schemas/iotGateway.json +29 -0
  92. package/schemas/lock.json +8 -5
  93. package/schemas/mediaSource.json +151 -0
  94. package/schemas/motionSensor.json +26 -0
  95. package/schemas/payment.json +38 -0
  96. package/schemas/reservation.json +66 -0
  97. package/schemas/room.json +138 -0
  98. package/schemas/scene.json +118 -0
  99. package/schemas/sceneController.json +9 -9
  100. package/schemas/space.json +111 -0
  101. package/schemas/switch.json +8 -5
  102. package/schemas/thermostat.json +19 -10
  103. package/schemas/ticket.json +82 -0
  104. package/schemas/user.json +124 -0
  105. package/schemas/windowCovering.json +8 -5
  106. package/tests/unit/models/space.test.js +31 -0
  107. package/tests/unit/models/thermostat.test.js +146 -0
  108. package/useCases/http.json +902 -0
  109. package/utils/getDeviceTypes.js +7 -0
  110. package/utils/getFormalDeviceType.js +5 -0
  111. package/utils/schema.js +28 -0
  112. package/utils/compiler.js +0 -40
@@ -0,0 +1,54 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "https://api.kohost.app/schemas/v3/admin/property.json",
4
+ "title": "Property",
5
+ "type": "object",
6
+ "description": "A property is a physical asset or building",
7
+ "required": ["id", "name", "type"],
8
+ "properties": {
9
+ "id": {
10
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/common.json#/definitions/id"
11
+ },
12
+ "name": {
13
+ "type": "string"
14
+ },
15
+ "type": {
16
+ "type": "string",
17
+ "enum": ["hospitality", "education", "commercial"]
18
+ },
19
+ "timezone": {
20
+ "type": "string"
21
+ },
22
+ "address": {
23
+ "type": "object",
24
+ "properties": {
25
+ "street": {
26
+ "type": "string"
27
+ },
28
+ "city": {
29
+ "type": "string"
30
+ },
31
+ "state": {
32
+ "type": "string"
33
+ },
34
+ "zip": {
35
+ "type": "string"
36
+ },
37
+ "country": {
38
+ "type": "string"
39
+ }
40
+ }
41
+ },
42
+ "latitude": {
43
+ "type": "number"
44
+ },
45
+ "longitude": {
46
+ "type": "number"
47
+ },
48
+ "credentials": {
49
+ "type": "object",
50
+ "additionalProperties": true
51
+ },
52
+ "additionalProperties": false
53
+ }
54
+ }
@@ -6,19 +6,19 @@
6
6
  "type": "object",
7
7
  "properties": {
8
8
  "id": {
9
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/id"
9
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/id"
10
10
  },
11
11
  "type": {
12
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/type"
12
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/type"
13
13
  },
14
14
  "systemData": {
15
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/systemData"
15
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/systemData"
16
16
  },
17
17
  "supportedNotifications": {
18
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/supportedNotifications"
18
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/supportedNotifications"
19
19
  },
20
20
  "notification": {
21
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/notification"
21
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/notification"
22
22
  },
23
23
  "areas": {
24
24
  "type": "array",
@@ -0,0 +1,24 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "https://api.kohost.app/schemas/v3/application.json",
4
+ "title": "Application",
5
+ "type": "object",
6
+ "required": ["id", "active", "name", "publicKey", "hashedPrivateKey"],
7
+ "properties": {
8
+ "id": {
9
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/common.json#/definitions/id"
10
+ },
11
+ "active": {
12
+ "type": "boolean"
13
+ },
14
+ "name": {
15
+ "type": "string"
16
+ },
17
+ "publicKey": {
18
+ "type": "string"
19
+ },
20
+ "hashedPrivateKey": {
21
+ "type": "string"
22
+ }
23
+ }
24
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "https://api.kohost.app/schemas/v3/camera.json",
4
+ "title": "Camera",
5
+ "description": "Any smart camera",
6
+ "type": "object",
7
+ "properties": {
8
+ "id": {
9
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/id"
10
+ },
11
+ "type": {
12
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/type"
13
+ },
14
+ "systemData": {
15
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/systemData"
16
+ },
17
+ "supportedNotifications": {
18
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/supportedNotifications"
19
+ },
20
+ "notification": {
21
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/notification"
22
+ },
23
+ "streams": {
24
+ "type": "object",
25
+ "additionalProperties": false,
26
+ "properties": {
27
+ "origin": {
28
+ "type": ["string", "null"]
29
+ },
30
+ "local": {
31
+ "type": ["string", "null"]
32
+ },
33
+ "remote": {
34
+ "type": ["string", "null"]
35
+ }
36
+ }
37
+ }
38
+ },
39
+ "additionalProperties": false,
40
+ "required": ["id", "type", "systemData", "streams"]
41
+ }
@@ -4,22 +4,21 @@
4
4
  "title": "Courtesy",
5
5
  "description": "Any smart courtesy system",
6
6
  "type": "object",
7
- "allOf": [{ "$ref": "https://api.kohost.app/schemas/v3/device.json" }],
8
7
  "properties": {
9
8
  "id": {
10
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/id"
9
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/id"
11
10
  },
12
11
  "type": {
13
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/type"
12
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/type"
14
13
  },
15
14
  "systemData": {
16
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/systemData"
15
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/systemData"
17
16
  },
18
17
  "supportedNotifications": {
19
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/supportedNotifications"
18
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/supportedNotifications"
20
19
  },
21
20
  "notification": {
22
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/notification"
21
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/notification"
23
22
  },
24
23
  "supportedStates": {
25
24
  "type": "array",
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "https://api.kohost.app/schemas/v3/definitions/common.json",
4
+ "definitions": {
5
+ "id": {
6
+ "type": "string"
7
+ },
8
+ "systemData": {
9
+ "type": "object",
10
+ "default": {}
11
+ },
12
+ "createdAt": {
13
+ "type": ["string", "object"],
14
+ "format": "date-time"
15
+ },
16
+ "updatedAt": {
17
+ "type": ["string", "object"],
18
+ "format": "date-time"
19
+ }
20
+ }
21
+ }
@@ -1,16 +1,34 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema",
3
- "$id": "https://api.kohost.app/schemas/v3/device.json",
3
+ "$id": "https://api.kohost.app/schemas/v3/definitions/device.json",
4
4
  "definitions": {
5
5
  "id": {
6
- "type": "string"
6
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/common.json#/definitions/id"
7
7
  },
8
8
  "systemData": {
9
- "type": "object"
9
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/common.json#/definitions/systemData"
10
10
  },
11
11
  "type": {
12
+ "type": "string",
13
+ "enum": [
14
+ "dimmer",
15
+ "switch",
16
+ "motionSensor",
17
+ "windowCovering",
18
+ "camera",
19
+ "mediaSource",
20
+ "thermostat",
21
+ "lock",
22
+ "courtesy",
23
+ "sceneController"
24
+ ]
25
+ },
26
+ "name": {
12
27
  "type": "string"
13
28
  },
29
+ "subType": {
30
+ "type": ["string", "null"]
31
+ },
14
32
  "supportedNotifications": {
15
33
  "type": "array",
16
34
  "uniqueItems": true,
@@ -6,19 +6,22 @@
6
6
  "type": "object",
7
7
  "properties": {
8
8
  "id": {
9
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/id"
9
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/id"
10
10
  },
11
11
  "type": {
12
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/type"
12
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/type"
13
+ },
14
+ "subType": {
15
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/subType"
13
16
  },
14
17
  "systemData": {
15
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/systemData"
18
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/systemData"
16
19
  },
17
20
  "supportedNotifications": {
18
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/supportedNotifications"
21
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/supportedNotifications"
19
22
  },
20
23
  "notification": {
21
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/notification"
24
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/notification"
22
25
  },
23
26
  "level": {
24
27
  "type": "number",
@@ -0,0 +1,43 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "https://api.kohost.app/schemas/v3/discoveredDevice.json",
4
+ "title": "Discovered Device",
5
+ "description": "A device that has been discovered by Kohost, but not yet added to the Kohost system.",
6
+ "type": "object",
7
+ "required": ["name", "deviceId", "driver", "deviceData"],
8
+ "properties": {
9
+ "id": {
10
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/common.json#/definitions/id"
11
+ },
12
+ "name": {
13
+ "type": "string"
14
+ },
15
+ "deviceId": {
16
+ "type": "string"
17
+ },
18
+ "type": {
19
+ "type": "string",
20
+ "enum": [
21
+ "dimmer",
22
+ "switch",
23
+ "motionSensor",
24
+ "thermostat",
25
+ "lock",
26
+ "camera",
27
+ "courtesy",
28
+ "source",
29
+ "alarm",
30
+ "windowCovering"
31
+ ]
32
+ },
33
+ "driver": {
34
+ "type": "string"
35
+ },
36
+ "integrationId": {
37
+ "type": "string"
38
+ },
39
+ "deviceData": {
40
+ "type": "object"
41
+ }
42
+ }
43
+ }
@@ -2,28 +2,60 @@
2
2
  "$schema": "http://json-schema.org/draft-07/schema",
3
3
  "$id": "https://api.kohost.app/schemas/v3/gateway.json",
4
4
  "title": "Gateway",
5
- "description": "Any smart gateway",
5
+ "description": "Any Kohost gateway",
6
6
  "type": "object",
7
7
  "properties": {
8
8
  "id": {
9
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/id"
9
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/common.json#/definitions/id"
10
10
  },
11
- "type": {
12
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/type"
11
+ "name": {
12
+ "type": "string"
13
13
  },
14
- "systemData": {
15
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/systemData"
14
+ "hashedAuthKey": {
15
+ "type": "string"
16
16
  },
17
- "supportedNotifications": {
18
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/supportedNotifications"
17
+ "integrations": {
18
+ "type": "array",
19
+ "items": {
20
+ "oneOf": [
21
+ {
22
+ "$ref": "https://api.kohost.app/schemas/v3/integration.json"
23
+ },
24
+ {
25
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/common.json#/definitions/id"
26
+ }
27
+ ]
28
+ },
29
+ "default": []
19
30
  },
20
- "notification": {
21
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/notification"
31
+ "health": {
32
+ "type": "object",
33
+ "properties": {
34
+ "upSince": {
35
+ "type": "string",
36
+ "format": "date-time"
37
+ },
38
+ "lastSeen": {
39
+ "type": "string",
40
+ "format": "date-time"
41
+ }
42
+ },
43
+ "additionalProperties": false
22
44
  },
23
- "status": {
24
- "type": "string"
45
+ "roles": {
46
+ "type": "array",
47
+ "items": {
48
+ "type": "string"
49
+ },
50
+ "default": ["Gateway"]
51
+ },
52
+ "createdAt": {
53
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/common.json#/definitions/createdAt"
54
+ },
55
+ "updatedAt": {
56
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/common.json#/definitions/updatedAt"
25
57
  }
26
58
  },
27
59
  "additionalProperties": false,
28
- "required": ["id", "type", "systemData", "status"]
60
+ "required": ["id", "name", "hashedAuthKey", "integrations", "health"]
29
61
  }
@@ -0,0 +1,35 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "https://api.kohost.app/schemas/v3/identification.json",
4
+ "title": "Identification",
5
+ "type": "object",
6
+ "required": ["type", "number", "expires", "issuingCountry"],
7
+ "properties": {
8
+ "id": {
9
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/common.json#/definitions/id"
10
+ },
11
+ "type": {
12
+ "type": "string",
13
+ "enum": ["driversLicense", "passport", "identityCard"]
14
+ },
15
+ "number": {
16
+ "string": "string"
17
+ },
18
+ "issued": {
19
+ "string": "string",
20
+ "format": "date-time"
21
+ },
22
+ "expires": {
23
+ "string": "string",
24
+ "format": "date-time"
25
+ },
26
+ "issuingCountry": {
27
+ "string": "string",
28
+ "minLength": 2,
29
+ "maxLength": 2
30
+ },
31
+ "systemData": {
32
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/common.json#/definitions/systemData"
33
+ }
34
+ }
35
+ }
@@ -0,0 +1,94 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "https://api.kohost.app/schemas/v3/integration.json",
4
+ "title": "Integration",
5
+ "description": "Integration configuration",
6
+ "type": "object",
7
+ "properties": {
8
+ "id": {
9
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/common.json#/definitions/id"
10
+ },
11
+ "driver": {
12
+ "type": "string",
13
+ "description": "Driver to use for this integration",
14
+ "enum": [
15
+ "aws-kinesis",
16
+ "crestron",
17
+ "igor",
18
+ "lirc",
19
+ "pelican-wireless",
20
+ "salto",
21
+ "se",
22
+ "mews",
23
+ "operaCloud",
24
+ "stay-n-touch"
25
+ ]
26
+ },
27
+ "driverVersion": {
28
+ "type": "string",
29
+ "description": "Version of the driver to use for this integration",
30
+ "default": "latest"
31
+ },
32
+ "config": {
33
+ "type": "object",
34
+ "default": {}
35
+ },
36
+ "data": {
37
+ "type": "object",
38
+ "default": {},
39
+ "description": "Data to be used by the driver",
40
+ "additionalProperties": true,
41
+ "properties": {
42
+ "deviceMap": {
43
+ "type": "object",
44
+ "description": "Map of kohost device IDs to device names",
45
+ "additionalProperties": false,
46
+ "patternProperties": {
47
+ "^[a-zA-Z0-9]{8}$": {
48
+ "type": "object",
49
+ "additionalProperties": false,
50
+ "required": ["id", "type", "roomId"],
51
+ "properties": {
52
+ "id": {
53
+ "type": "string",
54
+ "description": "Driver device id"
55
+ },
56
+ "type": {
57
+ "type": "string",
58
+ "description": "Driver device type"
59
+ },
60
+ "roomId": {
61
+ "type": "string",
62
+ "description": "Kohost room id"
63
+ }
64
+ }
65
+ }
66
+ }
67
+ }
68
+ }
69
+ },
70
+ "health": {
71
+ "type": "object",
72
+ "properties": {
73
+ "upSince": {
74
+ "type": "string",
75
+ "format": "date-time"
76
+ },
77
+ "lastSeen": {
78
+ "type": "string",
79
+ "format": "date-time"
80
+ }
81
+ },
82
+ "default": {},
83
+ "additionalProperties": false
84
+ },
85
+ "createdAt": {
86
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/common.json#/definitions/createdAt"
87
+ },
88
+ "updatedAt": {
89
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/common.json#/definitions/updatedAt"
90
+ }
91
+ },
92
+ "additionalProperties": false,
93
+ "required": ["id", "driver", "driverVersion", "config", "health", "data"]
94
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "https://api.kohost.app/schemas/v3/iotGateway.json",
4
+ "title": "IoT Gateway",
5
+ "description": "Any smart gateway that is an entrypoint for controlling devices",
6
+ "type": "object",
7
+ "properties": {
8
+ "id": {
9
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/id"
10
+ },
11
+ "type": {
12
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/type"
13
+ },
14
+ "systemData": {
15
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/systemData"
16
+ },
17
+ "supportedNotifications": {
18
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/supportedNotifications"
19
+ },
20
+ "notification": {
21
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/notification"
22
+ },
23
+ "status": {
24
+ "type": "string"
25
+ }
26
+ },
27
+ "additionalProperties": false,
28
+ "required": ["id", "type", "systemData", "status"]
29
+ }
package/schemas/lock.json CHANGED
@@ -6,19 +6,22 @@
6
6
  "type": "object",
7
7
  "properties": {
8
8
  "id": {
9
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/id"
9
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/id"
10
10
  },
11
11
  "type": {
12
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/type"
12
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/type"
13
+ },
14
+ "subType": {
15
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/subType"
13
16
  },
14
17
  "systemData": {
15
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/systemData"
18
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/systemData"
16
19
  },
17
20
  "supportedNotifications": {
18
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/supportedNotifications"
21
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/supportedNotifications"
19
22
  },
20
23
  "notification": {
21
- "$ref": "https://api.kohost.app/schemas/v3/device.json#/definitions/notification"
24
+ "$ref": "https://api.kohost.app/schemas/v3/definitions/device.json#/definitions/notification"
22
25
  },
23
26
  "state": {
24
27
  "type": "string",