Introduction
This document contains all necessary resources to consume the RemoteLock RESTful API, meaning that a client application is able authenticate a user, fetch, create, update, delete and perform other actions via HTTP with objects in JSON representation.
Production environment
- OAuth base URL: https://connect.remotelock.com
- API base URL: https://api.remotelock.com
Changelog
- 2024-09-19
- Added
lock_action_schedule
andauto_lock_schedule
attributes to supporting devices.
- Added
- 2024-06-03
- Document Connector Lock
GET /devices/:id/configurability
,GET /devices/:id/configuration
, andPUT /devices/:id
endpoints
- Document Connector Lock
- 2024-02-16
- Introducing a new endpoint:
GET /connectors/schlage-engage/smart-cards
. This endpoint enables the retrieval of all available Schlage Engage smart card credentials. These credentials will be added to access guests and users being granted access to the device modelnumber: SchlageControl
,type: connector_lock
- Introducing a new endpoint:
- 2024-01-16
- Expose device
model_number
ondevice
/devices
responses
- Expose device
- 2023-02-13
- Added
connector_lock
device type
- Added
- 2022-06-16
- Added
deliver_as_qr_code
resource at /access_persons
- Added
- 2021-10-25
- When creating an access user one can no longer set the phone number.
- 2021-07-01
- Added
kore_ready_pin
resource at/kore_ready_pins
.
- Added
- 2021-02-24
- Renamed access persons attribute
guest_source
tosource
- Renamed access persons attribute
- 2020-08-27
- Renamed nested
door groups
resourcesdoors
toitems
, eg:/groups/:group_id/items
. And now it is possible to add adoor_group
item type to adoor group
- Renamed nested
- 2020-03-09
- Add
schlage_home_lock
device type andSchlageEncode
model number
- Add
- 2020-02-20
- Update webhook retry policy
- 2019-06-19
- If an associated record id (e.g.
access_schedule_id
) is given as an empty string (""
), treat that value the same as if it wereNULL
.
- If an associated record id (e.g.
- 2019-04-16
- Added
name
attribute toModel
- Added
- 2019-02-19
- Allow "remotelock" as vendor in accept header (versioning).
- 2019-02-14
- If a polymorphic record (e.g.
accessible
) does not exist, 404 is returned rather than a 422.
- If a polymorphic record (e.g.
- 2018-11-14
- Added
ZWaveLock
resource to/devices
endpoints.
- Added
- 2018-08-13
- Added
battery_replaced
event type forLock
.
- Added
- 2018-04-12
- Added a
signal_quality
attribute toLock
,PowerPlug
,Thermostat
. - Deprecated
wifi_level
attribute onLock
,PowerPlug
,Thermostat
.
- Added a
- 2017-09-19
- Added a
generate_pin
attribute when creating and updating access persons. Its default value isfalse
and whentrue
is passed, a random PIN is generated for that access person.
- Added a
- 2017-07-27
- Add requirements and recommendations for webhook endpoint handler.
See Notification Subscriber > Create a webhook notification subscriber section.
The new requirements will be enforced as of August 14, 2017.
- Add requirements and recommendations for webhook endpoint handler.
- 2017-07-18
- Add
status
attribute toaccess_guest
type:upcoming
initial status when start time has not met yetcurrent
initial status when start time has already metexpired
when end time has already metdeactivated
when a user manually deactivates it. See new endpoint below
- Add
status
attribute toaccess_user
type:current
initial statusdeactivated
when a user manually deactivates it. See new endpoint below
- Add
PUT /access_persons/:id/deactivate
endpoint to deactivate access person on associated devices and keep the record on history. We recommend using this new endpoint rather thanDELETE /access_persons/:id
because you can fetch past access persons using the filter explained below.
The current behavior ofDELETE /access_persons/:id
was preserved: once it deletes, the access person cannot be fetched via API or UI anymore. - Add ability to filter access persons by status(es). Example:
GET /access_persons?attributes[status][]=deactivated&attributes[status][]=expired
- When status filter is not provided to
GET /access_persons
, the current behavior was preserved: it only retrievesupcoming
andcurrent
statuses.
- Add
- 2017-06-20
- Remove
record_type
,record_id
,to_type
andto_id
attributes fromPUT /common_doors/:id
endpoint.
- Remove
- 2017-05-24
- Remove ACS instructions and all the remaining ACS controller endpoints.
- 2017-03-14
- remove
Access Instructions
,Device Permissions
,Guest Email Templates
,Roles
,User Roles
,User Invitations
- remove
- 2017-02-27
- Add event examples for new event types:
access_person_synced_event
,access_person_sync_failed_event
andaccess_guest_late_sync_event
- Add event examples for new event types:
- 2017-02-23
- Add the following fields to
access_person_access
API type:devices_count
devices_synced_count
devices_failed_sync_count
devices_pending_sync_count
- Add the following fields to
- 2017-02-20
- Add email preview/resend capability to Resort Lock Guests
- 2017-02-07
- remove
generated_pin_digits
attribute from the Account - removed all attributes from ACS doors except
name
,state
,lock_action_schedule_id
andlocation_id
- remove
- 2017-01-26
- change
wake_wifi
parameter options - add LS-5i only
wake_wifi
optionuser_action_except_manual
- change
- 2016-12-19
- Remove all billing endpoints.
- 2016-12-06
- Deprecate all ACS endpoints except ACS doors.
- Devices endpoint returns ACS doors instead of ACS readers.
- Multiple endpoints now accept or are related to ACS doors instead of ACS readers:
events, notifications, device permissions, door groups, notification subscriptions, access person accesses and common doors. - All the existing objects that used 'acs_reader' type are now migrated to 'acs_door' (ID stays the same).
- 2016-11-23
- Added Common Doors functionality
- 2016-11-18
wifi_level_changed
event is nowconnectivity
power_level_changed
event is nowpower_level_low
- 2016-11-15
- Guest emails are no longer automatically sent (with the exception of
integrations).
You must explicitly send the email via:POST /access_persons/:id/email/notify
- Guest emails are no longer automatically sent (with the exception of
integrations).
- 2016-11-02
- Local PINs support for 5i/6i/7i.
- 2016-11-01
- Resort Lock Guests only support hours. Please see parameters.
- Delivery of Access Denied and Locked notifications.
Getting Started
Introduction
This tutorial is a step-by-step configuration of an application that integrates with the RemoteLock API to manage access to rental properties or rooms. In the next steps we will go over:
- Creating an OAuth Application in the developer portal
- Customer Authentication via OAuth
- Retrieving the list of registered locks
- Generating Access User and Guest codes
- Getting confirmation that access is granted with a Webhook Subscription (optional)
- Working with ResortLocks (optional)
Throughout this tutorial you will see links to different parts of the RemoteLock API documentation. This documentation is more detailed and can be used for troubleshooting or if you have a different use case from what's presented here.
What you're going to need
- A valid account on the RemoteLock Connect Portal
- A registered lock on this account
- A Tool to send and inspect HTTP requests. In the examples, we will use
curl
, which is available for all operating systems, but feel free to use any tool you're more familiar with - as long as it's TLS (HTTPS) enabled - Optional: a separate account to represent a "customer account" - if you have one, you should register your lock here for testing
Creating an OAuth Application
Create Account
Before you can create an OAuth Application, first create an account on the RemoteLock Connect Portal. Enter your user information on Step 1, then select the Basic Plan option on Step 2. When presented with payment information, you can select “Skip” to complete account creation.
Setup an OAuth Application
Now that an account is created, send an e-mail to sales@remotelock.com requesting API access for your account. Once API access is enabled, you can go to the developer portal, click on "New OAuth Application" and fill the form:
- Name: The name of your application. In the examples here we'll use "My Rental Application"
- Redirect URI: When the user authorizes your application, they will be
redirected to this URL with an authorization code. With this code your
application will be able to generate a token to make authenticated requests
for the resources of that user. In this example we'll use a special value for
testing and non-web applications:
urn:ietf:wg:oauth:2.0:oob
. It causes the endpoint to just output a JSON with the authorization code after user authorization.
After submitting the form, you will be redirected to a page with your generated Client ID and Client Secret. These are the credentials for your integration, so make sure you take note and keep them in a secure place. For security reasons, this is the only time the client secret is visible.
Authenticating a User
Generating an Authorization Code
The RemoteLock API supports two of the OAuth 2.0 grant types: Authorization Code and Client Credentials. On this example, since you want your users to authorize your application to manage their locks, we will use the Authorization Code Grant. You can check the Authentication Section of the documentation for more details on the two types of grants.
With your OAuth application created, your users can be redirected to the authorization URL to allow your application to access their resources. The URL must be formatted as below:
https://connect.remotelock.com/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&response_type=code
In the above example, you will be replacing CLIENT_ID
and REDIRECT_URI
with
values from the OAuth Application you just created. If you view your application
on the developer portal, you will see an "Authorize" button next to the redirect
URI that takes you to a generated URL using the above format. If you have
created a separate account to represent a customer, you should go to that URL
using an incognito / private mode, so you can sign in using that account and not
your current one.
Once you go to this URL, you will either see a sign in page or, if you're
already logged in, a list of accounts. Unless you have access to shared
accounts, this list should only have one pre-selected option, so all you need
to do is click "Authorize". If our Redirect URI was set to a URL on an
application, that is where we would've been taken now, but since we've used
urn:ietf:wg:oauth:2.0:oob
. What you should see is a JSON result like so:
{"code":"a1b2...d4e5","state":""}
The value in the code
attribute is what we call your authorization code,
we'll use it to generate a token to access a user's data.
Generating a Token
To generate a token, we must send the authorization code in a POST
request like the following:
curl -X POST \
-d code=$AUTHORIZATION_CODE \
-d client_id=$CLIENT_ID \
-d client_secret=$CLIENT_SECRET \
-d redirect_uri=urn:ietf:wg:oauth:2.0:oob \
-d grant_type=authorization_code \
'https://connect.remotelock.com/oauth/token'
Replacing $AUTHORIZATION_CODE
, $CLIENT_ID
and $CLIENT_SECRET
with their
respective values. The response should look like the following:
{
"access_token": "acc3...063n",
"token_type": "bearer",
"expires_in": 7199,
"refresh_token": "13f1...ab14",
"created_at": 1531403248
}
The value in the access_token
attribute of that response is what we'll use as
authorization in the API requests to manipulate that user's resources in the
next steps.
Retrieving the List of Locks
The next step is to retrieve the list of locks in the account so that your user can assign them to Rooms/Units in your application. To fetch that list, use the following request:
curl -H 'Authorization: Bearer $ACCESS_TOKEN' \
-H 'Accept: application/vnd.lockstate+json; version=1' \
'https://api.remotelock.com/devices'
Replacing $ACCESS_TOKEN
in the authorization header with the value we
generated in the previous step. Notice how an additional header is required to
specify the API version we're using. See the
API Versioning
section of the documentation for more details. The response should look like this:
{
"data": [
{
"type": "lock",
"attributes": {
"name": "My Lock",
"heartbeat_interval": 1200,
// ...
"model_id": "1d99dded-91ce-47ed-90e4-84389e783a92",
"location_id": "38e651b3-9944-4539-be3b-13203b61d638"
},
"id": "053994ef-ceed-455a-a5f7-7962261a722d",
"links": {
// ...
},
"meta": {
// ...
}
},
// ...
],
"meta": {
// ...
}
}
In the response, each entry in the data
array is a Device. The most important
value we need to consider here is the id
and type
, as we will need them to
assign an accessible when granting access, so this is what your application
should keep track of.
If you have many devices of different types, or if your application's flow will only use specific device types, you can use query string parameters on the URL to filter down the results, like so:
curl -H 'Authorization: Bearer $ACCESS_TOKEN' \
-H 'Accept: application/vnd.lockstate+json; version=1' \
'https://api.remotelock.com/devices?type[]=lock&type[]=zwave_lock&type[]=resort_lock'
The above example changes the URL to add a filter on type
, to return only
lock
s, zwave_lock
s and resort_lock
s. You can check our documentation for
more information on Filtering and Listing Devices.
For more information on the JSON structure of requests and responses, refer to the JSON Structure section of the documentation.
The next section of the tutorial is specific to connected locks, if you need to grant access to ResortLocks (algorithmic code locks), refer to the Working with ResortLocks section in the end of the tutorial.
Granting Door Access to a User
Granting access is done in two steps:
- Create an Access User (we'll also create an Access Guest in the next step) with a credential that can be used on the lock.
- Grant that Access User access to the lock.
Step 1: Create an Access User
To create an Access User, send the following POST
request:
curl -X POST \
-H 'Authorization: Bearer $ACCESS_TOKEN' \
-H 'Accept: application/vnd.lockstate+json; version=1' \
-H 'Content-Type: application/json' \
-d '{
"type": "access_user",
"attributes": {
"name": "Example User",
"generate_pin": true
}
}' \
'https://api.remotelock.com/access_persons'
Replacing $ACCESS_TOKEN
in the authorization header with the value we
generated in the authentication step. Keep in mind that POST and PUT requests
require an additional Content-Type: application/json
header.
You will get a response that looks like this:
{
"data": {
"type": "access_user",
"attributes": {
"name": "Example User",
"pin": "2155",
// ...
"created_at": "2018-07-12T21:05:30Z",
"updated_at": "2018-07-12T21:05:30Z"
},
"id": "1864e7e5-2475-44ab-9dfe-2912469fc1b2",
"links": {
// ...
}
}
}
Notice that since we used "generate_pin": true
, a PIN was generated. You could
set your own PIN, along with other options for users, all listed in the
documentation for creating an access user.
The most important value in this response is the id
. We'll be using it,
together with the lock's id
and type
we have from the previous step to grant
this newly created user access to our lock.
Step 2: Grant Access
To grant access, send the following POST request:
curl -X POST \
-H 'Authorization: Bearer $ACCESS_TOKEN' \
-H 'Accept: application/vnd.lockstate+json; version=1' \
-H 'Content-Type: application/json' \
-d '{
"attributes": {
"accessible_id": "053994ef-ceed-455a-a5f7-7962261a722d",
"accessible_type": "lock"
}
}' \
'https://api.remotelock.com/access_persons/1864e7e5-2475-44ab-9dfe-2912469fc1b2/accesses'
There are a few more things to replace on this step:
- The usual
$ACCESS_TOKEN
accessible_id
andaccessible_type
must use the values you received for your lock from the device listing.- The id we just got from creating the access user is used in the URL, so make sure you replace that with the one you've got from the previous step.
For more options and details, refer to the documentation section on granting access.
The response will look like this:
{
"data": {
"type": "access_person_access",
"attributes": {
// ...
"access_person_id": "1864e7e5-2475-44ab-9dfe-2912469fc1b2",
"access_person_type": "access_user",
"accessible_id": "053994ef-ceed-455a-a5f7-7962261a722d"
},
"id": "c5d4ef02-1538-4924-990e-21e40dd0d5a6",
"links": {
// ...
}
}
}
Your user is all set! The next time the lock wakes up, this new code will be synchronized and usable to lock/unlock your lock.
Granting Door Access to a Guest
This step is very similar to the previous one. However, in step 1 you'll be
creating an Access Guest instead of an Access User. The creation of an
Access Guest also requires two additional attributes: starts_at
and ends_at
,
to set the time period during which that Guest has access.
Step 1: Create an Access Guest
To create an Access Guest, send the following POST
request:
curl -X POST \
-H 'Authorization: Bearer $ACCESS_TOKEN' \
-H 'Accept: application/vnd.lockstate+json; version=1' \
-H 'Content-Type: application/json' \
-d '{
"type": "access_guest",
"attributes": {
"starts_at": "2020-01-02T16:04:00",
"ends_at": "2021-01-02T16:04:00",
"name": "My Guest",
"pin": "4567"
}
}' \
'https://api.remotelock.com/access_persons'
Replacing $ACCESS_TOKEN
in the authorization header with the value we
generated in the authentication step. Feel free to change the starts_at
and
ends_at
values. Notice that the time format on those do not include a
timezone. The effective timezone is the one configured at the lock.
You will get a response that looks like this:
{
"data": {
"type": "access_guest",
"attributes": {
"name": "My Guest",
"pin": "4567",
// ..
"starts_at": "2020-01-02T16:04:00",
"ends_at": "2021-01-02T16:04:00"
},
"id": "036aa265-d008-4c1a-942d-905e7f2ec3e2",
"links": {
// ...
}
}
}
The most important value in this response is the id
. We'll be using it,
together with the lock's id
and type
we have from the previous step to grant
this newly created user access to our lock.
For more information see the documentation section for creating an access guest.
Step 2: Grant access
Now all you need to do is grant access using that Access Guest's id
, just like you did before with the Access User. To grant access, send the following POST request:
curl -X POST \
-H 'Authorization: Bearer $ACCESS_TOKEN' \
-H 'Accept: application/vnd.lockstate+json; version=1' \
-H 'Content-Type: application/json' \
-d '{
"attributes": {
"accessible_id": "053994ef-ceed-455a-a5f7-7962261a722d",
"accessible_type": "lock"
}
}' \
'https://api.remotelock.com/access_persons/036aa265-d008-4c1a-942d-905e7f2ec3e2/accesses'
Replacing $ACCESS_TOKEN
in the authorization header with the value we generated in the authentication step. And the response will look like this:
{
"data": {
"type": "access_person_access",
"attributes": {
// ...
"accessible_type": "lock",
"access_person_id": "036aa265-d008-4c1a-942d-905e7f2ec3e2",
"access_person_type": "access_guest",
"accessible_id": "053994ef-ceed-455a-a5f7-7962261a722d"
},
"id": "6786a08e-665e-4722-a68f-a6b41fa129a0",
"links": {
// ...
}
}
}
Your guest is all set! The next time the lock wakes up, this new code will be synchronized and usable to lock/unlock your lock within that specified time period.
Webhook Notification Subscriptions (Optional)
Your application might need to be informed of events as they happen in the user's account, like when one of the codes is synchronized with a lock, or when access is granted or denied. The best way to do that is by creating a webhook notification subscription, so that as events happen, a URL in your application is sent data about the event for your application to act upon. In this example, you will create a webhook that will be triggered when an access is synchronized with the lock you've selected previously.
Create a Webhook Notification Subscriber
The first step is to create a Notification Subscriber. Send the following POST request:
curl -X POST \
-H 'Authorization: Bearer $ACCESS_TOKEN' \
-H 'Accept: application/vnd.lockstate+json; version=1' \
-H 'Content-Type: application/json' \
-d '{
"type": "webhook_notification_subscriber",
"attributes": {
"active": true,
"name": "My webhook",
"url": "https://myrentalapplication.com/my_webhook_example",
"content_type": "json",
"secret": "oRWQWqQ0sn5xugpl"
}
}' \
'https://api.remotelock.com/notification_subscribers'
Where the url
must be a valid endpoint of your application able to handle this
request. Make sure you review the requirements, along with a few more options
for configuring webhooks in the documentation section about
creating a webhook notification subscriber. The response should look like this:
{
"data": {
"type": "webhook_notification_subscriber",
"attributes": {
"name": "My webhook",
"url": "https://myrentalapplication.com/my_webhook_example",
"content_type": "json",
"secret": "oRWQWqQ0sn5xugpl",
"active": true,
"created_at": "2018-07-13T14:37:17Z",
"updated_at": "2018-07-13T14:37:17Z"
},
"id": "df4e347b-b885-47da-b627-59d0b4b47807",
"links": {
// ...
}
}
}
Create a Notification Subscription
With the Subscriber configured, you now can associate it with event types and a
publisher. In this case we'll create a Notification Subscription for the
access_person_synced
event using the lock id
and type
as a publisher. Send the following POST
request:
curl -X POST \
-H 'Authorization: Bearer $ACCESS_TOKEN' \
-H 'Accept: application/vnd.remotelock+json; version=1' \
-H 'Content-Type: application/json' \
-d '{
"attributes": {
"events": [
{
"event_type": "access_person_synced"
}
],
"publisher_type": "lock",
"publisher_id": "053994ef-ceed-455a-a5f7-7962261a722d",
"subscriber_type": "webhook_notification_subscriber",
"subscriber_id": "df4e347b-b885-47da-b627-59d0b4b47807"
}
}' \
'https://api.remotelock.com/notification_subscriptions'
Don't forget to replace $ACCESS_TOKEN
with your generated value. Notice that
the publisher_id
and publisher_type
here are the values from our lock, and
the subscriber_id
and subscriber_type
, values for the webhook subscriber
created in the previous step. It's worth mentioning that multiple event types
can be configured, and the publisher can be a broader scope, like a Location or
even the entire Account. For more details, see the documentation section on
creating notification subscriptions. You will get a response similar to the one below:
{
"data": {
"type": "notification_subscription",
"attributes": {
"events": [
{
"event_type": "access_person_synced"
}
],
"created_at": "2018-07-13T14:54:11Z",
"updated_at": "2018-07-13T14:54:11Z",
"subscriber_id": "df4e347b-b885-47da-b627-59d0b4b47807",
"subscriber_type": "webhook_notification_subscriber",
"publisher_id": "053994ef-ceed-455a-a5f7-7962261a722d",
"publisher_type": "lock"
},
"id": "09491f96-da50-4ae1-8d29-390e5397d5ad",
"links": {
// ...
}
}
}
Now, whenever that event happens on that lock, a POST
request will be sent to the configured URL with a body similar to the one below:
{
"data": {
"type": "access_person_synced_event",
"attributes": {
"source": "user",
"status": "succeeded",
"time_zone": "America/Denver",
"occurred_at": "2018-07-10T18:15:32Z",
// ...
"publisher_id": "053994ef-ceed-455a-a5f7-7962261a722d",
"publisher_type": "lock",
"associated_resource_id": "1864e7e5-2475-44ab-9dfe-2912469fc1b2",
"associated_resource_type": "access_user"
},
"id": "a152915c-3d12-480b-8d68-baebbfa1264c",
"links": {
// ...
}
}
}
Working with ResortLocks (Optional)
The process for granting access to ResortLocks works differently from Wi-Fi
connected locks, as they use algorithmic codes instead of synchronizing codes
over Wi-Fi. If you have a registered ResortLock, the list of devices in the
response from the /devices
endpoint should include an object similar to this one in the data
array:
{
"type": "resort_lock",
"attributes": {
"name": "My ResortLock",
// ...
},
"id": "ed1b7a1b-0dc5-4081-8658-728d96ed0dde",
"links": {
// ...
}
}
To create a guest for this ResortLock, send the following POST
request:
curl -X POST \
-H 'Authorization: Bearer $ACCESS_TOKEN' \
-H 'Accept: application/vnd.remotelock+json; version=1' \
-H 'Content-Type: application/json' \
-d '{
"attributes": {
"resort_lock_id": "ed1b7a1b-0dc5-4081-8658-728d96ed0dde",
"name": "My ResortLock Guest",
"starts_at": "2020-01-02T13:00:00",
"ends_at": "2021-01-02T16:00:00"
}
}' \
'https://api.remotelock.com/resort_lock_guests'
Replacing $ACCESS_TOKEN
in the authorization header with the value we
generated in the authentication step, and the value for resort_lock_id
with
the id for your ResortLock. This guest will only have access between the times
in starts_at
and ends_at
, and those should not use minutes or seconds - any
value here will be converted to 0. Refer to the
Resort Lock Guests
documentation section for more information.
The response will look like this:
{
"data": {
"type": "resort_lock_guest",
"attributes": {
"name": "My ResortLock Guest",
"pin": "123456789012",
"starts_at": "2020-01-02T13:00:00",
"ends_at": "2021-01-02T16:00:00",
// ...
"resort_lock_id": "ed1b7a1b-0dc5-4081-8658-728d96ed0dde"
},
"id": "f66610b0-a73f-4cee-9ba5-eafd73f80e4d",
"links": {
// ...
}
}
}
The PIN for that guest is the pin
value in the response. In the above example,
123456789012
.
Authentication
RemoteLock uses OAuth 2.0 to authenticate users in applications installed in mobile devices or running in external servers. The supported OAuth flows:
- Authorization Code Grant - RFC 6749-Section 4.1
The RemoteLock user credentials are only accepted in RemoteLock sign in page, which generates an Authorization Code for an access token request.
The access token for this flow gives access to the user resources that signed in using your Application.
- Client Credentials Grant - RFC 6749-Section 4.4
Only the Application ID and Secret are used to authorize access to the API.
The access token for this flow only allows access to resources associated with the application's account.
Once a user is authorized, every API request must include a valid access token.
The following OAuth 2.0 endpoints are available under https://connect.remotelock.com.
These are needed for OAuth2 client library you'll be using:
GET /oauth/authorize
POST /oauth/token
Choose an OAuth2 client library for your language
To simplify integration with RemoteLock it is strongly recommended to use one of the open source OAuth2 client libraries available in your language. The library will handle many details described in this documentation.
Since OAuth2 is an open protocol a quick Google search will give you at least a couple options. Here are some examples:
- iOS: https://github.com/OAuthSwift/OAuthSwift
- Android: https://github.com/wuman/android-oauth-client
- Ruby: https://github.com/intridea/oauth2
Setup a new Application
- Send an email to sales@remotelock.com requesting API Access for your account.
- Once API access is enabled for your account, go to the developer portal and sign in to manage your OAuth Applications.
1. Authorization Code Grant - RFC 6749-Section 4.1
1.1. Generating the initial Authorization Code
Whenever you need access to a user's account for the first time, the application should load the Authorize URL in a browser or webview. The user will enter the credentials and the server will redirect to the Callback URL so that the application can extract the authorization code and then generate an access token.
Example:
Let your Application settings be:
Application ID: abc
Secret: xyz
Callback URL: http://your.server/oauth_callback
The Authorize URL should be:
https://connect.remotelock.com/oauth/authorize?client_id=a1b2c3&response_type=code&redirect_uri=http://your.server/oauth_callback
Your app should load the above URL in a browser and the user will enter credentials on it. Once the authentication succeeds, the server will redirect the request to:
http://your.server/oauth_callback?code=123
Where 123 is the Authorization Code that is valid for 10 minutes, which is enough time to your application request the token for the first time. Your application must be able to handle this URL in order to capture this code so that it can obtain the OAuth Token.
1.2. Generating an OAuth Token
- Make the following POST request to obtain Access and Refresh tokens:
POST /oauth/token
Host: connect.remotelock.com
Content-Type: application/x-www-form-urlencoded
code=123&
client_id=abc&
client_secret=xyz&
redirect_uri=http://your.server/oauth_callback&
grant_type=authorization_code
- The response will be a JSON such as:
{
"access_token": "1/4cc3ss-t0k3n",
"expires_in": 7200,
"token_type": "Bearer",
"refresh_token": "1/r3fR3sH-t0k3n"
}
1.3. Refresh Token
Each access token expires in 7200 seconds (2 hours). The access token JSON response contains a refresh_token that can be used to issue a new access_token without asking for user authentication again.
- In order to get a new access token, make the following POST request:
POST /oauth/token
Host: connect.remotelock.com
Content-Type: application/x-www-form-urlencoded
client_id=abc&
client_secret=123&
refresh_token=1/r3fR3sH-t0k3n&
grant_type=refresh_token
- The response will be a JSON such as:
{
"access_token": "1/N3w-4cc3ss-T0k3n",
"expires_in": 7200,
"refresh_token": "1/n3w-r3fR3sH-t0k3n",
"token_type": "Bearer"
}
Your application should store both Access Token and Refresh Token so that it can access the user account when the user is offline or the application is running in background.
Whenever an Access Token expires and you use the Refresh Token to request a new Access Token, the response includes a new Refresh Token, meaning the previous one became invalid, and then your application should store the new Access Token and Refresh Token replacing the previous (expired) ones.
Here is an example of this flow:
- Customer authorizes and you get the initial Access Token A as well as a Refresh Token X
- You access customer data using Access Token A
- After 2 hours the Access Token A expires, but you need to access customer data and you notice that Access Token A is expired
- You make a request to issue a new Access Token based on the Refresh Token X and you get a new Access Token B and a new Refresh Token Y. At this point, the Refresh Token X becomes invalid since it was just used
- Repeat from step 2 replacing A with B and X with Y
The user can revoke the authorization to your app at anytime, so the Refresh Token will become invalid and your app will need to ask for user authorization again.
2. Client Credentials Grant - RFC 6749-Section 4.4
In this flow, only your account resources are available via API. For this reason, the only credentials required are the Application ID and Secret.
Let your Application settings be:
Application ID: abc
Secret: xyz
2.1. Generating an OAuth Token
- Make the following POST request to obtain Access and Refresh tokens:
POST /oauth/token
Host: connect.remotelock.com
Content-Type: application/x-www-form-urlencoded
client_id=abc&
client_secret=xyz&
grant_type=client_credentials
- The response will be a JSON such as:
{
"access_token": "1/4cc3ss-t0k3n",
"expires_in": 7200,
"token_type": "Bearer",
}
Notice that this flow does not include a Refresh Token, meaning that this same request must be done when the access token expires.
Making requests with an OAuth Token
Just make a GET request using a valid access token. Example:
GET /locations
Host: api.remotelock.com
Accept: application/vnd.lockstate.v1+json
Authorization: Bearer 1/4cc3ss-t0k3n
Revoking an OAuth Access Token
Send the following POST request to immediately revoke a token:
POST /oauth/revoke
Host: connect.remotelock.com
Content-Type: application/x-www-form-urlencoded
client_id=abc&
client_secret=xyz&
token=1/4cc3ss-t0k3n
JSON Structure
Overview
JSON request structure
The HTTP methods POST
/PUT
/PATCH
require the header Content-Type: application/json
and the request body must contain a valid JSON
structure.
Other HTTP methods accept empty or missing Content-Type
header since the request body
is ignored.
Example JSON request structure:
POST https://api.remotelock.com/articles/3/comments
{
"attributes": {
"body": "Very informative article"
}
}
JSON response structure
- All responses have
data
root key.data
object keys areid
,type
,attributes
andlinks
(optional). meta
top level key is used for collection pagination.- Relationship resource URLs can be fetched from the
links
key. Aself
URL is also included. - "1-to-1" relationship object ids are included in the
attributes
object. Example:"author_id": 1
for the author relationship. - All date and time fields are using ISO 8601 format.
JSON response structure for a collection
GET https://api.remotelock.com/articles
{
"data": [
{
"type": "article",
"id": "3",
"attributes": {
"title": "JSON API paints my bikeshed!",
"body": "The shortest article. Ever.",
"author_id": 1,
"created_at": "2015-07-23T18:51:11Z",
"updated_at": "2015-07-23T18:51:11Z"
},
"links": {
"self": "https://api.remotelock.com/articles/3",
"author": "https://api.remotelock.com/authors/1",
"comments": "https://api.remotelock.com/comments"
}
},
{
"type": "article",
"id": "5",
"attributes": {
"title": "Ruby on Rails framework",
"body": "RoR is 10 years old!",
"author_id": 1,
"created_at": "2015-05-22T14:56:29Z",
"updated_at": "2015-05-22T14:56:28Z"
},
"links": {
"self": "https://api.remotelock.com/articles/3",
"author": "https://api.remotelock.com/authors/1",
"comments": "https://api.remotelock.com/comments"
}
}
],
"meta": {
"page": 1,
"per_page": 2,
"total_pages": 7,
"total_count": 14
}
}
JSON response structure for a single resource
GET https://api.remotelock.com/articles/3
{
"data": {
"type": "article",
"id": "3",
"attributes": {
"title": "JSON API paints my bikeshed!",
"body": "The shortest article. Ever.",
"author_id": 1,
"created_at": "2015-07-23T18:51:11Z",
"updated_at": "2015-07-23T18:51:11Z"
},
"links": {
"self": "https://api.remotelock.com/articles/3",
"author": "https://api.remotelock.com/authors/1",
"comments": "https://api.remotelock.com/comments"
}
}
}
Errors
There are 2 types of error responses:
- resource errors
- general errors
Resource errors
Resource errors are used to indicate an error happened for a resource you're trying to work with. For example: if an invalid configuration option is passed when updating a lock, the response will be a resource error.
Here's the example response when an error happens:
{
"attributes": {
"name": "",
"age": 10
},
"errors": [{
"attribute": "name",
"messages": ["is empty"],
"full_messages": ["name is empty"]
}]
}
In case an error is not related to a particular attribute, the errors
attribute
value will be null
.
{
"attributes": {
"name": "",
"age": 10
},
"errors": [{
"attribute": null,
"messages": ["Subuser creation limit reached, please upgrade your account."],
"full_messages": ["Subuser creation limit reached, please upgrade your account."]
}]
}
General errors
General errors are used to describe application-wide errors. For example: the response contains general error if you try creating a lock but the account doesn't have a paid subscription.
Here's the example response:
{
"message": "Please create a subscription",
"type": "billing_subscription_required"
}
Pagination
Collection resources can be paginated using the data from meta
top level key.
{
"data": {
//...
},
"meta": {
"page": 1,
"per_page": 2,
"total_pages": 7,
"total_count": 14
}
}
On every endpoint that responds with a collection of resources, you can provide the following query parameters:
page
(Default: 1, Minimum: 1, Maximum: value oftotal_pages
frommeta
)per_page
(Default: 25, Mimimum: 1, Maximum: 50)
The pagination is limited to access up to 10,000 resources, which means the
product page * per_page
should not exceed that number.
Examples:
/devices?page=5
retrieves the 5th page of devices/devices?per_page=40
retrieves the first 40 devices/devices?per_page=50&page=2
retrieves devices from 51 to 100
HTTP Status Codes
Request Method | Response Outcome | Response Status Code |
---|---|---|
GET | Success | 200 |
PUT/PATCH | Success | 200 |
POST | Success | 201 |
DELETE | Success | 204 |
ANY | Malformed request | 400 |
ANY | Not permitted | 401 |
ANY | Payment required | 402 |
ANY | Expired/Invalid token | 403 |
GET | Not found | 404 |
POST | Duplicate resource | 409 |
POST/PUT/PATCH/DELETE | Validation error | 422 |
ANY | Unexpected server error | 5xx |
Filtering
Filter results by multiple ids
Supported in endpoints that return a collection of resources
- Query format:
?id[]=<id 1>&id[]=<id 2>&...
Example: To retrieve devices with ids a1b2 and c3d4:
GET https://api.remotelock.com/devices?id[]=a1b2&id[]=c3d4
Filter results by resource type
Supported in endpoints that return a collection of resources of multiple types
Query format for a single type:
?type=<type>
Example: To retrieve devices of a single type, lock:
GET https://api.remotelock.com/devices?type=lock
Query format for multiple type:
?type[]=<type 1>&type[]=<type 2>&...
Example: To retrieve devices of types power_plug and camera:
GET https://api.remotelock.com/devices?type[]=camera&type[]=power_plug
Filter results by association
Used to apply the id or type filter in a resource association
Example: To retrieve devices of the location a1b2
GET https://api.remotelock.com/devices?attributes[location_id]=a1b2
Sorting
Most endpoints that return a collection are sortable. Additionally, these endpoints usually have a default sort attribute. The documentation for each endpoint specifies the default sort attribute as well as other attributes that can be used for sorting (if any).
Query formats
- using single sort attribute:
?sort=<attr>
- using multiple sort attributes:
?sort[]=<attr 1>&sort[]=<attr 2>&...
Sort order
The default sort order for any attribute is "ascending". In order to get
"descending" sort order prefix the attribute with hyphen (-
).
Examples:
- "ascending" sort order:
?sort=name
- "descending" sort order with hyphen:
?sort=-name
Examples
Retrieve devices sorted "ascending" by
name
attribute:
GET https://api.remotelock.com/devices?sort=name
Retrieve devices sorted "descending" by
name
attribute:
GET https://api.remotelock.com/devices?sort=-name
Retrieve devices sorted "ascending" by
created_at
and "descending" byname
:
GET https://api.remotelock.com/devices?sort[]=created_at&sort[]=-name
Versioning
Specifying API version
It is strongly recommended to explicitly specify the version. Specifying the version can be done:
in the resource
url
https://api.remotelock.com/v1/articles/1
or via request
Accept
header
Accept: application/vnd.remotelock.v1+json
If API version is not specified, the application will default to the latest version.
Changes
API version will increase only if there's a breaking change.
For example: if a single field is added to the resource, the version won't change as this is a non breaking change.
Rate Limiting
Currently, each account is limited to 120 requests/minute.
Each API response includes rate limiting related headers such as:
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 15
X-RateLimit-Reset: 1452626187
Header | Description |
---|---|
X-RateLimit-Limit | The maximum number of requests that the account is allowed to make per minute. |
X-RateLimit-Remaining | The number of requests remaining in current rate limit window. |
X-RateLimit-Reset | UTC epoch seconds in which the current rate limit window will reset |
Whenever the account has exceeded the rate limit, the request will be responded with status 429 (Too Many Requests) and the body will contain following JSON:
{
"message": "Your account has exceeded the rate limit. Check the X-RateLimit-* headers."
}
Alternative
Rather than polling our API, we offer Webhook Notification Subscriptions to keep your application up to date.
Access Exceptions
Get all access exceptions
Request
Endpoint
GET /access_exceptions
GET /access_exceptions
Parameters
Name | Description |
---|---|
sort | Sortable attributes: created_at and name, default: created_at ascending |
Response
200 OK
{
"data": [
{
"type": "access_exception",
"attributes": {
"name": "Molestiae quos odio ut.",
"dates": [
{
"start_date": "2016-11-24",
"end_date": "2016-11-25"
},
{
"start_date": "2015-12-25",
"end_date": "2015-12-25"
}
],
"created_at": "2024-09-19T12:13:31Z",
"updated_at": "2024-09-19T12:13:31Z"
},
"id": "ed26f524-ba71-4492-9435-3bb420a8cb26",
"links": {
"self": "http://api.remotelock.dev/access_exceptions/ed26f524-ba71-4492-9435-3bb420a8cb26"
}
}
],
"meta": {
"page": 1,
"per_page": 25,
"total_count": 1,
"total_pages": 1
}
}
Get an access exception
Request
Endpoint
GET /access_exceptions/:id
GET /access_exceptions/2843adbc-e9f2-4c7e-a1ca-634e591a58c9
Parameters
None.
Response
200 OK
{
"data": {
"type": "access_exception",
"attributes": {
"name": "Explicabo debitis et nisi.",
"dates": [
{
"start_date": "2016-11-24",
"end_date": "2016-11-25"
},
{
"start_date": "2015-12-25",
"end_date": "2015-12-25"
}
],
"created_at": "2024-09-19T12:13:32Z",
"updated_at": "2024-09-19T12:13:32Z"
},
"id": "2843adbc-e9f2-4c7e-a1ca-634e591a58c9",
"links": {
"self": "http://api.remotelock.dev/access_exceptions/2843adbc-e9f2-4c7e-a1ca-634e591a58c9"
}
}
}
Create an access exception
Request
Endpoint
POST /access_exceptions
POST /access_exceptions
Parameters
{
"attributes": {
"name": "Thanks Giving and Christmas",
"dates": [
{
"start_date": "2016-11-24",
"end_date": "2016-11-25"
},
{
"start_date": "2015-12-25",
"end_date": "2015-12-25"
}
]
}
}
Name | Description |
---|---|
attributes[name] required | Access exception name |
attributes[dates] required | [{ "start_date": "2016-01-01", "end_date": "2016-01-01" }, ...] |
Response
201 Created
{
"data": {
"type": "access_exception",
"attributes": {
"name": "Thanks Giving and Christmas",
"dates": [
{
"start_date": "2016-11-24",
"end_date": "2016-11-25"
},
{
"start_date": "2015-12-25",
"end_date": "2015-12-25"
}
],
"created_at": "2024-09-19T12:13:32Z",
"updated_at": "2024-09-19T12:13:32Z"
},
"id": "f6a18654-2ea5-43e1-86b8-79c7b8b72d1e",
"links": {
"self": "http://api.remotelock.dev/access_exceptions/f6a18654-2ea5-43e1-86b8-79c7b8b72d1e"
}
}
}
Update an access exception
Request
Endpoint
PUT /access_exceptions/:id
PUT /access_exceptions/ad193735-b89b-471f-9140-8fd0f086289b
Parameters
{
"attributes": {
"name": "Thanks Giving",
"dates": [
{
"start_date": "2016-11-24",
"end_date": "2016-11-25"
}
]
}
}
Name | Description |
---|---|
attributes[name] | Access exception name |
attributes[dates] required | [{ "start_date": "2016-01-01", "end_date": "2016-01-01" }, ...] |
Response
200 OK
{
"data": {
"type": "access_exception",
"attributes": {
"name": "Thanks Giving",
"dates": [
{
"start_date": "2016-11-24",
"end_date": "2016-11-25"
}
],
"created_at": "2024-09-19T12:13:32Z",
"updated_at": "2024-09-19T12:13:32Z"
},
"id": "ad193735-b89b-471f-9140-8fd0f086289b",
"links": {
"self": "http://api.remotelock.dev/access_exceptions/ad193735-b89b-471f-9140-8fd0f086289b"
}
}
}
Delete an access exception
Request
Endpoint
DELETE /access_exceptions/:id
DELETE /access_exceptions/7ba6f1a3-5a6b-4ecc-9d8f-62bd8e092148
Parameters
None.
Response
204 No Content
Access Persons
Get access persons
Returns all access person types (homogeneous).
Status
Statuses for access_guest
type:
upcoming
initial status when start time has not met yetcurrent
initial status when start time has already metexpired
when end time has already metdeactivated
when a user manually deactivates it. See new endpoint below
Statuses for access_user
type:
current
initial statusdeactivated
when a user manually deactivates it. See new endpoint below
This endpoint returns only current and upcoming by default.
See next example to fetch expired
and deactivated
access persons.
Request
Endpoint
GET /access_persons
GET /access_persons
Parameters
Name | Description |
---|---|
[type] | Filter by type(s). Supported types: access_user and access_guest |
sort | Sortable attributes: created_at, updated_at, name, department, starts_at, and ends_at, default: created_at ascending |
attributes[status] | Status: current, upcoming, deactivated or expired. Default: current and upcoming. Supports array query |
Response
200 OK
{
"data": [
{
"type": "access_user",
"attributes": {
"name": "Raymond Hyatt",
"email": "jesse.ortiz@example.com",
"phone": null,
"department": null,
"deliver_as_qr_code": false,
"status": "current",
"source": null,
"guest_source": null,
"deliver_as_url_credential": false,
"require_pin_verification": false,
"created_at": "2024-09-19T12:13:49Z",
"updated_at": "2024-09-19T12:13:49Z",
"pin": "1155",
"card_number": null,
"schlage_engage_smart_card_id": null,
"schlage_engage_smart_card_badge": null
},
"id": "566780cc-430e-4738-8894-8b53b4691da5",
"links": {
"self": "http://api.remotelock.dev/access_persons/566780cc-430e-4738-8894-8b53b4691da5"
},
"meta": {
"restricted_attributes": [
"url_credential"
]
}
},
{
"type": "access_guest",
"attributes": {
"name": "Salina Reynolds",
"email": "dan_swaniawski@example.com",
"phone": null,
"department": null,
"deliver_as_qr_code": false,
"status": "upcoming",
"source": null,
"guest_source": null,
"deliver_as_url_credential": false,
"require_pin_verification": false,
"created_at": "2024-09-19T12:13:49Z",
"updated_at": "2024-09-19T12:13:49Z",
"pin": "1156",
"card_number": null,
"schlage_engage_smart_card_id": null,
"schlage_engage_smart_card_badge": null,
"starts_at": "2024-10-02T00:00:00",
"ends_at": "2024-10-12T12:13:49",
"ready_pins": null
},
"id": "6310231e-d6d4-4daf-ae7e-c757bfce27b0",
"links": {
"self": "http://api.remotelock.dev/access_persons/6310231e-d6d4-4daf-ae7e-c757bfce27b0"
},
"meta": {
"restricted_attributes": [
"url_credential"
]
}
}
],
"meta": {
"page": 1,
"per_page": 25,
"total_count": 2,
"total_pages": 1
}
}
Get access persons filtered by status
Request
Endpoint
GET /access_persons
GET /access_persons?attributes[status][]=deactivated&attributes[status][]=expired
Parameters
attributes: {"status"=>["deactivated", "expired"]}
Name | Description |
---|---|
[type] | Filter by type(s). Supported types: access_user and access_guest |
sort | Sortable attributes: created_at, updated_at, name, department, starts_at, and ends_at, default: created_at ascending |
attributes[status] | Status: current, upcoming, deactivated or expired. Default: current and upcoming. Supports array query |
Response
200 OK
{
"data": [
{
"type": "access_user",
"attributes": {
"name": "Mr. Juliette Simonis",
"email": "leta.ruecker@example.com",
"phone": null,
"department": null,
"deliver_as_qr_code": false,
"status": "deactivated",
"source": null,
"guest_source": null,
"deliver_as_url_credential": false,
"require_pin_verification": false,
"created_at": "2024-09-19T12:13:49Z",
"updated_at": "2024-09-19T12:13:49Z",
"pin": "1157",
"card_number": null,
"schlage_engage_smart_card_id": null,
"schlage_engage_smart_card_badge": null
},
"id": "0125f4f5-1abc-4c1b-82a1-2e9a8570876b",
"links": {
"self": "http://api.remotelock.dev/access_persons/0125f4f5-1abc-4c1b-82a1-2e9a8570876b"
},
"meta": {
"restricted_attributes": [
"url_credential"
],
"restricted_actions": [
"update"
]
}
},
{
"type": "access_guest",
"attributes": {
"name": "Tim Senger",
"email": "wade.roberts@example.org",
"phone": null,
"department": null,
"deliver_as_qr_code": false,
"status": "expired",
"source": null,
"guest_source": null,
"deliver_as_url_credential": false,
"require_pin_verification": false,
"created_at": "2024-09-19T12:13:49Z",
"updated_at": "2024-09-19T12:13:49Z",
"pin": "1159",
"card_number": null,
"schlage_engage_smart_card_id": null,
"schlage_engage_smart_card_badge": null,
"starts_at": "2024-09-16T12:13:49",
"ends_at": "2024-09-18T12:13:49",
"ready_pins": null
},
"id": "18f00f7b-4d1f-4f48-831c-fc8e07b7760c",
"links": {
"self": "http://api.remotelock.dev/access_persons/18f00f7b-4d1f-4f48-831c-fc8e07b7760c"
},
"meta": {
"restricted_attributes": [
"url_credential"
],
"restricted_actions": [
"update"
]
}
}
],
"meta": {
"page": 1,
"per_page": 25,
"total_count": 2,
"total_pages": 1
}
}
Get an access person
Request
Endpoint
GET /access_persons/:id
GET /access_persons/b52ea622-ad50-471b-b234-9c29aef4fe7c
Parameters
None.
Response
200 OK
{
"data": {
"type": "access_user",
"attributes": {
"name": "Jerome Grant IV",
"email": "yolonda_metz@example.org",
"phone": null,
"department": null,
"deliver_as_qr_code": false,
"status": "current",
"source": null,
"guest_source": null,
"deliver_as_url_credential": false,
"require_pin_verification": false,
"created_at": "2024-09-19T12:13:51Z",
"updated_at": "2024-09-19T12:13:51Z",
"pin": "1170",
"card_number": null,
"schlage_engage_smart_card_id": null,
"schlage_engage_smart_card_badge": null,
"url_credential": null
},
"id": "b52ea622-ad50-471b-b234-9c29aef4fe7c",
"links": {
"self": "http://api.remotelock.dev/access_persons/b52ea622-ad50-471b-b234-9c29aef4fe7c"
},
"meta": {
"restricted_attributes": [
"url_credential"
]
}
}
}
Create an access user
'Access user' is a permanent access person type. The only difference from 'access guest' is it doesn't accept 'starts_at' and 'ends_at' parameters.
Request
Endpoint
POST /access_persons
POST /access_persons
Parameters
{
"type": "access_user",
"attributes": {
"name": "Ann Smith",
"email": "ann.smith@example.com",
"department": "Human Resources",
"pin": "1234",
"card_number": "23456",
"phone": "+13036671824"
}
}
Name | Description |
---|---|
type required | access_user |
attributes[name] required | Name |
attributes[email] | |
attributes[pin] | Access person pin (pin, generate_pin, card_number, generate_card_number or schlage_engage_smart_card_id are required) |
attributes[card_number] | Card number (pin, generate_pin, card_number, generate_card_number or schlage_engage_smart_card_id are required) |
attributes[schlage_engage_smart_card_id] | Schlage Control smart card id (pin, generate_pin, card_number, generate_card_number or schlage_engage_smart_card_id are required) |
attributes[generate_pin] | When true, a random pin is generated (pin, generate_pin, card_number or generate_card_number are required). Default: false |
attributes[generate_card_number] | When true, a card number is generated (pin, generate_pin, card_number or generate_card_number are required). Default: false |
attributes[deliver_as_qr_code] | When true, the card number is delivered as a QR code. Default: false |
attributes[department] | Department name |
Response
201 Created
{
"data": {
"type": "access_user",
"attributes": {
"name": "Ann Smith",
"email": "ann.smith@example.com",
"phone": null,
"department": "Human Resources",
"deliver_as_qr_code": false,
"status": "current",
"source": null,
"guest_source": null,
"deliver_as_url_credential": false,
"require_pin_verification": false,
"created_at": "2024-09-19T12:13:51Z",
"updated_at": "2024-09-19T12:13:51Z",
"pin": "1234",
"card_number": "23456",
"schlage_engage_smart_card_id": null,
"schlage_engage_smart_card_badge": null,
"url_credential": null
},
"id": "fde7278e-0c7d-4c5c-a432-d94dda61f5b9",
"links": {
"self": "http://api.remotelock.dev/access_persons/fde7278e-0c7d-4c5c-a432-d94dda61f5b9"
},
"meta": {
"restricted_attributes": [
"url_credential"
]
}
}
}
Create an access guest
'Access guest' is a temporary access person type. It has all the same features as 'access user', with the addition of 'starts_at' and 'ends_at' parameters that enable additional access limiting.
Request
Endpoint
POST /access_persons
POST /access_persons
Parameters
{
"type": "access_guest",
"attributes": {
"starts_at": "2025-01-02T16:04:00",
"ends_at": "2025-01-30T16:04:00",
"name": "Ann Smith",
"pin": "1234"
}
}
Name | Description |
---|---|
type required | access_guest |
attributes[name] required | Name |
attributes[email] | |
attributes[pin] | Access person pin (pin, generate_pin, card_number, generate_card_number or schlage_engage_smart_card_id are required) |
attributes[card_number] | Card number (pin, generate_pin, card_number, generate_card_number or schlage_engage_smart_card_id are required) |
attributes[schlage_engage_smart_card_id] | Schlage Control smart card id (pin, generate_pin, card_number, generate_card_number or schlage_engage_smart_card_id are required) |
attributes[generate_pin] | When true, a random pin is generated (pin, generate_pin, card_number or generate_card_number are required). Default: false |
attributes[generate_card_number] | When true, a card number is generated (pin, generate_pin, card_number or generate_card_number are required). Default: false |
attributes[deliver_as_qr_code] | When true, the card number is delivered as a QR code. Default: false |
attributes[starts_at] required | Starts at ISO 8601 timestamp without time zone |
attributes[ends_at] required | Ends at ISO 8601 timestamp without time zone |
attributes[ready_pin_model_id] | Attributes ready PIN model |
Response
201 Created
{
"data": {
"type": "access_guest",
"attributes": {
"name": "Ann Smith",
"email": null,
"phone": null,
"department": null,
"deliver_as_qr_code": false,
"status": "upcoming",
"source": null,
"guest_source": null,
"deliver_as_url_credential": false,
"require_pin_verification": false,
"created_at": "2024-09-19T12:13:53Z",
"updated_at": "2024-09-19T12:13:53Z",
"pin": "1234",
"card_number": null,
"schlage_engage_smart_card_id": null,
"schlage_engage_smart_card_badge": null,
"url_credential": null,
"starts_at": "2025-01-02T16:04:00",
"ends_at": "2025-01-30T16:04:00",
"ready_pins": null
},
"id": "662adca1-83aa-45aa-8fb6-0439b6f887a3",
"links": {
"self": "http://api.remotelock.dev/access_persons/662adca1-83aa-45aa-8fb6-0439b6f887a3"
},
"meta": {
"restricted_attributes": [
"url_credential"
]
}
}
}
Update an access user
Request
Endpoint
PUT /access_persons/:id
PUT /access_persons/46901210-c165-41e1-8707-ae3932e723fb
Parameters
{
"attributes": {
"name": "House Owner",
"pin": "2345"
}
}
Name | Description |
---|---|
attributes[name] | Name |
attributes[email] | |
attributes[pin] | Access person pin (pin, generate_pin, card_number, generate_card_number or schlage_engage_smart_card_id are required) |
attributes[card_number] | Card number (pin, generate_pin, card_number, generate_card_number or schlage_engage_smart_card_id are required) |
attributes[schlage_engage_smart_card_id] | Schlage Control smart card id (pin, generate_pin, card_number, generate_card_number or schlage_engage_smart_card_id are required) |
attributes[generate_pin] | When true, a random pin is generated (pin, generate_pin, card_number or generate_card_number are required). Default: false |
attributes[generate_card_number] | When true, a card number is generated (pin, generate_pin, card_number or generate_card_number are required). Default: false |
attributes[deliver_as_qr_code] | When true, the card number is delivered as a QR code. Default: false |
attributes[department] | Department name |
Response
200 OK
{
"data": {
"type": "access_user",
"attributes": {
"name": "House Owner",
"email": "irvin.kessler@example.net",
"phone": null,
"department": null,
"deliver_as_qr_code": false,
"status": "current",
"source": null,
"guest_source": null,
"deliver_as_url_credential": false,
"require_pin_verification": false,
"created_at": "2024-09-19T12:13:58Z",
"updated_at": "2024-09-19T12:13:58Z",
"pin": "2345",
"card_number": null,
"schlage_engage_smart_card_id": null,
"schlage_engage_smart_card_badge": null,
"url_credential": null
},
"id": "46901210-c165-41e1-8707-ae3932e723fb",
"links": {
"self": "http://api.remotelock.dev/access_persons/46901210-c165-41e1-8707-ae3932e723fb"
},
"meta": {
"restricted_attributes": [
"url_credential"
]
}
}
}
responds with an Unprocessable Entity error
Request
Endpoint
PUT /access_persons/:id
PUT /access_persons/a0e6ccb2-3d03-4233-9018-69567528e5bd
PUT /access_persons/a0e6ccb2-3d03-4233-9018-69567528e5bd
Parameters
{
"attributes": {
"name": "House Owner",
"pin": "2345"
}
}
Name | Description |
---|---|
attributes[name] | Name |
attributes[email] | |
attributes[pin] | Access person pin (pin, generate_pin, card_number, generate_card_number or schlage_engage_smart_card_id are required) |
attributes[card_number] | Card number (pin, generate_pin, card_number, generate_card_number or schlage_engage_smart_card_id are required) |
attributes[schlage_engage_smart_card_id] | Schlage Control smart card id (pin, generate_pin, card_number, generate_card_number or schlage_engage_smart_card_id are required) |
attributes[generate_pin] | When true, a random pin is generated (pin, generate_pin, card_number or generate_card_number are required). Default: false |
attributes[generate_card_number] | When true, a card number is generated (pin, generate_pin, card_number or generate_card_number are required). Default: false |
attributes[deliver_as_qr_code] | When true, the card number is delivered as a QR code. Default: false |
attributes[department] | Department name |
Response
200 OK
{
"data": {
"type": "access_user",
"attributes": {
"name": "House Owner",
"email": "phillis_legros@example.net",
"phone": null,
"department": null,
"deliver_as_qr_code": false,
"status": "current",
"source": null,
"guest_source": null,
"deliver_as_url_credential": false,
"require_pin_verification": false,
"created_at": "2024-09-19T12:13:58Z",
"updated_at": "2024-09-19T12:13:58Z",
"pin": "2345",
"card_number": null,
"schlage_engage_smart_card_id": null,
"schlage_engage_smart_card_badge": null,
"url_credential": null
},
"id": "a0e6ccb2-3d03-4233-9018-69567528e5bd",
"links": {
"self": "http://api.remotelock.dev/access_persons/a0e6ccb2-3d03-4233-9018-69567528e5bd"
},
"meta": {
"restricted_attributes": [
"url_credential"
]
}
}
}
{
"attributes": {
"name": "House Owner",
"pin": "1217",
"phone": "+13036671824"
}
}
Name | Description |
---|---|
attributes[name] | Name |
attributes[email] | |
attributes[pin] | Access person pin (pin, generate_pin, card_number, generate_card_number or schlage_engage_smart_card_id are required) |
attributes[card_number] | Card number (pin, generate_pin, card_number, generate_card_number or schlage_engage_smart_card_id are required) |
attributes[schlage_engage_smart_card_id] | Schlage Control smart card id (pin, generate_pin, card_number, generate_card_number or schlage_engage_smart_card_id are required) |
attributes[generate_pin] | When true, a random pin is generated (pin, generate_pin, card_number or generate_card_number are required). Default: false |
attributes[generate_card_number] | When true, a card number is generated (pin, generate_pin, card_number or generate_card_number are required). Default: false |
attributes[deliver_as_qr_code] | When true, the card number is delivered as a QR code. Default: false |
attributes[department] | Department name |
Response
422 Unprocessable Entity
{
"errors": [
{
"attribute": "pin",
"messages": [
"has already been taken"
],
"full_messages": [
"PIN has already been taken"
]
}
]
}
Update an access guest
Request
Endpoint
PUT /access_persons/:id
PUT /access_persons/7218ec92-7e05-4831-bbc5-3ae78525bfdb
Parameters
{
"attributes": {
"name": "Cleaning Crew",
"ends_at": "2024-10-02T00:00:00Z"
}
}
Name | Description |
---|---|
attributes[name] | Name |
attributes[email] | |
attributes[pin] | Access person pin (pin, generate_pin, card_number, generate_card_number or schlage_engage_smart_card_id are required) |
attributes[card_number] | Card number (pin, generate_pin, card_number, generate_card_number or schlage_engage_smart_card_id are required) |
attributes[schlage_engage_smart_card_id] | Schlage Control smart card id (pin, generate_pin, card_number, generate_card_number or schlage_engage_smart_card_id are required) |
attributes[generate_pin] | When true, a random pin is generated (pin, generate_pin, card_number or generate_card_number are required). Default: false |
attributes[generate_card_number] | When true, a card number is generated (pin, generate_pin, card_number or generate_card_number are required). Default: false |
attributes[deliver_as_qr_code] | When true, the card number is delivered as a QR code. Default: false |
attributes[starts_at] | Starts at ISO 8601 timestamp without time zone |
attributes[ends_at] | Ends at ISO 8601 timestamp without time zone |
attributes[ready_pin_model_id] | Attributes ready PIN model |
Response
200 OK
{
"data": {
"type": "access_guest",
"attributes": {
"name": "Cleaning Crew",
"email": "jayme@example.org",
"phone": null,
"department": null,
"deliver_as_qr_code": false,
"status": "upcoming",
"source": null,
"guest_source": null,
"deliver_as_url_credential": false,
"require_pin_verification": false,
"created_at": "2024-09-19T12:13:58Z",
"updated_at": "2024-09-19T12:13:58Z",
"pin": "1219",
"card_number": null,
"schlage_engage_smart_card_id": null,
"schlage_engage_smart_card_badge": null,
"url_credential": null,
"starts_at": "2024-09-22T00:00:00",
"ends_at": "2024-10-02T00:00:00",
"ready_pins": null
},
"id": "7218ec92-7e05-4831-bbc5-3ae78525bfdb",
"links": {
"self": "http://api.remotelock.dev/access_persons/7218ec92-7e05-4831-bbc5-3ae78525bfdb"
},
"meta": {
"restricted_attributes": [
"url_credential"
]
}
}
}
Deactivates an access person
We recommend using this endpoint rather than DELETE /access_persons/:id
because it allows you to fetch deactivated
and expired
access persons.
Request
Endpoint
PUT /access_persons/:id/deactivate
PUT /access_persons/c358dacb-b557-4e55-b8a1-c7f47865c4b5/deactivate
Parameters
None.
Response
200 OK
{
"data": {
"type": "access_user",
"attributes": {
"name": "Rosalee Swaniawski",
"email": "rex@example.net",
"phone": null,
"department": null,
"deliver_as_qr_code": false,
"status": "deactivated",
"source": null,
"guest_source": null,
"deliver_as_url_credential": false,
"require_pin_verification": false,
"created_at": "2024-09-19T12:13:59Z",
"updated_at": "2024-09-19T12:13:59Z",
"pin": "1220",
"card_number": null,
"schlage_engage_smart_card_id": null,
"schlage_engage_smart_card_badge": null,
"url_credential": null
},
"id": "c358dacb-b557-4e55-b8a1-c7f47865c4b5",
"links": {
"self": "http://api.remotelock.dev/access_persons/c358dacb-b557-4e55-b8a1-c7f47865c4b5"
},
"meta": {
"restricted_attributes": [
"url_credential"
],
"restricted_actions": [
"update"
]
}
}
}
Delete an access person
Request
Endpoint
DELETE /access_persons/:id
DELETE /access_persons/904b7ff8-2b28-43a3-8e0c-9a72721c8494
Parameters
None.
Response
204 No Content
Schedule sending access instructions email in days
Request
Endpoint
POST /access_persons/:id/email/notify
POST /access_persons/b8ee6b9c-97c0-4b64-a28a-88c6382ed027/email/notify
Parameters
{
"attributes": {
"days_before": 1
}
}
Name | Description |
---|---|
attributes[days_before] | Schedule sending email a number of days beforeguest start time. Default: sends the email immediately. |
Response
200 OK
Get all of an access person's accesses
Request
Endpoint
GET /access_persons/:access_person_id/accesses
GET /access_persons/ec505a90-7710-473c-8142-84e461e5eb97/accesses
Parameters
None.
Response
200 OK
{
"data": [
{
"type": "access_person_access",
"attributes": {
"guest_start_time": null,
"guest_end_time": null,
"devices_count": 1,
"devices_synced_count": 0,
"devices_pending_sync_count": 1,
"devices_failed_sync_count": 0,
"accessible_type": "lock",
"access_starts_at": null,
"access_ends_at": null,
"created_at": "2024-09-19T12:14:01Z",
"updated_at": "2024-09-19T12:14:01Z",
"access_person_id": "ec505a90-7710-473c-8142-84e461e5eb97",
"access_person_type": "access_user",
"accessible_id": "e2847b51-9e94-4fb7-b6ad-c099b90ad93c"
},
"id": "b6917377-8ac6-406b-9503-9df747cbf640",
"links": {
"self": "http://api.remotelock.dev/access_persons/ec505a90-7710-473c-8142-84e461e5eb97/accesses/b6917377-8ac6-406b-9503-9df747cbf640",
"access_person": "http://api.remotelock.dev/access_persons/ec505a90-7710-473c-8142-84e461e5eb97",
"accessible": "http://api.remotelock.dev/devices/e2847b51-9e94-4fb7-b6ad-c099b90ad93c"
}
},
{
"type": "access_person_access",
"attributes": {
"guest_start_time": null,
"guest_end_time": null,
"devices_count": 0,
"devices_synced_count": 0,
"devices_pending_sync_count": 0,
"devices_failed_sync_count": 0,
"accessible_type": "acs_door",
"access_starts_at": null,
"access_ends_at": null,
"created_at": "2024-09-19T12:14:01Z",
"updated_at": "2024-09-19T12:14:01Z",
"access_person_id": "ec505a90-7710-473c-8142-84e461e5eb97",
"access_person_type": "access_user",
"accessible_id": "0b7cd4b4-9b5a-4c28-a1bc-a401b274a8fd"
},
"id": "dedfb932-2b63-4efe-8a1f-6fe34574a9ea",
"links": {
"self": "http://api.remotelock.dev/access_persons/ec505a90-7710-473c-8142-84e461e5eb97/accesses/dedfb932-2b63-4efe-8a1f-6fe34574a9ea",
"access_person": "http://api.remotelock.dev/access_persons/ec505a90-7710-473c-8142-84e461e5eb97",
"accessible": "http://api.remotelock.dev/devices/0b7cd4b4-9b5a-4c28-a1bc-a401b274a8fd"
}
},
{
"type": "access_person_access",
"attributes": {
"guest_start_time": null,
"guest_end_time": null,
"devices_count": 0,
"devices_synced_count": 0,
"devices_pending_sync_count": 0,
"devices_failed_sync_count": 0,
"accessible_type": "door_group",
"access_starts_at": null,
"access_ends_at": null,
"created_at": "2024-09-19T12:14:01Z",
"updated_at": "2024-09-19T12:14:01Z",
"access_person_id": "ec505a90-7710-473c-8142-84e461e5eb97",
"access_person_type": "access_user",
"accessible_id": "2b4be1c7-7cbf-4254-81da-8b347b986e50"
},
"id": "f0575912-b60e-4a9d-9d8f-96bbea6849a8",
"links": {
"self": "http://api.remotelock.dev/access_persons/ec505a90-7710-473c-8142-84e461e5eb97/accesses/f0575912-b60e-4a9d-9d8f-96bbea6849a8",
"access_person": "http://api.remotelock.dev/access_persons/ec505a90-7710-473c-8142-84e461e5eb97",
"accessible": "http://api.remotelock.dev/groups/2b4be1c7-7cbf-4254-81da-8b347b986e50"
}
},
{
"type": "access_person_access",
"attributes": {
"guest_start_time": null,
"guest_end_time": null,
"devices_count": 0,
"devices_synced_count": 0,
"devices_pending_sync_count": 0,
"devices_failed_sync_count": 0,
"accessible_type": "location",
"access_starts_at": null,
"access_ends_at": null,
"created_at": "2024-09-19T12:14:01Z",
"updated_at": "2024-09-19T12:14:01Z",
"access_person_id": "ec505a90-7710-473c-8142-84e461e5eb97",
"access_person_type": "access_user",
"accessible_id": "dd30c94e-9608-43d2-b4ca-24f5d2ada84e"
},
"id": "1195225e-2059-49eb-b027-1b53d45ed9e3",
"links": {
"self": "http://api.remotelock.dev/access_persons/ec505a90-7710-473c-8142-84e461e5eb97/accesses/1195225e-2059-49eb-b027-1b53d45ed9e3",
"access_person": "http://api.remotelock.dev/access_persons/ec505a90-7710-473c-8142-84e461e5eb97",
"accessible": "http://api.remotelock.dev/locations/dd30c94e-9608-43d2-b4ca-24f5d2ada84e"
}
}
],
"meta": {
"page": 1,
"per_page": 25,
"total_count": 4,
"total_pages": 1
}
}
Get an access person's access
Request
Endpoint
GET /access_persons/:access_person_id/accesses/:id
GET /access_persons/57926664-c29b-4448-8af9-a88dd06a1ff7/accesses/45695d5a-c36e-4afd-bf87-07af7c828d0d
Parameters
None.
Response
200 OK
{
"data": {
"type": "access_person_access",
"attributes": {
"guest_start_time": null,
"guest_end_time": null,
"devices_count": 1,
"devices_synced_count": 0,
"devices_pending_sync_count": 1,
"devices_failed_sync_count": 0,
"accessible_type": "lock",
"access_starts_at": null,
"access_ends_at": null,
"created_at": "2024-09-19T12:14:01Z",
"updated_at": "2024-09-19T12:14:01Z",
"access_person_id": "57926664-c29b-4448-8af9-a88dd06a1ff7",
"access_person_type": "access_user",
"accessible_id": "e32b2cb0-c819-4fbf-b263-f6679b36a187"
},
"id": "45695d5a-c36e-4afd-bf87-07af7c828d0d",
"links": {
"self": "http://api.remotelock.dev/access_persons/57926664-c29b-4448-8af9-a88dd06a1ff7/accesses/45695d5a-c36e-4afd-bf87-07af7c828d0d",
"access_person": "http://api.remotelock.dev/access_persons/57926664-c29b-4448-8af9-a88dd06a1ff7",
"accessible": "http://api.remotelock.dev/devices/e32b2cb0-c819-4fbf-b263-f6679b36a187"
}
}
}
Grant an access person access
Accessible can be one of: acs_door, acs_elevator_floor, lock, connector_lock, zwave_lock, schlage_home_lock, igloo_lock, door_group or location
Request
Endpoint
POST /access_persons/:access_person_id/accesses
POST /access_persons/34f51908-a5a8-4784-8331-bee615b19c6f/accesses
Parameters
{
"attributes": {
"accessible_id": "0b6bc6a7-1fb1-4d2d-97de-358ac6233aca",
"accessible_type": "lock",
"guest_start_time": "14:00",
"access_schedule_id": "e93ebf83-f7c3-464e-a252-32bb0b7c58ef"
}
}
Name | Description |
---|---|
attributes[accessible_type] required | Accessible type: acs_door, acs_elevator_floor, lock, connector_lock, zwave_lock, schlage_home_lock, igloo_lock, door_group or location |
attributes[accessible_id] required | Accessible id |
attributes[access_schedule_id] | Access schedule id |
attributes[guest_start_time] | Access Guest start time override, ISO 8601 24 hour time format |
attributes[guest_end_time] | Access Guest end time override, ISO 8601 24 hour time format |
Response
201 Created
{
"data": {
"type": "access_person_access",
"attributes": {
"guest_start_time": "14:00:00",
"guest_end_time": null,
"devices_count": 0,
"devices_synced_count": 0,
"devices_pending_sync_count": 0,
"devices_failed_sync_count": 0,
"accessible_type": "lock",
"access_starts_at": null,
"access_ends_at": null,
"created_at": "2024-09-19T12:14:03Z",
"updated_at": "2024-09-19T12:14:03Z",
"access_schedule_id": "e93ebf83-f7c3-464e-a252-32bb0b7c58ef",
"access_person_id": "34f51908-a5a8-4784-8331-bee615b19c6f",
"access_person_type": "access_guest",
"accessible_id": "0b6bc6a7-1fb1-4d2d-97de-358ac6233aca"
},
"id": "b3f74317-6121-4182-9423-d8f3caff2cda",
"links": {
"self": "http://api.remotelock.dev/access_persons/34f51908-a5a8-4784-8331-bee615b19c6f/accesses/b3f74317-6121-4182-9423-d8f3caff2cda",
"access_schedule": "http://api.remotelock.dev/schedules/e93ebf83-f7c3-464e-a252-32bb0b7c58ef",
"access_person": "http://api.remotelock.dev/access_persons/34f51908-a5a8-4784-8331-bee615b19c6f",
"accessible": "http://api.remotelock.dev/devices/0b6bc6a7-1fb1-4d2d-97de-358ac6233aca"
}
}
}
Update an access person's access
Only updating the access schedule is supported. To change the accessible, revoke the access and grant a new one.
Request
Endpoint
PUT /access_persons/:access_person_id/accesses/:id
PUT /access_persons/cdbfee19-852d-4399-b9c0-2813afb74481/accesses/47070c51-4856-4305-8aab-016e7ccdcf12
Parameters
{
"attributes": {
"access_schedule_id": "42653cf6-e5d0-4eb0-82bb-36f9b2c6231d"
}
}
Name | Description |
---|---|
attributes[access_schedule_id] | Access schedule id |
Response
200 OK
{
"data": {
"type": "access_person_access",
"attributes": {
"guest_start_time": null,
"guest_end_time": null,
"devices_count": 1,
"devices_synced_count": 0,
"devices_pending_sync_count": 1,
"devices_failed_sync_count": 0,
"accessible_type": "lock",
"access_starts_at": null,
"access_ends_at": null,
"created_at": "2024-09-19T12:14:04Z",
"updated_at": "2024-09-19T12:14:04Z",
"access_schedule_id": "42653cf6-e5d0-4eb0-82bb-36f9b2c6231d",
"access_person_id": "cdbfee19-852d-4399-b9c0-2813afb74481",
"access_person_type": "access_user",
"accessible_id": "09fc32fa-ba76-41c1-92e3-d0bd03fd5b81"
},
"id": "47070c51-4856-4305-8aab-016e7ccdcf12",
"links": {
"self": "http://api.remotelock.dev/access_persons/cdbfee19-852d-4399-b9c0-2813afb74481/accesses/47070c51-4856-4305-8aab-016e7ccdcf12",
"access_schedule": "http://api.remotelock.dev/schedules/42653cf6-e5d0-4eb0-82bb-36f9b2c6231d",
"access_person": "http://api.remotelock.dev/access_persons/cdbfee19-852d-4399-b9c0-2813afb74481",
"accessible": "http://api.remotelock.dev/devices/09fc32fa-ba76-41c1-92e3-d0bd03fd5b81"
}
}
}
Revoke an access person's access
Request
Endpoint
DELETE /access_persons/:access_person_id/accesses/:id
DELETE /access_persons/5a191f71-25a1-4d9e-b3e1-4e64e6ff18de/accesses/563ece10-8500-4d6e-b8c5-708140f47257
Parameters
None.
Response
204 No Content
Get Schlage Engage smart cards
The GET /connectors/schlage-engage/smart-cards
endpoint retrieves information
about smart cards that are currently not in use. Filtering by location is
supported using the 'location_id' parameter.
Request
Endpoint
GET /connector_brands/schlage-engage/smart-cards
GET /connector_brands/schlage-engage/smart-cards
Parameters
Name | Description |
---|---|
location_id | Filter by location |
Response
200 OK
{
"data": [
{
"id": 1,
"badge": "22",
"card_format": "smart",
"location_id": 3,
"created_at": "2023-08-09T21:13:36.965Z",
"updated_at": "2023-08-09T21:13:36.965Z"
}
]
}
Accounts
Get current account
Request
Endpoint
GET /account
GET /account
Parameters
None.
Response
200 OK
{
"data": {
"type": "account",
"attributes": {
"name": "Eugenia Luettgen",
"created_at": "2024-09-19T12:14:06Z",
"updated_at": "2024-09-19T12:14:06Z",
"default_guest_start_time": "16:00:00",
"default_guest_end_time": "11:00:00",
"rental_guest_time_override": false,
"primary_owner_id": "1abbeef3-5410-4a91-ab63-30230c4e55ce",
"owner_role_id": "5c73be00-4eb2-4ade-9aeb-7610e850e11c"
},
"id": "925455f1-0aa7-4ec0-a2d6-3e7ef551f8ad",
"links": {
"self": "http://api.remotelock.dev/account",
"primary_owner": "http://api.remotelock.dev/user",
"owner_role": "http://api.remotelock.dev/roles/5c73be00-4eb2-4ade-9aeb-7610e850e11c"
}
}
}
Update current account
Request
Endpoint
PUT /account
PUT /account
Parameters
{
"attributes": {
"default_guest_start_time": "15:30:00",
"default_guest_end_time": "02:15:00"
}
}
Name | Description |
---|---|
attributes[name] | Account Name |
attributes[default_guest_start_time] | Default Access Guest start time, ISO 8601 24 hour time format, default: "11:00:00" |
attributes[default_guest_end_time] | Default Access Guest end time, ISO 8601 24 hour time format, default: "23:00:00" |
Response
200 OK
{
"data": {
"type": "account",
"attributes": {
"name": "Joya Littel",
"created_at": "2024-09-19T12:14:07Z",
"updated_at": "2024-09-19T12:14:07Z",
"default_guest_start_time": "15:30:00",
"default_guest_end_time": "02:15:00",
"rental_guest_time_override": false,
"primary_owner_id": "0ad9d520-c752-43fa-a9dc-0945cbbf01e0",
"owner_role_id": "37664088-7a2d-44db-95f2-b057fac87c1f"
},
"id": "a5e04856-6cfe-4eb0-9824-102725ac80b3",
"links": {
"self": "http://api.remotelock.dev/account",
"primary_owner": "http://api.remotelock.dev/user",
"owner_role": "http://api.remotelock.dev/roles/37664088-7a2d-44db-95f2-b057fac87c1f"
}
}
}
Brands
Get all brands
Returns all brands.
Request
Endpoint
GET /brands
GET /brands
Parameters
None.
Response
200 OK
{
"data": [
{
"type": "brand",
"attributes": {
"name": "Brand 1",
"vendor": "ayla",
"uuid": "e5e8537e-1bd6-4087-9044-b0337cfb91b3"
},
"id": "e5e8537e-1bd6-4087-9044-b0337cfb91b3",
"links": {
"self": "http://api.remotelock.dev/brands/e5e8537e-1bd6-4087-9044-b0337cfb91b3"
}
},
{
"type": "brand",
"attributes": {
"name": "Brand 1",
"vendor": "ayla",
"uuid": "2ceedee5-adf4-417a-b414-977186ccac55"
},
"id": "2ceedee5-adf4-417a-b414-977186ccac55",
"links": {
"self": "http://api.remotelock.dev/brands/2ceedee5-adf4-417a-b414-977186ccac55"
}
},
{
"type": "brand",
"attributes": {
"name": "Brand 1",
"vendor": "ayla",
"uuid": "0376d44b-2704-4a64-a18a-f72536246a50"
},
"id": "0376d44b-2704-4a64-a18a-f72536246a50",
"links": {
"self": "http://api.remotelock.dev/brands/0376d44b-2704-4a64-a18a-f72536246a50"
}
}
],
"meta": {
"page": 1,
"per_page": 25,
"total_count": 3,
"total_pages": 1
}
}
Get Models By Brand
Returns a models list based on brand uuid.
Request
Endpoint
GET /brands/:brand_id/models
GET /brands/bb0e9e1e-387a-4469-9902-378e703e6fae/models
Parameters
Name | Description |
---|---|
brand_id | Brand Universally Unique IDentifier |
Response
200 OK
{
"data": [
{
"type": "model",
"attributes": {
"name": "RG (LS-5i)",
"number": "LS-5i",
"type": "lock",
"capabilities": {
"access_exception": true,
"auto_lock_enable": true,
"auto_lock_schedule": true,
"auto_lock_timeouts": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
30,
60,
300,
600,
900,
1200,
1500,
1800
],
"connected": true,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"heartbeat_intervals": [
0,
300,
900,
1200,
1800,
3600,
7200,
14400,
28800,
43200
],
"hid_mobile_credential": false,
"local_pins": true,
"lock_action_schedule": true,
"manual_auto_lock_timeout": true,
"manual_auto_lock_timeout_intervals": [
5,
10,
20,
30,
60,
120,
300,
600,
1200,
1800,
3600
],
"mobile_commissionable": true,
"mute": true,
"native_temporary_unlockable": false,
"no_enter_code": true,
"online_auto_lock": true,
"phone_credential": false,
"pin_credential": true,
"power_sources": [
"alkaline_battery",
"lithium_battery"
],
"programming_code": true,
"prox_card_credential": false,
"ready_pin_credential": false,
"registrable": true,
"replaceable": true,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wake_wifi": [
"user_action",
"heartbeat_interval",
"user_action_except_manual"
],
"wavelynx_mobile_credential": false
},
"vendor": "ayla"
},
"id": "9bb809c7-a655-4f9e-aa48-a57c770744c5",
"links": {
"self": "http://api.remotelock.dev/models/9bb809c7-a655-4f9e-aa48-a57c770744c5"
}
},
{
"type": "model",
"attributes": {
"name": "LS-6i",
"number": "LS-6i",
"type": "lock",
"capabilities": {
"access_exception": true,
"auto_lock_enable": true,
"auto_lock_schedule": true,
"auto_lock_timeouts": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
30,
60,
300,
600,
900,
1200,
1500,
1800
],
"connected": true,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"heartbeat_intervals": [
0,
300,
900,
1200,
1800,
3600,
7200,
14400,
28800,
43200
],
"hid_mobile_credential": false,
"local_pins": true,
"lock_action_schedule": true,
"manual_auto_lock_timeout": false,
"manual_auto_lock_timeout_intervals": [
5,
10,
20,
30,
60,
120,
300,
600,
1200,
1800,
3600
],
"mobile_commissionable": true,
"mute": true,
"native_temporary_unlockable": false,
"no_enter_code": false,
"online_auto_lock": false,
"phone_credential": false,
"pin_credential": true,
"power_sources": [
"alkaline_battery",
"lithium_battery"
],
"programming_code": true,
"prox_card_credential": false,
"ready_pin_credential": false,
"registrable": true,
"replaceable": true,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wake_wifi": [
"user_action",
"heartbeat_interval"
],
"wavelynx_mobile_credential": false
},
"vendor": "ayla"
},
"id": "9709a287-38ec-4682-a45a-51e053dedde2",
"links": {
"self": "http://api.remotelock.dev/models/9709a287-38ec-4682-a45a-51e053dedde2"
}
}
],
"meta": {
"page": 1,
"per_page": 25,
"total_count": 2,
"total_pages": 1
}
}
Get Models By Brand with a invalid uuid
Returns a error 404.
Request
Endpoint
GET /brands/:brand_id/models
GET /brands/invalid_uuid/models
Parameters
Name | Description |
---|---|
brand_id | Brand Universally Unique IDentifier |
Response
404 Not Found
{
"error": "brand not found"
}
Devices
Update a Connector Lock
The configuration
object is used to update the configuration of a Connector Lock and must include
the relevant fields of the specific Connector Lock model. The supported fields for each Connector Lock
can be found using the Connector Lock configurability endpoint. If the specific Connector Lock model
does not support configuration updates, the configuration field is to be omitted from the request.
Request
Endpoint
PUT /devices/:id
PUT /devices/4b8ac5ef-6331-471a-89ca-12ddf4286db6
Parameters
{
"attributes": {
"name": "East door",
"location_id": "5aa1b3dc-a680-444b-87ce-48a4c3e953cf",
"configuration": {
"relock": 5,
"led_standby_color": "amber"
}
}
}
Name | Description |
---|---|
attributes[name] | Name |
attributes[location_id] | Location ID |
attributes[configuration] | Configuration update payload |
Response
200 OK
{
"data": {
"type": "connector_lock",
"attributes": {
"connectivity_enabled": true,
"name": "East door",
"alive": true,
"connected": false,
"connected_at": "2024-09-19T12:15:02Z",
"power_level": 100,
"serial_number": "a5626ca74580560d88ca10a00fae0925",
"signal_quality": 4,
"state": "LOCKED",
"pending_physical_sync": false,
"model_number": "RubberLock",
"allow_device_deletion_from_hub": false,
"supports_device_configuration": false,
"created_at": "2024-09-19T12:15:02Z",
"updated_at": "2024-09-19T12:15:02Z",
"location_id": "5aa1b3dc-a680-444b-87ce-48a4c3e953cf",
"model_id": "7d7c35a8-8ac2-4b0b-a58b-fc6021563d74"
},
"id": "4b8ac5ef-6331-471a-89ca-12ddf4286db6",
"links": {
"self": "http://api.remotelock.dev/devices/4b8ac5ef-6331-471a-89ca-12ddf4286db6",
"location": "http://api.remotelock.dev/locations/5aa1b3dc-a680-444b-87ce-48a4c3e953cf",
"model": "http://api.remotelock.dev/models/7d7c35a8-8ac2-4b0b-a58b-fc6021563d74"
}
}
}
Lock a Connector Lock
Request
Endpoint
PUT /devices/:id/lock
PUT /devices/7f8516f6-fbad-45b1-a96b-bab04f5a7b8f/lock
Parameters
None.
Response
200 OK
{
"data": {
"type": "connector_lock",
"attributes": {
"connectivity_enabled": true,
"name": "guest room",
"alive": true,
"connected": false,
"connected_at": "2024-09-19T12:15:02Z",
"power_level": 100,
"serial_number": "ddda3acc26e7f70ff9bf3d708e075001",
"signal_quality": 4,
"state": "LOCKED",
"pending_physical_sync": false,
"model_number": "RubberLock",
"allow_device_deletion_from_hub": false,
"supports_device_configuration": false,
"created_at": "2024-09-19T12:15:02Z",
"updated_at": "2024-09-19T12:15:02Z",
"location_id": "169cc515-3b06-4927-ad0f-4073a6bcea67",
"model_id": "86d635b0-9e55-4a8a-8386-3960cc5568c3"
},
"id": "7f8516f6-fbad-45b1-a96b-bab04f5a7b8f",
"links": {
"self": "http://api.remotelock.dev/devices/7f8516f6-fbad-45b1-a96b-bab04f5a7b8f",
"location": "http://api.remotelock.dev/locations/169cc515-3b06-4927-ad0f-4073a6bcea67",
"model": "http://api.remotelock.dev/models/86d635b0-9e55-4a8a-8386-3960cc5568c3"
}
}
}
Unlock a Connector Lock
Request
Endpoint
PUT /devices/:id/unlock
PUT /devices/66041c1c-edd1-4162-8255-0bd764acb161/unlock
Parameters
None.
Response
200 OK
{
"data": {
"type": "connector_lock",
"attributes": {
"connectivity_enabled": true,
"name": "drawing room",
"alive": true,
"connected": false,
"connected_at": "2024-09-19T12:15:03Z",
"power_level": 100,
"serial_number": "20b88a78a64f90bcb8a39671c3a5373b",
"signal_quality": 4,
"state": "LOCKED",
"pending_physical_sync": false,
"model_number": "RubberLock",
"allow_device_deletion_from_hub": false,
"supports_device_configuration": false,
"created_at": "2024-09-19T12:15:03Z",
"updated_at": "2024-09-19T12:15:03Z",
"location_id": "a8329cf2-adce-4b2a-ae6a-33b68a898d0a",
"model_id": "c388d8ca-68c1-4d14-b06a-08e102e3e95a"
},
"id": "66041c1c-edd1-4162-8255-0bd764acb161",
"links": {
"self": "http://api.remotelock.dev/devices/66041c1c-edd1-4162-8255-0bd764acb161",
"location": "http://api.remotelock.dev/locations/a8329cf2-adce-4b2a-ae6a-33b68a898d0a",
"model": "http://api.remotelock.dev/models/c388d8ca-68c1-4d14-b06a-08e102e3e95a"
}
}
}
Access person accesses of a Connector Lock
Request
Endpoint
GET /devices/:id/access_person_accesses
GET /devices/8ea6adc1-030c-4c95-bffe-fa49ac092dda/access_person_accesses?attributes[access_person_type]=access_user
Parameters
attributes: {"access_person_type"=>"access_user"}
Name | Description |
---|---|
attributes[access_person_type] | Filter by type(s). Supported types: access_user and access_guest |
Response
200 OK
{
"data": [
{
"type": "access_person_access",
"attributes": {
"guest_start_time": null,
"guest_end_time": null,
"devices_count": 0,
"devices_synced_count": 0,
"devices_pending_sync_count": 0,
"devices_failed_sync_count": 0,
"accessible_type": "location",
"access_starts_at": null,
"access_ends_at": null,
"created_at": "2024-09-19T12:15:04Z",
"updated_at": "2024-09-19T12:15:04Z",
"access_person_id": "1b2d7257-34d8-429d-8038-53c0e75cf280",
"access_person_type": "access_user",
"accessible_id": "21767c1d-b837-4fe9-9c6c-a6de468cb129"
},
"id": "a7a2de8a-0925-4571-abfd-d57fda6cade3",
"links": {
"self": "http://api.remotelock.dev/access_persons/1b2d7257-34d8-429d-8038-53c0e75cf280/accesses/a7a2de8a-0925-4571-abfd-d57fda6cade3",
"access_person": "http://api.remotelock.dev/access_persons/1b2d7257-34d8-429d-8038-53c0e75cf280",
"accessible": "http://api.remotelock.dev/locations/21767c1d-b837-4fe9-9c6c-a6de468cb129"
}
},
{
"type": "access_person_access",
"attributes": {
"guest_start_time": null,
"guest_end_time": null,
"devices_count": 0,
"devices_synced_count": 0,
"devices_pending_sync_count": 0,
"devices_failed_sync_count": 0,
"accessible_type": "connector_lock",
"access_starts_at": null,
"access_ends_at": null,
"created_at": "2024-09-19T12:15:04Z",
"updated_at": "2024-09-19T12:15:04Z",
"access_person_id": "14403b82-eb93-43ec-b561-c9ac86c3651b",
"access_person_type": "access_user",
"accessible_id": "8ea6adc1-030c-4c95-bffe-fa49ac092dda"
},
"id": "66789f17-a085-436f-a48e-34af90bfa07c",
"links": {
"self": "http://api.remotelock.dev/access_persons/14403b82-eb93-43ec-b561-c9ac86c3651b/accesses/66789f17-a085-436f-a48e-34af90bfa07c",
"access_person": "http://api.remotelock.dev/access_persons/14403b82-eb93-43ec-b561-c9ac86c3651b",
"accessible": "http://api.remotelock.dev/devices/8ea6adc1-030c-4c95-bffe-fa49ac092dda"
}
}
],
"meta": {
"page": 1,
"per_page": 25,
"total_count": 2,
"total_pages": 1
}
}
Gets the Connector Lock configuration options
The endpoint returns a JSON object containing the Connector Lock configuration options also called
the device configurability. The configurability object uses the below DSL
to describe the key
value configuration options.
root: {
version: integer
name: string
description: string
lastUpdatedAt: integer
attributes: ConfigurationObject[]
}
ConfigurationObject: {
label: string
name: string
description?: string // used to display a tooltip next to the input
type: "text" | "select" | "checkbox" | "radio" | "time" | "stepper" | "group"
children?: ConfigurationObject[] // only if type is "group"
options?: OptionObject[] // only if type is "select", "radio" or "stepper"
dependencies?: DependencyObject[]
}
OptionObject: {
value: string,
label: string
}
DependencyObject: {
enable?: DependencyCondition
show?: DependencyCondition
}
DependencyCondition: {
name: string
value: string
condition: "eq" | "neq" | "gt" | "lt" | "gte" | "lte"
}
Request
Endpoint
GET /devices/:id/configurability
GET /devices/eb3ef9cd-c51a-4a6d-ac20-4179e8ccf3b1/configurability
Parameters
None.
Response
200 OK
{
"name": "model configurability",
"version": 1,
"attributes": [
{
"name": "relock",
"type": "number",
"maximum": 30,
"minimum": 1,
"label": "Relock",
"description": "Relock time in seconds"
},
{
"name": "led_standby_color",
"type": "select",
"options": [
"off",
"red",
"green",
"amber"
],
"label": "Standby LED Color"
}
],
"description": "description",
"lastUpdatedAt": "2024-03-22T13:11:11.601Z"
}
Fields
Name | Description |
---|---|
name | The device configurability schema name. |
version | The current device model configurability schema version. |
attributes | The device model configuration options described using the attached DSL. |
description | Extra details on the configurability schema. |
lastUpdatedAt | The last time the configurability schema was updated. |
Gets a Connector Lock configuration
The endpoint returns an object containing the dynamic configuration fields of a Connector Lock. Extra details on the fields can be found using the configurability endpoint.
Request
Endpoint
GET /devices/:id/configuration
GET /devices/7b12a2f9-0fdb-4b55-b282-4e1414997359/configuration
Parameters
None.
Response
200 OK
{
"relock": 5,
"led_standby_color": "amber"
}
Register an OpenEdge RG/BG/CG (formerly 5i/3i/7i) lock
Request
Endpoint
POST /devices
POST /devices
Parameters
{
"attributes": {
"name": "Home Lock",
"location_id": "ae455231-a874-4664-afa9-abdad242359f",
"serial_number": "AC000W000213429"
}
}
Name | Description |
---|---|
attributes[name] required | Name |
attributes[serial_number] required | Serial number |
attributes[model_id] | Model |
attributes[location_id] required | Location |
Response
201 Created
{
"data": {
"type": "lock",
"attributes": {
"name": "Home Lock",
"heartbeat_interval": 1200,
"wifi_level": 0,
"signal_quality": 2,
"connected": false,
"alive": true,
"power_source": "alkaline_battery",
"connected_at": "2024-09-19T12:12:09Z",
"serial_number": "AC000W000213429",
"connectivity_enabled": true,
"algorithmic_pin_enabled": true,
"auto_lock": true,
"auto_lock_timeout": 20,
"created_at": "2024-09-19T12:15:09Z",
"default_guest_end_time": null,
"default_guest_start_time": null,
"local_pins": [
"1234"
],
"mac_address": "ee:e6:4a:32:e1:f9",
"manual_auto_lock_timeout": 0,
"muted": false,
"nfc": "no_nfc",
"smd": "1100",
"no_enter_code": false,
"online_auto_lock": false,
"power_level": 5,
"programming_code": "123456",
"state": "locked",
"updated_at": "2024-09-19T12:15:09Z",
"wake_wifi": "user_action",
"wifi_enabled": true,
"model_number": "LS-5i",
"model_id": "4c22fcb0-22f6-4ed5-bf65-8731132da65c",
"location_id": "ae455231-a874-4664-afa9-abdad242359f"
},
"id": "2afa4d85-a0ce-414b-a94f-3810ead83248",
"links": {
"self": "http://api.remotelock.dev/devices/2afa4d85-a0ce-414b-a94f-3810ead83248",
"model": "http://api.remotelock.dev/models/4c22fcb0-22f6-4ed5-bf65-8731132da65c",
"location": "http://api.remotelock.dev/locations/ae455231-a874-4664-afa9-abdad242359f"
}
}
}
Fields
Name | Description |
---|---|
heartbeat_interval | Number of seconds between connections. |
connected | Is the device connected at this moment? |
alive | Is the device "heartbeating" regularly? |
signal_quality | Wi-Fi signal quality, values 0 to 4 |
power_level | Battery power level (percentage) |
wake_wifi | When the lock is synced with the cloud. |
auto_lock | Automatically lock after an unlock event. |
auto_lock_timeout | Number of seconds before relocking. |
connected_at | Time of last successful connection. |
Update a lock
Your settings changes might be lost if you make this request before the
lock wakes up for the first time - which means you should wait until
connected_at
has a timestamp before making this request. This is
because we request the current lock settings whenever it's registered.
Request
Endpoint
PUT /devices/:id
PUT /devices/a33da8ff-e4f1-4be0-8698-7756fad81179
Parameters
{
"attributes": {
"name": "Backdoor Lock",
"location_id": "aa490449-4fe4-4192-8b0a-9d7afa2a09d6",
"default_guest_start_time": "11:15:00",
"power_source": "alkaline_battery",
"local_pins": [
"1234"
]
}
}
Name | Description |
---|---|
attributes[name] | Name |
attributes[serial_number] | Device serial number |
attributes[programming_code] | Programming code |
attributes[heartbeat_interval] | Heartbeat interval |
attributes[wake_wifi] | Controls what events cause the lock to sync with the cloud. Can be user_action or heartbeat_interval . Additionally, model LS-5i supports user_action_except_manual , which excludes interaction with the knob. |
attributes[muted] | Muted |
attributes[auto_lock] | Auto-lock |
attributes[auto_lock_timeout] | Auto-lock timeout |
attributes[auto_lock_schedule_id] | Auto-lock Schedule |
attributes[lock_action_schedule_id] | Lock Action Schedule |
attributes[location_id] | Location |
attributes[default_guest_start_time] | Default Access Guest start time, ISO 8601 24 hour time format |
attributes[default_guest_end_time] | Default Access Guest end time, ISO 8601 24 hour time format |
attributes[power_source] | One of hardwire , alkaline_battery , or lithium_battery . This affects the battery level percentage as well as "low battery" notifications. |
attributes[local_pins] | Array of PINs programmed via the device keypad. This is a "set" operation. Only PIN removal is supported. |
Response
200 OK
{
"data": {
"type": "lock",
"attributes": {
"name": "Backdoor Lock",
"heartbeat_interval": 1200,
"wifi_level": 0,
"signal_quality": 3,
"connected": true,
"alive": true,
"power_source": "alkaline_battery",
"connected_at": "2024-09-19T12:11:10Z",
"serial_number": "AC000W008936490",
"connectivity_enabled": true,
"algorithmic_pin_enabled": true,
"auto_lock": true,
"auto_lock_timeout": 20,
"created_at": "2024-09-19T12:15:10Z",
"default_guest_end_time": null,
"default_guest_start_time": "11:15:00",
"local_pins": [
"1234"
],
"mac_address": "4b:74:27:6f:f9:a4",
"manual_auto_lock_timeout": 0,
"muted": false,
"nfc": "no_nfc",
"smd": "1100",
"no_enter_code": false,
"online_auto_lock": false,
"power_level": 5,
"programming_code": "123456",
"state": "unlocked",
"updated_at": "2024-09-19T12:15:10Z",
"wake_wifi": "user_action",
"wifi_enabled": true,
"model_number": "OEMAIN",
"model_id": "9f9a71f5-7945-4583-8174-d613dbaf8c5a",
"location_id": "aa490449-4fe4-4192-8b0a-9d7afa2a09d6"
},
"id": "a33da8ff-e4f1-4be0-8698-7756fad81179",
"links": {
"self": "http://api.remotelock.dev/devices/a33da8ff-e4f1-4be0-8698-7756fad81179",
"model": "http://api.remotelock.dev/models/9f9a71f5-7945-4583-8174-d613dbaf8c5a",
"location": "http://api.remotelock.dev/locations/aa490449-4fe4-4192-8b0a-9d7afa2a09d6"
}
}
}
Lock a lock
Request
Endpoint
PUT /devices/:id/lock
PUT /devices/b61569a0-1f38-4132-bc9c-8910815924a5/lock
Parameters
None.
Response
200 OK
{
"data": {
"type": "lock",
"attributes": {
"name": "OEMAIN - AC000W002109108",
"heartbeat_interval": 0,
"wifi_level": 0,
"signal_quality": 0,
"connected": false,
"alive": false,
"power_source": "hardwire",
"connected_at": null,
"serial_number": "AC000W002109108",
"connectivity_enabled": false,
"algorithmic_pin_enabled": false,
"auto_lock": true,
"auto_lock_timeout": 0,
"created_at": "2024-09-19T12:15:11Z",
"default_guest_end_time": null,
"default_guest_start_time": null,
"local_pins": [
],
"mac_address": "",
"manual_auto_lock_timeout": 0,
"muted": false,
"nfc": "no_nfc",
"smd": "",
"no_enter_code": false,
"online_auto_lock": false,
"power_level": 0,
"programming_code": null,
"state": "locked",
"updated_at": "2024-09-19T12:15:11Z",
"wake_wifi": "user_action",
"wifi_enabled": false,
"model_number": "OEMAIN",
"model_id": "f65d046c-9981-4207-b9fd-025f78828a15",
"location_id": "3ad8e6a4-3a50-47ad-aebf-3161f989a9b4"
},
"id": "b61569a0-1f38-4132-bc9c-8910815924a5",
"links": {
"self": "http://api.remotelock.dev/devices/b61569a0-1f38-4132-bc9c-8910815924a5",
"model": "http://api.remotelock.dev/models/f65d046c-9981-4207-b9fd-025f78828a15",
"location": "http://api.remotelock.dev/locations/3ad8e6a4-3a50-47ad-aebf-3161f989a9b4"
}
}
}
Unlock a lock
Request
Endpoint
PUT /devices/:id/unlock
PUT /devices/a895f9d0-b09f-4327-af7f-336e8a13b914/unlock
Parameters
None.
Response
200 OK
{
"data": {
"type": "lock",
"attributes": {
"name": "OEMAIN - AC000W009296616",
"heartbeat_interval": 0,
"wifi_level": 0,
"signal_quality": 0,
"connected": false,
"alive": false,
"power_source": "hardwire",
"connected_at": null,
"serial_number": "AC000W009296616",
"connectivity_enabled": false,
"algorithmic_pin_enabled": false,
"auto_lock": true,
"auto_lock_timeout": 0,
"created_at": "2024-09-19T12:15:11Z",
"default_guest_end_time": null,
"default_guest_start_time": null,
"local_pins": [
],
"mac_address": "",
"manual_auto_lock_timeout": 0,
"muted": false,
"nfc": "no_nfc",
"smd": "",
"no_enter_code": false,
"online_auto_lock": false,
"power_level": 0,
"programming_code": null,
"state": "unlocked",
"updated_at": "2024-09-19T12:15:11Z",
"wake_wifi": "user_action",
"wifi_enabled": false,
"model_number": "OEMAIN",
"model_id": "439fd66f-7870-47d8-9bc3-d6f09f4ed5b5",
"location_id": "8847ac11-71f8-4585-8c4d-5044a24a73f2"
},
"id": "a895f9d0-b09f-4327-af7f-336e8a13b914",
"links": {
"self": "http://api.remotelock.dev/devices/a895f9d0-b09f-4327-af7f-336e8a13b914",
"model": "http://api.remotelock.dev/models/439fd66f-7870-47d8-9bc3-d6f09f4ed5b5",
"location": "http://api.remotelock.dev/locations/8847ac11-71f8-4585-8c4d-5044a24a73f2"
}
}
}
Lock a device for access person
Request
Endpoint
PUT /devices/:id/lock/:access_person_id
PUT /devices/f1a75905-7182-45f1-9531-4ec29b701a47/lock/cf4c907a-c848-4998-b17f-b4deb658e4e7
Parameters
None.
Response
200 OK
{
"data": {
"type": "lock",
"attributes": {
"name": "OEMAIN - AC000W009729888",
"heartbeat_interval": 1200,
"wifi_level": 0,
"signal_quality": 1,
"connected": true,
"alive": true,
"power_source": "alkaline_battery",
"connected_at": "2024-09-19T12:14:11Z",
"serial_number": "AC000W009729888",
"connectivity_enabled": true,
"algorithmic_pin_enabled": true,
"auto_lock": true,
"auto_lock_timeout": 20,
"created_at": "2024-09-19T12:15:11Z",
"default_guest_end_time": null,
"default_guest_start_time": null,
"local_pins": [
"1234"
],
"mac_address": "fa:ce:fb:d2:cf:49",
"manual_auto_lock_timeout": 0,
"muted": false,
"nfc": "no_nfc",
"smd": "1100",
"no_enter_code": false,
"online_auto_lock": false,
"power_level": 50,
"programming_code": "123456",
"state": "locked",
"updated_at": "2024-09-19T12:15:11Z",
"wake_wifi": "user_action",
"wifi_enabled": true,
"model_number": "OEMAIN",
"model_id": "ac2e1bb8-9c3d-4824-9a01-2b1be33a4182",
"location_id": "954ece8b-3733-4e08-adb0-2fa09b7c8102"
},
"id": "f1a75905-7182-45f1-9531-4ec29b701a47",
"links": {
"self": "http://api.remotelock.dev/devices/f1a75905-7182-45f1-9531-4ec29b701a47",
"model": "http://api.remotelock.dev/models/ac2e1bb8-9c3d-4824-9a01-2b1be33a4182",
"location": "http://api.remotelock.dev/locations/954ece8b-3733-4e08-adb0-2fa09b7c8102"
}
}
}
Unlock a device for access person
Request
Endpoint
PUT /devices/:id/unlock/:access_person_id
PUT /devices/5d6999f4-cf5b-4924-8702-55be95370063/unlock/9e81eb17-ef1d-4b26-88ac-1cfc2fc07927
Parameters
{
"pin": "1111"
}
Name | Description |
---|---|
pin | Required when require_pin_verification is true |
Response
200 OK
{
"data": {
"type": "lock",
"attributes": {
"name": "OEMAIN - AC000W003177571",
"heartbeat_interval": 1200,
"wifi_level": 0,
"signal_quality": 4,
"connected": false,
"alive": true,
"power_source": "alkaline_battery",
"connected_at": "2024-09-19T12:11:12Z",
"serial_number": "AC000W003177571",
"connectivity_enabled": true,
"algorithmic_pin_enabled": true,
"auto_lock": true,
"auto_lock_timeout": 20,
"created_at": "2024-09-19T12:15:11Z",
"default_guest_end_time": null,
"default_guest_start_time": null,
"local_pins": [
"1234"
],
"mac_address": "53:c6:cb:3e:9b:6e",
"manual_auto_lock_timeout": 0,
"muted": false,
"nfc": "no_nfc",
"smd": "1100",
"no_enter_code": false,
"online_auto_lock": false,
"power_level": 15,
"programming_code": "123456",
"state": "unlocked",
"updated_at": "2024-09-19T12:15:11Z",
"wake_wifi": "user_action",
"wifi_enabled": true,
"model_number": "OEMAIN",
"model_id": "2f00ebce-5c54-43c0-b3b1-652277415d97",
"location_id": "e89410de-ef06-4d34-977a-06409c374076"
},
"id": "5d6999f4-cf5b-4924-8702-55be95370063",
"links": {
"self": "http://api.remotelock.dev/devices/5d6999f4-cf5b-4924-8702-55be95370063",
"model": "http://api.remotelock.dev/models/2f00ebce-5c54-43c0-b3b1-652277415d97",
"location": "http://api.remotelock.dev/locations/e89410de-ef06-4d34-977a-06409c374076"
}
}
}
Access person accesses of a lock
Request
Endpoint
GET /devices/:id/access_person_accesses
GET /devices/2a520697-6fdf-4812-85b1-11a7922c7185/access_person_accesses?attributes[access_person_type]=access_user
Parameters
attributes: {"access_person_type"=>"access_user"}
Name | Description |
---|---|
attributes[access_person_type] | Filter by type(s). Supported types: access_user and access_guest |
Response
200 OK
{
"data": [
{
"type": "access_person_access",
"attributes": {
"guest_start_time": null,
"guest_end_time": null,
"devices_count": 0,
"devices_synced_count": 0,
"devices_pending_sync_count": 0,
"devices_failed_sync_count": 0,
"accessible_type": "location",
"access_starts_at": null,
"access_ends_at": null,
"created_at": "2024-09-19T12:15:12Z",
"updated_at": "2024-09-19T12:15:12Z",
"access_person_id": "d1c70776-c535-4f7d-9f23-3c277bd87b42",
"access_person_type": "access_user",
"accessible_id": "11b70c2c-4812-4548-aa19-f3266d1757c7"
},
"id": "998ed93a-9d65-4840-aa69-230a9eca3ede",
"links": {
"self": "http://api.remotelock.dev/access_persons/d1c70776-c535-4f7d-9f23-3c277bd87b42/accesses/998ed93a-9d65-4840-aa69-230a9eca3ede",
"access_person": "http://api.remotelock.dev/access_persons/d1c70776-c535-4f7d-9f23-3c277bd87b42",
"accessible": "http://api.remotelock.dev/locations/11b70c2c-4812-4548-aa19-f3266d1757c7"
}
},
{
"type": "access_person_access",
"attributes": {
"guest_start_time": null,
"guest_end_time": null,
"devices_count": 0,
"devices_synced_count": 0,
"devices_pending_sync_count": 0,
"devices_failed_sync_count": 0,
"accessible_type": "lock",
"access_starts_at": null,
"access_ends_at": null,
"created_at": "2024-09-19T12:15:12Z",
"updated_at": "2024-09-19T12:15:12Z",
"access_person_id": "24c83b4d-85cb-46ad-8f00-bacc538671bf",
"access_person_type": "access_user",
"accessible_id": "2a520697-6fdf-4812-85b1-11a7922c7185"
},
"id": "ce596ef2-1005-4be2-8cac-014eb914d1ee",
"links": {
"self": "http://api.remotelock.dev/access_persons/24c83b4d-85cb-46ad-8f00-bacc538671bf/accesses/ce596ef2-1005-4be2-8cac-014eb914d1ee",
"access_person": "http://api.remotelock.dev/access_persons/24c83b4d-85cb-46ad-8f00-bacc538671bf",
"accessible": "http://api.remotelock.dev/devices/2a520697-6fdf-4812-85b1-11a7922c7185"
}
}
],
"meta": {
"page": 1,
"per_page": 25,
"total_count": 2,
"total_pages": 1
}
}
Update a Schlage Home lock
Request
Endpoint
PUT /devices/:id
PUT /devices/379b5dad-ea2b-4609-9890-be06dc3d5430
Parameters
{
"attributes": {
"name": "East door",
"location_id": "e0d0926d-1be0-4a44-b480-13ff47e3ff08"
}
}
Name | Description |
---|---|
attributes[name] | Name |
attributes[location_id] | Location ID |
Response
200 OK
{
"data": {
"type": "schlage_home_lock",
"attributes": {
"connectivity_enabled": true,
"name": "East door",
"state": "locked",
"alive": true,
"connected": true,
"connected_at": "2024-09-19T12:14:14Z",
"power_level": 90,
"integration_status": "connected",
"integration_id": "4659f588-9b7f-4b6b-803c-15e44f1e9fd0",
"model_number": "SchlageEncode",
"created_at": "2024-09-19T12:15:14Z",
"updated_at": "2024-09-19T12:15:14Z",
"serial_number": "3100003251782951",
"location_id": "e0d0926d-1be0-4a44-b480-13ff47e3ff08",
"model_id": "ca07678c-751b-466b-abbf-f6878f018dc4"
},
"id": "379b5dad-ea2b-4609-9890-be06dc3d5430",
"links": {
"self": "http://api.remotelock.dev/devices/379b5dad-ea2b-4609-9890-be06dc3d5430",
"location": "http://api.remotelock.dev/locations/e0d0926d-1be0-4a44-b480-13ff47e3ff08",
"model": "http://api.remotelock.dev/models/ca07678c-751b-466b-abbf-f6878f018dc4"
}
}
}
Lock a Schlage Home lock
Request
Endpoint
PUT /devices/:id/lock
PUT /devices/598afad0-4d7e-4a6f-9b4d-2441f1ad2138/lock
Parameters
None.
Response
200 OK
{
"data": {
"type": "schlage_home_lock",
"attributes": {
"connectivity_enabled": true,
"name": "drawing room",
"state": "locked",
"alive": true,
"connected": true,
"connected_at": "2024-09-19T12:15:14Z",
"power_level": 90,
"integration_status": "connected",
"integration_id": "3bf914df-89a2-4196-b8eb-a0efc37887ba",
"model_number": "SchlageEncode",
"created_at": "2024-09-19T12:15:14Z",
"updated_at": "2024-09-19T12:15:14Z",
"serial_number": "3100003251782951",
"location_id": "7b38ef53-f6b4-48b5-ae5c-ad789afeec31",
"model_id": "f30c0a7a-e14c-4aad-8cb4-6ae92cb8ec2a"
},
"id": "598afad0-4d7e-4a6f-9b4d-2441f1ad2138",
"links": {
"self": "http://api.remotelock.dev/devices/598afad0-4d7e-4a6f-9b4d-2441f1ad2138",
"location": "http://api.remotelock.dev/locations/7b38ef53-f6b4-48b5-ae5c-ad789afeec31",
"model": "http://api.remotelock.dev/models/f30c0a7a-e14c-4aad-8cb4-6ae92cb8ec2a"
}
}
}
Unlock a Schlage Home lock
Request
Endpoint
PUT /devices/:id/unlock
PUT /devices/6a727b8b-f8f3-4350-bc66-8940dac8d7d7/unlock
Parameters
None.
Response
200 OK
{
"data": {
"type": "schlage_home_lock",
"attributes": {
"connectivity_enabled": true,
"name": "attic",
"state": "locked",
"alive": true,
"connected": true,
"connected_at": "2024-09-19T12:15:14Z",
"power_level": 90,
"integration_status": "connected",
"integration_id": "92a9f2f3-7b68-4000-841b-ca6b546839b6",
"model_number": "SchlageEncode",
"created_at": "2024-09-19T12:15:14Z",
"updated_at": "2024-09-19T12:15:14Z",
"serial_number": "3100003251782951",
"location_id": "898e36af-1f7d-468e-876c-294c22b75fc7",
"model_id": "d7d0e232-d04f-4511-a121-326e29108e68"
},
"id": "6a727b8b-f8f3-4350-bc66-8940dac8d7d7",
"links": {
"self": "http://api.remotelock.dev/devices/6a727b8b-f8f3-4350-bc66-8940dac8d7d7",
"location": "http://api.remotelock.dev/locations/898e36af-1f7d-468e-876c-294c22b75fc7",
"model": "http://api.remotelock.dev/models/d7d0e232-d04f-4511-a121-326e29108e68"
}
}
}
Access person accesses of a Schlage Home lock
Request
Endpoint
GET /devices/:id/access_person_accesses
GET /devices/42e5e2ef-a88c-438b-acc6-037833f273c2/access_person_accesses?attributes[access_person_type]=access_user
Parameters
attributes: {"access_person_type"=>"access_user"}
Name | Description |
---|---|
attributes[access_person_type] | Filter by type(s). Supported types: access_user and access_guest |
Response
200 OK
{
"data": [
{
"type": "access_person_access",
"attributes": {
"guest_start_time": null,
"guest_end_time": null,
"devices_count": 0,
"devices_synced_count": 0,
"devices_pending_sync_count": 0,
"devices_failed_sync_count": 0,
"accessible_type": "location",
"access_starts_at": null,
"access_ends_at": null,
"created_at": "2024-09-19T12:15:14Z",
"updated_at": "2024-09-19T12:15:14Z",
"access_person_id": "a1b5d5d2-2256-457b-b1e9-8729c7ad00b1",
"access_person_type": "access_user",
"accessible_id": "4d6917b6-ce3e-4f97-8f84-887cf2d1196f"
},
"id": "54bdfa6a-a012-41f4-8070-37a2da3a1d15",
"links": {
"self": "http://api.remotelock.dev/access_persons/a1b5d5d2-2256-457b-b1e9-8729c7ad00b1/accesses/54bdfa6a-a012-41f4-8070-37a2da3a1d15",
"access_person": "http://api.remotelock.dev/access_persons/a1b5d5d2-2256-457b-b1e9-8729c7ad00b1",
"accessible": "http://api.remotelock.dev/locations/4d6917b6-ce3e-4f97-8f84-887cf2d1196f"
}
},
{
"type": "access_person_access",
"attributes": {
"guest_start_time": null,
"guest_end_time": null,
"devices_count": 0,
"devices_synced_count": 0,
"devices_pending_sync_count": 0,
"devices_failed_sync_count": 0,
"accessible_type": "schlage_home_lock",
"access_starts_at": null,
"access_ends_at": null,
"created_at": "2024-09-19T12:15:14Z",
"updated_at": "2024-09-19T12:15:14Z",
"access_person_id": "b3042f46-c346-4e06-8d4f-bebea51edf43",
"access_person_type": "access_user",
"accessible_id": "42e5e2ef-a88c-438b-acc6-037833f273c2"
},
"id": "e4d7db23-fe91-4685-8dc0-e807d04bff62",
"links": {
"self": "http://api.remotelock.dev/access_persons/b3042f46-c346-4e06-8d4f-bebea51edf43/accesses/e4d7db23-fe91-4685-8dc0-e807d04bff62",
"access_person": "http://api.remotelock.dev/access_persons/b3042f46-c346-4e06-8d4f-bebea51edf43",
"accessible": "http://api.remotelock.dev/devices/42e5e2ef-a88c-438b-acc6-037833f273c2"
}
}
],
"meta": {
"page": 1,
"per_page": 25,
"total_count": 2,
"total_pages": 1
}
}
Update a ZWave lock
Request
Endpoint
PUT /devices/:id
PUT /devices/e4d3fcc6-ae7c-4e1c-aade-51079fdd1857
Parameters
{
"attributes": {
"name": "East door"
}
}
Name | Description |
---|---|
attributes[name] | Name |
Response
200 OK
{
"data": {
"type": "zwave_lock",
"attributes": {
"connectivity_enabled": true,
"name": "East door",
"state": "locked",
"connected": false,
"power_level": 0,
"protocol": "",
"model_number": "ZWaveLock",
"created_at": "2024-09-19T12:15:15Z",
"updated_at": "2024-09-19T12:15:15Z",
"location_id": "9058af81-3851-4c67-a96c-fc3bd2d3b3a6",
"model_id": "241c2693-14c8-4c66-9755-b502c04ea1c4"
},
"id": "e4d3fcc6-ae7c-4e1c-aade-51079fdd1857",
"links": {
"self": "http://api.remotelock.dev/devices/e4d3fcc6-ae7c-4e1c-aade-51079fdd1857",
"location": "http://api.remotelock.dev/locations/9058af81-3851-4c67-a96c-fc3bd2d3b3a6",
"model": "http://api.remotelock.dev/models/241c2693-14c8-4c66-9755-b502c04ea1c4"
}
}
}
Lock a ZWave lock
Request
Endpoint
PUT /devices/:id/lock
PUT /devices/1643b87b-cbfb-4143-8f9e-092a039e4ef2/lock
Parameters
None.
Response
200 OK
{
"data": {
"type": "zwave_lock",
"attributes": {
"connectivity_enabled": true,
"name": "NVC",
"state": "locked",
"connected": false,
"power_level": 0,
"protocol": "",
"model_number": "ZWaveLock",
"created_at": "2024-09-19T12:15:15Z",
"updated_at": "2024-09-19T12:15:15Z",
"location_id": "02546fe4-c035-438c-a151-c6c2ed170c55",
"model_id": "6b90547a-2125-49fb-af5b-ae6704593896"
},
"id": "1643b87b-cbfb-4143-8f9e-092a039e4ef2",
"links": {
"self": "http://api.remotelock.dev/devices/1643b87b-cbfb-4143-8f9e-092a039e4ef2",
"location": "http://api.remotelock.dev/locations/02546fe4-c035-438c-a151-c6c2ed170c55",
"model": "http://api.remotelock.dev/models/6b90547a-2125-49fb-af5b-ae6704593896"
}
}
}
Unlock a ZWave lock
Request
Endpoint
PUT /devices/:id/unlock
PUT /devices/64204cb7-d1f6-4e8e-945e-f4e3ab0be9ec/unlock
Parameters
None.
Response
200 OK
{
"data": {
"type": "zwave_lock",
"attributes": {
"connectivity_enabled": true,
"name": "WXD",
"state": "unlocked",
"connected": false,
"power_level": 0,
"protocol": "",
"model_number": "ZWaveLock",
"created_at": "2024-09-19T12:15:15Z",
"updated_at": "2024-09-19T12:15:15Z",
"location_id": "4130ccfa-674c-4db8-be63-3c6aa9117b59",
"model_id": "f81aa63f-2aea-4e5d-9930-c9153a52818e"
},
"id": "64204cb7-d1f6-4e8e-945e-f4e3ab0be9ec",
"links": {
"self": "http://api.remotelock.dev/devices/64204cb7-d1f6-4e8e-945e-f4e3ab0be9ec",
"location": "http://api.remotelock.dev/locations/4130ccfa-674c-4db8-be63-3c6aa9117b59",
"model": "http://api.remotelock.dev/models/f81aa63f-2aea-4e5d-9930-c9153a52818e"
}
}
}
Access person accesses of a ZWave lock
Request
Endpoint
GET /devices/:id/access_person_accesses
GET /devices/86927969-4d60-4117-8fd3-956beca8866f/access_person_accesses?attributes[access_person_type]=access_user
Parameters
attributes: {"access_person_type"=>"access_user"}
Name | Description |
---|---|
attributes[access_person_type] | Filter by type(s). Supported types: access_user and access_guest |
Response
200 OK
{
"data": [
{
"type": "access_person_access",
"attributes": {
"guest_start_time": null,
"guest_end_time": null,
"devices_count": 0,
"devices_synced_count": 0,
"devices_pending_sync_count": 0,
"devices_failed_sync_count": 0,
"accessible_type": "location",
"access_starts_at": null,
"access_ends_at": null,
"created_at": "2024-09-19T12:15:15Z",
"updated_at": "2024-09-19T12:15:15Z",
"access_person_id": "207b72cc-35d5-408c-8533-a9784269ba00",
"access_person_type": "access_user",
"accessible_id": "4257357f-ab48-4061-84a8-127ca0c052bd"
},
"id": "6f603718-ac61-492d-8141-27b7bc63066c",
"links": {
"self": "http://api.remotelock.dev/access_persons/207b72cc-35d5-408c-8533-a9784269ba00/accesses/6f603718-ac61-492d-8141-27b7bc63066c",
"access_person": "http://api.remotelock.dev/access_persons/207b72cc-35d5-408c-8533-a9784269ba00",
"accessible": "http://api.remotelock.dev/locations/4257357f-ab48-4061-84a8-127ca0c052bd"
}
},
{
"type": "access_person_access",
"attributes": {
"guest_start_time": null,
"guest_end_time": null,
"devices_count": 0,
"devices_synced_count": 0,
"devices_pending_sync_count": 0,
"devices_failed_sync_count": 0,
"accessible_type": "zwave_lock",
"access_starts_at": null,
"access_ends_at": null,
"created_at": "2024-09-19T12:15:15Z",
"updated_at": "2024-09-19T12:15:15Z",
"access_person_id": "6836845f-4390-440c-98c3-29bb4a53a38c",
"access_person_type": "access_user",
"accessible_id": "86927969-4d60-4117-8fd3-956beca8866f"
},
"id": "af458441-0080-4769-bae3-ba586c3110f4",
"links": {
"self": "http://api.remotelock.dev/access_persons/6836845f-4390-440c-98c3-29bb4a53a38c/accesses/af458441-0080-4769-bae3-ba586c3110f4",
"access_person": "http://api.remotelock.dev/access_persons/6836845f-4390-440c-98c3-29bb4a53a38c",
"accessible": "http://api.remotelock.dev/devices/86927969-4d60-4117-8fd3-956beca8866f"
}
}
],
"meta": {
"page": 1,
"per_page": 25,
"total_count": 2,
"total_pages": 1
}
}
Get all devices
Returns all device types (homogeneous).
Request
Endpoint
GET /devices
GET /devices
Parameters
Name | Description |
---|---|
sort | Sortable attributes: created_at and name, default: created_at ascending |
[type] | Filter by type(s). Supported types: acs_door, lock, thermostat, power_plug, connector_lock, zwave_lock, schlage_home_lock, acs_elevator, acs_elevator_floor, igloo_lock, and resort_lock |
Response
200 OK
{
"data": [
{
"type": "lock",
"attributes": {
"name": "LS-6i - AC000W005837219",
"heartbeat_interval": 1200,
"wifi_level": 0,
"signal_quality": 2,
"connected": false,
"alive": true,
"power_source": "alkaline_battery",
"connected_at": "2024-09-19T12:12:16Z",
"serial_number": "AC000W005837219",
"connectivity_enabled": true,
"algorithmic_pin_enabled": true,
"auto_lock": true,
"auto_lock_timeout": 20,
"created_at": "2024-09-19T12:15:16Z",
"default_guest_end_time": null,
"default_guest_start_time": null,
"local_pins": [
"1234"
],
"mac_address": "85:26:ae:35:f9:27",
"manual_auto_lock_timeout": 0,
"muted": false,
"nfc": "no_nfc",
"smd": "1100",
"no_enter_code": false,
"online_auto_lock": false,
"power_level": 5,
"programming_code": "123456",
"state": "unlocked",
"updated_at": "2024-09-19T12:15:16Z",
"wake_wifi": "user_action",
"wifi_enabled": true,
"model_number": "LS-6i",
"model_id": "d4654b9f-a470-4eb5-b781-f8f4a9751d6c",
"location_id": "576fcfed-8e16-4b18-a134-dfe79a18edde",
"lock_action_schedule_id": "a68ef0e5-39c3-47b8-8293-307edff2b491",
"auto_lock_schedule_id": "15f1773e-2971-406a-8e7a-cecf9cdc823e"
},
"id": "690f23f1-1c5e-4930-b453-e6f8658e228b",
"links": {
"self": "http://api.remotelock.dev/devices/690f23f1-1c5e-4930-b453-e6f8658e228b",
"model": "http://api.remotelock.dev/models/d4654b9f-a470-4eb5-b781-f8f4a9751d6c",
"location": "http://api.remotelock.dev/locations/576fcfed-8e16-4b18-a134-dfe79a18edde",
"lock_action_schedule": "http://api.remotelock.dev/schedules/a68ef0e5-39c3-47b8-8293-307edff2b491",
"auto_lock_schedule": "http://api.remotelock.dev/schedules/15f1773e-2971-406a-8e7a-cecf9cdc823e"
}
},
{
"type": "thermostat",
"attributes": {
"name": "LS-60i - 001DC9A0B85X",
"heartbeat_interval": 1200,
"wifi_level": 0,
"signal_quality": 3,
"connected": true,
"alive": true,
"power_source": "hardwire",
"connected_at": "2024-09-19T12:15:16Z",
"serial_number": "001DC9A0B85X",
"connectivity_enabled": true,
"current_mode": "cool",
"target_mode": "auto",
"fan_mode": "auto",
"hold": false,
"temperature": 77.0,
"target_temperature": 75.5,
"unit": "F",
"humidity": 45,
"energy_saver": true,
"scheduled_target_temperature": 80.0,
"desired_target_temperature": 75.5,
"model_number": "LS-60i",
"created_at": "2024-09-19T12:15:16Z",
"updated_at": "2024-09-19T12:15:16Z",
"model_id": "e6c65016-773e-43e3-9629-5492cd93142f",
"location_id": "576fcfed-8e16-4b18-a134-dfe79a18edde",
"thermostat_schedule_id": "6837b72d-a45a-4579-9be4-6a0ab740b885"
},
"id": "78b75d08-77a2-49e9-ac62-1a2eebe161aa",
"links": {
"self": "http://api.remotelock.dev/devices/78b75d08-77a2-49e9-ac62-1a2eebe161aa",
"model": "http://api.remotelock.dev/models/e6c65016-773e-43e3-9629-5492cd93142f",
"location": "http://api.remotelock.dev/locations/576fcfed-8e16-4b18-a134-dfe79a18edde",
"thermostat_schedule": "http://api.remotelock.dev/schedules/6837b72d-a45a-4579-9be4-6a0ab740b885"
},
"meta": {
"restricted_actions": [
"replace"
]
}
},
{
"type": "lock",
"attributes": {
"connectivity_enabled": true,
"name": "August - L2FQAE19B8",
"serial_number": "L2FQAE19B8",
"state": "locked",
"alive": true,
"connected": true,
"connected_at": "2024-09-19T12:11:16.000Z",
"power_level": 90,
"signal_quality": 3,
"default_guest_start_time": null,
"default_guest_end_time": null,
"model_number": "August",
"created_at": "2024-09-19T12:15:16Z",
"updated_at": "2024-09-19T12:15:16Z",
"model_id": "29c55bb3-cebe-4ece-b2d0-fdab14456fb2",
"location_id": "576fcfed-8e16-4b18-a134-dfe79a18edde"
},
"id": "733a3264-ce96-4a7f-9f51-660d4174b541",
"links": {
"self": "http://api.remotelock.dev/devices/733a3264-ce96-4a7f-9f51-660d4174b541",
"model": "http://api.remotelock.dev/models/29c55bb3-cebe-4ece-b2d0-fdab14456fb2",
"location": "http://api.remotelock.dev/locations/576fcfed-8e16-4b18-a134-dfe79a18edde"
}
},
{
"type": "lock",
"attributes": {
"connectivity_enabled": true,
"name": "YaleHome - L2FQ26AC20",
"serial_number": "L2FQ26AC20",
"state": "locked",
"alive": true,
"connected": true,
"connected_at": "2024-09-19T12:07:16.000Z",
"power_level": 90,
"signal_quality": 3,
"default_guest_start_time": null,
"default_guest_end_time": null,
"model_number": "YaleHome",
"created_at": "2024-09-19T12:15:16Z",
"updated_at": "2024-09-19T12:15:16Z",
"model_id": "9c2f452c-ae10-4556-b134-b1f058a9ece2",
"location_id": "576fcfed-8e16-4b18-a134-dfe79a18edde"
},
"id": "0cc503d3-0e8c-431e-947e-d0171307f5e0",
"links": {
"self": "http://api.remotelock.dev/devices/0cc503d3-0e8c-431e-947e-d0171307f5e0",
"model": "http://api.remotelock.dev/models/9c2f452c-ae10-4556-b134-b1f058a9ece2",
"location": "http://api.remotelock.dev/locations/576fcfed-8e16-4b18-a134-dfe79a18edde"
}
},
{
"type": "lock",
"attributes": {
"name": "LS-DB500i - 20F85E005WME",
"heartbeat_interval": 1200,
"wifi_level": 0,
"signal_quality": 4,
"connected": false,
"alive": true,
"power_source": "alkaline_battery",
"connected_at": "2024-09-19T12:10:16Z",
"serial_number": "20F85E005WME",
"connectivity_enabled": true,
"algorithmic_pin_enabled": true,
"auto_lock": true,
"auto_lock_timeout": 20,
"created_at": "2024-09-19T12:15:16Z",
"default_guest_end_time": null,
"default_guest_start_time": null,
"local_pins": [
"1234"
],
"mac_address": "31:8e:84:6e:04:2a",
"manual_auto_lock_timeout": 0,
"muted": false,
"nfc": "no_nfc",
"smd": "1100",
"no_enter_code": false,
"online_auto_lock": false,
"power_level": 5,
"programming_code": "123456",
"state": "unlocked",
"updated_at": "2024-09-19T12:15:16Z",
"wake_wifi": "user_action",
"wifi_enabled": true,
"model_number": "LS-DB500i",
"model_id": "95d66b7e-40e1-4ce3-b781-5d8c5cb0a123",
"location_id": "576fcfed-8e16-4b18-a134-dfe79a18edde",
"lock_action_schedule_id": "a68ef0e5-39c3-47b8-8293-307edff2b491",
"auto_lock_schedule_id": "15f1773e-2971-406a-8e7a-cecf9cdc823e"
},
"id": "cb8887ab-e5d3-4ee1-acbe-d9d4a13e295b",
"links": {
"self": "http://api.remotelock.dev/devices/cb8887ab-e5d3-4ee1-acbe-d9d4a13e295b",
"model": "http://api.remotelock.dev/models/95d66b7e-40e1-4ce3-b781-5d8c5cb0a123",
"location": "http://api.remotelock.dev/locations/576fcfed-8e16-4b18-a134-dfe79a18edde",
"lock_action_schedule": "http://api.remotelock.dev/schedules/a68ef0e5-39c3-47b8-8293-307edff2b491",
"auto_lock_schedule": "http://api.remotelock.dev/schedules/15f1773e-2971-406a-8e7a-cecf9cdc823e"
},
"meta": {
"restricted_actions": [
"replace"
]
}
},
{
"type": "resort_lock",
"attributes": {
"name": "RL-4000 - VUTSZRTP0B4FBE01",
"default_guest_start_time": null,
"default_guest_end_time": null,
"model_number": "RL-4000",
"created_at": "2024-09-19T12:15:16Z",
"updated_at": "2024-09-19T12:15:16Z",
"serial_number": "VUTSZRTP0B4FBE01",
"model_id": "f68bec8f-50da-470d-b822-16fef19f6293",
"location_id": "576fcfed-8e16-4b18-a134-dfe79a18edde"
},
"id": "f9985483-bf36-49d7-90f7-c5d59f7109d6",
"links": {
"self": "http://api.remotelock.dev/devices/f9985483-bf36-49d7-90f7-c5d59f7109d6",
"model": "http://api.remotelock.dev/models/f68bec8f-50da-470d-b822-16fef19f6293",
"location": "http://api.remotelock.dev/locations/576fcfed-8e16-4b18-a134-dfe79a18edde"
}
},
{
"type": "power_plug",
"attributes": {
"name": "LS-P50i - 20F85EAI8228",
"heartbeat_interval": 1200,
"wifi_level": 0,
"signal_quality": 1,
"connected": true,
"alive": true,
"power_source": "hardwire",
"connected_at": "2024-09-19T12:11:16Z",
"serial_number": "20F85EAI8228",
"connectivity_enabled": true,
"on": true,
"voltage": 120.0,
"power": 4.5,
"power_factor": 0.57,
"current": 0.06,
"frequency": 59.95,
"total_power": 8.75,
"occupied": true,
"model_number": "LS-P50i",
"model_id": "d9c77d4f-0c1d-4aa8-90ab-1fbdf5c55778",
"location_id": "576fcfed-8e16-4b18-a134-dfe79a18edde",
"power_plug_schedule_id": "c1bd8125-8901-467b-81b1-60f60f99ddba"
},
"id": "3b1ede96-e0d3-41d9-bf5b-6f1356611748",
"links": {
"self": "http://api.remotelock.dev/devices/3b1ede96-e0d3-41d9-bf5b-6f1356611748",
"model": "http://api.remotelock.dev/models/d9c77d4f-0c1d-4aa8-90ab-1fbdf5c55778",
"location": "http://api.remotelock.dev/locations/576fcfed-8e16-4b18-a134-dfe79a18edde",
"power_plug_schedule": "http://api.remotelock.dev/schedules/c1bd8125-8901-467b-81b1-60f60f99ddba"
},
"meta": {
"restricted_actions": [
"replace"
]
}
},
{
"type": "acs_door",
"attributes": {
"connectivity_enabled": true,
"name": "Jewelry",
"state": "unlocked",
"connected": false,
"model_number": "Mercury",
"created_at": "2024-09-19T12:15:16Z",
"updated_at": "2024-09-19T12:15:16Z",
"model_id": "fd948f76-eae6-4e92-8afb-3646373bda53",
"location_id": "576fcfed-8e16-4b18-a134-dfe79a18edde",
"lock_action_schedule_id": "a68ef0e5-39c3-47b8-8293-307edff2b491",
"auto_lock_schedule_id": "15f1773e-2971-406a-8e7a-cecf9cdc823e"
},
"id": "7c6af8e9-23e9-4ec1-8cbc-cc0db27452fb",
"links": {
"self": "http://api.remotelock.dev/devices/7c6af8e9-23e9-4ec1-8cbc-cc0db27452fb",
"model": "http://api.remotelock.dev/models/fd948f76-eae6-4e92-8afb-3646373bda53",
"location": "http://api.remotelock.dev/locations/576fcfed-8e16-4b18-a134-dfe79a18edde",
"lock_action_schedule": "http://api.remotelock.dev/schedules/a68ef0e5-39c3-47b8-8293-307edff2b491",
"auto_lock_schedule": "http://api.remotelock.dev/schedules/15f1773e-2971-406a-8e7a-cecf9cdc823e"
}
},
{
"type": "zwave_lock",
"attributes": {
"connectivity_enabled": true,
"name": "SOO",
"state": "locked",
"connected": true,
"power_level": 15,
"protocol": "",
"model_number": "ZWaveLock",
"created_at": "2024-09-19T12:15:16Z",
"updated_at": "2024-09-19T12:15:16Z",
"location_id": "576fcfed-8e16-4b18-a134-dfe79a18edde",
"model_id": "3ef316a8-5c2a-4867-81fc-ad32254619fe"
},
"id": "a79e2f0a-934a-4b0f-ad8c-de57d4b5e110",
"links": {
"self": "http://api.remotelock.dev/devices/a79e2f0a-934a-4b0f-ad8c-de57d4b5e110",
"location": "http://api.remotelock.dev/locations/576fcfed-8e16-4b18-a134-dfe79a18edde",
"model": "http://api.remotelock.dev/models/3ef316a8-5c2a-4867-81fc-ad32254619fe"
}
},
{
"type": "igloo_lock",
"attributes": {
"name": "drawing room",
"model_number": "IglooLock",
"location_id": "576fcfed-8e16-4b18-a134-dfe79a18edde",
"model_id": "751f38e3-b5d3-4870-85ea-d629261de8e9"
},
"id": "5364dd26-8a8c-4a50-8f01-6138eb85480a",
"links": {
"self": "http://api.remotelock.dev/devices/5364dd26-8a8c-4a50-8f01-6138eb85480a",
"location": "http://api.remotelock.dev/locations/576fcfed-8e16-4b18-a134-dfe79a18edde",
"model": "http://api.remotelock.dev/models/751f38e3-b5d3-4870-85ea-d629261de8e9"
}
},
{
"type": "schlage_home_lock",
"attributes": {
"connectivity_enabled": true,
"name": "porch",
"state": "locked",
"alive": true,
"connected": true,
"connected_at": "2024-09-19T12:13:16Z",
"power_level": 90,
"integration_status": "connected",
"integration_id": "5920a6c0-9f31-4d98-97a8-73b1fe6e246b",
"model_number": "SchlageEncode",
"created_at": "2024-09-19T12:15:16Z",
"updated_at": "2024-09-19T12:15:16Z",
"serial_number": "3100003251782951",
"location_id": "576fcfed-8e16-4b18-a134-dfe79a18edde",
"model_id": "5985b7a3-c55b-43e4-8d09-8869be54a45c"
},
"id": "7e02011e-1f4f-486a-a022-735686a3cdfc",
"links": {
"self": "http://api.remotelock.dev/devices/7e02011e-1f4f-486a-a022-735686a3cdfc",
"location": "http://api.remotelock.dev/locations/576fcfed-8e16-4b18-a134-dfe79a18edde",
"model": "http://api.remotelock.dev/models/5985b7a3-c55b-43e4-8d09-8869be54a45c"
}
},
{
"type": "acs_elevator_floor",
"attributes": {
"connectivity_enabled": true,
"name": "Movies & Garden",
"state": "locked",
"number": 17,
"model_number": "MercuryElevatorFloor",
"created_at": "2024-09-19T12:15:16Z",
"updated_at": "2024-09-19T12:15:16Z",
"connected": true,
"model_id": "6b9f9cf8-31ef-43c5-9c1f-cff63fa02bbd",
"location_id": "576fcfed-8e16-4b18-a134-dfe79a18edde",
"elevator_id": "96766263-e649-4445-94f8-91539ff3ef52"
},
"id": "b30a8fe7-cc46-43ab-86da-04eac28a3eb1",
"links": {
"self": "http://api.remotelock.dev/devices/b30a8fe7-cc46-43ab-86da-04eac28a3eb1",
"model": "http://api.remotelock.dev/models/6b9f9cf8-31ef-43c5-9c1f-cff63fa02bbd",
"location": "http://api.remotelock.dev/locations/576fcfed-8e16-4b18-a134-dfe79a18edde",
"elevator": "http://api.remotelock.dev/devices/96766263-e649-4445-94f8-91539ff3ef52"
}
},
{
"type": "connector_lock",
"attributes": {
"connectivity_enabled": true,
"name": "living room",
"alive": true,
"connected": false,
"connected_at": "2024-09-19T12:15:16Z",
"power_level": 100,
"serial_number": "8609cfeaece5a74306f85926db2c6eee",
"signal_quality": 4,
"state": "LOCKED",
"pending_physical_sync": false,
"model_number": "RubberLock",
"allow_device_deletion_from_hub": false,
"supports_device_configuration": false,
"created_at": "2024-09-19T12:15:16Z",
"updated_at": "2024-09-19T12:15:16Z",
"location_id": "576fcfed-8e16-4b18-a134-dfe79a18edde",
"model_id": "0254a6c9-8182-4f63-aa2a-0db33edd94c5",
"lock_action_schedule_id": "a68ef0e5-39c3-47b8-8293-307edff2b491",
"auto_lock_schedule_id": "15f1773e-2971-406a-8e7a-cecf9cdc823e"
},
"id": "4eeda4c0-7bd6-4630-903a-8563e124c066",
"links": {
"self": "http://api.remotelock.dev/devices/4eeda4c0-7bd6-4630-903a-8563e124c066",
"location": "http://api.remotelock.dev/locations/576fcfed-8e16-4b18-a134-dfe79a18edde",
"model": "http://api.remotelock.dev/models/0254a6c9-8182-4f63-aa2a-0db33edd94c5",
"lock_action_schedule": "http://api.remotelock.dev/schedules/a68ef0e5-39c3-47b8-8293-307edff2b491",
"auto_lock_schedule": "http://api.remotelock.dev/schedules/15f1773e-2971-406a-8e7a-cecf9cdc823e"
}
}
],
"meta": {
"page": 1,
"per_page": 25,
"total_count": 13,
"total_pages": 1
}
}
Get a device
Request
Endpoint
GET /devices/:id
GET /devices/e8875bc9-3560-4c46-94e0-85e50df61a82
Parameters
None.
Response
200 OK
{
"data": {
"type": "lock",
"attributes": {
"name": "LS-6i - AC000W003998433",
"heartbeat_interval": 1200,
"wifi_level": 0,
"signal_quality": 1,
"connected": false,
"alive": true,
"power_source": "alkaline_battery",
"connected_at": "2024-09-19T12:10:24Z",
"serial_number": "AC000W003998433",
"connectivity_enabled": true,
"algorithmic_pin_enabled": true,
"auto_lock": true,
"auto_lock_timeout": 20,
"created_at": "2024-09-19T12:15:24Z",
"default_guest_end_time": null,
"default_guest_start_time": null,
"local_pins": [
"1234"
],
"mac_address": "e6:e2:7d:d9:f0:c6",
"manual_auto_lock_timeout": 0,
"muted": false,
"nfc": "no_nfc",
"smd": "1100",
"no_enter_code": false,
"online_auto_lock": false,
"power_level": 5,
"programming_code": "123456",
"state": "locked",
"updated_at": "2024-09-19T12:15:24Z",
"wake_wifi": "user_action",
"wifi_enabled": true,
"model_number": "LS-6i",
"model_id": "aa724f1b-f892-448c-ad07-be95409d3488",
"location_id": "e2f57180-2fc6-44ae-9ef5-6ff987d16519",
"lock_action_schedule_id": "dda4d36e-852d-47a6-a5d4-ac638ad350ab",
"auto_lock_schedule_id": "fa6d75c7-aa9b-4619-a2b9-9abde393ecbc"
},
"id": "e8875bc9-3560-4c46-94e0-85e50df61a82",
"links": {
"self": "http://api.remotelock.dev/devices/e8875bc9-3560-4c46-94e0-85e50df61a82",
"model": "http://api.remotelock.dev/models/aa724f1b-f892-448c-ad07-be95409d3488",
"location": "http://api.remotelock.dev/locations/e2f57180-2fc6-44ae-9ef5-6ff987d16519",
"lock_action_schedule": "http://api.remotelock.dev/schedules/dda4d36e-852d-47a6-a5d4-ac638ad350ab",
"auto_lock_schedule": "http://api.remotelock.dev/schedules/fa6d75c7-aa9b-4619-a2b9-9abde393ecbc"
}
}
}
Temporarily unlock a Device
Temporarily unlocks a lock. Supported device API types: acs_door and connector_lock with the attribute native_temporary_unlockable = true.
Request
Endpoint
PUT /devices/:id/temporary_unlock
PUT /devices/b4718352-0cb7-4262-a6be-d7ebc223e2db/temporary_unlock
Parameters
None.
Response
200 OK
{
"data": {
"type": "acs_door",
"attributes": {
"connectivity_enabled": true,
"name": "Health, Shoes & Industrial",
"state": "unlocked",
"connected": true,
"model_number": "Mercury",
"created_at": "2024-09-19T12:15:24Z",
"updated_at": "2024-09-19T12:15:24Z",
"model_id": "92d0f03a-62b1-4c99-bf71-cf0de7b9dc7b",
"location_id": "73040c1e-99a7-4127-8add-bce281923d0f"
},
"id": "b4718352-0cb7-4262-a6be-d7ebc223e2db",
"links": {
"self": "http://api.remotelock.dev/devices/b4718352-0cb7-4262-a6be-d7ebc223e2db",
"model": "http://api.remotelock.dev/models/92d0f03a-62b1-4c99-bf71-cf0de7b9dc7b",
"location": "http://api.remotelock.dev/locations/73040c1e-99a7-4127-8add-bce281923d0f"
}
}
}
Temporarily unlock a Device for access person
Temporarily unlocks a lock after checking access person's access.
Request
Endpoint
PUT /devices/:id/temporary_unlock/:access_person_id
PUT /devices/3b581488-8153-4b66-bc30-aaf7798c4892/temporary_unlock/052c88f8-afb4-4c51-9cb5-3dff08485fdb
Parameters
{
"pin": "1111"
}
Name | Description |
---|---|
pin | Required when require_pin_verification is true |
Response
200 OK
{
"data": {
"type": "acs_door",
"attributes": {
"connectivity_enabled": true,
"name": "Grocery & Clothing",
"state": "unlocked",
"connected": false,
"model_number": "Mercury",
"created_at": "2024-09-19T12:15:24Z",
"updated_at": "2024-09-19T12:15:25Z",
"model_id": "82db86ae-e67d-46dd-ab2e-3ad9e1ca316e",
"location_id": "889f2f07-e8a8-4f15-b010-7004b78da20e"
},
"id": "3b581488-8153-4b66-bc30-aaf7798c4892",
"links": {
"self": "http://api.remotelock.dev/devices/3b581488-8153-4b66-bc30-aaf7798c4892",
"model": "http://api.remotelock.dev/models/82db86ae-e67d-46dd-ab2e-3ad9e1ca316e",
"location": "http://api.remotelock.dev/locations/889f2f07-e8a8-4f15-b010-7004b78da20e"
}
}
}
Respond with a not found response
AccessPersonDevice not found
Request
Endpoint
PUT /devices/:id/temporary_unlock/:access_person_id
PUT /devices/1c4391a3-5d5b-4818-9fea-0385528fd091/temporary_unlock/0d8e9323-68d0-4756-a41f-279e4dd4fd28
Parameters
{
"pin": "1111"
}
Name | Description |
---|---|
pin | Required when require_pin_verification is true |
Response
404 Not Found
{
"message": "Access person does not have access to this device",
"type": "missing_access_person_device"
}
Deregister a device
Request
Endpoint
DELETE /devices/:id
DELETE /devices/4e1f0869-0ffa-4650-88af-ffd7d9abd5e0
Parameters
None.
Response
204 No Content
Register a ResortLock
Request
Endpoint
POST /devices
POST /devices
Parameters
{
"attributes": {
"name": "My Resort Lock",
"serial_number": "AB57EF010F4FBE01",
"location_id": "136e135c-f6d0-40b4-bd37-ce56c73e4b30",
"model_id": "8d30a3dd-c812-456c-8655-956b7457cd5b",
"default_guest_start_time": "11:30:00",
"default_guest_end_time": "14:15:00"
}
}
Name | Description |
---|---|
attributes[name] required | Name |
attributes[serial_number] required | Device serial number |
attributes[location_id] required | Location |
attributes[model_id] | Model |
attributes[default_guest_start_time] | Default Access Guest start time, ISO 8601 24 hour time format |
attributes[default_guest_end_time] | Default Access Guest end time, ISO 8601 24 hour time format |
Response
201 Created
{
"data": {
"type": "resort_lock",
"attributes": {
"name": "My Resort Lock",
"default_guest_start_time": "11:30:00",
"default_guest_end_time": "14:15:00",
"model_number": "RL-4000",
"created_at": "2024-09-19T12:16:32Z",
"updated_at": "2024-09-19T12:16:32Z",
"serial_number": "AB57EF010F4FBE01",
"model_id": "8d30a3dd-c812-456c-8655-956b7457cd5b",
"location_id": "136e135c-f6d0-40b4-bd37-ce56c73e4b30"
},
"id": "7e763eb4-b011-454f-beb0-be5aef1f3185",
"links": {
"self": "http://api.remotelock.dev/devices/7e763eb4-b011-454f-beb0-be5aef1f3185",
"model": "http://api.remotelock.dev/models/8d30a3dd-c812-456c-8655-956b7457cd5b",
"location": "http://api.remotelock.dev/locations/136e135c-f6d0-40b4-bd37-ce56c73e4b30"
}
}
}
Update a ResortLock
Request
Endpoint
PUT /devices/:id
PUT /devices/ae9b997d-6af6-441c-a804-ddfebdcd7fa7
Parameters
{
"attributes": {
"name": "Backdoor Resort Lock",
"default_guest_start_time": "10:00:00"
}
}
Name | Description |
---|---|
attributes[name] | Name |
attributes[location_id] | Location |
attributes[serial_number] | Device serial number |
attributes[default_guest_start_time] | Default Access Guest start time, ISO 8601 24 hour time format |
attributes[default_guest_end_time] | Default Access Guest end time, ISO 8601 24 hour time format |
Response
200 OK
{
"data": {
"type": "resort_lock",
"attributes": {
"name": "Backdoor Resort Lock",
"default_guest_start_time": "10:00:00",
"default_guest_end_time": null,
"model_number": "RL-4000",
"created_at": "2024-09-19T12:16:33Z",
"updated_at": "2024-09-19T12:16:33Z",
"serial_number": "NE9LWPLW0B4FBE01",
"model_id": "98c9bc96-d30c-4395-ada8-20b4323c7562",
"location_id": "71f8d40c-40ec-4db8-96d5-f593f00abae4"
},
"id": "ae9b997d-6af6-441c-a804-ddfebdcd7fa7",
"links": {
"self": "http://api.remotelock.dev/devices/ae9b997d-6af6-441c-a804-ddfebdcd7fa7",
"model": "http://api.remotelock.dev/models/98c9bc96-d30c-4395-ada8-20b4323c7562",
"location": "http://api.remotelock.dev/locations/71f8d40c-40ec-4db8-96d5-f593f00abae4"
}
}
}
Events
Get all events
Request
Endpoint
GET /events
GET /events
Parameters
Name | Description |
---|---|
sort | Sortable attributes: created_at and occurred_at, default: occurred_at descending |
Response
200 OK
{
"data": [
{
"type": "access_person_sync_failed_event",
"attributes": {
"source": "user",
"status": "succeeded",
"time_zone": "America/Denver",
"occurred_at": "2024-09-19T06:50:31Z",
"created_at": "2024-09-19T12:15:31Z",
"updated_at": "2024-09-19T12:15:31Z",
"associated_resource_name": null,
"status_info": "timeout",
"publisher_id": "9361ce13-c9c3-4603-a354-c59245f66b03",
"publisher_type": "lock",
"associated_resource_id": "f04e2aeb-eac3-4ac9-9c37-9349ba2eaf10",
"associated_resource_type": "access_user"
},
"id": "855d1c3d-bd42-4168-a144-e7fd78f2f1a4",
"links": {
"self": "http://api.remotelock.dev/events/855d1c3d-bd42-4168-a144-e7fd78f2f1a4",
"publisher": "http://api.remotelock.dev/devices/9361ce13-c9c3-4603-a354-c59245f66b03",
"associated_resource": "http://api.remotelock.dev/access_persons/f04e2aeb-eac3-4ac9-9c37-9349ba2eaf10"
}
},
{
"type": "connectivity_event",
"attributes": {
"source": "user",
"status": "succeeded",
"time_zone": "America/Denver",
"occurred_at": "2024-09-19T06:28:31Z",
"created_at": "2024-09-19T12:15:31Z",
"updated_at": "2024-09-19T12:15:31Z",
"connected_at": "2024-09-13T04:51:31Z",
"publisher_id": "9361ce13-c9c3-4603-a354-c59245f66b03",
"publisher_type": "lock"
},
"id": "b1818bd8-3b23-458a-9601-8f0a278b866a",
"links": {
"self": "http://api.remotelock.dev/events/b1818bd8-3b23-458a-9601-8f0a278b866a",
"publisher": "http://api.remotelock.dev/devices/9361ce13-c9c3-4603-a354-c59245f66b03"
}
},
{
"type": "access_guest_late_sync_event",
"attributes": {
"source": "user",
"status": "succeeded",
"time_zone": "America/Denver",
"occurred_at": "2024-09-19T03:56:31Z",
"created_at": "2024-09-19T12:15:31Z",
"updated_at": "2024-09-19T12:15:31Z",
"associated_resource_name": null,
"publisher_id": "9361ce13-c9c3-4603-a354-c59245f66b03",
"publisher_type": "lock",
"associated_resource_id": "69921589-3668-4737-a507-047c74b07fb0",
"associated_resource_type": "access_guest"
},
"id": "efe0ec74-69a5-4d05-ad42-95b40bd58646",
"links": {
"self": "http://api.remotelock.dev/events/efe0ec74-69a5-4d05-ad42-95b40bd58646",
"publisher": "http://api.remotelock.dev/devices/9361ce13-c9c3-4603-a354-c59245f66b03",
"associated_resource": "http://api.remotelock.dev/access_persons/69921589-3668-4737-a507-047c74b07fb0"
}
},
{
"type": "power_level_low_event",
"attributes": {
"source": "user",
"status": "succeeded",
"time_zone": "America/Denver",
"occurred_at": "2024-09-19T01:24:31Z",
"created_at": "2024-09-19T12:15:31Z",
"updated_at": "2024-09-19T12:15:31Z",
"power_level": 18,
"publisher_id": "9361ce13-c9c3-4603-a354-c59245f66b03",
"publisher_type": "lock"
},
"id": "4942f1fc-be41-45da-b1a5-42aebecda235",
"links": {
"self": "http://api.remotelock.dev/events/4942f1fc-be41-45da-b1a5-42aebecda235",
"publisher": "http://api.remotelock.dev/devices/9361ce13-c9c3-4603-a354-c59245f66b03"
}
},
{
"type": "access_person_used_event",
"attributes": {
"source": "user",
"status": "failed",
"time_zone": "America/Denver",
"occurred_at": "2024-09-19T00:50:31Z",
"created_at": "2024-09-19T12:15:31Z",
"updated_at": "2024-09-19T12:15:31Z",
"associated_resource_name": null,
"status_info": null,
"method": null,
"pin": null,
"card": null,
"publisher_id": "64b938bd-d898-4b09-821b-960d158f57f3",
"publisher_type": "access_guest",
"associated_resource_id": "9361ce13-c9c3-4603-a354-c59245f66b03",
"associated_resource_type": "lock"
},
"id": "6449c17d-2339-4c47-aa6f-9da8a6e063df",
"links": {
"self": "http://api.remotelock.dev/events/6449c17d-2339-4c47-aa6f-9da8a6e063df",
"publisher": "http://api.remotelock.dev/access_persons/64b938bd-d898-4b09-821b-960d158f57f3",
"associated_resource": "http://api.remotelock.dev/devices/9361ce13-c9c3-4603-a354-c59245f66b03"
}
},
{
"type": "access_person_synced_event",
"attributes": {
"source": "user",
"status": "succeeded",
"time_zone": "America/Denver",
"occurred_at": "2024-09-19T00:19:31Z",
"created_at": "2024-09-19T12:15:31Z",
"updated_at": "2024-09-19T12:15:31Z",
"associated_resource_name": null,
"publisher_id": "9361ce13-c9c3-4603-a354-c59245f66b03",
"publisher_type": "lock",
"associated_resource_id": "a8c1e109-122b-4129-9f19-105b83f809d7",
"associated_resource_type": "access_user"
},
"id": "e3349e89-996b-43f9-aabe-746cedc9bb52",
"links": {
"self": "http://api.remotelock.dev/events/e3349e89-996b-43f9-aabe-746cedc9bb52",
"publisher": "http://api.remotelock.dev/devices/9361ce13-c9c3-4603-a354-c59245f66b03",
"associated_resource": "http://api.remotelock.dev/access_persons/a8c1e109-122b-4129-9f19-105b83f809d7"
}
},
{
"type": "unlocked_event",
"attributes": {
"source": "user",
"status": "succeeded",
"time_zone": "America/Denver",
"occurred_at": "2024-09-18T23:04:31Z",
"created_at": "2024-09-19T12:15:31Z",
"updated_at": "2024-09-19T12:15:31Z",
"associated_resource_name": null,
"status_info": null,
"method": "pin",
"pin": "1234",
"card": null,
"publisher_id": "9361ce13-c9c3-4603-a354-c59245f66b03",
"publisher_type": "lock",
"associated_resource_id": "dece4795-346e-400e-a5fe-863c970e8273",
"associated_resource_type": "access_user"
},
"id": "efa603a7-564c-450f-8593-e661d6ed21bc",
"links": {
"self": "http://api.remotelock.dev/events/efa603a7-564c-450f-8593-e661d6ed21bc",
"publisher": "http://api.remotelock.dev/devices/9361ce13-c9c3-4603-a354-c59245f66b03",
"associated_resource": "http://api.remotelock.dev/access_persons/dece4795-346e-400e-a5fe-863c970e8273"
}
},
{
"type": "access_person_used_event",
"attributes": {
"source": "user",
"status": "succeeded",
"time_zone": "America/Denver",
"occurred_at": "2024-09-18T22:19:31Z",
"created_at": "2024-09-19T12:15:31Z",
"updated_at": "2024-09-19T12:15:31Z",
"associated_resource_name": null,
"status_info": null,
"method": null,
"pin": null,
"card": null,
"publisher_id": "ea0a413a-86e6-42bc-a0cf-3e5e31743470",
"publisher_type": "access_user",
"associated_resource_id": "9361ce13-c9c3-4603-a354-c59245f66b03",
"associated_resource_type": "lock"
},
"id": "2ef2d549-da7d-4f6d-9128-54f7b3c148af",
"links": {
"self": "http://api.remotelock.dev/events/2ef2d549-da7d-4f6d-9128-54f7b3c148af",
"publisher": "http://api.remotelock.dev/access_persons/ea0a413a-86e6-42bc-a0cf-3e5e31743470",
"associated_resource": "http://api.remotelock.dev/devices/9361ce13-c9c3-4603-a354-c59245f66b03"
}
}
],
"meta": {
"page": 1,
"per_page": 25,
"total_count": 8,
"total_pages": 1
}
}
Fields
Name | Description |
---|---|
type | access_person_used, access_person_created, access_person_updated, access_person_deleted, acs_door_opened, acs_door_closed, acs_door_held_open, lock_requested, unlock_requested, temporary_unlock_requested, temporary_unlock_timeout, access_person_synced, access_person_sync_failed, access_guest_late_sync, reset, ready_pin_sync_failed, unlocked, locked, access_denied, jammed, connectivity, power_level_low, battery_replaced, temperature_changed, humidity_changed, relay_enabled, relay_disabled, door_action_held_open, door_action_forced_open, door_action_tamper_detected, door_action_tamper_cleared, ble_mapp_connected, kore_ready_pin_used or unlockedlocked |
source | 0, 1 or 2 |
status | 0 and 1 |
associated_resource_name | If associated_resource is deleted, this field is populated with associated_resource name |
Get an event
Request
Endpoint
GET /events/:id
GET /events/f1409a29-865a-43dd-ae81-a5545cc0d662
Parameters
None.
Response
200 OK
{
"data": {
"type": "unlocked_event",
"attributes": {
"source": "user",
"status": "succeeded",
"time_zone": "America/Denver",
"occurred_at": "2024-09-19T03:29:33Z",
"created_at": "2024-09-19T12:15:33Z",
"updated_at": "2024-09-19T12:15:33Z",
"associated_resource_name": null,
"status_info": null,
"method": "pin",
"pin": "1234",
"card": null,
"publisher_id": "c84275ca-c3a8-49e8-b5c2-bb4c827699d7",
"publisher_type": "lock",
"associated_resource_id": "14096628-4ffc-4b0e-a615-d9020d970107",
"associated_resource_type": "access_user"
},
"id": "f1409a29-865a-43dd-ae81-a5545cc0d662",
"links": {
"self": "http://api.remotelock.dev/events/f1409a29-865a-43dd-ae81-a5545cc0d662",
"publisher": "http://api.remotelock.dev/devices/c84275ca-c3a8-49e8-b5c2-bb4c827699d7",
"associated_resource": "http://api.remotelock.dev/access_persons/14096628-4ffc-4b0e-a615-d9020d970107"
}
}
}
Fields
Name | Description |
---|---|
type | access_person_used, access_person_created, access_person_updated, access_person_deleted, acs_door_opened, acs_door_closed, acs_door_held_open, lock_requested, unlock_requested, temporary_unlock_requested, temporary_unlock_timeout, access_person_synced, access_person_sync_failed, access_guest_late_sync, reset, ready_pin_sync_failed, unlocked, locked, access_denied, jammed, connectivity, power_level_low, battery_replaced, temperature_changed, humidity_changed, relay_enabled, relay_disabled, door_action_held_open, door_action_forced_open, door_action_tamper_detected, door_action_tamper_cleared, ble_mapp_connected, kore_ready_pin_used or unlockedlocked |
source | 0, 1 or 2 |
status | 0 and 1 |
associated_resource_name | If associated_resource is deleted, this field is populated with associated_resource name |
DoorGroupAccess
retrieves the access person for the device in the door group
Request
Endpoint
GET /groups/:id/door_group_accesses/search.csv
GET /groups/d27b0c12-85fc-4872-a709-bd3d6450e8af/door_group_accesses/search.csv
GET /groups/d27b0c12-85fc-4872-a709-bd3d6450e8af/door_group_accesses/search.csv
Parameters
None.
Response
200 OK
[binary data]
None.
Response
200 OK
[binary data]
Groups
Get all items in a door group
Request
Endpoint
GET /groups/:group_id/items
GET /groups/5776e0af-0b9a-4601-b28a-dc2c21bee4a8/items?attributes[item_type]=lock
Parameters
attributes: {"item_type"=>"lock"}
Name | Description |
---|---|
attributes[item_type] | Filter by type(s). Supported types: door_group, acs_door, acs_elevator_floor, lock, connector_lock, zwave_lock, schlage_home_lock, and igloo_lock |
sort | Sortable attributes: created_at, default: created_at ascending |
Response
200 OK
{
"data": [
{
"type": "door_group_item",
"attributes": {
"created_at": "2024-09-19T12:15:35Z",
"updated_at": "2024-09-19T12:15:35Z",
"item_id": "86fe8b17-ece9-4e17-90e1-04a08f11713c",
"item_type": "lock",
"door_group_id": "5776e0af-0b9a-4601-b28a-dc2c21bee4a8"
},
"id": "e0c905b5-c795-4618-832f-69e64c06b46b",
"links": {
"self": "http://api.remotelock.dev/groups/5776e0af-0b9a-4601-b28a-dc2c21bee4a8/items/e0c905b5-c795-4618-832f-69e64c06b46b",
"item": "http://api.remotelock.dev/devices/86fe8b17-ece9-4e17-90e1-04a08f11713c",
"door_group": "http://api.remotelock.dev/groups/5776e0af-0b9a-4601-b28a-dc2c21bee4a8"
}
},
{
"type": "door_group_item",
"attributes": {
"created_at": "2024-09-19T12:15:35Z",
"updated_at": "2024-09-19T12:15:35Z",
"item_id": "8bd7b667-68fb-440a-991c-85792ef7e090",
"item_type": "lock",
"door_group_id": "5776e0af-0b9a-4601-b28a-dc2c21bee4a8"
},
"id": "1a415a7e-42fa-4688-b721-10f7aa9b9381",
"links": {
"self": "http://api.remotelock.dev/groups/5776e0af-0b9a-4601-b28a-dc2c21bee4a8/items/1a415a7e-42fa-4688-b721-10f7aa9b9381",
"item": "http://api.remotelock.dev/devices/8bd7b667-68fb-440a-991c-85792ef7e090",
"door_group": "http://api.remotelock.dev/groups/5776e0af-0b9a-4601-b28a-dc2c21bee4a8"
}
}
],
"meta": {
"page": 1,
"per_page": 25,
"total_count": 2,
"total_pages": 1
}
}
Get an item in a door group
Request
Endpoint
GET /groups/:group_id/items/:id
GET /groups/b819402c-5730-4321-a941-7072a5fbdc7c/items/d7315c35-35e7-400f-b4e2-0796d56bba62
Parameters
None.
Response
200 OK
{
"data": {
"type": "door_group_item",
"attributes": {
"created_at": "2024-09-19T12:15:36Z",
"updated_at": "2024-09-19T12:15:36Z",
"item_id": "494fe3a7-b6f6-4898-9839-bd664a6272c5",
"item_type": "lock",
"door_group_id": "b819402c-5730-4321-a941-7072a5fbdc7c"
},
"id": "d7315c35-35e7-400f-b4e2-0796d56bba62",
"links": {
"self": "http://api.remotelock.dev/groups/b819402c-5730-4321-a941-7072a5fbdc7c/items/d7315c35-35e7-400f-b4e2-0796d56bba62",
"item": "http://api.remotelock.dev/devices/494fe3a7-b6f6-4898-9839-bd664a6272c5",
"door_group": "http://api.remotelock.dev/groups/b819402c-5730-4321-a941-7072a5fbdc7c"
}
}
}
Add an item to a door group
Request
Endpoint
POST /groups/:group_id/items
POST /groups/f8bc261c-0154-47ee-8bb0-b2e15b22d473/items
Parameters
{
"attributes": {
"item_id": "0ab10f53-0476-41cf-8668-4d9f2dd7fd00",
"item_type": "lock"
}
}
Name | Description |
---|---|
attributes[item_id] required | Item id |
attributes[item_type] required | Item type: door_group, acs_door, acs_elevator_floor, lock, connector_lock, zwave_lock, schlage_home_lock or igloo_lock |
Response
201 Created
{
"data": {
"type": "door_group_item",
"attributes": {
"created_at": "2024-09-19T12:15:36Z",
"updated_at": "2024-09-19T12:15:36Z",
"item_id": "0ab10f53-0476-41cf-8668-4d9f2dd7fd00",
"item_type": "lock",
"door_group_id": "f8bc261c-0154-47ee-8bb0-b2e15b22d473"
},
"id": "d07f3745-6927-430f-b643-975230c70fa1",
"links": {
"self": "http://api.remotelock.dev/groups/f8bc261c-0154-47ee-8bb0-b2e15b22d473/items/d07f3745-6927-430f-b643-975230c70fa1",
"item": "http://api.remotelock.dev/devices/0ab10f53-0476-41cf-8668-4d9f2dd7fd00",
"door_group": "http://api.remotelock.dev/groups/f8bc261c-0154-47ee-8bb0-b2e15b22d473"
}
}
}
Remove an item from a door group
Request
Endpoint
DELETE /groups/:group_id/items/:id
DELETE /groups/26344e0a-f3b9-4813-87a7-2c46ddf2a98d/items/a3a579db-bab3-4ab9-a4b1-ad20ad4b3dba
Parameters
None.
Response
204 No Content
Get all groups
Returns all group types (homogeneous).
Request
Endpoint
GET /groups
GET /groups
Parameters
Name | Description |
---|---|
[type] | Filter by type(s). Supported types: door_group |
sort | Sortable attributes: created_at and name, default: created_at ascending |
Response
200 OK
{
"data": [
{
"type": "door_group",
"attributes": {
"name": "Indoor Locks",
"created_at": "2024-09-19T12:15:41Z",
"updated_at": "2024-09-19T12:15:41Z"
},
"id": "a69c7b4a-3df9-499c-b82b-9353d1f2e8f4",
"links": {
"self": "http://api.remotelock.dev/groups/a69c7b4a-3df9-499c-b82b-9353d1f2e8f4"
}
},
{
"type": "door_group",
"attributes": {
"name": "Tools, Kids & Movies",
"created_at": "2024-09-19T12:15:41Z",
"updated_at": "2024-09-19T12:15:41Z"
},
"id": "a6dbfbb4-d0a9-4565-96af-659ac971bd73",
"links": {
"self": "http://api.remotelock.dev/groups/a6dbfbb4-d0a9-4565-96af-659ac971bd73"
}
}
],
"meta": {
"page": 1,
"per_page": 25,
"total_count": 2,
"total_pages": 1
}
}
Get a group
Request
Endpoint
GET /groups/:id
GET /groups/9d8fcb51-bd06-47cd-a07f-d7ef6718dd5b
Parameters
None.
Response
200 OK
{
"data": {
"type": "door_group",
"attributes": {
"name": "Indoor Locks",
"created_at": "2024-09-19T12:15:41Z",
"updated_at": "2024-09-19T12:15:41Z"
},
"id": "9d8fcb51-bd06-47cd-a07f-d7ef6718dd5b",
"links": {
"self": "http://api.remotelock.dev/groups/9d8fcb51-bd06-47cd-a07f-d7ef6718dd5b"
}
}
}
Create a door group
Request
Endpoint
POST /groups
POST /groups
Parameters
{
"type": "door_group",
"attributes": {
"name": "Warehouse doors"
}
}
Name | Description |
---|---|
type required | door_group |
attributes[name] required | Door group name |
Response
201 Created
{
"data": {
"type": "door_group",
"attributes": {
"name": "Warehouse doors",
"created_at": "2024-09-19T12:15:41Z",
"updated_at": "2024-09-19T12:15:41Z"
},
"id": "8be479ae-ca9d-4ffb-ba0b-c39e7def6830",
"links": {
"self": "http://api.remotelock.dev/groups/8be479ae-ca9d-4ffb-ba0b-c39e7def6830"
}
}
}
Update a group
Request
Endpoint
PUT /groups/:id
PUT /groups/d5e33120-47f7-4638-83c9-fa71c63453b4
Parameters
{
"attributes": {
"name": "Inner doors"
}
}
Name | Description |
---|---|
attributes[name] | Group name |
Response
200 OK
{
"data": {
"type": "door_group",
"attributes": {
"name": "Inner doors",
"created_at": "2024-09-19T12:15:42Z",
"updated_at": "2024-09-19T12:15:42Z"
},
"id": "d5e33120-47f7-4638-83c9-fa71c63453b4",
"links": {
"self": "http://api.remotelock.dev/groups/d5e33120-47f7-4638-83c9-fa71c63453b4"
}
}
}
Delete a group
Request
Endpoint
DELETE /groups/:id
DELETE /groups/723fec84-1049-427f-bdd4-e3b9ca8fff8a
Parameters
None.
Response
204 No Content
Igloo Guests
Get all igloo lock guests
Request
Endpoint
GET /igloo_guests
GET /igloo_guests
Parameters
None.
Response
200 OK
{
"data": [
{
"type": "igloo_guest",
"attributes": {
"name": "Frances Cummerata",
"email": "rosario.stark@predovic-mayert.biz",
"starts_at": "2024-09-27T00:00:00",
"ends_at": "2024-10-18T00:00:00",
"igloo_lock_id": "c04deca9-15a0-431f-ae6a-b340a4a1db21",
"created_at": "2024-09-19T12:16:06Z",
"updated_at": "2024-09-19T12:16:06Z",
"code": "1234567"
},
"id": "cbc6106a-24dd-40cb-8b61-4f2d12393be5",
"links": {
"self": "http://api.remotelock.dev/igloo_guests/cbc6106a-24dd-40cb-8b61-4f2d12393be5"
}
},
{
"type": "igloo_guest",
"attributes": {
"name": "Dr. Jess Muller",
"email": "doyle_harris@hessel.biz",
"starts_at": "2024-09-21T00:00:00",
"ends_at": "2024-10-19T00:00:00",
"igloo_lock_id": "c04deca9-15a0-431f-ae6a-b340a4a1db21",
"created_at": "2024-09-19T12:16:06Z",
"updated_at": "2024-09-19T12:16:06Z",
"code": "1234567"
},
"id": "c5567112-f8bf-4c2e-9744-3dc06fc5d1e4",
"links": {
"self": "http://api.remotelock.dev/igloo_guests/c5567112-f8bf-4c2e-9744-3dc06fc5d1e4"
}
},
{
"type": "igloo_guest",
"attributes": {
"name": "Efrain Mayer",
"email": "abigail_heller@lockman.info",
"starts_at": "2024-09-20T00:00:00",
"ends_at": "2024-10-17T00:00:00",
"igloo_lock_id": "635d21ff-f3bf-435a-acdf-598740cd055e",
"created_at": "2024-09-19T12:16:06Z",
"updated_at": "2024-09-19T12:16:06Z",
"code": "1234567"
},
"id": "e3ac11d2-b308-42ad-a48e-e600ff315b33",
"links": {
"self": "http://api.remotelock.dev/igloo_guests/e3ac11d2-b308-42ad-a48e-e600ff315b33"
}
}
],
"meta": {
"page": 1,
"per_page": 25,
"total_count": 3,
"total_pages": 1
}
}
Get an igloo guest
Request
Endpoint
GET /igloo_guests/:id
GET /igloo_guests/94e40287-dd6e-4491-92f0-1e0dd48dc7dc
Parameters
None.
Response
200 OK
{
"data": {
"type": "igloo_guest",
"attributes": {
"name": "Jane Stroman",
"email": "goldie@lebsack.io",
"starts_at": "2024-09-26T00:00:00",
"ends_at": "2024-10-23T00:00:00",
"igloo_lock_id": "a225270f-09d3-449f-b5f8-f182c6731f2b",
"created_at": "2024-09-19T12:16:07Z",
"updated_at": "2024-09-19T12:16:07Z",
"code": "678123"
},
"id": "94e40287-dd6e-4491-92f0-1e0dd48dc7dc",
"links": {
"self": "http://api.remotelock.dev/igloo_guests/94e40287-dd6e-4491-92f0-1e0dd48dc7dc"
}
}
}
Create an igloo guest
Request
Endpoint
POST /igloo_guests
POST /igloo_guests
Parameters
{
"attributes": {
"igloo_lock_id": "8b3e62a8-98b0-406f-a68f-ab8421868391",
"name": "Ann Smith",
"starts_at": "2024-09-19 12:16:08 UTC",
"ends_at": "2024-09-20 12:16:08 UTC",
"email": "darin.bogan@paucek.name"
}
}
Name | Description |
---|---|
attributes[igloo_lock_id] required | Igloo Lock |
attributes[name] required | Name |
attributes[starts_at] required | Starts at ISO 8601 timestamp without time zone. Only hours are supported (minutes and seconds will be converted to zeros). |
attributes[ends_at] required | Ends at ISO 8601 timestamp without time zone. Only hours are supported (minutes and seconds will be converted to zeros). |
attributes[email] | E-mail address of the guest |
Response
201 Created
{
"data": {
"type": "igloo_guest",
"attributes": {
"name": "Ann Smith",
"email": "darin.bogan@paucek.name",
"starts_at": "2024-09-19T12:00:00",
"ends_at": "2024-09-20T12:00:00",
"igloo_lock_id": "8b3e62a8-98b0-406f-a68f-ab8421868391",
"created_at": "2024-09-19T12:16:08Z",
"updated_at": "2024-09-19T12:16:08Z",
"code": "1234567"
},
"id": "126e5975-835e-4320-beee-e1866443485d",
"links": {
"self": "http://api.remotelock.dev/igloo_guests/126e5975-835e-4320-beee-e1866443485d"
}
}
}
Update an igloo guest
Request
Endpoint
PUT /igloo_guests/:id
PUT /igloo_guests/2f5a2bea-67c8-4437-bb3b-8546be4637ff
Parameters
{
"attributes": {
"name": "Jonatan Doery"
}
}
Name | Description |
---|---|
attributes[name] | Name |
attributes[email] |
Response
200 OK
{
"data": {
"type": "igloo_guest",
"attributes": {
"name": "Jonatan Doery",
"email": "caitlyn.bernier@mohr-pouros.org",
"starts_at": "2024-09-23T00:00:00",
"ends_at": "2024-10-19T00:00:00",
"igloo_lock_id": "6d7b522b-001f-4ace-baba-41527a9cb033",
"created_at": "2024-09-19T12:16:08Z",
"updated_at": "2024-09-19T12:16:08Z",
"code": "1234567"
},
"id": "2f5a2bea-67c8-4437-bb3b-8546be4637ff",
"links": {
"self": "http://api.remotelock.dev/igloo_guests/2f5a2bea-67c8-4437-bb3b-8546be4637ff"
}
}
}
Discard an igloo guest
Request
Endpoint
DELETE /igloo_guests/:id
DELETE /igloo_guests/77bd7c9a-d6db-499e-9955-bc1f667d5ca5
Parameters
None.
Response
204 No Content
Kore ReadyPINs
Get all ReadyPINs
ReadyPINs are ideal for providing date/time based temporary guest access to locks without a network. Instead of relying on a network connection to the lock, the access information is actually carried within the PIN code itself.
- The maximum duration is 32 days.
- The
pin
lenght is always 10 digits. - The
starts_at
andends_at
have hourly resolution only.
Status
upcoming
initial status when start time has not met yetcurrent
initial status when start time has already metexpired
when end time has already metThe
/kore_ready_pins
endpoints are deprecated. We recommend creating an Access guest with a ReadyPIN credential instead.
Request
Endpoint
GET /kore_ready_pins
GET /kore_ready_pins
Parameters
None.
Response
200 OK
{
"data": [
{
"type": "kore_ready_pin",
"attributes": {
"uuid": "6292e0dd-37a4-4098-8432-cba2fdbe5042",
"name": "Lien Frami JD",
"email": "sade.schroeder@wisoky-boehm.net",
"starts_at": "2024-09-19T00:00:00",
"ends_at": "2024-09-21T00:00:00",
"status": "current",
"source": null,
"created_at": "2024-09-19T12:16:12Z",
"updated_at": "2024-09-19T12:16:12Z",
"pin": "4360653341",
"lock_id": "e72d21b0-771a-4912-a14e-341d96e7d8a6"
},
"id": "6292e0dd-37a4-4098-8432-cba2fdbe5042",
"links": {
"self": "http://api.remotelock.dev/kore_ready_pins/6292e0dd-37a4-4098-8432-cba2fdbe5042",
"lock": "http://api.remotelock.dev/devices/e72d21b0-771a-4912-a14e-341d96e7d8a6"
}
}
],
"meta": {
"page": 1,
"per_page": 25,
"total_count": 1,
"total_pages": 1
}
}
Get a ReadyPIN
Request
Endpoint
GET /kore_ready_pins/:id
GET /kore_ready_pins/fdd569e6-946e-44e1-b23d-6d93cef7d5f5
Parameters
None.
Response
200 OK
{
"data": {
"type": "access_guest",
"attributes": {
"name": "Iola Casper",
"email": "hung.bauch@pfannerstill.io",
"phone": null,
"department": null,
"deliver_as_qr_code": false,
"status": "current",
"source": null,
"guest_source": null,
"deliver_as_url_credential": false,
"require_pin_verification": false,
"created_at": "2024-09-19T12:16:12Z",
"updated_at": "2024-09-19T12:16:12Z",
"pin": null,
"card_number": null,
"schlage_engage_smart_card_id": null,
"schlage_engage_smart_card_badge": null,
"url_credential": null,
"starts_at": "2024-09-19T00:00:00",
"ends_at": "2024-09-21T00:00:00",
"ready_pins": [
"9262047292"
],
"ready_pin_model_id": "96060d9f-4fdf-406c-b7b7-8c9e6275119b"
},
"id": "fdd569e6-946e-44e1-b23d-6d93cef7d5f5",
"links": {
"self": "http://api.remotelock.dev/access_persons/fdd569e6-946e-44e1-b23d-6d93cef7d5f5",
"ready_pin_model": "http://api.remotelock.dev/ready_pin_models/96060d9f-4fdf-406c-b7b7-8c9e6275119b"
},
"meta": {
"restricted_attributes": [
"url_credential"
]
}
}
}
Create a ReadyPIN
Request
Endpoint
POST /kore_ready_pins
POST /kore_ready_pins
Parameters
{
"attributes": {
"name": "Ann Smith",
"lock_id": "2e341395-2630-44b3-88af-f4a23988430a",
"starts_at": "2021-03-20T09:00:00",
"ends_at": "2021-03-27T17:00:00",
"email": "ann@smith.com"
}
}
Name | Description |
---|---|
attributes[name] required | Name |
attributes[lock_id] required | Lock |
attributes[starts_at] required | Starts at ISO 8601 timestamp without time zone (only hours are supported). |
attributes[ends_at] required | Ends at ISO 8601 timestamp without time zone (only hours are supported). |
attributes[email] |
Response
201 Created
{
"data": {
"type": "kore_ready_pin",
"attributes": {
"uuid": "7ec7e0a4-ed7d-408a-aca3-1698b8751697",
"name": "Ann Smith",
"email": "ann@smith.com",
"starts_at": "2021-03-20T09:00:00",
"ends_at": "2021-03-27T17:00:00",
"status": "current",
"source": null,
"created_at": "2021-03-22T00:00:00Z",
"updated_at": "2021-03-22T00:00:00Z",
"pin": "1234512345",
"lock_id": "2e341395-2630-44b3-88af-f4a23988430a"
},
"id": "7ec7e0a4-ed7d-408a-aca3-1698b8751697",
"links": {
"self": "http://api.remotelock.dev/kore_ready_pins/7ec7e0a4-ed7d-408a-aca3-1698b8751697",
"lock": "http://api.remotelock.dev/devices/2e341395-2630-44b3-88af-f4a23988430a"
}
}
}
Update a ReadyPIN
Updating of starts_at
or ends_at
is not allowed.
Request
Endpoint
PUT /kore_ready_pins/:id
PUT /kore_ready_pins/39559bd5-65af-42ec-a326-b7371c1511ac
Parameters
{
"attributes": {
"name": "Mike Smith",
"email": "mike@smith.com"
}
}
Name | Description |
---|---|
attributes[name] | Name |
attributes[email] |
Response
200 OK
{
"data": {
"type": "kore_ready_pin",
"attributes": {
"uuid": "39559bd5-65af-42ec-a326-b7371c1511ac",
"name": "Mike Smith",
"email": "mike@smith.com",
"starts_at": "2024-09-19T00:00:00",
"ends_at": "2024-09-21T00:00:00",
"status": "current",
"source": null,
"created_at": "2024-09-19T12:16:13Z",
"updated_at": "2024-09-19T12:16:13Z",
"pin": "8229877714",
"lock_id": "43dcea0c-5c3e-4564-b372-7eb52a5ec0ae"
},
"id": "39559bd5-65af-42ec-a326-b7371c1511ac",
"links": {
"self": "http://api.remotelock.dev/kore_ready_pins/39559bd5-65af-42ec-a326-b7371c1511ac",
"lock": "http://api.remotelock.dev/devices/43dcea0c-5c3e-4564-b372-7eb52a5ec0ae"
}
}
}
Delete an expired ReadyPIN
Trying to delete a ReadyPIN will result in a 422 HTTP error if it's not expired.
Request
Endpoint
DELETE /kore_ready_pins/:id
DELETE /kore_ready_pins/e24be251-43d3-492b-8f9e-1526538ffeb9
Parameters
None.
Response
204 No Content
Locations
Get all locations
Request
Endpoint
GET /locations
GET /locations
Parameters
Name | Description |
---|---|
sort | Sortable attributes: created_at and name, default: name ascending |
Response
200 OK
{
"data": [
{
"type": "location",
"attributes": {
"name": "RemoteLock Headquarters",
"phone": "(877) 254-5625",
"address": "1325 S. Colorado Blvd",
"address2": "Suite B400",
"city": "Denver",
"state": "CO",
"postal_code": "80222",
"country": "US",
"time_zone": "America/Denver",
"created_at": "2024-09-19T12:16:13Z",
"updated_at": "2024-09-19T12:16:13Z"
},
"id": "cd5fc232-60bc-4baf-bdd7-4506cb7f5eb1",
"links": {
"self": "http://api.remotelock.dev/locations/cd5fc232-60bc-4baf-bdd7-4506cb7f5eb1"
}
},
{
"type": "location",
"attributes": {
"name": "Sharable zero tolerance ability",
"phone": null,
"address": "782 Trey Via",
"address2": null,
"city": null,
"state": null,
"postal_code": null,
"country": null,
"time_zone": "America/Denver",
"created_at": "2024-09-19T12:16:13Z",
"updated_at": "2024-09-19T12:16:13Z"
},
"id": "0f52552b-6176-47f4-80ac-387e090fb52a",
"links": {
"self": "http://api.remotelock.dev/locations/0f52552b-6176-47f4-80ac-387e090fb52a"
}
}
],
"meta": {
"page": 1,
"per_page": 25,
"total_count": 2,
"total_pages": 1
}
}
Get a location
Request
Endpoint
GET /locations/:id
GET /locations/9d7ea754-52eb-4491-96a8-28e530fc8bc1
Parameters
None.
Response
200 OK
{
"data": {
"type": "location",
"attributes": {
"name": "RemoteLock Headquarters",
"phone": "(877) 254-5625",
"address": "1325 S. Colorado Blvd",
"address2": "Suite B400",
"city": "Denver",
"state": "CO",
"postal_code": "80222",
"country": "US",
"time_zone": "America/Denver",
"created_at": "2024-09-19T12:16:13Z",
"updated_at": "2024-09-19T12:16:13Z"
},
"id": "9d7ea754-52eb-4491-96a8-28e530fc8bc1",
"links": {
"self": "http://api.remotelock.dev/locations/9d7ea754-52eb-4491-96a8-28e530fc8bc1"
}
}
}
Create a location
Request
Endpoint
POST /locations
POST /locations
Parameters
{
"attributes": {
"name": "RemoteLock HQ",
"phone": "(877) 254-5625",
"address": "1325 S. Colorado Blvd",
"address2": "Suite B400",
"city": "Denver",
"state": "CO",
"postal_code": "80222",
"country": "US",
"time_zone": "America/Denver"
}
}
Name | Description |
---|---|
attributes[name] required | Attributes name |
attributes[phone] | Attributes phone |
attributes[address] | Attributes address |
attributes[address_2] | Attributes address 2 |
attributes[city] | Attributes city |
attributes[state] | Attributes state |
attributes[postal_code] | Attributes postal code |
attributes[country] | https://en.wikipedia.org/wiki/ISO_3166-1 |
attributes[time_zone] required | https://en.wikipedia.org/wiki/List_of_tz_database_time_zones |
Response
201 Created
{
"data": {
"type": "location",
"attributes": {
"name": "RemoteLock HQ",
"phone": "(877) 254-5625",
"address": "1325 S. Colorado Blvd",
"address2": "Suite B400",
"city": "Denver",
"state": "CO",
"postal_code": "80222",
"country": "US",
"time_zone": "America/Denver",
"created_at": "2024-09-19T12:16:14Z",
"updated_at": "2024-09-19T12:16:14Z"
},
"id": "b3dd3c34-9acd-4bee-a355-781122e87390",
"links": {
"self": "http://api.remotelock.dev/locations/b3dd3c34-9acd-4bee-a355-781122e87390"
}
}
}
Update a location
Request
Endpoint
PUT /locations/:id
PUT /locations/98df03b7-4d38-467f-a0bf-0790622f27c0
Parameters
{
"attributes": {
"name": "RemoteLock HQ"
}
}
None.
Response
200 OK
{
"data": {
"type": "location",
"attributes": {
"name": "RemoteLock HQ",
"phone": "(877) 254-5625",
"address": "1325 S. Colorado Blvd",
"address2": "Suite B400",
"city": "Denver",
"state": "CO",
"postal_code": "80222",
"country": "US",
"time_zone": "America/Denver",
"created_at": "2024-09-19T12:16:14Z",
"updated_at": "2024-09-19T12:16:14Z"
},
"id": "98df03b7-4d38-467f-a0bf-0790622f27c0",
"links": {
"self": "http://api.remotelock.dev/locations/98df03b7-4d38-467f-a0bf-0790622f27c0"
}
}
}
Delete a location
Request
Endpoint
DELETE /locations/:id
DELETE /locations/761f9345-1744-4796-afd0-675e0cd93d45
Parameters
None.
Response
204 No Content
Models
Returns all models.
capabilities
Each model has their own capabilities. This endpoint also allow filtering by capabilities.
for example,
- In order to query models that support Prox Card Credentials
/models?capabilities[prox_card_credential]=true
- In order to query models that support hardwire power source
/models?capabilities[power_sources][]=hardwire
- In order to query models that support both battery and heartbeat intervals of 5 mins
models?capabilities[heartbeat_intervals][]=300&capabilities[power_sources][]=battery
See next example to fetch models based on their device capabilities.
Get all models
Request
Endpoint
GET /models
GET /models
Parameters
Name | Description |
---|---|
sort | Sortable attributes: number, default: none |
capabilities | Filter by capabilities |
Response
200 OK
{
"data": [
{
"type": "model",
"attributes": {
"name": "RL-4000",
"number": "RL-4000",
"type": "resort_lock",
"capabilities": {
"connected": false,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"hid_mobile_credential": false,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": false,
"pin_credential": false,
"prox_card_credential": false,
"ready_pin_credential": false,
"registrable": true,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "d7ec120c-ced3-48b8-9ca8-6af12ddf8deb",
"links": {
"self": "http://api.remotelock.dev/models/d7ec120c-ced3-48b8-9ca8-6af12ddf8deb"
}
},
{
"type": "model",
"attributes": {
"name": "ZWaveLock",
"number": "ZWaveLock",
"type": "zwave_lock",
"capabilities": {
"connected": true,
"emulated_temporary_unlock_timeout_time": 10,
"emulated_temporary_unlockable": true,
"guest_deferrable": true,
"hid_mobile_credential": false,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": false,
"pin_credential": true,
"prox_card_credential": false,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "18b7770e-874f-4a58-a3d9-290d02b308c4",
"links": {
"self": "http://api.remotelock.dev/models/18b7770e-874f-4a58-a3d9-290d02b308c4"
}
},
{
"type": "model",
"attributes": {
"name": "KLM",
"number": "KLM",
"type": "connector_lock",
"capabilities": {
"connected": true,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"hid_mobile_credential": false,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": true,
"pin_credential": true,
"prox_card_credential": true,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "e9c2457e-60c3-48c0-95a8-1369877071ec",
"links": {
"self": "http://api.remotelock.dev/models/e9c2457e-60c3-48c0-95a8-1369877071ec"
}
},
{
"type": "model",
"attributes": {
"name": "BE467/FE410",
"number": "SchlageControl",
"type": "connector_lock",
"capabilities": {
"connected": false,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"hid_mobile_credential": false,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": false,
"pin_credential": false,
"prox_card_credential": false,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": true,
"smart_card_credential": false,
"unikey_credential": false,
"uses_schlage_ble_firmware_updates": true,
"wavelynx_mobile_credential": false
}
},
"id": "00547b20-e853-4b23-81a2-2826f06dfa42",
"links": {
"self": "http://api.remotelock.dev/models/00547b20-e853-4b23-81a2-2826f06dfa42"
}
},
{
"type": "model",
"attributes": {
"name": "RemoteLock KL Series 500i",
"number": "RL-KL-Series-500i",
"type": "connector_lock",
"capabilities": {
"connected": true,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"hid_mobile_credential": false,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": false,
"pin_credential": true,
"prox_card_credential": false,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "fb13b788-596d-41bb-a43f-8d1562b2492d",
"links": {
"self": "http://api.remotelock.dev/models/fb13b788-596d-41bb-a43f-8d1562b2492d"
}
},
{
"type": "model",
"attributes": {
"name": "LS-P50i",
"number": "LS-P50i",
"type": "power_plug",
"capabilities": {
"connected": true,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"heartbeat_intervals": [
0,
10,
60,
300,
600,
900,
1200,
1800,
3600,
7200,
10800,
14400
],
"hid_mobile_credential": false,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"power_sources": [
"hardwire"
],
"prox_card_credential": false,
"ready_pin_credential": false,
"registrable": true,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "5f77eecb-5962-4fdf-8a60-11c7de6eb769",
"links": {
"self": "http://api.remotelock.dev/models/5f77eecb-5962-4fdf-8a60-11c7de6eb769"
}
},
{
"type": "model",
"attributes": {
"name": "BG (LS-3i)",
"number": "LS-3i",
"type": "lock",
"capabilities": {
"access_exception": true,
"auto_lock_enable": true,
"auto_lock_schedule": true,
"auto_lock_timeouts": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
30,
60,
300,
600,
900,
1200,
1500,
1800
],
"connected": true,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"heartbeat_intervals": [
0,
300,
900,
1200,
1800,
3600,
7200,
14400,
28800,
43200
],
"hid_mobile_credential": false,
"local_pins": true,
"lock_action_schedule": true,
"manual_auto_lock_timeout": false,
"manual_auto_lock_timeout_intervals": [
5,
10,
20,
30,
60,
120,
300,
600,
1200,
1800,
3600
],
"mobile_commissionable": true,
"mute": true,
"native_temporary_unlockable": false,
"no_enter_code": true,
"online_auto_lock": true,
"phone_credential": false,
"pin_credential": true,
"power_sources": [
"hardwire",
"alkaline_battery",
"lithium_battery"
],
"programming_code": true,
"prox_card_credential": false,
"ready_pin_credential": false,
"registrable": true,
"replaceable": true,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wake_wifi": [
"user_action",
"heartbeat_interval"
],
"wavelynx_mobile_credential": false
}
},
"id": "1200c699-db48-459d-8cfd-ff82db8506dd",
"links": {
"self": "http://api.remotelock.dev/models/1200c699-db48-459d-8cfd-ff82db8506dd"
}
},
{
"type": "model",
"attributes": {
"name": "OpenEdge Series",
"number": "OEMAIN",
"type": "lock",
"capabilities": {
"access_exception": true,
"auto_lock_enable": true,
"auto_lock_schedule": true,
"auto_lock_timeouts": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
30,
60,
300,
600,
900,
1200,
1500,
1800
],
"connected": true,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"heartbeat_intervals": [
0,
300,
900,
1200,
1800,
3600,
7200,
14400,
28800,
43200
],
"hid_mobile_credential": false,
"local_pins": true,
"lock_action_schedule": true,
"manual_auto_lock_timeout": false,
"manual_auto_lock_timeout_intervals": [
5,
10,
20,
30,
60,
120,
300,
600,
1200,
1800,
3600
],
"mobile_commissionable": true,
"mute": true,
"native_temporary_unlockable": false,
"no_enter_code": true,
"online_auto_lock": true,
"phone_credential": false,
"pin_credential": true,
"power_sources": [
"hardwire",
"alkaline_battery",
"lithium_battery"
],
"programming_code": true,
"prox_card_credential": false,
"ready_pin_credential": true,
"registrable": true,
"replaceable": true,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": true,
"unikey_credential": false,
"wake_wifi": [
"user_action",
"heartbeat_interval"
],
"wavelynx_mobile_credential": false
}
},
"id": "16cf79f4-b408-4abc-9d6e-56840071f739",
"links": {
"self": "http://api.remotelock.dev/models/16cf79f4-b408-4abc-9d6e-56840071f739"
}
},
{
"type": "model",
"attributes": {
"name": "Kwikset Z-Wave",
"number": "KwiksetZwave",
"type": "connector_lock",
"capabilities": {
"connected": true,
"emulated_temporary_unlock_timeout_time": 10,
"emulated_temporary_unlockable": true,
"guest_deferrable": true,
"hid_mobile_credential": false,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": false,
"pin_credential": true,
"prox_card_credential": false,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "377c3897-e702-4b06-909a-511cf7815cd1",
"links": {
"self": "http://api.remotelock.dev/models/377c3897-e702-4b06-909a-511cf7815cd1"
}
},
{
"type": "model",
"attributes": {
"name": "TTLock",
"number": "TTLock",
"type": "connector_lock",
"capabilities": {
"connected": true,
"emulated_temporary_unlockable": false,
"guest_deferrable": true,
"hid_mobile_credential": false,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": false,
"pin_credential": true,
"prox_card_credential": false,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "2696c802-4f44-4060-a884-28c3db137a86",
"links": {
"self": "http://api.remotelock.dev/models/2696c802-4f44-4060-a884-28c3db137a86"
}
},
{
"type": "model",
"attributes": {
"name": "Yale Z-Wave",
"number": "YaleZwave",
"type": "connector_lock",
"capabilities": {
"connected": true,
"emulated_temporary_unlock_timeout_time": 10,
"emulated_temporary_unlockable": true,
"guest_deferrable": true,
"hid_mobile_credential": false,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": false,
"pin_credential": true,
"prox_card_credential": false,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "435b1277-21a0-4548-a58a-77ce06d0b05d",
"links": {
"self": "http://api.remotelock.dev/models/435b1277-21a0-4548-a58a-77ce06d0b05d"
}
},
{
"type": "model",
"attributes": {
"name": "Schlage Z-Wave",
"number": "SchlageZWave",
"type": "connector_lock",
"capabilities": {
"connected": true,
"emulated_temporary_unlock_timeout_time": 10,
"emulated_temporary_unlockable": true,
"guest_deferrable": true,
"hid_mobile_credential": false,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": false,
"pin_credential": true,
"prox_card_credential": false,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "326a3cc5-7a91-4442-a862-4dfd730b9c5d",
"links": {
"self": "http://api.remotelock.dev/models/326a3cc5-7a91-4442-a862-4dfd730b9c5d"
}
},
{
"type": "model",
"attributes": {
"name": "LS-P100mi",
"number": "LS-P100mi",
"type": "power_plug",
"capabilities": {
"connected": true,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"heartbeat_intervals": [
0,
10,
60,
300,
600,
900,
1200,
1800,
3600,
7200,
10800,
14400
],
"hid_mobile_credential": false,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"power_sources": [
"hardwire"
],
"prox_card_credential": false,
"ready_pin_credential": false,
"registrable": true,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "017abbc6-a73b-4e44-9ef4-75354effa7f8",
"links": {
"self": "http://api.remotelock.dev/models/017abbc6-a73b-4e44-9ef4-75354effa7f8"
}
},
{
"type": "model",
"attributes": {
"name": "PDQ",
"number": "PDQ",
"type": "connector_lock",
"capabilities": {
"connected": true,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"hid_mobile_credential": false,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": false,
"pin_credential": false,
"prox_card_credential": true,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "1a60487a-db96-4d99-88f1-82d1fb209927",
"links": {
"self": "http://api.remotelock.dev/models/1a60487a-db96-4d99-88f1-82d1fb209927"
}
},
{
"type": "model",
"attributes": {
"name": "Sadiot Lock",
"number": "SadiotLock",
"type": "connector_lock",
"capabilities": {
"connected": true,
"emulated_temporary_unlock_timeout_time": 20,
"emulated_temporary_unlockable": true,
"guest_deferrable": true,
"hid_mobile_credential": false,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": false,
"pin_credential": true,
"prox_card_credential": false,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "fe77fa0d-20f9-42ca-8c5e-775a5ac2b16a",
"links": {
"self": "http://api.remotelock.dev/models/fe77fa0d-20f9-42ca-8c5e-775a5ac2b16a"
}
},
{
"type": "model",
"attributes": {
"name": "CTE",
"number": "SchlageCte",
"type": "connector_lock",
"capabilities": {
"connected": false,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"hid_mobile_credential": false,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": false,
"pin_credential": false,
"prox_card_credential": false,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": true,
"smart_card_credential": false,
"unikey_credential": false,
"uses_schlage_ble_firmware_updates": true,
"wavelynx_mobile_credential": false
}
},
"id": "6d065628-5adb-4d6b-8528-28a51b05165c",
"links": {
"self": "http://api.remotelock.dev/models/6d065628-5adb-4d6b-8528-28a51b05165c"
}
},
{
"type": "model",
"attributes": {
"name": "RG (LS-5i)",
"number": "LS-5i",
"type": "lock",
"capabilities": {
"access_exception": true,
"auto_lock_enable": true,
"auto_lock_schedule": true,
"auto_lock_timeouts": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
30,
60,
300,
600,
900,
1200,
1500,
1800
],
"connected": true,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"heartbeat_intervals": [
0,
300,
900,
1200,
1800,
3600,
7200,
14400,
28800,
43200
],
"hid_mobile_credential": false,
"local_pins": true,
"lock_action_schedule": true,
"manual_auto_lock_timeout": true,
"manual_auto_lock_timeout_intervals": [
5,
10,
20,
30,
60,
120,
300,
600,
1200,
1800,
3600
],
"mobile_commissionable": true,
"mute": true,
"native_temporary_unlockable": false,
"no_enter_code": true,
"online_auto_lock": true,
"phone_credential": false,
"pin_credential": true,
"power_sources": [
"alkaline_battery",
"lithium_battery"
],
"programming_code": true,
"prox_card_credential": false,
"ready_pin_credential": false,
"registrable": true,
"replaceable": true,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wake_wifi": [
"user_action",
"heartbeat_interval",
"user_action_except_manual"
],
"wavelynx_mobile_credential": false
}
},
"id": "06f3048b-4ce4-46b7-bb87-79e16a7a7cc5",
"links": {
"self": "http://api.remotelock.dev/models/06f3048b-4ce4-46b7-bb87-79e16a7a7cc5"
}
},
{
"type": "model",
"attributes": {
"name": "LS-DB500i",
"number": "LS-DB500i",
"type": "lock",
"capabilities": {
"access_exception": false,
"auto_lock_enable": false,
"auto_lock_schedule": false,
"auto_lock_timeouts": [
],
"connected": true,
"emulated_temporary_unlockable": false,
"guest_deferrable": true,
"heartbeat_intervals": [
0,
10,
60,
300,
600,
900,
1200,
1800,
3600,
7200,
10800,
14400
],
"hid_mobile_credential": false,
"local_pins": true,
"lock_action_schedule": false,
"manual_auto_lock_timeout": false,
"manual_auto_lock_timeout_intervals": [
5,
10,
20,
30,
60,
120,
300,
600,
1200,
1800,
3600
],
"mobile_commissionable": true,
"mute": false,
"native_temporary_unlockable": false,
"no_enter_code": false,
"online_auto_lock": false,
"phone_credential": false,
"pin_credential": true,
"power_sources": [
],
"programming_code": true,
"prox_card_credential": false,
"ready_pin_credential": false,
"registrable": true,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wake_wifi": [
],
"wavelynx_mobile_credential": false
}
},
"id": "ac3fb8bd-679d-4ce6-81d6-036a64f27fbd",
"links": {
"self": "http://api.remotelock.dev/models/ac3fb8bd-679d-4ce6-81d6-036a64f27fbd"
}
},
{
"type": "model",
"attributes": {
"name": "KIC KoreLine 4500, 5500, 6500",
"number": "KIC-KL-Series",
"type": "connector_lock",
"capabilities": {
"connected": true,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"hid_mobile_credential": false,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": false,
"pin_credential": true,
"prox_card_credential": true,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "06f4b466-0a98-4f70-adff-07f30c33e790",
"links": {
"self": "http://api.remotelock.dev/models/06f4b466-0a98-4f70-adff-07f30c33e790"
}
},
{
"type": "model",
"attributes": {
"name": "LS-L500i",
"number": "LS-L500i",
"type": "lock",
"capabilities": {
"access_exception": false,
"auto_lock_enable": false,
"auto_lock_schedule": true,
"auto_lock_timeouts": [
],
"connected": true,
"emulated_temporary_unlockable": false,
"guest_deferrable": true,
"heartbeat_intervals": [
0,
10,
60,
300,
600,
900,
1200,
1800,
3600,
7200,
10800,
14400
],
"hid_mobile_credential": false,
"local_pins": true,
"lock_action_schedule": false,
"manual_auto_lock_timeout": false,
"manual_auto_lock_timeout_intervals": [
5,
10,
20,
30,
60,
120,
300,
600,
1200,
1800,
3600
],
"mobile_commissionable": true,
"mute": false,
"native_temporary_unlockable": false,
"no_enter_code": false,
"online_auto_lock": false,
"phone_credential": false,
"pin_credential": true,
"power_sources": [
],
"programming_code": true,
"prox_card_credential": false,
"ready_pin_credential": false,
"registrable": true,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wake_wifi": [
],
"wavelynx_mobile_credential": false
}
},
"id": "0ee0e349-e5b3-45af-9dfe-94f18f6984bb",
"links": {
"self": "http://api.remotelock.dev/models/0ee0e349-e5b3-45af-9dfe-94f18f6984bb"
}
},
{
"type": "model",
"attributes": {
"name": "E06",
"number": "WEST-E06",
"type": "lock",
"capabilities": {
"access_exception": true,
"auto_lock_enable": true,
"auto_lock_schedule": true,
"auto_lock_timeouts": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
30,
60,
300,
600,
900,
1200,
1500,
1800
],
"connected": true,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"heartbeat_intervals": [
0,
300,
900,
1200,
1800,
3600,
7200,
14400,
28800,
43200
],
"hid_mobile_credential": false,
"local_pins": true,
"lock_action_schedule": true,
"manual_auto_lock_timeout": true,
"manual_auto_lock_timeout_intervals": [
5,
10,
20,
30,
60,
120,
300,
600,
1200,
1800,
3600
],
"mobile_commissionable": true,
"mute": true,
"native_temporary_unlockable": false,
"no_enter_code": true,
"online_auto_lock": true,
"phone_credential": false,
"pin_credential": true,
"power_sources": [
"alkaline_battery",
"lithium_battery"
],
"programming_code": true,
"prox_card_credential": true,
"ready_pin_credential": false,
"registrable": true,
"replaceable": true,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wake_wifi": [
"user_action",
"heartbeat_interval",
"user_action_except_manual"
],
"wavelynx_mobile_credential": false
}
},
"id": "c50f4a3b-2d16-4a63-967d-a8a4b478aa98",
"links": {
"self": "http://api.remotelock.dev/models/c50f4a3b-2d16-4a63-967d-a8a4b478aa98"
}
},
{
"type": "model",
"attributes": {
"name": "YaleHome",
"number": "YaleHome",
"type": "lock",
"capabilities": {
"access_exception": false,
"auto_lock_enable": false,
"auto_lock_schedule": false,
"auto_lock_timeouts": [
],
"connected": true,
"emulated_temporary_unlock_timeout_time": 10,
"emulated_temporary_unlockable": true,
"guest_deferrable": true,
"heartbeat_intervals": [
],
"hid_mobile_credential": false,
"local_pins": false,
"lock_action_schedule": false,
"manual_auto_lock_timeout": false,
"manual_auto_lock_timeout_intervals": [
5,
10,
20,
30,
60,
120,
300,
600,
1200,
1800,
3600
],
"mobile_commissionable": true,
"mute": false,
"native_temporary_unlockable": false,
"no_enter_code": false,
"online_auto_lock": false,
"phone_credential": true,
"pin_credential": true,
"power_sources": [
],
"programming_code": false,
"prox_card_credential": false,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wake_wifi": [
],
"wavelynx_mobile_credential": false
}
},
"id": "85e416d3-bb7a-441f-85fa-37e2f07666e4",
"links": {
"self": "http://api.remotelock.dev/models/85e416d3-bb7a-441f-85fa-37e2f07666e4"
}
},
{
"type": "model",
"attributes": {
"name": "MercuryElevator",
"number": "MercuryElevator",
"type": "acs_elevator",
"capabilities": {
"access_exception": true,
"connected": true,
"emulated_temporary_unlock_timeout_time": 10,
"emulated_temporary_unlockable": true,
"guest_deferrable": false,
"hid_mobile_credential": true,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": false,
"pin_credential": true,
"prox_card_credential": true,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": true,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "fdfd8fb3-d1c5-4dce-a191-7248391d8316",
"links": {
"self": "http://api.remotelock.dev/models/fdfd8fb3-d1c5-4dce-a191-7248391d8316"
}
},
{
"type": "model",
"attributes": {
"name": "MercuryElevatorFloor",
"number": "MercuryElevatorFloor",
"type": "acs_elevator_floor",
"capabilities": {
"access_exception": true,
"connected": true,
"emulated_temporary_unlock_timeout_time": 10,
"emulated_temporary_unlockable": true,
"guest_deferrable": false,
"hid_mobile_credential": true,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": false,
"pin_credential": true,
"prox_card_credential": true,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": true,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "8dfe1562-14e6-45fe-af31-0906b7d666d1",
"links": {
"self": "http://api.remotelock.dev/models/8dfe1562-14e6-45fe-af31-0906b7d666d1"
}
},
{
"type": "model",
"attributes": {
"name": "710 (CG / LS-7i)",
"number": "LS-7i",
"type": "lock",
"capabilities": {
"access_exception": true,
"auto_lock_enable": true,
"auto_lock_schedule": true,
"auto_lock_timeouts": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
30,
60,
300,
600,
900,
1200,
1500,
1800
],
"connected": true,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"heartbeat_intervals": [
0,
300,
900,
1200,
1800,
3600,
7200,
14400,
28800,
43200
],
"hid_mobile_credential": false,
"local_pins": true,
"lock_action_schedule": true,
"manual_auto_lock_timeout": false,
"manual_auto_lock_timeout_intervals": [
5,
10,
20,
30,
60,
120,
300,
600,
1200,
1800,
3600
],
"mobile_commissionable": true,
"mute": true,
"native_temporary_unlockable": false,
"no_enter_code": true,
"online_auto_lock": true,
"phone_credential": false,
"pin_credential": true,
"power_sources": [
"hardwire",
"alkaline_battery",
"lithium_battery"
],
"programming_code": true,
"prox_card_credential": false,
"ready_pin_credential": false,
"registrable": true,
"replaceable": true,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wake_wifi": [
"user_action",
"heartbeat_interval"
],
"wavelynx_mobile_credential": false
}
},
"id": "d8b04ee2-22fd-4741-bcfe-14c3adcf6cf3",
"links": {
"self": "http://api.remotelock.dev/models/d8b04ee2-22fd-4741-bcfe-14c3adcf6cf3"
}
}
],
"meta": {
"page": 1,
"per_page": 25,
"total_count": 46,
"total_pages": 2
}
}
Get all models that supports capabilities requested as filters
Request
Endpoint
GET /models
GET /models?capabilities[prox_card_credential]=true
Parameters
capabilities: {"prox_card_credential"=>"true"}
Name | Description |
---|---|
sort | Sortable attributes: number, default: none |
capabilities | Filter by capabilities |
Response
200 OK
{
"data": [
{
"type": "model",
"attributes": {
"name": "KLM",
"number": "KLM",
"type": "connector_lock",
"capabilities": {
"connected": true,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"hid_mobile_credential": false,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": true,
"pin_credential": true,
"prox_card_credential": true,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "652ca839-bdb4-462f-abfe-b3e0da0c42c0",
"links": {
"self": "http://api.remotelock.dev/models/652ca839-bdb4-462f-abfe-b3e0da0c42c0"
}
},
{
"type": "model",
"attributes": {
"name": "PDQ",
"number": "PDQ",
"type": "connector_lock",
"capabilities": {
"connected": true,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"hid_mobile_credential": false,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": false,
"pin_credential": false,
"prox_card_credential": true,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "34f53104-abdf-48e9-9ccb-9eda268b3814",
"links": {
"self": "http://api.remotelock.dev/models/34f53104-abdf-48e9-9ccb-9eda268b3814"
}
},
{
"type": "model",
"attributes": {
"name": "KIC KoreLine 4500, 5500, 6500",
"number": "KIC-KL-Series",
"type": "connector_lock",
"capabilities": {
"connected": true,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"hid_mobile_credential": false,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": false,
"pin_credential": true,
"prox_card_credential": true,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "72f952b4-4685-4920-88ed-00d7b1694a65",
"links": {
"self": "http://api.remotelock.dev/models/72f952b4-4685-4920-88ed-00d7b1694a65"
}
},
{
"type": "model",
"attributes": {
"name": "E06",
"number": "WEST-E06",
"type": "lock",
"capabilities": {
"access_exception": true,
"auto_lock_enable": true,
"auto_lock_schedule": true,
"auto_lock_timeouts": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
30,
60,
300,
600,
900,
1200,
1500,
1800
],
"connected": true,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"heartbeat_intervals": [
0,
300,
900,
1200,
1800,
3600,
7200,
14400,
28800,
43200
],
"hid_mobile_credential": false,
"local_pins": true,
"lock_action_schedule": true,
"manual_auto_lock_timeout": true,
"manual_auto_lock_timeout_intervals": [
5,
10,
20,
30,
60,
120,
300,
600,
1200,
1800,
3600
],
"mobile_commissionable": true,
"mute": true,
"native_temporary_unlockable": false,
"no_enter_code": true,
"online_auto_lock": true,
"phone_credential": false,
"pin_credential": true,
"power_sources": [
"alkaline_battery",
"lithium_battery"
],
"programming_code": true,
"prox_card_credential": true,
"ready_pin_credential": false,
"registrable": true,
"replaceable": true,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wake_wifi": [
"user_action",
"heartbeat_interval",
"user_action_except_manual"
],
"wavelynx_mobile_credential": false
}
},
"id": "f82889ba-02ec-41f6-8b89-8dae4d2e0433",
"links": {
"self": "http://api.remotelock.dev/models/f82889ba-02ec-41f6-8b89-8dae4d2e0433"
}
},
{
"type": "model",
"attributes": {
"name": "MercuryElevator",
"number": "MercuryElevator",
"type": "acs_elevator",
"capabilities": {
"access_exception": true,
"connected": true,
"emulated_temporary_unlock_timeout_time": 10,
"emulated_temporary_unlockable": true,
"guest_deferrable": false,
"hid_mobile_credential": true,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": false,
"pin_credential": true,
"prox_card_credential": true,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": true,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "2d7e3708-f3b8-4fc6-a28e-8fcdbea4847d",
"links": {
"self": "http://api.remotelock.dev/models/2d7e3708-f3b8-4fc6-a28e-8fcdbea4847d"
}
},
{
"type": "model",
"attributes": {
"name": "MercuryElevatorFloor",
"number": "MercuryElevatorFloor",
"type": "acs_elevator_floor",
"capabilities": {
"access_exception": true,
"connected": true,
"emulated_temporary_unlock_timeout_time": 10,
"emulated_temporary_unlockable": true,
"guest_deferrable": false,
"hid_mobile_credential": true,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": false,
"pin_credential": true,
"prox_card_credential": true,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": true,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "52e7d27f-7b38-449e-ba8f-001505d1fcf8",
"links": {
"self": "http://api.remotelock.dev/models/52e7d27f-7b38-449e-ba8f-001505d1fcf8"
}
},
{
"type": "model",
"attributes": {
"name": "Mercury",
"number": "Mercury",
"type": "acs_door",
"capabilities": {
"access_exception": true,
"connected": true,
"emulated_temporary_unlock_timeout_time": 10,
"emulated_temporary_unlockable": true,
"guest_deferrable": false,
"hid_mobile_credential": true,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": false,
"pin_credential": true,
"prox_card_credential": true,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": true,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "8628caea-e705-4b47-a739-3bfcd5c08745",
"links": {
"self": "http://api.remotelock.dev/models/8628caea-e705-4b47-a739-3bfcd5c08745"
}
},
{
"type": "model",
"attributes": {
"name": "KIC KoreLine 3500",
"number": "KIC-KL-3500",
"type": "connector_lock",
"capabilities": {
"connected": true,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"hid_mobile_credential": false,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": false,
"pin_credential": true,
"prox_card_credential": true,
"ready_pin_credential": false,
"registrable": false,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "e2002465-3f83-4a2d-8f11-4cda9974a8d1",
"links": {
"self": "http://api.remotelock.dev/models/e2002465-3f83-4a2d-8f11-4cda9974a8d1"
}
}
],
"meta": {
"page": 1,
"per_page": 8,
"total_count": 8,
"total_pages": 1
}
}
Get a model
Request
Endpoint
GET /models/:id
GET /models/f5cc6040-d884-4238-a72f-4673bafd61c5
Parameters
None.
Response
200 OK
{
"data": {
"type": "model",
"attributes": {
"name": "RL-4000",
"number": "RL-4000",
"type": "resort_lock",
"capabilities": {
"connected": false,
"emulated_temporary_unlockable": false,
"guest_deferrable": false,
"hid_mobile_credential": false,
"mobile_commissionable": true,
"native_temporary_unlockable": false,
"phone_credential": false,
"pin_credential": false,
"prox_card_credential": false,
"ready_pin_credential": false,
"registrable": true,
"replaceable": false,
"schlage_engage_smart_card_credential": false,
"smart_card_credential": false,
"unikey_credential": false,
"wavelynx_mobile_credential": false
}
},
"id": "f5cc6040-d884-4238-a72f-4673bafd61c5",
"links": {
"self": "http://api.remotelock.dev/models/f5cc6040-d884-4238-a72f-4673bafd61c5"
}
}
}
Notification Subscribers
Get all notification subscribers
Returns all notification subscriber types (homogeneous).
Request
Endpoint
GET /notification_subscribers
GET /notification_subscribers
Parameters
Name | Description |
---|---|
[type] | Filter by type(s). Supported types: email_notification_subscriber, text_notification_subscriber, and webhook_notification_subscriber |
sort | Sortable attributes: created_at and name, default: created_at ascending |
Response
200 OK
{
"data": [
{
"type": "text_notification_subscriber",
"attributes": {
"name": "Sofia Robel",
"phone": "720-816-6255",
"carrier": "boost",
"active": true,
"created_at": "2024-09-19T12:16:21Z",
"updated_at": "2024-09-19T12:16:21Z"
},
"id": "d8700599-4f76-4ba0-abc6-4d95a644de49",
"links": {
"self": "http://api.remotelock.dev/notification_subscribers/d8700599-4f76-4ba0-abc6-4d95a644de49"
}
},
{
"type": "webhook_notification_subscriber",
"attributes": {
"name": "Nigel Turner",
"url": "https://www.google.com",
"content_type": "form",
"secret": "57f9304da2cbc4d5f35e0dee959ec930",
"active": true,
"created_at": "2024-09-19T12:16:21Z",
"updated_at": "2024-09-19T12:16:21Z"
},
"id": "c8511bb1-0e17-44dd-874e-4dd2bfea84a7",
"links": {
"self": "http://api.remotelock.dev/notification_subscribers/c8511bb1-0e17-44dd-874e-4dd2bfea84a7"
}
}
],
"meta": {
"page": 1,
"per_page": 25,
"total_count": 2,
"total_pages": 1
}
}
Get a notification subscriber
Request
Endpoint
GET /notification_subscribers/:id
GET /notification_subscribers/7e09bd7a-0aa6-499b-a449-3a499365e6b0
Parameters
None.
Response
200 OK
{
"data": {
"type": "text_notification_subscriber",
"attributes": {
"name": "Scottie Ruecker",
"phone": "648.042.0602 x75920",
"carrier": "orange",
"active": true,
"created_at": "2024-09-19T12:16:22Z",
"updated_at": "2024-09-19T12:16:22Z"
},
"id": "7e09bd7a-0aa6-499b-a449-3a499365e6b0",
"links": {
"self": "http://api.remotelock.dev/notification_subscribers/7e09bd7a-0aa6-499b-a449-3a499365e6b0"
}
}
}
Update a notification subscriber
Parameters accepted: all used for create
Request
Endpoint
PUT /notification_subscribers/:id
PUT /notification_subscribers/59d997ab-8c6d-47da-a24b-c37ad5e753b3
Parameters
{
"attributes": {
"active": false
}
}
None.
Response
200 OK
{
"data": {
"type": "text_notification_subscriber",
"attributes": {
"name": "Ms. Hermine Pacocha",
"phone": "1-717-430-7066 x83666",
"carrier": "bell",
"active": false,
"created_at": "2024-09-19T12:16:22Z",
"updated_at": "2024-09-19T12:16:22Z"
},
"id": "59d997ab-8c6d-47da-a24b-c37ad5e753b3",
"links": {
"self": "http://api.remotelock.dev/notification_subscribers/59d997ab-8c6d-47da-a24b-c37ad5e753b3"
}
}
}
Delete a notification subscriber
Request
Endpoint
DELETE /notification_subscribers/:id
DELETE /notification_subscribers/38664d6e-4774-4731-8dde-4dc1f40f622a
Parameters
None.
Response
204 No Content
Delete the webhook notification subscriber
Request
Endpoint
DELETE /notification_subscribers/:id
DELETE /notification_subscribers/6cb902b3-9e5b-408c-a6d7-9e58bd390685
Parameters
None.
Response
204 No Content
Delete a notification subscriber
Request
Endpoint
DELETE /notification_subscribers/:id
DELETE /notification_subscribers/5a29a4d9-d220-43cb-9f9e-f31e3b33ac1e
Parameters
None.
Response
204 No Content
Create an email notification subscriber
Request
Endpoint
POST /notification_subscribers
POST /notification_subscribers
Parameters
{
"type": "email_notification_subscriber",
"attributes": {
"active": true,
"name": "John Doe",
"email": "john@doe.com"
}
}
Name | Description |
---|---|
type required | email_notification_subscriber |
attributes[active] | Whether the subscriber is active or not. The subscriber will not receive notifications if set to false. Default: true |
attributes[name] required | Name |
attributes[email] required |
Response
201 Created
{
"data": {
"type": "email_notification_subscriber",
"attributes": {
"name": "John Doe",
"email": "john@doe.com",
"active": true,
"created_at": "2024-09-19T12:16:23Z",
"updated_at": "2024-09-19T12:16:23Z"
},
"id": "2c8edcdc-cea8-44d2-925b-46e322e0051e",
"links": {
"self": "http://api.remotelock.dev/notification_subscribers/2c8edcdc-cea8-44d2-925b-46e322e0051e"
}
}
}
Create a text notification subscriber
Request
Endpoint
POST /notification_subscribers
POST /notification_subscribers
Parameters
{
"type": "text_notification_subscriber",
"attributes": {
"active": true,
"name": "John Doe",
"phone": "303-317-3422",
"carrier": "att"
}
}
Name | Description |
---|---|
type required | text_notification_subscriber |
attributes[active] | Whether the subscriber is active or not. The subscriber will not receive notifications if set to false. Default: true |
attributes[name] required | Name |
attributes[phone] required | Phone Number |
attributes[carrier] required | Carrier |
Response
201 Created
{
"data": {
"type": "text_notification_subscriber",
"attributes": {
"name": "John Doe",
"phone": "303-317-3422",
"carrier": "att",
"active": true,
"created_at": "2024-09-19T12:16:23Z",
"updated_at": "2024-09-19T12:16:23Z"
},
"id": "fe4a9a4d-125f-439c-87c4-a915aeaadfbc",
"links": {
"self": "http://api.remotelock.dev/notification_subscribers/fe4a9a4d-125f-439c-87c4-a915aeaadfbc"
}
}
}
Create a webhook notification subscriber
Webhooks are HTTP callbacks that you can create to receive events as they happen to avoid polling from the events API endpoint.
Webhook endpoint requirements
- Must be secured with HTTPS
- Validate request from us using the
X-Secret
header provided when webhook was created - Process the request within 3 seconds, otherwise the request will timeout and our server will schedule it for retry. To avoid exceeding this deadline, we recommend processing webhook requests outside of the request/response lifecycle
- Always respond with 200 range status code, otherwise our server will schedule the request for retry
Retry logic
Whenever your webhook endpoint responds with a non-200 range status code or exceeds the deadline, our server will timeout the request and schedule for retry.
Our server will retry failed requests according to the mapping below:
- 1st retry => Delayed by 1 minute
- 2nd retry => Delayed by 1 hour + 0-60 minutes
- 3rd retry => Delayed by 12 hours + 0-120 minutes
- 4th retry => Delayed by 1 day + 0-180 minutes
- 5th retry => Delayed by 2 days + 0-240 minutes
- 6th retry => Delayed by 3 days + 0-300 minutes
Most of the time, this is enough to fix an issue on the webhook target server.
Webhook deactivation
If any message cannot be acknowledged by the webhook endpoint after the retries, our server will automatically deactivate the webhook. When this happens, we send an email notifying about the deactivated webhook.
Recover missed data
The best way to recover data from a deactivated webhook is to fetch
from the /events
endpoint. A sort by created_at
is available for
that endpoint and your application can use data from the last received
messages via webhook to find the stop point.
A webhook payload has a similar structure to the response of events
endpoint.
The important difference is that the root JSON key, data
, is a single
object on a webhook payload, whereas data
is an array of objects on
the events response.
Make sure the webhook handler is decoupled enough so that it's easy to
use for a data recover scenario from /events
.
Request
Endpoint
POST /notification_subscribers
POST /notification_subscribers
Parameters
{
"type": "webhook_notification_subscriber",
"attributes": {
"active": true,
"name": "John's webhook",
"url": "https://google.com",
"content_type": "form",
"secret": "5f7c5b9ccedea8832a46cfca516da134"
}
}
Name | Description |
---|---|
type required | webhook_notification_subscriber |
attributes[active] | Whether the subscriber is active or not. The subscriber will not receive notifications if set to false. Default: true |
attributes[name] required | Name |
attributes[url] required | Secure (HTTPS) URL |
attributes[content_type] required | Content-Type ("form" or "json"). Default is "form". |
attributes[secret] | "X-Secret" request header to verify it came from us |
Response
201 Created
{
"data": {
"type": "webhook_notification_subscriber",
"attributes": {
"name": "John's webhook",
"url": "https://google.com",
"content_type": "form",
"secret": "5f7c5b9ccedea8832a46cfca516da134",
"active": true,
"created_at": "2024-09-19T12:16:23Z",
"updated_at": "2024-09-19T12:16:23Z"
},
"id": "0ca62a54-8fb1-4fa5-9602-5d0f3e8d12ac",
"links": {
"self": "http://api.remotelock.dev/notification_subscribers/0ca62a54-8fb1-4fa5-9602-5d0f3e8d12ac"
}
}
}
Notification Subscriptions
Get all notification subscriptions
Request
Endpoint
GET /notification_subscriptions
GET /notification_subscriptions
Parameters
Name | Description |
---|---|
sort | Sortable attributes: created_at, default: created_at ascending |
Response
200 OK
{
"data": [
{
"type": "notification_subscription",
"attributes": {
"events": [
{
"event_type": "access_person_used"
}
],
"created_at": "2024-09-19T12:16:24Z",
"updated_at": "2024-09-19T12:16:24Z",
"subscriber_id": "291dc23e-022c-48a8-9b65-b8992787ecad",
"subscriber_type": "text_notification_subscriber",
"publisher_id": "7579d2f3-2059-4c6e-8e17-79fb5c0e6093",
"publisher_type": "account"
},
"id": "5a58e02b-18ae-4886-8876-a04755195e70",
"links": {
"self": "http://api.remotelock.dev/notification_subscriptions/5a58e02b-18ae-4886-8876-a04755195e70",
"subscriber": "http://api.remotelock.dev/notification_subscribers/291dc23e-022c-48a8-9b65-b8992787ecad",
"publisher": "http://api.remotelock.dev/accounts/7579d2f3-2059-4c6e-8e17-79fb5c0e6093"
}
}
],
"meta": {
"page": 1,
"per_page": 25,
"total_count": 1,
"total_pages": 1
}
}
Get a notification subscription
Request
Endpoint
GET /notification_subscriptions/:id
GET /notification_subscriptions/0ca4dcb0-a7db-459e-823d-a0d3b7e60022
Parameters
None.
Response
200 OK
{
"data": {
"type": "notification_subscription",
"attributes": {
"events": [
{
"event_type": "access_person_used"
}
],
"created_at": "2024-09-19T12:16:24Z",
"updated_at": "2024-09-19T12:16:24Z",
"subscriber_id": "593bf6fc-594d-46d6-9c52-8748f9e875d6",
"subscriber_type": "text_notification_subscriber",
"publisher_id": "c9495efa-b226-4f26-8e5b-8b31b8c74181",
"publisher_type": "account"
},
"id": "0ca4dcb0-a7db-459e-823d-a0d3b7e60022",
"links": {
"self": "http://api.remotelock.dev/notification_subscriptions/0ca4dcb0-a7db-459e-823d-a0d3b7e60022",
"subscriber": "http://api.remotelock.dev/notification_subscribers/593bf6fc-594d-46d6-9c52-8748f9e875d6",
"publisher": "http://api.remotelock.dev/accounts/c9495efa-b226-4f26-8e5b-8b31b8c74181"
}
}
}
Create a notification subscription
Notification Subscription is the combination of a Publisher, a Subscriber and the events to listen.
The event types contained in events must be compatible with the publisher type. Accounts and Locations can be combined with any event_type, but the others only work with their compatible event JSON Schemas:
- Access Person
{
"type": "object",
"properties": {
"event_type": {
"enum": [
"access_person_used"
]
},
"first_access": {
"type": "boolean"
}
},
"required": [
"event_type"
],
"additionalProperties": false
}
{
"type": "object",
"properties": {
"event_type": {
"enum": [
"access_person_created",
"access_person_updated",
"access_person_deleted"
]
}
},
"required": [
"event_type"
],
"additionalProperties": false
}
- ACS/Door
{
"type": "object",
"properties": {
"event_type": {
"enum": [
"acs_door_opened",
"acs_door_closed",
"acs_door_held_open",
"lock_requested",
"unlock_requested",
"temporary_unlock_requested",
"temporary_unlock_timeout",
"access_person_synced",
"access_person_sync_failed",
"access_guest_late_sync",
"reset",
"ready_pin_sync_failed",
"unlocked",
"locked",
"access_denied",
"jammed"
]
}
},
"required": [
"event_type"
],
"additionalProperties": false
}
- Lock
{
"type": "object",
"properties": {
"event_type": {
"enum": [
"connectivity",
"power_level_low",
"battery_replaced",
"lock_requested",
"unlock_requested",
"temporary_unlock_requested",
"temporary_unlock_timeout",
"access_person_synced",
"access_person_sync_failed",
"access_guest_late_sync",
"reset",
"ready_pin_sync_failed",
"unlocked",
"locked",
"access_denied",
"jammed"
]
}
},
"required": [
"event_type"
],
"additionalProperties": false
}
- Thermostat
{
"type": "object",
"properties": {
"event_type": {
"enum": [
"connectivity",
"power_level_low",
"temperature_changed",
"humidity_changed"
]
}
},
"required": [
"event_type"
],
"additionalProperties": false
}
- Power Plug
{
"type": "object",
"properties": {
"event_type": {
"enum": [
"connectivity",
"relay_enabled",
"relay_disabled"
]
}
},
"required": [
"event_type"
],
"additionalProperties": false
}
- ACS/Controller
{
"type": "object",
"properties": {
"event_type": {
"enum": [
"connectivity"
]
}
},
"required": [
"event_type"
],
"additionalProperties": false
}
- Connector/Lock
{
"type": "object",
"properties": {
"event_type": {
"enum": [
"connectivity",
"power_level_low",
"door_action_held_open",
"door_action_forced_open",
"door_action_tamper_detected",
"door_action_tamper_cleared",
"ble_mapp_connected",
"lock_requested",
"unlock_requested",
"temporary_unlock_requested",
"temporary_unlock_timeout",
"access_person_synced",
"access_person_sync_failed",
"access_guest_late_sync",
"reset",
"ready_pin_sync_failed",
"unlocked",
"locked",
"access_denied",
"jammed"
]
}
},
"required": [
"event_type"
],
"additionalProperties": false
}
- ZWave Lock
{
"type": "object",
"properties": {
"event_type": {
"enum": [
"connectivity",
"power_level_low",
"lock_requested",
"unlock_requested",
"temporary_unlock_requested",
"temporary_unlock_timeout",
"access_person_synced",
"access_person_sync_failed",
"access_guest_late_sync",
"reset",
"ready_pin_sync_failed",
"unlocked",
"locked",
"access_denied",
"jammed"
]
}
},
"required": [
"event_type"
],
"additionalProperties": false
}
- Schlage Home/Lock
{
"type": "object",
"properties": {
"event_type": {
"enum": [
"connectivity",
"power_level_low",
"lock_requested",
"unlock_requested",
"temporary_unlock_requested",
"temporary_unlock_timeout",
"access_person_synced",
"access_person_sync_failed",
"access_guest_late_sync",
"reset",
"ready_pin_sync_failed",
"unlocked",
"locked",
"access_denied",
"jammed"
]
}
},
"required": [
"event_type"
],
"additionalProperties": false
}
- Kore/Ready PIN
{
"type": "object",
"properties": {
"event_type": {
"enum": [
"kore_ready_pin_used"
]
}
},
"required": [
"event_type"
],
"additionalProperties": false
}
- ACS/Elevator
{
"type": "object",
"properties": {
"event_type": {
"enum": [
"lock_requested",
"unlock_requested",
"temporary_unlock_requested",
"temporary_unlock_timeout",
"unlocked",
"locked",
"access_denied",
"jammed"
]
}
},
"required": [
"event_type"
],
"additionalProperties": false
}
- ACS/Elevator Floor
{
"type": "object",
"properties": {
"event_type": {
"enum": [
"lock_requested",
"unlock_requested",
"temporary_unlock_requested",
"temporary_unlock_timeout",
"access_person_synced",
"access_person_sync_failed",
"access_guest_late_sync",
"reset",
"ready_pin_sync_failed",
"unlockedlocked"
]
}
},
"required": [
"event_type"
],
"additionalProperties": false
}
Request
Endpoint
POST /notification_subscriptions
POST /notification_subscriptions
Parameters
{
"attributes": {
"events": [
{
"event_type": "access_person_used"
},
{
"event_type": "access_person_created"
},
{
"event_type": "access_person_updated"
},
{
"event_type": "access_person_deleted"
},
{
"event_type": "acs_door_opened"
},
{
"event_type": "acs_door_closed"
},
{
"event_type": "acs_door_held_open"
},
{
"event_type": "lock_requested"
},
{
"event_type": "unlock_requested"
},
{
"event_type": "temporary_unlock_requested"
},
{
"event_type": "temporary_unlock_timeout"
},
{
"event_type": "access_person_synced"
},
{
"event_type": "access_person_sync_failed"
},
{
"event_type": "access_guest_late_sync"
},
{
"event_type": "reset"
},
{
"event_type": "ready_pin_sync_failed"
},
{
"event_type": "unlocked"
},
{
"event_type": "locked"
},
{
"event_type": "access_denied"
},
{
"event_type": "jammed"
},
{
"event_type": "connectivity"
},
{
"event_type": "power_level_low"
},
{
"event_type": "battery_replaced"
},
{
"event_type": "temperature_changed"
},
{
"event_type": "humidity_changed"
},
{
"event_type": "relay_enabled"
},
{
"event_type": "relay_disabled"
},
{
"event_type": "door_action_held_open"
},
{
"event_type": "door_action_forced_open"
},
{
"event_type": "door_action_tamper_detected"
},
{
"event_type": "door_action_tamper_cleared"
},
{
"event_type": "ble_mapp_connected"
},
{
"event_type": "kore_ready_pin_used"
},
{
"event_type": "unlockedlocked"
}
],
"publisher_type": "account",
"publisher_id": "e5aab477-15d8-4288-b2df-7046277572ea",
"subscriber_type": "text_notification_subscriber",
"subscriber_id": "f298ff43-5110-49d4-bf60-f63418e37469"
}
}
Name | Description |
---|---|
attributes[events] required | [{ "event_type": "a supported event type" }, ...] |
attributes[publisher_type] required | Publisher type: account, location, access_user, access_guest, kore_ready_pin, lock, thermostat, power_plug, acs_door, acs_controller, acs_elevator, acs_elevator_floor, connector_lock, zwave_lock, schlage_home_lock or igloo_lock |
attributes[publisher_id] required | Publisher id |
attributes[subscriber_type] required | Subscriber type: text_notification_subscriber, email_notification_subscriber or webhook_notification_subscriber |
attributes[subscriber_id] required | Subscriber id |
Response
201 Created
{
"data": {
"type": "notification_subscription",
"attributes": {
"events": [
{
"event_type": "access_person_used"
},
{
"event_type": "access_person_created"
},
{
"event_type": "access_person_updated"
},
{
"event_type": "access_person_deleted"
},
{
"event_type": "acs_door_opened"
},
{
"event_type": "acs_door_closed"
},
{
"event_type": "acs_door_held_open"
},
{
"event_type": "lock_requested"
},
{
"event_type": "unlock_requested"
},
{
"event_type":