Density Public API (beta)

Download OpenAPI specification:Download

API Overview

This service provides a layer of abstraction on top of the Density data APIs.

It is intended for use by the general public.

Key concepts

time_used_raw is raw detected occupancy time in milliseconds. For human-readable reporting, convert to hours with time_used_raw / 1000 / 3600. Example: 2421000 ms is about 40 minutes.

time_used_percentage is the share of the requested time bucket that registered occupancy, represented from 0 to 1.

utilization is occupancy divided by space capacity. If capacity is 0, utilization values are returned as 0. If capacity is not set, utilization returns null. Confirm capacity on /v3/spaces before relying on utilization.

is_capped and capped_count_limit indicate that a sensor hit its hardware detection ceiling. For Waffle sensors, counts are capped at 3+; always check is_capped before treating a peak count as exact.

up_time is the ratio of the requested time bucket where the sensor was online and able to provide data. Use low up_time as a data-quality warning.

Saturation is a reporting concept, but it is not a public-api response field. If you use saturation in customer reporting, treat it as a derived metric rather than an API field.

Metrics vs. Raw Sessions

Metrics and Raw Sessions are processed differently. Compare these endpoints when investigating anomalies, especially for Waffle spaces where metrics can show small amounts of time_used even when Raw Sessions does not show a meaningful occupied session.

Pagination

v3 analytics and resource endpoints do not expose pagination parameters. Use endpoint-specific filters and date windows to keep responses manageable.

Rate limits

Public API traffic is rate-limited at the edge to 15 requests per second per IP, with a burst allowance of 100 requests. Some endpoints may also return rate-limit headers when application-level quota middleware applies.

Metrics

Floor Data Completion Status

Lists the percentage of completeness of floor data over the specified time period from [0-1]. Data Status API is available for floors with Open Area Sensors. With this information, you can determine whether historical metric data is ready to pull for the floor and spaces on the floor during the requested time period. For more information on how to interpret this data see: https://developers.density.io/understand_historical_data.

Request
Request Body schema: application/json
required

Request body input.

end_date
required
string

end of the query date range, inclusive. Must be after 2024-06-01T00:00:00Z.

floor_ids
Array of strings

Minimum 1 floor; maximum 5 floors. Floors use the same spc_ ID format as other spaces. Use the Spaces endpoint and filter by space_type: "floor" to find floor IDs.

start_date
required
string

start of the query date range, max range is 10 days, min range is 5 minutes.

Responses
200

success

post/v3/analytics/data-status
Request samples
application/json
{
  • "end_date": "2024-06-28T23:59:59Z",
  • "floor_ids": [
    ],
  • "start_date": "2024-06-28T00:00:00Z"
}
Response samples
application/json
{
  • "spc_10987654321": {
    },
  • "spc_12345678901": {
    }
}

All Metrics

Calculates the occupancy, utilization and time used metrics for a set of spaces or for all spaces in a portfolio.

Operating hours: operating_hours.days uses 0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday. start_hour and end_hour are 24-hour integers. Example Mon-Fri 8 AM-6 PM: {"days":[1,2,3,4,5],"start_hour":8,"end_hour":18}.

Common pitfalls:

  • time_used_raw is milliseconds; divide by 3,600,000 to get hours.
  • utilization_avg and utilization_max require capacity. If capacity is 0, the API returns 0; if capacity is not set, utilization returns null.
  • up_time is a data-quality signal. Low up_time means the bucket may be incomplete.
  • Parent space_ids are flattened by analytics handlers. In practice, a building or floor request can return descendant spaces rather than one rolled-up parent row.
SecurityapiKey or application
Request
Request Body schema: application/json
required

request body input

end_date
required
string

end of the query date range in local time, inclusive

metrics
Array of strings

The list of metrics to compute the time range and the list of devices. When this field is not specified, the API will return all metric types.

object (OperatingHours)

Model for operating hours.

space_ids
Array of strings

