Simple In/Out API v4 Documentation

Welcome to the Simple In/Out API! You can use our API to access Simple In/Out data. You can request both read and write access.

The Simple In/Out v4 API is a RESTful (mostly) API protected by OAuth 2.

Rate Limiting

APIv4 is protected by daily rate limits. Currently, your application can access APIv4 up to 10,000 times per 24 hour period. Every request to APIv4 will return with two headers: X-RateLimit-Limit and X-RateLimit-Remaining. X-RateLimit-Limit will indicate the total number of requests that can be made against APIv4 over a 24 hour period (always 10,000 for now). X-RateLimit-Remaining will indicate how many requests you have left.

When you’ve run out of requests, APIv4 will return a HTTP status of 429 indicating Too Many Requests.

Expansions

Some of our APIs allow you to include additional information. This saves on API calls, as you can retrieve related information in the primary call and avoid additional requests.

When an API supports including additional information, it does so via the expand query parameter. This is a comma-delimited list of resources to include. We support expansions via embedding directly into the payload.

The Meta object

Most API payloads include a meta object to provide additional details about the requested resource(s). This includes paging most often, and sometimes additional information about the user making the request. For some payloads there may be additional items in the meta.

Here’s an example of a meta object

{"meta": {
  "paging": {
    "page": 1,
    "page_size": 25,
    "page_count": 2,
    "count": 47,
    "previous_page": null,
    "next_page": 2,
    "first_href": "https://www.simpleinout.com/api/v4/beacons",
    "last_href": "https://www.simpleinout.com/api/v4/beacons?page=2",
    "previous_href": null,
    "next_href": "https://www.simpleinout.com/api/v4/beacons?page=2"
  },
  "last_updated_at": {
    "announcements": 1435258926,
    "beacons": 1435250484,
    "favorites": 1437151284,
    "fences": 1436546484,
    "groups": 1436287284,
    "networks": 1436287284,
    "settings": 1439916084
  },
  emergency: nil
}}

Pagination

Pagination occurs when requesting multiple objects. Information about this appears in the meta object.

Name Description
page the page number currently being returned
page_size the number of results per page
page_count the total number of pages available
count the total number of results
previous_page the number of the previous page
next_page the number of the next page
first_href the URL of the API call for the first page of results
last_href the URL of the API call for the last page of results
previous_href the URL of the API call for the page of results prior to the current page
next_href the URL of the API call for the page of results after the current page

Last Update At

The last_updated_at attribute in the meta object returns the epoch time indicating the last time certain resources have been updated. This applies to the authorized user’s company. By storing these dates, you can discover when resources have been updated without having to poll those resources on a regular basis.

If Modified Since and If None Match

Most of the GET requests to the API support the If-Modified-Since and If-None-Match headers. If these two headers are present, the GET request will only return a payload if the relevant data has been updated since the time specified in the If-Modified-Since header and the ETag in the If-None-Match header. If it has been updated since, the payload will be the same as usual. If the data has not been updated, the return will be empty with a HTTP status of 304 (Not Modified). The format of the time is in the HTTP specification, while the ETag should be the same as that returned when a request has been made previously.

When a GET API returns data, the Last-Modified header will be present providing the exact time it’s been modified. This date should be used for future If-Modified-Since requests. The ETag header will be present providing the hash value representing the returned payload. This hash should be used for future If-None-Match requests.

Range Searching

Some integer or date/time fields can be searched by using operators. This permits exact searches, as well as less than, greater than, or between. For these fields, you have an array of options.

  • For exact matches, simply include the value. Date/time fields use epoch time, so it’s almost impossible to get an exact match to the second. Examples are 18 or 1524168783.
  • For ranges based on a single value, you may prepend a symbol to the front of the value. The symbols <, >, <=, or >= are supported. Examples are <18 or >=1524168783.
  • For between range searches, the .. operator is used in between the two values. This includes the values on both ends, as well as those in between. Examples are 9..18 or 1523854800..1524459599.

Sorting

When requesting multiple objects, most of the time you’ll have some sorting options available. Sorting occurs by passing in the sort query parameter. The value is a comma-delimited string of fields in the order you wish them to be sorted. By default, all fields will sort in ascending fashion, but you can sort in descending fashion by including a - sign before the field. An example of this would be sort=name,-begin_at.

Errors

Error objects in Simple In/Out consist of three parts: code, message, and details.

  • code corresponds with those listed below. These provide context as to what type of error occurred.
  • message is an English plain-text reading of what happened. This should be used for further developer debugging, but should not be relied on to remain consistent over time. While these messages can be displayed to end-users, it is highly discouraged as they can change without notice and they are always going to be in English.
  • details provides an array of information in the case of validation failures. This will typically be populated with 5005 validation errors, though they also can appear with improperly formatted status updates (2002). The format of the objects in the array are key: value pairs, whereby key is the name of a field and value is one of a number of possible strings to indicated more specifically what was invalid with the input. Please note that while the key will typically be a parameter on the object, it can occasionally be base for errors that fail validation but don’t apply to a particular field.

An example of an error payload:

{
  "code": 5005,
  "message": "Validation Failure: Name can't be blank, UUID is invalid, Beacons exceed company limit of 100",
  "details": [
    { "name": "blank" },
    { "uuid": "invalid" },
    { "base": "greater_than" }
  ]
}

Error Codes

1002: Company is Disabled

Either the user’s company was on a trial and the trial has expired or the company has let their subscription to Simple In/Out expire. This error will present itself on almost all APIs and will return with the status code 403.


2002: Status Failure

The status update could not be completed.


5001: Bad Range

The integer or date value/range is invalid.


5002: Unknown Sort

The sort requested does not exist. The full message of this error will provide more explanation.


5003: Unknown Expansion

The expansion requested does not exist. The full message of this error will provide more explanation.


5005: Validation Failure

When attempting to create/update/delete the object, some data was either missing or invalid. The full message of this error will provide more explanation.


5007: Parameters Missing

A required parameter for this API was missing.


5008: Array Required

A parameter which is required to be an array was passed something other than an array.


5009: Unknown Only

The only field requested does not exist. The full message of this error will provide more explanation.


5010: Invalid Float

The floating point number is invalid.


5012: Invalid JSON

The posted JSON body is invalid.


5013: Invalid Page Size of Zero

The page_size parameter cannot be zero.


5014: Invalid mime-type requested

An invalid mime-type was requested.

Error Details

taken

The attribute is not unique

inclusion

The attribute is not in the list of acceptable values

invalid

The attribute is not valid

empty

The attribute cannot be empty

blank

The attribute cannot be blank

too_long

The attribute is too long

not_a_hex

The attribute is not a valid hex color code

not_a_number

The attribute is not a number

not_an_integer

The attribute is not an integer

greater_than

The attribute is greater than a predefined limit

greater_than_or_equal_to

The attribute is greater than or equal to a predefined limit

less_than

The attribute is less than a predefined floor

less_than_or_equal_to

The attribute is greater than or equal to a predefined floor

too_long

The attribute is longer than allowed

too_short

The attribute is shorter than allowed

Forbidden Requests (403)

When the user is authenticated, but doesn’t have the necessary permissions to perform an action, the server will respond with the status code of 403 and include the user’s privileges in the payload.

Example payload:

{
  "company": {
    "id": "1",
    "scheduled_statuses": true
  },
  "user": {
    "id": "5",
    "roles": {
      "name": "Regular User",
      "billing": false,
      "followed_users": false,
      "reminders": false,
      "safeties": false,
      "user_board": true,
      "manage_all_announcements": true,
      "manage_company_and_users": false,
      "manage_groups_and_memberships": false,
      "manage_member_announcements": false,
      "manage_others_archives": false,
      "manage_others_futures": false,
      "manage_others_status": false,
      "manage_own_archives": false,
      "manage_own_futures": true,
      "manage_own_status": true,
      "manage_status_automatically": true,
      "manage_visitor_archives": false,
      "manage_visitor_status": false,
      "manage_visitors": false,
      "view_all_announcements": true,
      "view_member_announcements": false,
      "view_others_archives": true,
      "view_others_futures": true,
      "view_others_reports": false,
      "member_board": false,
      "manage_member_archives": false,
      "manage_member_futures": false,
      "manage_member_status": false,
      "view_member_archives": false,
      "view_member_futures": false,
      "view_member_reports": false,
      "view_user_board_updated_at": true,
      "view_visitor_archives": false,
      "view_visitor_board_updated_at": false,
      "view_visitor_reports": false,
      "visitor_board": true,
      "created_at": 1506268448,
      "updated_at": 1506269853
    }
  }
}

The privileges payload may not exist on all forbidden responses. In the cases when an error code is used, such as when a company is disabled, only the code and message will be returned.

Web Hooks

Web Hooks are a great way to be notified when something happens inside Simple In/Out. When you add a Web Hook URL to Simple In/Out, we’ll send a request to that URL with JSON in the body to tell you about things that have happened.

Currently, this applies to only three event types: status.new, status.schedule, and status.destroy, though many may be added in the future. It is strongly advised that you code against the type attribute on the root of the JSON object to avoid new event types being added in the future having unexpected impacts on your code.

The root JSON keys define the basics and out of the box are compatible with Slack’s incoming webhooks. This also means that the text with be formatted in Markdown. Within the data object is much of the information specific to Simple In/Out, including ids that can be used in combination with APIv4 to request further information.

{
  "username": "Bojack Horseman",
  "email": "bojack@simplymadeapps.com",
  "icon_url": "http://bojackhorseman.com/avatar.gif",
  "text": "*In*: In Hollywoo",
  "type": "status.new",
  "data": {
    "user_id": "34858",
    "status": "in",
    "comment": "In Hollywoo",
    "created_at": 1448046759,
    "admin": {
      "id": "2844", "name": "Princess Carolyn"
    },
    "application": {
      "id": "84774", "name": "Simple In/Out iOS"
    }
  }
}



Announcements

Create a announcement

Creates a new announcement. Once this announcement is created, it will appear in the company’s announcements within the Simple In/Out apps. Users must have a role that permits managing announcements to create announcements. Companies are limited to 100 announcements.

Endpoint

POST /api/v4/announcements

Parameters

Name Description
announcement[message] required (string) the name of the announcement
announcement[push] (boolean) whether this announcement should trigger a push notification to users, defaults to false
announcement[group_id] (string) restrict the announcement to a specific group, defaults to no restrictions
announcement[expires_at] (integer) the epoch time when the announcement should expire, defaults to no expiration
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'user'

Request

Route

POST /api/v4/announcements

Headers

Content-Type: application/json
Authorization: Bearer f8aW75jWY1bcRBv6eXKDo8wYS-Bp8RlAEGwLs2Xe2yw

Body

