@seamapi/types 1.262.1 → 1.263.1

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.
@@ -2672,6 +2672,24 @@ export interface Routes {
2672
2672
  }
2673
2673
  }
2674
2674
  }
2675
+ '/access_codes/update_multiple': {
2676
+ route: '/access_codes/update_multiple'
2677
+ method: 'POST' | 'PATCH'
2678
+ queryParams: {}
2679
+ jsonBody: {
2680
+ allow_external_modification?: boolean | undefined
2681
+ is_external_modification_allowed?: boolean | undefined
2682
+ code?: string | undefined
2683
+ ends_at?: string | undefined
2684
+ starts_at?: string | undefined
2685
+ name?: string | undefined
2686
+ prefer_native_scheduling?: boolean | undefined
2687
+ common_code_key: string
2688
+ }
2689
+ commonParams: {}
2690
+ formData: {}
2691
+ jsonResponse: {}
2692
+ }
2675
2693
  '/acs/access_groups/add_user': {
2676
2694
  route: '/acs/access_groups/add_user'
2677
2695
  method: 'PUT' | 'POST'
@@ -20880,6 +20898,619 @@ export interface Routes {
20880
20898
  can_simulate_connection?: boolean | undefined
20881
20899
  can_simulate_disconnection?: boolean | undefined
20882
20900
  }>
20901
+ devices: Array<{
20902
+ /** Unique identifier for the device. */
20903
+ device_id: string
20904
+ /** Type of the device. */
20905
+ device_type:
20906
+ | (
20907
+ | 'akuvox_lock'
20908
+ | 'august_lock'
20909
+ | 'brivo_access_point'
20910
+ | 'butterflymx_panel'
20911
+ | 'avigilon_alta_entry'
20912
+ | 'doorking_lock'
20913
+ | 'genie_door'
20914
+ | 'igloo_lock'
20915
+ | 'linear_lock'
20916
+ | 'lockly_lock'
20917
+ | 'kwikset_lock'
20918
+ | 'nuki_lock'
20919
+ | 'salto_lock'
20920
+ | 'schlage_lock'
20921
+ | 'seam_relay'
20922
+ | 'smartthings_lock'
20923
+ | 'wyze_lock'
20924
+ | 'yale_lock'
20925
+ | 'two_n_intercom'
20926
+ | 'controlbyweb_device'
20927
+ | 'ttlock_lock'
20928
+ | 'igloohome_lock'
20929
+ | 'hubitat_lock'
20930
+ | 'four_suites_door'
20931
+ | 'dormakaba_oracode_door'
20932
+ | 'tedee_lock'
20933
+ | 'akiles_lock'
20934
+ )
20935
+ | ('noiseaware_activity_zone' | 'minut_sensor')
20936
+ | (
20937
+ | 'ecobee_thermostat'
20938
+ | 'nest_thermostat'
20939
+ | 'honeywell_resideo_thermostat'
20940
+ )
20941
+ | ('ios_phone' | 'android_phone')
20942
+ | 'visionline_encoder'
20943
+ /** Optional nickname to describe the device, settable through Seam */
20944
+ nickname?: string | undefined
20945
+ /** Display name of the device, defaults to nickname (if it is set) or properties.appearance.name otherwise. Enables administrators and users to identify the device easily, especially when there are numerous devices. */
20946
+ display_name: string
20947
+ /** Collection of capabilities that the device supports when connected to Seam. Values are "access_code," which indicates that the device can manage and utilize digital PIN codes for secure access; "lock," which indicates that the device controls a door locking mechanism, enabling the remote opening and closing of doors and other entry points; "noise_detection," which indicates that the device supports monitoring and responding to ambient noise levels; "thermostat," which indicates that the device can regulate and adjust indoor temperatures; and "battery," which indicates that the device can manage battery life and health. */
20948
+ capabilities_supported: Array<
20949
+ | 'access_code'
20950
+ | 'lock'
20951
+ | 'noise_detection'
20952
+ | 'thermostat'
20953
+ | 'battery'
20954
+ | 'phone'
20955
+ >
20956
+ /** Properties of the device. */
20957
+ properties: (({
20958
+ /** Indicates whether the device is online. */
20959
+ online: boolean
20960
+ /** Name of the device.
20961
+ * @deprecated use device.display_name instead */
20962
+ name: string
20963
+ /** Represents the accessory keypad state. */
20964
+ accessory_keypad?:
20965
+ | {
20966
+ /** Indicates if the accessory_keypad is connected to the device. */
20967
+ is_connected: boolean
20968
+ /** Indicates if the keypad battery properties. */
20969
+ battery?:
20970
+ | {
20971
+ level: number
20972
+ }
20973
+ | undefined
20974
+ }
20975
+ | undefined
20976
+ appearance: {
20977
+ /** Name of the device as seen from the provider API and application, not settable through Seam. */
20978
+ name: string
20979
+ }
20980
+ model: {
20981
+ /** Indicates whether the device can connect a accessory keypad. */
20982
+ can_connect_accessory_keypad?: boolean | undefined
20983
+ /** Display name of the device model. */
20984
+ display_name: string
20985
+ /** Display name that corresponds to the manufacturer-specific terminology for the device. */
20986
+ manufacturer_display_name: string
20987
+ /** Indicates whether the device has a built in accessory keypad. */
20988
+ has_built_in_keypad?: boolean | undefined
20989
+ /** Indicates whether the device supports offline access codes. */
20990
+ offline_access_codes_supported?: boolean | undefined
20991
+ /** Indicates whether the device supports online access codes. */
20992
+ online_access_codes_supported?: boolean | undefined
20993
+ /**
20994
+ * @deprecated use device.properties.model.can_connect_accessory_keypad */
20995
+ accessory_keypad_supported?: boolean | undefined
20996
+ }
20997
+ /** Indicates whether the device has direct power. */
20998
+ has_direct_power?: boolean | undefined
20999
+ /** Indicates the battery level of the device as a decimal value between 0 and 1, inclusive. */
21000
+ battery_level?: number | undefined
21001
+ /** Represents the current status of the battery charge level. Values are "critical," which indicates an extremely low level, suggesting imminent shutdown or an urgent need for charging; "low," which signifies that the battery is under the preferred threshold and should be charged soon; "good," which denotes a satisfactory charge level, adequate for normal use without the immediate need for recharging; and "full," which represents a battery that is fully charged, providing the maximum duration of usage. */
21002
+ battery?:
21003
+ | {
21004
+ level: number
21005
+ status: 'critical' | 'low' | 'good' | 'full'
21006
+ }
21007
+ | undefined
21008
+ /** Manufacturer of the device. */
21009
+ manufacturer?: string | undefined
21010
+ /** Image URL for the device. */
21011
+ image_url?: string | undefined
21012
+ /** Alt text for the device image. */
21013
+ image_alt_text?: string | undefined
21014
+ /** Serial number of the device. */
21015
+ serial_number?: string | undefined
21016
+ /** Indicates whether it is currently possible to use online access codes for the device. */
21017
+ online_access_codes_enabled?: boolean | undefined
21018
+ /** Indicates whether it is currently possible to use offline access codes for the device. */
21019
+ offline_access_codes_enabled?: boolean | undefined
21020
+ /**
21021
+ * @deprecated use device.properties.model.can_connect_accessory_keypad */
21022
+ supports_accessory_keypad?: boolean | undefined
21023
+ /**
21024
+ * @deprecated use offline_access_codes_enabled */
21025
+ supports_offline_access_codes?: boolean | undefined
21026
+ /** Indicates current noise level in decibels, if the device supports noise detection. */
21027
+ noise_level_decibels?: number | undefined
21028
+ /** Array of noise threshold IDs that are currently triggering. */
21029
+ currently_triggering_noise_threshold_ids?: string[] | undefined
21030
+ } & {
21031
+ assa_abloy_credential_service_metadata?:
21032
+ | (
21033
+ | {
21034
+ has_active_endpoint: boolean
21035
+ endpoints: Array<{
21036
+ endpoint_id: string
21037
+ is_active: boolean
21038
+ }>
21039
+ }
21040
+ | undefined
21041
+ )
21042
+ | undefined
21043
+ }) & {
21044
+ august_metadata?:
21045
+ | {
21046
+ lock_id: string
21047
+ lock_name: string
21048
+ house_name: string
21049
+ has_keypad: boolean
21050
+ keypad_battery_level?: string | undefined
21051
+ model?: string | undefined
21052
+ house_id?: string | undefined
21053
+ }
21054
+ | undefined
21055
+ avigilon_alta_metadata?:
21056
+ | {
21057
+ entry_name: string
21058
+ org_name: string
21059
+ zone_id: number
21060
+ zone_name: string
21061
+ site_id: number
21062
+ site_name: string
21063
+ entry_relays_total_count: number
21064
+ }
21065
+ | undefined
21066
+ schlage_metadata?:
21067
+ | {
21068
+ device_id: string
21069
+ device_name: string
21070
+ access_code_length: number | null
21071
+ model?: string | undefined
21072
+ }
21073
+ | undefined
21074
+ smartthings_metadata?:
21075
+ | {
21076
+ device_id: string
21077
+ device_name: string
21078
+ model?: string | undefined
21079
+ location_id?: string | undefined
21080
+ }
21081
+ | undefined
21082
+ lockly_metadata?:
21083
+ | {
21084
+ device_id: string
21085
+ device_name: string
21086
+ model?: string | undefined
21087
+ }
21088
+ | undefined
21089
+ nuki_metadata?:
21090
+ | {
21091
+ device_id: string
21092
+ device_name: string
21093
+ keypad_battery_critical?: boolean | undefined
21094
+ keypad_paired?: boolean | undefined
21095
+ keypad_2_paired?: boolean | undefined
21096
+ }
21097
+ | undefined
21098
+ kwikset_metadata?:
21099
+ | {
21100
+ device_id: string
21101
+ device_name: string
21102
+ model_number: string
21103
+ }
21104
+ | undefined
21105
+ salto_metadata?:
21106
+ | {
21107
+ lock_id: string
21108
+ customer_reference: string
21109
+ lock_type: string
21110
+ battery_level: string
21111
+ locked_state: string
21112
+ model?: string | undefined
21113
+ }
21114
+ | undefined
21115
+ genie_metadata?:
21116
+ | {
21117
+ device_name: string
21118
+ door_name: string
21119
+ }
21120
+ | undefined
21121
+ brivo_metadata?:
21122
+ | {
21123
+ device_name: string
21124
+ }
21125
+ | undefined
21126
+ igloo_metadata?:
21127
+ | {
21128
+ device_id: string
21129
+ bridge_id: string
21130
+ model?: string | undefined
21131
+ }
21132
+ | undefined
21133
+ noiseaware_metadata?:
21134
+ | {
21135
+ device_model: 'indoor' | 'outdoor'
21136
+ noise_level_nrs: number
21137
+ noise_level_decibel: number
21138
+ device_name: string
21139
+ device_id: string
21140
+ }
21141
+ | undefined
21142
+ minut_metadata?:
21143
+ | {
21144
+ device_id: string
21145
+ device_name: string
21146
+ latest_sensor_values: {
21147
+ temperature: {
21148
+ time: string
21149
+ value: number
21150
+ }
21151
+ sound: {
21152
+ time: string
21153
+ value: number
21154
+ }
21155
+ humidity: {
21156
+ time: string
21157
+ value: number
21158
+ }
21159
+ pressure: {
21160
+ time: string
21161
+ value: number
21162
+ }
21163
+ accelerometer_z: {
21164
+ time: string
21165
+ value: number
21166
+ }
21167
+ }
21168
+ }
21169
+ | undefined
21170
+ four_suites_metadata?:
21171
+ | {
21172
+ device_id: number
21173
+ device_name: string
21174
+ reclose_delay_in_seconds: number
21175
+ }
21176
+ | undefined
21177
+ two_n_metadata?:
21178
+ | {
21179
+ device_id: number
21180
+ device_name: string
21181
+ }
21182
+ | undefined
21183
+ controlbyweb_metadata?:
21184
+ | {
21185
+ device_id: string
21186
+ device_name: string
21187
+ relay_name: string | null
21188
+ }
21189
+ | undefined
21190
+ ttlock_metadata?:
21191
+ | {
21192
+ lock_id: number
21193
+ lock_alias: string
21194
+ feature_value: string
21195
+ features: {
21196
+ passcode: boolean
21197
+ passcode_management: boolean
21198
+ unlock_via_gateway: boolean
21199
+ lock_command: boolean
21200
+ incomplete_keyboard_passcode: boolean
21201
+ }
21202
+ has_gateway?: boolean | undefined
21203
+ wireless_keypads?:
21204
+ | Array<{
21205
+ wireless_keypad_id: number
21206
+ wireless_keypad_name: string
21207
+ }>
21208
+ | undefined
21209
+ }
21210
+ | undefined
21211
+ seam_bridge_metadata?:
21212
+ | {
21213
+ unlock_method?: ('bridge' | 'doorking') | undefined
21214
+ device_num: number
21215
+ name: string
21216
+ }
21217
+ | undefined
21218
+ igloohome_metadata?:
21219
+ | {
21220
+ device_id: string
21221
+ device_name: string
21222
+ bridge_id?: string | undefined
21223
+ bridge_name?: string | undefined
21224
+ keypad_id?: string | undefined
21225
+ }
21226
+ | undefined
21227
+ nest_metadata?:
21228
+ | {
21229
+ nest_device_id: string
21230
+ device_name: string
21231
+ custom_name: string
21232
+ }
21233
+ | undefined
21234
+ ecobee_metadata?:
21235
+ | {
21236
+ ecobee_device_id: string
21237
+ device_name: string
21238
+ }
21239
+ | undefined
21240
+ honeywell_resideo_metadata?:
21241
+ | {
21242
+ honeywell_resideo_device_id: string
21243
+ device_name: string
21244
+ }
21245
+ | undefined
21246
+ hubitat_metadata?:
21247
+ | {
21248
+ device_id: string
21249
+ device_name: string
21250
+ device_label: string
21251
+ }
21252
+ | undefined
21253
+ dormakaba_oracode_metadata?:
21254
+ | {
21255
+ door_id?: number | undefined
21256
+ door_name: string
21257
+ device_id?: (number | string) | undefined
21258
+ door_is_wireless: boolean
21259
+ /** @DEPRECATED */
21260
+ site_id: number | null
21261
+ site_name: string
21262
+ iana_timezone?: string | undefined
21263
+ predefined_time_slots?:
21264
+ | Array<{
21265
+ name: string
21266
+ prefix: number
21267
+ check_in_time: string
21268
+ check_out_time: string
21269
+ is_24_hour: boolean
21270
+ is_biweekly_mode: boolean
21271
+ is_one_shot: boolean
21272
+ is_master: boolean
21273
+ ext_dormakaba_oracode_user_level_prefix: number
21274
+ dormakaba_oracode_user_level_id: string
21275
+ }>
21276
+ | undefined
21277
+ }
21278
+ | undefined
21279
+ wyze_metadata?:
21280
+ | {
21281
+ device_id: string
21282
+ device_name: string
21283
+ product_name: string
21284
+ product_type: string
21285
+ product_model: string
21286
+ device_info_model: string
21287
+ keypad_uuid?: string | undefined
21288
+ locker_status_hardlock?: number | undefined
21289
+ }
21290
+ | undefined
21291
+ tedee_metadata?:
21292
+ | {
21293
+ device_id: number
21294
+ serial_number: string
21295
+ device_name: string
21296
+ device_model: string
21297
+ bridge_id: number
21298
+ bridge_name: string
21299
+ keypad_id?: number | undefined
21300
+ }
21301
+ | undefined
21302
+ visionline_metadata?:
21303
+ | {
21304
+ encoder_id: string
21305
+ }
21306
+ | undefined
21307
+ akiles_metadata?:
21308
+ | {
21309
+ gadget_name: string
21310
+ gadget_id: string
21311
+ }
21312
+ | undefined
21313
+ }) &
21314
+ ({
21315
+ _experimental_supported_code_from_access_codes_lengths?:
21316
+ | (number[] | undefined)
21317
+ | undefined
21318
+ code_constraints?:
21319
+ | (
21320
+ | Array<
21321
+ | {
21322
+ constraint_type:
21323
+ | 'no_zeros'
21324
+ | 'cannot_start_with_12'
21325
+ | 'no_triple_consecutive_ints'
21326
+ | 'cannot_specify_pin_code'
21327
+ | 'pin_code_matches_existing_set'
21328
+ | 'start_date_in_future'
21329
+ | 'no_ascending_or_descending_sequence'
21330
+ | 'at_least_three_unique_digits'
21331
+ | 'cannot_contain_089'
21332
+ | 'cannot_contain_0789'
21333
+ }
21334
+ | {
21335
+ constraint_type: 'name_length' | 'name_must_be_unique'
21336
+ min_length?: number | undefined
21337
+ max_length?: number | undefined
21338
+ }
21339
+ >
21340
+ | undefined
21341
+ )
21342
+ | undefined
21343
+ supported_code_lengths?: (number[] | undefined) | undefined
21344
+ max_active_codes_supported?: (number | undefined) | undefined
21345
+ supports_backup_access_code_pool?: (boolean | undefined) | undefined
21346
+ has_native_entry_events?: (boolean | undefined) | undefined
21347
+ locked?: (boolean | undefined) | undefined
21348
+ keypad_battery?:
21349
+ | (
21350
+ | {
21351
+ level: number
21352
+ }
21353
+ | undefined
21354
+ )
21355
+ | undefined
21356
+ door_open?: (boolean | undefined) | undefined
21357
+ } & {
21358
+ temperature_fahrenheit?: number | undefined
21359
+ temperature_celsius?: number | undefined
21360
+ relative_humidity?: number | undefined
21361
+ available_hvac_mode_settings?:
21362
+ | Array<'off' | 'heat' | 'cool' | 'heat_cool'>
21363
+ | undefined
21364
+ available_fan_mode_settings?:
21365
+ | Array<'auto' | 'on' | 'circulate'>
21366
+ | undefined
21367
+ is_heating?: boolean | undefined
21368
+ is_cooling?: boolean | undefined
21369
+ is_fan_running?: boolean | undefined
21370
+ /**
21371
+ * @deprecated use current_climate_setting.fan_mode_setting instead. */
21372
+ fan_mode_setting?: ('auto' | 'on' | 'circulate') | undefined
21373
+ is_temporary_manual_override_active?: boolean | undefined
21374
+ current_climate_setting?:
21375
+ | {
21376
+ climate_preset_key?: string | undefined
21377
+ can_edit?: boolean | undefined
21378
+ can_delete?: boolean | undefined
21379
+ name?: ((string | null) | undefined) | undefined
21380
+ display_name?: string | undefined
21381
+ fan_mode_setting?:
21382
+ | (('auto' | 'on' | 'circulate') | undefined)
21383
+ | undefined
21384
+ hvac_mode_setting?:
21385
+ | (('off' | 'heat' | 'cool' | 'heat_cool') | undefined)
21386
+ | undefined
21387
+ cooling_set_point_celsius?: (number | undefined) | undefined
21388
+ heating_set_point_celsius?: (number | undefined) | undefined
21389
+ cooling_set_point_fahrenheit?:
21390
+ | (number | undefined)
21391
+ | undefined
21392
+ heating_set_point_fahrenheit?:
21393
+ | (number | undefined)
21394
+ | undefined
21395
+ manual_override_allowed?: boolean | undefined
21396
+ }
21397
+ | undefined
21398
+ /**
21399
+ * @deprecated use fallback_climate_preset_key to specify a fallback climate preset instead. */
21400
+ default_climate_setting?:
21401
+ | {
21402
+ climate_preset_key?: string | undefined
21403
+ can_edit?: boolean | undefined
21404
+ can_delete?: boolean | undefined
21405
+ name?: ((string | null) | undefined) | undefined
21406
+ display_name?: string | undefined
21407
+ fan_mode_setting?:
21408
+ | (('auto' | 'on' | 'circulate') | undefined)
21409
+ | undefined
21410
+ hvac_mode_setting?:
21411
+ | (('off' | 'heat' | 'cool' | 'heat_cool') | undefined)
21412
+ | undefined
21413
+ cooling_set_point_celsius?: (number | undefined) | undefined
21414
+ heating_set_point_celsius?: (number | undefined) | undefined
21415
+ cooling_set_point_fahrenheit?:
21416
+ | (number | undefined)
21417
+ | undefined
21418
+ heating_set_point_fahrenheit?:
21419
+ | (number | undefined)
21420
+ | undefined
21421
+ manual_override_allowed?: boolean | undefined
21422
+ }
21423
+ | undefined
21424
+ available_climate_presets?:
21425
+ | Array<{
21426
+ climate_preset_key: string
21427
+ can_edit: boolean
21428
+ can_delete: boolean
21429
+ name?: (string | null) | undefined
21430
+ display_name: string
21431
+ fan_mode_setting?: ('auto' | 'on' | 'circulate') | undefined
21432
+ hvac_mode_setting?:
21433
+ | ('off' | 'heat' | 'cool' | 'heat_cool')
21434
+ | undefined
21435
+ cooling_set_point_celsius?: number | undefined
21436
+ heating_set_point_celsius?: number | undefined
21437
+ cooling_set_point_fahrenheit?: number | undefined
21438
+ heating_set_point_fahrenheit?: number | undefined
21439
+ manual_override_allowed: boolean
21440
+ }>
21441
+ | undefined
21442
+ fallback_climate_preset_key?: (string | null) | undefined
21443
+ active_thermostat_schedule?:
21444
+ | ({
21445
+ thermostat_schedule_id: string
21446
+ device_id: string
21447
+ name?: string | undefined
21448
+ climate_preset_key: string
21449
+ max_override_period_minutes: number
21450
+ starts_at: string
21451
+ ends_at: string
21452
+ created_at: string
21453
+ /** Collection of errors associated with the thermostat schedule, structured in a dictionary format. A unique "error_code" keys each error. Each error entry is an object containing two fields: "message" and "created_at." "message" is a string that describes the error. "created_at" is a date that indicates when the error was generated. This structure enables detailed tracking and timely response to critical issues. */
21454
+ errors?: any
21455
+ } | null)
21456
+ | undefined
21457
+ min_cooling_set_point_celsius?: number | undefined
21458
+ min_cooling_set_point_fahrenheit?: number | undefined
21459
+ max_cooling_set_point_celsius?: number | undefined
21460
+ max_cooling_set_point_fahrenheit?: number | undefined
21461
+ min_heating_set_point_celsius?: number | undefined
21462
+ min_heating_set_point_fahrenheit?: number | undefined
21463
+ max_heating_set_point_celsius?: number | undefined
21464
+ max_heating_set_point_fahrenheit?: number | undefined
21465
+ min_heating_cooling_delta_celsius?: number | undefined
21466
+ min_heating_cooling_delta_fahrenheit?: number | undefined
21467
+ })
21468
+ /** Location information for the device. */
21469
+ location: {
21470
+ /** Name of the device location. */
21471
+ location_name?: string | undefined
21472
+ /** Time zone of the device location. */
21473
+ timezone?: string | undefined
21474
+ } | null
21475
+ /** Unique identifier for the account associated with the device. */
21476
+ connected_account_id: string
21477
+ /** Unique identifier for the Seam workspace associated with the device. */
21478
+ workspace_id: string
21479
+ /** Array of errors associated with the device. Each error object within the array contains two fields: "error_code" and "message." "error_code" is a string that uniquely identifies the type of error, enabling quick recognition and categorization of the issue. "message" provides a more detailed description of the error, offering insights into the issue and potentially how to rectify it. */
21480
+ errors: Array<
21481
+ | {
21482
+ message: string
21483
+ is_device_error: true
21484
+ error_code: string
21485
+ }
21486
+ | {
21487
+ message: string
21488
+ is_connected_account_error: true
21489
+ error_code: string
21490
+ }
21491
+ >
21492
+ /** Array of warnings associated with the device. Each warning object within the array contains two fields: "warning_code" and "message." "warning_code" is a string that uniquely identifies the type of warning, enabling quick recognition and categorization of the issue. "message" provides a more detailed description of the warning, offering insights into the issue and potentially how to rectify it. */
21493
+ warnings: Array<{
21494
+ message: string
21495
+ warning_code: string
21496
+ }>
21497
+ /** Date and time at which the device object was created. */
21498
+ created_at: string
21499
+ /** Indicates whether Seam manages the device. */
21500
+ is_managed: true
21501
+ custom_metadata: Record<string, string | boolean>
21502
+ can_remotely_unlock?: boolean | undefined
21503
+ can_remotely_lock?: boolean | undefined
21504
+ can_program_offline_access_codes?: boolean | undefined
21505
+ can_program_online_access_codes?: boolean | undefined
21506
+ can_hvac_heat?: boolean | undefined
21507
+ can_hvac_cool?: boolean | undefined
21508
+ can_hvac_heat_cool?: boolean | undefined
21509
+ can_turn_off_hvac?: boolean | undefined
21510
+ can_simulate_removal?: boolean | undefined
21511
+ can_simulate_connection?: boolean | undefined
21512
+ can_simulate_disconnection?: boolean | undefined
21513
+ }>
20883
21514
  }
20884
21515
  }
20885
21516
  '/thermostats/off': {