Devices

A device that has been connected to Seam

The device object represents a device that has been connected to Seam.

device Properties

The device object has the following properties:

PropertyTypeDescription

device_id

String (UUID) Required

Unique identifier for the device.

device_type

String Required

Type of the device.

display_name

String Required

Display name for the device.

capabilities_supported

Array of strings Required

Collection of capabilities that the device supports when connected to Seam. See capabilities_supported Values. Important: Superseded by capability flags.

properties

Object

Required

Properties of the device. See device.properties Properties.

location

Object Optional

Location information for the device. See location Properties.

connected_account_id

String (UUID) Required

ID of the connected account associated with the device.

workspace_id

String (UUID) Required

ID of the workspace that contains the device.

errors

Array of objects Required

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. See Device Error Types.

warnings

Array of objects Required

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. See Device Warning Types.

created_at

String (datetime) Required

Date and time at which the device object was created.

is_managed

Boolean Required

Indicates whether Seam manages the device.

custom_metadata

JSON object Optional

Set of custom_metadata for the device.

Specify up to 50 keys, with key names up to 40 characters long. Accepts string or Boolean values. Strings are limited to 500 characters.

can_remotely_unlock

Boolean Optional

Indicates whether the device can perform a remote unlock operation. See Capability Flags.

can_remotely_lock

Boolean Optional

Indicates whether the device can perform a remote lock operation. See Capability Flags.

can_program_online_access_codes

Boolean Optional

Indicates whether the device can program online access codes. See Capability Flags.

can_program_offline_access_codes

Boolean Optional

Indicates whether the device can program offline access codes. See Capability Flags.

capabilities_supported Values

Superseded by capability flags.

CapabilityDescription

access_code

If present, you can set access codes on the device.

battery

If present, you can look at the battery_level of the device.

health

If present, you can introspect some parameters related to the health of the device.

lock

If present, you can lock and unlock the device.

noise_sensor

If present, the device can issue noise alerts when noise thresholds are exceeded.

thermostat

If present, the device can regulate the temperature of a system so that the temperature of the system is maintained near a desired set point temperature.

device.properties Properties

PropertyTypeDescription

online

Boolean Required

Indicates whether the device is online.

accessory_keypad

Object Optional

Accessory keypad state. See accessory_keypad Properties.

appearance

Object Required

Appearance-related properties, including the read-only name of the device, as seen from the provider API and application.

model

Object Required

Device model properties. See model Properties.

has_direct_power

Boolean Optional

Indicates whether the device has direct power.

battery_level

Number Required

Indicates the battery level of the device as a decimal value between 0 and 1, inclusive. (Deprecated—Use battery.level instead.)

battery

Object Optional

Device battery properties. See Devicebattery Properties.

manufacturer

String Optional

Manufacturer of the device. See Device Manufacturers.

image_url

String (URL) Optional

Image URL for the device or placeholder image URL if a device-specific image is unavailable.

image_alt_text

String Optional

Alternative text for the device image.

serial_number

String Optional

Serial number of the device.

online_access_codes_enabled

Boolean Optional

Indicates whether it is currently possible to use online access codes for the device. Superseded by the can_program_online_access_codes capability flag.

offline_access_codes_enabled

Boolean Optional

Indicates whether it is currently possible to use offline access codes for the device. Superseded by the can_program_offline_access_codes capability flag.

locked

Boolean Optional

Indicates whether the device is locked.

Applicable to locks.

keypad_battery

Object Optional

Keypad battery properties.

Applicable to locks.

See keypad_battery Properties.

door_open

Boolean Optional

Indicates whether the door is open.

Applicable to locks.

code_constraints

Array of objects Optional

Constraints on access codes that can be set on the device.

Applicable to devices that support access codes. See Access Code Constraints.

supported_code_lengths

Array of numbers Optional

Supported code lengths for the device.

For example, [4,5] means that 1234 and 12345 are valid codes, but 123 and 123456 are invalid codes. Applicable to devices that support access codes.

max_active_codes_supported

Number Optional

Maximum number of codes that can exist on the device at one time. Applicable to devices that support access codes.