specific spaces to query

start_date
required
string

start of the query date range in local time

time_resolution
string
Default: "total"

time resolution for the query results

Enum: "total" "hour" "day" "week" "month" "year" "weekday" "hour_of_day" "minute" "10minute"
Responses
200

success

400

request data was missing or invalid

401

unable to authorize the given bearer token

403

access to this api is not allowed

404

resource not found

500

unexpected error

post/v3/analytics/metrics
Request samples
application/json
{
  • "end_date": "2024-02-28T23:59:59",
  • "metrics": [
    ],
  • "operating_hours": {
    },
  • "space_ids": [
    ],
  • "start_date": "2024-02-28T00:00:00",
  • "time_resolution": "total"
}
Response samples
application/json
{
  • "spc_10987654321": {
    },
  • "spc_12345678901": {
    }
}

Occupancy

Calculates the occupancy for a set of spaces or for all spaces in a portfolio.

SecurityapiKey or application
Request
Request Body schema: application/json
required

request body input

end_date
required
string

end of the query date range, inclusive

object (OperatingHours)

Model for operating hours.

space_ids
Array of strings

specific spaces to query

start_date
required
string

start of the query date range

time_resolution
string
Default: "total"

time resolution for the query results

Enum: "total" "hour" "day" "week" "month" "year" "weekday" "hour_of_day" "minute" "10minute"
Responses
200

success

400

request data was missing or invalid

401

unable to authorize the given bearer token

403

access to this api is not allowed

404

resource not found

500

unexpected error

post/v3/analytics/occupancy
Request samples
application/json
{
  • "end_date": "2024-02-28T23:59:59Z",
  • "operating_hours": {
    },
  • "space_ids": [
    ],
  • "start_date": "2024-02-28T00:00:00Z",
  • "time_resolution": "total"
}
Response samples
application/json
{
  • "spc_10987654321": {
    },
  • "spc_12345678901": {
    }
}

Raw Sessions

Returns raw session data for a set of spaces or for all spaces in a portfolio. Supports both waffle (entry) and OA (open area) spaces. The API automatically detects the space types and processes them accordingly. Start and end times are generic and not tied to time zones. Sessions will be returned with time zones according to the space the session occurred in.

60-day maximum range. Requests where end_date minus start_date exceeds 60 days return a 400 validation error. To retrieve longer periods, make multiple calls with non-overlapping windows of 60 days or less.

Timestamp format: Raw Sessions examples should use local timestamps without a trailing Z, for example 2024-05-01T09:00:00.

SecurityapiKey or application
Request
Request Body schema: application/json
required

Raw session request input

end_date
string <date-time>
space_ids
Array of strings
start_date
string <date-time>
Responses
200

success

400

request data was missing or invalid

401

unable to authorize the given bearer token

403

access to this api is not allowed

404

resource not found

500

unexpected error

post/v3/analytics/sessions/raw
Request samples
application/json
{
  • "end_date": "2024-05-01T17:00:00",
  • "space_ids": [
    ],
  • "start_date": "2024-05-01T09:00:00"
}
Response samples
application/json
{
  • "sessions": [
    ]
}

Time Used

Calculates the time used for a set of spaces or for all spaces in a portfolio.

SecurityapiKey or application
Request
Request Body schema: application/json
required

request body input

end_date
required
string

end of the query date range, inclusive

object (OperatingHours)

Model for operating hours.

space_ids
Array of strings

specific spaces to query

start_date
required
string

start of the query date range

time_resolution
string
Default: "total"

time resolution for the query results

Enum: "total" "hour" "day" "week" "month" "year" "weekday" "hour_of_day" "minute" "10minute"
Responses
200

success

400

request data was missing or invalid

401

unable to authorize the given bearer token

403

access to this api is not allowed

404

resource not found

500

unexpected error

