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": "Reiciendis et asperiores qui.",
        "dates": [
          {
            "start_date": "2016-11-24",
            "end_date": "2016-11-25"
          },
          {
            "start_date": "2015-12-25",
            "end_date": "2015-12-25"
          }
        ],
        "created_at": "2024-06-03T16:07:50Z",
        "updated_at": "2024-06-03T16:07:50Z"
      },
      "id": "44622bc1-08c6-46ae-8e6f-5d65e5bb543a",
      "links": {
        "self": "http://api.remotelock.dev/access_exceptions/44622bc1-08c6-46ae-8e6f-5d65e5bb543a"
      }
    }
  ],
  "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/bdd3c0cf-3c28-4573-a899-abbdc2004949

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "access_exception",
    "attributes": {
      "name": "Quibusdam dolorem possimus velit.",
      "dates": [
        {
          "start_date": "2016-11-24",
          "end_date": "2016-11-25"
        },
        {
          "start_date": "2015-12-25",
          "end_date": "2015-12-25"
        }
      ],
      "created_at": "2024-06-03T16:07:50Z",
      "updated_at": "2024-06-03T16:07:50Z"
    },
    "id": "bdd3c0cf-3c28-4573-a899-abbdc2004949",
    "links": {
      "self": "http://api.remotelock.dev/access_exceptions/bdd3c0cf-3c28-4573-a899-abbdc2004949"
    }
  }
}

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-06-03T16:07:51Z",
      "updated_at": "2024-06-03T16:07:51Z"
    },
    "id": "c9fdf613-e368-47d9-ae0c-bb5a37877bc8",
    "links": {
      "self": "http://api.remotelock.dev/access_exceptions/c9fdf613-e368-47d9-ae0c-bb5a37877bc8"
    }
  }
}

Update an access exception

Request

Endpoint

PUT /access_exceptions/:id

PUT /access_exceptions/c21e827f-754e-4af8-8ea7-ce7d66c81ed9

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-06-03T16:07:51Z",
      "updated_at": "2024-06-03T16:07:51Z"
    },
    "id": "c21e827f-754e-4af8-8ea7-ce7d66c81ed9",
    "links": {
      "self": "http://api.remotelock.dev/access_exceptions/c21e827f-754e-4af8-8ea7-ce7d66c81ed9"
    }
  }
}

Delete an access exception

Request

Endpoint

DELETE /access_exceptions/:id

DELETE /access_exceptions/46817d1b-5e13-45e8-ae6a-05c16a5759c6

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": "Gerry Shields",
        "email": "adolph.skiles@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-06-03T16:08:24Z",
        "updated_at": "2024-06-03T16:08:24Z",
        "pin": "1159",
        "card_number": null,
        "schlage_engage_smart_card_id": null,
        "schlage_engage_smart_card_badge": null
      },
      "id": "ed0c90f7-2ce0-4d21-945e-8c737b02b193",
      "links": {
        "self": "http://api.remotelock.dev/access_persons/ed0c90f7-2ce0-4d21-945e-8c737b02b193"
      },
      "meta": {
        "restricted_attributes": [
          "url_credential"
        ]
      }
    },
    {
      "type": "access_guest",
      "attributes": {
        "name": "Damian Pacocha Jr.",
        "email": "lorita@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-06-03T16:08:24Z",
        "updated_at": "2024-06-03T16:08:24Z",
        "pin": "1160",
        "card_number": null,
        "schlage_engage_smart_card_id": null,
        "schlage_engage_smart_card_badge": null,
        "starts_at": "2024-06-11T00:00:00",
        "ends_at": "2024-06-26T16:08:24",
        "ready_pins": null
      },
      "id": "71361aa2-ae48-4cae-828e-1c0fdede9953",
      "links": {
        "self": "http://api.remotelock.dev/access_persons/71361aa2-ae48-4cae-828e-1c0fdede9953"
      },
      "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": "Damian Ratke",
        "email": "julian@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-06-03T16:08:25Z",
        "updated_at": "2024-06-03T16:08:25Z",
        "pin": "1161",
        "card_number": null,
        "schlage_engage_smart_card_id": null,
        "schlage_engage_smart_card_badge": null
      },
      "id": "951a4614-f3e5-4838-8f52-1a03916e1679",
      "links": {
        "self": "http://api.remotelock.dev/access_persons/951a4614-f3e5-4838-8f52-1a03916e1679"
      },
      "meta": {
        "restricted_attributes": [
          "url_credential"
        ],
        "restricted_actions": [
          "update"
        ]
      }
    },
    {
      "type": "access_guest",
      "attributes": {
        "name": "Pres. Tommie Simonis",
        "email": "ryan@example.net",
        "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-06-03T16:08:25Z",
        "updated_at": "2024-06-03T16:08:25Z",
        "pin": "1163",
        "card_number": null,
        "schlage_engage_smart_card_id": null,
        "schlage_engage_smart_card_badge": null,
        "starts_at": "2024-05-31T16:08:25",
        "ends_at": "2024-06-02T16:08:25",
        "ready_pins": null
      },
      "id": "c458ed22-af4c-4096-a0bc-ce74f1ceb7cc",
      "links": {
        "self": "http://api.remotelock.dev/access_persons/c458ed22-af4c-4096-a0bc-ce74f1ceb7cc"
      },
      "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/f340f1ce-75da-4639-8e26-60ebe0581c2e

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "access_user",
    "attributes": {
      "name": "Tanner Ullrich CPA",
      "email": "tomi@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-06-03T16:08:30Z",
      "updated_at": "2024-06-03T16:08:30Z",
      "pin": "1174",
      "card_number": null,
      "schlage_engage_smart_card_id": null,
      "schlage_engage_smart_card_badge": null,
      "url_credential": null
    },
    "id": "f340f1ce-75da-4639-8e26-60ebe0581c2e",
    "links": {
      "self": "http://api.remotelock.dev/access_persons/f340f1ce-75da-4639-8e26-60ebe0581c2e"
    },
    "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-06-03T16:08:31Z",
      "updated_at": "2024-06-03T16:08:31Z",
      "pin": "1234",
      "card_number": "23456",
      "schlage_engage_smart_card_id": null,
      "schlage_engage_smart_card_badge": null,
      "url_credential": null
    },
    "id": "4ec72d2f-c17b-4ef4-8ea8-6deccbce3949",
    "links": {
      "self": "http://api.remotelock.dev/access_persons/4ec72d2f-c17b-4ef4-8ea8-6deccbce3949"
    },
    "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": "2020-01-02T16:04:00",
    "ends_at": "2020-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": "expired",
      "source": null,
      "guest_source": null,
      "deliver_as_url_credential": false,
      "require_pin_verification": false,
      "created_at": "2024-06-03T16:08:34Z",
      "updated_at": "2024-06-03T16:08:34Z",
      "pin": "1234",
      "card_number": null,
      "schlage_engage_smart_card_id": null,
      "schlage_engage_smart_card_badge": null,
      "url_credential": null,
      "starts_at": "2020-01-02T16:04:00",
      "ends_at": "2020-01-30T16:04:00",
      "ready_pins": null
    },
    "id": "11982e87-9309-4790-9211-82396189061c",
    "links": {
      "self": "http://api.remotelock.dev/access_persons/11982e87-9309-4790-9211-82396189061c"
    },
    "meta": {
      "restricted_attributes": [
        "url_credential"
      ],
      "restricted_actions": [
        "update"
      ]
    }
  }
}

Update an access user

Request

Endpoint

PUT /access_persons/:id

PUT /access_persons/b3adcabf-7a89-44d0-8424-3271eed1a589

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": "agustina.okon@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-06-03T16:08:38Z",
      "updated_at": "2024-06-03T16:08:38Z",
      "pin": "2345",
      "card_number": null,
      "schlage_engage_smart_card_id": null,
      "schlage_engage_smart_card_badge": null,
      "url_credential": null
    },
    "id": "b3adcabf-7a89-44d0-8424-3271eed1a589",
    "links": {
      "self": "http://api.remotelock.dev/access_persons/b3adcabf-7a89-44d0-8424-3271eed1a589"
    },
    "meta": {
      "restricted_attributes": [
        "url_credential"
      ]
    }
  }
}

Update an access guest

Request

Endpoint

PUT /access_persons/:id

PUT /access_persons/4b333505-402a-4052-8ddd-a36324754a41

Parameters

{
  "attributes": {
    "name": "Cleaning Crew",
    "ends_at": "2024-06-17T00: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": "carisa_hyatt@example.net",
      "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-06-03T16:08:38Z",
      "updated_at": "2024-06-03T16:08:38Z",
      "pin": "1221",
      "card_number": null,
      "schlage_engage_smart_card_id": null,
      "schlage_engage_smart_card_badge": null,
      "url_credential": null,
      "starts_at": "2024-06-07T00:00:00",
      "ends_at": "2024-06-17T00:00:00",
      "ready_pins": null
    },
    "id": "4b333505-402a-4052-8ddd-a36324754a41",
    "links": {
      "self": "http://api.remotelock.dev/access_persons/4b333505-402a-4052-8ddd-a36324754a41"
    },
    "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/febf770f-a1cb-4b23-b6e3-fad3010f9ca9/deactivate

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "access_user",
    "attributes": {
      "name": "Gov. Susanna Jerde",
      "email": "roxann.goyette@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-06-03T16:08:38Z",
      "updated_at": "2024-06-03T16:08:38Z",
      "pin": "1222",
      "card_number": null,
      "schlage_engage_smart_card_id": null,
      "schlage_engage_smart_card_badge": null,
      "url_credential": null
    },
    "id": "febf770f-a1cb-4b23-b6e3-fad3010f9ca9",
    "links": {
      "self": "http://api.remotelock.dev/access_persons/febf770f-a1cb-4b23-b6e3-fad3010f9ca9"
    },
    "meta": {
      "restricted_attributes": [
        "url_credential"
      ],
      "restricted_actions": [
        "update"
      ]
    }
  }
}

Delete an access person

Request

Endpoint

DELETE /access_persons/:id

DELETE /access_persons/b9b37569-ca11-4432-9af6-393aa64495c8

Parameters

None.

Response


204 No Content

Schedule sending access instructions email in days

Request

Endpoint

POST /access_persons/:id/email/notify

POST /access_persons/ed68c893-7d0f-4a88-99c1-2b2af09b201a/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/3012966b-6794-40ae-a110-4e90821a9285/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-06-03T16:08:41Z",
        "updated_at": "2024-06-03T16:08:41Z",
        "access_person_id": "3012966b-6794-40ae-a110-4e90821a9285",
        "access_person_type": "access_user",
        "accessible_id": "482992e9-6f55-4328-9fde-0c339bc48d80"
      },
      "id": "5d4658f0-da70-496f-aea1-de3cd2fad073",
      "links": {
        "self": "http://api.remotelock.dev/access_persons/3012966b-6794-40ae-a110-4e90821a9285/accesses/5d4658f0-da70-496f-aea1-de3cd2fad073",
        "access_person": "http://api.remotelock.dev/access_persons/3012966b-6794-40ae-a110-4e90821a9285",
        "accessible": "http://api.remotelock.dev/devices/482992e9-6f55-4328-9fde-0c339bc48d80"
      }
    },
    {
      "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-06-03T16:08:41Z",
        "updated_at": "2024-06-03T16:08:41Z",
        "access_person_id": "3012966b-6794-40ae-a110-4e90821a9285",
        "access_person_type": "access_user",
        "accessible_id": "820011fe-8956-4ca2-88f5-b5eb31257c5b"
      },
      "id": "239d72d8-c11c-4979-95b2-63c6e227e145",
      "links": {
        "self": "http://api.remotelock.dev/access_persons/3012966b-6794-40ae-a110-4e90821a9285/accesses/239d72d8-c11c-4979-95b2-63c6e227e145",
        "access_person": "http://api.remotelock.dev/access_persons/3012966b-6794-40ae-a110-4e90821a9285",
        "accessible": "http://api.remotelock.dev/devices/820011fe-8956-4ca2-88f5-b5eb31257c5b"
      }
    },
    {
      "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-06-03T16:08:41Z",
        "updated_at": "2024-06-03T16:08:41Z",
        "access_person_id": "3012966b-6794-40ae-a110-4e90821a9285",
        "access_person_type": "access_user",
        "accessible_id": "93195226-6d79-496e-bc2d-f848a29ad8d0"
      },
      "id": "9778a4a7-f712-49ec-bdcf-e4e092586875",
      "links": {
        "self": "http://api.remotelock.dev/access_persons/3012966b-6794-40ae-a110-4e90821a9285/accesses/9778a4a7-f712-49ec-bdcf-e4e092586875",
        "access_person": "http://api.remotelock.dev/access_persons/3012966b-6794-40ae-a110-4e90821a9285",
        "accessible": "http://api.remotelock.dev/groups/93195226-6d79-496e-bc2d-f848a29ad8d0"
      }
    },
    {
      "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-06-03T16:08:41Z",
        "updated_at": "2024-06-03T16:08:41Z",
        "access_person_id": "3012966b-6794-40ae-a110-4e90821a9285",
        "access_person_type": "access_user",
        "accessible_id": "6a3805d9-b2f7-4631-9054-d4adbad8d42d"
      },
      "id": "d88ccb7e-4c51-4c1c-99be-97975b462b14",
      "links": {
        "self": "http://api.remotelock.dev/access_persons/3012966b-6794-40ae-a110-4e90821a9285/accesses/d88ccb7e-4c51-4c1c-99be-97975b462b14",
        "access_person": "http://api.remotelock.dev/access_persons/3012966b-6794-40ae-a110-4e90821a9285",
        "accessible": "http://api.remotelock.dev/locations/6a3805d9-b2f7-4631-9054-d4adbad8d42d"
      }
    }
  ],
  "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/4ec96886-dea8-41df-af7a-e93e0286e388/accesses/2497e287-946b-49e0-a31f-fee808941fd8

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-06-03T16:08:42Z",
      "updated_at": "2024-06-03T16:08:42Z",
      "access_person_id": "4ec96886-dea8-41df-af7a-e93e0286e388",
      "access_person_type": "access_user",
      "accessible_id": "9f2c2a2e-5d8a-4ee7-a576-c2bad5078b72"
    },
    "id": "2497e287-946b-49e0-a31f-fee808941fd8",
    "links": {
      "self": "http://api.remotelock.dev/access_persons/4ec96886-dea8-41df-af7a-e93e0286e388/accesses/2497e287-946b-49e0-a31f-fee808941fd8",
      "access_person": "http://api.remotelock.dev/access_persons/4ec96886-dea8-41df-af7a-e93e0286e388",
      "accessible": "http://api.remotelock.dev/devices/9f2c2a2e-5d8a-4ee7-a576-c2bad5078b72"
    }
  }
}

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/5dba176b-ea4a-4568-98f8-dfcd57e1e124/accesses

Parameters

{
  "attributes": {
    "accessible_id": "ad234ef0-0e11-4257-aff6-cf4feaf50dc6",
    "accessible_type": "lock",
    "guest_start_time": "14:00",
    "access_schedule_id": "f7b5a6f5-1d24-4019-b898-65206d3f60dc"
  }
}
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-06-03T16:08:45Z",
      "updated_at": "2024-06-03T16:08:45Z",
      "access_schedule_id": "f7b5a6f5-1d24-4019-b898-65206d3f60dc",
      "access_person_id": "5dba176b-ea4a-4568-98f8-dfcd57e1e124",
      "access_person_type": "access_guest",
      "accessible_id": "ad234ef0-0e11-4257-aff6-cf4feaf50dc6"
    },
    "id": "a7a5d040-7653-4776-b525-58a942c4e36f",
    "links": {
      "self": "http://api.remotelock.dev/access_persons/5dba176b-ea4a-4568-98f8-dfcd57e1e124/accesses/a7a5d040-7653-4776-b525-58a942c4e36f",
      "access_schedule": "http://api.remotelock.dev/schedules/f7b5a6f5-1d24-4019-b898-65206d3f60dc",
      "access_person": "http://api.remotelock.dev/access_persons/5dba176b-ea4a-4568-98f8-dfcd57e1e124",
      "accessible": "http://api.remotelock.dev/devices/ad234ef0-0e11-4257-aff6-cf4feaf50dc6"
    }
  }
}

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/76f4ae01-3a07-4377-9b79-f30891af0eae/accesses/9a68a77f-ecc1-4313-8096-12cd30ae130d

Parameters

{
  "attributes": {
    "access_schedule_id": "fb285e25-a21a-4089-b90b-a5812a76a07d"
  }
}
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-06-03T16:08:46Z",
      "updated_at": "2024-06-03T16:08:46Z",
      "access_schedule_id": "fb285e25-a21a-4089-b90b-a5812a76a07d",
      "access_person_id": "76f4ae01-3a07-4377-9b79-f30891af0eae",
      "access_person_type": "access_user",
      "accessible_id": "b8e02397-4c89-4f52-af9e-735032c23abd"
    },
    "id": "9a68a77f-ecc1-4313-8096-12cd30ae130d",
    "links": {
      "self": "http://api.remotelock.dev/access_persons/76f4ae01-3a07-4377-9b79-f30891af0eae/accesses/9a68a77f-ecc1-4313-8096-12cd30ae130d",
      "access_schedule": "http://api.remotelock.dev/schedules/fb285e25-a21a-4089-b90b-a5812a76a07d",
      "access_person": "http://api.remotelock.dev/access_persons/76f4ae01-3a07-4377-9b79-f30891af0eae",
      "accessible": "http://api.remotelock.dev/devices/b8e02397-4c89-4f52-af9e-735032c23abd"
    }
  }
}

Revoke an access person's access

Request

Endpoint

DELETE /access_persons/:access_person_id/accesses/:id

