NAV
json

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

Changelog

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:

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

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.

Skip button to the left of Submit & Finish

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:

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 locks, zwave_locks and resort_locks. 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:

  1. 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.
  2. 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:

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_idand 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:

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.

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:

Setup a new Application

  1. Send an email to sales@remotelock.com requesting API Access for your account.
  2. 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

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
{
  "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.

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
{
  "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:

  1. Customer authorizes and you get the initial Access Token A as well as a Refresh Token X
  2. You access customer data using Access Token A
  3. After 2 hours the Access Token A expires, but you need to access customer data and you notice that Access Token A is expired
  4. 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
  5. 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

POST /oauth/token
Host: connect.remotelock.com
Content-Type: application/x-www-form-urlencoded

client_id=abc&
client_secret=xyz&
grant_type=client_credentials
{
  "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:

{
  "attributes": {
    "body": "Very informative article"
  }
}

JSON response structure

JSON response structure for a collection

{
  "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

{
  "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

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:

The pagination is limited to access up to 10,000 resources, which means the product page * per_page should not exceed that number.

Examples:

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

Filter results by resource type

Supported in endpoints that return a collection of resources of multiple types

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

Sort order

The default sort order for any attribute is "ascending". In order to get "descending" sort order prefix the attribute with hyphen (-).

Examples:

Examples

Versioning

Specifying API version

It is strongly recommended to explicitly specify the version. Specifying the version can be done:

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:

Statuses for access_user type:

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] 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] 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] 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] 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] 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] 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] 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.

Status

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] 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] 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

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 Email

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

  1. Must be secured with HTTPS
  2. Validate request from us using the X-Secret header provided when webhook was created
  3. 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
  4. 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:

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:

{
  "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
}
{
  "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
}
{
  "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
}
{
  "type": "object",
  "properties": {
    "event_type": {
      "enum": [
        "connectivity",
        "power_level_low",
        "temperature_changed",
        "humidity_changed"
      ]
    }
  },
  "required": [
    "event_type"
  ],
  "additionalProperties": false
}
{
  "type": "object",
  "properties": {
    "event_type": {
      "enum": [
        "connectivity",
        "relay_enabled",
        "relay_disabled"
      ]
    }
  },
  "required": [
    "event_type"
  ],
  "additionalProperties": false
}
{
  "type": "object",
  "properties": {
    "event_type": {
      "enum": [
        "connectivity"
      ]
    }
  },
  "required": [
    "event_type"
  ],
  "additionalProperties": false
}
{
  "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
}
{
  "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
}
{
  "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
}
{
  "type": "object",
  "properties": {
    "event_type": {
      "enum": [
        "kore_ready_pin_used"
      ]
    }
  },
  "required": [
    "event_type"
  ],
  "additionalProperties": false
}
{
  "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
}
{
  "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":