{
  "announcement": {
    "message": "Evacuate the building",
    "push": false,
    "group_id": "177",
    "expires_at": 1792670899
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/announcements" -d '{"announcement":{"message":"Evacuate the building","push":false,"group_id":"177","expires_at":1792670899}}' -X POST \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer f8aW75jWY1bcRBv6eXKDo8wYS-Bp8RlAEGwLs2Xe2yw"

Response

Simulated Response

Response Fields

Name Description
announcements (object) the newly created announcement attributes

Status

201

Headers

etag: W/"369ef32bd8bd2fb2c068e12642bb7f41"

Body

{
  "announcements": {
    "id": "46",
    "group_id": "177",
    "user_id": "1565",
    "message": "Evacuate the building",
    "push": false,
    "expires_at": 1792670899,
    "created_at": 1792584499,
    "updated_at": 1792584499
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1792584499,
      "beacons": 1789128499,
      "desktop_presences": 1784290099,
      "favorites": 1788869299,
      "fences": 1785499699,
      "groups": 1792584499,
      "networks": 1789646899,
      "roles": 1792584499,
      "settings": 1792584499
    },
    "emergency": null
  }
}

Delete an announcement

Deletes an existing announcement. Users must have a role that permits managing the announcements to delete announcements.

Endpoint

DELETE /api/v4/announcements/:id

Request

Route

DELETE /api/v4/announcements/47

Headers

Content-Type: application/json
Authorization: Bearer HUKY3oHLpf2IwbvS84HNSy_nnQFOkbWKt94zWN6Gxa4

cURL

curl "https://www.simpleinout.com/api/v4/announcements/47" -d '' -X DELETE \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer HUKY3oHLpf2IwbvS84HNSy_nnQFOkbWKt94zWN6Gxa4"

Response

Simulated Response

Status

204

List all announcements

Return a list of all the announcements belonging to the company.

Endpoint

GET /api/v4/announcements

Parameters

Name Description
sort (string) order of the return with optional '-' to denote descending, possibilities include: 'name'
page_size (integer) number of results to return per page, defaults to 25
page (integer) page number of results
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'user'

Request

Route

GET /api/v4/announcements

Headers

Content-Type: application/json
Authorization: Bearer O-Lw83pU2vEQmXt_nwj914hr4hlNq0W7_riwweeZYgI

cURL

curl -g "https://www.simpleinout.com/api/v4/announcements" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer O-Lw83pU2vEQmXt_nwj914hr4hlNq0W7_riwweeZYgI"

Response

Simulated Response

Response Fields

Name Description
announcements (array) an array of announcements

Status

200

Headers

etag: W/"c63be60201d06780bedc54d4b7fb0a61"

Body

{
  "announcements": [
    {
      "id": "48",
      "group_id": null,
      "user_id": "1568",
      "message": "Cum ratione totam sit.",
      "push": false,
      "expires_at": 1792670900,
      "created_at": 1792584500,
      "updated_at": 1792584500
    },
    {
      "id": "49",
      "group_id": null,
      "user_id": "1568",
      "message": "Dolor atque sit quaerat.",
      "push": false,
      "expires_at": 1792670900,
      "created_at": 1792584500,
      "updated_at": 1792584500
    }
  ],
  "meta": {
    "paging": {
      "page": 1,
      "page_size": 25,
      "page_count": 1,
      "count": 2,
      "previous_page": null,
      "next_page": null,
      "first_href": "http://example.org/api/v4/announcements",
      "last_href": "http://example.org/api/v4/announcements",
      "previous_href": null,
      "next_href": null
    },
    "last_updated_at": {
      "announcements": 1792584500,
      "beacons": 1790770099,
      "desktop_presences": 1785499699,
      "favorites": 1792411699,
      "fences": 1786190899,
      "groups": 1789819699,
      "networks": 1788523699,
      "roles": 1792584499,
      "settings": 1792584499
    },
    "emergency": null
  }
}

Authentication

Authorization

Authorization is required to access the Simple In/Out API. This results in a HTTP 302 redirect to simpleinout.com. There, Simple In/Out will ask the user for their credentials and verify they wish to grant your application permission to act on their behalf. If they allow it, Simple In/Out will send a request to your redirect_uri with a code that you can use in the Authorization Code grant to have access and refresh tokens to access the API.

Endpoint

GET /oauth/authorize

Parameters

Name Description
response_type required (string) the type of authorization to use, in this case always 'code'
client_id required (string) your API client key
redirect_uri required (string) the URI to return the user to after authenticating, must match those registered with Simple In/Out
scope required (string) requested scope, either 'read' or 'write', by default 'read'
locale (string) the language for authorization. Available locales: en, en-au, en-ca, en-gb, de, es, fr, fr-ca. Defaults to 'en'

Request

Route

GET /oauth/authorize?response_type=code&client_id=PLACE_YOUR_API_CLIENT_ID_HERE&redirect_uri=https%3A%2F%2Fwww.simplymadeapps.com%2Fredirect%2Furl&scope=write&locale=en

Headers

Content-Type: application/json

Query Parameters

response_type=code
client_id=PLACE_YOUR_API_CLIENT_ID_HERE
redirect_uri=https://www.simplymadeapps.com/redirect/url
scope=write
locale=en

cURL

curl -g "https://www.simpleinout.com/oauth/authorize?response_type=code&client_id=PLACE_YOUR_API_CLIENT_ID_HERE&redirect_uri=https%3A%2F%2Fwww.simplymadeapps.com%2Fredirect%2Furl&scope=write&locale=en" -X GET \
	-H "Content-Type: application/json"

Response

Simulated Response

Status

302

Authorization Code grant

Authorization Code should be used for accessing the API on behalf of a particular user. This is useful for pulling information about the user, or customizing the return of some APIs by the user’s preference.

The first step here is to have your user authorize your app for use. To do this, send your user to our site as noted to the left, passing your client_id and your redirect_uri. We’ll handle asking for the user, authenticating they are who they say they are, and handling the authorization (asking the user for permission on your behalf).

Once your user successfully authorizes your application, they will be redirected back to you. In this response will be a code in the form of a query string. Use this code to request tokens from Simple In/Out. You’ll then receive an access token and refresh token.

Endpoint

POST /oauth/token

Parameters

Name Description
grant_type required (string) type of grant to use
client_id required (string) your API client key
client_secret required (string) your API client secret
code required (string) if using Authorization Code grant, this is the code that is returned from Simple In/Out
redirect_uri required (string) the URI to return the user to after authenticating, must match those registered with Simple In/Out
scope (string) requested scope, either 'read' or 'write', defaults to 'read'

Request

Route

POST /oauth/token

Headers

Content-Type: application/json

Body

{
  "grant_type": "authorization_code",
  "client_id": "YOUR_API_CLIENT_ID",
  "client_secret": "YOUR_API_CLIENT_SECRET",
  "code": "xznG1gjqYOCH82UAsHG9N_Bgh_QwN9GEO7UVg3qTfhQ",
  "redirect_uri": "https://www.simplymadeapps.com/redirect/url"
}

cURL

curl "https://www.simpleinout.com/oauth/token" -d '{"grant_type":"authorization_code","client_id":"YOUR_API_CLIENT_ID","client_secret":"YOUR_API_CLIENT_SECRET","code":"xznG1gjqYOCH82UAsHG9N_Bgh_QwN9GEO7UVg3qTfhQ","redirect_uri":"https://www.simplymadeapps.com/redirect/url"}' -X POST \
	-H "Content-Type: application/json"

Response

Simulated Response

Response Fields

Name Description
access_token (string) the access token used to make API requests
refresh_token (string) used with the Refresh Token grant type to request a new token
token_type (string) identifies the type of token
expires_in (integer) length of time, in seconds, that the token will be honored
scope (string) the scope of the token, either 'read' or 'write'
created_at (integer) the time the token was issued
user (object) the authenticated user's id, company id, and role.

Status

200

Headers

etag: W/"972564e04fcb0fc2f565552addcf3ec6"

Body

{
  "access_token": "QrJ3zeycBL3JagZPjczdCZJEQkS0dLu9-vk6jxG0NPg",
  "token_type": "Bearer",
  "expires_in": 120,
  "refresh_token": "J4nLPrVb7wRCxNHeGpypCvdSBkw9QzR1oR3OTw5Lzxk",
  "scope": "write",
  "created_at": 1792584503,
  "user": {
    "id": "1671",
    "company_id": "1080",
    "announcements_enabled": true,
    "scheduled_statuses": true,
    "visitors_enabled": true,
    "roles": {
      "id": "4602",
      "name": "Administrator",
      "billing": true,
      "followed_users": true,
      "reminders": true,
      "safeties": true,
      "user_board": true,
      "manage_all_announcements": true,
      "manage_company_and_users": true,
      "manage_groups_and_memberships": true,
      "manage_member_announcements": false,
      "manage_others_archives": true,
      "manage_others_futures": true,
      "manage_others_status": true,
      "manage_own_archives": true,
      "manage_own_futures": true,
      "manage_own_status": true,
      "manage_status_automatically": true,
      "manage_visitor_archives": true,
      "manage_visitor_status": true,
      "manage_visitors": true,
      "view_all_announcements": true,
      "view_member_announcements": false,
      "view_others_archives": true,
      "view_others_futures": true,
      "view_others_reports": true,
      "member_board": false,
      "manage_member_archives": false,
      "manage_member_futures": false,
      "manage_member_status": false,
      "view_member_archives": false,
      "view_member_futures": false,
      "view_member_reports": false,
      "view_user_board_updated_at": true,
      "view_visitor_archives": true,
      "view_visitor_board_updated_at": true,
      "view_visitor_reports": true,
      "visitor_board": true,
      "created_at": 1792584503,
      "updated_at": 1792584503
    }
  }
}

Refresh Token grant

Refresh Token should be used to renew your access token in the event that it has expired. This is useful for regaining access without again having to as the user for credentials.

Endpoint

POST /oauth/token

Parameters

Name Description
grant_type required (string) type of grant to use, in this case always 'refresh_token'
client_id required (string) your API client key
client_secret required (string) your API client secret
refresh_token required (string) your refresh token

Request

Route

POST /oauth/token

Headers

Content-Type: application/json

Body

{
  "grant_type": "refresh_token",
  "client_id": "YOUR_API_CLIENT_ID",
  "client_secret": "YOUR_API_CLIENT_SECRET",
  "refresh_token": "ulx08oxf33l911kggeo6qh1edjd4x693"
}

cURL

curl "https://www.simpleinout.com/oauth/token" -d '{"grant_type":"refresh_token","client_id":"YOUR_API_CLIENT_ID","client_secret":"YOUR_API_CLIENT_SECRET","refresh_token":"ulx08oxf33l911kggeo6qh1edjd4x693"}' -X POST \
	-H "Content-Type: application/json"

Response

Simulated Response

Response Fields

Name Description
access_token (string) the access token used to make API requests
refresh_token (string) used with the Refresh Token grant type to request a new token
token_type (string) identifies the type of token
expires_in (integer) length of time, in seconds, that the token will be honored
scope (string) the scope of the token, either 'read' or 'write'
created_at (integer) the time the token was issued
user (object) the authenticated user's id and role.

Status

200

Headers

etag: W/"f3898e1c50cefd45693935ac564a39c8"

Body

{
  "access_token": "82AcKqCmHQ2fSgMOSB5zNVgEiOQmGj2YuLfvehnLSqU",
  "token_type": "Bearer",
  "expires_in": 604800,
  "refresh_token": "gTf2tHmM76HtvsfVF-tfnYBVA0txVf9NoC29lZTSL6E",
  "scope": "write",
  "created_at": 1792584503,
  "user": {
    "id": "1672",
    "company_id": "1081",
    "announcements_enabled": true,
    "scheduled_statuses": true,
    "visitors_enabled": true,
    "roles": {
      "id": "4606",
      "name": "Administrator",
      "billing": true,
      "followed_users": true,
      "reminders": true,
      "safeties": true,
      "user_board": true,
      "manage_all_announcements": true,
      "manage_company_and_users": true,
      "manage_groups_and_memberships": true,
      "manage_member_announcements": false,
      "manage_others_archives": true,
      "manage_others_futures": true,
      "manage_others_status": true,
      "manage_own_archives": true,
      "manage_own_futures": true,
      "manage_own_status": true,
      "manage_status_automatically": true,
      "manage_visitor_archives": true,
      "manage_visitor_status": true,
      "manage_visitors": true,
      "view_all_announcements": true,
      "view_member_announcements": false,
      "view_others_archives": true,
      "view_others_futures": true,
      "view_others_reports": true,
      "member_board": false,
      "manage_member_archives": false,
      "manage_member_futures": false,
      "manage_member_status": false,
      "view_member_archives": false,
      "view_member_futures": false,
      "view_member_reports": false,
      "view_user_board_updated_at": true,
      "view_visitor_archives": true,
      "view_visitor_board_updated_at": true,
      "view_visitor_reports": true,
      "visitor_board": true,
      "created_at": 1792584503,
      "updated_at": 1792584503
    }
  }
}

Revoke a token

Revokes a token, rendering it invalid.

Endpoint

POST /oauth/revoke

Parameters

Name Description
client_id required (string) your API client key
client_secret required (string) your API client secret
token required (string) the token to revoke

Request

Route

POST /oauth/revoke

Headers

Content-Type: application/json

Body

{
  "client_id": "3353976760377",
  "client_secret": "9795175912630",
  "token": "bkQsYRkTFdVwrb-iNfdqcuuhP-p8mZbdbrpfR9MWLP8"
}

cURL

curl "https://www.simpleinout.com/oauth/revoke" -d '{"client_id":"3353976760377","client_secret":"9795175912630","token":"bkQsYRkTFdVwrb-iNfdqcuuhP-p8mZbdbrpfR9MWLP8"}' -X POST \
	-H "Content-Type: application/json"

Response

Simulated Response

Status

200

Headers

etag: W/"44136fa355b3678a1146ad16f7e8649e"

Body

{}

Token information

Provides details about the OAuth token.

Endpoint

GET /oauth/token/info

Request

Route

GET /oauth/token/info

Headers

Content-Type: application/json
Authorization: Bearer LBxQRlEgY7jKG0CqZe1ZhmKtbl36h81nkQsTe6xokeA

cURL

curl -g "https://www.simpleinout.com/oauth/token/info" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer LBxQRlEgY7jKG0CqZe1ZhmKtbl36h81nkQsTe6xokeA"

Response

Simulated Response

Response Fields

Name Description
resource_owner_id (integer) the id of the user
scopes (array) the scopes this token is authorized to use
expires_in_seconds (integer) the number of seconds until the token expires
application (object) information about the application
created_at (integer) the time the token was issued

Status

200

Headers

etag: W/"05206f9d4920b0b2b31f45c551df89f3"

Body

{
  "resource_owner_id": 1666,
  "scope": [
    "read"
  ],
  "expires_in": 604800,
  "application": {
    "uid": "9931843862740"
  },
  "created_at": 1792584503
}

Beacons

Create a beacon

Creates a new beacon. Once this beacon is created, it will appear in the company’s beacons within the Simple In/Out apps. The UUID can then be added to a hardware beacon to broadcast. Users must have a role that permits managing the company to create beacons. Companies are limited to 100 Beacons.

Endpoint

POST /api/v4/beacons

Parameters

Name Description
beacon[name] required (string) the name of the beacon
beacon[uuid] (string) the unique beacon identifier
beacon[comment_on_entry] (string) the comment applied to status updates on entry, defaults to 'In at {name}'
beacon[comment_on_exit] (string) the comment applied to status updates on exit, defaults to 'Left {name}'
beacon[status_on_entry] (string) the status to apply on entry: 'in', 'remote', 'busy', 'break', 'out', 'sick', 'vacation', or 'off', defaults to 'in'
beacon[status_on_exit] (string) the status to apply on exit: 'in', 'remote', 'busy', 'break', 'out', 'sick', 'vacation', or 'off', defaults to 'out'

Request

Route

POST /api/v4/beacons

Headers

Content-Type: application/json
Authorization: Bearer lTr__xILEkVepm2ANDGEKTL2Oz6BV8ma31lDfdWJsuI

Body

{
  "beacon": {
    "name": "My Office",
    "uuid": "6EA4801F-4D41-4114-AFA7-7EC977C81B41"
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/beacons" -d '{"beacon":{"name":"My Office","uuid":"6EA4801F-4D41-4114-AFA7-7EC977C81B41"}}' -X POST \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer lTr__xILEkVepm2ANDGEKTL2Oz6BV8ma31lDfdWJsuI"

Response

Simulated Response

Response Fields

Name Description
beacons (object) the newly created beacon attributes

Status

201

Headers

etag: W/"5dbf56a7266f7df4040990d92302b035"

Body

{
  "beacons": {
    "id": "47",
    "name": "My Office",
    "uuid": "6EA4801F-4D41-4114-AFA7-7EC977C81B41",
    "comment_on_entry": "In at My Office",
    "comment_on_exit": "Left My Office",
    "entry": true,
    "exit": true,
    "status_on_entry": "in",
    "status_on_exit": "out",
    "created_at": 1792584505,
    "updated_at": 1792584505
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1789301305,
      "beacons": 1792584505,
      "desktop_presences": 1787659705,
      "favorites": 1788696505,
      "fences": 1790338105,
      "groups": 1788091705,
      "networks": 1788696505,
      "roles": 1792584505,
      "settings": 1792584505
    },
    "emergency": null
  }
}

Delete a beacon

Deletes an existing beacon. Users must have a role that permits managing the company to delete beacons.

Endpoint

DELETE /api/v4/beacons/:id

Request

Route

DELETE /api/v4/beacons/44

Headers

Content-Type: application/json
Authorization: Bearer pmYXtbUh99zqd50iLDLzAkfAX01yqPuhkVWq59P2jOo

cURL

curl "https://www.simpleinout.com/api/v4/beacons/44" -d '' -X DELETE \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer pmYXtbUh99zqd50iLDLzAkfAX01yqPuhkVWq59P2jOo"

Response

Simulated Response

Status

204

List all beacons

Return a list of all the beacons belonging to the company.

Endpoint

GET /api/v4/beacons

Parameters

Name Description
sort (string) order of the return with optional '-' to denote descending, possibilities include: 'name'
page_size (integer) number of results to return per page, defaults to 25
page (integer) page number of results

Request

Route

GET /api/v4/beacons

Headers

Content-Type: application/json
Authorization: Bearer GgYVq-8WkWoWCusG8x3VCLT6UmriW8O8QfQHkfQMmvw

cURL

curl -g "https://www.simpleinout.com/api/v4/beacons" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer GgYVq-8WkWoWCusG8x3VCLT6UmriW8O8QfQHkfQMmvw"

Response

Simulated Response

Response Fields

Name Description
beacons (array) an array of beacons

Status

200

Headers

etag: W/"2fe7ea1e3bee2b0b2ddf9473b059cf38"

Body

{
  "beacons": [
    {
      "id": "45",
      "name": "3 - West Alphonsofort",
      "uuid": "74DA11BC-46A3-4F65-8D7D-405481FAB352",
      "comment_on_entry": "In at 3 - West Alphonsofort",
      "comment_on_exit": "Left 3 - West Alphonsofort",
      "entry": true,
      "exit": true,
      "status_on_entry": "in",
      "status_on_exit": "out",
      "created_at": 1792584505,
      "updated_at": 1792584505
    },
    {
      "id": "46",
      "name": "4 - West Brentshire",
      "uuid": "7BF6F6C2-9A2C-4DBA-8604-611BB0C58F07",
      "comment_on_entry": "In at 4 - West Brentshire",
      "comment_on_exit": "Left 4 - West Brentshire",
      "entry": true,
      "exit": true,
      "status_on_entry": "in",
      "status_on_exit": "out",
      "created_at": 1792584505,
      "updated_at": 1792584505
    }
  ],
  "meta": {
    "paging": {
      "page": 1,
      "page_size": 25,
      "page_count": 1,
      "count": 2,
      "previous_page": null,
      "next_page": null,
      "first_href": "http://example.org/api/v4/beacons",
      "last_href": "http://example.org/api/v4/beacons",
      "previous_href": null,
      "next_href": null
    },
    "last_updated_at": {
      "announcements": 1787141305,
      "beacons": 1792584505,
      "desktop_presences": 1784808505,
      "favorites": 1789214905,
      "fences": 1789733305,
      "groups": 1784030905,
      "networks": 1784808505,
      "roles": 1792584505,
      "settings": 1792584505
    },
    "emergency": null
  }
}

Update a beacon

Updates an existing beacon. Please note that if the UUID of the beacon is updated, any corresponding hardware must also be updated to broadcast the new UUID. Users must have a role that permits managing the company to update beacons.

Endpoint

PATCH /api/v4/beacons/:id

Parameters

Name Description
beacon[name] (string) the name of the beacon
beacon[uuid] (string) the unique beacon identifier
beacon[comment_on_entry] (string) the comment applied to status updates on entry, defaults to 'In at {name}'
beacon[comment_on_exit] (string) the comment applied to status updates on exit, defaults to 'Left {name}'
beacon[status_on_entry] (string) the status to apply on entry: 'in', 'remote', 'busy', 'break', 'out', 'sick', 'vacation', or 'off', defaults to 'in'
beacon[status_on_exit] (string) the status to apply on exit: 'in', 'remote', 'busy', 'break', 'out', 'sick', 'vacation', or 'off', defaults to 'out'

Request

Route

PATCH /api/v4/beacons/43

Headers

Content-Type: application/json
Authorization: Bearer _WdjNpWsiooMO5XzHaHA7RzTbHmUbJ_sUoHS8vQWdQQ

Body

{
  "beacon": {
    "name": "My Renamed Office"
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/beacons/43" -d '{"beacon":{"name":"My Renamed Office"}}' -X PATCH \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer _WdjNpWsiooMO5XzHaHA7RzTbHmUbJ_sUoHS8vQWdQQ"

Response

Simulated Response

Response Fields

Name Description
beacons (object) the newly updated beacon attributes

Status

200

Headers

etag: W/"3f835b72013306bc6ee794e0d766bada"

Body

{
  "beacons": {
    "id": "43",
    "name": "My Renamed Office",
    "uuid": "5E06CB98-31B3-406C-8997-5F76A9DBC75D",
    "comment_on_entry": "In at 1 - Port Lasandraborough",
    "comment_on_exit": "Left 1 - Port Lasandraborough",
    "entry": true,
    "exit": true,
    "status_on_entry": "in",
    "status_on_exit": "out",
    "created_at": 1792584505,
    "updated_at": 1792584505
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1787314105,
      "beacons": 1792584505,
      "desktop_presences": 1789474105,
      "favorites": 1788782905,
      "fences": 1792066105,
      "groups": 1790597305,
      "networks": 1788610105,
      "roles": 1792584505,
      "settings": 1792584505
    },
    "emergency": null
  }
}

Companies

Retrieve the current company

Return the company the authorized user belongs to.

Endpoint

GET /api/v4/companies/my

Parameters

Name Description
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'billing', 'beacons', 'fences', 'groups', 'favorites', 'networks', 'roles'

Request

Route

GET /api/v4/companies/my

Headers

Content-Type: application/json
Authorization: Bearer wh-G0_G1aJkChpzuVA8Qs4UHYcWY8l9LajAA2a49HGg

cURL

curl -g "https://www.simpleinout.com/api/v4/companies/my" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer wh-G0_G1aJkChpzuVA8Qs4UHYcWY8l9LajAA2a49HGg"

Response

Simulated Response

Response Fields

Name Description
companies[name] (string) the authorized user's company name
companies[logo_url] (string) url of an image to be used as a fullscreen logo
companies[default_role_id] (string) the unique identifier for the default role
companies[scheduled_statuses] (boolean) whether Scheduled Statuses feature is enabled
companies[announcements_enabled] (boolean) whether announcements are enabled for the company
companies[visitors_enabled] (boolean) whether visitors are enabled for the company
companies[available_statuses] (array) the statuses that are available to the company
companies[visitor_required_fields] (array) the fields required when creating a visitor
companies[created_at] (integer) epoch time the company was created

Status

200

Headers

etag: W/"2687a14a93f9c2bab5e04ee84d304447"

Body

{
  "companies": {
    "id": "1058",
    "announcements_enabled": true,
    "available_statuses": [
      "in",
      "out"
    ],
    "name": "Anderson, Aufderhar and Rempel",
    "scheduled_statuses": true,
    "visitors_enabled": true,
    "default_role_id": "4512",
    "logo_url": null,
    "visitor_required_fields": [
      "name"
    ],
    "created_at": 1792584502
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1790942902,
      "beacons": 1789214902,
      "desktop_presences": 1784030902,
      "favorites": 1792066102,
      "fences": 1792325302,
      "groups": 1788437302,
      "networks": 1785326902,
      "roles": 1792584502,
      "settings": 1792584502
    },
    "emergency": null
  }
}

Futures

Delete a future status

Deletes an existing scheduled status. The company must have scheduled statuses turned on. Users must have a role that permits managing their own scheduled statuses to delete one of their scheduled statuses. Users must have a role that permits managing the scheduled statuses of others to delete another user’s scheduled status.

Endpoint

DELETE /api/v4/futures/:id

Request

Route

DELETE /api/v4/futures/67

Headers

Content-Type: application/json
Authorization: Bearer OT5SDGtOtBPx04cexrAQriFoVh6NjkZxAL8TZudgcQ0

cURL

curl "https://www.simpleinout.com/api/v4/futures/67" -d '' -X DELETE \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer OT5SDGtOtBPx04cexrAQriFoVh6NjkZxAL8TZudgcQ0"

Response

Simulated Response

Status

204

List future statuses

List all the scheduled statuses. The company must have scheduled statuses turned on. Users must have a role that permits viewing the scheduled statuses of others or only the authorized user’s scheduled statuses will be returned.

Endpoint

GET /api/v4/futures

Parameters

Name Description
page_size (integer) number of results to return per page, defaults to 25
page (integer) page number of results
status (string) the status: 'in', 'remote', 'busy', 'break', 'out', 'sick', or 'vacation'
comment (string) the comment, case sensitive, included with the status change
apply_at (string) a date range string for the time this status will be added
user_id (string) the ID of a particular user
sort (string) order of the return with optional '-' to denote descending, possibilities include: 'apply_at', 'status', 'comment'"
sort_locale (string) the locale to use when sorting by comment, defaults to English (US)
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'user', 'changed_by_user'

Request

Route

GET /api/v4/futures

Headers

Content-Type: application/json
Authorization: Bearer MyX3rcL4ObU5a37xOiKCeMUYf5tmS01d6_MdzpARiK0

cURL

curl -g "https://www.simpleinout.com/api/v4/futures" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer MyX3rcL4ObU5a37xOiKCeMUYf5tmS01d6_MdzpARiK0"

Response

Simulated Response

Response Fields

Name Description
futures (array) an array of matching future statuses

Status

200

Headers

etag: W/"485657c6eb23391d41847a3dd135d537"

Body

{
  "futures": [
    {
      "id": "65",
      "status": "out",
      "comment": "On Vacation, back Monday",
      "completed": false,
      "apply_at": 1795266000,
      "end_at": 1795438800,
      "user_id": "1612",
      "changed_by_user_id": null
    },
    {
      "id": "66",
      "status": "out",
      "comment": "At the conference this week",
      "completed": false,
      "apply_at": 1808308800,
      "end_at": null,
      "user_id": "1612",
      "changed_by_user_id": null
    }
  ],
  "meta": {
    "paging": {
      "page": 1,
      "page_size": 25,
      "page_count": 1,
      "count": 2,
      "previous_page": null,
      "next_page": null,
      "first_href": "http://example.org/api/v4/futures",
      "last_href": "http://example.org/api/v4/futures",
      "previous_href": null,
      "next_href": null
    },
    "last_updated_at": {
      "announcements": 1785931701,
      "beacons": 1785931701,
      "desktop_presences": 1787314101,
      "favorites": 1790338101,
      "fences": 1789906101,
      "groups": 1787141301,
      "networks": 1787141301,
      "roles": 1792584501,
      "settings": 1792584501
    },
    "emergency": null
  }
}

Geofences

Create a fence

Creates a new fence. Once this fence is created, it will appear in the company’s fences within the Simple In/Out apps and website. Users must have a role that permits managing the company to create fences. Companies are limited to 150 Geofences.

Endpoint

POST /api/v4/fences

Parameters

Name Description
fence[name] required (string) the name of the fence
fence[latitude] required (float) the latitude of the center point of the fence
fence[longitude] required (float) the longitude of the center point of the fence
fence[radius] required (integer) the radius of the fence, in meters
fence[comment_on_entry] (string) the comment applied to status updates on entry, defaults to 'In at {name}'
fence[comment_on_exit] (string) the comment applied to status updates on exit, defaults to 'Left {name}'
fence[status_on_entry] (string) the status to apply on entry: 'in', 'remote', 'busy', 'break', 'out', 'sick', 'vacation', or 'off', defaults to 'in'
fence[status_on_exit] (string) the status to apply on exit: 'in', 'remote', 'busy', 'break', 'out', 'sick', 'vacation', or 'off', defaults to 'out'

Request

Route

POST /api/v4/fences

Headers

Content-Type: application/json
Authorization: Bearer qugaVEGb8XklEodpLX62oPyFmeAAdyUrhNkUTUu0dJE

Body

{
  "fence": {
    "name": "My Office",
    "latitude": 46.877931,
    "longitude": -96.787459,
    "radius": 150
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/fences" -d '{"fence":{"name":"My Office","latitude":46.877931,"longitude":-96.787459,"radius":150}}' -X POST \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer qugaVEGb8XklEodpLX62oPyFmeAAdyUrhNkUTUu0dJE"

Response

Simulated Response

Response Fields

Name Description
fences (object) the newly created fence attributes

Status

201

Headers

etag: W/"eee5dc5b710c2c1dfd2b5a549aed8f0a"

Body

{
  "fences": {
    "id": "38",
    "name": "My Office",
    "latitude": "46.877931",
    "longitude": "-96.787459",
    "radius": 150,
    "comment_on_entry": "In at My Office",
    "comment_on_exit": "Left My Office",
    "entry": true,
    "exit": true,
    "status_on_entry": "in",
    "status_on_exit": "out",
    "created_at": 1792584501,
    "updated_at": 1792584501
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1785413301,
      "beacons": 1790942901,
      "desktop_presences": 1785586101,
      "favorites": 1784462901,
      "fences": 1792584501,
      "groups": 1786795701,
      "networks": 1789560501,
      "roles": 1792584501,
      "settings": 1792584501
    },
    "emergency": null
  }
}

Delete a fence

Deletes an existing fence. Users must have a role that permits managing the company to delete fences.

Endpoint

DELETE /api/v4/fences/:id

Request

Route

DELETE /api/v4/fences/39

Headers

Content-Type: application/json
Authorization: Bearer A2OkLm9v0KET7J4s71DjtFjiNrJ1g0wpbjAuxStgggs

cURL

curl "https://www.simpleinout.com/api/v4/fences/39" -d '' -X DELETE \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer A2OkLm9v0KET7J4s71DjtFjiNrJ1g0wpbjAuxStgggs"

Response

Simulated Response

Status

204

List all fences

Return a list of all the fences belonging to the company.

Endpoint

GET /api/v4/fences

Parameters

Name Description
sort (string) order of the return with optional '-' to denote descending, possibilities include: 'name', 'radius
page_size (integer) number of results to return per page, defaults to 25
page (integer) page number of results

Request

Route

GET /api/v4/fences

Headers

Content-Type: application/json
Authorization: Bearer vRNlA07AHENcdBRiDk5tsEcUOiMuFVOWLSgjCvheabw

cURL

curl -g "https://www.simpleinout.com/api/v4/fences" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer vRNlA07AHENcdBRiDk5tsEcUOiMuFVOWLSgjCvheabw"

Response

Simulated Response

Response Fields

Name Description
fences (array) an array of fences

Status

200

Headers

etag: W/"f45606cf9fd3294652ede2d5b2164ad7"

Body

{
  "fences": [
    {
      "id": "36",
      "name": "1 - North Kirsten",
      "latitude": "-78.836477144",
      "longitude": "-144.6572417336",
      "radius": 10838,
      "comment_on_entry": "In at 1 - North Kirsten",
      "comment_on_exit": "Left 1 - North Kirsten",
      "entry": true,
      "exit": true,
      "status_on_entry": "in",
      "status_on_exit": "out",
      "created_at": 1792584501,
      "updated_at": 1792584501
    },
    {
      "id": "37",
      "name": "2 - Luciostad",
      "latitude": "56.70785819",
      "longitude": "159.6390218782",
      "radius": 3405,
      "comment_on_entry": "In at 2 - Luciostad",
      "comment_on_exit": "Left 2 - Luciostad",
      "entry": true,
      "exit": true,
      "status_on_entry": "in",
      "status_on_exit": "out",
      "created_at": 1792584501,
      "updated_at": 1792584501
    }
  ],
  "meta": {
    "paging": {
      "page": 1,
      "page_size": 25,
      "page_count": 1,
      "count": 2,
      "previous_page": null,
      "next_page": null,
      "first_href": "http://example.org/api/v4/fences",
      "last_href": "http://example.org/api/v4/fences",
      "previous_href": null,
      "next_href": null
    },
    "last_updated_at": {
      "announcements": 1785499701,
      "beacons": 1791115701,
      "desktop_presences": 1790942901,
      "favorites": 1784549301,
      "fences": 1792584501,
      "groups": 1791115701,
      "networks": 1784203701,
      "roles": 1792584501,
      "settings": 1792584501
    },
    "emergency": null
  }
}

Update a fence

Updates an existing fence. Users must have a role that permits managing the company to update fences.

Endpoint

PATCH /api/v4/fences/:id

Parameters

Name Description
fence[name] (string) the name of the fence
fence[latitude] (float) the latitude of the center point of the fence
fence[longitude] (float) the longitude of the center point of the fence
fence[radius] (integer) the radius of the fence, in meters
fence[comment_on_entry] (string) the comment applied to status updates on entry, defaults to 'In at {name}'
fence[comment_on_exit] (string) the comment applied to status updates on exit, defaults to 'Left {name}'
fence[status_on_entry] (string) the status to apply on entry: 'in', 'remote', 'busy', 'break', 'out', 'sick', 'vacation', or 'off', defaults to 'in'
fence[status_on_exit] (string) the status to apply on exit: 'in', 'remote', 'busy', 'break', 'out', 'sick', 'vacation', or 'off', defaults to 'out'

Request

Route

PATCH /api/v4/fences/40

Headers

Content-Type: application/json
Authorization: Bearer Ci4ZyCyC_AsFkAzvsn_hl2L_Q9E5O9qNPzsElcLDbhs

Body

{
  "fence": {
    "name": "My Renamed Geofence"
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/fences/40" -d '{"fence":{"name":"My Renamed Geofence"}}' -X PATCH \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer Ci4ZyCyC_AsFkAzvsn_hl2L_Q9E5O9qNPzsElcLDbhs"

Response

Simulated Response

Response Fields

Name Description
fences (object) the newly updated fence attributes

Status

200

Headers

etag: W/"5cebecf8673179e4701342087515d57d"

Body

{
  "fences": {
    "id": "40",
    "name": "My Renamed Geofence",
    "latitude": "16.202953712",
    "longitude": "151.740929791",
    "radius": 13969,
    "comment_on_entry": "In at 4 - New Rosena",
    "comment_on_exit": "Left 4 - New Rosena",
    "entry": true,
    "exit": true,
    "status_on_entry": "in",
    "status_on_exit": "out",
    "created_at": 1792584501,
    "updated_at": 1792584501
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1784462901,
      "beacons": 1786968501,
      "desktop_presences": 1788005301,
      "favorites": 1785067701,
      "fences": 1792584501,
      "groups": 1786018101,
      "networks": 1785499701,
      "roles": 1792584501,
      "settings": 1792584501
    },
    "emergency": null
  }
}

Groups

Create a group

Creates a new group. Once this group is created, it will appear in the company’s groups within the Simple In/Out apps and website. Users must have a role that permits managing groups/memberships to create groups. Companies are limited to 100 Groups.

Endpoint

POST /api/v4/groups

Parameters

Name Description
group[name] required (string) the name of the group

Request

Route

POST /api/v4/groups

Headers

Content-Type: application/json
Authorization: Bearer 6pVcku-rg9pOY5FFa9qXEMg8zWCx06v8uvrEIGpzXBQ

Body

{
  "group": {
    "name": "New Department"
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/groups" -d '{"group":{"name":"New Department"}}' -X POST \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer 6pVcku-rg9pOY5FFa9qXEMg8zWCx06v8uvrEIGpzXBQ"

Response

Simulated Response

Response Fields

Name Description
groups (object) the newly created group attributes

Status

201

Headers

etag: W/"ef715ccb0dc938e95d6b856d2aacca90"

Body

{
  "groups": {
    "id": "179",
    "name": "New Department"
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1786968503,
      "beacons": 1787400503,
      "desktop_presences": 1787227703,
      "favorites": 1790942903,
      "fences": 1790251703,
      "groups": 1792584503,
      "networks": 1785413303,
      "roles": 1792584503,
      "settings": 1792584503
    },
    "emergency": null
  }
}

Delete a group

Deletes an existing group. Users must have a role that permits managing groups/memberships to delete groups.

Endpoint

DELETE /api/v4/groups/:id

Request

Route

DELETE /api/v4/groups/180

Headers

Content-Type: application/json
Authorization: Bearer TSVr3WLcw880uQIK7Yfdv8MqXvYVR_Y28ztYiZE8mU4

cURL

curl "https://www.simpleinout.com/api/v4/groups/180" -d '' -X DELETE \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer TSVr3WLcw880uQIK7Yfdv8MqXvYVR_Y28ztYiZE8mU4"

Response

Simulated Response

Status

204

List all groups

Return a list of all the groups belonging to the company.

Endpoint

GET /api/v4/groups

Parameters

Name Description
sort (string) order of the return with optional '-' to denote descending, possibilities include: 'name'
page_size (integer) number of results to return per page, defaults to 25
page (integer) page number of results

Request

Route

GET /api/v4/groups

Headers

Content-Type: application/json
Authorization: Bearer icre1YJeIjAudOVgQle1bUZUYk_8CYr6NRzlUYx59p0

cURL

curl -g "https://www.simpleinout.com/api/v4/groups" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer icre1YJeIjAudOVgQle1bUZUYk_8CYr6NRzlUYx59p0"

Response

Simulated Response

Response Fields

Name Description
groups (array) an array of groups

Status

200

Headers

etag: W/"db802c8182091301c710ae7f94c7ddda"

Body

{
  "groups": [
    {
      "id": "181",
      "name": "Kemmer LLC4"
    },
    {
      "id": "182",
      "name": "Feeney-Schiller5"
    }
  ],
  "meta": {
    "paging": {
      "page": 1,
      "page_size": 25,
      "page_count": 1,
      "count": 2,
      "previous_page": null,
      "next_page": null,
      "first_href": "http://example.org/api/v4/groups",
      "last_href": "http://example.org/api/v4/groups",
      "previous_href": null,
      "next_href": null
    },
    "last_updated_at": {
      "announcements": 1786536503,
      "beacons": 1788610103,
      "desktop_presences": 1786104503,
      "favorites": 1784290103,
      "fences": 1786795703,
      "groups": 1792584503,
      "networks": 1788264503,
      "roles": 1792584503,
      "settings": 1792584503
    },
    "emergency": null
  }
}

Update a group

Updates an existing group. Users must have a role that permits managing groups/memberships to update groups.

Endpoint

PATCH /api/v4/groups/:id

Parameters

Name Description
group[name] (string) the name of the group

Request

Route

PATCH /api/v4/groups/178

Headers

Content-Type: application/json
Authorization: Bearer JDN1cY_OyZEVBRBda6w4ghZHtYV2_GHMqcWIPYJcGQ4

Body

{
  "group": {
    "name": "Renamed Department"
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/groups/178" -d '{"group":{"name":"Renamed Department"}}' -X PATCH \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer JDN1cY_OyZEVBRBda6w4ghZHtYV2_GHMqcWIPYJcGQ4"

Response

Simulated Response

Response Fields

Name Description
groups (object) the newly updated group attributes

Status

200

Headers

etag: W/"1c0ff4a992b78d10097bb7904085c4df"

Body

{
  "groups": {
    "id": "178",
    "name": "Renamed Department"
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1791720503,
      "beacons": 1786450103,
      "desktop_presences": 1790683703,
      "favorites": 1786882103,
      "fences": 1785758903,
      "groups": 1792584503,
      "networks": 1784808503,
      "roles": 1792584503,
      "settings": 1792584503
    },
    "emergency": null
  }
}

Networks

Create a network

Creates a new network. Once this network is created, it will appear in the company’s networks within the Simple In/Out apps. Users must have a role that permits managing the company to create networks. Companies are limited to 100 Networks.

Endpoint

POST /api/v4/networks

Parameters

Name Description
network[name] required (string) the name of the network, no longer than 44 characters
network[ssid] required (string) the unique network identifier, no longer than 250 characters
network[comment_on_entry] (string) the comment applied to status updates on entry, defaults to 'In at {name}'
network[comment_on_exit] (string) the comment applied to status updates on exit, defaults to 'Left {name}'
network[status_on_entry] (string) the status to apply on entry: 'in', 'remote', 'busy', 'break', 'out', 'sick', 'vacation', or 'off', defaults to 'in'
network[status_on_exit] (string) the status to apply on exit: 'in', 'remote', 'busy', 'break', 'out', 'sick', 'vacation', or 'off', defaults to 'out'
network[nodes] (array) an array of BSSIDs that are the only network equipment associated with this network (if empty all networks with this SSID are valid)

Request

Route

POST /api/v4/networks

Headers

Content-Type: application/json
Authorization: Bearer lIBC17kcjwG4Prma0iSyqWGe2N17A7FhWw4mLanRtUA

Body

{
  "network": {
    "name": "My Office",
    "ssid": "Office WiFi Hotspot",
    "nodes": [
      "00:1A:2B:3C:4D:5E",
      "00:1A:2B:3C:4D:5F"
    ]
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/networks" -d '{"network":{"name":"My Office","ssid":"Office WiFi Hotspot","nodes":["00:1A:2B:3C:4D:5E","00:1A:2B:3C:4D:5F"]}}' -X POST \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer lIBC17kcjwG4Prma0iSyqWGe2N17A7FhWw4mLanRtUA"

Response

Simulated Response

Response Fields

Name Description
networks (object) the newly created network attributes

Status

201

Headers

etag: W/"faeffa35d4f6dbcbd64961b3c90e8646"

Body

{
  "networks": {
    "id": "35",
    "name": "My Office",
    "ssid": "Office WiFi Hotspot",
    "comment_on_entry": "In at My Office",
    "comment_on_exit": "Left My Office",
    "entry": true,
    "exit": true,
    "status_on_entry": "in",
    "status_on_exit": "out",
    "nodes": [
      "00:1A:2B:3C:4D:5E",
      "00:1A:2B:3C:4D:5F"
    ],
    "created_at": 1792584503,
    "updated_at": 1792584503
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1789387703,
      "beacons": 1786450103,
      "desktop_presences": 1789128503,
      "favorites": 1791288503,
      "fences": 1791893303,
      "groups": 1786968503,
      "networks": 1792584503,
      "roles": 1792584503,
      "settings": 1792584503
    },
    "emergency": null
  }
}

Delete a network

Deletes an existing network. Users must have a role that permits managing the company to delete networks.

Endpoint

DELETE /api/v4/networks/:id

Request

Route

DELETE /api/v4/networks/34

Headers

Content-Type: application/json
Authorization: Bearer No6UnJFLKBGrkTp3E8gBU0xV9OcX8-H4z7HVptorz58

cURL

curl "https://www.simpleinout.com/api/v4/networks/34" -d '' -X DELETE \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer No6UnJFLKBGrkTp3E8gBU0xV9OcX8-H4z7HVptorz58"

Response

Simulated Response

Status

204

List all networks

Return a list of all the networks belonging to the company.

Endpoint

GET /api/v4/networks

Parameters

Name Description
sort (string) order of the return with optional '-' to denote descending, possibilities include: 'name'
page_size (integer) number of results to return per page, defaults to 25
page (integer) page number of results

Request

Route

GET /api/v4/networks

Headers

Content-Type: application/json
Authorization: Bearer Y08b36k-NYP_p-rv7L_r9gfyJTwef_vmrwz7uCWyngY

cURL

curl -g "https://www.simpleinout.com/api/v4/networks" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer Y08b36k-NYP_p-rv7L_r9gfyJTwef_vmrwz7uCWyngY"

Response

Simulated Response

Response Fields

Name Description
networks (array) an array of networks

Status

200

Headers

etag: W/"5138b69f68f1483ee07d385453f9f58e"

Body

{
  "networks": [
    {
      "id": "37",
      "name": "3 - Port Ariel",
      "ssid": "tnr235dror93qtylrngkax754lj9d94z",
      "comment_on_entry": "In at 3 - Port Ariel",
      "comment_on_exit": "Left 3 - Port Ariel",
      "entry": true,
      "exit": true,
      "status_on_entry": "in",
      "status_on_exit": "out",
      "nodes": [],
      "created_at": 1792584503,
      "updated_at": 1792584503
    },
    {
      "id": "38",
      "name": "4 - Anastasiamouth",
      "ssid": "xeyah6lu1iiuqraru8w8jektrd464pkz",
      "comment_on_entry": "In at 4 - Anastasiamouth",
      "comment_on_exit": "Left 4 - Anastasiamouth",
      "entry": true,
      "exit": true,
      "status_on_entry": "in",
      "status_on_exit": "out",
      "nodes": [],
      "created_at": 1792584503,
      "updated_at": 1792584503
    }
  ],
  "meta": {
    "paging": {
      "page": 1,
      "page_size": 25,
      "page_count": 1,
      "count": 2,
      "previous_page": null,
      "next_page": null,
      "first_href": "http://example.org/api/v4/networks",
      "last_href": "http://example.org/api/v4/networks",
      "previous_href": null,
      "next_href": null
    },
    "last_updated_at": {
      "announcements": 1788091703,
      "beacons": 1788091703,
      "desktop_presences": 1784549303,
      "favorites": 1792325303,
      "fences": 1788350903,
      "groups": 1788955703,
      "networks": 1792584503,
      "roles": 1792584503,
      "settings": 1792584503
    },
    "emergency": null
  }
}

Update a network

Updates an existing network. Please note that if the SSID of the network is updated, any corresponding hardware must also be updated to broadcast the new SSID. Users must have a role that permits managing the company to update networks.

Endpoint

PATCH /api/v4/networks/:id

Parameters

Name Description
network[name] (string) the name of the network, no longer than 44 characters
network[ssid] (string) the unique network identifier, no longer than 250 characters
network[comment_on_entry] (string) the comment applied to status updates on entry, defaults to 'In at {name}'
network[comment_on_exit] (string) the comment applied to status updates on exit, defaults to 'Left {name}'
network[status_on_entry] (string) the status to apply on entry: 'in', 'remote', 'busy', 'break', 'out', 'sick', 'vacation', or 'off', defaults to 'in'
network[status_on_exit] (string) the status to apply on exit: 'in', 'remote', 'busy', 'break', 'out', 'sick', 'vacation', or 'off', defaults to 'out'
network[nodes] (array) an array of BSSIDs that are the only network equipment associated with this network (if empty all networks with this SSID are valid)

Request

Route

PATCH /api/v4/networks/36

Headers

Content-Type: application/json
Authorization: Bearer SG-l8pIoGe1K9zSJ5UE4FC_J6TYAM503kkN_y0zbCLw

Body

{
  "network": {
    "name": "My Renamed Office",
    "nodes": [
      "00:1A:2B:3C:4D:5E",
      "00:1A:2B:3C:4D:5F"
    ]
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/networks/36" -d '{"network":{"name":"My Renamed Office","nodes":["00:1A:2B:3C:4D:5E","00:1A:2B:3C:4D:5F"]}}' -X PATCH \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer SG-l8pIoGe1K9zSJ5UE4FC_J6TYAM503kkN_y0zbCLw"

Response

Simulated Response

Response Fields

Name Description
networks (object) the newly updated network attributes

Status

200

Headers

etag: W/"3b71eab46edca5a00d5f6726feee7e2e"

Body

{
  "networks": {
    "id": "36",
    "name": "My Renamed Office",
    "ssid": "4pczvnv23ofdgfx5po413rpzpd66g8yo",
    "comment_on_entry": "In at 2 - Kihnhaven",
    "comment_on_exit": "Left 2 - Kihnhaven",
    "entry": true,
    "exit": true,
    "status_on_entry": "in",
    "status_on_exit": "out",
    "nodes": [
      "00:1A:2B:3C:4D:5E",
      "00:1A:2B:3C:4D:5F"
    ],
    "created_at": 1792584503,
    "updated_at": 1792584503
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1786795703,
      "beacons": 1791374903,
      "desktop_presences": 1790597303,
      "favorites": 1790942903,
      "fences": 1786968503,
      "groups": 1791979703,
      "networks": 1792584503,
      "roles": 1792584503,
      "settings": 1792584503
    },
    "emergency": null
  }
}

Ok

Make sure things are Ok

This API is only used to verify you’ve successfully authorized.

Endpoint

GET /api/v4/ok

Parameters

Name Description
meta (string) if any value included, will return meta information instead of a 204 No Content response

Request

Route

GET /api/v4/ok

Headers

Content-Type: application/json
Authorization: Bearer 64UnnJKNbwUhJhZtD-DM2TcOflRRG6kvme--LeyJepU

cURL

curl -g "https://www.simpleinout.com/api/v4/ok" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer 64UnnJKNbwUhJhZtD-DM2TcOflRRG6kvme--LeyJepU"

Response

Simulated Response

Status

204

Reports

Retrieve a visitor's report

Retrieves a day-by-day report for a visitor in the same company. Users must have a role that permits viewing visitor reports.

Endpoint

GET /api/v4/visitors/:id/reports

Parameters

Name Description
date_range required (string) a date range string for the report period
comment (string) optional comment filter; only count status updates whose comment contains this value (case-insensitive)
rounding (string) report duration rounding: 'none', 'hour', or 'quarter_hour'
statuses (string) comma-delimited statuses to count towards totals, possibilities include: 'in', 'remote', 'busy', 'break', 'out', 'sick', 'vacation'
time_zone (string) an IANA time zone to evaluate day boundaries, e.g. 'America/Chicago'
value_format (string) report value format: 'hours', 'labels', or 'minutes'

Request

Route

GET /api/v4/visitors/72/reports?date_range=1792386000..1792645199&comment=Planning&rounding=quarter_hour&statuses=in&time_zone=America%2FChicago&value_format=minutes

Headers

Content-Type: application/json
Authorization: Bearer S7254N_5ELRknTzUtKBOFBR4pmD5moNYBlhQ27w1Um8

Query Parameters

date_range=1792386000..1792645199
comment=Planning
rounding=quarter_hour
statuses=in
time_zone=America/Chicago
value_format=minutes

cURL

curl -g "https://www.simpleinout.com/api/v4/visitors/72/reports?date_range=1792386000..1792645199&comment=Planning&rounding=quarter_hour&statuses=in&time_zone=America%2FChicago&value_format=minutes" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer S7254N_5ELRknTzUtKBOFBR4pmD5moNYBlhQ27w1Um8"

Response

Simulated Response

Response Fields

Name Description
days (array) one result per day in the requested date range
total (string) total value for the requested date range

Status

200

Headers

etag: W/"22884400d427d72d6fdbc0782ea6eb2f"

Body

{
  "days": [
    {
      "year": 2026,
      "month": 10,
      "day": 19,
      "result": "0"
    },
    {
      "year": 2026,
      "month": 10,
      "day": 20,
      "result": "480"
    },
    {
      "year": 2026,
      "month": 10,
      "day": 21,
      "result": "0"
    }
  ],
  "total": "480"
}

Retrieve another user's report

Retrieves a day-by-day report for another user in the same company. Users must have a role that permits viewing report history for others.

Endpoint

GET /api/v4/users/:id/reports

Parameters

Name Description
date_range required (string) a date range string for the report period
comment (string) optional comment filter; only count status updates whose comment contains this value (case-insensitive)
rounding (string) report duration rounding: 'none', 'hour', or 'quarter_hour'
statuses (string) comma-delimited statuses to count towards totals, possibilities include: 'in', 'remote', 'busy', 'break', 'out', 'sick', 'vacation'
time_zone (string) an IANA time zone to evaluate day boundaries, e.g. 'America/Chicago'
value_format (string) report value format: 'hours', 'labels', or 'minutes'

Request

Route

GET /api/v4/users/1688/reports?date_range=1792386000..1792645199&comment=Planning&rounding=quarter_hour&statuses=in&time_zone=America%2FChicago&value_format=minutes

Headers

Content-Type: application/json
Authorization: Bearer FuZfsMi7TuPtrL1iBNdKQclDvc-0Ty30o-WvYvFkpc0

Query Parameters

date_range=1792386000..1792645199
comment=Planning
rounding=quarter_hour
statuses=in
time_zone=America/Chicago
value_format=minutes

cURL

curl -g "https://www.simpleinout.com/api/v4/users/1688/reports?date_range=1792386000..1792645199&comment=Planning&rounding=quarter_hour&statuses=in&time_zone=America%2FChicago&value_format=minutes" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer FuZfsMi7TuPtrL1iBNdKQclDvc-0Ty30o-WvYvFkpc0"

Response

Simulated Response

Response Fields

Name Description
days (array) one result per day in the requested date range
total (string) total value for the requested date range

Status

200

Headers

etag: W/"22884400d427d72d6fdbc0782ea6eb2f"

Body

{
  "days": [
    {
      "year": 2026,
      "month": 10,
      "day": 19,
      "result": "0"
    },
    {
      "year": 2026,
      "month": 10,
      "day": 20,
      "result": "480"
    },
    {
      "year": 2026,
      "month": 10,
      "day": 21,
      "result": "0"
    }
  ],
  "total": "480"
}

Retrieve my report

Retrieves a day-by-day report for the authenticated user over the provided date range.

Endpoint

GET /api/v4/users/my/reports

Parameters

Name Description
date_range required (string) a date range string for the report period
comment (string) optional comment filter; only count status updates whose comment contains this value (case-insensitive)
rounding (string) report duration rounding: 'none', 'hour', or 'quarter_hour'
statuses (string) comma-delimited statuses to count towards totals, possibilities include: 'in', 'remote', 'busy', 'break', 'out', 'sick', 'vacation'
time_zone (string) an IANA time zone to evaluate day boundaries, e.g. 'America/Chicago'
value_format (string) report value format: 'hours', 'labels', or 'minutes'

Request

Route

GET /api/v4/users/my/reports?date_range=1792386000..1792645199&comment=Planning&rounding=quarter_hour&statuses=in&time_zone=America%2FChicago&value_format=minutes

Headers

Content-Type: application/json
Authorization: Bearer DFueQ87R6KFjvaY57t3DPE-qe5bRzoL77TskB7pa6Ig

Query Parameters

date_range=1792386000..1792645199
comment=Planning
rounding=quarter_hour
statuses=in
time_zone=America/Chicago
value_format=minutes

cURL

curl -g "https://www.simpleinout.com/api/v4/users/my/reports?date_range=1792386000..1792645199&comment=Planning&rounding=quarter_hour&statuses=in&time_zone=America%2FChicago&value_format=minutes" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer DFueQ87R6KFjvaY57t3DPE-qe5bRzoL77TskB7pa6Ig"

Response

Simulated Response

Response Fields

Name Description
days (array) one result per day in the requested date range
total (string) total value for the requested date range

Status

200

Headers

etag: W/"22884400d427d72d6fdbc0782ea6eb2f"

Body

{
  "days": [
    {
      "year": 2026,
      "month": 10,
      "day": 19,
      "result": "0"
    },
    {
      "year": 2026,
      "month": 10,
      "day": 20,
      "result": "480"
    },
    {
      "year": 2026,
      "month": 10,
      "day": 21,
      "result": "0"
    }
  ],
  "total": "480"
}

Roles

Create a role

Creates a new role. Once this role is created, it will be available to assign to users within the Simple In/Out apps and website. Users must have a role that permits managing the company to create roles. Companies are limited to 100 Roles.

Endpoint

POST /api/v4/roles

Parameters

Name Description
role[name] required (string) the name of the role, no longer than 255 characters, must be unique for the company
role[billing] (boolean) these users can change the company's plan, credit card, and invoice email/information.
role[followed_users] (boolean) these users can receive notifications on their devices when another user updates their status.
role[reminders] (boolean) these users can manage notifications sent to other users reminding them to update their status.
role[safeties] (boolean) these users can receive notifications when another user hasn't updated their status.
role[user_board] (boolean) these users can see all other users and their current status.
role[manage_all_announcements] (boolean) these users can manage all announcements.
role[manage_groups_and_memberships] (boolean) these users can manage groups and which users are assigned to each group.
role[manage_member_announcements] (boolean) these users can manage announcements within the same groups.
role[manage_others_archives] (boolean) these users can change the past statuses of all others by adding and deleting status updates.
role[manage_others_futures] (boolean) these users can schedule future status updates for all other users.
role[manage_others_status] (boolean) these users can change the current status of all users.
role[manage_own_archives] (boolean) these users can change their own past statuses by adding and deleting status updates.
role[manage_own_futures] (boolean) these users can schedule future status updates for themselves.
role[manage_own_status] (boolean) these users can update their own status from any device or the website
role[manage_status_automatically] (boolean) these users can manage their own current status automatically using Geofences, Beacons, Networks, and Desktop Presence.
role[manage_visitor_archives] (boolean) these users can change the past statuses of all visitors by adding and deleting status updates.
role[manage_visitor_status] (boolean) these users can change the current status of all visitors.
role[manage_visitors] (boolean) these users can manage visitors.
role[view_all_announcements] (boolean) these users can view all announcements.
role[view_member_announcements] (boolean) these users can view announcements for everyone and the groups they belong to.
role[view_others_archives] (boolean) these users can view the past status updates made by all other users.
role[view_others_futures] (boolean) these users can view the scheduled status updates for all users.
role[view_others_reports] (boolean) these users can run reports on the status history of all other users.
role[member_board] (boolean) these users can see other users within the same groups and their current status.
role[manage_member_archives] (boolean) these users can change the past statuses of users within the same groups by adding and deleting status updates.
role[manage_member_futures] (boolean) these users can schedule future status updates for users within the same groups.
role[manage_member_status] (boolean) these users can change the current status of users within the same groups.
role[view_member_archives] (boolean) these users can view the past status updates made by users within the same groups.
role[view_member_futures] (boolean) these users can view the scheduled status updates for users within the same groups.
role[view_member_reports] (boolean) these users can run reports on the status history of users within the same groups.
role[view_user_board_updated_at] (boolean) these users can view the time that status updates were made on the board.
role[view_visitor_archives] (boolean) these users can view the past status updates made by all visitors.
role[view_visitor_board_updated_at] (boolean) these users can view the time that visitor status updates were made on the board.
role[view_visitor_reports] (boolean) these users can run reports on the status history of all visitors.
role[visitor_board] (boolean) these users can see all visitors and their current status.

Request

Route

POST /api/v4/roles

Headers

Content-Type: application/json
Authorization: Bearer xb_XtcixnltP0n9aeOoCW29RjYXuICIZiIsZI62BrBM

Body

{
  "role": {
    "name": "Billing Role",
    "billing": true,
    "followed_users": false,
    "reminders": false,
    "safeties": false,
    "user_board": false,
    "manage_all_announcements": false,
    "manage_groups_and_memberships": false,
    "manage_member_announcements": false,
    "manage_others_archives": false,
    "manage_others_futures": false,
    "manage_others_status": false,
    "manage_own_archives": false,
    "manage_own_futures": false,
    "manage_own_status": false,
    "manage_status_automatically": false,
    "manage_visitor_archives": false,
    "manage_visitor_status": false,
    "manage_visitors": false,
    "view_all_announcements": true,
    "view_member_announcements": false,
    "view_others_archives": false,
    "view_others_futures": false,
    "view_others_reports": false,
    "member_board": false,
    "manage_member_archives": false,
    "manage_member_futures": false,
    "manage_member_status": false,
    "view_member_archives": false,
    "view_member_futures": false,
    "view_member_reports": false,
    "view_user_board_updated_at": false,
    "view_visitor_archives": false,
    "view_visitor_board_updated_at": true,
    "view_visitor_reports": false,
    "visitor_board": true
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/roles" -d '{"role":{"name":"Billing Role","billing":true,"followed_users":false,"reminders":false,"safeties":false,"user_board":false,"manage_all_announcements":false,"manage_groups_and_memberships":false,"manage_member_announcements":false,"manage_others_archives":false,"manage_others_futures":false,"manage_others_status":false,"manage_own_archives":false,"manage_own_futures":false,"manage_own_status":false,"manage_status_automatically":false,"manage_visitor_archives":false,"manage_visitor_status":false,"manage_visitors":false,"view_all_announcements":true,"view_member_announcements":false,"view_others_archives":false,"view_others_futures":false,"view_others_reports":false,"member_board":false,"manage_member_archives":false,"manage_member_futures":false,"manage_member_status":false,"view_member_archives":false,"view_member_futures":false,"view_member_reports":false,"view_user_board_updated_at":false,"view_visitor_archives":false,"view_visitor_board_updated_at":true,"view_visitor_reports":false,"visitor_board":true}}' -X POST \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer xb_XtcixnltP0n9aeOoCW29RjYXuICIZiIsZI62BrBM"

Response

Simulated Response

Response Fields

Name Description
roles (object) the newly created role attributes

Status

201

Headers

etag: W/"6e5606fe2aa1a85a9600767b27fbb1c6"

Body

{
  "roles": {
    "id": "4561",
    "name": "Billing Role",
    "billing": true,
    "followed_users": false,
    "reminders": false,
    "safeties": false,
    "user_board": false,
    "manage_all_announcements": false,
    "manage_company_and_users": false,
    "manage_groups_and_memberships": false,
    "manage_member_announcements": false,
    "manage_others_archives": false,
    "manage_others_futures": false,
    "manage_others_status": false,
    "manage_own_archives": false,
    "manage_own_futures": false,
    "manage_own_status": false,
    "manage_status_automatically": false,
    "manage_visitor_archives": false,
    "manage_visitor_status": false,
    "manage_visitors": false,
    "view_all_announcements": true,
    "view_member_announcements": false,
    "view_others_archives": false,
    "view_others_futures": false,
    "view_others_reports": false,
    "member_board": false,
    "manage_member_archives": false,
    "manage_member_futures": false,
    "manage_member_status": false,
    "view_member_archives": false,
    "view_member_futures": false,
    "view_member_reports": false,
    "view_user_board_updated_at": false,
    "view_visitor_archives": false,
    "view_visitor_board_updated_at": true,
    "view_visitor_reports": false,
    "visitor_board": true,
    "created_at": 1792584503,
    "updated_at": 1792584503
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1785326903,
      "beacons": 1789560503,
      "desktop_presences": 1789214903,
      "favorites": 1791202103,
      "fences": 1788005303,
      "groups": 1788437303,
      "networks": 1785586103,
      "roles": 1792584503,
      "settings": 1792584503
    },
    "emergency": null
  }
}

Delete a role

Deletes an existing role. Users must have a role that permits managing the company to delete roles.

Endpoint

DELETE /api/v4/roles/:id

Request

Route

DELETE /api/v4/roles/4542

Headers

Content-Type: application/json
Authorization: Bearer F0BEi21eSk1KhnmIbhyQU7j31n0dl84pAJaWuTio8yo

cURL

curl "https://www.simpleinout.com/api/v4/roles/4542" -d '' -X DELETE \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer F0BEi21eSk1KhnmIbhyQU7j31n0dl84pAJaWuTio8yo"

Response

Simulated Response

Status

204

List all roles

Return a list of all the roles belonging to the company.

Endpoint

GET /api/v4/roles

Parameters

Name Description
sort (string) order of the return with optional '-' to denote descending, possibilities include: 'name'
page_size (integer) number of results to return per page, defaults to 25
page (integer) page number of results

Request

Route

GET /api/v4/roles

Headers

Content-Type: application/json
Authorization: Bearer yPSkj2Efph3fAp9_yqXioKhkHbxlb8ozbknj7zbcxkA

cURL

curl -g "https://www.simpleinout.com/api/v4/roles" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer yPSkj2Efph3fAp9_yqXioKhkHbxlb8ozbknj7zbcxkA"

Response

Simulated Response

Response Fields

Name Description
roles (array) an array of roles

Status

200

Headers

etag: W/"fcf4884e2a50c91269b767adada8616e"

Body

{
  "roles": [
    {
      "id": "4554",
      "name": "Manager",
      "billing": false,
      "followed_users": false,
      "reminders": false,
      "safeties": false,
      "user_board": true,
      "manage_all_announcements": true,
      "manage_company_and_users": false,
      "manage_groups_and_memberships": false,
      "manage_member_announcements": false,
      "manage_others_archives": false,
      "manage_others_futures": true,
      "manage_others_status": true,
      "manage_own_archives": false,
      "manage_own_futures": true,
      "manage_own_status": true,
      "manage_status_automatically": true,
      "manage_visitor_archives": true,
      "manage_visitor_status": true,
      "manage_visitors": true,
      "view_all_announcements": true,
      "view_member_announcements": false,
      "view_others_archives": true,
      "view_others_futures": true,
      "view_others_reports": true,
      "member_board": false,
      "manage_member_archives": false,
      "manage_member_futures": false,
      "manage_member_status": false,
      "view_member_archives": false,
      "view_member_futures": false,
      "view_member_reports": false,
      "view_user_board_updated_at": true,
      "view_visitor_archives": true,
      "view_visitor_board_updated_at": true,
      "view_visitor_reports": true,
      "visitor_board": true,
      "created_at": 1792584503,
      "updated_at": 1792584503
    },
    {
      "id": "4556",
      "name": "Limited User",
      "billing": false,
      "followed_users": false,
      "reminders": false,
      "safeties": false,
      "user_board": true,
      "manage_all_announcements": false,
      "manage_company_and_users": false,
      "manage_groups_and_memberships": false,
      "manage_member_announcements": false,
      "manage_others_archives": false,
      "manage_others_futures": false,
      "manage_others_status": false,
      "manage_own_archives": false,
      "manage_own_futures": false,
      "manage_own_status": false,
      "manage_status_automatically": false,
      "manage_visitor_archives": false,
      "manage_visitor_status": false,
      "manage_visitors": false,
      "view_all_announcements": true,
      "view_member_announcements": false,
      "view_others_archives": true,
      "view_others_futures": true,
      "view_others_reports": false,
      "member_board": false,
      "manage_member_archives": false,
      "manage_member_futures": false,
      "manage_member_status": false,
      "view_member_archives": false,
      "view_member_futures": false,
      "view_member_reports": false,
      "view_user_board_updated_at": true,
      "view_visitor_archives": false,
      "view_visitor_board_updated_at": true,
      "view_visitor_reports": false,
      "visitor_board": true,
      "created_at": 1792584503,
      "updated_at": 1792584503
    },
    {
      "id": "4553",
      "name": "Administrator",
      "billing": true,
      "followed_users": true,
      "reminders": true,
      "safeties": true,
      "user_board": true,
      "manage_all_announcements": true,
      "manage_company_and_users": true,
      "manage_groups_and_memberships": true,
      "manage_member_announcements": false,
      "manage_others_archives": true,
      "manage_others_futures": true,
      "manage_others_status": true,
      "manage_own_archives": true,
      "manage_own_futures": true,
      "manage_own_status": true,
      "manage_status_automatically": true,
      "manage_visitor_archives": true,
      "manage_visitor_status": true,
      "manage_visitors": true,
      "view_all_announcements": true,
      "view_member_announcements": false,
      "view_others_archives": true,
      "view_others_futures": true,
      "view_others_reports": true,
      "member_board": false,
      "manage_member_archives": false,
      "manage_member_futures": false,
      "manage_member_status": false,
      "view_member_archives": false,
      "view_member_futures": false,
      "view_member_reports": false,
      "view_user_board_updated_at": true,
      "view_visitor_archives": true,
      "view_visitor_board_updated_at": true,
      "view_visitor_reports": true,
      "visitor_board": true,
      "created_at": 1792584503,
      "updated_at": 1792584503
    },
    {
      "id": "4555",
      "name": "Regular User",
      "billing": false,
      "followed_users": false,
      "reminders": false,
      "safeties": false,
      "user_board": true,
      "manage_all_announcements": false,
      "manage_company_and_users": false,
      "manage_groups_and_memberships": false,
      "manage_member_announcements": false,
      "manage_others_archives": false,
      "manage_others_futures": false,
      "manage_others_status": false,
      "manage_own_archives": false,
      "manage_own_futures": true,
      "manage_own_status": true,
      "manage_status_automatically": true,
      "manage_visitor_archives": false,
      "manage_visitor_status": false,
      "manage_visitors": false,
      "view_all_announcements": true,
      "view_member_announcements": false,
      "view_others_archives": true,
      "view_others_futures": true,
      "view_others_reports": false,
      "member_board": false,
      "manage_member_archives": false,
      "manage_member_futures": false,
      "manage_member_status": false,
      "view_member_archives": false,
      "view_member_futures": false,
      "view_member_reports": false,
      "view_user_board_updated_at": true,
      "view_visitor_archives": true,
      "view_visitor_board_updated_at": true,
      "view_visitor_reports": false,
      "visitor_board": true,
      "created_at": 1792584503,
      "updated_at": 1792584503
    }
  ],
  "meta": {
    "paging": {
      "page": 1,
      "page_size": 25,
      "page_count": 1,
      "count": 4,
      "previous_page": null,
      "next_page": null,
      "first_href": "http://example.org/api/v4/roles",
      "last_href": "http://example.org/api/v4/roles",
      "previous_href": null,
      "next_href": null
    },
    "last_updated_at": {
      "announcements": 1786882103,
      "beacons": 1787227703,
      "desktop_presences": 1792584503,
      "favorites": 1786190903,
      "fences": 1789646903,
      "groups": 1785067703,
      "networks": 1786968503,
      "roles": 1792584503,
      "settings": 1792584503
    },
    "emergency": null
  }
}

Retrieve a role

Retrieve an existing role.

Endpoint

GET /api/v4/roles/:id

Request

Route

GET /api/v4/roles/4547

Headers

Content-Type: application/json
Authorization: Bearer XhX3CAUoRNgOWYMm-tbRe_xo8COz4hKrV8AP5Uc5x4I

cURL

curl -g "https://www.simpleinout.com/api/v4/roles/4547" -X GET \
	-H "Content-Type: application/json" \
	-H "Sio-Version: 1.0.0" \
	-H "Authorization: Bearer XhX3CAUoRNgOWYMm-tbRe_xo8COz4hKrV8AP5Uc5x4I"

Response

Simulated Response

Response Fields

Name Description
roles (object) the role attributes

Status

200

Headers

etag: W/"a729ed2b2d7a92521cdf1f93392b39a0"
last-modified: Wed, 21 Oct 2026 12:08:22 GMT

Body

{
  "roles": {
    "id": "4547",
    "name": "Jones, Ledner and Ernser",
    "billing": false,
    "followed_users": false,
    "reminders": false,
    "safeties": false,
    "user_board": false,
    "manage_all_announcements": false,
    "manage_company_and_users": false,
    "manage_groups_and_memberships": false,
    "manage_member_announcements": false,
    "manage_others_archives": false,
    "manage_others_futures": false,
    "manage_others_status": false,
    "manage_own_archives": false,
    "manage_own_futures": false,
    "manage_own_status": false,
    "manage_status_automatically": false,
    "manage_visitor_archives": false,
    "manage_visitor_status": false,
    "manage_visitors": false,
    "view_all_announcements": true,
    "view_member_announcements": false,
    "view_others_archives": false,
    "view_others_futures": false,
    "view_others_reports": false,
    "member_board": false,
    "manage_member_archives": false,
    "manage_member_futures": false,
    "manage_member_status": false,
    "view_member_archives": false,
    "view_member_futures": false,
    "view_member_reports": false,
    "view_user_board_updated_at": false,
    "view_visitor_archives": false,
    "view_visitor_board_updated_at": false,
    "view_visitor_reports": false,
    "visitor_board": false,
    "created_at": 1792584502,
    "updated_at": 1792584502
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1790078902,
      "beacons": 1790424502,
      "desktop_presences": 1790942902,
      "favorites": 1784549302,
      "fences": 1791893302,
      "groups": 1785845302,
      "networks": 1787573302,
      "roles": 1792584502,
      "settings": 1792584502
    },
    "emergency": null,
    "update_available": false
  }
}

Update a role

Updates an existing role. Users must have a role that permits managing the company to update roles.

Endpoint

PATCH /api/v4/roles/:id

Parameters

Name Description
role[name] required (string) the name of the role, no longer than 255 characters, must be unique for the company
role[billing] (boolean) these users can change the company's plan, credit card, and invoice email/information.
role[followed_users] (boolean) these users can receive notifications on their devices when another user updates their status.
role[reminders] (boolean) these users can manage notifications sent to other users reminding them to update their status.
role[safeties] (boolean) these users can receive notifications when another user hasn't updated their status.
role[user_board] (boolean) these users can see all other users and their current status.
role[manage_all_announcements] (boolean) these users can manage all announcements.
role[manage_groups_and_memberships] (boolean) these users can manage groups and which users are assigned to each group.
role[manage_member_announcements] (boolean) these users can manage announcements within the same groups.
role[manage_others_archives] (boolean) these users can change the past statuses of all others by adding and deleting status updates.
role[manage_others_futures] (boolean) these users can schedule future status updates for all other users.
role[manage_others_status] (boolean) these users can change the current status of all users.
role[manage_own_archives] (boolean) these users can change their own past statuses by adding and deleting status updates.
role[manage_own_futures] (boolean) these users can schedule future status updates for themselves.
role[manage_own_status] (boolean) these users can update their own status from any device or the website
role[manage_status_automatically] (boolean) these users can manage their own current status automatically using Geofences, Beacons, Networks, and Desktop Presence.
role[manage_visitor_archives] (boolean) these users can change the past statuses of all visitors by adding and deleting status updates.
role[manage_visitor_status] (boolean) these users can change the current status of all visitors.
role[manage_visitors] (boolean) these users can manage visitors.
role[view_all_announcements] (boolean) these users can view all announcements.
role[view_member_announcements] (boolean) these users can view announcements for everyone and the groups they belong to.
role[view_others_archives] (boolean) these users can view the past status updates made by all other users.
role[view_others_futures] (boolean) these users can view the scheduled status updates for all users.
role[view_others_reports] (boolean) these users can run reports on the status history of all other users.
role[member_board] (boolean) these users can see other users within the same groups and their current status.
role[manage_member_archives] (boolean) these users can change the past statuses of users within the same groups by adding and deleting status updates.
role[manage_member_futures] (boolean) these users can schedule future status updates for users within the same groups.
role[manage_member_status] (boolean) these users can change the current status of users within the same groups.
role[view_member_archives] (boolean) these users can view the past status updates made by users within the same groups.
role[view_member_futures] (boolean) these users can view the scheduled status updates for users within the same groups.
role[view_member_reports] (boolean) these users can run reports on the status history of users within the same groups.
role[view_user_board_updated_at] (boolean) these users can view the time that status updates were made on the board.
role[view_visitor_archives] (boolean) these users can view the past status updates made by all visitors.
role[view_visitor_board_updated_at] (boolean) these users can view the time that visitor status updates were made on the board.
role[view_visitor_reports] (boolean) these users can run reports on the status history of all visitors.
role[visitor_board] (boolean) these users can see all visitors and their current status.

Request

Route

PATCH /api/v4/roles/4552

Headers

Content-Type: application/json
Authorization: Bearer EyJw8z8S_O1eWd47N3XpZ7JjdU8DU05r2iTWv7I7ui8

Body

{
  "role": {
    "name": "My Renamed Role",
    "billing": false,
    "view_others_archives": true,
    "view_others_futures": true
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/roles/4552" -d '{"role":{"name":"My Renamed Role","billing":false,"view_others_archives":true,"view_others_futures":true}}' -X PATCH \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer EyJw8z8S_O1eWd47N3XpZ7JjdU8DU05r2iTWv7I7ui8"

Response

Simulated Response

Response Fields

Name Description
roles (object) the newly updated role attributes

Status

200

Headers

etag: W/"95645d29813796f5974eb65ee29087d6"

Body

{
  "roles": {
    "id": "4552",
    "name": "My Renamed Role",
    "billing": false,
    "followed_users": false,
    "reminders": false,
    "safeties": false,
    "user_board": false,
    "manage_all_announcements": false,
    "manage_company_and_users": false,
    "manage_groups_and_memberships": false,
    "manage_member_announcements": false,
    "manage_others_archives": false,
    "manage_others_futures": false,
    "manage_others_status": false,
    "manage_own_archives": false,
    "manage_own_futures": false,
    "manage_own_status": false,
    "manage_status_automatically": false,
    "manage_visitor_archives": false,
    "manage_visitor_status": false,
    "manage_visitors": false,
    "view_all_announcements": true,
    "view_member_announcements": false,
    "view_others_archives": true,
    "view_others_futures": true,
    "view_others_reports": false,
    "member_board": false,
    "manage_member_archives": false,
    "manage_member_futures": false,
    "manage_member_status": false,
    "view_member_archives": false,
    "view_member_futures": false,
    "view_member_reports": false,
    "view_user_board_updated_at": false,
    "view_visitor_archives": false,
    "view_visitor_board_updated_at": false,
    "view_visitor_reports": false,
    "visitor_board": false,
    "created_at": 1792584503,
    "updated_at": 1792584503
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1792325303,
      "beacons": 1791720503,
      "desktop_presences": 1790770103,
      "favorites": 1786018103,
      "fences": 1790165303,
      "groups": 1792238903,
      "networks": 1785845303,
      "roles": 1792584503,
      "settings": 1792584503
    },
    "emergency": null
  }
}

Statuses

List statuses

List all the statuses within the time period specified by the ‘created_at’ date range. Users must have a role that permits viewing the status history of others or only the authorized user’s statuses will be returned.

Endpoint

GET /api/v4/statuses

Parameters

Name Description
page_size (integer) number of results to return per page, defaults to 25
page (integer) page number of results
created_at required (string) a date range string for the time the status was created
status (string) the status: 'in', 'remote', 'busy', 'break', 'out', 'sick', or 'vacation'
comment (string) the comment, case sensitive, included with the status change
automatic (boolean) only find automatic statuses
user_id (string) the ID of a particular user
sort (string) order of the return with optional '-' to denote descending, possibilities include: 'created_at', 'status', 'comment', 'automatic'
sort_locale (string) the locale to use when sorting by comment, defaults to English (US)
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'user', 'user.favorites', 'user.latest', 'user.memberships', 'user.memberships.group', 'user.phones', 'user.recents', 'changed_by_user', 'application'

Request

Route

GET /api/v4/statuses?created_at=1791954000..1792213199

Headers

Content-Type: application/json
Authorization: Bearer E45HkjPiHvuEMf_bRIrvpxty9gK-gyLuR4PyqFGRvS4

Query Parameters

created_at=1791954000..1792213199

cURL

curl -g "https://www.simpleinout.com/api/v4/statuses?created_at=1791954000..1792213199" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer E45HkjPiHvuEMf_bRIrvpxty9gK-gyLuR4PyqFGRvS4"

Response

Simulated Response

Response Fields

Name Description
statuses (array) an array of matching statuses

Status

200

Headers

etag: W/"c22c298dc25d3ece165ab2cd96bce6a8"

Body

{
  "statuses": [
    {
      "status": "in",
      "comment": "At Work",
      "automatic": false,
      "user_id": "1663",
      "changed_by_user_id": null,
      "created_at": 1791961200
    },
    {
      "status": "out",
      "comment": "Left Work",
      "automatic": true,
      "user_id": "1663",
      "changed_by_user_id": null,
      "created_at": 1791975600
    },
    {
      "status": "in",
      "comment": "At Work",
      "automatic": false,
      "user_id": "1663",
      "changed_by_user_id": null,
      "created_at": 1791979200
    },
    {
      "status": "out",
      "comment": "Left Work",
      "automatic": false,
      "user_id": "1663",
      "changed_by_user_id": null,
      "created_at": 1791997200
    },
    {
      "status": "in",
      "comment": "At Work",
      "automatic": true,
      "user_id": "1663",
      "changed_by_user_id": null,
      "created_at": 1792047600
    },
    {
      "status": "out",
      "comment": "Left Work",
      "automatic": true,
      "user_id": "1663",
      "changed_by_user_id": null,
      "created_at": 1792069200
    },
    {
      "status": "out",
      "comment": "On Vacation",
      "automatic": false,
      "user_id": "1663",
      "changed_by_user_id": "1664",
      "created_at": 1792072800
    }
  ],
  "meta": {
    "paging": {
      "page": 1,
      "page_size": 25,
      "page_count": 1,
      "count": 7,
      "previous_page": null,
      "next_page": null,
      "first_href": "http://example.org/api/v4/statuses?created_at=1791954000..1792213199",
      "last_href": "http://example.org/api/v4/statuses?created_at=1791954000..1792213199",
      "previous_href": null,
      "next_href": null
    },
    "last_updated_at": {
      "announcements": 1791979703,
      "beacons": 1787486903,
      "desktop_presences": 1789128503,
      "favorites": 1784290103,
      "fences": 1790424503,
      "groups": 1785154103,
      "networks": 1786018103,
      "roles": 1792584503,
      "settings": 1792584503
    },
    "emergency": null
  }
}

Users

Archive a user

Archives an existing user. Users must have a role that permits managing users.

Endpoint

POST /api/v4/users/:id/archive

Request

Route

POST /api/v4/users/1675/archive

Headers

Content-Type: application/json
Authorization: Bearer tBW_UNkvF7z5HAMw_65algaEMfZ_Nm-TkevigZdzdJk

cURL

curl "https://www.simpleinout.com/api/v4/users/1675/archive" -d '' -X POST \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer tBW_UNkvF7z5HAMw_65algaEMfZ_Nm-TkevigZdzdJk"

Response

Simulated Response

Status

204

Create a future status update for a user

Add a scheduled status for a specific user. Users must have a role that permits managing their own scheduled statuses if updating themselves or be permitted to manage the scheduled statuses of others if updating another user. The company must also have scheduled statuses enabled.

Endpoint

POST /api/v4/users/:id/futures

Parameters

Name Description
future[status] required (string) must be 'in', 'remote', 'busy', 'break', 'out', 'sick', or 'vacation'
future[apply_at] required (integer) epoch time to apply status change, must be in the future, have minutes within (00, 15, 30, 45), and seconds of 0
future[comment] (string) up to 50 character description of the status update
future[end_at] (integer) epoch time to end the scheduled status, must be after apply_at, have minutes within (00, 15, 30, 45), and seconds of 0
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'user', 'changed_by_user'

Request

Route

POST /api/v4/users/1725/futures

Headers

Content-Type: application/json
Authorization: Bearer MK7UwZ0CQ7-Q2JeBSbI3ZATDjgZt0XnrZ7UFHDErbXI

Body

{
  "future": {
    "status": "out",
    "apply_at": 1797858000,
    "comment": "On Vacation",
    "end_at": 1798117200
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/users/1725/futures" -d '{"future":{"status":"out","apply_at":1797858000,"comment":"On Vacation","end_at":1798117200}}' -X POST \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer MK7UwZ0CQ7-Q2JeBSbI3ZATDjgZt0XnrZ7UFHDErbXI"

Response

Simulated Response

Response Fields

Name Description
futures (object) the newly created future object

Status

201

Headers

etag: W/"3e1dbeab8b2b51840745b9c647b29c4b"

Body

{
  "futures": {
    "id": "69",
    "status": "out",
    "comment": "On Vacation",
    "completed": false,
    "apply_at": 1797858000,
    "end_at": 1798117200,
    "user_id": "1725",
    "changed_by_user_id": "1724"
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1787918904,
      "beacons": 1785586104,
      "desktop_presences": 1791029304,
      "favorites": 1791893304,
      "fences": 1787227704,
      "groups": 1784722104,
      "networks": 1792498104,
      "roles": 1792584504,
      "settings": 1792584504
    },
    "emergency": null
  }
}

Create a future status update for the current user

Add a scheduled status for the current user. Users must have a role that permits managing their own scheduled statuses and the company must have scheduled statuses enabled.

Endpoint

POST /api/v4/users/my/futures

Parameters

Name Description
future[status] required (string) must be 'in', 'remote', 'busy', 'break', 'out', 'sick', or 'vacation'
future[apply_at] required (integer) epoch time to apply status change, must be in the future and have minutes within (00, 15, 30, 45), and seconds of 0
future[comment] (string) up to 50 character description of the status update
future[end_at] (integer) epoch time to end the scheduled status, must be after apply_at, have minutes within (00, 15, 30, 45), and seconds of 0
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'user', 'changed_by_user'

Request

Route

POST /api/v4/users/my/futures

Headers

Content-Type: application/json
Authorization: Bearer RDNWEAK7wwKeN5jOmTx-uHhJkYKubUAOjJ0gGJ7TOuo

Body

{
  "future": {
    "status": "out",
    "apply_at": 1797858000,
    "comment": "On Vacation",
    "end_at": 1798117200
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/users/my/futures" -d '{"future":{"status":"out","apply_at":1797858000,"comment":"On Vacation","end_at":1798117200}}' -X POST \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer RDNWEAK7wwKeN5jOmTx-uHhJkYKubUAOjJ0gGJ7TOuo"

Response

Simulated Response

Response Fields

Name Description
futures (object) the newly created future object

Status

201

Headers

etag: W/"2c8833f64ddcda01992aab0f4a43db00"

Body

{
  "futures": {
    "id": "68",
    "status": "out",
    "comment": "On Vacation",
    "completed": false,
    "apply_at": 1797858000,
    "end_at": 1798117200,
    "user_id": "1713",
    "changed_by_user_id": null
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1784203704,
      "beacons": 1784290104,
      "desktop_presences": 1790683704,
      "favorites": 1790165304,
      "fences": 1789560504,
      "groups": 1791806904,
      "networks": 1785326904,
      "roles": 1792584504,
      "settings": 1792584504
    },
    "emergency": null
  }
}

Create a status update for a user

Changes a user’s status. Users must have a role that permits managing their own current status or their own past statuses if updating themselves. Users must be permitted to manage the current status of others or the past status of others if updating another user.

Endpoint

POST /api/v4/users/:id/statuses

Parameters

Name Description
status[status] required (string) must be 'in', 'remote', 'busy', 'break', 'out', 'sick', or 'vacation'
status[comment] (string) up to 50 character description of the status update
status[created_at] (integer) epoch time to apply status change, defaults to the current time (if this parameter is passed the date must be in the past)
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'user', 'user.favorites', 'user.latest', 'user.memberships', 'user.phones', 'user.recents', 'changed_by_user', 'application'

Request

Route

POST /api/v4/users/1700/statuses

Headers

Content-Type: application/json
Authorization: Bearer L-5MymTVjfM0pqT2oxmSj695L9AbQuBFGImf_fYaJso

Body

{
  "status": {
    "status": "in",
    "comment": "In at HQ"
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/users/1700/statuses" -d '{"status":{"status":"in","comment":"In at HQ"}}' -X POST \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer L-5MymTVjfM0pqT2oxmSj695L9AbQuBFGImf_fYaJso"

Response

Simulated Response

Response Fields

Name Description
statuses (object) the newly created status object

Status

201

Headers

etag: W/"394f277b3bbc0b2a94ef5f8dfa56f2b9"

Body

{
  "statuses": {
    "status": "in",
    "comment": "In at HQ",
    "automatic": false,
    "user_id": "1700",
    "changed_by_user_id": "1699",
    "created_at": 1792584504
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1786363704,
      "beacons": 1791634104,
      "desktop_presences": 1784808504,
      "favorites": 1789733304,
      "fences": 1787832504,
      "groups": 1784635704,
      "networks": 1790338104,
      "roles": 1792584504,
      "settings": 1792584504
    },
    "emergency": null
  }
}

Create a status update for the current user

Changes the current user’s status. Users must have a role that permits managing their own current status or their own past statuses.

Endpoint

POST /api/v4/users/my/statuses

Parameters

Name Description
status[status] required (string) must be 'in', 'remote', 'busy', 'break', 'out', 'sick', or 'vacation'
status[comment] (st`ring) up to 50 character description of the status update
status[created_at] (integer) epoch time to apply status change, defaults to the current time (if this parameter is passed the date must be in the past)
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'user', 'user.favorites', 'user.latest', 'user.memberships', 'user.phones', 'user.recents', 'changed_by_user', 'application'

Request

Route

POST /api/v4/users/my/statuses

Headers

Content-Type: application/json
Authorization: Bearer xdIYH1Zp8A5Wn37FRhh7_3zfvBrEUol2RK-EQzBs0So

Body

{
  "status": {
    "status": "in",
    "comment": "In at HQ"
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/users/my/statuses" -d '{"status":{"status":"in","comment":"In at HQ"}}' -X POST \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer xdIYH1Zp8A5Wn37FRhh7_3zfvBrEUol2RK-EQzBs0So"

Response

Simulated Response

Response Fields

Name Description
statuses (object) the newly created status object

Status

201

Headers

etag: W/"ccd3bcd7c345a6089ac878538c41100e"

Body

{
  "statuses": {
    "status": "in",
    "comment": "In at HQ",
    "automatic": false,
    "user_id": "1726",
    "changed_by_user_id": null,
    "created_at": 1792584504
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1791202104,
      "beacons": 1784376504,
      "desktop_presences": 1786622904,
      "favorites": 1789819704,
      "fences": 1789646904,
      "groups": 1786795704,
      "networks": 1786450104,
      "roles": 1792584504,
      "settings": 1792584504
    },
    "emergency": null
  }
}

Create a user

Creates a new user. When this is completed, the user will be sent a welcome email from Simple In/Out with a link to choose their own password. Users must have a role that permits managing the company/users to create users. Companies are limited to the number of users their plan supports, and attempting to add more users will result in a greater_than error on the base parameter.

Endpoint

POST /api/v4/users

Parameters

Name Description
user[email] required (string) new user's email address
user[name] required (string) new user's full name
user[details] (string) additional text information about the user
user[lang] (string) preferred locale of the user defaulting to the locale of the authorized user, can be en, en-au, en-ca, en-gb, de, es, fr, fr-ca
user[phones_attributes] (array) phone objects to attach to the user, each with a 'number' attribute
user[memberships_attributes] (array) membership objects to place the user in the group, each with a 'group_id' attribute
user[role_id] required (string) the ID of the role to assign to the user
user[skip_confirmation_email] (boolean) whether to send a welcome email for the new user to choose their password, defaults to false which makes certain the email is sent
only (string) comma-delimited list of fields to render only, possibilities include: 'id', 'name', 'email', 'image_url', 'details', 'lang', 'created_at', 'updated_at', 'cached_at'
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'badge', 'favorites', 'latest', 'memberships', 'memberships.group', 'permissions', 'phones', 'status', 'status.application', 'status.changed_by_user', 'recents', 'role'

Request

Route

POST /api/v4/users

Headers

Content-Type: application/json
Authorization: Bearer Q8yMxTUnEoGaRxoQm1TGx9R45P-wk3mvr56DfJQCNKU

Body

{
  "user": {
    "email": "bojack@simplymadeapps.com",
    "name": "Bojack Horseman",
    "details": "Lead Actor",
    "lang": "en",
    "phones_attributes": [
      {
        "number": "471-738-6471 x6540"
      }
    ],
    "memberships_attributes": [
      {
        "group_id": 183
      }
    ],
    "role_id": "4662"
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/users" -d '{"user":{"email":"bojack@simplymadeapps.com","name":"Bojack Horseman","details":"Lead Actor","lang":"en","phones_attributes":[{"number":"471-738-6471 x6540"}],"memberships_attributes":[{"group_id":183}],"role_id":"4662"}}' -X POST \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer Q8yMxTUnEoGaRxoQm1TGx9R45P-wk3mvr56DfJQCNKU"

Response

Simulated Response

Response Fields

Name Description
users (object) the newly created user object

Status

201

Headers

etag: W/"ba564f78593061382ea3a0c7ce917886"

Body

{
  "users": {
    "id": "1696",
    "name": "Bojack Horseman",
    "email": "bojack@simplymadeapps.com",
    "details": "Lead Actor",
    "lang": "en",
    "image_url": "https://simpleinout.s3.amazonaws.com/image_none.png",
    "role_id": "4662",
    "announcements_read_at": 0,
    "created_at": 1792584504,
    "updated_at": 1792584504,
    "cached_at": "1792584504.303550000"
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1788178104,
      "beacons": 1788437304,
      "desktop_presences": 1789042104,
      "favorites": 1789387704,
      "fences": 1786795704,
      "groups": 1792584504,
      "networks": 1786277304,
      "roles": 1792584504,
      "settings": 1792584504
    },
    "emergency": null
  }
}

Create/Update user favorites

Creates user favorites (Quick Picks). If user favorites exist, they will be overwritten by the new ones. Users are limited to 10 favorites.

Endpoint

POST /api/v4/users/my/favorites

Parameters

Name Description
favorites required (array) array of objects consisting of 'status' and 'comment'
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'badge', 'favorites', 'latest', 'memberships', 'memberships.group', 'permissions', 'phones', 'status', 'status.application', 'status.changed_by_user', 'recents', 'role'
only (string) comma-delimited list of fields to render only, possibilities include: 'id', 'name', 'email', 'image_url', 'details', 'lang', 'created_at', 'updated_at', 'cached_at'

Request

Route

POST /api/v4/users/my/favorites

Headers

Content-Type: application/json
Authorization: Bearer kq6JDt5vZmiCMFBrJxVJyoGwvsN-GDkvSUyIQ4SmHig

Body

{
  "favorites": [
    {
      "status": "in",
      "comment": "At Work"
    },
    {
      "status": "out",
      "comment": "On Vacation"
    }
  ],
  "expand": "favorites"
}

cURL

curl "https://www.simpleinout.com/api/v4/users/my/favorites" -d '{"favorites":[{"status":"in","comment":"At Work"},{"status":"out","comment":"On Vacation"}],"expand":"favorites"}' -X POST \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer kq6JDt5vZmiCMFBrJxVJyoGwvsN-GDkvSUyIQ4SmHig"

Response

Simulated Response

Response Fields

Name Description
users (object) the newly updated user attributes

Status

200

Headers

etag: W/"7a3c3f6adb57b15f0fbfd397ec389586"

Body

{
  "users": {
    "id": "1704",
    "name": "Sterling Archer",
    "email": "sterling@simplymadeapps.com",
    "details": "Harum eligendi praesentium.",
    "lang": "en",
    "image_url": "https://simpleinout.s3.amazonaws.com/image_none.png",
    "favorites": [
      {
        "status": "in",
        "comment": "At Work"
      },
      {
        "status": "out",
        "comment": "On Vacation"
      }
    ],
    "role_id": "4680",
    "announcements_read_at": 0,
    "created_at": 1792584504,
    "updated_at": 1792584504,
    "cached_at": "1792584504.472495000"
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1784462904,
      "beacons": 1784722104,
      "desktop_presences": 1787746104,
      "favorites": 1790597304,
      "fences": 1791288504,
      "groups": 1790338104,
      "networks": 1788610104,
      "roles": 1792584504,
      "settings": 1792584504
    },
    "emergency": null
  }
}

Delete a user

Deletes an existing user. Users must have a role that permits managing the company/users to delete users. Companies must have at least one user with the Administrator role, if you attempt to delete the last user with the Administrator role, this will result in a less_than error on the base parameter.

Endpoint

DELETE /api/v4/users/:id

Request

Route

DELETE /api/v4/users/1692

Headers

Content-Type: application/json
Authorization: Bearer rSNYQsUrm8BM6EGmnp_Ss-NeRDHrmlrRRrGil55bO7k

cURL

curl "https://www.simpleinout.com/api/v4/users/1692" -d '' -X DELETE \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer rSNYQsUrm8BM6EGmnp_Ss-NeRDHrmlrRRrGil55bO7k"

Response

Simulated Response

Status

204

Favorite a status for the current user

Designates a previous status update as a favorite for the current user’s Quick Picks.

Endpoint

PATCH /api/v4/users/my/statuses/favorite

Parameters

Name Description
status[status] required (string) must be 'in', 'remote', 'busy', 'break', 'out', 'sick', or 'vacation'
status[comment] (string) up to 50 character description of the status update

Request

Route

PATCH /api/v4/users/my/statuses/favorite

Headers

Content-Type: application/json
Authorization: Bearer LrG37oJtD8NpNN5F4TKr8L3iNX-KuqEO6QjEFT15S8c

Body

{
  "status": {
    "status": "in",
    "comment": "At Lunch"
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/users/my/statuses/favorite" -d '{"status":{"status":"in","comment":"At Lunch"}}' -X PATCH \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer LrG37oJtD8NpNN5F4TKr8L3iNX-KuqEO6QjEFT15S8c"

Response

Simulated Response

Status

204

List all archived users

Return a list of all the archived users belonging to the company. Users must have a role that permits managing users.

Endpoint

GET /api/v4/users?archived=true

Request

Route

GET /api/v4/users?archived=true

Headers

Content-Type: application/json
Authorization: Bearer Kk1nHMlkYY827t0JX_RcfYyK7dZZPJ7ZKVA5Owxwnew

Query Parameters

archived=true

cURL

curl -g "https://www.simpleinout.com/api/v4/users?archived=true" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer Kk1nHMlkYY827t0JX_RcfYyK7dZZPJ7ZKVA5Owxwnew"

Response

Simulated Response

Status

200

Headers

etag: W/"323429d760eafc1835c791fbeee7f4ff"

Body

{
  "users": [
    {
      "id": "1677",
      "name": "Amb. Elene Kling",
      "email": null,
      "details": "Est adipisci aut.",
      "lang": "en",
      "image_url": "https://simpleinout.s3.amazonaws.com/image_none.png",
      "role_id": null,
      "announcements_read_at": 0,
      "created_at": 1792584503,
      "updated_at": 1792584503,
      "cached_at": "1792584503.758066000"
    }
  ],
  "meta": {
    "paging": {
      "page": 1,
      "page_size": 25,
      "page_count": 1,
      "count": 1,
      "previous_page": null,
      "next_page": null,
      "first_href": "http://example.org/api/v4/users?archived=true",
      "last_href": "http://example.org/api/v4/users?archived=true",
      "previous_href": null,
      "next_href": null
    },
    "last_updated_at": {
      "announcements": 1789906103,
      "beacons": 1788437303,
      "desktop_presences": 1789733303,
      "favorites": 1786536503,
      "fences": 1791288503,
      "groups": 1790597303,
      "networks": 1787314103,
      "roles": 1792584503,
      "settings": 1792584503
    },
    "emergency": null,
    "trusted_cached_at": "1792584488.765957800"
  }
}

List all future statuses for a user

List all the scheduled statuses for the specified user. Please note that the user making this request must have a role with permission to view the scheduled statuses of others and the company must have scheduled statuses enabled.

Endpoint

GET /api/v4/users/:id/futures

Parameters

Name Description
comment (string) the comment, case sensitive, included with the status change
sort (string) order of the return with optional '-' to denote descending, possibilities include: 'apply_at', 'status', 'comment'
sort_locale (string) the locale to use when sorting by comment, defaults to English (US)
apply_at (string) a date range string for the time the status will be added
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'user', 'changed_by_user'
page_size (integer) number of results to return per page, defaults to 25
page (integer) page number of results

Request

Route

GET /api/v4/users/1734/futures

Headers

Content-Type: application/json
Authorization: Bearer NIw-JBVJMWTYaSXE_8z9oNnYCwVRXLNDBWo3NTZ0wp0

cURL

curl -g "https://www.simpleinout.com/api/v4/users/1734/futures" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer NIw-JBVJMWTYaSXE_8z9oNnYCwVRXLNDBWo3NTZ0wp0"

Response

Simulated Response

Response Fields

Name Description
futures (array) an array of matching scheduled statuses

Status

200

Headers

etag: W/"6ed0ca24dacfab11e2eb31aa61f336e1"

Body

{
  "futures": [
    {
      "id": "72",
      "status": "out",
      "comment": "Offsite Meeting",
      "completed": false,
      "apply_at": 1793170800,
      "end_at": null,
      "user_id": "1734",
      "changed_by_user_id": null
    },
    {
      "id": "73",
      "status": "out",
      "comment": "Gone Fishing",
      "completed": false,
      "apply_at": 1798632000,
      "end_at": 1798804800,
      "user_id": "1734",
      "changed_by_user_id": "1735"
    }
  ],
  "meta": {
    "paging": {
      "page": 1,
      "page_size": 25,
      "page_count": 1,
      "count": 2,
      "previous_page": null,
      "next_page": null,
      "first_href": "http://example.org/api/v4/users/1734/futures?user_id=1734",
      "last_href": "http://example.org/api/v4/users/1734/futures?user_id=1734",
      "previous_href": null,
      "next_href": null
    },
    "last_updated_at": {
      "announcements": 1792152505,
      "beacons": 1787659705,
      "desktop_presences": 1786622905,
      "favorites": 1788005305,
      "fences": 1788005305,
      "groups": 1792066105,
      "networks": 1786536505,
      "roles": 1792584505,
      "settings": 1792584505
    },
    "emergency": null
  }
}

List all future statuses for the current user

List all the scheduled statuses for the current user. Please note that the company must have scheduled statuses enabled for users to see their scheduled statuses.

Endpoint

GET /api/v4/users/my/futures

Parameters

Name Description
comment (string) the comment, case sensitive, included with the status change
sort (string) order of the return with optional '-' to denote descending, possibilities include: 'apply_at', 'status', 'comment'
sort_locale (string) the locale to use when sorting by comment, defaults to English (US)
apply_at (string) a date range string for the time the status will be added
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'user', 'changed_by_user'
page_size (integer) number of results to return per page, defaults to 25
page (integer) page number of results

Request

Route

GET /api/v4/users/my/futures

Headers

Content-Type: application/json
Authorization: Bearer c-MHI-e0i5HUCpxSgsvUzdhN-NBxtU_vZSoJwO2rvDU

cURL

curl -g "https://www.simpleinout.com/api/v4/users/my/futures" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer c-MHI-e0i5HUCpxSgsvUzdhN-NBxtU_vZSoJwO2rvDU"

Response

Simulated Response

Response Fields

Name Description
futures (array) an array of matching scheduled statuses

Status

200

Headers

etag: W/"97b8ca0b44f105ac9263c60fecaf6210"

Body

{
  "futures": [
    {
      "id": "70",
      "status": "out",
      "comment": "Offsite Meeting",
      "completed": false,
      "apply_at": 1793170800,
      "end_at": null,
      "user_id": "1728",
      "changed_by_user_id": null
    },
    {
      "id": "71",
      "status": "out",
      "comment": "Gone Fishing",
      "completed": false,
      "apply_at": 1798632000,
      "end_at": 1798804800,
      "user_id": "1728",
      "changed_by_user_id": "1729"
    }
  ],
  "meta": {
    "paging": {
      "page": 1,
      "page_size": 25,
      "page_count": 1,
      "count": 2,
      "previous_page": null,
      "next_page": null,
      "first_href": "http://example.org/api/v4/users/my/futures?user_id=1728",
      "last_href": "http://example.org/api/v4/users/my/futures?user_id=1728",
      "previous_href": null,
      "next_href": null
    },
    "last_updated_at": {
      "announcements": 1790510904,
      "beacons": 1787141304,
      "desktop_presences": 1787573304,
      "favorites": 1789646904,
      "fences": 1791461305,
      "groups": 1787054905,
      "networks": 1788610105,
      "roles": 1792584505,
      "settings": 1792584505
    },
    "emergency": null
  }
}

List all statuses for a user

List all the statuses for the specified user within the time period specified by the ‘created_at’ date range. Users must have a role that permits viewing the past statuses of others if viewing another user. They can always view their own past statuses.

Endpoint

GET /api/v4/users/:id/statuses

Parameters

Name Description
created_at required (string) a date range string for the time the status was created
comment (string) the comment, case sensitive, included with the status change
sort (string) order of the return with optional '-' to denote descending, possibilities include: 'created_at', 'status', 'comment'
sort_locale (string) the locale to use when sorting by comment, defaults to English (US)
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'user', 'user.favorites', 'user.latest', 'user.memberships', 'user.phones', 'user.recents', 'changed_by_user', 'application'
page_size (integer) number of results to return per page, defaults to 25
page (integer) page number of results

Request

Route

GET /api/v4/users/1705/statuses?created_at=1791954000..1792213199

Headers

Content-Type: application/json
Authorization: Bearer 0d086zJoFe4b5xjWlRmmC7GsdRkjiLCISHVpybZ28IU

Query Parameters

created_at=1791954000..1792213199

cURL

curl -g "https://www.simpleinout.com/api/v4/users/1705/statuses?created_at=1791954000..1792213199" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer 0d086zJoFe4b5xjWlRmmC7GsdRkjiLCISHVpybZ28IU"

Response

Simulated Response

Response Fields

Name Description
statuses (array) an array of matching statuses

Status

200

Headers

etag: W/"2de28b2ad5ca46018df41e612ef6486d"

Body

{
  "statuses": [
    {
      "status": "in",
      "comment": "At Work",
      "automatic": false,
      "user_id": "1705",
      "changed_by_user_id": null,
      "created_at": 1791961200
    },
    {
      "status": "out",
      "comment": "Left Work",
      "automatic": false,
      "user_id": "1705",
      "changed_by_user_id": null,
      "created_at": 1791975600
    },
    {
      "status": "in",
      "comment": "At Work",
      "automatic": false,
      "user_id": "1705",
      "changed_by_user_id": null,
      "created_at": 1791979200
    },
    {
      "status": "out",
      "comment": "Left Work",
      "automatic": false,
      "user_id": "1705",
      "changed_by_user_id": null,
      "created_at": 1791997200
    },
    {
      "status": "in",
      "comment": "At Work",
      "automatic": false,
      "user_id": "1705",
      "changed_by_user_id": null,
      "created_at": 1792047600
    },
    {
      "status": "out",
      "comment": "Left Work",
      "automatic": false,
      "user_id": "1705",
      "changed_by_user_id": null,
      "created_at": 1792069200
    },
    {
      "status": "out",
      "comment": "Vacation",
      "automatic": false,
      "user_id": "1705",
      "changed_by_user_id": "1706",
      "created_at": 1792072800
    }
  ],
  "meta": {
    "paging": {
      "page": 1,
      "page_size": 25,
      "page_count": 1,
      "count": 7,
      "previous_page": null,
      "next_page": null,
      "first_href": "http://example.org/api/v4/users/1705/statuses?created_at=1791954000..1792213199&user_id=1705",
      "last_href": "http://example.org/api/v4/users/1705/statuses?created_at=1791954000..1792213199&user_id=1705",
      "previous_href": null,
      "next_href": null
    },
    "last_updated_at": {
      "announcements": 1791979704,
      "beacons": 1788523704,
      "desktop_presences": 1792238904,
      "favorites": 1786882104,
      "fences": 1792411704,
      "groups": 1790510904,
      "networks": 1788350904,
      "roles": 1792584504,
      "settings": 1792584504
    },
    "emergency": null
  }
}

List all statuses for the current user

List all the statuses for the current user within the time period specified by the ‘created_at’ date range.

Endpoint

GET /api/v4/users/my/statuses

Parameters

Name Description
created_at required (string) a date range string for the time the status was created
comment (string) the comment, case sensitive, included with the status change
sort (string) order of the return with optional '-' to denote descending, possibilities include: 'created_at', 'status', 'comment'
sort_locale (string) the locale to use when sorting by comment, defaults to English (US)
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'user', 'user.favorites', 'user.latest', 'user.memberships', 'user.phones', 'user.recents', 'changed_by_user', 'application'
page_size (integer) number of results to return per page, defaults to 25
page (integer) page number of results

Request

Route

GET /api/v4/users/my/statuses?created_at=1791954000..1792213199

Headers

Content-Type: application/json
Authorization: Bearer 8mu0KMMMheLFSAVWlA7WZJHYHLlrGqPbTheT8mtOIb4

Query Parameters

created_at=1791954000..1792213199

cURL

curl -g "https://www.simpleinout.com/api/v4/users/my/statuses?created_at=1791954000..1792213199" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer 8mu0KMMMheLFSAVWlA7WZJHYHLlrGqPbTheT8mtOIb4"

Response

Simulated Response

Response Fields

Name Description
statuses (array) an array of matching statuses

Status

200

Headers

etag: W/"59c517e455cfb837b09007d0670c3624"

Body

{
  "statuses": [
    {
      "status": "in",
      "comment": "At Work",
      "automatic": false,
      "user_id": "1710",
      "changed_by_user_id": null,
      "created_at": 1791961200
    },
    {
      "status": "out",
      "comment": "Left Work",
      "automatic": false,
      "user_id": "1710",
      "changed_by_user_id": null,
      "created_at": 1791975600
    },
    {
      "status": "in",
      "comment": "At Work",
      "automatic": false,
      "user_id": "1710",
      "changed_by_user_id": null,
      "created_at": 1791979200
    },
    {
      "status": "out",
      "comment": "Left Work",
      "automatic": false,
      "user_id": "1710",
      "changed_by_user_id": null,
      "created_at": 1791997200
    },
    {
      "status": "in",
      "comment": "At Work",
      "automatic": false,
      "user_id": "1710",
      "changed_by_user_id": null,
      "created_at": 1792047600
    },
    {
      "status": "out",
      "comment": "Left Work",
      "automatic": false,
      "user_id": "1710",
      "changed_by_user_id": null,
      "created_at": 1792069200
    },
    {
      "status": "out",
      "comment": "Vacation",
      "automatic": false,
      "user_id": "1710",
      "changed_by_user_id": "1711",
      "created_at": 1792072800
    }
  ],
  "meta": {
    "paging": {
      "page": 1,
      "page_size": 25,
      "page_count": 1,
      "count": 7,
      "previous_page": null,
      "next_page": null,
      "first_href": "http://example.org/api/v4/users/my/statuses?created_at=1791954000..1792213199&user_id=1710",
      "last_href": "http://example.org/api/v4/users/my/statuses?created_at=1791954000..1792213199&user_id=1710",
      "previous_href": null,
      "next_href": null
    },
    "last_updated_at": {
      "announcements": 1787573304,
      "beacons": 1788178104,
      "desktop_presences": 1784030904,
      "favorites": 1784290104,
      "fences": 1790338104,
      "groups": 1792066104,
      "networks": 1788005304,
      "roles": 1792584504,
      "settings": 1792584504
    },
    "emergency": null
  }
}

List all users

Return a list of all the users belonging to the company. Users must have a role that permits viewing users.

Endpoint

GET /api/v4/users

Parameters

Name Description
page_size (integer) number of results to return per page, defaults to 25
page (integer) page number of results
name (string) return users with this name
email (string) return users with this email
id (array) return users by an array of ids
created_at (string) a date range string for the time this user was created
group_id (string/array) return users belonging to a group id, which can be a string or array in the form of group_id[]=INT
status (string) return users whose current status matches, which can be a comma-delimited list of statuses
cached_at (integer/float) return users updated that have made a significant change since an epoch time, accurate to nanoseconds
global[query] (string) a search term to filter users by name or current status comment
global[locale] (string) the locale to use for filtering results, can be en, en-au, en-ca, en-gb, de, es, fr, fr-ca, defaults to 'en'
sort (string) order of the return with optional '-' to denote descending, possibilities include: 'name', 'details', 'email', 'cached_at', 'created_at', 'status.comment', 'status.status', 'status.created_at'
sort_locale (string) the locale to use when sorting by comment, defaults to English (US)
only (string) comma-delimited list of fields to render only, possibilities include: 'id', 'name', 'email', 'image_url', 'details', 'lang', 'created_at', 'updated_at', 'cached_at'
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'badge', 'favorites', 'latest', 'memberships', 'memberships.group', 'permissions', 'phones', 'status', 'status.application', 'status.changed_by_user', 'recents', 'role'

Request

Route

GET /api/v4/users

Headers

Content-Type: application/json
Authorization: Bearer oaDgNBe_va7Y6Jexz0OxC_O0UWMsx2tQnlYH8sGJhJQ

cURL

curl -g "https://www.simpleinout.com/api/v4/users" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer oaDgNBe_va7Y6Jexz0OxC_O0UWMsx2tQnlYH8sGJhJQ"

Response

Simulated Response

Response Fields

Name Description
users (array) an array of users
trusted_cached_at (string in the meta object) the server time minus an amount to account for network delivery time

Status

200

Headers

etag: W/"2a65f45d77f58f8fa66f44fc9b633abf"

Body

{
  "users": [
    {
      "id": "1716",
      "name": "Malory Archer",
      "email": "malory@simplymadeapps.com",
      "details": "Eligendi dolorem praesentium.",
      "lang": "en",
      "image_url": "https://simpleinout.s3.amazonaws.com/image_none.png",
      "role_id": "4706",
      "announcements_read_at": 0,
      "created_at": 1792584504,
      "updated_at": 1792584504,
      "cached_at": "1792584504.809257000"
    },
    {
      "id": "1717",
      "name": "Sterling Archer",
      "email": "sterling@simplymadeapps.com",
      "details": "Voluptatibus atque eum.",
      "lang": "en",
      "image_url": "https://simpleinout.s3.amazonaws.com/image_none.png",
      "role_id": "4708",
      "announcements_read_at": 0,
      "created_at": 1792584504,
      "updated_at": 1792584504,
      "cached_at": "1792584504.816193000"
    },
    {
      "id": "1718",
      "name": "Lana Kane",
      "email": "lana@simplymadeapps.com",
      "details": "Deserunt minima sapiente.",
      "lang": "en",
      "image_url": "https://simpleinout.s3.amazonaws.com/image_none.png",
      "role_id": "4708",
      "announcements_read_at": 0,
      "created_at": 1792584504,
      "updated_at": 1792584504,
      "cached_at": "1792584504.823999000"
    },
    {
      "id": "1719",
      "name": "Ray Gillette",
      "email": "ray@simplymadeapps.com",
      "details": "Rerum sit sed.",
      "lang": "en",
      "image_url": "https://simpleinout.s3.amazonaws.com/image_none.png",
      "role_id": "4708",
      "announcements_read_at": 0,
      "created_at": 1792584504,
      "updated_at": 1792584504,
      "cached_at": "1792584504.831237000"
    }
  ],
  "meta": {
    "paging": {
      "page": 1,
      "page_size": 25,
      "page_count": 1,
      "count": 4,
      "previous_page": null,
      "next_page": null,
      "first_href": "http://example.org/api/v4/users",
      "last_href": "http://example.org/api/v4/users",
      "previous_href": null,
      "next_href": null
    },
    "last_updated_at": {
      "announcements": 1790856504,
      "beacons": 1791202104,
      "desktop_presences": 1789819704,
      "favorites": 1789474104,
      "fences": 1785499704,
      "groups": 1792325304,
      "networks": 1789042104,
      "roles": 1792584504,
      "settings": 1792584504
    },
    "emergency": null,
    "trusted_cached_at": "1792584489.838225800"
  }
}

Mark announcements as read

Marks announcements beforehand as read. If an epoch time from the future is passed in, it will become the current time.

Endpoint

POST /api/v4/users/my/announcements/read

Parameters

Name Description
read_at required (integer) epoch time denoting all announcements before this time have been read

Request

Route

POST /api/v4/users/my/announcements/read

Headers

Content-Type: application/json
Authorization: Bearer BFdJQemB9OmF5SbA9SzzSbZiy5a2KNMnot8Csjieah4

cURL

curl "https://www.simpleinout.com/api/v4/users/my/announcements/read" -d '' -X POST \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer BFdJQemB9OmF5SbA9SzzSbZiy5a2KNMnot8Csjieah4"

Response

Simulated Response

Response Fields

Name Description
users (object) the newly updated user attributes

Status

204

Retrieve a user

Retrieve an existing user. Users must have a role that permits viewing users.

Endpoint

GET /api/v4/users/:id

Parameters

Name Description
only (string) comma-delimited list of fields to render only, possibilities include: 'id', 'name', 'email', 'image_url', 'details', 'lang', 'created_at', 'updated_at', 'cached_at'
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'badge', 'favorites', 'latest', 'memberships', 'memberships.group', 'permissions', 'phones', 'status', 'status.application', 'status.changed_by_user', 'recents', 'role'

Request

Route

GET /api/v4/users/1723

Headers

Content-Type: application/json
Authorization: Bearer 1lGDpOVtuXLhSyGROH8-oeyzmK9-JoEflwawP9_WDlA

cURL

curl -g "https://www.simpleinout.com/api/v4/users/1723" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer 1lGDpOVtuXLhSyGROH8-oeyzmK9-JoEflwawP9_WDlA"

Response

Simulated Response

Response Fields

Name Description
users (object) a user object

Status

200

Headers

etag: W/"2312058cef303f0b2ffa1ac45bf9fbdf"

Body

{
  "users": {
    "id": "1723",
    "name": "Sterling Archer",
    "email": "sterling@simplymadeapps.com",
    "details": "Natus aliquam omnis.",
    "lang": "en",
    "image_url": "https://simpleinout.s3.amazonaws.com/image_none.png",
    "role_id": "4716",
    "announcements_read_at": 0,
    "created_at": 1792584504,
    "updated_at": 1792584504,
    "cached_at": "1792584504.906388000"
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1790942904,
      "beacons": 1789042104,
      "desktop_presences": 1785845304,
      "favorites": 1789042104,
      "fences": 1791720504,
      "groups": 1784808504,
      "networks": 1784290104,
      "roles": 1792584504,
      "settings": 1792584504
    },
    "emergency": null
  }
}

Retrieve the current user

Retrieve the current user who is authorized.

Endpoint

GET /api/v4/users/my

Parameters

Name Description
only (string) comma-delimited list of fields to render only, possibilities include: 'id', 'name', 'email', 'image_url', 'details', 'lang', 'created_at', 'updated_at', 'cached_at'
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'badge', 'favorites', 'latest', 'memberships', 'memberships.group', 'permissions', 'phones', 'status', 'status.application', 'status.changed_by_user', 'recents', 'role'

Request

Route

GET /api/v4/users/my

Headers

Content-Type: application/json
Authorization: Bearer Z3xzHVEUW_kdFaQ3KNohRJ0OrqQQQf9Uj8O5NjkG5mo

cURL

curl -g "https://www.simpleinout.com/api/v4/users/my" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer Z3xzHVEUW_kdFaQ3KNohRJ0OrqQQQf9Uj8O5NjkG5mo"

Response

Simulated Response

Response Fields

Name Description
users (object) a user object

Status

200

Headers

etag: W/"9076cd176b169a94e7c8fafa598c5770"

Body

{
  "users": {
    "id": "1731",
    "name": "Sterling Archer",
    "email": "sterling@simplymadeapps.com",
    "details": "Sit veritatis ratione.",
    "lang": "en",
    "image_url": "https://simpleinout.s3.amazonaws.com/image_none.png",
    "role_id": "4732",
    "announcements_read_at": 0,
    "created_at": 1792584505,
    "updated_at": 1792584505,
    "cached_at": "1792584505.083040000"
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1792238905,
      "beacons": 1787573305,
      "desktop_presences": 1787141305,
      "favorites": 1792152505,
      "fences": 1785154105,
      "groups": 1789474105,
      "networks": 1786795705,
      "roles": 1792584505,
      "settings": 1792584505
    },
    "emergency": null
  }
}

Unarchive a user

Unarchives an archived user. Users must have a role that permits managing users.

Endpoint

POST /api/v4/users/:id/unarchive

Parameters

Name Description
user[email] required (string) the user's email address
user[name] (string) the user's full name
user[details] (string) additional text information about the user
user[lang] (string) preferred locale of the user defaulting to the locale of the authorized user, can be en, en-au, en-ca, en-gb, de, es, fr, fr-ca
user[phones_attributes] (array) phone objects to attach to the user, each with a 'number' attribute
user[memberships_attributes] (array) membership objects to place the user in the group, each with a 'group_id' attribute
user[role_id] required (string) the ID of the role to assign to the user
only (string) comma-delimited list of fields to render only, possibilities include: 'id', 'name', 'email', 'image_url', 'details', 'lang', 'created_at', 'updated_at', 'cached_at'
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'badge', 'favorites', 'latest', 'memberships', 'memberships.group', 'permissions', 'phones', 'status', 'status.application', 'status.changed_by_user', 'recents', 'role'

Request

Route

POST /api/v4/users/1656/unarchive

Headers

Content-Type: application/json
Authorization: Bearer H-Z5XtU6aF88mfq1fGchUhOuz8tEn78l_w0KO0fQ9CE

Body

{
  "user": {
    "email": "bojack@simplymadeapps.com",
    "role_id": "4562"
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/users/1656/unarchive" -d '{"user":{"email":"bojack@simplymadeapps.com","role_id":"4562"}}' -X POST \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer H-Z5XtU6aF88mfq1fGchUhOuz8tEn78l_w0KO0fQ9CE"

Response

Simulated Response

Status

200

Headers

etag: W/"7a9a16bbaa7d74e6fa112c414c27df37"

Body

{
  "users": {
    "id": "1656",
    "name": "Joleen Schmidt",
    "email": "bojack@simplymadeapps.com",
    "details": "Nesciunt ducimus modi.",
    "lang": "en",
    "image_url": "https://simpleinout.s3.amazonaws.com/image_none.png",
    "role_id": "4562",
    "created_at": 1792584503,
    "updated_at": 1792584503,
    "cached_at": "1792584503.137665000"
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1792584503,
      "beacons": 1784549303,
      "desktop_presences": 1786709303,
      "favorites": 1787486903,
      "fences": 1784117303,
      "groups": 1786450103,
      "networks": 1790424503,
      "roles": 1792584503,
      "settings": 1792584503
    },
    "emergency": null
  }
}

Unfavorite a status for the current user

Undoes a previous status’ favorite designation for the current user’s Quick Picks.

Endpoint

PATCH /api/v4/users/my/statuses/unfavorite

Parameters

Name Description
status[status] required (string) must be 'in', 'remote', 'busy', 'break', 'out', 'sick', or 'vacation'
status[comment] (string) up to 50 character description of the status update

Request

Route

PATCH /api/v4/users/my/statuses/unfavorite

Headers

Content-Type: application/json
Authorization: Bearer ixSrepOJqma0q-HqC6z6DNxDayp2xamjC-PSlF3NANU

Body

{
  "status": {
    "status": "in",
    "comment": "At Lunch"
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/users/my/statuses/unfavorite" -d '{"status":{"status":"in","comment":"At Lunch"}}' -X PATCH \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer ixSrepOJqma0q-HqC6z6DNxDayp2xamjC-PSlF3NANU"

Response

Simulated Response

Status

204

Update a user

Updates an existing user. Users must have a role that permits managing the company/users to update users. Companies must have at least one user with the Administrator role, if you attempt to change the role of the last user with the Administrator role, this will result in a less_than error on the base parameter.

Endpoint

PATCH /api/v4/users/:id

Parameters

Name Description
user[email] (string) new user's email address
user[name] (string) new user's full name
user[details] (string) additional text information about the user
user[lang] (string) preferred locale of the user, can be en, en-au, en-ca, en-gb, de, es, fr, fr-ca
user[phones_attributes] (array) phone objects to attach to the user if both 'id' and 'number' are passed in, the existing phone number will be updated if just 'number' is passed in, a new phone will be added if both 'id' and '_destroy' are passed in ('_destroy' being truthy like 'true' or '1'), the phone number will be removed
user[memberships_attributes] (array) group objects to attach to the user if both 'id' and 'group_id' are passed in, the existing membership will be updated if just 'group_id' is passed in, a new membership will be added if both 'id' and '_destroy' are passed in ('_destroy' being truthy like 'true' or '1'), the group membership will be removed
user[role_id] (string) the ID of the role to assign to the user
only (string) comma-delimited list of fields to render only, possibilities include: 'id', 'name', 'email', 'image_url', 'details', 'lang', 'created_at', 'updated_at', 'cached_at'
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'badge', 'favorites', 'latest', 'memberships', 'memberships.group', 'permissions', 'phones', 'status', 'status.application', 'status.changed_by_user', 'recents', 'role'

Request

Route

PATCH /api/v4/users/1698

Headers

Content-Type: application/json
Authorization: Bearer -yuUUjxbGVaXzLvFeXquR45bm0lZFIhwLHeZE9YwQmc

Body

{
  "user": {
    "phones_attributes": [
      {
        "number": "229.121.5309 x5522"
      }
    ],
    "memberships_attributes": [
      {
        "group_id": 184
      }
    ]
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/users/1698" -d '{"user":{"phones_attributes":[{"number":"229.121.5309 x5522"}],"memberships_attributes":[{"group_id":184}]}}' -X PATCH \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer -yuUUjxbGVaXzLvFeXquR45bm0lZFIhwLHeZE9YwQmc"

Response

Simulated Response

Response Fields

Name Description
users (object) the newly updated user attributes

Status

200

Headers

etag: W/"aac2fb54d21e2f81b4b54337a1b145ed"

Body

{
  "users": {
    "id": "1698",
    "name": "Sterling Archer",
    "email": "sterling@simplymadeapps.com",
    "details": "Vitae error a.",
    "lang": "en",
    "image_url": "https://simpleinout.s3.amazonaws.com/image_none.png",
    "role_id": "4668",
    "announcements_read_at": 0,
    "created_at": 1792584504,
    "updated_at": 1792584504,
    "cached_at": "1792584504.347244000"
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1792152504,
      "beacons": 1786277304,
      "desktop_presences": 1787141304,
      "favorites": 1787573304,
      "fences": 1788264504,
      "groups": 1792584504,
      "networks": 1786450104,
      "roles": 1792584504,
      "settings": 1792584504
    },
    "emergency": null
  }
}

Update the current user

Updates the currently authorized user. The current user cannot update their own role.

Endpoint

PATCH /api/v4/users/my

Parameters

Name Description
user[email] (string) new user's email address
user[name] (string) new user's full name
user[details] (string) additional text information about the user
user[lang] (string) preferred locale of the user, can be en, en-au, en-ca, en-gb, de, es, fr, fr-ca
user[phones_attributes] (array) phone objects to attach to the user if both 'id' and 'number' are passed in, the existing phone number will be updated if just 'number' is passed in, a new phone will be added if both 'id' and '_destroy' are passed in ('_destroy' being truthy like 'true' or '1'), the phone number will be removed
user[memberships_attributes] (array) group objects to attach to the user if both 'id' and 'group_id' are passed in, the existing membership will be updated if just 'group_id' is passed in, a new membership will be added if both 'id' and '_destroy' are passed in ('_destroy' being truthy like 'true' or '1') the group membership will be removed
only (string) comma-delimited list of fields to render only, possibilities include: 'id', 'name', 'email', 'image_url', 'details', 'lang', 'created_at', 'updated_at', 'cached_at'
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'badge', 'favorites', 'latest', 'memberships', 'memberships.group', 'permissions', 'phones', 'status', 'status.application', 'status.changed_by_user', 'recents', 'role'

Request

Route

PATCH /api/v4/users/my

Headers

Content-Type: application/json
Authorization: Bearer 7HNO_rNY9Bk993-lvKSzWFRlynFHi0Ita_qNrJ4Lti8

Body

{
  "user": {
    "phones_attributes": [
      {
        "number": "1-508-619-8881"
      }
    ],
    "memberships_attributes": [
      {
        "group_id": 186
      }
    ]
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/users/my" -d '{"user":{"phones_attributes":[{"number":"1-508-619-8881"}],"memberships_attributes":[{"group_id":186}]}}' -X PATCH \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer 7HNO_rNY9Bk993-lvKSzWFRlynFHi0Ita_qNrJ4Lti8"

Response

Simulated Response

Response Fields

Name Description
users (object) the newly updated user attributes

Status

200

Headers

etag: W/"6c459aed637cb5b7e4741774ddbd3d49"

Body

{
  "users": {
    "id": "1712",
    "name": "Manual Osinski",
    "email": "mallory@simplymadeapps.com",
    "details": "Qui natus tenetur.",
    "lang": "en",
    "image_url": "https://simpleinout.s3.amazonaws.com/image_none.png",
    "role_id": "4694",
    "announcements_read_at": 0,
    "created_at": 1792584504,
    "updated_at": 1792584504,
    "cached_at": "1792584504.712020900"
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1788264504,
      "beacons": 1784549304,
      "desktop_presences": 1792238904,
      "favorites": 1788869304,
      "fences": 1786968504,
      "groups": 1792584504,
      "networks": 1792584504,
      "roles": 1792584504,
      "settings": 1792584504
    },
    "emergency": null
  }
}

Visitors

Archive a visitor

Archives an existing visitor. Users must have a role that permits managing visitors.

Endpoint

POST /api/v4/visitors/:visitor_id/archive

Request

Route

POST /api/v4/visitors/68/archive

Headers

Content-Type: application/json
Authorization: Bearer rAXssiSjXp0UpUbDKBdRmAHrtV4AaRSvYf6OlQFghX4

cURL

curl "https://www.simpleinout.com/api/v4/visitors/68/archive" -d '' -X POST \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer rAXssiSjXp0UpUbDKBdRmAHrtV4AaRSvYf6OlQFghX4"

Response

Simulated Response

Status

204

Create a status update for a visitor

Changes a visitor’s status. Users must have a role that permits managing visitor statuses.

Endpoint

POST /api/v4/visitors/:id/statuses

Parameters

Name Description
status[status] required (string) must be 'in', 'remote', 'busy', 'break', 'out', 'sick', or 'vacation'
status[comment] (string) up to 50 character description of the status update
status[created_at] (integer) epoch time to apply status change, defaults to the current time (if this parameter is passed the date must be in the past)
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'visitor', 'changed_by_user', 'application'

Request

Route

POST /api/v4/visitors/62/statuses

Headers

Content-Type: application/json
Authorization: Bearer Fbc580lIFVvL70goousO5c5Sw2Ef0wKq4BA6TzhHSPU

Body

{
  "status": {
    "status": "in",
    "comment": "In at HQ"
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/visitors/62/statuses" -d '{"status":{"status":"in","comment":"In at HQ"}}' -X POST \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer Fbc580lIFVvL70goousO5c5Sw2Ef0wKq4BA6TzhHSPU"

Response

Simulated Response

Response Fields

Name Description
statuses (object) the newly created status object

Status

201

Headers

etag: W/"774398b808197f91c82416c4788e5e22"

Body

{
  "statuses": {
    "status": "in",
    "comment": "In at HQ",
    "visitor_id": "62",
    "changed_by_user_id": "1620",
    "created_at": 1792584502
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1785067701,
      "beacons": 1791029301,
      "desktop_presences": 1791893301,
      "favorites": 1787832501,
      "fences": 1787573301,
      "groups": 1788091701,
      "networks": 1791806901,
      "roles": 1792584502,
      "settings": 1792584502
    },
    "emergency": null
  }
}

Create a visitor

Creates a new visitor. Users must have a role that permits managing visitors to create visitors.

Endpoint

POST /api/v4/visitors

Parameters

Name Description
visitor[name] required (string) new visitor's full name
visitor[email] (string) new visitor's email address
visitor[phone] (string) new visitor's phone number
only (string) comma-delimited list of fields to render only, possibilities include: 'id', 'name', 'email', 'phone', 'image_url', 'created_at', 'updated_at', 'cached_at'
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'badge', 'status', 'status.application', 'status.changed_by_user'

Request

Route

POST /api/v4/visitors

Headers

Content-Type: application/json
Authorization: Bearer bhNlf6ucn72PWdrzwxKrmhjHcsQKsLc9tLbNgK2WAAg

Body

{
  "visitor": {
    "name": "Bojack Horseman",
    "email": "bojack@simplymadeapps.com",
    "phone": "(474) 768-3363 x8890"
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/visitors" -d '{"visitor":{"name":"Bojack Horseman","email":"bojack@simplymadeapps.com","phone":"(474) 768-3363 x8890"}}' -X POST \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer bhNlf6ucn72PWdrzwxKrmhjHcsQKsLc9tLbNgK2WAAg"

Response

Simulated Response

Response Fields

Name Description
visitors (object) the newly created visitor object

Status

201

Headers

etag: W/"3f153c3afdd0bafc260b7315f1990e50"

Body

{
  "visitors": {
    "id": "58",
    "name": "Bojack Horseman",
    "email": "bojack@simplymadeapps.com",
    "phone": "(474) 768-3363 x8890",
    "image_url": null,
    "created_at": 1792584501,
    "updated_at": 1792584501,
    "cached_at": "1792584501.917337200"
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1785845301,
      "beacons": 1786709301,
      "desktop_presences": 1787314101,
      "favorites": 1789301301,
      "fences": 1785240501,
      "groups": 1790424501,
      "networks": 1788869301,
      "roles": 1792584501,
      "settings": 1792584501
    },
    "emergency": null
  }
}

Delete a visitor

Deletes an existing visitor. Users must have a role that permits managing visitors to delete visitors.

Endpoint

DELETE /api/v4/visitors/:id

Request

Route

DELETE /api/v4/visitors/64

Headers

Content-Type: application/json
Authorization: Bearer Ht5_F8TxFpGWCbJ_c6Pi24YAbHlV3QP-Ot-8Sqr1QDM

cURL

curl "https://www.simpleinout.com/api/v4/visitors/64" -d '' -X DELETE \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer Ht5_F8TxFpGWCbJ_c6Pi24YAbHlV3QP-Ot-8Sqr1QDM"

Response

Simulated Response

Status

204

List all archived visitors

Return a list of all the archived visitors belonging to the company. Users must have a role that permits managing visitors.

Endpoint

GET /api/v4/visitors?archived=true

Request

Route

GET /api/v4/visitors?archived=true

Headers

Content-Type: application/json
Authorization: Bearer Btf8DvC3o_IMWruX3AWLg2e5DbIi6W0tkNiYpkZJmak

Query Parameters

archived=true

cURL

curl -g "https://www.simpleinout.com/api/v4/visitors?archived=true" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer Btf8DvC3o_IMWruX3AWLg2e5DbIi6W0tkNiYpkZJmak"

Response

Simulated Response

Status

200

Headers

etag: W/"c62bb7bd5c7c6cb562d5363c2ad789f1"

Body

{
  "visitors": [
    {
      "id": "67",
      "name": "Benedict Murray",
      "email": "guy@macejkovic.info",
      "phone": "(730) 081-4203",
      "image_url": null,
      "created_at": 1792584502,
      "updated_at": 1792584502,
      "cached_at": "1792584502.413329000"
    }
  ],
  "meta": {
    "paging": {
      "page": 1,
      "page_size": 25,
      "page_count": 1,
      "count": 1,
      "previous_page": null,
      "next_page": null,
      "first_href": "http://example.org/api/v4/visitors?archived=true",
      "last_href": "http://example.org/api/v4/visitors?archived=true",
      "previous_href": null,
      "next_href": null
    },
    "last_updated_at": {
      "announcements": 1784722102,
      "beacons": 1786622902,
      "desktop_presences": 1791979702,
      "favorites": 1791115702,
      "fences": 1785240502,
      "groups": 1787054902,
      "networks": 1784808502,
      "roles": 1792584502,
      "settings": 1792584502
    },
    "emergency": null,
    "trusted_cached_at": "1792584487.417711000"
  }
}

List all statuses for a visitor

List all the statuses for the specified visitor within the time period specified by the ‘created_at’ date range. Users must have a role that permits viewing the past statuses of visitors.

Endpoint

GET /api/v4/visitors/:id/statuses

Parameters

Name Description
created_at required (string) a date range string for the time the status was created
comment (string) the comment, case sensitive, included with the status change
sort (string) order of the return with optional '-' to denote descending, possibilities include: 'created_at', 'status', 'comment'
sort_locale (string) the locale to use when sorting by comment, defaults to English (US)
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'visitor', 'changed_by_user', 'application'
page_size (integer) number of results to return per page, defaults to 25
page (integer) page number of results

Request

Route

GET /api/v4/visitors/56/statuses?created_at=1791954000..1792213199

Headers

Content-Type: application/json
Authorization: Bearer DJA4I5IUVqI8zu3UkRZ7pRTAq6SQ4s-UutL4zeDKORk

Query Parameters

created_at=1791954000..1792213199

cURL

curl -g "https://www.simpleinout.com/api/v4/visitors/56/statuses?created_at=1791954000..1792213199" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer DJA4I5IUVqI8zu3UkRZ7pRTAq6SQ4s-UutL4zeDKORk"

Response

Simulated Response

Response Fields

Name Description
statuses (array) an array of matching statuses

Status

200

Headers

etag: W/"54bf126e7aa9738fcb29a2090bdf9fd8"

Body

{
  "statuses": [
    {
      "status": "in",
      "comment": "At Work",
      "visitor_id": "56",
      "changed_by_user_id": null,
      "created_at": 1791961200
    },
    {
      "status": "out",
      "comment": "Left Work",
      "visitor_id": "56",
      "changed_by_user_id": null,
      "created_at": 1791975600
    },
    {
      "status": "in",
      "comment": "At Work",
      "visitor_id": "56",
      "changed_by_user_id": null,
      "created_at": 1791979200
    },
    {
      "status": "out",
      "comment": "Left Work",
      "visitor_id": "56",
      "changed_by_user_id": null,
      "created_at": 1791997200
    },
    {
      "status": "in",
      "comment": "At Work",
      "visitor_id": "56",
      "changed_by_user_id": null,
      "created_at": 1792047600
    },
    {
      "status": "out",
      "comment": "Left Work",
      "visitor_id": "56",
      "changed_by_user_id": null,
      "created_at": 1792069200
    },
    {
      "status": "out",
      "comment": "Away",
      "visitor_id": "56",
      "changed_by_user_id": "1615",
      "created_at": 1792072800
    }
  ],
  "meta": {
    "paging": {
      "page": 1,
      "page_size": 25,
      "page_count": 1,
      "count": 7,
      "previous_page": null,
      "next_page": null,
      "first_href": "http://example.org/api/v4/visitors/56/statuses?created_at=1791954000..1792213199&visitor_id=56",
      "last_href": "http://example.org/api/v4/visitors/56/statuses?created_at=1791954000..1792213199&visitor_id=56",
      "previous_href": null,
      "next_href": null
    },
    "last_updated_at": {
      "announcements": 1791547701,
      "beacons": 1786968501,
      "desktop_presences": 1789128501,
      "favorites": 1789301301,
      "fences": 1788782901,
      "groups": 1789128501,
      "networks": 1790942901,
      "roles": 1792584501,
      "settings": 1792584501
    },
    "emergency": null
  }
}

List all visitors

Return a list of all the visitors belonging to the company. Users must have a role that permits viewing the visitor board.

Endpoint

GET /api/v4/visitors

Parameters

Name Description
page_size (integer) number of results to return per page, defaults to 25
page (integer) page number of results
name (string) return visitors with this name
email (string) return visitors with this email
phone (string) return visitors with this phone
id (array) return visitors by an array of ids
created_at (string) a date range string for the time this visitor was created
updated_at (integer/float) return visitors updated that have made a significant change since an epoch time, accurate to nanoseconds
cached_at (integer/float) return visitors updated that have made a significant change since an epoch time, accurate to nanoseconds
status (string) return visitors whose current status matches, which can be a comma-delimited list of statuses
global[query] (string) a search term to filter visitors by name or current status comment
global[locale] (string) the locale to use for filtering results, can be en, en-au, en-ca, en-gb, de, es, fr, fr-ca, defaults to 'en'
sort (string) order of the return with optional '-' to denote descending, possibilities include: 'name', 'email', 'phone', 'updated_at', 'cached_at', 'created_at', 'status.comment', 'status.created_at', 'status.status'
sort_locale (string) the locale to use when sorting by comment, defaults to English (US)
only (string) comma-delimited list of fields to render only, possibilities include: 'id', 'name', 'email', 'phone', 'image_url', 'created_at', 'updated_at', 'cached_at'
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'badge', 'status', 'status.application', 'status.changed_by_user'

Request

Route

GET /api/v4/visitors

Headers

Content-Type: application/json
Authorization: Bearer dghcwUiHHbm-zPf-Co9i70TjIHiQ7V_BVj2xykYtK_o

cURL

curl -g "https://www.simpleinout.com/api/v4/visitors" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer dghcwUiHHbm-zPf-Co9i70TjIHiQ7V_BVj2xykYtK_o"

Response

Simulated Response

Response Fields

Name Description
visitors (array) an array of visitors
trusted_cached_at (string in the meta object) the server time minus an amount to account for network delivery time. While this is labeled as 'trusted_cached_at' for consistency it is actually referencing the updated_at time.

Status

200

Headers

etag: W/"a76b70abfefa2950e48b250d99388138"

Body

{
  "visitors": [
    {
      "id": "60",
      "name": "Ray Gillette",
      "email": "ray@simplymadeapps.com",
      "phone": "929-556-8627 x18277",
      "image_url": null,
      "created_at": 1792584501,
      "updated_at": 1792584501,
      "cached_at": "1792584501.954255000"
    },
    {
      "id": "59",
      "name": "Lana Kane",
      "email": "lana@simplymadeapps.com",
      "phone": "1-776-769-7733 x24611",
      "image_url": null,
      "created_at": 1792584501,
      "updated_at": 1792584501,
      "cached_at": "1792584501.949594000"
    }
  ],
  "meta": {
    "paging": {
      "page": 1,
      "page_size": 25,
      "page_count": 1,
      "count": 2,
      "previous_page": null,
      "next_page": null,
      "first_href": "http://example.org/api/v4/visitors",
      "last_href": "http://example.org/api/v4/visitors",
      "previous_href": null,
      "next_href": null
    },
    "last_updated_at": {
      "announcements": 1791806901,
      "beacons": 1789733301,
      "desktop_presences": 1790597301,
      "favorites": 1784981301,
      "fences": 1784549301,
      "groups": 1788350901,
      "networks": 1785758901,
      "roles": 1792584501,
      "settings": 1792584501
    },
    "emergency": null,
    "trusted_cached_at": "1792584486.959636000"
  }
}

Retrieve a visitor

Retrieve an existing visitor. Users must have a role that permits viewing the visitor board.

Endpoint

GET /api/v4/visitors/:id

Parameters

Name Description
only (string) comma-delimited list of fields to render only, possibilities include: 'id', 'name', 'email', 'phone', 'image_url', 'created_at', 'updated_at', 'cached_at'
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'badge', 'status', 'status.application', 'status.changed_by_user'

Request

Route

GET /api/v4/visitors/57

Headers

Content-Type: application/json
Authorization: Bearer w9vqzbPTpKLlO9H4VcN96zKVKZsHH0bvr0TMJ-YychM

cURL

curl -g "https://www.simpleinout.com/api/v4/visitors/57" -X GET \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer w9vqzbPTpKLlO9H4VcN96zKVKZsHH0bvr0TMJ-YychM"

Response

Simulated Response

Response Fields

Name Description
visitors (object) a visitor object

Status

200

Headers

etag: W/"6f58f1a396dfb37c54827f1f4b7ae8f6"
last-modified: Wed, 21 Oct 2026 12:08:21 GMT

Body

{
  "visitors": {
    "id": "57",
    "name": "Debi Franecki",
    "email": "marci.bogan@runte.biz",
    "phone": "828.088.7483",
    "image_url": null,
    "created_at": 1792584501,
    "updated_at": 1792584501,
    "cached_at": "1792584501.881622000"
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1787918901,
      "beacons": 1784635701,
      "desktop_presences": 1787746101,
      "favorites": 1786536501,
      "fences": 1792498101,
      "groups": 1784981301,
      "networks": 1784462901,
      "roles": 1792584501,
      "settings": 1792584501
    },
    "emergency": null
  }
}

Unarchive a visitor

Unarchives an archived visitor. Users must have a role that permits managing visitors.

Endpoint

POST /api/v4/visitors/:visitor_id/unarchive

Parameters

Name Description
only (string) comma-delimited list of fields to render only, possibilities include: 'id', 'name', 'email', 'phone', 'image_url', 'created_at', 'updated_at'
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'badge', 'status', 'status.application', 'status.changed_by_user'

Request

Route

POST /api/v4/visitors/71/unarchive

Headers

Content-Type: application/json
Authorization: Bearer GraCSMv6Di7kl7T2xNpCWxUJuZhprrffA7fvNHptYpE

cURL

curl "https://www.simpleinout.com/api/v4/visitors/71/unarchive" -d '' -X POST \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer GraCSMv6Di7kl7T2xNpCWxUJuZhprrffA7fvNHptYpE"

Response

Simulated Response

Response Fields

Name Description
visitors (object) the newly unarchived visitor object

Status

200

Headers

etag: W/"f04a3aabc199c3dbee37689103c5c92d"

Body

{
  "visitors": {
    "id": "71",
    "name": "Ira Tromp",
    "email": "bernardine@metz.net",
    "phone": "(468) 510-1423 x47123",
    "image_url": null,
    "created_at": 1792584502,
    "updated_at": 1792584502,
    "cached_at": "1792584502.931338000"
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1786795702,
      "beacons": 1787832502,
      "desktop_presences": 1784894902,
      "favorites": 1785499702,
      "fences": 1784722102,
      "groups": 1790856502,
      "networks": 1786882102,
      "roles": 1792584502,
      "settings": 1792584502
    },
    "emergency": null
  }
}

Update a visitor

Updates an existing visitor. Users must have a role that permits managing visitors to update visitors.

Endpoint

PATCH /api/v4/visitors/:id

Parameters

Name Description
visitor[name] (string) visitor's full name
visitor[email] (string) visitor's email address
visitor[phone] (string) visitor's phone number
only (string) comma-delimited list of fields to render only, possibilities include: 'id', 'name', 'email', 'phone', 'image_url', 'created_at', 'updated_at', 'cached_at'
expand (string) comma-delimited list of extra information to include in the response, possibilities include: 'badge', 'status', 'status.application', 'status.changed_by_user'

Request

Route

PATCH /api/v4/visitors/63

Headers

Content-Type: application/json
Authorization: Bearer YgZEeUgVJW-7iINRzmZnjWUZAYDe9JumpBHddotRyLA

Body

{
  "visitor": {
    "name": "Sterling Malory Archer"
  }
}

cURL

curl "https://www.simpleinout.com/api/v4/visitors/63" -d '{"visitor":{"name":"Sterling Malory Archer"}}' -X PATCH \
	-H "Content-Type: application/json" \
	-H "Authorization: Bearer YgZEeUgVJW-7iINRzmZnjWUZAYDe9JumpBHddotRyLA"

Response

Simulated Response

Response Fields

Name Description
visitors (object) the newly updated visitor attributes

Status

200

Headers

etag: W/"bb59520d3d2a9a477835a29bc051c974"

Body

{
  "visitors": {
    "id": "63",
    "name": "Sterling Malory Archer",
    "email": "sterling@simplymadeapps.com",
    "phone": "(556) 905-3918 x3785",
    "image_url": null,
    "created_at": 1792584502,
    "updated_at": 1792584502,
    "cached_at": "1792584502.086517000"
  },
  "meta": {
    "last_updated_at": {
      "announcements": 1784376502,
      "beacons": 1792584502,
      "desktop_presences": 1790251702,
      "favorites": 1785931702,
      "fences": 1788005302,
      "groups": 1785586102,
      "networks": 1792584502,
      "roles": 1792584502,
      "settings": 1792584502
    },
    "emergency": null
  }
}