DELETE /access_persons/1a618dfb-fdfa-44d7-b905-a523d4572e7f/accesses/a044e2ed-89ad-44ed-9ec4-e1c09151511c

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": "Isaac Green",
      "created_at": "2024-06-03T16:08:49Z",
      "updated_at": "2024-06-03T16:08:49Z",
      "default_guest_start_time": "16:00:00",
      "default_guest_end_time": "11:00:00",
      "rental_guest_time_override": false,
      "primary_owner_id": "c4d7eade-cc2d-4717-8307-deafbae89c40",
      "owner_role_id": "26341f29-dda3-4db2-86c4-a9e87454e56b"
    },
    "id": "1cbb7c57-3309-4b3f-8ba5-64bdda77239a",
    "links": {
      "self": "http://api.remotelock.dev/account",
      "primary_owner": "http://api.remotelock.dev/user",
      "owner_role": "http://api.remotelock.dev/roles/26341f29-dda3-4db2-86c4-a9e87454e56b"
    }
  }
}

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": "Vanetta Hauck",
      "created_at": "2024-06-03T16:08:50Z",
      "updated_at": "2024-06-03T16:08:51Z",
      "default_guest_start_time": "15:30:00",
      "default_guest_end_time": "02:15:00",
      "rental_guest_time_override": false,
      "primary_owner_id": "3dcc277a-741f-4c33-b2b1-55f5d73b8c88",
      "owner_role_id": "aa7dd331-a9df-4bf4-a6b5-a5d33e15c332"
    },
    "id": "dd5a16fc-8292-4065-ba62-acb2149029a8",
    "links": {
      "self": "http://api.remotelock.dev/account",
      "primary_owner": "http://api.remotelock.dev/user",
      "owner_role": "http://api.remotelock.dev/roles/aa7dd331-a9df-4bf4-a6b5-a5d33e15c332"
    }
  }
}

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": "f8de479b-2ded-4483-96df-edb32764a1af"
      },
      "id": "f8de479b-2ded-4483-96df-edb32764a1af",
      "links": {
        "self": "http://api.remotelock.dev/brands/f8de479b-2ded-4483-96df-edb32764a1af"
      }
    },
    {
      "type": "brand",
      "attributes": {
        "name": "Brand 1",
        "vendor": "ayla",
        "uuid": "b2bae274-71b7-448a-bc84-d617b4057cbc"
      },
      "id": "b2bae274-71b7-448a-bc84-d617b4057cbc",
      "links": {
        "self": "http://api.remotelock.dev/brands/b2bae274-71b7-448a-bc84-d617b4057cbc"
      }
    },
    {
      "type": "brand",
      "attributes": {
        "name": "Brand 1",
        "vendor": "ayla",
        "uuid": "297cf1da-7c06-4e02-a4fe-3bf1b849b6a2"
      },
      "id": "297cf1da-7c06-4e02-a4fe-3bf1b849b6a2",
      "links": {
        "self": "http://api.remotelock.dev/brands/297cf1da-7c06-4e02-a4fe-3bf1b849b6a2"
      }
    }
  ],
  "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/3a2ba686-f6bd-4691-9e21-812688befed2/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
          ],
          "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,
          "wake_wifi": [
            "user_action",
            "heartbeat_interval",
            "user_action_except_manual"
          ],
          "wavelynx_mobile_credential": false
        },
        "vendor": "ayla"
      },
      "id": "597a003d-e874-4932-b221-0234e1095a51",
      "links": {
        "self": "http://api.remotelock.dev/models/597a003d-e874-4932-b221-0234e1095a51"
      }
    },
    {
      "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
          ],
          "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,
          "wake_wifi": [
            "user_action",
            "heartbeat_interval"
          ],
          "wavelynx_mobile_credential": false
        },
        "vendor": "ayla"
      },
      "id": "679ba7a7-d94c-456e-8fda-2012756dbee4",
      "links": {
        "self": "http://api.remotelock.dev/models/679ba7a7-d94c-456e-8fda-2012756dbee4"
      }
    }
  ],
  "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/e7fabf08-b189-4aab-9808-fd152c340f09

Parameters

{
  "attributes": {
    "name": "East door",
    "location_id": "0afbf274-2b2a-49e0-a12b-e2378c0ca866",
    "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-06-03T16:10:23Z",
      "power_level": 100,
      "serial_number": "c1335ca3cd8dde408bfda781565d0dbe",
      "signal_quality": 4,
      "state": "LOCKED",
      "pending_physical_sync": false,
      "model_number": "RubberLock",
      "created_at": "2024-06-03T16:10:23Z",
      "updated_at": "2024-06-03T16:10:23Z",
      "location_id": "0afbf274-2b2a-49e0-a12b-e2378c0ca866",
      "model_id": "5257c943-2289-4d28-baba-65be730fbe82"
    },
    "id": "e7fabf08-b189-4aab-9808-fd152c340f09",
    "links": {
      "self": "http://api.remotelock.dev/devices/e7fabf08-b189-4aab-9808-fd152c340f09",
      "location": "http://api.remotelock.dev/locations/0afbf274-2b2a-49e0-a12b-e2378c0ca866",
      "model": "http://api.remotelock.dev/models/5257c943-2289-4d28-baba-65be730fbe82"
    }
  }
}

Lock a Connector Lock

Request

Endpoint

PUT /devices/:id/lock

PUT /devices/ef1fa00e-46d5-4061-967a-9d6bf1883425/lock

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "connector_lock",
    "attributes": {
      "connectivity_enabled": true,
      "name": "sunroom",
      "alive": true,
      "connected": false,
      "connected_at": "2024-06-03T16:10:23Z",
      "power_level": 100,
      "serial_number": "1db3d5d715e87461f15d74e57140339a",
      "signal_quality": 4,
      "state": "LOCKED",
      "pending_physical_sync": false,
      "model_number": "RubberLock",
      "created_at": "2024-06-03T16:10:23Z",
      "updated_at": "2024-06-03T16:10:23Z",
      "location_id": "f3f9c43f-cbd0-4297-b46d-614fef0efe04",
      "model_id": "23893ff3-813d-4f30-8c2d-433fd0fe441f"
    },
    "id": "ef1fa00e-46d5-4061-967a-9d6bf1883425",
    "links": {
      "self": "http://api.remotelock.dev/devices/ef1fa00e-46d5-4061-967a-9d6bf1883425",
      "location": "http://api.remotelock.dev/locations/f3f9c43f-cbd0-4297-b46d-614fef0efe04",
      "model": "http://api.remotelock.dev/models/23893ff3-813d-4f30-8c2d-433fd0fe441f"
    }
  }
}

Unlock a Connector Lock

Request

Endpoint

PUT /devices/:id/unlock

PUT /devices/e60b5ea7-5b25-4703-a887-64c0c57247b4/unlock

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "connector_lock",
    "attributes": {
      "connectivity_enabled": true,
      "name": "living room",
      "alive": true,
      "connected": false,
      "connected_at": "2024-06-03T16:10:24Z",
      "power_level": 100,
      "serial_number": "c3d2a0523e26f1f72e4e426192356ca9",
      "signal_quality": 4,
      "state": "LOCKED",
      "pending_physical_sync": false,
      "model_number": "RubberLock",
      "created_at": "2024-06-03T16:10:24Z",
      "updated_at": "2024-06-03T16:10:24Z",
      "location_id": "ed485c28-339b-4f14-a0aa-e02b2011ec81",
      "model_id": "f1f1d8b3-0927-4e30-b5ce-d145de40fe55"
    },
    "id": "e60b5ea7-5b25-4703-a887-64c0c57247b4",
    "links": {
      "self": "http://api.remotelock.dev/devices/e60b5ea7-5b25-4703-a887-64c0c57247b4",
      "location": "http://api.remotelock.dev/locations/ed485c28-339b-4f14-a0aa-e02b2011ec81",
      "model": "http://api.remotelock.dev/models/f1f1d8b3-0927-4e30-b5ce-d145de40fe55"
    }
  }
}

Access person accesses of a Connector Lock

Request

Endpoint

GET /devices/:id/access_person_accesses

GET /devices/34335e94-27bd-4ced-ab60-7a390657b9ea/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-06-03T16:10:26Z",
        "updated_at": "2024-06-03T16:10:26Z",
        "access_person_id": "8bc967dd-599c-4de5-87ff-9eee78a5adf8",
        "access_person_type": "access_user",
        "accessible_id": "a3d3b07d-227e-4310-8703-e5c61432a746"
      },
      "id": "a175b756-eac6-4e3e-a11b-aedebbf38097",
      "links": {
        "self": "http://api.remotelock.dev/access_persons/8bc967dd-599c-4de5-87ff-9eee78a5adf8/accesses/a175b756-eac6-4e3e-a11b-aedebbf38097",
        "access_person": "http://api.remotelock.dev/access_persons/8bc967dd-599c-4de5-87ff-9eee78a5adf8",
        "accessible": "http://api.remotelock.dev/locations/a3d3b07d-227e-4310-8703-e5c61432a746"
      }
    },
    {
      "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-06-03T16:10:26Z",
        "updated_at": "2024-06-03T16:10:26Z",
        "access_person_id": "1d431dae-32ca-429c-a2ba-bbf9e5db4815",
        "access_person_type": "access_user",
        "accessible_id": "34335e94-27bd-4ced-ab60-7a390657b9ea"
      },
      "id": "fa912b10-9576-4cda-8ebe-4bece79eaf70",
      "links": {
        "self": "http://api.remotelock.dev/access_persons/1d431dae-32ca-429c-a2ba-bbf9e5db4815/accesses/fa912b10-9576-4cda-8ebe-4bece79eaf70",
        "access_person": "http://api.remotelock.dev/access_persons/1d431dae-32ca-429c-a2ba-bbf9e5db4815",
        "accessible": "http://api.remotelock.dev/devices/34335e94-27bd-4ced-ab60-7a390657b9ea"
      }
    }
  ],
  "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/78a5200c-3c18-4ec8-8b64-5334e307eadb/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/94a74f0e-7996-4e8d-b432-0881ddde00cc/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": "02838bbb-54c3-4d6c-9665-453aacf8e597",
    "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-06-03T16:10:32Z",
      "serial_number": "AC000W000213429",
      "connectivity_enabled": true,
      "algorithmic_pin_enabled": true,
      "auto_lock": true,
      "auto_lock_timeout": 20,
      "created_at": "2024-06-03T16:10:32Z",
      "default_guest_end_time": null,
      "default_guest_start_time": null,
      "local_pins": [
        "1234"
      ],
      "mac_address": "87:e2:f3:65:a3:62",
      "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-06-03T16:10:32Z",
      "wake_wifi": "user_action",
      "wifi_enabled": true,
      "model_number": "LS-5i",
      "model_id": "ff85a6ae-5199-453f-b859-564c17b1a312",
      "location_id": "02838bbb-54c3-4d6c-9665-453aacf8e597"
    },
    "id": "b5406d8c-96c3-4ee1-9a1b-6d4aae55084c",
    "links": {
      "self": "http://api.remotelock.dev/devices/b5406d8c-96c3-4ee1-9a1b-6d4aae55084c",
      "model": "http://api.remotelock.dev/models/ff85a6ae-5199-453f-b859-564c17b1a312",
      "location": "http://api.remotelock.dev/locations/02838bbb-54c3-4d6c-9665-453aacf8e597"
    }
  }
}

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/20d6175b-665d-4e3e-8711-9a15e6851baf

Parameters

{
  "attributes": {
    "name": "Backdoor Lock",
    "location_id": "b8c12871-9af1-4c7e-8cfb-63b70319a4b2",
    "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": 1,
      "connected": true,
      "alive": true,
      "power_source": "alkaline_battery",
      "connected_at": "2024-06-03T16:06:35Z",
      "serial_number": "AC000W004780618",
      "connectivity_enabled": true,
      "algorithmic_pin_enabled": true,
      "auto_lock": true,
      "auto_lock_timeout": 20,
      "created_at": "2024-06-03T16:10:35Z",
      "default_guest_end_time": null,
      "default_guest_start_time": "11:15:00",
      "local_pins": [
        "1234"
      ],
      "mac_address": "2b:64:1d:7d:3a:76",
      "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-06-03T16:10:35Z",
      "wake_wifi": "user_action",
      "wifi_enabled": true,
      "model_number": "OEMAIN",
      "model_id": "fe86b534-a9fb-4022-876e-f920e4a56a4e",
      "location_id": "b8c12871-9af1-4c7e-8cfb-63b70319a4b2"
    },
    "id": "20d6175b-665d-4e3e-8711-9a15e6851baf",
    "links": {
      "self": "http://api.remotelock.dev/devices/20d6175b-665d-4e3e-8711-9a15e6851baf",
      "model": "http://api.remotelock.dev/models/fe86b534-a9fb-4022-876e-f920e4a56a4e",
      "location": "http://api.remotelock.dev/locations/b8c12871-9af1-4c7e-8cfb-63b70319a4b2"
    }
  }
}

Lock a lock

Request

Endpoint

PUT /devices/:id/lock

PUT /devices/652fbcf6-87d9-4023-ada4-985bda0af027/lock

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "lock",
    "attributes": {
      "name": "OEMAIN - AC000W006556042",
      "heartbeat_interval": 0,
      "wifi_level": 0,
      "signal_quality": 0,
      "connected": false,
      "alive": false,
      "power_source": "hardwire",
      "connected_at": null,
      "serial_number": "AC000W006556042",
      "connectivity_enabled": false,
      "algorithmic_pin_enabled": false,
      "auto_lock": true,
      "auto_lock_timeout": 0,
      "created_at": "2024-06-03T16:10:35Z",
      "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-06-03T16:10:35Z",
      "wake_wifi": "user_action",
      "wifi_enabled": false,
      "model_number": "OEMAIN",
      "model_id": "f39f87d1-a3be-44c5-b50f-0310556d9f3e",
      "location_id": "05935135-7ab5-456c-9aca-765e00bf04c4"
    },
    "id": "652fbcf6-87d9-4023-ada4-985bda0af027",
    "links": {
      "self": "http://api.remotelock.dev/devices/652fbcf6-87d9-4023-ada4-985bda0af027",
      "model": "http://api.remotelock.dev/models/f39f87d1-a3be-44c5-b50f-0310556d9f3e",
      "location": "http://api.remotelock.dev/locations/05935135-7ab5-456c-9aca-765e00bf04c4"
    }
  }
}

Unlock a lock

Request

Endpoint

PUT /devices/:id/unlock

PUT /devices/f3c3b76d-a42f-4e6f-8f90-74c1ac2e5d99/unlock

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "lock",
    "attributes": {
      "name": "OEMAIN - AC000W003835185",
      "heartbeat_interval": 0,
      "wifi_level": 0,
      "signal_quality": 0,
      "connected": false,
      "alive": false,
      "power_source": "hardwire",
      "connected_at": null,
      "serial_number": "AC000W003835185",
      "connectivity_enabled": false,
      "algorithmic_pin_enabled": false,
      "auto_lock": true,
      "auto_lock_timeout": 0,
      "created_at": "2024-06-03T16:10:36Z",
      "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-06-03T16:10:36Z",
      "wake_wifi": "user_action",
      "wifi_enabled": false,
      "model_number": "OEMAIN",
      "model_id": "c66cd1fd-fdd1-417b-90a4-5c3da5a5e9cb",
      "location_id": "aababf9e-0f88-4fe1-9085-521c442ffea1"
    },
    "id": "f3c3b76d-a42f-4e6f-8f90-74c1ac2e5d99",
    "links": {
      "self": "http://api.remotelock.dev/devices/f3c3b76d-a42f-4e6f-8f90-74c1ac2e5d99",
      "model": "http://api.remotelock.dev/models/c66cd1fd-fdd1-417b-90a4-5c3da5a5e9cb",
      "location": "http://api.remotelock.dev/locations/aababf9e-0f88-4fe1-9085-521c442ffea1"
    }
  }
}

Lock a device for access person

Request

Endpoint

PUT /devices/:id/lock/:access_person_id

PUT /devices/c1b68411-0734-4b8f-a3b7-f6802261df3d/lock/ac84485b-a996-441d-8579-5d7cea3b2f1f

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "lock",
    "attributes": {
      "name": "OEMAIN - AC000W009605701",
      "heartbeat_interval": 1200,
      "wifi_level": 0,
      "signal_quality": 4,
      "connected": false,
      "alive": true,
      "power_source": "alkaline_battery",
      "connected_at": "2024-06-03T16:05:37Z",
      "serial_number": "AC000W009605701",
      "connectivity_enabled": true,
      "algorithmic_pin_enabled": true,
      "auto_lock": true,
      "auto_lock_timeout": 20,
      "created_at": "2024-06-03T16:10:36Z",
      "default_guest_end_time": null,
      "default_guest_start_time": null,
      "local_pins": [
        "1234"
      ],
      "mac_address": "7f:2d:08:08:62:c1",
      "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-06-03T16:10:36Z",
      "wake_wifi": "user_action",
      "wifi_enabled": true,
      "model_number": "OEMAIN",
      "model_id": "c4cbfef2-e0b0-46c8-b134-d02a8672faf7",
      "location_id": "4eaeb5ea-db77-4390-b1c6-2f1281df19f0"
    },
    "id": "c1b68411-0734-4b8f-a3b7-f6802261df3d",
    "links": {
      "self": "http://api.remotelock.dev/devices/c1b68411-0734-4b8f-a3b7-f6802261df3d",
      "model": "http://api.remotelock.dev/models/c4cbfef2-e0b0-46c8-b134-d02a8672faf7",
      "location": "http://api.remotelock.dev/locations/4eaeb5ea-db77-4390-b1c6-2f1281df19f0"
    }
  }
}

Unlock a device for access person

Request

Endpoint

PUT /devices/:id/unlock/:access_person_id

PUT /devices/89f229aa-ec09-4beb-9478-08efeece0032/unlock/bd257b6b-f9c8-4c2c-88e9-8e797c0cc3f6

Parameters

{
  "pin": "1111"
}
Name Description
pin Required when require_pin_verification is true

Response


200 OK
{
  "data": {
    "type": "lock",
    "attributes": {
      "name": "OEMAIN - AC000W001519655",
      "heartbeat_interval": 1200,
      "wifi_level": 0,
      "signal_quality": 3,
      "connected": false,
      "alive": true,
      "power_source": "alkaline_battery",
      "connected_at": "2024-06-03T16:10:39Z",
      "serial_number": "AC000W001519655",
      "connectivity_enabled": true,
      "algorithmic_pin_enabled": true,
      "auto_lock": true,
      "auto_lock_timeout": 20,
      "created_at": "2024-06-03T16:10:38Z",
      "default_guest_end_time": null,
      "default_guest_start_time": null,
      "local_pins": [
        "1234"
      ],
      "mac_address": "eb:7d:e7:f4:03:e5",
      "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": "unlocked",
      "updated_at": "2024-06-03T16:10:38Z",
      "wake_wifi": "user_action",
      "wifi_enabled": true,
      "model_number": "OEMAIN",
      "model_id": "a53fa291-3683-46e8-99e9-f21d448d4a8d",
      "location_id": "e24ae62d-1567-4e71-a642-67f82e95acb5"
    },
    "id": "89f229aa-ec09-4beb-9478-08efeece0032",
    "links": {
      "self": "http://api.remotelock.dev/devices/89f229aa-ec09-4beb-9478-08efeece0032",
      "model": "http://api.remotelock.dev/models/a53fa291-3683-46e8-99e9-f21d448d4a8d",
      "location": "http://api.remotelock.dev/locations/e24ae62d-1567-4e71-a642-67f82e95acb5"
    }
  }
}

Access person accesses of a lock

Request

Endpoint

GET /devices/:id/access_person_accesses

GET /devices/a4dedde3-a83c-4072-8c24-e29f42923514/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-06-03T16:10:40Z",
        "updated_at": "2024-06-03T16:10:40Z",
        "access_person_id": "b9a03000-9c7f-464c-8ce8-6b40fa8a3faa",
        "access_person_type": "access_user",
        "accessible_id": "5ecfa039-56ba-4c4c-9db6-e768d1c2c7bf"
      },
      "id": "d37f6979-3a9c-4c2d-a9be-455d4be01bb0",
      "links": {
        "self": "http://api.remotelock.dev/access_persons/b9a03000-9c7f-464c-8ce8-6b40fa8a3faa/accesses/d37f6979-3a9c-4c2d-a9be-455d4be01bb0",
        "access_person": "http://api.remotelock.dev/access_persons/b9a03000-9c7f-464c-8ce8-6b40fa8a3faa",
        "accessible": "http://api.remotelock.dev/locations/5ecfa039-56ba-4c4c-9db6-e768d1c2c7bf"
      }
    },
    {
      "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-06-03T16:10:40Z",
        "updated_at": "2024-06-03T16:10:40Z",
        "access_person_id": "730d678d-f161-4bbd-bc7b-d00528b3aad3",
        "access_person_type": "access_user",
        "accessible_id": "a4dedde3-a83c-4072-8c24-e29f42923514"
      },
      "id": "3732dc25-0739-4d74-9072-4c4e940be8ab",
      "links": {
        "self": "http://api.remotelock.dev/access_persons/730d678d-f161-4bbd-bc7b-d00528b3aad3/accesses/3732dc25-0739-4d74-9072-4c4e940be8ab",
        "access_person": "http://api.remotelock.dev/access_persons/730d678d-f161-4bbd-bc7b-d00528b3aad3",
        "accessible": "http://api.remotelock.dev/devices/a4dedde3-a83c-4072-8c24-e29f42923514"
      }
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 25,
    "total_count": 2,
    "total_pages": 1
  }
}