post/v3/analytics/time-used
Request samples
application/json
{
  • "end_date": "2024-02-28T23:59:59Z",
  • "operating_hours": {
    },
  • "space_ids": [
    ],
  • "start_date": "2024-02-28T00:00:00Z",
  • "time_resolution": "total"
}
Response samples
application/json
{
  • "spc_10987654321": {
    },
  • "spc_12345678901": {
    }
}

Utilization

Calculates the utilization for a set of spaces or for all spaces in a portfolio.

Definition: Utilization is occupancy divided by capacity.

The API returns a utilization value of 0 when capacity is 0. This can look the same as genuine zero utilization, so integrations should confirm capacity on /v3/spaces before relying on utilization.

If capacity is not set, utilization will return null.

Waffle-specific fields: is_capped, capped_count_limit, and up_time can appear here as well and should use the same definitions as Occupancy.

SecurityapiKey or application
Request
Request Body schema: application/json
required

request body input

end_date
required
string

end of the query date range, inclusive

object (OperatingHours)

Model for operating hours.

space_ids
Array of strings

specific spaces to query

start_date
required
string

start of the query date range

time_resolution
string
Default: "total"

time resolution for the query results

Enum: "total" "hour" "day" "week" "month" "year" "weekday" "hour_of_day" "minute" "10minute"
Responses
200

success

400

request data was missing or invalid

401

unable to authorize the given bearer token

403

access to this api is not allowed

404

resource not found

500

unexpected error

post/v3/analytics/utilization
Request samples
application/json
{
  • "end_date": "2024-02-28T23:59:59Z",
  • "operating_hours": {
    },
  • "space_ids": [
    ],
  • "start_date": "2024-02-28T00:00:00Z",
  • "time_resolution": "total"
}
Response samples
application/json
{
  • "spc_10987654321": {
    },
  • "spc_12345678901": {
    }
}

Live

Current Occupancy

Returns the most current occupancy for a set of spaces or for all spaces in a portfolio. Current Occupancy supports OA, Entry, and Waffle-backed spaces.

Note: Waffle sensors are primarily presence sensors and cap counts at 3+.

SecurityapiKey or application
Request
Request Body schema: application/json
required

request body input

space_ids
Array of strings

specific spaces to query

Responses
200

success

401

unable to authorize the given bearer token

403

access to this api is not allowed

500

unexpected error

post/v3/analytics/occupancy/current
Request samples
application/json
{
  • "space_ids": [
    ]
}
Response samples
application/json
{
  • "spc_10987654321": {
    },
  • "spc_12345678901": {
    }
}

PresenceDeprecated

Returns the current occupied status for a set of spaces or for all spaces in a portfolio.

This endpoint returns raw presence as space_id -> boolean. If your integration needs to distinguish an unoccupied space from an unhealthy/offline sensor, use /v3/analytics/presence-health instead.

Presence is available for OA and Waffle-backed spaces.

Deprecated: use /v3/analytics/presence-health for health-aware presence.

SecurityapiKey or application
Request
Request Body schema: application/json
required

request body input

space_ids
Array of strings

specific spaces to query

Responses
200

success

401

unable to authorize the given bearer token

403

access to this api is not allowed

500

unexpected error

post/v3/analytics/presence
Request samples
application/json
{
  • "space_ids": [
    ]
}
Response samples
application/json
{
  • "spc_10987654321": false,
  • "spc_12345678901": true
}

Health-Aware Presence

Returns the current occupied and space health status for a set of spaces or for all spaces in a portfolio.

Density recommends using this API instead of the standard Live Presence API.

SecurityapiKey or application
Request
Request Body schema: application/json
required

request body input

space_ids
Array of strings

specific spaces to query

Responses
200

success

401

unable to authorize the given bearer token

403

access to this api is not allowed

500

unexpected error

post/v3/analytics/presence-health
Request samples
application/json
{
  • "space_ids": [
    ]
}
Response samples
application/json
{
  • "spc_10987654321": {
    },
  • "spc_12345678901": {
    }
}

