githubEdit

Understanding Code Constraints

Learn about manufacturer- and device-specific constraints on codes.

When creating access codes, it is important to be aware of any constraints on the code. Get a device and review its device.properties.code_constraints. Seam represents each constraint as an object with a 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 any of the following enum values:

Constraint Type
Description

no_zeros

Cannot use 0s as digits in the PIN code.

cannot_start_with_12

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

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

PIN code cannot consist of a sequence of consecutive digits.

at_least_three_unique_digits

PIN code must contain at least three unique digits.

cannot_contain_089

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.

cannot_contain_0789

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

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

name_length

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

Name of the code must be unique within the device.


Provider-Specific Requirements

In addition to code constraints, some device providers have additional requirements for creating access codes.

Timezone Configuration

Some device providers require you to configure the device's timezone before creating time-bound access codes. This is because these devices schedule access codes using device-local time, but their APIs do not report the device's timezone.

Providers requiring timezone configuration:

circle-info

Permanent access codes (codes without starts_at and ends_at) do not require timezone configuration, even on providers that require it for time-bound codes.

Detecting timezone requirement:

Check for the provider-specific timezone warning in device.warnings:

For devices requiring timezone configuration, attempting to create a time-bound access code without first setting the timezone will result in a validation error.

Last updated

Was this helpful?