Update a Schlage Home lock

Request

Endpoint

PUT /devices/:id

PUT /devices/3204dd4d-8c27-4ef8-9108-f961f009e71d

Parameters

{
  "attributes": {
    "name": "East door",
    "location_id": "45aa7b4b-e6ac-4aba-910d-a98cc29f4ef4"
  }
}
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-06-03T16:07:43Z",
      "power_level": 90,
      "integration_status": "connected",
      "integration_id": "a1182044-0ccd-43c2-bd9e-cafbfb22e446",
      "model_number": "SchlageEncode",
      "created_at": "2024-06-03T16:10:43Z",
      "updated_at": "2024-06-03T16:10:43Z",
      "serial_number": "3100003251782951",
      "location_id": "45aa7b4b-e6ac-4aba-910d-a98cc29f4ef4",
      "model_id": "d9552501-dc87-4307-8647-03d1e82d4cc2"
    },
    "id": "3204dd4d-8c27-4ef8-9108-f961f009e71d",
    "links": {
      "self": "http://api.remotelock.dev/devices/3204dd4d-8c27-4ef8-9108-f961f009e71d",
      "location": "http://api.remotelock.dev/locations/45aa7b4b-e6ac-4aba-910d-a98cc29f4ef4",
      "model": "http://api.remotelock.dev/models/d9552501-dc87-4307-8647-03d1e82d4cc2"
    }
  }
}

Lock a Schlage Home lock

Request

Endpoint

PUT /devices/:id/lock

PUT /devices/0b4c4598-d537-46c4-9294-cc4cec2d58fb/lock

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "schlage_home_lock",
    "attributes": {
      "connectivity_enabled": true,
      "name": "living room",
      "state": "locked",
      "alive": true,
      "connected": true,
      "connected_at": "2024-06-03T16:07:43Z",
      "power_level": 90,
      "integration_status": "connected",
      "integration_id": "a8b01b61-c063-4940-bad1-3236a00bb803",
      "model_number": "SchlageEncode",
      "created_at": "2024-06-03T16:10:43Z",
      "updated_at": "2024-06-03T16:10:43Z",
      "serial_number": "3100003251782951",
      "location_id": "6af3838d-6809-4b60-900f-1fd843d3855f",
      "model_id": "e59f0e2c-aa87-4100-9670-d2f861f14e28"
    },
    "id": "0b4c4598-d537-46c4-9294-cc4cec2d58fb",
    "links": {
      "self": "http://api.remotelock.dev/devices/0b4c4598-d537-46c4-9294-cc4cec2d58fb",
      "location": "http://api.remotelock.dev/locations/6af3838d-6809-4b60-900f-1fd843d3855f",
      "model": "http://api.remotelock.dev/models/e59f0e2c-aa87-4100-9670-d2f861f14e28"
    }
  }
}

Unlock a Schlage Home lock

Request

Endpoint

PUT /devices/:id/unlock

PUT /devices/2770f85b-b8b6-4f2b-bc34-1689f8a2a081/unlock

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "schlage_home_lock",
    "attributes": {
      "connectivity_enabled": true,
      "name": "cellar",
      "state": "locked",
      "alive": true,
      "connected": true,
      "connected_at": "2024-06-03T16:00:44Z",
      "power_level": 90,
      "integration_status": "connected",
      "integration_id": "59037413-30d8-4de5-ab6f-0908d17c97ee",
      "model_number": "SchlageEncode",
      "created_at": "2024-06-03T16:10:44Z",
      "updated_at": "2024-06-03T16:10:44Z",
      "serial_number": "3100003251782951",
      "location_id": "46e1d314-dc25-4342-bea5-e2e8afaec98d",
      "model_id": "caf45c05-3d80-43fa-9767-58dfad30236a"
    },
    "id": "2770f85b-b8b6-4f2b-bc34-1689f8a2a081",
    "links": {
      "self": "http://api.remotelock.dev/devices/2770f85b-b8b6-4f2b-bc34-1689f8a2a081",
      "location": "http://api.remotelock.dev/locations/46e1d314-dc25-4342-bea5-e2e8afaec98d",
      "model": "http://api.remotelock.dev/models/caf45c05-3d80-43fa-9767-58dfad30236a"
    }
  }
}

Access person accesses of a Schlage Home lock

Request

Endpoint

GET /devices/:id/access_person_accesses

GET /devices/1bc59424-a044-4287-b55d-803dce3b0fdb/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-06-03T16:10:44Z",
        "updated_at": "2024-06-03T16:10:44Z",
        "access_person_id": "0fc1373d-7202-47cc-98ff-8e567ab1f51a",
        "access_person_type": "access_user",
        "accessible_id": "d7c637f5-01df-47e5-b8c7-23b0cac7b137"
      },
      "id": "addb72da-151b-433a-90a4-c4be0ebf5581",
      "links": {
        "self": "http://api.remotelock.dev/access_persons/0fc1373d-7202-47cc-98ff-8e567ab1f51a/accesses/addb72da-151b-433a-90a4-c4be0ebf5581",
        "access_person": "http://api.remotelock.dev/access_persons/0fc1373d-7202-47cc-98ff-8e567ab1f51a",
        "accessible": "http://api.remotelock.dev/locations/d7c637f5-01df-47e5-b8c7-23b0cac7b137"
      }
    },
    {
      "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-06-03T16:10:44Z",
        "updated_at": "2024-06-03T16:10:44Z",
        "access_person_id": "098065f2-46ef-4bbe-a72a-63efdca9e03d",
        "access_person_type": "access_user",
        "accessible_id": "1bc59424-a044-4287-b55d-803dce3b0fdb"
      },
      "id": "b1d5e928-39ca-4871-9da0-51321afbc698",
      "links": {
        "self": "http://api.remotelock.dev/access_persons/098065f2-46ef-4bbe-a72a-63efdca9e03d/accesses/b1d5e928-39ca-4871-9da0-51321afbc698",
        "access_person": "http://api.remotelock.dev/access_persons/098065f2-46ef-4bbe-a72a-63efdca9e03d",
        "accessible": "http://api.remotelock.dev/devices/1bc59424-a044-4287-b55d-803dce3b0fdb"
      }
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 25,
    "total_count": 2,
    "total_pages": 1
  }
}

Update a ZWave lock

Request

Endpoint

PUT /devices/:id

PUT /devices/271d85d6-03a4-41d3-9ab7-25dc8db191b3

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-06-03T16:10:45Z",
      "updated_at": "2024-06-03T16:10:45Z",
      "location_id": "7c5a33b9-5d15-4409-b9f5-c4b55960bbd0",
      "model_id": "86bb8086-cd29-48b6-bd18-b30dcf32130e"
    },
    "id": "271d85d6-03a4-41d3-9ab7-25dc8db191b3",
    "links": {
      "self": "http://api.remotelock.dev/devices/271d85d6-03a4-41d3-9ab7-25dc8db191b3",
      "location": "http://api.remotelock.dev/locations/7c5a33b9-5d15-4409-b9f5-c4b55960bbd0",
      "model": "http://api.remotelock.dev/models/86bb8086-cd29-48b6-bd18-b30dcf32130e"
    }
  }
}

Lock a ZWave lock

Request

Endpoint

PUT /devices/:id/lock

PUT /devices/876a431c-9eed-406e-ae51-9cd0fa8851c5/lock

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "zwave_lock",
    "attributes": {
      "connectivity_enabled": true,
      "name": "CWE",
      "state": "locked",
      "connected": false,
      "power_level": 0,
      "protocol": "",
      "model_number": "ZWaveLock",
      "created_at": "2024-06-03T16:10:45Z",
      "updated_at": "2024-06-03T16:10:45Z",
      "location_id": "b062c23d-b419-410b-a0ef-89e12eee20f6",
      "model_id": "43216767-f8d6-4a54-8fc1-872ac96bb147"
    },
    "id": "876a431c-9eed-406e-ae51-9cd0fa8851c5",
    "links": {
      "self": "http://api.remotelock.dev/devices/876a431c-9eed-406e-ae51-9cd0fa8851c5",
      "location": "http://api.remotelock.dev/locations/b062c23d-b419-410b-a0ef-89e12eee20f6",
      "model": "http://api.remotelock.dev/models/43216767-f8d6-4a54-8fc1-872ac96bb147"
    }
  }
}

Unlock a ZWave lock

Request

Endpoint

PUT /devices/:id/unlock

PUT /devices/86831c19-42fa-40a6-8f29-556faae67802/unlock

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "zwave_lock",
    "attributes": {
      "connectivity_enabled": true,
      "name": "KZN",
      "state": "unlocked",
      "connected": false,
      "power_level": 0,
      "protocol": "",
      "model_number": "ZWaveLock",
      "created_at": "2024-06-03T16:10:45Z",
      "updated_at": "2024-06-03T16:10:45Z",
      "location_id": "b067c966-16b5-45ad-9653-8935dc7e6d26",
      "model_id": "bdcf2eb3-b40d-460c-bbe8-f217a6d8338d"
    },
    "id": "86831c19-42fa-40a6-8f29-556faae67802",
    "links": {
      "self": "http://api.remotelock.dev/devices/86831c19-42fa-40a6-8f29-556faae67802",
      "location": "http://api.remotelock.dev/locations/b067c966-16b5-45ad-9653-8935dc7e6d26",
      "model": "http://api.remotelock.dev/models/bdcf2eb3-b40d-460c-bbe8-f217a6d8338d"
    }
  }
}

Access person accesses of a ZWave lock

Request

Endpoint

GET /devices/:id/access_person_accesses

GET /devices/499f1b1d-269d-47a5-b422-6a7707d1c5bc/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-06-03T16:10:45Z",
        "updated_at": "2024-06-03T16:10:45Z",
        "access_person_id": "5b82e3c5-2c7b-4b9d-8b41-508b145038c7",
        "access_person_type": "access_user",
        "accessible_id": "929af493-c55f-4dc6-a911-1d49f5e11182"
      },
      "id": "8c1cfd25-fd52-4dce-a9dc-3ba033b9dbc0",
      "links": {
        "self": "http://api.remotelock.dev/access_persons/5b82e3c5-2c7b-4b9d-8b41-508b145038c7/accesses/8c1cfd25-fd52-4dce-a9dc-3ba033b9dbc0",
        "access_person": "http://api.remotelock.dev/access_persons/5b82e3c5-2c7b-4b9d-8b41-508b145038c7",
        "accessible": "http://api.remotelock.dev/locations/929af493-c55f-4dc6-a911-1d49f5e11182"
      }
    },
    {
      "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-06-03T16:10:45Z",
        "updated_at": "2024-06-03T16:10:45Z",
        "access_person_id": "ba1b5065-1db1-497f-8c9e-58761763a159",
        "access_person_type": "access_user",
        "accessible_id": "499f1b1d-269d-47a5-b422-6a7707d1c5bc"
      },
      "id": "16cd634f-b9ea-4538-a221-b1a31a8643e4",
      "links": {
        "self": "http://api.remotelock.dev/access_persons/ba1b5065-1db1-497f-8c9e-58761763a159/accesses/16cd634f-b9ea-4538-a221-b1a31a8643e4",
        "access_person": "http://api.remotelock.dev/access_persons/ba1b5065-1db1-497f-8c9e-58761763a159",
        "accessible": "http://api.remotelock.dev/devices/499f1b1d-269d-47a5-b422-6a7707d1c5bc"
      }
    }
  ],
  "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 - AC000W006315074",
        "heartbeat_interval": 1200,
        "wifi_level": 0,
        "signal_quality": 2,
        "connected": true,
        "alive": true,
        "power_source": "alkaline_battery",
        "connected_at": "2024-06-03T16:05:46Z",
        "serial_number": "AC000W006315074",
        "connectivity_enabled": true,
        "algorithmic_pin_enabled": true,
        "auto_lock": true,
        "auto_lock_timeout": 20,
        "created_at": "2024-06-03T16:10:46Z",
        "default_guest_end_time": null,
        "default_guest_start_time": null,
        "local_pins": [
          "1234"
        ],
        "mac_address": "a7:3e:08:db:e9:17",
        "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-06-03T16:10:46Z",
        "wake_wifi": "user_action",
        "wifi_enabled": true,
        "model_number": "LS-6i",
        "model_id": "6e0321d5-9e12-4908-9399-a29c4bb97f7b",
        "location_id": "5f486fdb-ba85-4a7e-9765-378ebf069cd6",
        "lock_action_schedule_id": "b60c8932-3241-42b2-97b4-06ef35ac2d42"
      },
      "id": "68ee2f27-d5e4-4eda-a7f6-4361f685024c",
      "links": {
        "self": "http://api.remotelock.dev/devices/68ee2f27-d5e4-4eda-a7f6-4361f685024c",
        "model": "http://api.remotelock.dev/models/6e0321d5-9e12-4908-9399-a29c4bb97f7b",
        "location": "http://api.remotelock.dev/locations/5f486fdb-ba85-4a7e-9765-378ebf069cd6",
        "lock_action_schedule": "http://api.remotelock.dev/schedules/b60c8932-3241-42b2-97b4-06ef35ac2d42"
      }
    },
    {
      "type": "thermostat",
      "attributes": {
        "name": "LS-60i - 001DC9A0LEWA",
        "heartbeat_interval": 1200,
        "wifi_level": 0,
        "signal_quality": 0,
        "connected": false,
        "alive": true,
        "power_source": "hardwire",
        "connected_at": "2024-06-03T16:06:46Z",
        "serial_number": "001DC9A0LEWA",
        "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-06-03T16:10:46Z",
        "updated_at": "2024-06-03T16:10:46Z",
        "model_id": "233a2830-52d6-46da-bc54-5e4fa0af6d42",
        "location_id": "5f486fdb-ba85-4a7e-9765-378ebf069cd6",
        "thermostat_schedule_id": "a07c2a64-d74b-4fd6-88d5-9ee03f8245bb"
      },
      "id": "c3db5ab4-1613-476a-b09c-cc44df5867ae",
      "links": {
        "self": "http://api.remotelock.dev/devices/c3db5ab4-1613-476a-b09c-cc44df5867ae",
        "model": "http://api.remotelock.dev/models/233a2830-52d6-46da-bc54-5e4fa0af6d42",
        "location": "http://api.remotelock.dev/locations/5f486fdb-ba85-4a7e-9765-378ebf069cd6",
        "thermostat_schedule": "http://api.remotelock.dev/schedules/a07c2a64-d74b-4fd6-88d5-9ee03f8245bb"
      },
      "meta": {
        "restricted_actions": [
          "replace"
        ]
      }
    },
    {
      "type": "lock",
      "attributes": {
        "connectivity_enabled": true,
        "name": "August - L2FQ48C8D9",
        "serial_number": "L2FQ48C8D9",
        "state": "locked",
        "alive": true,
        "connected": true,
        "connected_at": "2024-06-03T16:09:46.000Z",
        "power_level": 90,
        "signal_quality": 3,
        "default_guest_start_time": null,
        "default_guest_end_time": null,
        "model_number": "August",
        "created_at": "2024-06-03T16:10:46Z",
        "updated_at": "2024-06-03T16:10:46Z",
        "model_id": "6d9a78ac-fbe1-4032-ace7-d1c63b9b536f",
        "location_id": "5f486fdb-ba85-4a7e-9765-378ebf069cd6"
      },
      "id": "50d854a7-94b1-486d-bc96-bdf51a5f55d0",
      "links": {
        "self": "http://api.remotelock.dev/devices/50d854a7-94b1-486d-bc96-bdf51a5f55d0",
        "model": "http://api.remotelock.dev/models/6d9a78ac-fbe1-4032-ace7-d1c63b9b536f",
        "location": "http://api.remotelock.dev/locations/5f486fdb-ba85-4a7e-9765-378ebf069cd6"
      }
    },
    {
      "type": "lock",
      "attributes": {
        "connectivity_enabled": true,
        "name": "YaleHome - L2FQ8A744A",
        "serial_number": "L2FQ8A744A",
        "state": "locked",
        "alive": true,
        "connected": true,
        "connected_at": "2024-06-03T16:08:46.000Z",
        "power_level": 90,
        "signal_quality": 3,
        "default_guest_start_time": null,
        "default_guest_end_time": null,
        "model_number": "YaleHome",
        "created_at": "2024-06-03T16:10:46Z",
        "updated_at": "2024-06-03T16:10:46Z",
        "model_id": "7f3804be-ed6a-490a-aefd-5ec4993f8106",
        "location_id": "5f486fdb-ba85-4a7e-9765-378ebf069cd6"
      },
      "id": "449753ca-5fce-4690-a08a-f9e8d74de885",
      "links": {
        "self": "http://api.remotelock.dev/devices/449753ca-5fce-4690-a08a-f9e8d74de885",
        "model": "http://api.remotelock.dev/models/7f3804be-ed6a-490a-aefd-5ec4993f8106",
        "location": "http://api.remotelock.dev/locations/5f486fdb-ba85-4a7e-9765-378ebf069cd6"
      }
    },
    {
      "type": "lock",
      "attributes": {
        "name": "LS-DB500i - 20F85E00L679",
        "heartbeat_interval": 1200,
        "wifi_level": 0,
        "signal_quality": 2,
        "connected": false,
        "alive": true,
        "power_source": "alkaline_battery",
        "connected_at": "2024-06-03T16:09:46Z",
        "serial_number": "20F85E00L679",
        "connectivity_enabled": true,
        "algorithmic_pin_enabled": true,
        "auto_lock": true,
        "auto_lock_timeout": 20,
        "created_at": "2024-06-03T16:10:46Z",
        "default_guest_end_time": null,
        "default_guest_start_time": null,
        "local_pins": [
          "1234"
        ],
        "mac_address": "98:c3:fc:b2:e7:31",
        "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-06-03T16:10:46Z",
        "wake_wifi": "user_action",
        "wifi_enabled": true,
        "model_number": "LS-DB500i",
        "model_id": "9a433132-c196-400f-a339-bf02b8afe08f",
        "location_id": "5f486fdb-ba85-4a7e-9765-378ebf069cd6"
      },
      "id": "2b23fd64-0414-40d5-a318-68f81f30c3ed",
      "links": {
        "self": "http://api.remotelock.dev/devices/2b23fd64-0414-40d5-a318-68f81f30c3ed",
        "model": "http://api.remotelock.dev/models/9a433132-c196-400f-a339-bf02b8afe08f",
        "location": "http://api.remotelock.dev/locations/5f486fdb-ba85-4a7e-9765-378ebf069cd6"
      },
      "meta": {
        "restricted_actions": [
          "replace"
        ]
      }
    },
    {
      "type": "resort_lock",
      "attributes": {
        "name": "RL-4000 - SHAOI5AA0B4FBE01",
        "default_guest_start_time": null,
        "default_guest_end_time": null,
        "model_number": "RL-4000",
        "created_at": "2024-06-03T16:10:46Z",
        "updated_at": "2024-06-03T16:10:46Z",
        "serial_number": "SHAOI5AA0B4FBE01",
        "model_id": "c13ab0de-6c37-4bb1-8bb9-aec8807b2f82",
        "location_id": "5f486fdb-ba85-4a7e-9765-378ebf069cd6"
      },
      "id": "09d47ee0-4996-43f5-9265-061a5bb88cb4",
      "links": {
        "self": "http://api.remotelock.dev/devices/09d47ee0-4996-43f5-9265-061a5bb88cb4",
        "model": "http://api.remotelock.dev/models/c13ab0de-6c37-4bb1-8bb9-aec8807b2f82",
        "location": "http://api.remotelock.dev/locations/5f486fdb-ba85-4a7e-9765-378ebf069cd6"
      }
    },
    {
      "type": "power_plug",
      "attributes": {
        "name": "LS-P50i - 20F85EAB0X3O",
        "heartbeat_interval": 1200,
        "wifi_level": 0,
        "signal_quality": 4,
        "connected": false,
        "alive": true,
        "power_source": "hardwire",
        "connected_at": "2024-06-03T16:10:46Z",
        "serial_number": "20F85EAB0X3O",
        "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": "ed8febf8-3ab3-4127-a704-82cc8701277c",
        "location_id": "5f486fdb-ba85-4a7e-9765-378ebf069cd6",
        "power_plug_schedule_id": "c2472f35-750b-4c43-ae05-9167501082ad"
      },
      "id": "eaac6ba1-3cc5-43db-8437-8b853638fe09",
      "links": {
        "self": "http://api.remotelock.dev/devices/eaac6ba1-3cc5-43db-8437-8b853638fe09",
        "model": "http://api.remotelock.dev/models/ed8febf8-3ab3-4127-a704-82cc8701277c",
        "location": "http://api.remotelock.dev/locations/5f486fdb-ba85-4a7e-9765-378ebf069cd6",
        "power_plug_schedule": "http://api.remotelock.dev/schedules/c2472f35-750b-4c43-ae05-9167501082ad"
      },
      "meta": {
        "restricted_actions": [
          "replace"
        ]
      }
    },
    {
      "type": "acs_door",
      "attributes": {
        "connectivity_enabled": true,
        "name": "Movies",
        "state": "locked",
        "connected": false,
        "model_number": "Mercury",
        "created_at": "2024-06-03T16:10:46Z",
        "updated_at": "2024-06-03T16:10:46Z",
        "model_id": "12c9cb8b-8927-4adf-a1de-40c454fefa88",
        "location_id": "5f486fdb-ba85-4a7e-9765-378ebf069cd6"
      },
      "id": "fe887d43-5551-4f89-b0bc-f3ea5a2a81b4",
      "links": {
        "self": "http://api.remotelock.dev/devices/fe887d43-5551-4f89-b0bc-f3ea5a2a81b4",
        "model": "http://api.remotelock.dev/models/12c9cb8b-8927-4adf-a1de-40c454fefa88",
        "location": "http://api.remotelock.dev/locations/5f486fdb-ba85-4a7e-9765-378ebf069cd6"
      }
    },
    {
      "type": "zwave_lock",
      "attributes": {
        "connectivity_enabled": true,
        "name": "NFC",
        "state": "locked",
        "connected": true,
        "power_level": 15,
        "protocol": "",
        "model_number": "ZWaveLock",
        "created_at": "2024-06-03T16:10:46Z",
        "updated_at": "2024-06-03T16:10:46Z",
        "location_id": "5f486fdb-ba85-4a7e-9765-378ebf069cd6",
        "model_id": "e551d4ac-eedf-496d-a22d-a629b64df83a"
      },
      "id": "478dfd0d-13e5-403d-a874-e967ce850f68",
      "links": {
        "self": "http://api.remotelock.dev/devices/478dfd0d-13e5-403d-a874-e967ce850f68",
        "location": "http://api.remotelock.dev/locations/5f486fdb-ba85-4a7e-9765-378ebf069cd6",
        "model": "http://api.remotelock.dev/models/e551d4ac-eedf-496d-a22d-a629b64df83a"
      }
    },
    {
      "type": "igloo_lock",
      "attributes": {
        "name": "bathroom",
        "model_number": "IglooLock",
        "location_id": "5f486fdb-ba85-4a7e-9765-378ebf069cd6",
        "model_id": "e7bbbf9e-75d4-4557-96f5-62bc9d1161c7"
      },
      "id": "31d8ed7d-ef6b-47ac-8236-b808c484090d",
      "links": {
        "self": "http://api.remotelock.dev/devices/31d8ed7d-ef6b-47ac-8236-b808c484090d",
        "location": "http://api.remotelock.dev/locations/5f486fdb-ba85-4a7e-9765-378ebf069cd6",
        "model": "http://api.remotelock.dev/models/e7bbbf9e-75d4-4557-96f5-62bc9d1161c7"
      }
    },
    {
      "type": "schlage_home_lock",
      "attributes": {
        "connectivity_enabled": true,
        "name": "loft",
        "state": "locked",
        "alive": true,
        "connected": true,
        "connected_at": "2024-06-03T16:08:46Z",
        "power_level": 90,
        "integration_status": "connected",
        "integration_id": "0771be36-7792-4c2b-b0ed-a6aef31ef012",
        "model_number": "SchlageEncode",
        "created_at": "2024-06-03T16:10:46Z",
        "updated_at": "2024-06-03T16:10:46Z",
        "serial_number": "3100003251782951",
        "location_id": "5f486fdb-ba85-4a7e-9765-378ebf069cd6",
        "model_id": "50845f97-898c-45bc-b582-a47d577ef02a"
      },
      "id": "7ee619e6-8863-4042-b82e-97ed16bafb64",
      "links": {
        "self": "http://api.remotelock.dev/devices/7ee619e6-8863-4042-b82e-97ed16bafb64",
        "location": "http://api.remotelock.dev/locations/5f486fdb-ba85-4a7e-9765-378ebf069cd6",
        "model": "http://api.remotelock.dev/models/50845f97-898c-45bc-b582-a47d577ef02a"
      }
    },
    {
      "type": "acs_elevator_floor",
      "attributes": {
        "connectivity_enabled": true,
        "name": "Books & Automotive",
        "state": "locked",
        "number": 17,
        "model_number": "MercuryElevatorFloor",
        "created_at": "2024-06-03T16:10:46Z",
        "updated_at": "2024-06-03T16:10:46Z",
        "connected": true,
        "model_id": "54456151-f18c-4e99-aef6-4677957a1eb0",
        "location_id": "5f486fdb-ba85-4a7e-9765-378ebf069cd6",
        "elevator_id": "71eb8c1e-2516-4317-bbbf-bdfb80309d6f"
      },
      "id": "f5c10544-993d-4396-a6b7-830138c561c0",
      "links": {
        "self": "http://api.remotelock.dev/devices/f5c10544-993d-4396-a6b7-830138c561c0",
        "model": "http://api.remotelock.dev/models/54456151-f18c-4e99-aef6-4677957a1eb0",
        "location": "http://api.remotelock.dev/locations/5f486fdb-ba85-4a7e-9765-378ebf069cd6",
        "elevator": "http://api.remotelock.dev/devices/71eb8c1e-2516-4317-bbbf-bdfb80309d6f"
      }
    },
    {
      "type": "connector_lock",
      "attributes": {
        "connectivity_enabled": true,
        "name": "attic",
        "alive": true,
        "connected": false,
        "connected_at": "2024-06-03T16:10:46Z",
        "power_level": 100,
        "serial_number": "063e4ae162fdf1b3d4c0dfeaf742b5d1",
        "signal_quality": 4,
        "state": "LOCKED",
        "pending_physical_sync": false,
        "model_number": "RubberLock",
        "created_at": "2024-06-03T16:10:46Z",
        "updated_at": "2024-06-03T16:10:46Z",
        "location_id": "5f486fdb-ba85-4a7e-9765-378ebf069cd6",
        "model_id": "cebcd970-6974-4a43-8c9c-7baf4bbac105"
      },
      "id": "df6deb19-56c4-4f09-be65-7922449c13e1",
      "links": {
        "self": "http://api.remotelock.dev/devices/df6deb19-56c4-4f09-be65-7922449c13e1",
        "location": "http://api.remotelock.dev/locations/5f486fdb-ba85-4a7e-9765-378ebf069cd6",
        "model": "http://api.remotelock.dev/models/cebcd970-6974-4a43-8c9c-7baf4bbac105"
      }
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 25,
    "total_count": 13,
    "total_pages": 1
  }
}