Short-Term Analytics

Determines short-term Presence for a set of spaces or for all spaces in an organization. Only OA spaces and floors are supported.

SecurityapiKey or application
Request
Request Body schema: application/json
required

request body input

minutes_lookback
integer <uint32>
Default: 0

the length of time in minutes for which historical presence information will be fetched. 0 value will return the current minute. 5 will return the current minute, plus 5 mins before. Max value is 240 minutes.

space_ids
Array of strings

specific spaces to query. Only areas and floors will be processed.

Responses
200

success

400

request data was missing or invalid

401

unable to authorize the given bearer token

403

access to this api is not allowed

404

resource not found

500

unexpected error

post/v3/analytics/short-term
Request samples
application/json
{
  • "minutes_lookback": 60,
  • "space_ids": [
    ]
}
Response samples
application/json
{
  • "data": [
    ]
}

Create OA and waffle presence WebSocket

Returns a WebSocket endpoint to receive presence messages for spaces with OA or Waffle sensors on a floor. See https://developers.density.io/websockets for websocket payload details.

Note: This endpoint does not open a WebSocket directly. Make a Bearer-authenticated REST POST first. The response returns a ws_url; connect to that returned URL as-is with a WebSocket client.

update_type: "refresh" is a full snapshot sent on connect and periodically. update_type: "live" is sent when presence changes.

SecurityapiKey or application
Request
path Parameters
floor_id
required
string

The space ID for a floor. Floors share the same spc_ ID format as other spaces. Use the Spaces endpoint and filter by space_type: "floor" to find valid floor IDs.

Responses
200

success

400

BadRequestError is an error returned when the request is malformed or invalid.

401

UnauthorizedError is an error returned when the request is unauthorized.

403

ForbiddenError is an error returned when the request is forbidden.

404

NotFoundError is an error returned when the requested resource is not found.

500

InternalServerError is an error returned when the server encounters an error.

post/v3/analytics/ws/floor/{floor_id}/presence
Request samples
Response samples
application/json
{
  • "ws_url": "string"
}

Create Entry and Waffle occupancy WebSocket

Returns a WebSocket endpoint to receive count updates for a space and its children with entry or waffle sensors. See https://developers.density.io/websockets for websocket payload details.

Note: Like the Presence WebSocket endpoint, send a POST request to receive a ws_url, then connect with a WebSocket client. See Presence WebSocket above for full explanation.

SecurityapiKey or application
Request
path Parameters
space_id
required
string

The spc_ ID of any space node. This endpoint supports Entry, OA, and Waffle sensors and returns occupancy counts (not just presence). Passing a building or floor ID will return counts for that space and all its children.

Responses
200

success

400

BadRequestError is an error returned when the request is malformed or invalid.

401

UnauthorizedError is an error returned when the request is unauthorized.

403

ForbiddenError is an error returned when the request is forbidden.

404

NotFoundError is an error returned when the requested resource is not found.

500

InternalServerError is an error returned when the server encounters an error.

post/v3/analytics/ws/space/{space_id}/occupancy
Request samples
Response samples
application/json
{
  • "ws_url": "string"
}

Spaces

Doorways

Get all doorways for an organization. A doorway represents a physical entry point monitored by an Entry sensor. Each doorway is linked to one or more spaces. Use this endpoint to find doorway_id values needed for the Doorway Events WebSocket.

SecurityapiKey or application
Responses
200

success

401

unable to authorize the given bearer token

403

access to this api is not allowed

500

unexpected error

get/v3/doorways
Request samples
Response samples
application/json
[
  • {
    }
]

Labels

Gets all labels.

Responses
200

success

500

unexpected error

get/v3/labels
Request samples
Response samples
application/json
[
  • {
    }
]

Create Label

Creates a new label, not attached to any space.

Request
Request Body schema: application/json
required

Only name is required.

name
string

name of label

Responses
200

success

