Reemo API

Reemo server API reference

API Reference

The Reemo API is organized around REST. Our API has predictable resource-oriented URLs, accepts JSON-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.
Base URL
https://restapi.reemo.io/v1

Authentication

The Reemo API uses a Secret Key to authenticate requests. You can view your Secret Key in the Reemo Portal.

Your Secret Key carry many privileges, so be sure to keep it secure!
Do not share your secret Secret Key in publicly accessible areas such as GitHub, client-side code, and so forth.

Use your Secret Key by setting it in the Authorization header of your request. Be sure to send this key in each request.

All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.
// Example of using axios to set the Authorization Header
const response = await axios({
    method: 'GET',
    url: '/computers',
    baseURL: 'https://restapi.reemo.io/v1',
    headers: {
        'Content-Type': 'application/json',
        'Authorization': YOUR_SECRET_KEY,
    },
});

Access Control

Because the Reemo API does not manage your users, you are entirely responsible for making sure your users access the proper resources from the Reemo API.

The Reemo API does not do access control except for ensuring that you only access your own computers.
Be sure to implement proper access control between your users and customers.

Everytime you request to connect to a specific computer, you must request a valid computer object from the Reemo API before passing it to the Reemo WebClient. This computer object will contain valid connection tokens to identify with our signal servers. Please note that the token have a short expiration time to avoid replay attacks.

Errors

Reemo uses conventional HTTP response codes to indicate the success or failure of an API request. In general: Codes in the 2xx range indicate success. Codes in the 4xx range indicate an error that failed given the information provided (e.g. a missing parameter). Codes in the 5xx range indicate an error with Reemo's servers (errors can happen).

Computers

Important Note

The computer object has 2 unique identifiers:

id (UUID) is used to identify the computer and communicate with the Reemo API.

_id (UUID) is used to identify the computer on our signal servers. It is stored alongside the Reemo Service executable on your computers and can be supplied by yourself after or before the install to match an UUID inside your own database. You may generate this _id yourself and reserve it on the Reemo API (see "Reserve a specific _id").

List all computers

List all computers associated to your Reemo API account. This request is paginated and provides filter options to search for properties inside the computer objects such as name, hostname, ip etc...
GET https://restapi.reemo.io/v1/computers

Query Parameters

Parameter Type Required Description
filter String No Search for computers matching this filter, leave empty to list all computers
page Integer No Page N° to return (page size is 50)

Response

Property Type Description
rows Array A list of computer objects matching your filter
count Integer Total number of computers on your account

Get a specific computer

Retrieve a computer object by id.
GET https://restapi.reemo.io/v1/computers/:id

Request Parameters

Parameter Type Required Description
id UUID Yes Unique identifier of the computer

Response

Property Type Description
id UUID Unique identifier of the computer
_id UUID Local Unique Identifier of the computer (stored alongside the Reemo Service executable on the computer)
hostname String Hostname
name String Name (customizable)
ip String IP Address
os String/Enum WINDOWS LINUX MACOS
state String/Enum OFFLINE ONLINE BUSY
count Integer Number of Users currently connected to this computer
server String Signal Server where this computer is registered
version String Reemo Version running on this computer
createdAt ISO Date Date of creation
updatedAt ISO Date Date of last update of the computer object
lastAccess ISO Date Date of the last Access to this computer

Connect a specific computer

Request access to a computer object to pass to the Reemo WebClient.
POST https://restapi.reemo.io/v1/computers/:id/connect

Request Parameters

Parameter Type Required Description
id UUID Yes Unique identifier of the computer

Response


A computer object with extra properties.

Please note that the _id property of the computer object is hashed to sign the request and is different from the _id property of the GET /computers/:id request.
Extra Property Type Description
_id String Hashed Local Unique Identifier of the computer
token String Access Token (valid for 60 seconds)

Reserve a computer _id

This is commonly used when you need to match a computer to a record inside your own database. Because the computers does not exists until they register on one of our signal servers, you might need to know which computer registered to your account when deploying them dynamically.

You may pre-register a computer on the Reemo API by reserving its _id, you can then deploy the Reemo Service on the computer and override the _id file with your own identifier. When the computers finally registers on the Reemo API, you can then match it using your specific identifier.
POST https://restapi.reemo.io/v1/computers

Request Body

Parameter Type Required Description
_id UUID Yes Local Unique identifier of the computer to reserve

Response


An OFFLINE computer object with your reserved _id stored. See the section named "Get a specific computer" for more info.

Update a computer

Customize the name of the computer inside the Reemo API.
PUT https://restapi.reemo.io/v1/computers/:id

Request Parameters

Parameter Type Required Description
id UUID Yes Unique identifier of the computer

Request Body

Parameter Type Required Description
name String Yes New name of the computer

Delete an offline computer

Delete a computer from the Reemo API. Please note that only the OFFLINE computers can be deleted (meaning they are not currently connected to our servers).
DELETE https://restapi.reemo.io/v1/computers/:id

Request Parameters

Parameter Type Required Description
id UUID Yes Unique identifier of the computer