Get a device

Request

Endpoint

GET /devices/:id

GET /devices/bfb810fc-6539-4400-9132-62d9a72877ca

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "lock",
    "attributes": {
      "name": "LS-6i - AC000W009432336",
      "heartbeat_interval": 1200,
      "wifi_level": 0,
      "signal_quality": 4,
      "connected": true,
      "alive": true,
      "power_source": "alkaline_battery",
      "connected_at": "2024-06-03T16:08:05Z",
      "serial_number": "AC000W009432336",
      "connectivity_enabled": true,
      "algorithmic_pin_enabled": true,
      "auto_lock": true,
      "auto_lock_timeout": 20,
      "created_at": "2024-06-03T16:11:05Z",
      "default_guest_end_time": null,
      "default_guest_start_time": null,
      "local_pins": [
        "1234"
      ],
      "mac_address": "85:99:f9:58:b3:b8",
      "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-06-03T16:11:05Z",
      "wake_wifi": "user_action",
      "wifi_enabled": true,
      "model_number": "LS-6i",
      "model_id": "3c171fc6-575f-4995-89d8-f1aaad5a624e",
      "location_id": "309f8844-e39e-4397-8f66-7d18e1467d9f",
      "lock_action_schedule_id": "fb443d05-fee1-4466-97b4-ed3c567b7cd2"
    },
    "id": "bfb810fc-6539-4400-9132-62d9a72877ca",
    "links": {
      "self": "http://api.remotelock.dev/devices/bfb810fc-6539-4400-9132-62d9a72877ca",
      "model": "http://api.remotelock.dev/models/3c171fc6-575f-4995-89d8-f1aaad5a624e",
      "location": "http://api.remotelock.dev/locations/309f8844-e39e-4397-8f66-7d18e1467d9f",
      "lock_action_schedule": "http://api.remotelock.dev/schedules/fb443d05-fee1-4466-97b4-ed3c567b7cd2"
    }
  }
}

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/626be4f6-66d3-4f80-bacf-715b5e223694/temporary_unlock

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "acs_door",
    "attributes": {
      "connectivity_enabled": true,
      "name": "Jewelry, Movies & Baby",
      "state": "unlocked",
      "connected": false,
      "model_number": "Mercury",
      "created_at": "2024-06-03T16:11:05Z",
      "updated_at": "2024-06-03T16:11:06Z",
      "model_id": "f2594884-d6e7-4782-8c98-8cd3aa7780e9",
      "location_id": "960df7da-272b-4a4a-b171-d65e1f740597"
    },
    "id": "626be4f6-66d3-4f80-bacf-715b5e223694",
    "links": {
      "self": "http://api.remotelock.dev/devices/626be4f6-66d3-4f80-bacf-715b5e223694",
      "model": "http://api.remotelock.dev/models/f2594884-d6e7-4782-8c98-8cd3aa7780e9",
      "location": "http://api.remotelock.dev/locations/960df7da-272b-4a4a-b171-d65e1f740597"
    }
  }
}

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/598cda41-341e-4bed-8248-f4a2fe062901/temporary_unlock/5653f587-01db-4fe5-83c6-26d0ce736c37

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": "Home & Beauty",
      "state": "unlocked",
      "connected": false,
      "model_number": "Mercury",
      "created_at": "2024-06-03T16:11:06Z",
      "updated_at": "2024-06-03T16:11:07Z",
      "model_id": "3a8c1e63-010f-48a9-8a99-adc9ecfd8b2f",
      "location_id": "ca59e5a1-2c00-4b28-8e0d-48eec58ad7f0"
    },
    "id": "598cda41-341e-4bed-8248-f4a2fe062901",
    "links": {
      "self": "http://api.remotelock.dev/devices/598cda41-341e-4bed-8248-f4a2fe062901",
      "model": "http://api.remotelock.dev/models/3a8c1e63-010f-48a9-8a99-adc9ecfd8b2f",
      "location": "http://api.remotelock.dev/locations/ca59e5a1-2c00-4b28-8e0d-48eec58ad7f0"
    }
  }
}

Respond with a not found response

AccessPersonDevice not found

Request

Endpoint

PUT /devices/:id/temporary_unlock/:access_person_id

PUT /devices/b1b2aeb5-0288-4e99-ac87-75b5af8c9187/temporary_unlock/f1db6ea3-0e9d-42cc-9946-f182dfe5adf0

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/de126143-ce66-4160-914d-55ff40c44e8a

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": "a040c129-092c-4593-829e-1d5103021b02",
    "model_id": "d6190c5b-925f-4f66-baa7-13279661765e",
    "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-06-03T16:13:31Z",
      "updated_at": "2024-06-03T16:13:31Z",
      "serial_number": "AB57EF010F4FBE01",
      "model_id": "d6190c5b-925f-4f66-baa7-13279661765e",
      "location_id": "a040c129-092c-4593-829e-1d5103021b02"
    },
    "id": "a48c5e20-65d0-4ec1-be39-35af8826d0b0",
    "links": {
      "self": "http://api.remotelock.dev/devices/a48c5e20-65d0-4ec1-be39-35af8826d0b0",
      "model": "http://api.remotelock.dev/models/d6190c5b-925f-4f66-baa7-13279661765e",
      "location": "http://api.remotelock.dev/locations/a040c129-092c-4593-829e-1d5103021b02"
    }
  }
}

Update a ResortLock

Request

Endpoint

PUT /devices/:id

PUT /devices/439818d2-034a-47e5-b60c-bd6b1d83648f

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-06-03T16:13:32Z",
      "updated_at": "2024-06-03T16:13:32Z",
      "serial_number": "Z2ACIVIV0B4FBE01",
      "model_id": "bf890acf-1d61-465a-a475-db0c20002b22",
      "location_id": "5f15fc7c-8bac-4921-9304-e74f3750501c"
    },
    "id": "439818d2-034a-47e5-b60c-bd6b1d83648f",
    "links": {
      "self": "http://api.remotelock.dev/devices/439818d2-034a-47e5-b60c-bd6b1d83648f",
      "model": "http://api.remotelock.dev/models/bf890acf-1d61-465a-a475-db0c20002b22",
      "location": "http://api.remotelock.dev/locations/5f15fc7c-8bac-4921-9304-e74f3750501c"
    }
  }
}

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-06-03T08:52:20Z",
        "created_at": "2024-06-03T16:11:20Z",
        "updated_at": "2024-06-03T16:11:20Z",
        "associated_resource_name": null,
        "status_info": "timeout",
        "publisher_id": "c0b89008-dfc3-448a-9b87-8475576e3048",
        "publisher_type": "lock",
        "associated_resource_id": "88f9d269-bd84-4fc4-a2e5-caeb345263c8",
        "associated_resource_type": "access_user"
      },
      "id": "18f46812-24e0-4a08-a07d-0922cb8f2338",
      "links": {
        "self": "http://api.remotelock.dev/events/18f46812-24e0-4a08-a07d-0922cb8f2338",
        "publisher": "http://api.remotelock.dev/devices/c0b89008-dfc3-448a-9b87-8475576e3048",
        "associated_resource": "http://api.remotelock.dev/access_persons/88f9d269-bd84-4fc4-a2e5-caeb345263c8"
      }
    },
    {
      "type": "access_person_synced_event",
      "attributes": {
        "source": "user",
        "status": "succeeded",
        "time_zone": "America/Denver",
        "occurred_at": "2024-06-03T06:42:20Z",
        "created_at": "2024-06-03T16:11:20Z",
        "updated_at": "2024-06-03T16:11:20Z",
        "associated_resource_name": null,
        "publisher_id": "c0b89008-dfc3-448a-9b87-8475576e3048",
        "publisher_type": "lock",
        "associated_resource_id": "a88ed9d8-14e1-4156-be09-efccb71b3021",
        "associated_resource_type": "access_user"
      },
      "id": "0f47784c-9b0b-41eb-89d6-aa06cd6c644d",
      "links": {
        "self": "http://api.remotelock.dev/events/0f47784c-9b0b-41eb-89d6-aa06cd6c644d",
        "publisher": "http://api.remotelock.dev/devices/c0b89008-dfc3-448a-9b87-8475576e3048",
        "associated_resource": "http://api.remotelock.dev/access_persons/a88ed9d8-14e1-4156-be09-efccb71b3021"
      }
    },
    {
      "type": "access_person_used_event",
      "attributes": {
        "source": "user",
        "status": "failed",
        "time_zone": "America/Denver",
        "occurred_at": "2024-06-03T05:28:20Z",
        "created_at": "2024-06-03T16:11:20Z",
        "updated_at": "2024-06-03T16:11:20Z",
        "associated_resource_name": null,
        "status_info": null,
        "method": null,
        "pin": null,
        "card": null,
        "publisher_id": "00801360-b92c-4544-a08c-02e8e4da14fe",
        "publisher_type": "access_guest",
        "associated_resource_id": "c0b89008-dfc3-448a-9b87-8475576e3048",
        "associated_resource_type": "lock"
      },
      "id": "351344ee-b74a-4024-887a-4bd6436cc71e",
      "links": {
        "self": "http://api.remotelock.dev/events/351344ee-b74a-4024-887a-4bd6436cc71e",
        "publisher": "http://api.remotelock.dev/access_persons/00801360-b92c-4544-a08c-02e8e4da14fe",
        "associated_resource": "http://api.remotelock.dev/devices/c0b89008-dfc3-448a-9b87-8475576e3048"
      }
    },
    {
      "type": "access_person_used_event",
      "attributes": {
        "source": "user",
        "status": "succeeded",
        "time_zone": "America/Denver",
        "occurred_at": "2024-06-03T05:12:20Z",
        "created_at": "2024-06-03T16:11:20Z",
        "updated_at": "2024-06-03T16:11:20Z",
        "associated_resource_name": null,
        "status_info": null,
        "method": null,
        "pin": null,
        "card": null,
        "publisher_id": "bacc4b73-0a30-4ec9-9f83-98f69195c883",
        "publisher_type": "access_user",
        "associated_resource_id": "c0b89008-dfc3-448a-9b87-8475576e3048",
        "associated_resource_type": "lock"
      },
      "id": "6a8a9195-e9d7-483d-8d2b-8b3e78a5fe3f",
      "links": {
        "self": "http://api.remotelock.dev/events/6a8a9195-e9d7-483d-8d2b-8b3e78a5fe3f",
        "publisher": "http://api.remotelock.dev/access_persons/bacc4b73-0a30-4ec9-9f83-98f69195c883",
        "associated_resource": "http://api.remotelock.dev/devices/c0b89008-dfc3-448a-9b87-8475576e3048"
      }
    },
    {
      "type": "connectivity_event",
      "attributes": {
        "source": "user",
        "status": "succeeded",
        "time_zone": "America/Denver",
        "occurred_at": "2024-06-03T05:02:20Z",
        "created_at": "2024-06-03T16:11:20Z",
        "updated_at": "2024-06-03T16:11:20Z",
        "connected_at": "2024-06-01T17:50:20Z",
        "publisher_id": "c0b89008-dfc3-448a-9b87-8475576e3048",
        "publisher_type": "lock"
      },
      "id": "93580a09-8663-4c11-b910-c2976eafafaa",
      "links": {
        "self": "http://api.remotelock.dev/events/93580a09-8663-4c11-b910-c2976eafafaa",
        "publisher": "http://api.remotelock.dev/devices/c0b89008-dfc3-448a-9b87-8475576e3048"
      }
    },
    {
      "type": "unlocked_event",
      "attributes": {
        "source": "user",
        "status": "succeeded",
        "time_zone": "America/Denver",
        "occurred_at": "2024-06-03T04:03:20Z",
        "created_at": "2024-06-03T16:11:20Z",
        "updated_at": "2024-06-03T16:11:20Z",
        "associated_resource_name": null,
        "status_info": null,
        "method": "pin",
        "pin": "1234",
        "card": null,
        "publisher_id": "c0b89008-dfc3-448a-9b87-8475576e3048",
        "publisher_type": "lock",
        "associated_resource_id": "93b75e3b-614f-471a-b4fc-67f652bbcbc3",
        "associated_resource_type": "access_user"
      },
      "id": "1c3c30a9-97e6-4c10-9fc3-5ea6e0636284",
      "links": {
        "self": "http://api.remotelock.dev/events/1c3c30a9-97e6-4c10-9fc3-5ea6e0636284",
        "publisher": "http://api.remotelock.dev/devices/c0b89008-dfc3-448a-9b87-8475576e3048",
        "associated_resource": "http://api.remotelock.dev/access_persons/93b75e3b-614f-471a-b4fc-67f652bbcbc3"
      }
    },
    {
      "type": "power_level_low_event",
      "attributes": {
        "source": "user",
        "status": "succeeded",
        "time_zone": "America/Denver",
        "occurred_at": "2024-06-03T00:52:20Z",
        "created_at": "2024-06-03T16:11:20Z",
        "updated_at": "2024-06-03T16:11:20Z",
        "power_level": 20,
        "publisher_id": "c0b89008-dfc3-448a-9b87-8475576e3048",
        "publisher_type": "lock"
      },
      "id": "bb4cfcec-7e7a-4d7f-9908-c09ab1d6ea95",
      "links": {
        "self": "http://api.remotelock.dev/events/bb4cfcec-7e7a-4d7f-9908-c09ab1d6ea95",
        "publisher": "http://api.remotelock.dev/devices/c0b89008-dfc3-448a-9b87-8475576e3048"
      }
    },
    {
      "type": "access_guest_late_sync_event",
      "attributes": {
        "source": "user",
        "status": "succeeded",
        "time_zone": "America/Denver",
        "occurred_at": "2024-06-03T00:20:20Z",
        "created_at": "2024-06-03T16:11:20Z",
        "updated_at": "2024-06-03T16:11:20Z",
        "associated_resource_name": null,
        "publisher_id": "c0b89008-dfc3-448a-9b87-8475576e3048",
        "publisher_type": "lock",
        "associated_resource_id": "3fe45eb8-accf-4de2-ae65-9ff913653f87",
        "associated_resource_type": "access_guest"
      },
      "id": "44d2c363-571b-402e-9792-06eb6352008f",
      "links": {
        "self": "http://api.remotelock.dev/events/44d2c363-571b-402e-9792-06eb6352008f",
        "publisher": "http://api.remotelock.dev/devices/c0b89008-dfc3-448a-9b87-8475576e3048",
        "associated_resource": "http://api.remotelock.dev/access_persons/3fe45eb8-accf-4de2-ae65-9ff913653f87"
      }
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 25,
    "total_count": 8,
    "total_pages": 1
  }
}