500

unexpected error

post/v3/labels
Request samples
application/json
{
  • "name": "string"
}
Response samples
application/json
{
  • "group": {
    },
  • "id": "string",
  • "name": "string",
  • "spaces": [
    ]
}

Deletes a label

Request
path Parameters
label_id
required
string

unique identifier of a label

Responses
200

success

500

unexpected error

delete/v3/labels/{label_id}
Request samples
Response samples
application/json
{
  • "code": 0,
  • "message": "string"
}

Update Label

Updates the name and/or group of a label

Request
path Parameters
label_id
required
string

unique identifier of a label

Request Body schema: application/json
required

name and/or group of the new label

group
string

group id of label

name
string

name of label

Responses
200

success

500

unexpected error

patch/v3/labels/{label_id}
Request samples
application/json
{
  • "group": "string",
  • "name": "string"
}
Response samples
application/json
{
  • "group": {
    },
  • "id": "string",
  • "name": "string",
  • "spaces": [
    ]
}

Label Groups

Gets all label groups.

Responses
200

success

500

unexpected error

get/v3/labels/groups
Request samples
Response samples
application/json
[
  • {
    }
]

Create Label Group

Creates a new label group, not attached to any labels.

Request
Request Body schema: application/json
required

Only name is required.

Array of objects (Label)
name
string
Responses
200

success

500

unexpected error

post/v3/labels/groups
Request samples
application/json
{
  • "labels": [
    ],
  • "name": "string"
}
Response samples
application/json
{
  • "id": "string",
  • "labels": [
    ],
  • "name": "string"
}

Deletes a label group

Request
path Parameters
group_id
required
string

unique identifier of a label group

Responses
200

success

500

unexpected error

delete/v3/labels/groups/{group_id}
Request samples
Response samples
application/json
{
  • "code": 0,
  • "message": "string"
}

Update Label Group

Updates the name of label group.

Request
path Parameters
group_id
required
string

unique identifier of a label

Request Body schema: application/json
required

name of label group

name
string

name of label

Responses
200

success

500

unexpected error

patch/v3/labels/groups/{group_id}
Request samples
application/json
{
  • "name": "string"
}
Response samples
application/json
{
  • "id": "string",
  • "labels": [
    ],
  • "name": "string"
}

Spaces

Get all spaces for an organization. Spaces are organized in a hierarchy. All levels share the same spc_ ID format. Use the space_type field in the response to identify a space's level in the hierarchy.

SecurityapiKey or application
Request
query Parameters
counting_mode
string

add filtering on returned space counting mode

Responses
200

success

401

unable to authorize the given bearer token

403

access to this api is not allowed

500

unexpected error

get/v3/spaces
Request samples
Response samples
application/json
[
  • {
    }
]

Update Space

Updates a space entity.

Request
path Parameters
space_id
required
string

unique identifier of a space

Request Body schema: application/json
required

space values to update

address
string
capacity
integer <int64>
function
string
Enum: "wellness_room" "utility_room" "theater" "servery" "retail" "restroom" "reception" "phone_booth" "outdoor" "other" "open_workspace" "open_collaboration_space" "meeting_room" "lounge" "library" "lab" "kitchen" "gym" "games_room" "event_space" "enclosed_workspace" "desk_neighborhood" "desk" "cafe" "break_room"
iwms_id
string
name
string
time_zone
string
Responses
200

success

500

unexpected error

patch/v3/spaces/{space_id}
Request samples
application/json
{
  • "address": "string",
  • "capacity": 0,
  • "function": "wellness_room",
  • "iwms_id": "string",
  • "name": "string",
  • "time_zone": "string"
}
Response samples
application/json
{
  • "address": "string",
  • "binary_occupancy": true,
  • "capacity": 0,
  • "children": [
    ],
  • "children_ids": [
    ],
  • "cost_per_sqft": 0,
  • "counting_mode": "oa",
  • "daily_reset": "string",
  • "function": null,
  • "go_live_date_utc": "string",
  • "id": "string",
  • "iwms_id": "string",
  • "labels": [
    ],
  • "name": "string",
  • "size_area": 0,
  • "space_type": "space",
  • "status": "string",
  • "time_zone": "string"
}

