@seamapi/types 1.23.0 → 1.23.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/devicedb.cjs +17 -3
- package/dist/devicedb.cjs.map +1 -1
- package/dist/devicedb.d.cts +200 -26
- package/lib/seam/devicedb/public-models/device-model-v1.d.ts +171 -20
- package/lib/seam/devicedb/public-models/device-model-v1.js +16 -2
- package/lib/seam/devicedb/public-models/device-model-v1.js.map +1 -1
- package/lib/seam/devicedb/route-types.d.ts +28 -6
- package/package.json +1 -1
- package/src/lib/seam/devicedb/public-models/device-model-v1.ts +20 -2
- package/src/lib/seam/devicedb/route-types.ts +32 -4
package/dist/devicedb.cjs
CHANGED
|
@@ -53,7 +53,8 @@ var smartlock = zod.z.object({
|
|
|
53
53
|
"lockbox",
|
|
54
54
|
"cylinder",
|
|
55
55
|
"padlock",
|
|
56
|
-
"locker"
|
|
56
|
+
"locker",
|
|
57
|
+
"unknown"
|
|
57
58
|
]),
|
|
58
59
|
has_physical_key: zod.z.boolean(),
|
|
59
60
|
has_camera: zod.z.boolean()
|
|
@@ -92,9 +93,22 @@ var thermostat = zod.z.object({
|
|
|
92
93
|
var relay = zod.z.object({
|
|
93
94
|
main_category: zod.z.literal("relay")
|
|
94
95
|
});
|
|
96
|
+
var intercom = zod.z.object({
|
|
97
|
+
main_category: zod.z.literal("intercom"),
|
|
98
|
+
physical_properties: zod.z.object({
|
|
99
|
+
has_camera: zod.z.boolean()
|
|
100
|
+
}),
|
|
101
|
+
software_features: zod.z.object({
|
|
102
|
+
can_remotely_unlock: zod.z.boolean(),
|
|
103
|
+
can_program_access_codes: zod.z.boolean()
|
|
104
|
+
})
|
|
105
|
+
});
|
|
106
|
+
var accessory = zod.z.object({
|
|
107
|
+
main_category: zod.z.literal("accessory")
|
|
108
|
+
});
|
|
95
109
|
var device_model_category_specific_properties = zod.z.discriminatedUnion(
|
|
96
110
|
"main_category",
|
|
97
|
-
[smartlock, sensor, thermostat, relay]
|
|
111
|
+
[smartlock, sensor, thermostat, relay, intercom, accessory]
|
|
98
112
|
);
|
|
99
113
|
var base_device_model_v1 = zod.z.object({
|
|
100
114
|
device_model_id: zod.z.string().uuid(),
|
|
@@ -108,7 +122,7 @@ var base_device_model_v1 = zod.z.object({
|
|
|
108
122
|
slug: zod.z.string(),
|
|
109
123
|
display_name: zod.z.string(),
|
|
110
124
|
primary_color_hex: zod.z.string().optional(),
|
|
111
|
-
manufacturer_sku: zod.z.string(),
|
|
125
|
+
manufacturer_sku: zod.z.string().optional(),
|
|
112
126
|
front_image: image_reference.optional(),
|
|
113
127
|
back_image: image_reference.optional()
|
|
114
128
|
}).array(),
|
package/dist/devicedb.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/seam/devicedb/public-models/index.ts","../src/lib/seam/devicedb/public-models/device-model-v0.ts","../src/lib/seam/devicedb/public-models/device-model-v1.ts","../src/lib/seam/devicedb/public-models/image-reference.ts","../src/lib/seam/devicedb/public-models/manufacturer.ts"],"names":["z"],"mappings":";;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,SAAS,SAAS;AAEX,IAAM,kBAAkB,EAAE,OAAO;AAAA,EACtC,eAAe,EAAE,OAAO;AAAA,EACxB,YAAY,EAAE,OAAO;AAAA,EACrB,uBAAuB,EAAE,OAAO;AAAA,EAChC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,SAAS,UAAU,SAAS,CAAC;AAAA,EAC9D,eAAe,EAAE,KAAK,CAAC,QAAQ,QAAQ,aAAa,CAAC;AAAA,EACrD,OAAO,EAAE,OAAO;AAAA,EAChB,UAAU,EAAE,OAAO;AAAA,EACnB,4BAA4B,EAAE,OAAO;AACvC,CAAC;;;ACXD,SAAS,KAAAA,UAAS;;;ACAlB,SAAS,KAAAA,UAAS;AAEX,IAAM,kBAAkBA,GAAE,OAAO;AAAA,EACtC,KAAKA,GAAE,OAAO,EAAE,IAAI;AAAA,EACpB,OAAOA,GAAE,OAAO;AAAA,EAChB,QAAQA,GAAE,OAAO;AACnB,CAAC;;;ACND,SAAS,KAAAA,UAAS;AAIX,IAAM,eAAeA,GAAE,OAAO;AAAA,EACnC,iBAAiBA,GAAE,OAAO,EAAE,KAAK;AAAA,EACjC,cAAcA,GAAE,OAAO;AAAA,EACvB,MAAM,gBAAgB,SAAS;AAAA,EAC/B,aAAaA,GAAE,KAAK,CAAC,UAAU,QAAQ,WAAW,eAAe,SAAS,CAAC;AAAA,EAC3E,8BAA8BA,GAAE,QAAQ;AAAA,EACxC,sCAAsCA,GAAE,QAAQ;AAClD,CAAC;;;AFND,IAAM,YAAYA,GAAE,OAAO;AAAA,EACzB,eAAeA,GAAE,QAAQ,WAAW;AAAA,EACpC,qBAAqBA,GAAE,OAAO;AAAA,IAC5B,WAAWA,GAAE,KAAK;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACD,kBAAkBA,GAAE,QAAQ;AAAA,IAC5B,YAAYA,GAAE,QAAQ;AAAA,EACxB,CAAC;AAAA,EACD,mBAAmBA,GAAE,OAAO;AAAA,IAC1B,qBAAqBA,GAAE,QAAQ;AAAA,IAC/B,0BAA0BA,GAAE,QAAQ;AAAA,IACpC,8BAA8BA,GAAE,QAAQ;AAAA,IACxC,kCAAkCA,GAAE,QAAQ;AAAA,EAC9C,CAAC;AACH,CAAC;AAED,IAAM,SAASA,GAAE,OAAO;AAAA,EACtB,eAAeA,GAAE,QAAQ,QAAQ;AAAA,EACjC,qBAAqBA,GAAE,OAAO;AAAA,IAC5B,kBAAkBA,GAAE,QAAQ;AAAA,IAC5B,qBAAqBA,GAAE,QAAQ;AAAA,IAC/B,wBAAwBA,GAAE,QAAQ;AAAA,IAClC,yBAAyBA,GAAE,QAAQ;AAAA,EACrC,CAAC;AACH,CAAC;AAED,IAAM,aAAaA,GAAE,OAAO;AAAA,EAC1B,eAAeA,GAAE,QAAQ,YAAY;AAAA,EACrC,qBAAqBA,GAAE,OAAO;AAAA,IAC5B,iBAAiBA,GAAE,KAAK,CAAC,QAAQ,QAAQ,OAAO,KAAK,CAAC,EAAE,MAAM;AAAA,IAC9D,yBAAyBA,GAAE,QAAQ;AAAA,IACnC,yBAAyBA,GAAE,QAAQ;AAAA,IACnC,0BAA0BA,GAAE,QAAQ;AAAA,IACpC,qBAAqBA,GAAE,QAAQ;AAAA,IAC/B,wBAAwBA,GAAE,QAAQ;AAAA,IAClC,iCAAiCA,GAAE,QAAQ;AAAA,EAC7C,CAAC;AAAA,EACD,mBAAmBA,GAAE,OAAO;AAAA,IAC1B,+BAA+BA,GAAE,QAAQ;AAAA,EAC3C,CAAC;AACH,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/lib/seam/devicedb/public-models/index.ts","../src/lib/seam/devicedb/public-models/device-model-v0.ts","../src/lib/seam/devicedb/public-models/device-model-v1.ts","../src/lib/seam/devicedb/public-models/image-reference.ts","../src/lib/seam/devicedb/public-models/manufacturer.ts"],"names":["z"],"mappings":";;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,SAAS,SAAS;AAEX,IAAM,kBAAkB,EAAE,OAAO;AAAA,EACtC,eAAe,EAAE,OAAO;AAAA,EACxB,YAAY,EAAE,OAAO;AAAA,EACrB,uBAAuB,EAAE,OAAO;AAAA,EAChC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,SAAS,UAAU,SAAS,CAAC;AAAA,EAC9D,eAAe,EAAE,KAAK,CAAC,QAAQ,QAAQ,aAAa,CAAC;AAAA,EACrD,OAAO,EAAE,OAAO;AAAA,EAChB,UAAU,EAAE,OAAO;AAAA,EACnB,4BAA4B,EAAE,OAAO;AACvC,CAAC;;;ACXD,SAAS,KAAAA,UAAS;;;ACAlB,SAAS,KAAAA,UAAS;AAEX,IAAM,kBAAkBA,GAAE,OAAO;AAAA,EACtC,KAAKA,GAAE,OAAO,EAAE,IAAI;AAAA,EACpB,OAAOA,GAAE,OAAO;AAAA,EAChB,QAAQA,GAAE,OAAO;AACnB,CAAC;;;ACND,SAAS,KAAAA,UAAS;AAIX,IAAM,eAAeA,GAAE,OAAO;AAAA,EACnC,iBAAiBA,GAAE,OAAO,EAAE,KAAK;AAAA,EACjC,cAAcA,GAAE,OAAO;AAAA,EACvB,MAAM,gBAAgB,SAAS;AAAA,EAC/B,aAAaA,GAAE,KAAK,CAAC,UAAU,QAAQ,WAAW,eAAe,SAAS,CAAC;AAAA,EAC3E,8BAA8BA,GAAE,QAAQ;AAAA,EACxC,sCAAsCA,GAAE,QAAQ;AAClD,CAAC;;;AFND,IAAM,YAAYA,GAAE,OAAO;AAAA,EACzB,eAAeA,GAAE,QAAQ,WAAW;AAAA,EACpC,qBAAqBA,GAAE,OAAO;AAAA,IAC5B,WAAWA,GAAE,KAAK;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACD,kBAAkBA,GAAE,QAAQ;AAAA,IAC5B,YAAYA,GAAE,QAAQ;AAAA,EACxB,CAAC;AAAA,EACD,mBAAmBA,GAAE,OAAO;AAAA,IAC1B,qBAAqBA,GAAE,QAAQ;AAAA,IAC/B,0BAA0BA,GAAE,QAAQ;AAAA,IACpC,8BAA8BA,GAAE,QAAQ;AAAA,IACxC,kCAAkCA,GAAE,QAAQ;AAAA,EAC9C,CAAC;AACH,CAAC;AAED,IAAM,SAASA,GAAE,OAAO;AAAA,EACtB,eAAeA,GAAE,QAAQ,QAAQ;AAAA,EACjC,qBAAqBA,GAAE,OAAO;AAAA,IAC5B,kBAAkBA,GAAE,QAAQ;AAAA,IAC5B,qBAAqBA,GAAE,QAAQ;AAAA,IAC/B,wBAAwBA,GAAE,QAAQ;AAAA,IAClC,yBAAyBA,GAAE,QAAQ;AAAA,EACrC,CAAC;AACH,CAAC;AAED,IAAM,aAAaA,GAAE,OAAO;AAAA,EAC1B,eAAeA,GAAE,QAAQ,YAAY;AAAA,EACrC,qBAAqBA,GAAE,OAAO;AAAA,IAC5B,iBAAiBA,GAAE,KAAK,CAAC,QAAQ,QAAQ,OAAO,KAAK,CAAC,EAAE,MAAM;AAAA,IAC9D,yBAAyBA,GAAE,QAAQ;AAAA,IACnC,yBAAyBA,GAAE,QAAQ;AAAA,IACnC,0BAA0BA,GAAE,QAAQ;AAAA,IACpC,qBAAqBA,GAAE,QAAQ;AAAA,IAC/B,wBAAwBA,GAAE,QAAQ;AAAA,IAClC,iCAAiCA,GAAE,QAAQ;AAAA,EAC7C,CAAC;AAAA,EACD,mBAAmBA,GAAE,OAAO;AAAA,IAC1B,+BAA+BA,GAAE,QAAQ;AAAA,EAC3C,CAAC;AACH,CAAC;AAID,IAAM,QAAQA,GAAE,OAAO;AAAA,EACrB,eAAeA,GAAE,QAAQ,OAAO;AAClC,CAAC;AAED,IAAM,WAAWA,GAAE,OAAO;AAAA,EACxB,eAAeA,GAAE,QAAQ,UAAU;AAAA,EACnC,qBAAqBA,GAAE,OAAO;AAAA,IAC5B,YAAYA,GAAE,QAAQ;AAAA,EACxB,CAAC;AAAA,EACD,mBAAmBA,GAAE,OAAO;AAAA,IAC1B,qBAAqBA,GAAE,QAAQ;AAAA,IAC/B,0BAA0BA,GAAE,QAAQ;AAAA,EACtC,CAAC;AACH,CAAC;AAED,IAAM,YAAYA,GAAE,OAAO;AAAA,EACzB,eAAeA,GAAE,QAAQ,WAAW;AACtC,CAAC;AAEM,IAAM,4CAA4CA,GAAE;AAAA,EACzD;AAAA,EACA,CAAC,WAAW,QAAQ,YAAY,OAAO,UAAU,SAAS;AAC5D;AAEO,IAAM,uBAAuBA,GAAE,OAAO;AAAA,EAC3C,iBAAiBA,GAAE,OAAO,EAAE,KAAK;AAAA,EACjC;AAAA,EACA,qBAAqBA,GAAE,QAAQ;AAAA,EAC/B,cAAcA,GAAE,OAAO;AAAA,EACvB,aAAaA,GAAE,OAAO;AAAA,EACtB,aAAaA,GAAE,OAAO,EAAE,SAAS;AAAA,EACjC,sBAAsBA,GAAE,KAAK,CAAC,QAAQ,SAAS,UAAU,SAAS,CAAC;AAAA,EACnE,oBAAoBA,GACjB,OAAO;AAAA,IACN,MAAMA,GAAE,OAAO;AAAA,IACf,cAAcA,GAAE,OAAO;AAAA,IACvB,mBAAmBA,GAAE,OAAO,EAAE,SAAS;AAAA,IACvC,kBAAkBA,GAAE,OAAO,EAAE,SAAS;AAAA,IACtC,aAAa,gBAAgB,SAAS;AAAA,IACtC,YAAY,gBAAgB,SAAS;AAAA,EACvC,CAAC,EACA,MAAM;AAAA,EACT,eAAeA,GACZ,KAAK;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC,EACA,MAAM;AACX,CAAC;AAIM,IAAM,kBAAkB,qBAAqB;AAAA,EAClD;AACF","sourcesContent":["export * from './device-model-v0.js'\nexport * from './device-model-v1.js'\nexport * from './image-reference.js'\nexport * from './manufacturer.js'\n","import { z } from 'zod'\n\nexport const device_model_v0 = z.object({\n main_category: z.string(),\n model_name: z.string(),\n manufacturer_model_id: z.string(),\n connection_type: z.enum(['wifi', 'zwave', 'zigbee', 'unknown']),\n support_level: z.enum(['live', 'beta', 'unsupported']),\n brand: z.string(),\n icon_url: z.string(),\n seam_device_model_page_url: z.string(),\n})\n\nexport type DeviceModelV0 = z.infer<typeof device_model_v0>\n","import { z } from 'zod'\n\nimport { image_reference } from './image-reference.js'\nimport { manufacturer } from './manufacturer.js'\n\nconst smartlock = z.object({\n main_category: z.literal('smartlock'),\n physical_properties: z.object({\n lock_type: z.enum([\n 'deadbolt',\n 'lever',\n 'mortise',\n 'lockbox',\n 'cylinder',\n 'padlock',\n 'locker',\n 'unknown',\n ]),\n has_physical_key: z.boolean(),\n has_camera: z.boolean(),\n }),\n software_features: z.object({\n can_remotely_unlock: z.boolean(),\n can_program_access_codes: z.boolean(),\n can_program_access_schedules: z.boolean(),\n can_program_access_codes_offline: z.boolean(),\n }),\n})\n\nconst sensor = z.object({\n main_category: z.literal('sensor'),\n physical_properties: z.object({\n has_noise_sensor: z.boolean(),\n has_humidity_sensor: z.boolean(),\n has_temperature_sensor: z.boolean(),\n has_occupancy_detection: z.boolean(),\n }),\n})\n\nconst thermostat = z.object({\n main_category: z.literal('thermostat'),\n physical_properties: z.object({\n available_modes: z.enum(['heat', 'cool', 'fan', 'eco']).array(),\n is_heat_pump_compatible: z.boolean(),\n has_occupancy_detection: z.boolean(),\n supports_demand_response: z.boolean(),\n has_humidity_sensor: z.boolean(),\n has_temperature_sensor: z.boolean(),\n supports_emergency_heating_mode: z.boolean(),\n }),\n software_features: z.object({\n can_program_climate_schedules: z.boolean(),\n }),\n})\n\nexport type ThermostatPropertiesV1 = z.infer<typeof thermostat>\n\nconst relay = z.object({\n main_category: z.literal('relay'),\n})\n\nconst intercom = z.object({\n main_category: z.literal('intercom'),\n physical_properties: z.object({\n has_camera: z.boolean(),\n }),\n software_features: z.object({\n can_remotely_unlock: z.boolean(),\n can_program_access_codes: z.boolean(),\n }),\n})\n\nconst accessory = z.object({\n main_category: z.literal('accessory'),\n})\n\nexport const device_model_category_specific_properties = z.discriminatedUnion(\n 'main_category',\n [smartlock, sensor, thermostat, relay, intercom, accessory],\n)\n\nexport const base_device_model_v1 = z.object({\n device_model_id: z.string().uuid(),\n manufacturer,\n is_device_supported: z.boolean(),\n display_name: z.string(),\n description: z.string(),\n product_url: z.string().optional(),\n main_connection_type: z.enum(['wifi', 'zwave', 'zigbee', 'unknown']),\n aesthetic_variants: z\n .object({\n slug: z.string(),\n display_name: z.string(),\n primary_color_hex: z.string().optional(),\n manufacturer_sku: z.string().optional(),\n front_image: image_reference.optional(),\n back_image: image_reference.optional(),\n })\n .array(),\n power_sources: z\n .enum([\n 'battery',\n 'hardwired',\n 'mechanical_harvesting',\n 'wireless',\n 'ethernet',\n ])\n .array(),\n})\n\nexport type BaseDeviceModelV1 = z.infer<typeof base_device_model_v1>\n\nexport const device_model_v1 = base_device_model_v1.and(\n device_model_category_specific_properties,\n)\n\nexport type DeviceModelV1 = z.infer<typeof device_model_v1>\n","import { z } from 'zod'\n\nexport const image_reference = z.object({\n url: z.string().url(),\n width: z.number(),\n height: z.number(),\n})\n\nexport type ImageReference = z.infer<typeof image_reference>\n","import { z } from 'zod'\n\nimport { image_reference } from './image-reference.js'\n\nexport const manufacturer = z.object({\n manufacturer_id: z.string().uuid(),\n display_name: z.string(),\n logo: image_reference.optional(),\n integration: z.enum(['stable', 'beta', 'planned', 'unsupported', 'inquire']),\n is_connect_webview_supported: z.boolean(),\n requires_seam_support_to_add_account: z.boolean(),\n})\n\nexport type Manufacturer = z.infer<typeof manufacturer>\n"]}
|
package/dist/devicedb.d.cts
CHANGED
|
@@ -30,18 +30,82 @@ declare const device_model_v0: z.ZodObject<{
|
|
|
30
30
|
}>;
|
|
31
31
|
type DeviceModelV0 = z.infer<typeof device_model_v0>;
|
|
32
32
|
|
|
33
|
+
declare const thermostat: z.ZodObject<{
|
|
34
|
+
main_category: z.ZodLiteral<"thermostat">;
|
|
35
|
+
physical_properties: z.ZodObject<{
|
|
36
|
+
available_modes: z.ZodArray<z.ZodEnum<["heat", "cool", "fan", "eco"]>, "many">;
|
|
37
|
+
is_heat_pump_compatible: z.ZodBoolean;
|
|
38
|
+
has_occupancy_detection: z.ZodBoolean;
|
|
39
|
+
supports_demand_response: z.ZodBoolean;
|
|
40
|
+
has_humidity_sensor: z.ZodBoolean;
|
|
41
|
+
has_temperature_sensor: z.ZodBoolean;
|
|
42
|
+
supports_emergency_heating_mode: z.ZodBoolean;
|
|
43
|
+
}, "strip", z.ZodTypeAny, {
|
|
44
|
+
has_humidity_sensor: boolean;
|
|
45
|
+
has_temperature_sensor: boolean;
|
|
46
|
+
has_occupancy_detection: boolean;
|
|
47
|
+
available_modes: ("heat" | "cool" | "fan" | "eco")[];
|
|
48
|
+
is_heat_pump_compatible: boolean;
|
|
49
|
+
supports_demand_response: boolean;
|
|
50
|
+
supports_emergency_heating_mode: boolean;
|
|
51
|
+
}, {
|
|
52
|
+
has_humidity_sensor: boolean;
|
|
53
|
+
has_temperature_sensor: boolean;
|
|
54
|
+
has_occupancy_detection: boolean;
|
|
55
|
+
available_modes: ("heat" | "cool" | "fan" | "eco")[];
|
|
56
|
+
is_heat_pump_compatible: boolean;
|
|
57
|
+
supports_demand_response: boolean;
|
|
58
|
+
supports_emergency_heating_mode: boolean;
|
|
59
|
+
}>;
|
|
60
|
+
software_features: z.ZodObject<{
|
|
61
|
+
can_program_climate_schedules: z.ZodBoolean;
|
|
62
|
+
}, "strip", z.ZodTypeAny, {
|
|
63
|
+
can_program_climate_schedules: boolean;
|
|
64
|
+
}, {
|
|
65
|
+
can_program_climate_schedules: boolean;
|
|
66
|
+
}>;
|
|
67
|
+
}, "strip", z.ZodTypeAny, {
|
|
68
|
+
main_category: "thermostat";
|
|
69
|
+
physical_properties: {
|
|
70
|
+
has_humidity_sensor: boolean;
|
|
71
|
+
has_temperature_sensor: boolean;
|
|
72
|
+
has_occupancy_detection: boolean;
|
|
73
|
+
available_modes: ("heat" | "cool" | "fan" | "eco")[];
|
|
74
|
+
is_heat_pump_compatible: boolean;
|
|
75
|
+
supports_demand_response: boolean;
|
|
76
|
+
supports_emergency_heating_mode: boolean;
|
|
77
|
+
};
|
|
78
|
+
software_features: {
|
|
79
|
+
can_program_climate_schedules: boolean;
|
|
80
|
+
};
|
|
81
|
+
}, {
|
|
82
|
+
main_category: "thermostat";
|
|
83
|
+
physical_properties: {
|
|
84
|
+
has_humidity_sensor: boolean;
|
|
85
|
+
has_temperature_sensor: boolean;
|
|
86
|
+
has_occupancy_detection: boolean;
|
|
87
|
+
available_modes: ("heat" | "cool" | "fan" | "eco")[];
|
|
88
|
+
is_heat_pump_compatible: boolean;
|
|
89
|
+
supports_demand_response: boolean;
|
|
90
|
+
supports_emergency_heating_mode: boolean;
|
|
91
|
+
};
|
|
92
|
+
software_features: {
|
|
93
|
+
can_program_climate_schedules: boolean;
|
|
94
|
+
};
|
|
95
|
+
}>;
|
|
96
|
+
type ThermostatPropertiesV1 = z.infer<typeof thermostat>;
|
|
33
97
|
declare const device_model_category_specific_properties: z.ZodDiscriminatedUnion<"main_category", [z.ZodObject<{
|
|
34
98
|
main_category: z.ZodLiteral<"smartlock">;
|
|
35
99
|
physical_properties: z.ZodObject<{
|
|
36
|
-
lock_type: z.ZodEnum<["deadbolt", "lever", "mortise", "lockbox", "cylinder", "padlock", "locker"]>;
|
|
100
|
+
lock_type: z.ZodEnum<["deadbolt", "lever", "mortise", "lockbox", "cylinder", "padlock", "locker", "unknown"]>;
|
|
37
101
|
has_physical_key: z.ZodBoolean;
|
|
38
102
|
has_camera: z.ZodBoolean;
|
|
39
103
|
}, "strip", z.ZodTypeAny, {
|
|
40
|
-
lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
104
|
+
lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
41
105
|
has_physical_key: boolean;
|
|
42
106
|
has_camera: boolean;
|
|
43
107
|
}, {
|
|
44
|
-
lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
108
|
+
lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
45
109
|
has_physical_key: boolean;
|
|
46
110
|
has_camera: boolean;
|
|
47
111
|
}>;
|
|
@@ -64,7 +128,7 @@ declare const device_model_category_specific_properties: z.ZodDiscriminatedUnion
|
|
|
64
128
|
}, "strip", z.ZodTypeAny, {
|
|
65
129
|
main_category: "smartlock";
|
|
66
130
|
physical_properties: {
|
|
67
|
-
lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
131
|
+
lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
68
132
|
has_physical_key: boolean;
|
|
69
133
|
has_camera: boolean;
|
|
70
134
|
};
|
|
@@ -77,7 +141,7 @@ declare const device_model_category_specific_properties: z.ZodDiscriminatedUnion
|
|
|
77
141
|
}, {
|
|
78
142
|
main_category: "smartlock";
|
|
79
143
|
physical_properties: {
|
|
80
|
-
lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
144
|
+
lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
81
145
|
has_physical_key: boolean;
|
|
82
146
|
has_camera: boolean;
|
|
83
147
|
};
|
|
@@ -189,6 +253,49 @@ declare const device_model_category_specific_properties: z.ZodDiscriminatedUnion
|
|
|
189
253
|
main_category: "relay";
|
|
190
254
|
}, {
|
|
191
255
|
main_category: "relay";
|
|
256
|
+
}>, z.ZodObject<{
|
|
257
|
+
main_category: z.ZodLiteral<"intercom">;
|
|
258
|
+
physical_properties: z.ZodObject<{
|
|
259
|
+
has_camera: z.ZodBoolean;
|
|
260
|
+
}, "strip", z.ZodTypeAny, {
|
|
261
|
+
has_camera: boolean;
|
|
262
|
+
}, {
|
|
263
|
+
has_camera: boolean;
|
|
264
|
+
}>;
|
|
265
|
+
software_features: z.ZodObject<{
|
|
266
|
+
can_remotely_unlock: z.ZodBoolean;
|
|
267
|
+
can_program_access_codes: z.ZodBoolean;
|
|
268
|
+
}, "strip", z.ZodTypeAny, {
|
|
269
|
+
can_remotely_unlock: boolean;
|
|
270
|
+
can_program_access_codes: boolean;
|
|
271
|
+
}, {
|
|
272
|
+
can_remotely_unlock: boolean;
|
|
273
|
+
can_program_access_codes: boolean;
|
|
274
|
+
}>;
|
|
275
|
+
}, "strip", z.ZodTypeAny, {
|
|
276
|
+
main_category: "intercom";
|
|
277
|
+
physical_properties: {
|
|
278
|
+
has_camera: boolean;
|
|
279
|
+
};
|
|
280
|
+
software_features: {
|
|
281
|
+
can_remotely_unlock: boolean;
|
|
282
|
+
can_program_access_codes: boolean;
|
|
283
|
+
};
|
|
284
|
+
}, {
|
|
285
|
+
main_category: "intercom";
|
|
286
|
+
physical_properties: {
|
|
287
|
+
has_camera: boolean;
|
|
288
|
+
};
|
|
289
|
+
software_features: {
|
|
290
|
+
can_remotely_unlock: boolean;
|
|
291
|
+
can_program_access_codes: boolean;
|
|
292
|
+
};
|
|
293
|
+
}>, z.ZodObject<{
|
|
294
|
+
main_category: z.ZodLiteral<"accessory">;
|
|
295
|
+
}, "strip", z.ZodTypeAny, {
|
|
296
|
+
main_category: "accessory";
|
|
297
|
+
}, {
|
|
298
|
+
main_category: "accessory";
|
|
192
299
|
}>]>;
|
|
193
300
|
declare const base_device_model_v1: z.ZodObject<{
|
|
194
301
|
device_model_id: z.ZodString;
|
|
@@ -243,7 +350,7 @@ declare const base_device_model_v1: z.ZodObject<{
|
|
|
243
350
|
slug: z.ZodString;
|
|
244
351
|
display_name: z.ZodString;
|
|
245
352
|
primary_color_hex: z.ZodOptional<z.ZodString>;
|
|
246
|
-
manufacturer_sku: z.ZodString
|
|
353
|
+
manufacturer_sku: z.ZodOptional<z.ZodString>;
|
|
247
354
|
front_image: z.ZodOptional<z.ZodObject<{
|
|
248
355
|
url: z.ZodString;
|
|
249
356
|
width: z.ZodNumber;
|
|
@@ -273,8 +380,8 @@ declare const base_device_model_v1: z.ZodObject<{
|
|
|
273
380
|
}, "strip", z.ZodTypeAny, {
|
|
274
381
|
display_name: string;
|
|
275
382
|
slug: string;
|
|
276
|
-
manufacturer_sku: string;
|
|
277
383
|
primary_color_hex?: string | undefined;
|
|
384
|
+
manufacturer_sku?: string | undefined;
|
|
278
385
|
front_image?: {
|
|
279
386
|
url: string;
|
|
280
387
|
width: number;
|
|
@@ -288,8 +395,8 @@ declare const base_device_model_v1: z.ZodObject<{
|
|
|
288
395
|
}, {
|
|
289
396
|
display_name: string;
|
|
290
397
|
slug: string;
|
|
291
|
-
manufacturer_sku: string;
|
|
292
398
|
primary_color_hex?: string | undefined;
|
|
399
|
+
manufacturer_sku?: string | undefined;
|
|
293
400
|
front_image?: {
|
|
294
401
|
url: string;
|
|
295
402
|
width: number;
|
|
@@ -323,8 +430,8 @@ declare const base_device_model_v1: z.ZodObject<{
|
|
|
323
430
|
aesthetic_variants: {
|
|
324
431
|
display_name: string;
|
|
325
432
|
slug: string;
|
|
326
|
-
manufacturer_sku: string;
|
|
327
433
|
primary_color_hex?: string | undefined;
|
|
434
|
+
manufacturer_sku?: string | undefined;
|
|
328
435
|
front_image?: {
|
|
329
436
|
url: string;
|
|
330
437
|
width: number;
|
|
@@ -359,8 +466,8 @@ declare const base_device_model_v1: z.ZodObject<{
|
|
|
359
466
|
aesthetic_variants: {
|
|
360
467
|
display_name: string;
|
|
361
468
|
slug: string;
|
|
362
|
-
manufacturer_sku: string;
|
|
363
469
|
primary_color_hex?: string | undefined;
|
|
470
|
+
manufacturer_sku?: string | undefined;
|
|
364
471
|
front_image?: {
|
|
365
472
|
url: string;
|
|
366
473
|
width: number;
|
|
@@ -429,7 +536,7 @@ declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
|
|
|
429
536
|
slug: z.ZodString;
|
|
430
537
|
display_name: z.ZodString;
|
|
431
538
|
primary_color_hex: z.ZodOptional<z.ZodString>;
|
|
432
|
-
manufacturer_sku: z.ZodString
|
|
539
|
+
manufacturer_sku: z.ZodOptional<z.ZodString>;
|
|
433
540
|
front_image: z.ZodOptional<z.ZodObject<{
|
|
434
541
|
url: z.ZodString;
|
|
435
542
|
width: z.ZodNumber;
|
|
@@ -459,8 +566,8 @@ declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
|
|
|
459
566
|
}, "strip", z.ZodTypeAny, {
|
|
460
567
|
display_name: string;
|
|
461
568
|
slug: string;
|
|
462
|
-
manufacturer_sku: string;
|
|
463
569
|
primary_color_hex?: string | undefined;
|
|
570
|
+
manufacturer_sku?: string | undefined;
|
|
464
571
|
front_image?: {
|
|
465
572
|
url: string;
|
|
466
573
|
width: number;
|
|
@@ -474,8 +581,8 @@ declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
|
|
|
474
581
|
}, {
|
|
475
582
|
display_name: string;
|
|
476
583
|
slug: string;
|
|
477
|
-
manufacturer_sku: string;
|
|
478
584
|
primary_color_hex?: string | undefined;
|
|
585
|
+
manufacturer_sku?: string | undefined;
|
|
479
586
|
front_image?: {
|
|
480
587
|
url: string;
|
|
481
588
|
width: number;
|
|
@@ -509,8 +616,8 @@ declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
|
|
|
509
616
|
aesthetic_variants: {
|
|
510
617
|
display_name: string;
|
|
511
618
|
slug: string;
|
|
512
|
-
manufacturer_sku: string;
|
|
513
619
|
primary_color_hex?: string | undefined;
|
|
620
|
+
manufacturer_sku?: string | undefined;
|
|
514
621
|
front_image?: {
|
|
515
622
|
url: string;
|
|
516
623
|
width: number;
|
|
@@ -545,8 +652,8 @@ declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
|
|
|
545
652
|
aesthetic_variants: {
|
|
546
653
|
display_name: string;
|
|
547
654
|
slug: string;
|
|
548
|
-
manufacturer_sku: string;
|
|
549
655
|
primary_color_hex?: string | undefined;
|
|
656
|
+
manufacturer_sku?: string | undefined;
|
|
550
657
|
front_image?: {
|
|
551
658
|
url: string;
|
|
552
659
|
width: number;
|
|
@@ -563,15 +670,15 @@ declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
|
|
|
563
670
|
}>, z.ZodDiscriminatedUnion<"main_category", [z.ZodObject<{
|
|
564
671
|
main_category: z.ZodLiteral<"smartlock">;
|
|
565
672
|
physical_properties: z.ZodObject<{
|
|
566
|
-
lock_type: z.ZodEnum<["deadbolt", "lever", "mortise", "lockbox", "cylinder", "padlock", "locker"]>;
|
|
673
|
+
lock_type: z.ZodEnum<["deadbolt", "lever", "mortise", "lockbox", "cylinder", "padlock", "locker", "unknown"]>;
|
|
567
674
|
has_physical_key: z.ZodBoolean;
|
|
568
675
|
has_camera: z.ZodBoolean;
|
|
569
676
|
}, "strip", z.ZodTypeAny, {
|
|
570
|
-
lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
677
|
+
lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
571
678
|
has_physical_key: boolean;
|
|
572
679
|
has_camera: boolean;
|
|
573
680
|
}, {
|
|
574
|
-
lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
681
|
+
lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
575
682
|
has_physical_key: boolean;
|
|
576
683
|
has_camera: boolean;
|
|
577
684
|
}>;
|
|
@@ -594,7 +701,7 @@ declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
|
|
|
594
701
|
}, "strip", z.ZodTypeAny, {
|
|
595
702
|
main_category: "smartlock";
|
|
596
703
|
physical_properties: {
|
|
597
|
-
lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
704
|
+
lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
598
705
|
has_physical_key: boolean;
|
|
599
706
|
has_camera: boolean;
|
|
600
707
|
};
|
|
@@ -607,7 +714,7 @@ declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
|
|
|
607
714
|
}, {
|
|
608
715
|
main_category: "smartlock";
|
|
609
716
|
physical_properties: {
|
|
610
|
-
lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
717
|
+
lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
611
718
|
has_physical_key: boolean;
|
|
612
719
|
has_camera: boolean;
|
|
613
720
|
};
|
|
@@ -719,6 +826,49 @@ declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
|
|
|
719
826
|
main_category: "relay";
|
|
720
827
|
}, {
|
|
721
828
|
main_category: "relay";
|
|
829
|
+
}>, z.ZodObject<{
|
|
830
|
+
main_category: z.ZodLiteral<"intercom">;
|
|
831
|
+
physical_properties: z.ZodObject<{
|
|
832
|
+
has_camera: z.ZodBoolean;
|
|
833
|
+
}, "strip", z.ZodTypeAny, {
|
|
834
|
+
has_camera: boolean;
|
|
835
|
+
}, {
|
|
836
|
+
has_camera: boolean;
|
|
837
|
+
}>;
|
|
838
|
+
software_features: z.ZodObject<{
|
|
839
|
+
can_remotely_unlock: z.ZodBoolean;
|
|
840
|
+
can_program_access_codes: z.ZodBoolean;
|
|
841
|
+
}, "strip", z.ZodTypeAny, {
|
|
842
|
+
can_remotely_unlock: boolean;
|
|
843
|
+
can_program_access_codes: boolean;
|
|
844
|
+
}, {
|
|
845
|
+
can_remotely_unlock: boolean;
|
|
846
|
+
can_program_access_codes: boolean;
|
|
847
|
+
}>;
|
|
848
|
+
}, "strip", z.ZodTypeAny, {
|
|
849
|
+
main_category: "intercom";
|
|
850
|
+
physical_properties: {
|
|
851
|
+
has_camera: boolean;
|
|
852
|
+
};
|
|
853
|
+
software_features: {
|
|
854
|
+
can_remotely_unlock: boolean;
|
|
855
|
+
can_program_access_codes: boolean;
|
|
856
|
+
};
|
|
857
|
+
}, {
|
|
858
|
+
main_category: "intercom";
|
|
859
|
+
physical_properties: {
|
|
860
|
+
has_camera: boolean;
|
|
861
|
+
};
|
|
862
|
+
software_features: {
|
|
863
|
+
can_remotely_unlock: boolean;
|
|
864
|
+
can_program_access_codes: boolean;
|
|
865
|
+
};
|
|
866
|
+
}>, z.ZodObject<{
|
|
867
|
+
main_category: z.ZodLiteral<"accessory">;
|
|
868
|
+
}, "strip", z.ZodTypeAny, {
|
|
869
|
+
main_category: "accessory";
|
|
870
|
+
}, {
|
|
871
|
+
main_category: "accessory";
|
|
722
872
|
}>]>>;
|
|
723
873
|
type DeviceModelV1 = z.infer<typeof device_model_v1>;
|
|
724
874
|
|
|
@@ -786,6 +936,7 @@ type index_DeviceModelV0 = DeviceModelV0;
|
|
|
786
936
|
type index_DeviceModelV1 = DeviceModelV1;
|
|
787
937
|
type index_ImageReference = ImageReference;
|
|
788
938
|
type index_Manufacturer = Manufacturer;
|
|
939
|
+
type index_ThermostatPropertiesV1 = ThermostatPropertiesV1;
|
|
789
940
|
declare const index_base_device_model_v1: typeof base_device_model_v1;
|
|
790
941
|
declare const index_device_model_category_specific_properties: typeof device_model_category_specific_properties;
|
|
791
942
|
declare const index_device_model_v0: typeof device_model_v0;
|
|
@@ -799,6 +950,7 @@ declare namespace index {
|
|
|
799
950
|
index_DeviceModelV1 as DeviceModelV1,
|
|
800
951
|
index_ImageReference as ImageReference,
|
|
801
952
|
index_Manufacturer as Manufacturer,
|
|
953
|
+
index_ThermostatPropertiesV1 as ThermostatPropertiesV1,
|
|
802
954
|
index_base_device_model_v1 as base_device_model_v1,
|
|
803
955
|
index_device_model_category_specific_properties as device_model_category_specific_properties,
|
|
804
956
|
index_device_model_v0 as device_model_v0,
|
|
@@ -836,13 +988,13 @@ interface Routes {
|
|
|
836
988
|
is_device_supported: boolean;
|
|
837
989
|
display_name: string;
|
|
838
990
|
description: string;
|
|
839
|
-
product_url
|
|
991
|
+
product_url?: string | undefined;
|
|
840
992
|
main_connection_type: 'wifi' | 'zwave' | 'zigbee' | 'unknown';
|
|
841
993
|
aesthetic_variants: Array<{
|
|
842
994
|
slug: string;
|
|
843
995
|
display_name: string;
|
|
844
996
|
primary_color_hex?: string | undefined;
|
|
845
|
-
manufacturer_sku
|
|
997
|
+
manufacturer_sku?: string | undefined;
|
|
846
998
|
front_image?: {
|
|
847
999
|
url: string;
|
|
848
1000
|
width: number;
|
|
@@ -858,7 +1010,7 @@ interface Routes {
|
|
|
858
1010
|
} & ({
|
|
859
1011
|
main_category: 'smartlock';
|
|
860
1012
|
physical_properties: {
|
|
861
|
-
lock_type: 'deadbolt' | 'lever' | 'mortise' | 'lockbox' | 'cylinder' | 'padlock' | 'locker';
|
|
1013
|
+
lock_type: 'deadbolt' | 'lever' | 'mortise' | 'lockbox' | 'cylinder' | 'padlock' | 'locker' | 'unknown';
|
|
862
1014
|
has_physical_key: boolean;
|
|
863
1015
|
has_camera: boolean;
|
|
864
1016
|
};
|
|
@@ -892,6 +1044,17 @@ interface Routes {
|
|
|
892
1044
|
};
|
|
893
1045
|
} | {
|
|
894
1046
|
main_category: 'relay';
|
|
1047
|
+
} | {
|
|
1048
|
+
main_category: 'intercom';
|
|
1049
|
+
physical_properties: {
|
|
1050
|
+
has_camera: boolean;
|
|
1051
|
+
};
|
|
1052
|
+
software_features: {
|
|
1053
|
+
can_remotely_unlock: boolean;
|
|
1054
|
+
can_program_access_codes: boolean;
|
|
1055
|
+
};
|
|
1056
|
+
} | {
|
|
1057
|
+
main_category: 'accessory';
|
|
895
1058
|
});
|
|
896
1059
|
};
|
|
897
1060
|
};
|
|
@@ -926,13 +1089,13 @@ interface Routes {
|
|
|
926
1089
|
is_device_supported: boolean;
|
|
927
1090
|
display_name: string;
|
|
928
1091
|
description: string;
|
|
929
|
-
product_url
|
|
1092
|
+
product_url?: string | undefined;
|
|
930
1093
|
main_connection_type: 'wifi' | 'zwave' | 'zigbee' | 'unknown';
|
|
931
1094
|
aesthetic_variants: Array<{
|
|
932
1095
|
slug: string;
|
|
933
1096
|
display_name: string;
|
|
934
1097
|
primary_color_hex?: string | undefined;
|
|
935
|
-
manufacturer_sku
|
|
1098
|
+
manufacturer_sku?: string | undefined;
|
|
936
1099
|
front_image?: {
|
|
937
1100
|
url: string;
|
|
938
1101
|
width: number;
|
|
@@ -948,7 +1111,7 @@ interface Routes {
|
|
|
948
1111
|
} & ({
|
|
949
1112
|
main_category: 'smartlock';
|
|
950
1113
|
physical_properties: {
|
|
951
|
-
lock_type: 'deadbolt' | 'lever' | 'mortise' | 'lockbox' | 'cylinder' | 'padlock' | 'locker';
|
|
1114
|
+
lock_type: 'deadbolt' | 'lever' | 'mortise' | 'lockbox' | 'cylinder' | 'padlock' | 'locker' | 'unknown';
|
|
952
1115
|
has_physical_key: boolean;
|
|
953
1116
|
has_camera: boolean;
|
|
954
1117
|
};
|
|
@@ -982,6 +1145,17 @@ interface Routes {
|
|
|
982
1145
|
};
|
|
983
1146
|
} | {
|
|
984
1147
|
main_category: 'relay';
|
|
1148
|
+
} | {
|
|
1149
|
+
main_category: 'intercom';
|
|
1150
|
+
physical_properties: {
|
|
1151
|
+
has_camera: boolean;
|
|
1152
|
+
};
|
|
1153
|
+
software_features: {
|
|
1154
|
+
can_remotely_unlock: boolean;
|
|
1155
|
+
can_program_access_codes: boolean;
|
|
1156
|
+
};
|
|
1157
|
+
} | {
|
|
1158
|
+
main_category: 'accessory';
|
|
985
1159
|
})>;
|
|
986
1160
|
};
|
|
987
1161
|
};
|
|
@@ -1,16 +1,80 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
declare const thermostat: z.ZodObject<{
|
|
3
|
+
main_category: z.ZodLiteral<"thermostat">;
|
|
4
|
+
physical_properties: z.ZodObject<{
|
|
5
|
+
available_modes: z.ZodArray<z.ZodEnum<["heat", "cool", "fan", "eco"]>, "many">;
|
|
6
|
+
is_heat_pump_compatible: z.ZodBoolean;
|
|
7
|
+
has_occupancy_detection: z.ZodBoolean;
|
|
8
|
+
supports_demand_response: z.ZodBoolean;
|
|
9
|
+
has_humidity_sensor: z.ZodBoolean;
|
|
10
|
+
has_temperature_sensor: z.ZodBoolean;
|
|
11
|
+
supports_emergency_heating_mode: z.ZodBoolean;
|
|
12
|
+
}, "strip", z.ZodTypeAny, {
|
|
13
|
+
has_humidity_sensor: boolean;
|
|
14
|
+
has_temperature_sensor: boolean;
|
|
15
|
+
has_occupancy_detection: boolean;
|
|
16
|
+
available_modes: ("heat" | "cool" | "fan" | "eco")[];
|
|
17
|
+
is_heat_pump_compatible: boolean;
|
|
18
|
+
supports_demand_response: boolean;
|
|
19
|
+
supports_emergency_heating_mode: boolean;
|
|
20
|
+
}, {
|
|
21
|
+
has_humidity_sensor: boolean;
|
|
22
|
+
has_temperature_sensor: boolean;
|
|
23
|
+
has_occupancy_detection: boolean;
|
|
24
|
+
available_modes: ("heat" | "cool" | "fan" | "eco")[];
|
|
25
|
+
is_heat_pump_compatible: boolean;
|
|
26
|
+
supports_demand_response: boolean;
|
|
27
|
+
supports_emergency_heating_mode: boolean;
|
|
28
|
+
}>;
|
|
29
|
+
software_features: z.ZodObject<{
|
|
30
|
+
can_program_climate_schedules: z.ZodBoolean;
|
|
31
|
+
}, "strip", z.ZodTypeAny, {
|
|
32
|
+
can_program_climate_schedules: boolean;
|
|
33
|
+
}, {
|
|
34
|
+
can_program_climate_schedules: boolean;
|
|
35
|
+
}>;
|
|
36
|
+
}, "strip", z.ZodTypeAny, {
|
|
37
|
+
main_category: "thermostat";
|
|
38
|
+
physical_properties: {
|
|
39
|
+
has_humidity_sensor: boolean;
|
|
40
|
+
has_temperature_sensor: boolean;
|
|
41
|
+
has_occupancy_detection: boolean;
|
|
42
|
+
available_modes: ("heat" | "cool" | "fan" | "eco")[];
|
|
43
|
+
is_heat_pump_compatible: boolean;
|
|
44
|
+
supports_demand_response: boolean;
|
|
45
|
+
supports_emergency_heating_mode: boolean;
|
|
46
|
+
};
|
|
47
|
+
software_features: {
|
|
48
|
+
can_program_climate_schedules: boolean;
|
|
49
|
+
};
|
|
50
|
+
}, {
|
|
51
|
+
main_category: "thermostat";
|
|
52
|
+
physical_properties: {
|
|
53
|
+
has_humidity_sensor: boolean;
|
|
54
|
+
has_temperature_sensor: boolean;
|
|
55
|
+
has_occupancy_detection: boolean;
|
|
56
|
+
available_modes: ("heat" | "cool" | "fan" | "eco")[];
|
|
57
|
+
is_heat_pump_compatible: boolean;
|
|
58
|
+
supports_demand_response: boolean;
|
|
59
|
+
supports_emergency_heating_mode: boolean;
|
|
60
|
+
};
|
|
61
|
+
software_features: {
|
|
62
|
+
can_program_climate_schedules: boolean;
|
|
63
|
+
};
|
|
64
|
+
}>;
|
|
65
|
+
export type ThermostatPropertiesV1 = z.infer<typeof thermostat>;
|
|
2
66
|
export declare const device_model_category_specific_properties: z.ZodDiscriminatedUnion<"main_category", [z.ZodObject<{
|
|
3
67
|
main_category: z.ZodLiteral<"smartlock">;
|
|
4
68
|
physical_properties: z.ZodObject<{
|
|
5
|
-
lock_type: z.ZodEnum<["deadbolt", "lever", "mortise", "lockbox", "cylinder", "padlock", "locker"]>;
|
|
69
|
+
lock_type: z.ZodEnum<["deadbolt", "lever", "mortise", "lockbox", "cylinder", "padlock", "locker", "unknown"]>;
|
|
6
70
|
has_physical_key: z.ZodBoolean;
|
|
7
71
|
has_camera: z.ZodBoolean;
|
|
8
72
|
}, "strip", z.ZodTypeAny, {
|
|
9
|
-
lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
73
|
+
lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
10
74
|
has_physical_key: boolean;
|
|
11
75
|
has_camera: boolean;
|
|
12
76
|
}, {
|
|
13
|
-
lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
77
|
+
lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
14
78
|
has_physical_key: boolean;
|
|
15
79
|
has_camera: boolean;
|
|
16
80
|
}>;
|
|
@@ -33,7 +97,7 @@ export declare const device_model_category_specific_properties: z.ZodDiscriminat
|
|
|
33
97
|
}, "strip", z.ZodTypeAny, {
|
|
34
98
|
main_category: "smartlock";
|
|
35
99
|
physical_properties: {
|
|
36
|
-
lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
100
|
+
lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
37
101
|
has_physical_key: boolean;
|
|
38
102
|
has_camera: boolean;
|
|
39
103
|
};
|
|
@@ -46,7 +110,7 @@ export declare const device_model_category_specific_properties: z.ZodDiscriminat
|
|
|
46
110
|
}, {
|
|
47
111
|
main_category: "smartlock";
|
|
48
112
|
physical_properties: {
|
|
49
|
-
lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
113
|
+
lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
50
114
|
has_physical_key: boolean;
|
|
51
115
|
has_camera: boolean;
|
|
52
116
|
};
|
|
@@ -158,6 +222,49 @@ export declare const device_model_category_specific_properties: z.ZodDiscriminat
|
|
|
158
222
|
main_category: "relay";
|
|
159
223
|
}, {
|
|
160
224
|
main_category: "relay";
|
|
225
|
+
}>, z.ZodObject<{
|
|
226
|
+
main_category: z.ZodLiteral<"intercom">;
|
|
227
|
+
physical_properties: z.ZodObject<{
|
|
228
|
+
has_camera: z.ZodBoolean;
|
|
229
|
+
}, "strip", z.ZodTypeAny, {
|
|
230
|
+
has_camera: boolean;
|
|
231
|
+
}, {
|
|
232
|
+
has_camera: boolean;
|
|
233
|
+
}>;
|
|
234
|
+
software_features: z.ZodObject<{
|
|
235
|
+
can_remotely_unlock: z.ZodBoolean;
|
|
236
|
+
can_program_access_codes: z.ZodBoolean;
|
|
237
|
+
}, "strip", z.ZodTypeAny, {
|
|
238
|
+
can_remotely_unlock: boolean;
|
|
239
|
+
can_program_access_codes: boolean;
|
|
240
|
+
}, {
|
|
241
|
+
can_remotely_unlock: boolean;
|
|
242
|
+
can_program_access_codes: boolean;
|
|
243
|
+
}>;
|
|
244
|
+
}, "strip", z.ZodTypeAny, {
|
|
245
|
+
main_category: "intercom";
|
|
246
|
+
physical_properties: {
|
|
247
|
+
has_camera: boolean;
|
|
248
|
+
};
|
|
249
|
+
software_features: {
|
|
250
|
+
can_remotely_unlock: boolean;
|
|
251
|
+
can_program_access_codes: boolean;
|
|
252
|
+
};
|
|
253
|
+
}, {
|
|
254
|
+
main_category: "intercom";
|
|
255
|
+
physical_properties: {
|
|
256
|
+
has_camera: boolean;
|
|
257
|
+
};
|
|
258
|
+
software_features: {
|
|
259
|
+
can_remotely_unlock: boolean;
|
|
260
|
+
can_program_access_codes: boolean;
|
|
261
|
+
};
|
|
262
|
+
}>, z.ZodObject<{
|
|
263
|
+
main_category: z.ZodLiteral<"accessory">;
|
|
264
|
+
}, "strip", z.ZodTypeAny, {
|
|
265
|
+
main_category: "accessory";
|
|
266
|
+
}, {
|
|
267
|
+
main_category: "accessory";
|
|
161
268
|
}>]>;
|
|
162
269
|
export declare const base_device_model_v1: z.ZodObject<{
|
|
163
270
|
device_model_id: z.ZodString;
|
|
@@ -212,7 +319,7 @@ export declare const base_device_model_v1: z.ZodObject<{
|
|
|
212
319
|
slug: z.ZodString;
|
|
213
320
|
display_name: z.ZodString;
|
|
214
321
|
primary_color_hex: z.ZodOptional<z.ZodString>;
|
|
215
|
-
manufacturer_sku: z.ZodString
|
|
322
|
+
manufacturer_sku: z.ZodOptional<z.ZodString>;
|
|
216
323
|
front_image: z.ZodOptional<z.ZodObject<{
|
|
217
324
|
url: z.ZodString;
|
|
218
325
|
width: z.ZodNumber;
|
|
@@ -242,8 +349,8 @@ export declare const base_device_model_v1: z.ZodObject<{
|
|
|
242
349
|
}, "strip", z.ZodTypeAny, {
|
|
243
350
|
display_name: string;
|
|
244
351
|
slug: string;
|
|
245
|
-
manufacturer_sku: string;
|
|
246
352
|
primary_color_hex?: string | undefined;
|
|
353
|
+
manufacturer_sku?: string | undefined;
|
|
247
354
|
front_image?: {
|
|
248
355
|
height: number;
|
|
249
356
|
width: number;
|
|
@@ -257,8 +364,8 @@ export declare const base_device_model_v1: z.ZodObject<{
|
|
|
257
364
|
}, {
|
|
258
365
|
display_name: string;
|
|
259
366
|
slug: string;
|
|
260
|
-
manufacturer_sku: string;
|
|
261
367
|
primary_color_hex?: string | undefined;
|
|
368
|
+
manufacturer_sku?: string | undefined;
|
|
262
369
|
front_image?: {
|
|
263
370
|
height: number;
|
|
264
371
|
width: number;
|
|
@@ -292,8 +399,8 @@ export declare const base_device_model_v1: z.ZodObject<{
|
|
|
292
399
|
aesthetic_variants: {
|
|
293
400
|
display_name: string;
|
|
294
401
|
slug: string;
|
|
295
|
-
manufacturer_sku: string;
|
|
296
402
|
primary_color_hex?: string | undefined;
|
|
403
|
+
manufacturer_sku?: string | undefined;
|
|
297
404
|
front_image?: {
|
|
298
405
|
height: number;
|
|
299
406
|
width: number;
|
|
@@ -328,8 +435,8 @@ export declare const base_device_model_v1: z.ZodObject<{
|
|
|
328
435
|
aesthetic_variants: {
|
|
329
436
|
display_name: string;
|
|
330
437
|
slug: string;
|
|
331
|
-
manufacturer_sku: string;
|
|
332
438
|
primary_color_hex?: string | undefined;
|
|
439
|
+
manufacturer_sku?: string | undefined;
|
|
333
440
|
front_image?: {
|
|
334
441
|
height: number;
|
|
335
442
|
width: number;
|
|
@@ -398,7 +505,7 @@ export declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
|
|
|
398
505
|
slug: z.ZodString;
|
|
399
506
|
display_name: z.ZodString;
|
|
400
507
|
primary_color_hex: z.ZodOptional<z.ZodString>;
|
|
401
|
-
manufacturer_sku: z.ZodString
|
|
508
|
+
manufacturer_sku: z.ZodOptional<z.ZodString>;
|
|
402
509
|
front_image: z.ZodOptional<z.ZodObject<{
|
|
403
510
|
url: z.ZodString;
|
|
404
511
|
width: z.ZodNumber;
|
|
@@ -428,8 +535,8 @@ export declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
|
|
|
428
535
|
}, "strip", z.ZodTypeAny, {
|
|
429
536
|
display_name: string;
|
|
430
537
|
slug: string;
|
|
431
|
-
manufacturer_sku: string;
|
|
432
538
|
primary_color_hex?: string | undefined;
|
|
539
|
+
manufacturer_sku?: string | undefined;
|
|
433
540
|
front_image?: {
|
|
434
541
|
height: number;
|
|
435
542
|
width: number;
|
|
@@ -443,8 +550,8 @@ export declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
|
|
|
443
550
|
}, {
|
|
444
551
|
display_name: string;
|
|
445
552
|
slug: string;
|
|
446
|
-
manufacturer_sku: string;
|
|
447
553
|
primary_color_hex?: string | undefined;
|
|
554
|
+
manufacturer_sku?: string | undefined;
|
|
448
555
|
front_image?: {
|
|
449
556
|
height: number;
|
|
450
557
|
width: number;
|
|
@@ -478,8 +585,8 @@ export declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
|
|
|
478
585
|
aesthetic_variants: {
|
|
479
586
|
display_name: string;
|
|
480
587
|
slug: string;
|
|
481
|
-
manufacturer_sku: string;
|
|
482
588
|
primary_color_hex?: string | undefined;
|
|
589
|
+
manufacturer_sku?: string | undefined;
|
|
483
590
|
front_image?: {
|
|
484
591
|
height: number;
|
|
485
592
|
width: number;
|
|
@@ -514,8 +621,8 @@ export declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
|
|
|
514
621
|
aesthetic_variants: {
|
|
515
622
|
display_name: string;
|
|
516
623
|
slug: string;
|
|
517
|
-
manufacturer_sku: string;
|
|
518
624
|
primary_color_hex?: string | undefined;
|
|
625
|
+
manufacturer_sku?: string | undefined;
|
|
519
626
|
front_image?: {
|
|
520
627
|
height: number;
|
|
521
628
|
width: number;
|
|
@@ -532,15 +639,15 @@ export declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
|
|
|
532
639
|
}>, z.ZodDiscriminatedUnion<"main_category", [z.ZodObject<{
|
|
533
640
|
main_category: z.ZodLiteral<"smartlock">;
|
|
534
641
|
physical_properties: z.ZodObject<{
|
|
535
|
-
lock_type: z.ZodEnum<["deadbolt", "lever", "mortise", "lockbox", "cylinder", "padlock", "locker"]>;
|
|
642
|
+
lock_type: z.ZodEnum<["deadbolt", "lever", "mortise", "lockbox", "cylinder", "padlock", "locker", "unknown"]>;
|
|
536
643
|
has_physical_key: z.ZodBoolean;
|
|
537
644
|
has_camera: z.ZodBoolean;
|
|
538
645
|
}, "strip", z.ZodTypeAny, {
|
|
539
|
-
lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
646
|
+
lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
540
647
|
has_physical_key: boolean;
|
|
541
648
|
has_camera: boolean;
|
|
542
649
|
}, {
|
|
543
|
-
lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
650
|
+
lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
544
651
|
has_physical_key: boolean;
|
|
545
652
|
has_camera: boolean;
|
|
546
653
|
}>;
|
|
@@ -563,7 +670,7 @@ export declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
|
|
|
563
670
|
}, "strip", z.ZodTypeAny, {
|
|
564
671
|
main_category: "smartlock";
|
|
565
672
|
physical_properties: {
|
|
566
|
-
lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
673
|
+
lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
567
674
|
has_physical_key: boolean;
|
|
568
675
|
has_camera: boolean;
|
|
569
676
|
};
|
|
@@ -576,7 +683,7 @@ export declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
|
|
|
576
683
|
}, {
|
|
577
684
|
main_category: "smartlock";
|
|
578
685
|
physical_properties: {
|
|
579
|
-
lock_type: "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
686
|
+
lock_type: "unknown" | "deadbolt" | "lever" | "mortise" | "lockbox" | "cylinder" | "padlock" | "locker";
|
|
580
687
|
has_physical_key: boolean;
|
|
581
688
|
has_camera: boolean;
|
|
582
689
|
};
|
|
@@ -688,5 +795,49 @@ export declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
|
|
|
688
795
|
main_category: "relay";
|
|
689
796
|
}, {
|
|
690
797
|
main_category: "relay";
|
|
798
|
+
}>, z.ZodObject<{
|
|
799
|
+
main_category: z.ZodLiteral<"intercom">;
|
|
800
|
+
physical_properties: z.ZodObject<{
|
|
801
|
+
has_camera: z.ZodBoolean;
|
|
802
|
+
}, "strip", z.ZodTypeAny, {
|
|
803
|
+
has_camera: boolean;
|
|
804
|
+
}, {
|
|
805
|
+
has_camera: boolean;
|
|
806
|
+
}>;
|
|
807
|
+
software_features: z.ZodObject<{
|
|
808
|
+
can_remotely_unlock: z.ZodBoolean;
|
|
809
|
+
can_program_access_codes: z.ZodBoolean;
|
|
810
|
+
}, "strip", z.ZodTypeAny, {
|
|
811
|
+
can_remotely_unlock: boolean;
|
|
812
|
+
can_program_access_codes: boolean;
|
|
813
|
+
}, {
|
|
814
|
+
can_remotely_unlock: boolean;
|
|
815
|
+
can_program_access_codes: boolean;
|
|
816
|
+
}>;
|
|
817
|
+
}, "strip", z.ZodTypeAny, {
|
|
818
|
+
main_category: "intercom";
|
|
819
|
+
physical_properties: {
|
|
820
|
+
has_camera: boolean;
|
|
821
|
+
};
|
|
822
|
+
software_features: {
|
|
823
|
+
can_remotely_unlock: boolean;
|
|
824
|
+
can_program_access_codes: boolean;
|
|
825
|
+
};
|
|
826
|
+
}, {
|
|
827
|
+
main_category: "intercom";
|
|
828
|
+
physical_properties: {
|
|
829
|
+
has_camera: boolean;
|
|
830
|
+
};
|
|
831
|
+
software_features: {
|
|
832
|
+
can_remotely_unlock: boolean;
|
|
833
|
+
can_program_access_codes: boolean;
|
|
834
|
+
};
|
|
835
|
+
}>, z.ZodObject<{
|
|
836
|
+
main_category: z.ZodLiteral<"accessory">;
|
|
837
|
+
}, "strip", z.ZodTypeAny, {
|
|
838
|
+
main_category: "accessory";
|
|
839
|
+
}, {
|
|
840
|
+
main_category: "accessory";
|
|
691
841
|
}>]>>;
|
|
692
842
|
export type DeviceModelV1 = z.infer<typeof device_model_v1>;
|
|
843
|
+
export {};
|
|
@@ -12,6 +12,7 @@ const smartlock = z.object({
|
|
|
12
12
|
'cylinder',
|
|
13
13
|
'padlock',
|
|
14
14
|
'locker',
|
|
15
|
+
'unknown',
|
|
15
16
|
]),
|
|
16
17
|
has_physical_key: z.boolean(),
|
|
17
18
|
has_camera: z.boolean(),
|
|
@@ -50,7 +51,20 @@ const thermostat = z.object({
|
|
|
50
51
|
const relay = z.object({
|
|
51
52
|
main_category: z.literal('relay'),
|
|
52
53
|
});
|
|
53
|
-
|
|
54
|
+
const intercom = z.object({
|
|
55
|
+
main_category: z.literal('intercom'),
|
|
56
|
+
physical_properties: z.object({
|
|
57
|
+
has_camera: z.boolean(),
|
|
58
|
+
}),
|
|
59
|
+
software_features: z.object({
|
|
60
|
+
can_remotely_unlock: z.boolean(),
|
|
61
|
+
can_program_access_codes: z.boolean(),
|
|
62
|
+
}),
|
|
63
|
+
});
|
|
64
|
+
const accessory = z.object({
|
|
65
|
+
main_category: z.literal('accessory'),
|
|
66
|
+
});
|
|
67
|
+
export const device_model_category_specific_properties = z.discriminatedUnion('main_category', [smartlock, sensor, thermostat, relay, intercom, accessory]);
|
|
54
68
|
export const base_device_model_v1 = z.object({
|
|
55
69
|
device_model_id: z.string().uuid(),
|
|
56
70
|
manufacturer,
|
|
@@ -64,7 +78,7 @@ export const base_device_model_v1 = z.object({
|
|
|
64
78
|
slug: z.string(),
|
|
65
79
|
display_name: z.string(),
|
|
66
80
|
primary_color_hex: z.string().optional(),
|
|
67
|
-
manufacturer_sku: z.string(),
|
|
81
|
+
manufacturer_sku: z.string().optional(),
|
|
68
82
|
front_image: image_reference.optional(),
|
|
69
83
|
back_image: image_reference.optional(),
|
|
70
84
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-model-v1.js","sourceRoot":"","sources":["../../../../src/lib/seam/devicedb/public-models/device-model-v1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IACrC,mBAAmB,EAAE,CAAC,CAAC,MAAM,CAAC;QAC5B,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC;YAChB,UAAU;YACV,OAAO;YACP,SAAS;YACT,SAAS;YACT,UAAU;YACV,SAAS;YACT,QAAQ;
|
|
1
|
+
{"version":3,"file":"device-model-v1.js","sourceRoot":"","sources":["../../../../src/lib/seam/devicedb/public-models/device-model-v1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IACrC,mBAAmB,EAAE,CAAC,CAAC,MAAM,CAAC;QAC5B,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC;YAChB,UAAU;YACV,OAAO;YACP,SAAS;YACT,SAAS;YACT,UAAU;YACV,SAAS;YACT,QAAQ;YACR,SAAS;SACV,CAAC;QACF,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE;QAC7B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;KACxB,CAAC;IACF,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC;QAC1B,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE;QAChC,wBAAwB,EAAE,CAAC,CAAC,OAAO,EAAE;QACrC,4BAA4B,EAAE,CAAC,CAAC,OAAO,EAAE;QACzC,gCAAgC,EAAE,CAAC,CAAC,OAAO,EAAE;KAC9C,CAAC;CACH,CAAC,CAAA;AAEF,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAClC,mBAAmB,EAAE,CAAC,CAAC,MAAM,CAAC;QAC5B,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE;QAC7B,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE;QAChC,sBAAsB,EAAE,CAAC,CAAC,OAAO,EAAE;QACnC,uBAAuB,EAAE,CAAC,CAAC,OAAO,EAAE;KACrC,CAAC;CACH,CAAC,CAAA;AAEF,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;IACtC,mBAAmB,EAAE,CAAC,CAAC,MAAM,CAAC;QAC5B,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE;QAC/D,uBAAuB,EAAE,CAAC,CAAC,OAAO,EAAE;QACpC,uBAAuB,EAAE,CAAC,CAAC,OAAO,EAAE;QACpC,wBAAwB,EAAE,CAAC,CAAC,OAAO,EAAE;QACrC,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE;QAChC,sBAAsB,EAAE,CAAC,CAAC,OAAO,EAAE;QACnC,+BAA+B,EAAE,CAAC,CAAC,OAAO,EAAE;KAC7C,CAAC;IACF,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC;QAC1B,6BAA6B,EAAE,CAAC,CAAC,OAAO,EAAE;KAC3C,CAAC;CACH,CAAC,CAAA;AAIF,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC;IACrB,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;CAClC,CAAC,CAAA;AAEF,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IACxB,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IACpC,mBAAmB,EAAE,CAAC,CAAC,MAAM,CAAC;QAC5B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;KACxB,CAAC;IACF,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC;QAC1B,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE;QAChC,wBAAwB,EAAE,CAAC,CAAC,OAAO,EAAE;KACtC,CAAC;CACH,CAAC,CAAA;AAEF,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;CACtC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,yCAAyC,GAAG,CAAC,CAAC,kBAAkB,CAC3E,eAAe,EACf,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAC5D,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAClC,YAAY;IACZ,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE;IAChC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,oBAAoB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACpE,kBAAkB,EAAE,CAAC;SAClB,MAAM,CAAC;QACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;QACxB,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACxC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACvC,WAAW,EAAE,eAAe,CAAC,QAAQ,EAAE;QACvC,UAAU,EAAE,eAAe,CAAC,QAAQ,EAAE;KACvC,CAAC;SACD,KAAK,EAAE;IACV,aAAa,EAAE,CAAC;SACb,IAAI,CAAC;QACJ,SAAS;QACT,WAAW;QACX,uBAAuB;QACvB,UAAU;QACV,UAAU;KACX,CAAC;SACD,KAAK,EAAE;CACX,CAAC,CAAA;AAIF,MAAM,CAAC,MAAM,eAAe,GAAG,oBAAoB,CAAC,GAAG,CACrD,yCAAyC,CAC1C,CAAA"}
|
|
@@ -26,13 +26,13 @@ export interface Routes {
|
|
|
26
26
|
is_device_supported: boolean;
|
|
27
27
|
display_name: string;
|
|
28
28
|
description: string;
|
|
29
|
-
product_url
|
|
29
|
+
product_url?: string | undefined;
|
|
30
30
|
main_connection_type: 'wifi' | 'zwave' | 'zigbee' | 'unknown';
|
|
31
31
|
aesthetic_variants: Array<{
|
|
32
32
|
slug: string;
|
|
33
33
|
display_name: string;
|
|
34
34
|
primary_color_hex?: string | undefined;
|
|
35
|
-
manufacturer_sku
|
|
35
|
+
manufacturer_sku?: string | undefined;
|
|
36
36
|
front_image?: {
|
|
37
37
|
url: string;
|
|
38
38
|
width: number;
|
|
@@ -48,7 +48,7 @@ export interface Routes {
|
|
|
48
48
|
} & ({
|
|
49
49
|
main_category: 'smartlock';
|
|
50
50
|
physical_properties: {
|
|
51
|
-
lock_type: 'deadbolt' | 'lever' | 'mortise' | 'lockbox' | 'cylinder' | 'padlock' | 'locker';
|
|
51
|
+
lock_type: 'deadbolt' | 'lever' | 'mortise' | 'lockbox' | 'cylinder' | 'padlock' | 'locker' | 'unknown';
|
|
52
52
|
has_physical_key: boolean;
|
|
53
53
|
has_camera: boolean;
|
|
54
54
|
};
|
|
@@ -82,6 +82,17 @@ export interface Routes {
|
|
|
82
82
|
};
|
|
83
83
|
} | {
|
|
84
84
|
main_category: 'relay';
|
|
85
|
+
} | {
|
|
86
|
+
main_category: 'intercom';
|
|
87
|
+
physical_properties: {
|
|
88
|
+
has_camera: boolean;
|
|
89
|
+
};
|
|
90
|
+
software_features: {
|
|
91
|
+
can_remotely_unlock: boolean;
|
|
92
|
+
can_program_access_codes: boolean;
|
|
93
|
+
};
|
|
94
|
+
} | {
|
|
95
|
+
main_category: 'accessory';
|
|
85
96
|
});
|
|
86
97
|
};
|
|
87
98
|
};
|
|
@@ -116,13 +127,13 @@ export interface Routes {
|
|
|
116
127
|
is_device_supported: boolean;
|
|
117
128
|
display_name: string;
|
|
118
129
|
description: string;
|
|
119
|
-
product_url
|
|
130
|
+
product_url?: string | undefined;
|
|
120
131
|
main_connection_type: 'wifi' | 'zwave' | 'zigbee' | 'unknown';
|
|
121
132
|
aesthetic_variants: Array<{
|
|
122
133
|
slug: string;
|
|
123
134
|
display_name: string;
|
|
124
135
|
primary_color_hex?: string | undefined;
|
|
125
|
-
manufacturer_sku
|
|
136
|
+
manufacturer_sku?: string | undefined;
|
|
126
137
|
front_image?: {
|
|
127
138
|
url: string;
|
|
128
139
|
width: number;
|
|
@@ -138,7 +149,7 @@ export interface Routes {
|
|
|
138
149
|
} & ({
|
|
139
150
|
main_category: 'smartlock';
|
|
140
151
|
physical_properties: {
|
|
141
|
-
lock_type: 'deadbolt' | 'lever' | 'mortise' | 'lockbox' | 'cylinder' | 'padlock' | 'locker';
|
|
152
|
+
lock_type: 'deadbolt' | 'lever' | 'mortise' | 'lockbox' | 'cylinder' | 'padlock' | 'locker' | 'unknown';
|
|
142
153
|
has_physical_key: boolean;
|
|
143
154
|
has_camera: boolean;
|
|
144
155
|
};
|
|
@@ -172,6 +183,17 @@ export interface Routes {
|
|
|
172
183
|
};
|
|
173
184
|
} | {
|
|
174
185
|
main_category: 'relay';
|
|
186
|
+
} | {
|
|
187
|
+
main_category: 'intercom';
|
|
188
|
+
physical_properties: {
|
|
189
|
+
has_camera: boolean;
|
|
190
|
+
};
|
|
191
|
+
software_features: {
|
|
192
|
+
can_remotely_unlock: boolean;
|
|
193
|
+
can_program_access_codes: boolean;
|
|
194
|
+
};
|
|
195
|
+
} | {
|
|
196
|
+
main_category: 'accessory';
|
|
175
197
|
})>;
|
|
176
198
|
};
|
|
177
199
|
};
|
package/package.json
CHANGED
|
@@ -14,6 +14,7 @@ const smartlock = z.object({
|
|
|
14
14
|
'cylinder',
|
|
15
15
|
'padlock',
|
|
16
16
|
'locker',
|
|
17
|
+
'unknown',
|
|
17
18
|
]),
|
|
18
19
|
has_physical_key: z.boolean(),
|
|
19
20
|
has_camera: z.boolean(),
|
|
@@ -52,13 +53,30 @@ const thermostat = z.object({
|
|
|
52
53
|
}),
|
|
53
54
|
})
|
|
54
55
|
|
|
56
|
+
export type ThermostatPropertiesV1 = z.infer<typeof thermostat>
|
|
57
|
+
|
|
55
58
|
const relay = z.object({
|
|
56
59
|
main_category: z.literal('relay'),
|
|
57
60
|
})
|
|
58
61
|
|
|
62
|
+
const intercom = z.object({
|
|
63
|
+
main_category: z.literal('intercom'),
|
|
64
|
+
physical_properties: z.object({
|
|
65
|
+
has_camera: z.boolean(),
|
|
66
|
+
}),
|
|
67
|
+
software_features: z.object({
|
|
68
|
+
can_remotely_unlock: z.boolean(),
|
|
69
|
+
can_program_access_codes: z.boolean(),
|
|
70
|
+
}),
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
const accessory = z.object({
|
|
74
|
+
main_category: z.literal('accessory'),
|
|
75
|
+
})
|
|
76
|
+
|
|
59
77
|
export const device_model_category_specific_properties = z.discriminatedUnion(
|
|
60
78
|
'main_category',
|
|
61
|
-
[smartlock, sensor, thermostat, relay],
|
|
79
|
+
[smartlock, sensor, thermostat, relay, intercom, accessory],
|
|
62
80
|
)
|
|
63
81
|
|
|
64
82
|
export const base_device_model_v1 = z.object({
|
|
@@ -74,7 +92,7 @@ export const base_device_model_v1 = z.object({
|
|
|
74
92
|
slug: z.string(),
|
|
75
93
|
display_name: z.string(),
|
|
76
94
|
primary_color_hex: z.string().optional(),
|
|
77
|
-
manufacturer_sku: z.string(),
|
|
95
|
+
manufacturer_sku: z.string().optional(),
|
|
78
96
|
front_image: image_reference.optional(),
|
|
79
97
|
back_image: image_reference.optional(),
|
|
80
98
|
})
|
|
@@ -28,13 +28,13 @@ export interface Routes {
|
|
|
28
28
|
is_device_supported: boolean
|
|
29
29
|
display_name: string
|
|
30
30
|
description: string
|
|
31
|
-
product_url
|
|
31
|
+
product_url?: string | undefined
|
|
32
32
|
main_connection_type: 'wifi' | 'zwave' | 'zigbee' | 'unknown'
|
|
33
33
|
aesthetic_variants: Array<{
|
|
34
34
|
slug: string
|
|
35
35
|
display_name: string
|
|
36
36
|
primary_color_hex?: string | undefined
|
|
37
|
-
manufacturer_sku
|
|
37
|
+
manufacturer_sku?: string | undefined
|
|
38
38
|
front_image?:
|
|
39
39
|
| {
|
|
40
40
|
url: string
|
|
@@ -69,6 +69,7 @@ export interface Routes {
|
|
|
69
69
|
| 'cylinder'
|
|
70
70
|
| 'padlock'
|
|
71
71
|
| 'locker'
|
|
72
|
+
| 'unknown'
|
|
72
73
|
has_physical_key: boolean
|
|
73
74
|
has_camera: boolean
|
|
74
75
|
}
|
|
@@ -106,6 +107,19 @@ export interface Routes {
|
|
|
106
107
|
| {
|
|
107
108
|
main_category: 'relay'
|
|
108
109
|
}
|
|
110
|
+
| {
|
|
111
|
+
main_category: 'intercom'
|
|
112
|
+
physical_properties: {
|
|
113
|
+
has_camera: boolean
|
|
114
|
+
}
|
|
115
|
+
software_features: {
|
|
116
|
+
can_remotely_unlock: boolean
|
|
117
|
+
can_program_access_codes: boolean
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
| {
|
|
121
|
+
main_category: 'accessory'
|
|
122
|
+
}
|
|
109
123
|
)
|
|
110
124
|
}
|
|
111
125
|
}
|
|
@@ -150,13 +164,13 @@ export interface Routes {
|
|
|
150
164
|
is_device_supported: boolean
|
|
151
165
|
display_name: string
|
|
152
166
|
description: string
|
|
153
|
-
product_url
|
|
167
|
+
product_url?: string | undefined
|
|
154
168
|
main_connection_type: 'wifi' | 'zwave' | 'zigbee' | 'unknown'
|
|
155
169
|
aesthetic_variants: Array<{
|
|
156
170
|
slug: string
|
|
157
171
|
display_name: string
|
|
158
172
|
primary_color_hex?: string | undefined
|
|
159
|
-
manufacturer_sku
|
|
173
|
+
manufacturer_sku?: string | undefined
|
|
160
174
|
front_image?:
|
|
161
175
|
| {
|
|
162
176
|
url: string
|
|
@@ -191,6 +205,7 @@ export interface Routes {
|
|
|
191
205
|
| 'cylinder'
|
|
192
206
|
| 'padlock'
|
|
193
207
|
| 'locker'
|
|
208
|
+
| 'unknown'
|
|
194
209
|
has_physical_key: boolean
|
|
195
210
|
has_camera: boolean
|
|
196
211
|
}
|
|
@@ -228,6 +243,19 @@ export interface Routes {
|
|
|
228
243
|
| {
|
|
229
244
|
main_category: 'relay'
|
|
230
245
|
}
|
|
246
|
+
| {
|
|
247
|
+
main_category: 'intercom'
|
|
248
|
+
physical_properties: {
|
|
249
|
+
has_camera: boolean
|
|
250
|
+
}
|
|
251
|
+
software_features: {
|
|
252
|
+
can_remotely_unlock: boolean
|
|
253
|
+
can_program_access_codes: boolean
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
| {
|
|
257
|
+
main_category: 'accessory'
|
|
258
|
+
}
|
|
231
259
|
)
|
|
232
260
|
>
|
|
233
261
|
}
|