Fields

Name Description
type access_person_used, 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, 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/9495dfa4-8365-430c-9957-148b181961aa

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "unlocked_event",
    "attributes": {
      "source": "user",
      "status": "succeeded",
      "time_zone": "America/Denver",
      "occurred_at": "2024-06-03T02:36:23Z",
      "created_at": "2024-06-03T16:11:23Z",
      "updated_at": "2024-06-03T16:11:23Z",
      "associated_resource_name": null,
      "status_info": null,
      "method": "pin",
      "pin": "1234",
      "card": null,
      "publisher_id": "b7a3769c-cdf3-4363-8f36-2cd6c1251396",
      "publisher_type": "lock",
      "associated_resource_id": "cad441d8-6e1c-4a8a-b8ca-f146592b7967",
      "associated_resource_type": "access_user"
    },
    "id": "9495dfa4-8365-430c-9957-148b181961aa",
    "links": {
      "self": "http://api.remotelock.dev/events/9495dfa4-8365-430c-9957-148b181961aa",
      "publisher": "http://api.remotelock.dev/devices/b7a3769c-cdf3-4363-8f36-2cd6c1251396",
      "associated_resource": "http://api.remotelock.dev/access_persons/cad441d8-6e1c-4a8a-b8ca-f146592b7967"
    }
  }
}

Fields

Name Description
type access_person_used, 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, 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/2a91ae16-ba5a-4a78-8d75-e7e255a5dc6f/door_group_accesses/search.csv

GET /groups/2a91ae16-ba5a-4a78-8d75-e7e255a5dc6f/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/9bfb306f-028b-4088-b3db-1f26446f6795/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-06-03T16:11:35Z",
        "updated_at": "2024-06-03T16:11:35Z",
        "item_id": "b06e809f-3075-4eab-baa9-20bf9eaee439",
        "item_type": "lock",
        "door_group_id": "9bfb306f-028b-4088-b3db-1f26446f6795"
      },
      "id": "1696bc9f-346f-42ed-9d34-529235461d92",
      "links": {
        "self": "http://api.remotelock.dev/groups/9bfb306f-028b-4088-b3db-1f26446f6795/items/1696bc9f-346f-42ed-9d34-529235461d92",
        "item": "http://api.remotelock.dev/devices/b06e809f-3075-4eab-baa9-20bf9eaee439",
        "door_group": "http://api.remotelock.dev/groups/9bfb306f-028b-4088-b3db-1f26446f6795"
      }
    },
    {
      "type": "door_group_item",
      "attributes": {
        "created_at": "2024-06-03T16:11:35Z",
        "updated_at": "2024-06-03T16:11:35Z",
        "item_id": "ecd4243d-d395-4004-9927-69147b0ba666",
        "item_type": "lock",
        "door_group_id": "9bfb306f-028b-4088-b3db-1f26446f6795"
      },
      "id": "a8e1c2bb-4938-49eb-a662-dac264ef8583",
      "links": {
        "self": "http://api.remotelock.dev/groups/9bfb306f-028b-4088-b3db-1f26446f6795/items/a8e1c2bb-4938-49eb-a662-dac264ef8583",
        "item": "http://api.remotelock.dev/devices/ecd4243d-d395-4004-9927-69147b0ba666",
        "door_group": "http://api.remotelock.dev/groups/9bfb306f-028b-4088-b3db-1f26446f6795"
      }
    }
  ],
  "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/efa5aa29-2843-473e-b128-dcb4618a16a7/items/61ab41c7-2c99-4d7d-afca-bbe1615773d0

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "door_group_item",
    "attributes": {
      "created_at": "2024-06-03T16:11:36Z",
      "updated_at": "2024-06-03T16:11:36Z",
      "item_id": "5a9700ce-c860-4bac-8531-f16c55790a4b",
      "item_type": "lock",
      "door_group_id": "efa5aa29-2843-473e-b128-dcb4618a16a7"
    },
    "id": "61ab41c7-2c99-4d7d-afca-bbe1615773d0",
    "links": {
      "self": "http://api.remotelock.dev/groups/efa5aa29-2843-473e-b128-dcb4618a16a7/items/61ab41c7-2c99-4d7d-afca-bbe1615773d0",
      "item": "http://api.remotelock.dev/devices/5a9700ce-c860-4bac-8531-f16c55790a4b",
      "door_group": "http://api.remotelock.dev/groups/efa5aa29-2843-473e-b128-dcb4618a16a7"
    }
  }
}

Add an item to a door group

Request

Endpoint

POST /groups/:group_id/items

POST /groups/2105f691-2a0b-4ec5-a1c1-e841446d86ad/items

Parameters

{
  "attributes": {
    "item_id": "061dddfa-e9d8-4381-bc50-f900a487731a",
    "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-06-03T16:11:37Z",
      "updated_at": "2024-06-03T16:11:37Z",
      "item_id": "061dddfa-e9d8-4381-bc50-f900a487731a",
      "item_type": "lock",
      "door_group_id": "2105f691-2a0b-4ec5-a1c1-e841446d86ad"
    },
    "id": "ecd21219-9d16-4204-9bc4-10dcb900a95c",
    "links": {
      "self": "http://api.remotelock.dev/groups/2105f691-2a0b-4ec5-a1c1-e841446d86ad/items/ecd21219-9d16-4204-9bc4-10dcb900a95c",
      "item": "http://api.remotelock.dev/devices/061dddfa-e9d8-4381-bc50-f900a487731a",
      "door_group": "http://api.remotelock.dev/groups/2105f691-2a0b-4ec5-a1c1-e841446d86ad"
    }
  }
}

Remove an item from a door group

Request

Endpoint

DELETE /groups/:group_id/items/:id

DELETE /groups/d16d3487-56d4-4b78-a9e1-16f023b91b65/items/c867b07b-7cc0-43ff-9521-34d8b9316afe

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-06-03T16:11:45Z",
        "updated_at": "2024-06-03T16:11:45Z"
      },
      "id": "2426d9a7-a245-4c73-b8e4-b059437321c9",
      "links": {
        "self": "http://api.remotelock.dev/groups/2426d9a7-a245-4c73-b8e4-b059437321c9"
      }
    },
    {
      "type": "door_group",
      "attributes": {
        "name": "Outdoors, Computers & Shoes",
        "created_at": "2024-06-03T16:11:45Z",
        "updated_at": "2024-06-03T16:11:45Z"
      },
      "id": "593bf61a-199b-4e89-abd7-e8e79b2807b9",
      "links": {
        "self": "http://api.remotelock.dev/groups/593bf61a-199b-4e89-abd7-e8e79b2807b9"
      }
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 25,
    "total_count": 2,
    "total_pages": 1
  }
}

Get a group

Request

Endpoint

GET /groups/:id

GET /groups/9ce47f6d-bfb4-460f-8322-7c457d62022b

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "door_group",
    "attributes": {
      "name": "Indoor Locks",
      "created_at": "2024-06-03T16:11:45Z",
      "updated_at": "2024-06-03T16:11:45Z"
    },
    "id": "9ce47f6d-bfb4-460f-8322-7c457d62022b",
    "links": {
      "self": "http://api.remotelock.dev/groups/9ce47f6d-bfb4-460f-8322-7c457d62022b"
    }
  }
}

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-06-03T16:11:46Z",
      "updated_at": "2024-06-03T16:11:46Z"
    },
    "id": "13c3edae-fdeb-4eb6-be5f-5064ebfb5940",
    "links": {
      "self": "http://api.remotelock.dev/groups/13c3edae-fdeb-4eb6-be5f-5064ebfb5940"
    }
  }
}

Update a group

Request

Endpoint

PUT /groups/:id

PUT /groups/2d5130c1-5b74-4fa2-ba82-82c94961e681

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-06-03T16:11:46Z",
      "updated_at": "2024-06-03T16:11:46Z"
    },
    "id": "2d5130c1-5b74-4fa2-ba82-82c94961e681",
    "links": {
      "self": "http://api.remotelock.dev/groups/2d5130c1-5b74-4fa2-ba82-82c94961e681"
    }
  }
}

Delete a group

Request

Endpoint

DELETE /groups/:id

DELETE /groups/1d4a6ecd-a3ec-489d-8090-a0d0b84e9e2e

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": "Burton Lubowitz",
        "email": "rocco_wolff@stamm-rowe.info",
        "starts_at": "2024-06-17T00:00:00",
        "ends_at": "2024-07-09T00:00:00",
        "igloo_lock_id": "b8a28e36-ef78-4f87-b1b9-2f3b7c412f11",
        "created_at": "2024-06-03T16:12:37Z",
        "updated_at": "2024-06-03T16:12:37Z",
        "code": "1234567"
      },
      "id": "dbd685cf-6261-43c7-80e6-ff075a06fbc3",
      "links": {
        "self": "http://api.remotelock.dev/igloo_guests/dbd685cf-6261-43c7-80e6-ff075a06fbc3"
      }
    },
    {
      "type": "igloo_guest",
      "attributes": {
        "name": "Andrea Klocko",
        "email": "arianne_welch@keeling-collier.net",
        "starts_at": "2024-06-15T00:00:00",
        "ends_at": "2024-07-11T00:00:00",
        "igloo_lock_id": "b8a28e36-ef78-4f87-b1b9-2f3b7c412f11",
        "created_at": "2024-06-03T16:12:37Z",
        "updated_at": "2024-06-03T16:12:37Z",
        "code": "1234567"
      },
      "id": "c21df31d-ff3e-41da-b604-52b821da01c2",
      "links": {
        "self": "http://api.remotelock.dev/igloo_guests/c21df31d-ff3e-41da-b604-52b821da01c2"
      }
    },
    {
      "type": "igloo_guest",
      "attributes": {
        "name": "Rupert Parisian",
        "email": "levi@simonis.biz",
        "starts_at": "2024-06-07T00:00:00",
        "ends_at": "2024-07-01T00:00:00",
        "igloo_lock_id": "fa05f4e0-164f-40a2-bb18-e7beae371307",
        "created_at": "2024-06-03T16:12:37Z",
        "updated_at": "2024-06-03T16:12:37Z",
        "code": "1234567"
      },
      "id": "f9fc1e7e-b8b3-490a-9694-63db7c285c4d",
      "links": {
        "self": "http://api.remotelock.dev/igloo_guests/f9fc1e7e-b8b3-490a-9694-63db7c285c4d"
      }
    }
  ],
  "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/8b1f9e5f-1fc4-45af-b132-daf2244a4a64

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "igloo_guest",
    "attributes": {
      "name": "Rev. Lavona Bergnaum",
      "email": "abraham.cremin@parker-altenwerth.net",
      "starts_at": "2024-06-15T00:00:00",
      "ends_at": "2024-07-11T00:00:00",
      "igloo_lock_id": "bf463ba3-7632-4024-880f-8279168ce5f0",
      "created_at": "2024-06-03T16:12:40Z",
      "updated_at": "2024-06-03T16:12:40Z",
      "code": "678123"
    },
    "id": "8b1f9e5f-1fc4-45af-b132-daf2244a4a64",
    "links": {
      "self": "http://api.remotelock.dev/igloo_guests/8b1f9e5f-1fc4-45af-b132-daf2244a4a64"
    }
  }
}

Create an igloo guest

Request

Endpoint

POST /igloo_guests

POST /igloo_guests

Parameters

{
  "attributes": {
    "igloo_lock_id": "e1b47b45-7c2b-4c50-87ca-5d84f559ffdb",
    "name": "Ann Smith",
    "starts_at": "2024-06-03 16:12:40 UTC",
    "ends_at": "2024-06-04 16:12:40 UTC",
    "email": "guy_ferry@mclaughlin.biz"
  }
}
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": "guy_ferry@mclaughlin.biz",
      "starts_at": "2024-06-03T16:00:00",
      "ends_at": "2024-06-04T16:00:00",
      "igloo_lock_id": "e1b47b45-7c2b-4c50-87ca-5d84f559ffdb",
      "created_at": "2024-06-03T16:12:41Z",
      "updated_at": "2024-06-03T16:12:41Z",
      "code": "1234567"
    },
    "id": "8d81ab12-e5b3-4adf-a64d-56cbceeb00bf",
    "links": {
      "self": "http://api.remotelock.dev/igloo_guests/8d81ab12-e5b3-4adf-a64d-56cbceeb00bf"
    }
  }
}

Update an igloo guest

Request

Endpoint

PUT /igloo_guests/:id

PUT /igloo_guests/d5efec55-c512-4de5-90d9-5ea55cfc03ce

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": "pedro_brekke@nader.com",
      "starts_at": "2024-06-04T00:00:00",
      "ends_at": "2024-06-28T00:00:00",
      "igloo_lock_id": "86ba1c55-96b4-4ed8-828c-b4511d39abbd",
      "created_at": "2024-06-03T16:12:41Z",
      "updated_at": "2024-06-03T16:12:41Z",
      "code": "1234567"
    },
    "id": "d5efec55-c512-4de5-90d9-5ea55cfc03ce",
    "links": {
      "self": "http://api.remotelock.dev/igloo_guests/d5efec55-c512-4de5-90d9-5ea55cfc03ce"
    }
  }
}

Discard an igloo guest

Request

Endpoint

DELETE /igloo_guests/:id

DELETE /igloo_guests/6bdd8bc0-7cdb-4185-add9-b0610dcb1e0d

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": "08aed0da-987a-4a37-be2f-b874cd34466b",
        "name": "Vernon Bailey",
        "email": "christinia_grady@reichel.info",
        "starts_at": "2024-06-03T00:00:00",
        "ends_at": "2024-06-05T00:00:00",
        "status": "current",
        "source": null,
        "created_at": "2024-06-03T16:12:50Z",
        "updated_at": "2024-06-03T16:12:50Z",
        "pin": "2487440940",
        "lock_id": "0f385b54-8a16-4609-b1fa-70a49bbda4b9"
      },
      "id": "08aed0da-987a-4a37-be2f-b874cd34466b",
      "links": {
        "self": "http://api.remotelock.dev/kore_ready_pins/08aed0da-987a-4a37-be2f-b874cd34466b",
        "lock": "http://api.remotelock.dev/devices/0f385b54-8a16-4609-b1fa-70a49bbda4b9"
      }
    }
  ],
  "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/dd00cfbe-4343-440a-be3d-ff45f5c47007

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "access_guest",
    "attributes": {
      "name": "Yuko Simonis",
      "email": "scotty.walsh@botsford-emard.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-06-03T16:12:51Z",
      "updated_at": "2024-06-03T16:12:51Z",
      "pin": null,
      "card_number": null,
      "schlage_engage_smart_card_id": null,
      "schlage_engage_smart_card_badge": null,
      "url_credential": null,
      "starts_at": "2024-06-03T00:00:00",
      "ends_at": "2024-06-05T00:00:00",
      "ready_pins": [
        "9598765140"
      ],
      "ready_pin_model_id": "965d6a56-f05c-49b1-b96e-4b39b91524fc"
    },
    "id": "dd00cfbe-4343-440a-be3d-ff45f5c47007",
    "links": {
      "self": "http://api.remotelock.dev/access_persons/dd00cfbe-4343-440a-be3d-ff45f5c47007",
      "ready_pin_model": "http://api.remotelock.dev/ready_pin_models/965d6a56-f05c-49b1-b96e-4b39b91524fc"
    },
    "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": "6661640c-4a93-42d9-98b3-7be7b2ffb394",
    "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": "1a5f2043-4801-4667-9dbb-6af605038d5c",
      "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": "6661640c-4a93-42d9-98b3-7be7b2ffb394"
    },
    "id": "1a5f2043-4801-4667-9dbb-6af605038d5c",
    "links": {
      "self": "http://api.remotelock.dev/kore_ready_pins/1a5f2043-4801-4667-9dbb-6af605038d5c",
      "lock": "http://api.remotelock.dev/devices/6661640c-4a93-42d9-98b3-7be7b2ffb394"
    }
  }
}

Update a ReadyPIN

Updating of starts_at or ends_at is not allowed.

Request

Endpoint

PUT /kore_ready_pins/:id