Update Space Labels

Adds and removes elements to the list of labels for the space.

Request
path Parameters
space_id
required
string

unique identifier of a space

Request Body schema: application/json
required
add
Array of strings

label ID's to add to a space

create
Array of strings

label names to possibly create, then add to a space

delete
Array of strings

label ID's to remove to a space

Responses
200

success

500

unexpected error

patch/v3/spaces/{space_id}/labels
Request samples
application/json
{
  • "add": [
    ],
  • "create": [
    ],
  • "delete": [
    ]
}
Response samples
application/json
[
  • {
    }
]

Info

Hello World

Validate your access to the Density public API. Use this as a first call to confirm your Bearer token is valid and your network can reach the API before building more complex integrations. A successful response returns a 200 with a plain text message.

Responses
200

success

401

unable to authorize the given bearer token

403

access to this api is not allowed

get/v3/hello-world
Request samples
Response samples
text/plain
Do… or do not. There is no try. - Yoda

API Version

API version.

Responses
200

success

401

unable to authorize the given bearer token

403

access to this api is not allowed

get/version
Request samples
Response samples
text/plain
1.0.2

Auth

Density Access Token

OAuth token flow for machine-to-machine users. Generate an access token using client credentials.

Most v3 resource endpoints require a Bearer token in the Authorization header. Two token types are supported. Static API token (starts with tok_) Short-lived OAuth token (usually starts with eyJ)

Both token types use the same Authorization: Bearer header format.

Request
Request Body schema: application/json
required

request body input

audience
string
client_id
string
client_secret
string
grant_type
string
token_duration
integer <int64>
Responses
200

success

400

bad request

401

unable to authorize client

500

unexpected error

post/v3/oauth/token
Request samples
application/json
{
  • "audience": "string",
  • "client_id": "string",
  • "client_secret": "string",
  • "grant_type": "string",
  • "token_duration": 0
}
Response samples
application/json
{
  • "access_token": "string",
  • "expires_in": "string",
  • "token_type": "string"
}

Sensors

Sensors

Lists sensors for your organization. Can filter by serial_numbers or space_ids. If neither is provided, all sensors in the organization are returned.

Note: Do not send serial_numbers and space_ids in the same request; the request validator treats them as mutually exclusive.

Request
Request Body schema: application/json
required

Request body input. Can filter by either serial numbers or space ids.

serial_numbers
Array of strings
space_ids
Array of strings
Responses
200

success

400

BadRequestError is an error returned when the request is malformed or invalid.

401

UnauthorizedError is an error returned when the request is unauthorized.

403

ForbiddenError is an error returned when the request is forbidden.

404

NotFoundError is an error returned when the requested resource is not found.

500

InternalServerError is an error returned when the server encounters an error.

post/v3/sensors
Request samples
application/json
{
  • "serial_numbers": [
    ],
  • "space_ids": [
    ]
}
Response samples
application/json
[
  • {
    }
]

Historical Sensor Health

Lists sensor health status changes over the requested period of time. The maximum range from start_date to end_date is 10 days.

Request
Request Body schema: application/json
required

Request body input. Can filter by either serial numbers or space ids.

end_date
required
string

end of the query date range, inclusive

serial_numbers
Array of strings
space_ids
Array of strings
start_date
required
string

start of the query date range, max range is 10 days

Responses
200

success

post/v3/sensors/health
Request samples
application/json
{
  • "end_date": "2024-02-28T23:59:59Z",
  • "serial_numbers": [
    ],
  • "space_ids": [
    ],
  • "start_date": "2024-02-28T00:00:00Z"
}
Response samples
application/json
{
  • "A1B6Z10": [
    ]
}