supports_backup_access_code_pool

Boolean Optional

Indicates whether the device supports backup access code pools. Applicable to devices that support access codes.

temperature_fahrenheit

Number Required

Temperature, measured in Fahrenheit. Applicable to thermostats.

temperature_celsius

Number Required

Temperature, measured in Celsius. Applicable to thermostats.

relative_humidity

Number Required

Relative humidity, the amount of moisture in the air compared to the maximum amount of moisture the air can hold at a given temperature. It is a percentage expressed as a number between 0 and 1, inclusive. Applicable to thermostats.

can_enable_automatic_heating

Boolean Required

Indicates whether the thermostat is connected to a heating system. Applicable to thermostats.

can_enable_automatic_cooling

Boolean Required

Indicates whether the thermostat is connected to a cooling system. Applicable to thermostats.

available_hvac_mode_settings

Array of enums (strings)

List of the available HVAC modes for the thermostat. Possible values:

  • cool

  • heat

  • heat_cool

  • off

Applicable to thermostats.

is_heating_available

Boolean Required

Indicates whether heating is available. Applicable to thermostats.

is_cooling_available

Boolean Required

Indicates whether cooling is available. Applicable to thermostats.

is_heating

Boolean Required

Indicates whether the heating system is currently heating. Applicable to thermostats.

is_cooling

Boolean Required

Indicates whether the cooling system is currently cooling. Applicable to thermostats.

is_fan_running

Boolean Required

Indicates whether the fan is currently running. Applicable to thermostats.

fan_mode_setting

Enum (string) Required

Fan mode of the thermostat. Possible values:

  • on: The fan continuously operates, ensuring air circulation regardless of the heating or cooling demand.

  • auto: The fan activates only when heating or cooling is on, making it a more energy-efficient choice.

Applicable to thermostats.

is_temporary_manual_override_active

Boolean Required

Indicates whether the current thermostat settings differ from the configured current_climate_setting. Applicable to thermostats.

current_climate_setting

Object Required

Current climate setting for the thermostat. Can only be overridden manually if current_climate_setting.manual_override_allowed is true. Applicable to thermostats. See Thermostat climate_setting Properties.

default_climate_setting

Object Optional

Default climate setting for the thermostat. Applicable to thermostats. See Thermostat climate_setting Properties.

is_climate_setting_schedule_active

Boolean Required

Indicates whether a climate setting schedule is active. Applicable to thermostats.

active_climate_setting_schedule

Object Optional

Active climate setting schedule, if one is active. Applicable to thermostats.

min_cooling_set_point_celsius

Number Required

Minimum cooling set point that this thermostat supports, measured in Celsius. Applicable to thermostats.

min_cooling_set_point_fahrenheit

Number Required

Minimum cooling set point that this thermostat supports, measured in Fahrenheit. Applicable to thermostats.

max_cooling_set_point_celsius

Number Required

Maximum cooling set point that this thermostat supports, measured in Celsius. Applicable to thermostats.

max_cooling_set_point_fahrenheit

Number Required

Maximum cooling set point that this thermostat supports, measured in Fahrenheit. Applicable to thermostats.

min_heating_set_point_celsius

Number Required

Minimum heating set point that this thermostat supports, measured in Celsius. Applicable to thermostats.

min_heating_set_point_fahrenheit

Number Required

Minimum heating set point that this thermostat supports, measured in Fahrenheit. Applicable to thermostats.

max_heating_set_point_celsius

Number Required

Maximum heating set point that this thermostat supports, measured in Celsius. Applicable to thermostats.

max_heating_set_point_fahrenheit

Number Required

Maximum heating set point that this thermostat supports, measured in Fahrenheit. Applicable to thermostats.

min_heating_cooling_delta_celsius

Number Required

Minimum temperature difference—that is, delta—in degrees Celsius between the cooling and heating set points when in heat-cool (auto) mode. Applicable to thermostats.

min_heating_cooling_delta_fahrenheit

Number Required

Minimum temperature difference—that is, delta—in degrees Fahrenheit between the cooling and heating set points when in heat-cool (auto) mode. Applicable to thermostats.