PUT /kore_ready_pins/becd3916-d19c-4661-8a71-c0c5c16f8feb

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": "becd3916-d19c-4661-8a71-c0c5c16f8feb",
      "name": "Mike Smith",
      "email": "mike@smith.com",
      "starts_at": "2024-06-03T00:00:00",
      "ends_at": "2024-06-05T00:00:00",
      "status": "current",
      "source": null,
      "created_at": "2024-06-03T16:12:53Z",
      "updated_at": "2024-06-03T16:12:53Z",
      "pin": "8594986304",
      "lock_id": "7c4d52bc-0cdc-4ebe-a06a-021606e50b54"
    },
    "id": "becd3916-d19c-4661-8a71-c0c5c16f8feb",
    "links": {
      "self": "http://api.remotelock.dev/kore_ready_pins/becd3916-d19c-4661-8a71-c0c5c16f8feb",
      "lock": "http://api.remotelock.dev/devices/7c4d52bc-0cdc-4ebe-a06a-021606e50b54"
    }
  }
}

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/7383320c-a47b-4c38-98c5-18d236b0b50e

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-06-03T16:12:54Z",
        "updated_at": "2024-06-03T16:12:54Z"
      },
      "id": "577412cf-964d-4549-9207-e636cb4ca4d2",
      "links": {
        "self": "http://api.remotelock.dev/locations/577412cf-964d-4549-9207-e636cb4ca4d2"
      }
    },
    {
      "type": "location",
      "attributes": {
        "name": "Virtual impactful challenge",
        "phone": null,
        "address": "9505 Willis Drives",
        "address2": null,
        "city": null,
        "state": null,
        "postal_code": null,
        "country": null,
        "time_zone": "America/Denver",
        "created_at": "2024-06-03T16:12:54Z",
        "updated_at": "2024-06-03T16:12:54Z"
      },
      "id": "f257d87c-52fb-4a27-b98c-108a0b01d911",
      "links": {
        "self": "http://api.remotelock.dev/locations/f257d87c-52fb-4a27-b98c-108a0b01d911"
      }
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 25,
    "total_count": 2,
    "total_pages": 1
  }
}

Get a location

Request

Endpoint

GET /locations/:id

GET /locations/8981f5bf-8510-47b1-8000-0218dfed082b

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-06-03T16:12:55Z",
      "updated_at": "2024-06-03T16:12:55Z"
    },
    "id": "8981f5bf-8510-47b1-8000-0218dfed082b",
    "links": {
      "self": "http://api.remotelock.dev/locations/8981f5bf-8510-47b1-8000-0218dfed082b"
    }
  }
}

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-06-03T16:12:56Z",
      "updated_at": "2024-06-03T16:12:56Z"
    },
    "id": "80c7155e-9588-4e67-80b2-7929a59b2e7e",
    "links": {
      "self": "http://api.remotelock.dev/locations/80c7155e-9588-4e67-80b2-7929a59b2e7e"
    }
  }
}

Update a location

Request

Endpoint

PUT /locations/:id

PUT /locations/f1aeee8b-933f-4cb8-b3a7-571193fb86ec

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-06-03T16:12:56Z",
      "updated_at": "2024-06-03T16:12:56Z"
    },
    "id": "f1aeee8b-933f-4cb8-b3a7-571193fb86ec",
    "links": {
      "self": "http://api.remotelock.dev/locations/f1aeee8b-933f-4cb8-b3a7-571193fb86ec"
    }
  }
}

Delete a location

Request

Endpoint

DELETE /locations/:id

DELETE /locations/d846d830-67a4-4aca-8440-4402a94cb4c5

Parameters

None.

Response


204 No Content

Models

Get all models

Request

Endpoint

GET /models

GET /models

Parameters

Name Description
sort Sortable attributes: number, default: 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,
          "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,
          "wavelynx_mobile_credential": false
        }
      },
      "id": "64224053-d47f-4d35-b001-027d4d689b4d",
      "links": {
        "self": "http://api.remotelock.dev/models/64224053-d47f-4d35-b001-027d4d689b4d"
      }
    },
    {
      "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,
          "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,
          "wavelynx_mobile_credential": false
        }
      },
      "id": "e67a590a-a1d3-4a5a-a3ad-3064275e87c3",
      "links": {
        "self": "http://api.remotelock.dev/models/e67a590a-a1d3-4a5a-a3ad-3064275e87c3"
      }
    },
    {
      "type": "model",
      "attributes": {
        "name": "KLM",
        "number": "KLM",
        "type": "connector_lock",
        "capabilities": {
          "connected": true,
          "emulated_temporary_unlockable": false,
          "guest_deferrable": false,
          "hid_mobile_credential": false,
          "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,
          "wavelynx_mobile_credential": false
        }
      },
      "id": "efc3c737-f128-4957-82fa-e875d4fb35d3",
      "links": {
        "self": "http://api.remotelock.dev/models/efc3c737-f128-4957-82fa-e875d4fb35d3"
      }
    },
    {
      "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,
          "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,
          "wavelynx_mobile_credential": false
        }
      },
      "id": "1fea7d84-89ec-49c9-8c2c-fd317f94e88d",
      "links": {
        "self": "http://api.remotelock.dev/models/1fea7d84-89ec-49c9-8c2c-fd317f94e88d"
      }
    },
    {
      "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,
          "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,
          "wavelynx_mobile_credential": false
        }
      },
      "id": "214b11b6-93f5-41f1-bf58-0900814263bb",
      "links": {
        "self": "http://api.remotelock.dev/models/214b11b6-93f5-41f1-bf58-0900814263bb"
      }
    },
    {
      "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,
          "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,
          "wavelynx_mobile_credential": false
        }
      },
      "id": "c3386794-9fba-41b6-bf3d-566848208dbc",
      "links": {
        "self": "http://api.remotelock.dev/models/c3386794-9fba-41b6-bf3d-566848208dbc"
      }
    },
    {
      "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
          ],
          "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,
          "wake_wifi": [
            "user_action",
            "heartbeat_interval"
          ],
          "wavelynx_mobile_credential": false
        }
      },
      "id": "92ce8fda-be44-4b00-97b9-52ed067129c3",
      "links": {
        "self": "http://api.remotelock.dev/models/92ce8fda-be44-4b00-97b9-52ed067129c3"
      }
    },
    {
      "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
          ],
          "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,
          "wake_wifi": [
            "user_action",
            "heartbeat_interval"
          ],
          "wavelynx_mobile_credential": false
        }
      },
      "id": "b73677e4-86e0-4117-b70e-76490028f644",
      "links": {
        "self": "http://api.remotelock.dev/models/b73677e4-86e0-4117-b70e-76490028f644"
      }
    },
    {
      "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,
          "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,
          "wavelynx_mobile_credential": false
        }
      },
      "id": "eec22491-3f10-4c88-ac12-ce715e3126f8",
      "links": {
        "self": "http://api.remotelock.dev/models/eec22491-3f10-4c88-ac12-ce715e3126f8"
      }
    },
    {
      "type": "model",
      "attributes": {
        "name": "TTLock",
        "number": "TTLock",
        "type": "connector_lock",
        "capabilities": {
          "connected": true,
          "emulated_temporary_unlockable": false,
          "guest_deferrable": true,
          "hid_mobile_credential": false,
          "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,
          "wavelynx_mobile_credential": false
        }
      },
      "id": "fce4c743-d9f8-42de-bf8c-c77ff0a9847f",
      "links": {
        "self": "http://api.remotelock.dev/models/fce4c743-d9f8-42de-bf8c-c77ff0a9847f"
      }
    },
    {
      "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,
          "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,
          "wavelynx_mobile_credential": false
        }
      },
      "id": "457eda47-f4f1-4f9a-93d9-27a7ffe80958",
      "links": {
        "self": "http://api.remotelock.dev/models/457eda47-f4f1-4f9a-93d9-27a7ffe80958"
      }
    },
    {
      "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,
          "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,
          "wavelynx_mobile_credential": false
        }
      },
      "id": "ecf11a7b-d9e5-42aa-8a05-0e70dc0053f0",
      "links": {
        "self": "http://api.remotelock.dev/models/ecf11a7b-d9e5-42aa-8a05-0e70dc0053f0"
      }
    },
    {
      "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,
          "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,
          "wavelynx_mobile_credential": false
        }
      },
      "id": "16bd453e-98c7-4d6c-88e6-7415f44a7c4d",
      "links": {
        "self": "http://api.remotelock.dev/models/16bd453e-98c7-4d6c-88e6-7415f44a7c4d"
      }
    },
    {
      "type": "model",
      "attributes": {
        "name": "PDQ",
        "number": "PDQ",
        "type": "connector_lock",
        "capabilities": {
          "connected": true,
          "emulated_temporary_unlockable": false,
          "guest_deferrable": false,
          "hid_mobile_credential": false,
          "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,
          "wavelynx_mobile_credential": false
        }
      },
      "id": "3018e926-dc9e-4bac-a94e-4f291e0fa27f",
      "links": {
        "self": "http://api.remotelock.dev/models/3018e926-dc9e-4bac-a94e-4f291e0fa27f"
      }
    },
    {
      "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,
          "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,
          "wavelynx_mobile_credential": false
        }
      },
      "id": "de607076-158c-4d6b-8f10-a2ef3f28aa27",
      "links": {
        "self": "http://api.remotelock.dev/models/de607076-158c-4d6b-8f10-a2ef3f28aa27"
      }
    },
    {
      "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
          ],
          "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,
          "wake_wifi": [
            "user_action",
            "heartbeat_interval",
            "user_action_except_manual"
          ],
          "wavelynx_mobile_credential": false
        }
      },
      "id": "17bccac4-f85e-4c84-89ef-d3e383208f5a",
      "links": {
        "self": "http://api.remotelock.dev/models/17bccac4-f85e-4c84-89ef-d3e383208f5a"
      }
    },
    {
      "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
          ],
          "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,
          "wake_wifi": [

          ],
          "wavelynx_mobile_credential": false
        }
      },
      "id": "068305e6-5521-4e7b-a183-12884ffecea8",
      "links": {
        "self": "http://api.remotelock.dev/models/068305e6-5521-4e7b-a183-12884ffecea8"
      }
    },
    {
      "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,
          "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,
          "wavelynx_mobile_credential": false
        }
      },
      "id": "ac28de67-dcf9-4b25-bd5f-4b4892266e97",
      "links": {
        "self": "http://api.remotelock.dev/models/ac28de67-dcf9-4b25-bd5f-4b4892266e97"
      }
    },
    {
      "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
          ],
          "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,
          "wake_wifi": [

          ],
          "wavelynx_mobile_credential": false
        }
      },
      "id": "392c2bda-0480-4977-b5dd-c454b35656ec",
      "links": {
        "self": "http://api.remotelock.dev/models/392c2bda-0480-4977-b5dd-c454b35656ec"
      }
    },
    {
      "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
          ],
          "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,
          "wake_wifi": [
            "user_action",
            "heartbeat_interval",
            "user_action_except_manual"
          ],
          "wavelynx_mobile_credential": false
        }
      },
      "id": "42387d82-af90-473e-a6d7-2afd95e5820f",
      "links": {
        "self": "http://api.remotelock.dev/models/42387d82-af90-473e-a6d7-2afd95e5820f"
      }
    },
    {
      "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
          ],
          "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,
          "wake_wifi": [

          ],
          "wavelynx_mobile_credential": false
        }
      },
      "id": "438cceee-6366-46e7-8eac-211ab812d7ee",
      "links": {
        "self": "http://api.remotelock.dev/models/438cceee-6366-46e7-8eac-211ab812d7ee"
      }
    },
    {
      "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,
          "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,
          "wavelynx_mobile_credential": false
        }
      },
      "id": "ae94e34d-f93c-47a4-8fb3-6140aed74509",
      "links": {
        "self": "http://api.remotelock.dev/models/ae94e34d-f93c-47a4-8fb3-6140aed74509"
      }
    },
    {
      "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,
          "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,
          "wavelynx_mobile_credential": false
        }
      },
      "id": "2272b21e-43d8-40ef-8430-4439a26734c4",
      "links": {
        "self": "http://api.remotelock.dev/models/2272b21e-43d8-40ef-8430-4439a26734c4"
      }
    },
    {
      "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
          ],
          "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,
          "wake_wifi": [
            "user_action",
            "heartbeat_interval"
          ],
          "wavelynx_mobile_credential": false
        }
      },
      "id": "5c325b64-59fc-4a74-bf5b-1584d81b81b9",
      "links": {
        "self": "http://api.remotelock.dev/models/5c325b64-59fc-4a74-bf5b-1584d81b81b9"
      }
    },
    {
      "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,
          "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,
          "wavelynx_mobile_credential": false
        }
      },
      "id": "3a32928b-afc7-4d3c-9b24-352d6e1cbf86",
      "links": {
        "self": "http://api.remotelock.dev/models/3a32928b-afc7-4d3c-9b24-352d6e1cbf86"
      }
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 25,
    "total_count": 44,
    "total_pages": 2
  }
}

Get a model

Request

Endpoint

GET /models/:id

GET /models/7b0fc00e-996c-4f69-9576-76cc2164516d

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,
        "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,
        "wavelynx_mobile_credential": false
      }
    },
    "id": "7b0fc00e-996c-4f69-9576-76cc2164516d",
    "links": {
      "self": "http://api.remotelock.dev/models/7b0fc00e-996c-4f69-9576-76cc2164516d"
    }
  }
}

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": "Gov. Leoma Tremblay",
        "phone": "942-203-7550 x215",
        "carrier": "cricket",
        "active": true,
        "created_at": "2024-06-03T16:13:14Z",
        "updated_at": "2024-06-03T16:13:14Z"
      },
      "id": "4645bcf2-1b5a-47ae-aceb-afc3089f7041",
      "links": {
        "self": "http://api.remotelock.dev/notification_subscribers/4645bcf2-1b5a-47ae-aceb-afc3089f7041"
      }
    },
    {
      "type": "webhook_notification_subscriber",
      "attributes": {
        "name": "Sen. Donnie Reinger",
        "url": "https://www.google.com",
        "content_type": "form",
        "secret": "82e4c4aa1082dcfd6341d66747f57395",
        "active": true,
        "created_at": "2024-06-03T16:13:14Z",
        "updated_at": "2024-06-03T16:13:14Z"
      },
      "id": "fc907e72-5f2b-4cc8-b4a1-9e3b720b8d4a",
      "links": {
        "self": "http://api.remotelock.dev/notification_subscribers/fc907e72-5f2b-4cc8-b4a1-9e3b720b8d4a"
      }
    }
  ],
  "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/d95aebce-cb76-4fe9-939f-f76f15997638

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "text_notification_subscriber",
    "attributes": {
      "name": "Ms. Trisha Schimmel",
      "phone": "508.079.8848 x13958",
      "carrier": "orange",
      "active": true,
      "created_at": "2024-06-03T16:13:14Z",
      "updated_at": "2024-06-03T16:13:14Z"
    },
    "id": "d95aebce-cb76-4fe9-939f-f76f15997638",
    "links": {
      "self": "http://api.remotelock.dev/notification_subscribers/d95aebce-cb76-4fe9-939f-f76f15997638"
    }
  }
}

Update a notification subscriber

Parameters accepted: all used for create

Request

Endpoint

PUT /notification_subscribers/:id

PUT /notification_subscribers/30be783b-7a7c-4ccf-88a1-b4991bd43648

Parameters

{
  "attributes": {
    "active": false
  }
}

None.

Response


200 OK
{
  "data": {
    "type": "text_notification_subscriber",
    "attributes": {
      "name": "Latashia Hayes",
      "phone": "1-129-744-2089",
      "carrier": "xfinity",
      "active": false,
      "created_at": "2024-06-03T16:13:15Z",
      "updated_at": "2024-06-03T16:13:15Z"
    },
    "id": "30be783b-7a7c-4ccf-88a1-b4991bd43648",
    "links": {
      "self": "http://api.remotelock.dev/notification_subscribers/30be783b-7a7c-4ccf-88a1-b4991bd43648"
    }
  }
}

Delete a notification subscriber

Request

Endpoint

DELETE /notification_subscribers/:id

DELETE /notification_subscribers/a8014143-2fef-4c1c-b1a7-6497fb42b454

Parameters

None.

Response


204 No Content

Delete the webhook notification subscriber

Request

Endpoint

DELETE /notification_subscribers/:id

DELETE /notification_subscribers/3712692c-a0d4-4a49-b3e3-a5f5bd08a9bc

Parameters

None.

Response


204 No Content

Delete a notification subscriber

Request

Endpoint

DELETE /notification_subscribers/:id

DELETE /notification_subscribers/5596194d-336f-4c8b-adff-a22a0f4dc6b1

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-06-03T16:13:17Z",
      "updated_at": "2024-06-03T16:13:17Z"
    },
    "id": "463368b8-355a-432f-b17d-4ad1fcb4f857",
    "links": {
      "self": "http://api.remotelock.dev/notification_subscribers/463368b8-355a-432f-b17d-4ad1fcb4f857"
    }
  }
}

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-06-03T16:13:17Z",
      "updated_at": "2024-06-03T16:13:17Z"
    },
    "id": "a7c40f19-577b-47cc-b725-f2c24bf3c01f",
    "links": {
      "self": "http://api.remotelock.dev/notification_subscribers/a7c40f19-577b-47cc-b725-f2c24bf3c01f"
    }
  }
}

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-06-03T16:13:18Z",
      "updated_at": "2024-06-03T16:13:18Z"
    },
    "id": "46ee38c6-62bd-4a82-bcfa-2298d2aa4555",
    "links": {
      "self": "http://api.remotelock.dev/notification_subscribers/46ee38c6-62bd-4a82-bcfa-2298d2aa4555"
    }
  }
}

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-06-03T16:13:18Z",
        "updated_at": "2024-06-03T16:13:18Z",
        "subscriber_id": "478fe16c-d448-4b59-97d3-98ac41b7864a",
        "subscriber_type": "text_notification_subscriber",
        "publisher_id": "61dfcc08-2bb3-4401-847b-26d82639853b",
        "publisher_type": "account"
      },
      "id": "732133e7-d2a7-4e94-a0e3-d25a7836483a",
      "links": {
        "self": "http://api.remotelock.dev/notification_subscriptions/732133e7-d2a7-4e94-a0e3-d25a7836483a",
        "subscriber": "http://api.remotelock.dev/notification_subscribers/478fe16c-d448-4b59-97d3-98ac41b7864a",
        "publisher": "http://api.remotelock.dev/accounts/61dfcc08-2bb3-4401-847b-26d82639853b"
      }
    }
  ],
  "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/de97a85a-cab5-4f5e-b3e0-17e5929d9ad5

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "notification_subscription",
    "attributes": {
      "events": [
        {
          "event_type": "access_person_used"
        }
      ],
      "created_at": "2024-06-03T16:13:18Z",
      "updated_at": "2024-06-03T16:13:18Z",
      "subscriber_id": "42158e02-0c0c-46f7-97d7-91d9f8df1672",
      "subscriber_type": "text_notification_subscriber",
      "publisher_id": "9608c181-6d73-4f8f-ae15-a660b3a2cd71",
      "publisher_type": "account"
    },
    "id": "de97a85a-cab5-4f5e-b3e0-17e5929d9ad5",
    "links": {
      "self": "http://api.remotelock.dev/notification_subscriptions/de97a85a-cab5-4f5e-b3e0-17e5929d9ad5",
      "subscriber": "http://api.remotelock.dev/notification_subscribers/42158e02-0c0c-46f7-97d7-91d9f8df1672",
      "publisher": "http://api.remotelock.dev/accounts/9608c181-6d73-4f8f-ae15-a660b3a2cd71"
    }
  }
}

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": [
        "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",
        "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": "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": "ble_mapp_connected"
      },
      {
        "event_type": "kore_ready_pin_used"
      },
      {
        "event_type": "unlockedlocked"
      }
    ],
    "publisher_type": "account",
    "publisher_id": "abc3cf2d-5249-4129-82b3-34669e0a1194",
    "subscriber_type": "text_notification_subscriber",
    "subscriber_id": "43ef536c-f252-4a27-80c7-58493b33604f"
  }
}
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": "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": "ble_mapp_connected"
        },
        {
          "event_type": "kore_ready_pin_used"
        },
        {
          "event_type": "unlockedlocked"
        }
      ],
      "created_at": "2024-06-03T16:13:19Z",
      "updated_at": "2024-06-03T16:13:19Z",
      "subscriber_id": "43ef536c-f252-4a27-80c7-58493b33604f",
      "subscriber_type": "text_notification_subscriber",
      "publisher_id": "abc3cf2d-5249-4129-82b3-34669e0a1194",
      "publisher_type": "account"
    },
    "id": "fa744a57-d528-4a52-a919-a622ff49216c",
    "links": {
      "self": "http://api.remotelock.dev/notification_subscriptions/fa744a57-d528-4a52-a919-a622ff49216c",
      "subscriber": "http://api.remotelock.dev/notification_subscribers/43ef536c-f252-4a27-80c7-58493b33604f",
      "publisher": "http://api.remotelock.dev/account"
    }
  }
}