Current Sensor Health

Lists sensor current health.

Request
Request Body schema: application/json
required

Request body input. Can filter by either serial numbers or space ids.

serial_numbers
Array of strings
space_ids
Array of strings
Responses
200

success

400

BadRequestError is an error returned when the request is malformed or invalid.

401

UnauthorizedError is an error returned when the request is unauthorized.

403

ForbiddenError is an error returned when the request is forbidden.

404

NotFoundError is an error returned when the requested resource is not found.

500

InternalServerError is an error returned when the server encounters an error.

post/v3/sensors/health/current
Request samples
application/json
{
  • "serial_numbers": [
    ],
  • "space_ids": [
    ]
}
Response samples
application/json
{
  • "data": [
    ]
}

Users

Read Users

Read a list of users in your organization. Only available for Machine to Machine tokens with correct permissions.

SecurityapiKey or application
Responses
200

success

400

bad request

401

unable to authorize client

403

forbidden

500

unexpected error

get/v3/users
Request samples
Response samples
application/json
[
  • {
    }
]

Create User

Create a user. Only available for Machine to Machine tokens with correct permissions.

SecurityapiKey or application
Request
Request Body schema: application/json
required

request body input

email
string
full_name
string
role
string
Enum: "owner" "admin" "editor" "readonly"
spaces
Array of strings
Responses
201

success

400

bad request

401

unable to authorize client

403

forbidden

500

unexpected error

post/v3/users
Request samples
application/json
{
  • "email": "string",
  • "full_name": "string",
  • "role": "owner",
  • "spaces": [
    ]
}
Response samples
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "email": "string",
  • "full_name": "string",
  • "id": "string",
  • "role": "owner",
  • "spaces": [
    ]
}

Delete User

Delete user. Only available for Machine to Machine tokens with correct permissions.

SecurityapiKey or application
Responses
204

success

400

bad request

401

unable to authorize client

403

forbidden

500

unexpected error

delete/v3/users/:user_id
Request samples
Response samples
application/json
{
  • "code": 0,
  • "message": "string"
}

Read User

Read a user in your organization. Only available for Machine to Machine tokens with correct permissions.

SecurityapiKey or application
Responses
200

success

400

bad request

401

unable to authorize client

403

forbidden

500

unexpected error

get/v3/users/:user_id
Request samples
Response samples
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "email": "string",
  • "full_name": "string",
  • "id": "string",
  • "role": "owner",
  • "spaces": [
    ]
}

Update User

Update user role, name, or spaces. Only available for Machine to Machine tokens with correct permissions.

SecurityapiKey or application
Request
Request Body schema: application/json
required

request body input

full_name
string
role
string
Enum: "owner" "admin" "editor" "readonly"
spaces
Array of strings
Responses
200

success

400

bad request

401

unable to authorize client

403

forbidden

500

unexpected error

put/v3/users/:user_id
Request samples
application/json
{
  • "full_name": "string",
  • "role": "owner",
  • "spaces": [
    ]
}
Response samples
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "email": "string",
  • "full_name": "string",
  • "id": "string",
  • "role": "owner",
  • "spaces": [
    ]
}

Wayfinding

Wayfinding Display Token

Issue a short-lived, display-scoped access token for wayfinding signage. Authenticates via client credentials (RFC 6749 Section 4.4).

Request
Request Body schema: application/x-www-form-urlencoded
required
grant_type
required
string

Must be "client_credentials"

client_id
required
string
client_secret
required
string
display_id
required
string

Target display to scope the token to

Responses
200

success

400

bad request

401

invalid credentials

post/v3/wayfinding/token
Request samples
application/x-www-form-urlencoded
grant_type=string&client_id=string&client_secret=string&display_id=string
Response samples
application/json
{
  • "access_token": "string",
  • "expires_in": 0,
  • "scope": "string",
  • "token_type": "string"
}