XXX_metadata

Object

Manufacturer-specific metadata for the device, where XXX is the manufacturer.

location Properties

PropertyTypeDescription

location_name

String

Name of the device location.

timezone

String

Time zone of the device location, as a name from the IANA time zone database.

accessory_keypad Properties

PropertyTypeDescription

is_connected

Boolean Required

Indicates whether the accessory keypad is connected to the device.

battery

Object Optional

Keypad battery properties. See Keypad battery Properties.

Keypad battery Properties

PropertyTypeDescription

level

Number Required

Indicates the battery level of the keypad as a decimal value between 0 and 1, inclusive.

keypad_battery Properties

PropertyTypeDescription

level

Number Required

Indicates the battery level of the keypad as a decimal value between 0 and 1, inclusive.

model Properties

PropertyTypeDescription

can_connect_accessory_keypad

Boolean Optional

Indicates whether the device can connect a accessory keypad.

display_name

String Required

Display name of the device model.

manufacturer_display_name

String Required

Display name that corresponds to the manufacturer-specific terminology for the device.

has_built_in_keypad

Boolean Optional

Indicates whether the device has a built in accessory keypad.

offline_access_codes_supported

Boolean Optional

Indicates whether the device supports offline access codes. Superseded by the can_program_offline_access_codes capability flag.

online_access_codes_supported

Boolean Optional

Indicates whether the device supports online access codes. Superseded by the can_program_online_access_codes capability flag.

accessory_keypad_supported

Boolean Optional

Indicates whether the device supports an accessory keypad. Superseded by device.model.can_connect_accessory_keypad.

Device battery Properties

PropertyTypeDescription

level

Number Required

Indicates the battery level of the device as a decimal value between 0 and 1, inclusive.

status

Enum (string) Required

Represents the current status of the battery charge level.

Values are:

  • critical: Indicates an extremely low level, suggesting imminent shutdown or an urgent need for charging.

  • low: Signifies that the battery is under the preferred threshold and should be charged soon.

  • good: Denotes a satisfactory charge level, adequate for normal use without the immediate need for recharging.

  • full: Represents a battery that is fully charged, providing the maximum duration of usage.

Thermostat climate_setting Properties

PropertyTypeDescription

automatic_heating_enabled

Boolean Required

Indicates whether the thermostat has heating turned on.

automatic_cooling_enabled

Boolean Required

Indicates whether the thermostat has cooling turned on.

hvac_mode_setting

Enum (string) Required

HVAC mode to which the thermostat is set.

Possible values:

  • cool

  • heat

  • heat_cool

  • off

cooling_set_point_celsius

Number Optional

The cooling set point, measured in Celsius, if cooling is turned on. When the ambient temperature rises above this set point, cooling turns on.

heating_set_point_celsius

Number Optional

The heating set point, measured in Celsius, if heating is turned on. When the ambient temperature drops below this set point, heating turns on.

cooling_set_point_fahrenheit

Number Optional

The cooling set point, measured in Fahrenheit, if cooling is turned on. When the ambient temperature rises above this set point, cooling turns on.

heating_set_point_fahrenheit

Number Optional

The heating set point, measured in Fahrenheit, if heating is turned on. When the ambient temperature drops below this set point, heating turns on.

manual_override_allowed

Boolean Required

Indicates whether another user can use the thermostat or API to override this climate setting.

Device Error Types

Errors are returned in a list. For example:

"errors": [
  {
    "is_device_error": true,
    "error_code": "device_disconnected",
    "message": "Device Disconnected, you may need to reconnect the device.",
    "created_at": "2023-06-27T22:50:19.440Z
  }
]

Generic Errors

Seam recommends adding error handling logic to you app for each generic error in this table. Seam may add more generic errors in the future, so your app should include a fallback case if it encounters an unknown generic error code.

Error TypeDescription

device_disconnected

Device is disconnected.

device_removed

Device has been removed from the connected account. Seam can no longer sync with this device.

hub_disconnected

The hub that the device is connected to is offline. Seam is unable to sync updates to this device.

Specific Errors