Update a notification subscription

Request

Endpoint

PUT /notification_subscriptions/:id

PUT /notification_subscriptions/be464a1a-6a60-4a01-a49f-fa4c78a3427c

Parameters

{
  "attributes": {
    "events": [
      {
        "event_type": "access_person_used"
      },
      {
        "event_type": "acs_door_held_open"
      }
    ]
  }
}
Name Description
attributes[events] [{ "event_type": "a supported event type" }, ...]
attributes[publisher_type] 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] Publisher id
attributes[subscriber_type] Subscriber type: text_notification_subscriber, email_notification_subscriber or webhook_notification_subscriber
attributes[subscriber_id] Subscriber id

Response


200 OK
{
  "data": {
    "type": "notification_subscription",
    "attributes": {
      "events": [
        {
          "event_type": "access_person_used"
        },
        {
          "event_type": "acs_door_held_open"
        }
      ],
      "created_at": "2024-06-03T16:13:19Z",
      "updated_at": "2024-06-03T16:13:19Z",
      "subscriber_id": "813522af-c7e3-4b75-83fa-3e0e4c9762da",
      "subscriber_type": "text_notification_subscriber",
      "publisher_id": "c2eec833-7aea-432d-be6a-18b94d76eceb",
      "publisher_type": "account"
    },
    "id": "be464a1a-6a60-4a01-a49f-fa4c78a3427c",
    "links": {
      "self": "http://api.remotelock.dev/notification_subscriptions/be464a1a-6a60-4a01-a49f-fa4c78a3427c",
      "subscriber": "http://api.remotelock.dev/notification_subscribers/813522af-c7e3-4b75-83fa-3e0e4c9762da",
      "publisher": "http://api.remotelock.dev/accounts/c2eec833-7aea-432d-be6a-18b94d76eceb"
    }
  }
}

Delete a notification subscription

Request

Endpoint

DELETE /notification_subscriptions/:id

DELETE /notification_subscriptions/6f5d1693-11ed-4006-a36d-24d5793d7b20

Parameters

None.

Response


204 No Content

Notifications

Get all notifications

Request

Endpoint

GET /notifications

GET /notifications

Parameters

None.

Response


200 OK
{
  "data": [
    {
      "type": "notification",
      "attributes": {
        "created_at": "2024-06-03T16:13:20Z",
        "updated_at": "2024-06-03T16:13:20Z",
        "subscriber_id": "9b3a031b-0516-451d-abf5-6d04cd4b7e19",
        "subscriber_type": "text_notification_subscriber",
        "publisher_id": "bd5a6db3-2888-4c32-ac8c-5d7e0efc72f6",
        "publisher_type": "lock",
        "event_id": "3bb04470-e5e1-46e1-9bf7-cd555e2238f8",
        "event_type": "unlocked_event"
      },
      "id": "d57ee5f0-7f4f-476d-bfe4-c5faeb1f7702",
      "links": {
        "self": "http://api.remotelock.dev/notifications/d57ee5f0-7f4f-476d-bfe4-c5faeb1f7702",
        "subscriber": "http://api.remotelock.dev/notification_subscribers/9b3a031b-0516-451d-abf5-6d04cd4b7e19",
        "publisher": "http://api.remotelock.dev/devices/bd5a6db3-2888-4c32-ac8c-5d7e0efc72f6",
        "event": "http://api.remotelock.dev/events/3bb04470-e5e1-46e1-9bf7-cd555e2238f8"
      }
    },
    {
      "type": "notification",
      "attributes": {
        "created_at": "2024-06-03T16:13:20Z",
        "updated_at": "2024-06-03T16:13:20Z",
        "subscriber_id": "c92eb7aa-357f-4145-88e0-460d5f4a803e",
        "subscriber_type": "email_notification_subscriber",
        "publisher_id": "bd5a6db3-2888-4c32-ac8c-5d7e0efc72f6",
        "publisher_type": "lock",
        "event_id": "3bb04470-e5e1-46e1-9bf7-cd555e2238f8",
        "event_type": "unlocked_event"
      },
      "id": "12adcbbc-7041-487c-a168-7021347618c3",
      "links": {
        "self": "http://api.remotelock.dev/notifications/12adcbbc-7041-487c-a168-7021347618c3",
        "subscriber": "http://api.remotelock.dev/notification_subscribers/c92eb7aa-357f-4145-88e0-460d5f4a803e",
        "publisher": "http://api.remotelock.dev/devices/bd5a6db3-2888-4c32-ac8c-5d7e0efc72f6",
        "event": "http://api.remotelock.dev/events/3bb04470-e5e1-46e1-9bf7-cd555e2238f8"
      }
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 25,
    "total_count": 2,
    "total_pages": 1
  }
}

Ready PIN Models

Get all ready pin models

Request

Endpoint

GET /ready_pin_models

GET /ready_pin_models

Parameters

None.

Response


200 OK
{
  "data": [
    {
      "type": "ready_pin_model",
      "attributes": {
        "has_long_mode": true,
        "long_mode_hint": null,
        "long_mode_interval": 32,
        "max_duration": 365,
        "has_hourly_granularity": true,
        "name": "KeyInCode / Remotelock",
        "long_mode_start_hour": 8,
        "long_mode_end_hour": 20,
        "created_at": "2024-06-03T16:13:23Z",
        "updated_at": "2024-06-03T16:13:23Z"
      },
      "id": "07b425bb-7488-4813-998a-d60e27905978",
      "links": {
        "self": "http://api.remotelock.dev/ready_pin_models/07b425bb-7488-4813-998a-d60e27905978"
      }
    },
    {
      "type": "ready_pin_model",
      "attributes": {
        "has_long_mode": false,
        "long_mode_hint": null,
        "long_mode_interval": null,
        "max_duration": 365,
        "has_hourly_granularity": true,
        "name": "Igloolock",
        "long_mode_start_hour": null,
        "long_mode_end_hour": null,
        "created_at": "2024-06-03T16:13:23Z",
        "updated_at": "2024-06-03T16:13:23Z"
      },
      "id": "0a8a07c5-a174-4c04-8437-80c8fbf29031",
      "links": {
        "self": "http://api.remotelock.dev/ready_pin_models/0a8a07c5-a174-4c04-8437-80c8fbf29031"
      }
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 25,
    "total_count": 2,
    "total_pages": 1
  }
}

Resort Lock Guests

Get all resort lock guests

Request

Endpoint

GET /resort_lock_guests

GET /resort_lock_guests

Parameters

Name Description
sort Sortable attributes: created_at, name, starts_at, and ends_at, default: created_at ascending

Response


200 OK
{
  "data": [
    {
      "type": "resort_lock_guest",
      "attributes": {
        "name": "John Doe",
        "email": "john.doe@email.com",
        "starts_at": "2024-06-13T16:00:00",
        "ends_at": "2024-06-17T16:00:00",
        "one_time_access": false,
        "status": "upcoming",
        "source": null,
        "guest_source": null,
        "created_at": "2024-06-03T16:13:27Z",
        "updated_at": "2024-06-03T16:13:27Z",
        "pin": "1234567890",
        "resort_lock_id": "a93051c1-c422-4c64-8a4a-bb4657cb1a10"
      },
      "id": "8aa02f98-2a57-4439-8154-aaccf64b80bd",
      "links": {
        "self": "http://api.remotelock.dev/resort_lock_guests/8aa02f98-2a57-4439-8154-aaccf64b80bd",
        "resort_lock": "http://api.remotelock.dev/devices/a93051c1-c422-4c64-8a4a-bb4657cb1a10"
      }
    },
    {
      "type": "resort_lock_guest",
      "attributes": {
        "name": "Carolynn Johnson",
        "email": "antonia_lindgren@homenick-adams.co",
        "starts_at": "2024-06-03T16:00:00",
        "ends_at": "2024-06-05T16:00:00",
        "one_time_access": false,
        "status": "current",
        "source": null,
        "guest_source": null,
        "created_at": "2024-06-03T16:13:27Z",
        "updated_at": "2024-06-03T16:13:27Z",
        "pin": "1589988825",
        "resort_lock_id": "a93051c1-c422-4c64-8a4a-bb4657cb1a10"
      },
      "id": "f290b9fa-26db-442f-9580-a8f43823d7ae",
      "links": {
        "self": "http://api.remotelock.dev/resort_lock_guests/f290b9fa-26db-442f-9580-a8f43823d7ae",
        "resort_lock": "http://api.remotelock.dev/devices/a93051c1-c422-4c64-8a4a-bb4657cb1a10"
      }
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 25,
    "total_count": 2,
    "total_pages": 1
  }
}

Get a resort lock guest

Request

Endpoint

GET /resort_lock_guests/:id

GET /resort_lock_guests/9b380857-9037-446c-be44-bbadd09ca222

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "resort_lock_guest",
    "attributes": {
      "name": "John Doe",
      "email": "john.doe@email.com",
      "starts_at": "2024-06-13T16:00:00",
      "ends_at": "2024-06-17T16:00:00",
      "one_time_access": false,
      "status": "upcoming",
      "source": null,
      "guest_source": null,
      "created_at": "2024-06-03T16:13:28Z",
      "updated_at": "2024-06-03T16:13:28Z",
      "pin": "1234567890",
      "resort_lock_id": "ec450a4f-b673-4d8a-9c28-67d6c9255150"
    },
    "id": "9b380857-9037-446c-be44-bbadd09ca222",
    "links": {
      "self": "http://api.remotelock.dev/resort_lock_guests/9b380857-9037-446c-be44-bbadd09ca222",
      "resort_lock": "http://api.remotelock.dev/devices/ec450a4f-b673-4d8a-9c28-67d6c9255150"
    }
  }
}

Create a resort lock guest

'Resort lock guest' has temporary location access limited by 'starts_at' and 'ends_at' parameters.

Request

Endpoint

POST /resort_lock_guests

POST /resort_lock_guests

Parameters

{
  "attributes": {
    "resort_lock_id": "e90df5a4-523d-4529-9964-16b2f58706d1",
    "name": "Ann Smith",
    "starts_at": "2020-01-02T13:00:00",
    "ends_at": "2021-01-02T16:00:00",
    "email": "shanelle.kuhn@lakin.net"
  }
}
Name Description
attributes[resort_lock_id] required Resort 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] Email
attributes[one_time_access] This PIN is only valid for a single entry between starts_at and ends_at. Default is false.

Response


201 Created
{
  "data": {
    "type": "resort_lock_guest",
    "attributes": {
      "name": "Ann Smith",
      "email": "shanelle.kuhn@lakin.net",
      "starts_at": "2020-01-02T13:00:00",
      "ends_at": "2021-01-02T16:00:00",
      "one_time_access": false,
      "status": "expired",
      "source": null,
      "guest_source": null,
      "created_at": "2024-06-03T16:13:28Z",
      "updated_at": "2024-06-03T16:13:28Z",
      "pin": "40838385724",
      "resort_lock_id": "e90df5a4-523d-4529-9964-16b2f58706d1"
    },
    "id": "18b7462f-3378-4cc2-bd7a-79309cde6b17",
    "links": {
      "self": "http://api.remotelock.dev/resort_lock_guests/18b7462f-3378-4cc2-bd7a-79309cde6b17",
      "resort_lock": "http://api.remotelock.dev/devices/e90df5a4-523d-4529-9964-16b2f58706d1"
    }
  }
}

Update a resort lock guest

Request

Endpoint

PUT /resort_lock_guests/:id

PUT /resort_lock_guests/e0c40f21-652e-4d67-a83d-4b764c83c27c

Parameters

{
  "attributes": {
    "name": "Jonatan Doery"
  }
}
Name Description
attributes[name] Name
attributes[email] Email

Response


200 OK
{
  "data": {
    "type": "resort_lock_guest",
    "attributes": {
      "name": "Jonatan Doery",
      "email": "john.doe@email.com",
      "starts_at": "2024-06-13T16:00:00",
      "ends_at": "2024-06-17T16:00:00",
      "one_time_access": false,
      "status": "upcoming",
      "source": null,
      "guest_source": null,
      "created_at": "2024-06-03T16:13:30Z",
      "updated_at": "2024-06-03T16:13:30Z",
      "pin": "1234567890",
      "resort_lock_id": "aa4422b5-2f81-49ab-8907-6aa3432827d9"
    },
    "id": "e0c40f21-652e-4d67-a83d-4b764c83c27c",
    "links": {
      "self": "http://api.remotelock.dev/resort_lock_guests/e0c40f21-652e-4d67-a83d-4b764c83c27c",
      "resort_lock": "http://api.remotelock.dev/devices/aa4422b5-2f81-49ab-8907-6aa3432827d9"
    }
  }
}

Delete a resort lock guest

Request

Endpoint

DELETE /resort_lock_guests/:id

DELETE /resort_lock_guests/743bdeb7-39e3-41ca-909a-9bd0a2205bb0

Parameters

None.

Response


204 No Content

Send access instructions email to resort lock guest

Request

Endpoint

POST /resort_lock_guests/:id/email/notify

POST /resort_lock_guests/a7f32864-c47a-4ddd-b218-6283a615b7f2/email/notify

Parameters

None.

Response


200 OK

Preview resort lock guest access instructions email

Request

Endpoint

GET /resort_lock_guests/:id/email/preview

GET /resort_lock_guests/acb013da-05cb-49ae-908d-6cdee942f9d6/email/preview

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "access_instruction_guest_email_template",
    "attributes": {
      "subject": "Access instructions",
      "body": "<p>Dear John Doe,</p>\n\n<p>Here is your access code for your upcoming stay with us. Our property is equipped with a keyless entry door lock for your convenience.</p>\n\n<p>Access Code: 123-456-7890</p>\n\n<table cellspacing=\"0\" cellpadding=\"0\" width=\"100%\" id=\"access-instructions\">\n  \n    <tr>\n      <td colspan=\"3\" width=\"100%\" align=\"left\" valign=\"top\">\n        Adaptive methodical structure\n        (17587 Gulgowski Spur)\n      </td>\n    </tr>\n\n    \n      <tr>\n        <td width=\"3%\" align=\"left\" valign=\"top\"></td>\n        <td colspan=\"2\" width=\"97%\" align=\"left\" valign=\"top\">\n          <b>RL-4000 - CL02OGQY0B4FBE01</b>\n        </td>\n      </tr>\n      <tr>\n        <td width=\"3%\" align=\"left\" valign=\"top\"></td>\n        <td width=\"3%\" align=\"left\" valign=\"top\"></td>\n        <td width=\"94%\" align=\"left\" valign=\"top\">\n          \n            \n            <br/>\n            Access times:\n            June 13, 2024  4:00 PM to June 17, 2024  4:00 PM\n            <br/>\n          \n          Access instruction:\n          <p><strong>Lock Instructions:</strong><br>\nThere are two methods to opening the lock on your vacation rental. One is to simply enter the 10 (or 12 if provided) digit Access Code above, followed by the &#39;#&#39; key. The other is to create your own shorter code for use during your stay.</p>\n\n<p>Method 1: Use Default Access Code Enter the following on the lock’s keypad: Access Code, # (Door will unlock)</p>\n\n<p>Method 2: Create Your Own Code (Can be 3 – 5 Digits)<br>\nStep 1: Hold the * key until green light is solid (About 2 seconds), then release.<br>\nStep 2: While green light is lit, enter Access Code, #, Your Own Code, #<br>\nNow you have programmed your own code into the lock. Next step is to unlock the door using the code you just created.<br>\nStep 3: Enter Your Code, # (Door will unlock)</p>\n\n        </td>\n      </tr>\n    \n  \n</table>\n\n<p>If you have any questions, please feel free to call us at (Phone not provided) or email at <a href=\"mailto:mafalda_kerluke@williamson-dicki.co\">mafalda_kerluke@williamson-dicki.co</a>.</p>\n\n<p>Regards,</p>\n\n<p>Lasandra Herman</p>\n",
      "from_name": "Lasandra Herman",
      "reply_to": "mafalda_kerluke@williamson-dicki.co",
      "cc": null,
      "bcc": null
    },
    "links": {
      "self": "http://api.remotelock.dev/access_instruction_guest_email_template/preview"
    }
  }
}

Schedules

Get all schedule types (homogeneous)

Request

Endpoint

GET /schedules

GET /schedules

Parameters

Name Description
[type] Filter by type(s). Supported types: auto_lock_schedule, lock_action_schedule, access_schedule, power_plug_schedule, and thermostat_schedule
sort Sortable attributes: created_at and name, default: created_at ascending

Response


200 OK
{
  "data": [
    {
      "type": "access_schedule",
      "attributes": {
        "name": "Ea et voluptatem nulla.",
        "mon": [
          {
            "start_time": "09:00",
            "end_time": "17:00"
          }
        ],
        "tue": [
          {
            "start_time": "09:00",
            "end_time": "17:00"
          }
        ],
        "wed": [
          {
            "start_time": "09:00",
            "end_time": "17:00"
          }
        ],
        "thu": [
          {
            "start_time": "09:00",
            "end_time": "17:00"
          }
        ],
        "fri": [
          {
            "start_time": "09:00",
            "end_time": "15:00"
          }
        ],
        "sat": [
          {
            "start_time": "09:00",
            "end_time": "15:00"
          }
        ],
        "sun": [
          {
            "start_time": "09:00",
            "end_time": "15:00"
          }
        ],
        "created_at": "2024-06-03T16:13:33Z",
        "updated_at": "2024-06-03T16:13:33Z"
      },
      "id": "3ba751cd-1fd5-4ebc-baa4-b233ad1196d8",
      "links": {
        "self": "http://api.remotelock.dev/schedules/3ba751cd-1fd5-4ebc-baa4-b233ad1196d8"
      }
    },
    {
      "type": "auto_lock_schedule",
      "attributes": {
        "name": "Fugiat iure a culpa.",
        "mon": [
          {
            "time": "09:00",
            "enable": false
          },
          {
            "time": "17:00",
            "enable": true
          }
        ],
        "tue": [
          {
            "time": "09:00",
            "enable": false
          },
          {
            "time": "17:00",
            "enable": true
          }
        ],
        "wed": [
          {
            "time": "09:00",
            "enable": false
          },
          {
            "time": "17:00",
            "enable": true
          }
        ],
        "thu": [
          {
            "time": "09:00",
            "enable": false
          },
          {
            "time": "17:00",
            "enable": true
          }
        ],
        "fri": [
          {
            "time": "09:00",
            "enable": false
          },
          {
            "time": "15:00",
            "enable": true
          }
        ],
        "sat": [
          {
            "time": "09:00",
            "enable": false
          },
          {
            "time": "15:00",
            "enable": true
          }
        ],
        "sun": [
          {
            "time": "09:00",
            "enable": false
          },
          {
            "time": "15:00",
            "enable": true
          }
        ],
        "created_at": "2024-06-03T16:13:33Z",
        "updated_at": "2024-06-03T16:13:33Z"
      },
      "id": "e360d800-e94d-43d1-8ea0-2fcfafc33a91",
      "links": {
        "self": "http://api.remotelock.dev/schedules/e360d800-e94d-43d1-8ea0-2fcfafc33a91"
      }
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 25,
    "total_count": 2,
    "total_pages": 1
  }
}

Get a schedule

Request

Endpoint

GET /schedules/:id

GET /schedules/7a93eb26-9a00-4776-9dc2-fe7d4c46c576

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "access_schedule",
    "attributes": {
      "name": "Velit at soluta necessitatibus.",
      "mon": [
        {
          "start_time": "09:00",
          "end_time": "17:00"
        }
      ],
      "tue": [
        {
          "start_time": "09:00",
          "end_time": "17:00"
        }
      ],
      "wed": [
        {
          "start_time": "09:00",
          "end_time": "17:00"
        }
      ],
      "thu": [
        {
          "start_time": "09:00",
          "end_time": "17:00"
        }
      ],
      "fri": [
        {
          "start_time": "09:00",
          "end_time": "15:00"
        }
      ],
      "sat": [
        {
          "start_time": "09:00",
          "end_time": "15:00"
        }
      ],
      "sun": [
        {
          "start_time": "09:00",
          "end_time": "15:00"
        }
      ],
      "created_at": "2024-06-03T16:13:34Z",
      "updated_at": "2024-06-03T16:13:34Z"
    },
    "id": "7a93eb26-9a00-4776-9dc2-fe7d4c46c576",
    "links": {
      "self": "http://api.remotelock.dev/schedules/7a93eb26-9a00-4776-9dc2-fe7d4c46c576"
    }
  }
}

Update a schedule

Parameters accepted: all used for create

Request

Endpoint

PUT /schedules/:id

PUT /schedules/29089522-744b-4575-a7ec-00839985cd5a

Parameters

{
  "attributes": {
    "name": "New schedule name"
  }
}

None.

Response


200 OK
{
  "data": {
    "type": "access_schedule",
    "attributes": {
      "name": "New schedule name",
      "mon": [
        {
          "start_time": "09:00",
          "end_time": "17:00"
        }
      ],
      "tue": [
        {
          "start_time": "09:00",
          "end_time": "17:00"
        }
      ],
      "wed": [
        {
          "start_time": "09:00",
          "end_time": "17:00"
        }
      ],
      "thu": [
        {
          "start_time": "09:00",
          "end_time": "17:00"
        }
      ],
      "fri": [
        {
          "start_time": "09:00",
          "end_time": "15:00"
        }
      ],
      "sat": [
        {
          "start_time": "09:00",
          "end_time": "15:00"
        }
      ],
      "sun": [
        {
          "start_time": "09:00",
          "end_time": "15:00"
        }
      ],
      "created_at": "2024-06-03T16:13:34Z",
      "updated_at": "2024-06-03T16:13:34Z"
    },
    "id": "29089522-744b-4575-a7ec-00839985cd5a",
    "links": {
      "self": "http://api.remotelock.dev/schedules/29089522-744b-4575-a7ec-00839985cd5a"
    }
  }
}

Delete a schedule

Request

Endpoint

DELETE /schedules/:id

DELETE /schedules/6a374121-0c65-445a-9e58-20fca8431e65

Parameters

None.

Response


204 No Content

Create an access schedule

Request

Endpoint

POST /schedules

POST /schedules

Parameters

{
  "type": "access_schedule",
  "attributes": {
    "name": "Work access schedule",
    "mon": [
      {
        "start_time": "08:00",
        "end_time": "12:00"
      },
      {
        "start_time": "13:00",
        "end_time": "18:00"
      }
    ],
    "wed": [
      {
        "start_time": "08:00",
        "end_time": "12:00"
      },
      {
        "start_time": "13:00",
        "end_time": "18:00"
      }
    ],
    "fri": [
      {
        "start_time": "08:00",
        "end_time": "12:00"
      },
      {
        "start_time": "13:00",
        "end_time": "18:00"
      }
    ],
    "access_exception_id": "da67371a-5689-4bac-9766-82d7c4a44cf0"
  }
}
Name Description
type required access_schedule
attributes[name] required Schedule name
attributes[mon] [{ "start_time": "08:00", "end_time": "12:00" }, ...] or []
attributes[tue] [{ "start_time": "08:00", "end_time": "12:00" }, ...] or []
attributes[wed] [{ "start_time": "08:00", "end_time": "12:00" }, ...] or []
attributes[thu] [{ "start_time": "08:00", "end_time": "12:00" }, ...] or []
attributes[fri] [{ "start_time": "08:00", "end_time": "12:00" }, ...] or []
attributes[sat] [{ "start_time": "08:00", "end_time": "12:00" }, ...] or []
attributes[sun] [{ "start_time": "08:00", "end_time": "12:00" }, ...] or []
attributes[access_exception_id] Access Exception

Response


201 Created
{
  "data": {
    "type": "access_schedule",
    "attributes": {
      "name": "Work access schedule",
      "mon": [
        {
          "start_time": "08:00",
          "end_time": "12:00"
        },
        {
          "start_time": "13:00",
          "end_time": "18:00"
        }
      ],
      "tue": [

      ],
      "wed": [
        {
          "start_time": "08:00",
          "end_time": "12:00"
        },
        {
          "start_time": "13:00",
          "end_time": "18:00"
        }
      ],
      "thu": [

      ],
      "fri": [
        {
          "start_time": "08:00",
          "end_time": "12:00"
        },
        {
          "start_time": "13:00",
          "end_time": "18:00"
        }
      ],
      "sat": [

      ],
      "sun": [

      ],
      "created_at": "2024-06-03T16:13:34Z",
      "updated_at": "2024-06-03T16:13:34Z",
      "access_exception_id": "da67371a-5689-4bac-9766-82d7c4a44cf0"
    },
    "id": "2cffb76e-9fcd-49a7-a68f-b2bf8a615fb6",
    "links": {
      "self": "http://api.remotelock.dev/schedules/2cffb76e-9fcd-49a7-a68f-b2bf8a615fb6",
      "access_exception": "http://api.remotelock.dev/access_exceptions/da67371a-5689-4bac-9766-82d7c4a44cf0"
    }
  }
}

Create an auto lock schedule

Request

Endpoint

POST /schedules

POST /schedules

Parameters

{
  "type": "auto_lock_schedule",
  "attributes": {
    "name": "Switch auto-lock mode in working period",
    "mon": [
      {
        "time": "08:00",
        "enable": false
      },
      {
        "time": "18:00",
        "enable": true
      }
    ],
    "wed": [
      {
        "time": "08:00",
        "enable": false
      },
      {
        "time": "18:00",
        "enable": true
      }
    ],
    "fri": [
      {
        "time": "08:00",
        "enable": false
      },
      {
        "time": "18:00",
        "enable": true
      }
    ]
  }
}
Name Description
type required auto_lock_schedule
attributes[name] required Schedule name
attributes[mon] [{ "time": "08:00", enable: false }, { "time": "18:00", enable: true }, ...] or []
attributes[tue] [{ "time": "08:00", enable: false }, { "time": "18:00", enable: true }, ...] or []
attributes[wed] [{ "time": "08:00", enable: false }, { "time": "18:00", enable: true }, ...] or []
attributes[thu] [{ "time": "08:00", enable: false }, { "time": "18:00", enable: true }, ...] or []
attributes[fri] [{ "time": "08:00", enable: false }, { "time": "18:00", enable: true }, ...] or []
attributes[sat] [{ "time": "08:00", enable: false }, { "time": "18:00", enable: true }, ...] or []
attributes[sun] [{ "time": "08:00", enable: false }, { "time": "18:00", enable: true }, ...] or []

Response


201 Created
{
  "data": {
    "type": "auto_lock_schedule",
    "attributes": {
      "name": "Switch auto-lock mode in working period",
      "mon": [
        {
          "time": "08:00",
          "enable": false
        },
        {
          "time": "18:00",
          "enable": true
        }
      ],
      "tue": [

      ],
      "wed": [
        {
          "time": "08:00",
          "enable": false
        },
        {
          "time": "18:00",
          "enable": true
        }
      ],
      "thu": [

      ],
      "fri": [
        {
          "time": "08:00",
          "enable": false
        },
        {
          "time": "18:00",
          "enable": true
        }
      ],
      "sat": [

      ],
      "sun": [

      ],
      "created_at": "2024-06-03T16:13:34Z",
      "updated_at": "2024-06-03T16:13:34Z"
    },
    "id": "b84df3a3-916e-441a-9b0d-3e88a27f62f9",
    "links": {
      "self": "http://api.remotelock.dev/schedules/b84df3a3-916e-441a-9b0d-3e88a27f62f9"
    }
  }
}

Create a lock action schedule

Request

Endpoint

POST /schedules

POST /schedules

Parameters

{
  "type": "lock_action_schedule",
  "attributes": {
    "name": "Automatically unlock and lock",
    "mon": [
      {
        "time": "08:00",
        "action": "unlock"
      },
      {
        "time": "18:00",
        "action": "lock"
      }
    ],
    "wed": [
      {
        "time": "08:00",
        "action": "unlock"
      },
      {
        "time": "18:00",
        "action": "lock"
      }
    ],
    "fri": [
      {
        "time": "08:00",
        "action": "unlock"
      },
      {
        "time": "18:00",
        "action": "lock"
      }
    ]
  }
}
Name Description
type required lock_action_schedule
attributes[name] required Schedule name
attributes[mon] [{ "time": "08:00", action: "unlock" }, { "time": "18:00", action: "lock" }, ...] or []
attributes[tue] [{ "time": "08:00", action: "unlock" }, { "time": "18:00", action: "lock" }, ...] or []
attributes[wed] [{ "time": "08:00", action: "unlock" }, { "time": "18:00", action: "lock" }, ...] or []
attributes[thu] [{ "time": "08:00", action: "unlock" }, { "time": "18:00", action: "lock" }, ...] or []
attributes[fri] [{ "time": "08:00", action: "unlock" }, { "time": "18:00", action: "lock" }, ...] or []
attributes[sat] [{ "time": "08:00", action: "unlock" }, { "time": "18:00", action: "lock" }, ...] or []
attributes[sun] [{ "time": "08:00", action: "unlock" }, { "time": "18:00", action: "lock" }, ...] or []

Response


201 Created
{
  "data": {
    "type": "lock_action_schedule",
    "attributes": {
      "name": "Automatically unlock and lock",
      "mon": [
        {
          "time": "08:00",
          "action": "unlock"
        },
        {
          "time": "18:00",
          "action": "lock"
        }
      ],
      "tue": [

      ],
      "wed": [
        {
          "time": "08:00",
          "action": "unlock"
        },
        {
          "time": "18:00",
          "action": "lock"
        }
      ],
      "thu": [

      ],
      "fri": [
        {
          "time": "08:00",
          "action": "unlock"
        },
        {
          "time": "18:00",
          "action": "lock"
        }
      ],
      "sat": [

      ],
      "sun": [

      ],
      "created_at": "2024-06-03T16:13:34Z",
      "updated_at": "2024-06-03T16:13:34Z"
    },
    "id": "fd54c63d-5861-4522-80a3-01a644109db9",
    "links": {
      "self": "http://api.remotelock.dev/schedules/fd54c63d-5861-4522-80a3-01a644109db9"
    }
  }
}

Create a power plug schedule

Request

Endpoint

POST /schedules

POST /schedules

Parameters

{
  "type": "power_plug_schedule",
  "attributes": {
    "name": "Automatically turn on and off",
    "mon": [
      {
        "time": "08:00",
        "action": "on"
      },
      {
        "time": "18:00",
        "action": "off"
      }
    ],
    "wed": [
      {
        "time": "08:00",
        "action": "on"
      },
      {
        "time": "18:00",
        "action": "off"
      }
    ],
    "fri": [
      {
        "time": "08:00",
        "action": "on"
      },
      {
        "time": "18:00",
        "action": "off"
      }
    ]
  }
}
Name Description
type required power_plug_schedule
attributes[name] required Schedule name
attributes[mon] [{ "time": "08:00", action: "on" }, { "time": "18:00", action: "off" }, ...] or []
attributes[tue] [{ "time": "08:00", action: "on" }, { "time": "18:00", action: "off" }, ...] or []
attributes[wed] [{ "time": "08:00", action: "on" }, { "time": "18:00", action: "off" }, ...] or []
attributes[thu] [{ "time": "08:00", action: "on" }, { "time": "18:00", action: "off" }, ...] or []
attributes[fri] [{ "time": "08:00", action: "on" }, { "time": "18:00", action: "off" }, ...] or []
attributes[sat] [{ "time": "08:00", action: "on" }, { "time": "18:00", action: "off" }, ...] or []
attributes[sun] [{ "time": "08:00", action: "on" }, { "time": "18:00", action: "off" }, ...] or []

Response


201 Created
{
  "data": {
    "type": "power_plug_schedule",
    "attributes": {
      "name": "Automatically turn on and off",
      "mon": [
        {
          "time": "08:00",
          "action": "on"
        },
        {
          "time": "18:00",
          "action": "off"
        }
      ],
      "tue": [

      ],
      "wed": [
        {
          "time": "08:00",
          "action": "on"
        },
        {
          "time": "18:00",
          "action": "off"
        }
      ],
      "thu": [

      ],
      "fri": [
        {
          "time": "08:00",
          "action": "on"
        },
        {
          "time": "18:00",
          "action": "off"
        }
      ],
      "sat": [

      ],
      "sun": [

      ],
      "created_at": "2024-06-03T16:13:34Z",
      "updated_at": "2024-06-03T16:13:34Z"
    },
    "id": "eeda4779-f980-4feb-ab2f-c06f196a69a1",
    "links": {
      "self": "http://api.remotelock.dev/schedules/eeda4779-f980-4feb-ab2f-c06f196a69a1"
    }
  }
}

Create a thermostat schedule

Request

Endpoint

POST /schedules

POST /schedules

Parameters

{
  "type": "thermostat_schedule",
  "attributes": {
    "name": "Changes thermostat cool/heat temperatures",
    "mon": [
      {
        "time": "08:00",
        "cool": 60,
        "heat": 70
      },
      {
        "time": "18:00",
        "cool": 40,
        "heat": 80
      }
    ],
    "tue": [
      {
        "time": "08:00",
        "cool": 60,
        "heat": 70
      },
      {
        "time": "18:00",
        "cool": 40,
        "heat": 80
      }
    ],
    "wed": [
      {
        "time": "08:00",
        "cool": 60,
        "heat": 70
      },
      {
        "time": "18:00",
        "cool": 40,
        "heat": 80
      }
    ],
    "thu": [
      {
        "time": "08:00",
        "cool": 60,
        "heat": 70
      },
      {
        "time": "18:00",
        "cool": 40,
        "heat": 80
      }
    ],
    "fri": [
      {
        "time": "08:00",
        "cool": 60,
        "heat": 70
      },
      {
        "time": "18:00",
        "cool": 40,
        "heat": 80
      }
    ],
    "sat": [
      {
        "time": "08:00",
        "cool": 60,
        "heat": 70
      },
      {
        "time": "18:00",
        "cool": 40,
        "heat": 80
      }
    ],
    "sun": [
      {
        "time": "08:00",
        "cool": 60,
        "heat": 70
      },
      {
        "time": "18:00",
        "cool": 40,
        "heat": 80
      }
    ]
  }
}
Name Description
type required thermostat_schedule
attributes[name] required Schedule name
attributes[mon] [{ "time": "08:00", "cool": 40, "heat": 80 }, ...]
attributes[tue] [{ "time": "08:00", "cool": 40, "heat": 80 }, ...]
attributes[wed] [{ "time": "08:00", "cool": 40, "heat": 80 }, ...]
attributes[thu] [{ "time": "08:00", "cool": 40, "heat": 80 }, ...]
attributes[fri] [{ "time": "08:00", "cool": 40, "heat": 80 }, ...]
attributes[sat] [{ "time": "08:00", "cool": 40, "heat": 80 }, ...]
attributes[sun] [{ "time": "08:00", "cool": 40, "heat": 80 }, ...]

Response


201 Created
{
  "data": {
    "type": "thermostat_schedule",
    "attributes": {
      "name": "Changes thermostat cool/heat temperatures",
      "mon": [
        {
          "time": "08:00",
          "cool": 60,
          "heat": 70
        },
        {
          "time": "18:00",
          "cool": 40,
          "heat": 80
        }
      ],
      "tue": [
        {
          "time": "08:00",
          "cool": 60,
          "heat": 70
        },
        {
          "time": "18:00",
          "cool": 40,
          "heat": 80
        }
      ],
      "wed": [
        {
          "time": "08:00",
          "cool": 60,
          "heat": 70
        },
        {
          "time": "18:00",
          "cool": 40,
          "heat": 80
        }
      ],
      "thu": [
        {
          "time": "08:00",
          "cool": 60,
          "heat": 70
        },
        {
          "time": "18:00",
          "cool": 40,
          "heat": 80
        }
      ],
      "fri": [
        {
          "time": "08:00",
          "cool": 60,
          "heat": 70
        },
        {
          "time": "18:00",
          "cool": 40,
          "heat": 80
        }
      ],
      "sat": [
        {
          "time": "08:00",
          "cool": 60,
          "heat": 70
        },
        {
          "time": "18:00",
          "cool": 40,
          "heat": 80
        }
      ],
      "sun": [
        {
          "time": "08:00",
          "cool": 60,
          "heat": 70
        },
        {
          "time": "18:00",
          "cool": 40,
          "heat": 80
        }
      ],
      "created_at": "2024-06-03T16:13:35Z",
      "updated_at": "2024-06-03T16:13:35Z"
    },
    "id": "88303803-61e3-48af-a36d-ce96ad5dc4e3",
    "links": {
      "self": "http://api.remotelock.dev/schedules/88303803-61e3-48af-a36d-ce96ad5dc4e3"
    }
  }
}

Users

Get signed in user

Request

Endpoint

GET /user

GET /user

Parameters

None.

Response


200 OK
{
  "data": {
    "type": "user",
    "attributes": {
      "name": "Warner Cole",
      "email": "andy.gulgowski@berge-grimes.info",
      "handle": "andygulgowski",
      "created_at": "2024-06-03T16:14:18Z",
      "updated_at": "2024-06-03T16:14:18Z",
      "primary_account_id": "e216a70b-278f-4c13-b90c-601f0dfc7647",
      "default_account_id": "e216a70b-278f-4c13-b90c-601f0dfc7647"
    },
    "id": "0653579d-c1eb-45c8-9590-d62dfdcd37dd",
    "links": {
      "self": "http://api.remotelock.dev/user",
      "primary_account": "http://api.remotelock.dev/account",
      "default_account": "http://api.remotelock.dev/account"
    }
  }
}