When Seam is able to provide more specific information beyond one of the generic errors, one or more errors from the list of specific errors may appear. This gives your app the option to display additional context or suggest provider specific resolutions.

If the connected account associated with a device has an error, it is attached to the device alongside any other device errors. Treat these errors as specific errors. See Connected Account Error Types.

Error TypeDescription

missing_device_credentials

Missing device credentials. Create a new Connect Webview to provide the credentials.

ttlock_lock_not_paired_to_gateway

The lock is not paired with a gateway. Seam cannot unlock or program access codes on the lock. Add a gateway to enable support.

Device Warning Types

Warnings are returned in a list. For example:

"warnings": [
  {
    "warning_code": "device_has_flaky_connection",
    "message": "Device has a flaky connection to the internet.",
    "created_at": "2023-06-27T22:50:19.440Z
  }
]
Warning TypeDescription

device_has_flaky_connection

Device has a flaky connection to the internet.

third_party_integration_detected

We detected that another third-party service (for example, Operto) is being used to manage this device. This situation may cause access codes that Seam sets to fail because the third-party service is making modifications to Seam codes.

salto_office_mode

Lock is in office mode. Access codes will not unlock doors. You can disable office mode in the Salto dashboard.

salto_privacy_mode

Lock is in privacy mode. Access Codes will not unlock doors. You can disable privacy mode by pressing the back of the lock.

ttlock_lock_gateway_unlocking_not_enabled

Turn on the remote unlock feature in the lock settings to enable unlocks. This feature must be turned on from the mobile app while near the door lock.

Device Manufacturers

On some account types, Seam provides additional information about the manufacturer of the door lock. Where the device is being connected through a smart hub, the manufacturer of the door lock might be different from that of the smart hub.

Seam might return the following manufacturers:

  • august

  • keywe

  • kwikset

  • lockly

  • philia

  • samsung

  • schlage

  • yale

  • unknown

Device Providers

Seam maintains a list of device providers that you can access using the List Device Providers endpoint.

The Device Provider object includes the following information:

PropertyTypeDescription

device_provider_name

String

Name of the device provider.

For example: august

display_name

String

Formatted version of the device_provider_name.

For example: August

image_url

String

Image URL for the provider logo.

provider_categories

Array

Array of associated categories for the provider.

Supported categories:

  • stable

  • consumer_smartlocks

  • thermostats

  • noise_sensors

The following example shows a device provider object:

{
    "device_provider_name": "august",
    "display_name": "August",
    "image_url": "https://connect.getseam.com/assets/images/logos/august_logo_square.png",
    "provider_categories": ["stable"]
}

Access Code Constraints

Each constraint in the code_constraints array contains objects with the constraint_type property. Depending on the constraint type, there may also be additional properties. Note that some constraints are manufacturer or device-specific.

The constraint_type property can be one of the following enum values:

Constraint TypeDescription

no_zeros

0s cannot be used as digits in the PIN code.

cannot_start_with_12

The PIN code cannot start with the sequence of digits 12.

no_triple_consecutive_ints

No more than three digits in a row can be consecutive or the same in the PIN code.

cannot_specify_pin_code

You cannot specify a PIN code. You must leave the code empty, and the lock provider generates a PIN code.

pin_code_matches_existing_set

If you specify a PIN code, it must match an existing set of PIN codes used in the account.

For example, the PIN code could match the code assigned to a user in the system.

start_date_in_future

For time-bound codes, the start date must be in the future.

no_ascending_or_descending_sequence

The PIN code cannot consist of a sequence of consecutive digits.

at_least_three_unique_digits

The PIN must contain at least three unique digits.

cannot_contain_089

The PIN code cannot contain the digits 0, 8, or 9.

For example, this restriction could apply to a cylinder lock that only includes the digits 1 to 7.

name_length

The name of the code has some restrictions on length.

When the constraint_type is name_length, the constraint object has one or two additional properties called min_length and max_length to specify the length constraints.

name_must_be_unique

The name of the code must be unique within the device.

device Methods

You can perform the following actions on device objects:

Last updated

Logo

© Seam Labs, Inc. All rights reserved.