API Reference
The MQInsights API is organized around REST. Our API has predictable resource-oriented URLs, accepts form-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.
Getting Started
To begin using the API, you'll need a Client ID and Client Secret. Follow the steps in our Authentication & API Access guide to make your first request.
https://track.poc.mqlocate.net/api/v1.0
Authentication
The MQInsights API uses bearer tokens to authenticate requests. To get a bearer token, you need to use your account's Client ID and Client Secret to authenticate through the "get token" API. A successful response will include your bearer token, which you must include with every API request you make.
Your client credentials carry many privileges, so be sure to keep them secure! Do not share your secret Client ID and Client Secret in publicly accessible areas such as GitHub, client-side code, and so forth.
All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.
curl https://track.poc.mqlocate.net/api/v1.0/v1/endpoint \
-H "Authorization: Bearer eyJhbGciSR5cC...kpXVCIstpZeGYeVg" \
-H "Content-Type: application/json"
Errors
MQInsights uses conventional HTTP response codes to indicate the success or failure of an API request. In general: Code in the 2xx range indicate success. Codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted, a parameter key was spelled wrong, etc.). Codes in the 5xx range indicate an error with MQInsights's servers (these are rare).
Some 4xx errors that could be handled programmatically include an error code that briefly explains the error reported.
| 200 | OK | Everything worked as expected. |
| 400 | Bad Request | The request was unacceptable, often due to missing a required parameter. |
| 401 | Unauthorized | No valid Client Credential provided. |
| 402 | Request Failed | The parameters were valid but the request failed. |
| 403 | Forbidden | The bearer token doesn’t have permissions to perform the request. |
| 404 | Not Found | The requested resource doesn’t exist. |
| 409 | Conflict | The request conflicts with another request (perhaps due to using the same idempotent key). |
| 424 | External Dependency Failed | The request couldn’t be completed due to a failure in a dependency external to MQInsights. |
| 429 | Too Many Requests | Too many requests hit the API too quickly. We recommend an exponential backoff of your requests. |
| 500, 502, 503, 504 | Server Errors | Something went wrong on MQInsights’s end. (These are rare.) |
Assets
Endpoints for managing and querying assets
- GET/asset/
- GET/asset/{id}/
- PUT/asset/bulk-update/
- GET/asset/customer-reference/{customer_reference}/
- GET/asset/unique-description-count/
The Assets object
Attributes
Unique identifier of the asset.
Human-readable description of the asset.
Unique, customer/SAP-supplied identifier for the asset, used as the external join key for integration workflows.
Manufacturer of the asset. Null if not set.
Manufacturer model number of the asset. Null if not set.
Manufacturer serial number of the asset. Null if not set.
URL of the asset image. Null if not set.
Arbitrary customer-defined JSON properties for the asset. Null if not set.
Name of the asset type. Optional; null if not classified.
Name of the asset owner. Optional; null if not assigned.
Devices currently paired to this asset.
Optimistic-locking revision counter, incremented on every update.
Whether this asset is managed by an external integration. True means integration-managed writes take precedence and bulk-update skips it.
Whether the asset's location has been stable (not recently changing) based on incoming location reports.
Current status of the asset: UNPAIRED, ACTIVE, IN_USE, NOT_IN_USE, or MISSING.
UNPAIRED- UnpairedACTIVE- ActiveIN_USE- In UseNOT_IN_USE- Not In UseMISSING- Missing
Timestamp of the last report from any paired device, in RFC 3339 format. Null if never reported.
Timestamp of the last location report, in RFC 3339 format. Null if never reported.
Assets related to this asset via a RelatedAsset link.
Freeform JSON, keyed by device_id, used to drive e-ink display templates on MQdisplay-class paired devices. Null if not set.
{
"id": 0,
"description": "string",
"customer_reference": "string",
"manufacturer": "string",
"model_number": "string",
"serial_number": "string",
"image": "string",
"customer_properties": "",
"type": "string",
"owner": "string",
"asset_device": [
{
"device": {
"id": 0,
"device_id": "string",
"description": "string",
"mac_address": "string",
"battery_level": 0,
"last_reported_at": "2006-01-02T15:04:05.000Z",
"confidence": {},
"status": "string",
"firmware_version": "string",
"device_model_id": 0,
"device_model": {
"id": 0,
"name": "string",
"firmware_version": "string",
"sku": "string",
"manufacturer": "string",
"model": "string",
"sensor_models": [
{
"id": 0,
"name": "string",
"data_key": "string",
"metadata": "",
"sensor_type": "string",
"is_displayed": true,
"is_utilization_enabled": true,
"unit_of_measurement": "string",
"is_continuous_alert_enabled": true,
"allowable_values": "",
"data_type": "string",
"properties_schema": "",
"is_default_selection": true
}
],
"setup_action_type": "string",
"version": 0,
"indoor_outdoor": "string",
"led": true,
"sleep_function": true,
"location_type": "string",
"sounder": true,
"tx_interval": "string",
"tx_power_config": "string",
"properties_schema": ""
},
"sensors": [
{
"id": 0,
"device_id": 0,
"sensor_model": {
"id": 0,
"name": "string",
"data_key": "string",
"metadata": "",
"sensor_type": "string",
"is_displayed": true,
"is_utilization_enabled": true,
"unit_of_measurement": "string",
"is_continuous_alert_enabled": true,
"allowable_values": "",
"data_type": "string",
"properties_schema": ""
},
"properties": ""
}
],
"version": 0
},
"id": 0,
"location_snapshot": ""
}
],
"version": 0,
"is_integrations": true,
"is_location_stable": true,
"status": "string",
"last_reported_at": "2006-01-02T15:04:05.000Z",
"location_last_reported_at": "2006-01-02T15:04:05.000Z",
"related_assets": [
{
"id": 0,
"to_asset": {
"id": 0,
"description": "string",
"customer_reference": "string"
}
}
],
"paired_display_properties": ""
}
Retrieves a list of assets
Returns a paginated list of assets from the Asset table (as opposed to /asset-search, which reads from a denormalized search view). Each asset nests its currently-paired asset_device list, related_assets, status (UNPAIRED/ACTIVE/IN_USE/NOT_IN_USE/MISSING), and paired_display_properties (freeform JSON keyed by device_id, used to drive e-ink display templates on MQdisplay-class devices).
Supports the documented filters plus a special, non-model status query parameter value of unassigned (assets with no linked device) or assigned (assets with at least one linked device); this is distinct from the status__in field filter, which filters on the asset's actual status field. Supports free-text search across description, customer_reference, type, owner, manufacturer, model_number, and serial_number.
Scopes results to the campuses/buildings/floors/rooms/zones the authenticated user has permission to view.
Query Parameters
Filters to assets whose current location's building ID is in this comma-separated list. Optional.
Alias for building_db_id. Filters to assets whose current location's building ID is in this comma-separated list. Optional.
Filters to assets whose current location's campus ID is in this comma-separated list. Optional.
Alias for campus_db_id. Filters to assets whose current location's campus ID is in this comma-separated list. Optional.
Filters to assets whose current location's floor ID is in this comma-separated list. Optional.
Alias for floor_db_id. Filters to assets whose current location's floor ID is in this comma-separated list. Optional.
Response format override. Optional. Allowed values: csv, json.
Filters to the asset with this exact numeric ID. Optional.
Multiple values may be separated by commas.
Which field to use when ordering the results.
Filters to assets with this exact owner name. Optional.
Filters to assets whose owner name is in this comma-separated list. Optional.
A page number within the paginated result set.
Number of results to return per page.
Filters to assets whose current location's room ID is in this comma-separated list. Optional.
Alias for room_db_id. Filters to assets whose current location's room ID is in this comma-separated list. Optional.
Free-text search across description, customer_reference, type, owner, manufacturer, model_number, serial_number, and customer_properties. Optional.
Filters to assets with (assigned) or without (unassigned) at least one linked device. Distinct from the status__in field filter, which filters on the asset's actual status field. Optional.
Filters to assets whose status (UNPAIRED, ACTIVE, IN_USE, NOT_IN_USE, MISSING) is in this comma-separated list. Optional.
Filters to assets with this exact type name. Optional.
Filters to assets whose type name is in this comma-separated list. Optional.
Filters to assets whose current location's zone ID is in this comma-separated list. Optional.
Alias for zone_db_id. Filters to assets whose current location's zone ID is in this comma-separated list. Optional.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/asset/'
Retrieves an asset by ID
Returns details for a single asset by its numeric ID, with the same shape as the list endpoint.
Path Parameters
A unique integer value identifying this asset.
Query Parameters
Response format override. Optional. Allowed values: csv, json.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/asset/{id}/'
Updates multiple assets
Updates one or more fields on every asset that matches the current query filters (the same filters documented on list, e.g. campus_db_id, type__in, status__in, search, etc.).
Important: the API accepts the asset_ids field in the request body but does NOT use it to select which assets to update — only the active filter query parameters determine the target set; asset_ids has no effect on this endpoint today.
update_fields is a list of {field_name, value} pairs, where field_name is one of:
descriptiontypeownermanufacturermodel_number
For type/owner, the API resolves value by name to the matching AssetType/AssetOwner and returns 400 if no match is found; duplicate field_name entries are rejected. The API always skips (rather than updates) any asset with is_integrations=True (managed by an external integration) and reports skipped assets in skipped.
Returns 400 if the filtered target set is empty or exceeds the configured maximum (ASSET_BULK_UPDATE_MAX_NUMBER), and 409 if every matched asset was skipped (i.e. nothing was actually updated).
Query Parameters
Response format override. Optional. Allowed values: csv, json.
Body Parameters
Optional list of asset IDs. NOT currently used to select update targets — only the active query filters determine which assets are updated.
List of field-name/value pairs to apply to every matched asset. Required; must not contain duplicate field_name entries.
Returns
{
"asset_ids": [
0
],
"update_fields": [
{
"field_name": "",
"value": "string"
}
]
}
curl -X PUT 'https://track.poc.mqlocate.net/api/v1.0/asset/bulk-update/'
Retrieves an asset by customer reference
Returns a single asset for the provided customer_reference — the unique, customer/SAP-supplied identifier used as the external join key for integration workflows (as opposed to the internal numeric ID used by /asset/{id}). Returns the same response shape as retrieve, or a 404 if no asset has that customer_reference.
Path Parameters
Unique, customer/SAP-supplied identifier of the asset.
Query Parameters
Response format override. Optional. Allowed values: csv, json.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/asset/customer-reference/{customer_reference}/'
Retrieves asset counts by unique description
Returns a paginated list of {description, description_count} pairs — the distinct asset descriptions currently matching the active filters, each with a count of how many assets share that description, ordered by count descending.
Accepts the same filters as list, plus a search query parameter that performs a full-text match against description before grouping. This search performs a full-text search, distinct from the icontains-style search used elsewhere in this API.
Query Parameters
Response format override. Optional. Allowed values: csv, json.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/asset/unique-description-count/'
Asset Led Request Histories
Endpoints for asset LED activation request history
- GET/asset-led-request-history
The Asset Led Request Histories object
Attributes
ID of the asset this LED request was made for.
Unique identifier of the underlying LED request history record.
Hardware identifier of the device the LED request targeted.
Identifier of the bridge that relayed the LED request, if any.
Whether the target device's model supports an LED. True means LED-capable.
Type of LED event recorded: LED_ACTIVATED, LED_ACTIVATION_FAILED, LED_REQUEST, LED_REQUEST_FAILED, LED_REQUEST_TIMEOUT, MONITOR_LED_REQUEST, or MONITOR_LED_REQUEST_FAILED.
Timestamp the LED request was recorded, in RFC 3339 format.
The asset this LED request was made for.
{
"asset_id": 0,
"led_request_history_id": 0,
"device_id": "string",
"monitor_id": "string",
"is_led_enabled": true,
"led_event_type": "string",
"created": "2006-01-02T15:04:05.000Z",
"asset": {
"id": 0,
"description": "string",
"customer_reference": "string",
"asset_location": [
{
"location": {
"id": 0,
"campus": {
"campus_description": "string"
},
"building": {
"building_description": "string",
"local_timezone": "string"
},
"floor": {
"floor_description": "string"
},
"room": {
"room_description": "string"
},
"zone": {
"zone_description": "string"
}
},
"confidence": "string"
}
]
}
}
Retrieves a list of asset LED request history records
Returns a paginated list of asset LED activation request history records, each nesting the asset (SimpleAssetAndAssetLocationSerializer) and the underlying led_request_history fields (device_id, monitor_id, is_led_enabled, led_event_type).
This history is append-only; there are no create/update/delete operations on this endpoint.
Supports filtering by asset_db_id and created range (created__gte/created__lte). Scopes results to the campuses/buildings/floors/rooms the authenticated user has permission to view.
Query Parameters
Filters to LED requests for this asset ID. Optional.
Filters to LED requests created at or after this timestamp, in RFC 3339 format. Optional.
Filters to LED requests created at or before this timestamp, in RFC 3339 format. Optional.
Which field to use when ordering the results.
A page number within the paginated result set.
Number of results to return per page.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/asset-led-request-history'
Asset Owners
Endpoints for managing asset owners
- GET/asset-owner/
- POST/asset-owner/
- GET/asset-owner/{id}/
- PUT/asset-owner/{id}/
- DELETE/asset-owner/{id}/
The Asset Owners object
Attributes
Unique identifier of the asset owner.
Name of the asset owner. Required.
{
"id": 0,
"name": "string"
}
Retrieves a list of asset owners
Returns a paginated list of asset owners. An asset owner is a simple named entity (name, e.g. a department or organization) that an asset can be assigned to. It has no other configuration.
Query Parameters
A page number within the paginated result set.
Number of results to return per page.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/asset-owner/'
Creates an asset owner
Creates a new asset owner record with a name.
Body Parameters
Unique identifier of the asset owner.
Name of the asset owner. Required.
Returns
{
"id": 0,
"name": "string"
}
curl -X POST 'https://track.poc.mqlocate.net/api/v1.0/asset-owner/'
Retrieves an asset owner by ID
Returns a single asset owner by its numeric ID.
Path Parameters
A unique integer value identifying this asset owner.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/asset-owner/{id}/'
Replaces an asset owner
Replaces an existing asset owner's name.
Path Parameters
A unique integer value identifying this asset owner.
Body Parameters
Name of the asset owner. Required.
Returns
{
"name": "string"
}
curl -X PUT 'https://track.poc.mqlocate.net/api/v1.0/asset-owner/{id}/'
Deletes an asset owner
Deletes an asset owner. Deletes any AssetNotificationCondition records that reference this owner first, so notification rules scoped to this owner are silently removed along with it.
Path Parameters
A unique integer value identifying this asset owner.
Body Parameters
No parameters.
Returns
curl -X DELETE 'https://track.poc.mqlocate.net/api/v1.0/asset-owner/{id}/'
Asset Searches
Endpoints for searching assets
- GET/asset-search
The Asset Searches object
Attributes
Unique identifier of the asset.
Unique, customer/SAP-supplied identifier for the asset.
Human-readable description of the asset. Null if not set.
Manufacturer of the asset. Null if not set.
Manufacturer model number of the asset. Null if not set.
Manufacturer serial number of the asset. Null if not set.
Current status of the asset: UNPAIRED, ACTIVE, IN_USE, NOT_IN_USE, or MISSING.
UNPAIRED- UnpairedACTIVE- ActiveIN_USE- In UseNOT_IN_USE- Not In UseMISSING- Missing
Name of the asset type.
Whether this asset is managed by an external integration.
Name of the asset owner.
Timestamp of the last location report, in RFC 3339 format. Null if never reported.
List of the asset's current location entries, each with last_updated_at, location hierarchy, and confidence. Computed live from denormalized columns, not stored. Empty if the asset has no current location.
Arbitrary customer-defined JSON properties for the asset.
{
"id": 0,
"customer_reference": "string",
"description": "string",
"manufacturer": "string",
"model_number": "string",
"serial_number": "string",
"status": "string",
"type": "string",
"is_integrations": true,
"owner": "string",
"location_last_reported_at": "2006-01-02T15:04:05.000Z",
"asset_locations": [
"object"
],
"customer_properties": ""
}
Searches for assets
Returns a paginated list of assets matching search and filter criteria, backed by the read-only asset_search_view database view rather than the Asset table directly.
Each result includes asset_locations — a list built from the asset's current (and historical, if present) location rows, each with {last_updated_at, location: {campus/building/floor/room/zone as {id, xxx_id, xxx_description}}, confidence} — and arbitrary customer-supplied customer_properties JSON.
Supports free-text search across description, customer_reference, type, owner, manufacturer, model_number, serial_number, and customer_properties; exact/__in filters on campus/building/floor/room/zone (by DB ID or text ID), type, owner, and status (one of UNPAIRED, ACTIVE, IN_USE, NOT_IN_USE, MISSING); and ordering, which accepts last_updated_at as an alias for last_reported_at, the field's actual name on this view.
This endpoint does not support CSV export — use /asset-search-csv instead, which serves the same filtered result set with additional fields.
Scopes results to the campuses/buildings/floors/rooms the authenticated user has permission to view.
Query Parameters
Filters to assets in this building ID. Optional.
Filters to assets in these building IDs. Comma-separated. Optional.
Filters to assets in the building with this exact text code. Optional.
Filters to assets in this campus ID. Optional.
Filters to assets in these campus IDs. Comma-separated. Optional.
Filters to assets in the campus with this exact text code. Optional.
Filters to assets on this floor ID. Optional.
Filters to assets on these floor IDs. Comma-separated. Optional.
Filters to assets on the floor with this exact text code. Optional.
Filters to the asset with this exact numeric ID. Optional.
Filters to assets with these numeric IDs. Comma-separated. Optional.
Comma-separated field name(s) to sort by, prefixed with "-" for descending. Accepts last_updated_at as an alias for last_reported_at. Optional; defaults to description.
Filters to assets with this exact owner name. Optional.
Filters to assets whose owner name is in this comma-separated list. Optional.
A page number within the paginated result set.
Number of results to return per page.
Filters to assets in this room ID. Optional.
Filters to assets in these room IDs. Comma-separated. Optional.
Filters to assets in the room with this exact text code. Optional.
Free-text search across description, customer_reference, type, owner, manufacturer, model_number, serial_number, and customer_properties. Optional.
Filters to assets with this exact status (UNPAIRED, ACTIVE, IN_USE, NOT_IN_USE, MISSING). Optional.
Filters to assets whose status is in this comma-separated list. Optional.
Filters to assets with this exact type name. Optional.
Filters to assets whose type name is in this comma-separated list. Optional.
Filters to assets in this zone ID. Optional.
Filters to assets in these zone IDs. Comma-separated. Optional.
Filters to assets in the zone with this exact text code. Optional.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/asset-search'
Asset Search CSVs
Endpoints for exporting asset search results as CSV
- POST/asset-search-csv
The Asset Search CSVs object
Attributes
Human-readable summary of the export request result.
{
"message": "string"
}
Requests an asset search CSV export
Starts an asynchronous CSV export of assets matching the current search/filter criteria (same parameters as this endpoint's list action) and emails the resulting file.
Requires view_asset permission and either an email field in the request body or an email address on the requesting user's account.
Query Parameters
Response format override. Optional. Allowed values: csv, json.
Body Parameters
Unique identifier of the asset.
Unique, customer/SAP-supplied identifier for the asset.
Human-readable description of the asset. Null if not set.
Manufacturer of the asset. Null if not set.
Manufacturer model number of the asset. Null if not set.
Manufacturer serial number of the asset. Null if not set.
Current status of the asset: UNPAIRED, ACTIVE, IN_USE, NOT_IN_USE, or MISSING.
UNPAIRED- UnpairedACTIVE- ActiveIN_USE- In UseNOT_IN_USE- Not In UseMISSING- Missing
Name of the asset type.
Whether this asset is managed by an external integration.
Name of the asset owner.
Timestamp of the last location report, in RFC 3339 format. Null if never reported.
List containing exactly one location entry built from this row's columns (last_updated_at, location hierarchy including building local_timezone, and confidence). Computed live, not stored.
device_id and battery_level for the asset's paired device, if any. Computed live, not stored.
Arbitrary customer-defined JSON properties for the asset.
Returns
{
"id": 0,
"customer_reference": "string",
"description": "string",
"manufacturer": "string",
"model_number": "string",
"serial_number": "string",
"status": "",
"type": "string",
"is_integrations": true,
"owner": "string",
"location_last_reported_at": "string",
"asset_locations": [
"object"
],
"device": {},
"customer_properties": ""
}
curl -X POST 'https://track.poc.mqlocate.net/api/v1.0/asset-search-csv'
Asset Types
Endpoints for managing asset types
- GET/asset-type/
- POST/asset-type/
- GET/asset-type/{id}/
- PUT/asset-type/{id}/
- DELETE/asset-type/{id}/
The Asset Types object
Attributes
Unique identifier of the asset type.
Name of the asset type. Required.
Whether this asset type appears as a selectable option in the UI. True means it is shown.
{
"id": 0,
"name": "string",
"is_displayed": true
}
Retrieves a list of asset types
Returns a paginated list of asset types. An asset type is a simple named category (name) with an is_displayed flag controlling whether it appears as a selectable option in the UI. It has no other configuration.
Query Parameters
A page number within the paginated result set.
Number of results to return per page.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/asset-type/'
Creates an asset type
Creates a new asset type record with a name and optional is_displayed flag.
Body Parameters
Unique identifier of the asset type.
Name of the asset type. Required.
Whether this asset type appears as a selectable option in the UI. True means it is shown.
Returns
{
"id": 0,
"name": "string",
"is_displayed": true
}
curl -X POST 'https://track.poc.mqlocate.net/api/v1.0/asset-type/'
Retrieves an asset type by ID
Returns a single asset type by its numeric ID.
Path Parameters
A unique integer value identifying this asset type.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/asset-type/{id}/'
Replaces an asset type
Replaces an existing asset type's name/is_displayed fields.
Path Parameters
A unique integer value identifying this asset type.
Body Parameters
Name of the asset type. Required.
Whether this asset type appears as a selectable option in the UI. True means it is shown.
Returns
{
"name": "string",
"is_displayed": true
}
curl -X PUT 'https://track.poc.mqlocate.net/api/v1.0/asset-type/{id}/'
Deletes an asset type
Deletes an asset type. Deletes any AssetNotificationCondition records that reference this type first, so notification rules scoped to this type are silently removed along with it.
Path Parameters
A unique integer value identifying this asset type.
Body Parameters
No parameters.
Returns
curl -X DELETE 'https://track.poc.mqlocate.net/api/v1.0/asset-type/{id}/'
Buildings
Endpoints for querying buildings
- GET/building/
- GET/building/{id}/
The Buildings object
Attributes
Unique identifier of the building.
{
"type": "string",
"id": 0,
"geometry": {
"type": "string",
"coordinates": [
"array"
]
},
"properties": {
"building_id": "string",
"building_description": "string",
"campus": {
"id": 0,
"campus_id": "string",
"campus_description": "string"
},
"street1": "string",
"street2": "string",
"city": "string",
"state": "string",
"zip_code": "string",
"country": "string",
"version": 0,
"created": "2006-01-02T15:04:05.000Z",
"rotation": 0.0,
"pause_alerts": true,
"pause_integrations": true,
"is_occupied": true,
"is_people_count_enabled": true,
"people_count": 0,
"people_count_last_reported_at": "2006-01-02T15:04:05.000Z",
"sensor_count": 0,
"occupancy_last_reported_at": "2006-01-02T15:04:05.000Z",
"local_timezone": "string",
"is_floor_plan_enabled": true,
"last_synced_at": "2006-01-02T15:04:05.000Z",
"last_sync_status": "string"
}
}
Retrieves a list of buildings
Returns a paginated list of buildings as GeoJSON Feature objects (geometry is a polygon), each nesting a summary campus object.
pause_alerts/pause_integrations reflect whether an active maintenance-window BuildingProfile currently has that flag set for the building.
Supports filtering by campus in addition to the documented filterset fields. Sorts results naturally by building_description unless the ordering parameter is supplied. Scopes results to the campuses/buildings the authenticated user has permission to view.
Query Parameters
Filters to buildings belonging to this campus's numeric ID. Optional.
Filters to buildings belonging to these campus IDs. Comma-separated. Optional.
Response format override. Optional. Allowed values: csv, json.
Filters to buildings with these numeric IDs. Comma-separated. Optional.
Filters to buildings with these last external sync outcomes (SUCCESS, FAILURE, NOT_SYNCED). Comma-separated. Optional.
Which field to use when ordering the results.
A page number within the paginated result set.
Number of results to return per page.
Filters to buildings whose active maintenance-window BuildingProfile has alerts paused (true) or not (false). Optional.
Filters to buildings whose active maintenance-window BuildingProfile has integrations paused (true) or not (false). Optional.
A search term.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/building/'
Retrieves a building by ID
Returns a single building by its numeric ID, as a GeoJSON Feature object with the same shape as the list endpoint, including last_sync_status (SUCCESS/FAILURE/NOT_SYNCED) and is_floor_plan_enabled, which controls whether this building's floors use drawn floor plans or flat, manually-defined room/zone locations.
Path Parameters
A unique integer value identifying this building.
Query Parameters
Response format override. Optional. Allowed values: csv, json.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/building/{id}/'
Building Roll Ups
Endpoints for building location roll up summaries
- GET/building-roll-up/
The Building Roll Ups object
Attributes
Unique identifier of the building.
{
"type": "string",
"id": 0,
"geometry": {
"type": "string",
"coordinates": [
"array"
]
},
"properties": {
"building_id": "string",
"building_description": "string",
"street1": "string",
"street2": "string",
"city": "string",
"state": "string",
"zip_code": "string",
"country": "string",
"campus_id": "string",
"campus_db_id": 0,
"campus_description": "string",
"sensor_count": 0,
"rotation": 0.0,
"active_alert_count": 0,
"people_count": 0,
"is_people_count_enabled": true,
"people_count_last_reported_at": "2006-01-02T15:04:05.000Z",
"is_occupied": true,
"occupancy_last_reported_at": "2006-01-02T15:04:05.000Z",
"is_floor_plan_enabled": true,
"asset_count": 0,
"in_use_asset_count": 0,
"unpaired_asset_count": 0,
"active_asset_count": 0,
"not_in_use_asset_count": 0,
"missing_asset_count": 0,
"missing_asset_count_last_24_hours": 0,
"device_count": 0,
"offline_device_count": 0,
"active_device_count": 0,
"ready_to_connect_device_count": 0,
"device_last_reported_at": "2006-01-02T15:04:05.000Z"
}
}
Retrieves a list of building roll-ups
Returns a paginated, read-only list of denormalized per-building metric rollups as GeoJSON Feature objects (geometry is a polygon). Includes building identity/address fields (building_id, building_description, street1/street2, city, state, zip_code, country, campus_id, campus_db_id, campus_description, rotation, is_floor_plan_enabled) plus the same sensor/alert, occupancy/people-count, asset-status, and device-status aggregate metrics as the campus roll-up (asset_count, in_use_asset_count, missing_asset_count, offline_device_count, etc).
This is a materialized/precomputed read model with no create/update/delete operations.
Sorts results naturally by building_description unless the ordering parameter is supplied.
Scopes results to the campuses/buildings the authenticated user has permission to view.
Query Parameters
Filters to building roll-ups belonging to this campus ID. Optional.
Filters to the building roll-up with this exact numeric ID. Optional.
Which field to use when ordering the results.
A page number within the paginated result set.
Number of results to return per page.
A search term.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/building-roll-up/'
Campuses
Endpoints for querying campuses
- GET/campus/
- GET/campus/{id}/
The Campuses object
Attributes
Unique identifier of the campus.
{
"type": "string",
"id": 0,
"geometry": {
"type": "string",
"coordinates": [
"array"
]
},
"properties": {
"campus_id": "string",
"campus_description": "string",
"version": 0,
"created": "2006-01-02T15:04:05.000Z",
"is_occupied": true,
"is_people_count_enabled": true,
"people_count": 0,
"people_count_last_reported_at": "2006-01-02T15:04:05.000Z",
"sensor_count": 0,
"occupancy_last_reported_at": "2006-01-02T15:04:05.000Z",
"building_count": 0,
"room_count": 0
}
}
Retrieves a list of campuses
Returns a paginated list of campuses as GeoJSON Feature objects (geometry is a multi_polygon).
Each campus includes live-computed building_count and room_count fields (non-deleted children only) plus people-count/occupancy/sensor rollup fields.
Sorts results naturally by campus_description unless the ordering parameter is supplied. Scopes results to the campuses the authenticated user has permission to view.
Query Parameters
Filters to campuses with these numeric IDs. Comma-separated. Optional.
Which field to use when ordering the results.
A page number within the paginated result set.
Number of results to return per page.
A search term.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/campus/'
Retrieves a campus by ID
Returns a single campus by its numeric ID, as a GeoJSON Feature object with the same shape as the list endpoint.
Path Parameters
A unique integer value identifying this campus.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/campus/{id}/'
Campus Roll Ups
Endpoints for campus location roll up summaries
- GET/campus-roll-up/
The Campus Roll Ups object
Attributes
Unique identifier of the campus.
{
"type": "string",
"id": 0,
"geometry": {
"type": "string",
"coordinates": [
"array"
]
},
"properties": {
"campus_id": "string",
"campus_description": "string",
"sensor_count": 0,
"active_alert_count": 0,
"people_count": 0,
"is_people_count_enabled": true,
"people_count_last_reported_at": "2006-01-02T15:04:05.000Z",
"is_occupied": true,
"occupancy_last_reported_at": "2006-01-02T15:04:05.000Z",
"asset_count": 0,
"in_use_asset_count": 0,
"unpaired_asset_count": 0,
"active_asset_count": 0,
"not_in_use_asset_count": 0,
"missing_asset_count": 0,
"missing_asset_count_last_24_hours": 0,
"device_count": 0,
"offline_device_count": 0,
"active_device_count": 0,
"ready_to_connect_device_count": 0,
"device_last_reported_at": "2006-01-02T15:04:05.000Z"
}
}
Retrieves a list of campus roll-ups
Returns a paginated, read-only list of denormalized per-campus metric rollups as GeoJSON Feature objects (geometry is a multi_polygon).
Each row aggregates:
- sensor/alert counts (
sensor_count,active_alert_count) - occupancy/people-count fields (
people_count,is_occupied,occupancy_last_reported_at, etc.) - asset-status breakdown counts (
asset_count,in_use_asset_count,unpaired_asset_count,active_asset_count,not_in_use_asset_count,missing_asset_count,missing_asset_count_last_24_hours) - device-status breakdown counts (
device_count,offline_device_count,active_device_count,ready_to_connect_device_count)
This is a materialized/precomputed read model with no create/update/delete operations.
Sorts results naturally by campus_description unless the ordering parameter is supplied.
Scopes results to the campuses the authenticated user has permission to view.
Query Parameters
Filters to the campus roll-up with this exact numeric ID. Optional.
Which field to use when ordering the results.
A page number within the paginated result set.
Number of results to return per page.
A search term.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/campus-roll-up/'
Devices
Endpoints for querying devices
- GET/device/
- GET/device/{id}/
The Devices object
Attributes
Unique identifier of the device.
Hardware identifier of the device (e.g. Dev EUI). Required.
Human-readable description of the device. Required.
MAC address of the device. Optional; auto-generated from device_id if not supplied.
Most recently reported battery level. Optional; null if not reported.
Timestamp of the last report from the device, in RFC 3339 format. Optional; null if never reported.
Timestamp the device was installed, in RFC 3339 format. Optional; null if not set.
Precision of the device's last reported location: CAMPUS, BUILDING, FLOOR, ROOM, or ZONE. Optional; null if not located.
CAMPUS- CampusBUILDING- BuildingFLOOR- FloorROOM- RoomZONE- Zone
Runtime connectivity state of the device: OFFLINE, ACTIVE, READY_TO_CONNECT, or UNKNOWN.
OFFLINE- OfflineACTIVE- ActiveREADY_TO_CONNECT- Ready to ConnectUNKNOWN- Unknown
Firmware version running on the device. Optional; null if unknown.
ID of the catalog/SKU-level device model this device is an instance of. Required.
Catalog/SKU-level device model this device is an instance of.
Sensors attached to this device.
Optimistic-locking revision counter, incremented on every update.
Asset(s) this device is currently paired to.
Free-form JSON properties for the device, validated against the device model's properties_schema. Optional; null if not set.
Whether the device has completed the installation flow. True means installed.
Name of the person who installed the device. Optional; null if not set.
Installation notes recorded for this device.
Installation photos recorded for this device.
The device's currently-active location interval (the DeviceLocation row with a null end_date). Computed live, not stored. Null if the device has no active location.
Timestamp of the last external sync attempt, in RFC 3339 format. Optional; null if never synced.
Outcome of the last external sync attempt: SUCCESS, FAILURE, or NOT_SYNCED.
SUCCESS- SuccessFAILURE- FailureNOT_SYNCED- Not Synced
{
"id": 0,
"device_id": "string",
"description": "string",
"mac_address": "string",
"battery_level": 0,
"last_reported_at": "2006-01-02T15:04:05.000Z",
"installed_date": "2006-01-02T15:04:05.000Z",
"confidence": {},
"status": "string",
"firmware_version": "string",
"device_model_id": 0,
"device_model": {
"id": 0,
"name": "string",
"firmware_version": "string",
"sku": "string",
"manufacturer": "string",
"model": "string",
"sensor_models": [
{
"id": 0,
"name": "string",
"data_key": "string",
"metadata": "",
"sensor_type": "string",
"is_displayed": true,
"is_utilization_enabled": true,
"unit_of_measurement": "string",
"is_continuous_alert_enabled": true,
"allowable_values": "",
"data_type": "string",
"properties_schema": "",
"is_default_selection": true
}
],
"setup_action_type": "string",
"version": 0,
"indoor_outdoor": "string",
"led": true,
"sleep_function": true,
"location_type": "string",
"sounder": true,
"tx_interval": "string",
"tx_power_config": "string",
"properties_schema": ""
},
"sensors": [
{
"id": 0,
"device_id": 0,
"sensor_model": {
"id": 0,
"name": "string",
"data_key": "string",
"metadata": "",
"sensor_type": "string",
"is_displayed": true,
"is_utilization_enabled": true,
"unit_of_measurement": "string",
"is_continuous_alert_enabled": true,
"allowable_values": "",
"data_type": "string",
"properties_schema": ""
},
"properties": ""
}
],
"version": 0,
"asset": [
{
"id": 0,
"description": "string",
"customer_reference": "string",
"manufacturer": "string",
"model_number": "string",
"serial_number": "string",
"image": "string",
"customer_properties": "",
"version": 0
}
],
"properties": "",
"is_installed": true,
"installer": "string",
"installation_notes": [
{
"id": 0,
"installation_note": "string",
"timestamp": "2006-01-02T15:04:05.000Z",
"user": "string",
"created": "2006-01-02T15:04:05.000Z",
"updated": "2006-01-02T15:04:05.000Z"
}
],
"installation_photos": [
{
"id": 0,
"photo": "string",
"original_filename": "string",
"timestamp": "2006-01-02T15:04:05.000Z",
"user": "string",
"created": "2006-01-02T15:04:05.000Z",
"updated": "2006-01-02T15:04:05.000Z"
}
],
"device_location": {
"id": 0,
"start_date": "2006-01-02T15:04:05.000Z",
"end_date": "2006-01-02T15:04:05.000Z",
"confidence": "string",
"is_missing": true,
"is_user_defined": true,
"location": {
"id": 0,
"campus": {
"id": 0,
"campus_id": "string",
"campus_description": "string"
},
"building": {
"id": 0,
"building_id": "string",
"building_description": "string",
"street1": "string",
"street2": "string",
"city": "string",
"state": "string",
"zip_code": "string",
"country": "string",
"local_timezone": "string",
"is_floor_plan_enabled": true,
"last_synced_at": "2006-01-02T15:04:05.000Z",
"last_sync_status": "string"
},
"floor": {
"id": 0,
"floor_id": "string",
"floor_description": "string"
},
"room": {
"id": 0,
"room_id": "string",
"room_description": "string"
},
"zone": {
"id": 0,
"zone_id": "string",
"zone_description": "string"
}
},
"coordinates": {
"type": "string",
"coordinates": [
0.0
]
},
"version": 0
},
"last_synced_at": "2006-01-02T15:04:05.000Z",
"last_sync_status": "string"
}
Retrieves a list of devices
Returns a paginated list of devices — the physical, serialized MQFlex hardware units (as opposed to DeviceModel, the catalog/SKU-level definition each device references).
Each device nests its device_model, attached sensors, paired asset (if any, via the Device↔Asset many-to-many AssetDevice link), installation notes/photos, and device_location (the currently-active location, i.e. the DeviceLocation row with a null end_date).
Key fields: confidence (a LocationHierarchy enum — CAMPUS/BUILDING/FLOOR/ROOM/ZONE — indicating location precision), status (OFFLINE/ACTIVE/READY_TO_CONNECT/UNKNOWN), and properties (free-form JSON, validated against the device model's properties_schema).
Supports rich filtering (device_id, asset_db_id(__isnull), battery_level__lte, installed_date range, status__in, device_model_db_id__in, sensor_type__in, campus/building/floor/room/zone DB ID — location filters match the device's currently-active location only) and free-text search across device_id, description, model name, status, last_reported_at, and active location descriptions.
Scopes results to the campuses/buildings/floors/rooms/zones the authenticated user has permission to view.
Query Parameters
Filters to devices paired to this asset ID. Optional.
Filters to devices with (false) or without (true) a paired asset. Optional.
Filters to devices with a battery level at or below this value. Optional.
Filters to devices whose currently-active location's building ID is in this comma-separated list. Optional.
Filters to devices whose currently-active location's campus ID is in this comma-separated list. Optional.
Filters to the device with this hardware identifier (case-insensitive, normalized to uppercase). Optional.
Filters to devices belonging to these device model IDs. Comma-separated. Optional.
Filters to devices whose currently-active location's floor ID is in this comma-separated list. Optional.
Response format override. Optional. Allowed values: csv, json.
Filters to devices with these numeric IDs. Comma-separated. Optional.
Filters to devices installed at or after this timestamp, in RFC 3339 format. Optional.
Filters to devices installed at or before this timestamp, in RFC 3339 format. Optional.
Which field to use when ordering the results.
A page number within the paginated result set.
Number of results to return per page.
Filters to devices whose currently-active location's room ID is in this comma-separated list. Optional.
Free-text search across device_id, description, device model name, status, last_reported_at, and active location descriptions. Optional.
Filters to devices with an attached sensor whose sensor type name is in this comma-separated list. Optional.
Filters to devices whose status (OFFLINE, ACTIVE, READY_TO_CONNECT, UNKNOWN) is in this comma-separated list. Optional.
Filters to devices whose currently-active location's zone ID is in this comma-separated list. Optional.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/device/'
Retrieves a device by ID
Returns a single device by its numeric ID, with the same shape as the list endpoint.
Path Parameters
A unique integer value identifying this device.
Query Parameters
Response format override. Optional. Allowed values: csv, json.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/device/{id}/'
Device Models
Endpoints for querying device models
- GET/device-model/
- GET/device-model/{id}/
- GET/device-model/dev-eui/{dev_eui}
The Device Models object
Attributes
Unique identifier of the device model.
Name of the device model. Required.
Default firmware version for devices of this model. Optional; null if unset.
Unique manufacturer SKU for the device model. Required.
Manufacturer of the device model. Optional; null if not set.
Manufacturer model name of the device model. Optional; null if not set.
Sensor models this device model supports, each annotated with is_default_selection. Computed live from the DeviceModelSensorModel through-table, not stored.
Installation/pairing workflow used for devices of this model: TAG or DEVICE.
TAG- TagDEVICE- Device
Optimistic-locking revision counter, incremented on every update.
Whether the device model is rated for indoor or outdoor use. Optional; null if not set.
Whether devices of this model have an LED. True means LED-capable.
Whether devices of this model support a low-power sleep mode. True means supported.
Location-tracking method used by devices of this model. Optional; null if not set.
Whether devices of this model have an audible sounder. True means sounder-capable.
Default radio transmit interval for devices of this model. Optional; null if not set.
Default radio transmit power configuration for devices of this model. Optional; null if not set.
JSON schema (field name to allowable values) that validates the free-form properties JSON on individual Device records of this model. Optional; null if not set.
{
"id": 0,
"name": "string",
"firmware_version": "string",
"sku": "string",
"manufacturer": "string",
"model": "string",
"sensor_models": [
{
"id": 0,
"name": "string",
"data_key": "string",
"metadata": "",
"sensor_type": "string",
"is_displayed": true,
"is_utilization_enabled": true,
"unit_of_measurement": "string",
"is_continuous_alert_enabled": true,
"allowable_values": "",
"data_type": "string",
"properties_schema": "",
"is_default_selection": true
}
],
"setup_action_type": "string",
"version": 0,
"indoor_outdoor": "string",
"led": true,
"sleep_function": true,
"location_type": "string",
"sounder": true,
"tx_interval": "string",
"tx_power_config": "string",
"properties_schema": ""
}
Retrieves a list of device models
Returns a paginated list of device models — catalog/SKU-level definitions of an MQFlex hardware device type (as opposed to Device, which is a physical, serialized instance referencing a model).
Each model includes a computed sensor_models field listing the SensorModels this device model supports (sourced from the DeviceModelSensorModel through-table), each annotated with is_default_selection.
setup_action_type (TAG vs DEVICE) controls which installation/pairing workflow the frontend uses for devices of this model.
properties_schema is a JSON schema (field name → allowable values) that validates the free-form properties JSON set on individual Device records of this model.
Query Parameters
Which field to use when ordering the results.
A page number within the paginated result set.
Number of results to return per page.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/device-model/'
Retrieves a device model by ID
Returns a single device model by its numeric ID, with the same shape as the list endpoint.
Path Parameters
A unique integer value identifying this device model.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/device-model/{id}/'
Retrieves a device model by Dev EUI
Resolves a hardware Dev EUI to the DeviceModel it belongs to — used during device installation/provisioning to determine a not-yet-installed device's model before creating its Device record.
Normalizes and uppercases the EUI, and requires it to be no more than 16 characters (returns 400 otherwise).
Resolution order:
- (1) if a
Devicealready exists with thatdevice_id, the API returns itsdevice_modeldirectly, but raises a 400ValidationErrorif that device is already marked installed. - (2) otherwise the API parses the EUI as a hex integer and looks it up in
DeviceModelIdentifierRange, a table mapping hex-value ranges toDeviceModels (manufacturer EUI blocks pre-assigned to specific models), returning 404 if no range matches.
Path Parameters
Hardware Dev EUI to resolve, normalized/uppercased and no more than 16 characters.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/device-model/dev-eui/{dev_eui}'
Device Model Sensor Models
Endpoints for querying device model sensor model associations
- GET/device-model-sensor-model/
- GET/device-model-sensor-model/{id}/
The Device Model Sensor Models object
Attributes
Unique identifier of the association.
ID of the device model in this association. Required.
ID of the sensor model in this association. Required.
Full device model in this association.
Full sensor model in this association.
Whether this sensor model is pre-selected in the UI when a device of this model is provisioned. True means pre-selected.
{
"id": 0,
"device_model_id": 0,
"sensor_model_id": 0,
"device_model": {
"id": 0,
"name": "string",
"firmware_version": "string",
"sku": "string",
"manufacturer": "string",
"model": "string",
"sensor_models": [
{
"id": 0,
"name": "string",
"data_key": "string",
"metadata": "",
"sensor_type": "string",
"is_displayed": true,
"is_utilization_enabled": true,
"unit_of_measurement": "string",
"is_continuous_alert_enabled": true,
"allowable_values": "",
"data_type": "string",
"properties_schema": "",
"is_default_selection": true
}
],
"setup_action_type": "string",
"version": 0,
"indoor_outdoor": "string",
"led": true,
"sleep_function": true,
"location_type": "string",
"sounder": true,
"tx_interval": "string",
"tx_power_config": "string",
"properties_schema": ""
},
"sensor_model": {
"id": 0,
"name": "string",
"data_key": "string",
"metadata": "",
"sensor_type": "string",
"is_displayed": true,
"is_utilization_enabled": true,
"unit_of_measurement": "string",
"is_continuous_alert_enabled": true,
"allowable_values": "",
"data_type": "string",
"properties_schema": ""
},
"is_default_selection": true
}
Retrieves a list of device model sensor models
Returns a paginated list of DeviceModelSensorModel records — a pure join table describing which SensorModels a given DeviceModel supports. Each row nests the full device_model and sensor_model objects and carries one additional flag, is_default_selection, indicating whether that sensor model should be pre-selected in the UI when a device of this model is provisioned. The (device_model, sensor_model) pair is unique.
Supports filtering by device_model_id.
Query Parameters
Filters to associations for this device model ID. Optional.
Which field to use when ordering the results.
A page number within the paginated result set.
Number of results to return per page.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/device-model-sensor-model/'
Retrieves a device model sensor model by ID
Returns a single device-model/sensor-model association by its numeric ID.
Path Parameters
A unique integer value identifying this device model sensor model.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/device-model-sensor-model/{id}/'
Endpoints
Endpoints for managing location message endpoints
- GET/endpoint/
- POST/endpoint/
- GET/endpoint/{id}/
- PUT/endpoint/{id}/
- DELETE/endpoint/{id}/
The Endpoints object
Attributes
Unique identifier of the endpoint subscription.
Base URL the platform POSTs to when the subscribed event fires; concatenated with extended_url to form the full delivery URL. Required.
URL path appended to base_url to form the full delivery URL. Optional; may be blank.
Whether delivery uses mTLS client-certificate authentication plus HTTP Basic Auth, both configured via global application settings, instead of a plain unauthenticated POST. True means mTLS+Basic Auth.
The single event type this endpoint subscribes to. Optional; null means the endpoint will not receive any events.
ASSET_LEFT_ROOM- Asset left roomASSET_ARRIVED_ROOM- Asset arrived at roomASSET_LEFT_FLOOR- Asset left floorASSET_ARRIVED_FLOOR- Asset arrived at floorASSET_LEFT_BUILDING- Asset left buildingASSET_ARRIVED_BUILDING- Asset arrived at buildingASSET_LEFT_CAMPUS- Asset left campusASSET_ARRIVED_CAMPUS- Asset arrived at campusASSET_MOVED- Asset movedTAG_BATTERY_LOW- Tag battery lowDEVICE_BATTERY_LOW- Device battery lowDEVICE_STATUS_CHANGE- Device status changeMISSING_ASSET- Missing assetBRIDGE_MISSING- Bridge missingLED_ACTIVATED- Led activatedLED_ACTIVATION_FAILED- Led activation failedASSET_UNTAGGED- Asset untaggedLED_REQUEST- Led requestCONFIGURATION- configurationASSET_LOCATION_SYNC- Asset location syncDAISY_CHAIN_OFFLINE- Daisy chain offlineDEVICE_OFFLINE- Device offlineSENSOR_THRESHOLD_TRIGGER- Sensor threshold triggerSENSOR_THRESHOLD_CLEAR- Sensor threshold clearSENSOR_DATA- Sensor data
Whether this endpoint currently receives events. True means active.
{
"id": 0,
"base_url": "string",
"extended_url": "string",
"is_sap": true,
"event_type": {},
"enabled": true
}
Retrieves a list of webhook endpoints
Returns a paginated list of webhook/notification endpoint subscriptions. Each Endpoint row subscribes to exactly one event_type (see the field's enum for the full list, e.g. ASSET_ARRIVED_ROOM, DEVICE_BATTERY_LOW, LED_ACTIVATED, SENSOR_THRESHOLD_TRIGGER); one row is one event-type subscription, not a subscribe-to-everything config.
When that event fires and enabled is true, the platform POSTs to the URL formed by concatenating base_url + extended_url.
is_sap=True switches delivery to mTLS client-certificate authentication plus HTTP Basic Auth, both configured via global application settings (not per-row credentials); is_sap=False sends a plain unauthenticated POST. The model has no per-row header/auth-config fields despite otherwise resembling a generic webhook config.
Supports exact filtering by event_type.
Query Parameters
Filters to endpoint subscriptions for this exact event type. Optional.
Which field to use when ordering the results.
A page number within the paginated result set.
Number of results to return per page.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/endpoint/'
Creates a webhook endpoint
Creates a new webhook endpoint subscription for a single event_type. See list for field semantics, in particular the is_sap delivery-mode flag.
Body Parameters
Unique identifier of the endpoint subscription.
Base URL the platform POSTs to when the subscribed event fires; concatenated with extended_url to form the full delivery URL. Required.
URL path appended to base_url to form the full delivery URL. Optional; may be blank.
Whether delivery uses mTLS client-certificate authentication plus HTTP Basic Auth, both configured via global application settings, instead of a plain unauthenticated POST. True means mTLS+Basic Auth.
The single event type this endpoint subscribes to. Optional; null means the endpoint will not receive any events.
ASSET_LEFT_ROOM- Asset left roomASSET_ARRIVED_ROOM- Asset arrived at roomASSET_LEFT_FLOOR- Asset left floorASSET_ARRIVED_FLOOR- Asset arrived at floorASSET_LEFT_BUILDING- Asset left buildingASSET_ARRIVED_BUILDING- Asset arrived at buildingASSET_LEFT_CAMPUS- Asset left campusASSET_ARRIVED_CAMPUS- Asset arrived at campusASSET_MOVED- Asset movedTAG_BATTERY_LOW- Tag battery lowDEVICE_BATTERY_LOW- Device battery lowDEVICE_STATUS_CHANGE- Device status changeMISSING_ASSET- Missing assetBRIDGE_MISSING- Bridge missingLED_ACTIVATED- Led activatedLED_ACTIVATION_FAILED- Led activation failedASSET_UNTAGGED- Asset untaggedLED_REQUEST- Led requestCONFIGURATION- configurationASSET_LOCATION_SYNC- Asset location syncDAISY_CHAIN_OFFLINE- Daisy chain offlineDEVICE_OFFLINE- Device offlineSENSOR_THRESHOLD_TRIGGER- Sensor threshold triggerSENSOR_THRESHOLD_CLEAR- Sensor threshold clearSENSOR_DATA- Sensor data
Whether this endpoint currently receives events. True means active.
Returns
{
"id": 0,
"base_url": "string",
"extended_url": "string",
"is_sap": true,
"event_type": "",
"enabled": true
}
curl -X POST 'https://track.poc.mqlocate.net/api/v1.0/endpoint/'
Retrieves a webhook endpoint by ID
Returns a single webhook endpoint subscription by its numeric ID.
Path Parameters
A unique integer value identifying this endpoint.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/endpoint/{id}/'
Replaces a webhook endpoint
Replaces an existing webhook endpoint subscription's fields.
Path Parameters
A unique integer value identifying this endpoint.
Body Parameters
Base URL the platform POSTs to when the subscribed event fires; concatenated with extended_url to form the full delivery URL. Required.
URL path appended to base_url to form the full delivery URL. Optional; may be blank.
Whether delivery uses mTLS client-certificate authentication plus HTTP Basic Auth, both configured via global application settings, instead of a plain unauthenticated POST. True means mTLS+Basic Auth.
The single event type this endpoint subscribes to. Optional; null means the endpoint will not receive any events.
ASSET_LEFT_ROOM- Asset left roomASSET_ARRIVED_ROOM- Asset arrived at roomASSET_LEFT_FLOOR- Asset left floorASSET_ARRIVED_FLOOR- Asset arrived at floorASSET_LEFT_BUILDING- Asset left buildingASSET_ARRIVED_BUILDING- Asset arrived at buildingASSET_LEFT_CAMPUS- Asset left campusASSET_ARRIVED_CAMPUS- Asset arrived at campusASSET_MOVED- Asset movedTAG_BATTERY_LOW- Tag battery lowDEVICE_BATTERY_LOW- Device battery lowDEVICE_STATUS_CHANGE- Device status changeMISSING_ASSET- Missing assetBRIDGE_MISSING- Bridge missingLED_ACTIVATED- Led activatedLED_ACTIVATION_FAILED- Led activation failedASSET_UNTAGGED- Asset untaggedLED_REQUEST- Led requestCONFIGURATION- configurationASSET_LOCATION_SYNC- Asset location syncDAISY_CHAIN_OFFLINE- Daisy chain offlineDEVICE_OFFLINE- Device offlineSENSOR_THRESHOLD_TRIGGER- Sensor threshold triggerSENSOR_THRESHOLD_CLEAR- Sensor threshold clearSENSOR_DATA- Sensor data
Whether this endpoint currently receives events. True means active.
Returns
{
"base_url": "string",
"extended_url": "string",
"is_sap": true,
"event_type": "",
"enabled": true
}
curl -X PUT 'https://track.poc.mqlocate.net/api/v1.0/endpoint/{id}/'
Deletes a webhook endpoint
Deletes a webhook endpoint subscription.
Path Parameters
A unique integer value identifying this endpoint.
Body Parameters
No parameters.
Returns
curl -X DELETE 'https://track.poc.mqlocate.net/api/v1.0/endpoint/{id}/'
Floors
Endpoints for querying floors
- GET/floor/
- GET/floor/{id}/
The Floors object
Attributes
Unique identifier of the floor.
{
"type": "string",
"id": 0,
"geometry": {
"type": "string",
"coordinates": [
"array"
]
},
"properties": {
"floor_id": "string",
"floor_description": "string",
"version": 0,
"created": "2006-01-02T15:04:05.000Z",
"building": {
"id": 0,
"building_id": "string",
"building_description": "string",
"street1": "string",
"street2": "string",
"city": "string",
"state": "string",
"zip_code": "string",
"country": "string",
"local_timezone": "string",
"is_floor_plan_enabled": true,
"last_synced_at": "2006-01-02T15:04:05.000Z",
"last_sync_status": "string"
},
"room_count": 0,
"zone_count": 0,
"bridge_count": 0,
"bil_count": 0,
"building_rotation": 0.0,
"building_id": 0,
"is_occupied": true,
"is_people_count_enabled": true,
"people_count": 0,
"people_count_last_reported_at": "2006-01-02T15:04:05.000Z",
"sensor_count": 0,
"occupancy_last_reported_at": "2006-01-02T15:04:05.000Z"
}
}
Retrieves a list of floors
Returns a paginated list of floors as GeoJSON Feature objects (geometry is a polygon), each nesting a summary building object and building_rotation.
room_count, zone_count, bridge_count (installed bridge hardware), and bil_count (available bridge-installation-location slots) are live-computed and exclude soft-deleted children.
Supports filtering by building or room (integer IDs) in addition to the documented filterset fields. Scopes results to the campuses/buildings/floors the authenticated user has permission to view.
Query Parameters
Filters to floors belonging to this building ID. Optional.
Filters to floors belonging to this building ID. Optional.
Filters to floors belonging to these building IDs. Comma-separated. Optional.
Filters to the floor with this exact human-readable name. Optional.
Filters to the floor with this exact text code. Optional.
Response format override. Optional. Allowed values: csv, json.
Filters to floors with these numeric IDs. Comma-separated. Optional.
Which field to use when ordering the results.
A page number within the paginated result set.
Number of results to return per page.
Filters to the floor containing this room ID. Optional.
A search term.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/floor/'
Retrieves a floor by ID
Returns a single floor by its numeric ID, as a GeoJSON Feature object with the same shape as the list endpoint.
Path Parameters
A unique integer value identifying this floor.
Query Parameters
Response format override. Optional. Allowed values: csv, json.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/floor/{id}/'
Floor Roll Ups
Endpoints for floor location roll up summaries
- GET/floor-roll-up/
The Floor Roll Ups object
Attributes
Unique identifier of the floor.
{
"type": "string",
"id": 0,
"geometry": {
"type": "string",
"coordinates": [
"array"
]
},
"properties": {
"floor_id": "string",
"floor_description": "string",
"building_id": "string",
"building_db_id": 0,
"building_description": "string",
"campus_db_id": 0,
"sensor_count": 0,
"active_alert_count": 0,
"people_count": 0,
"is_people_count_enabled": true,
"people_count_last_reported_at": "2006-01-02T15:04:05.000Z",
"is_occupied": true,
"occupancy_last_reported_at": "2006-01-02T15:04:05.000Z",
"asset_count": 0,
"in_use_asset_count": 0,
"unpaired_asset_count": 0,
"active_asset_count": 0,
"not_in_use_asset_count": 0,
"missing_asset_count": 0,
"missing_asset_count_last_24_hours": 0,
"device_count": 0,
"offline_device_count": 0,
"active_device_count": 0,
"ready_to_connect_device_count": 0,
"device_last_reported_at": "2006-01-02T15:04:05.000Z"
}
}
Retrieves a list of floor roll-ups
Returns a paginated, read-only list of denormalized per-floor metric rollups as GeoJSON Feature objects (geometry is a polygon). Includes floor/building identity fields (floor_id, floor_description, building_id, building_db_id, building_description, campus_db_id) plus the same sensor/alert, occupancy/people-count, asset-status, and device-status aggregate metrics as the campus/building roll-ups.
This is a materialized/precomputed read model with no create/update/delete operations, and unlike the campus/building roll-ups this endpoint does not support the AI-summary sub-action.
Sorts results naturally by floor_description unless the ordering parameter is supplied.
Scopes results to the campuses/buildings/floors the authenticated user has permission to view.
Query Parameters
Filters to floor roll-ups belonging to this building ID. Optional.
Filters to the floor roll-up with this exact numeric ID. Optional.
Which field to use when ordering the results.
A page number within the paginated result set.
Number of results to return per page.
A search term.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/floor-roll-up/'
Gateways
Endpoints for querying gateways
- GET/gateway/
The Gateways object
Attributes
Unique identifier of the gateway.
Unique 16-character alphanumeric hardware node identifier. Required.
Human-readable description of the gateway. Required.
ID of the catalog/SKU-level gateway model this gateway is an instance of. Required.
Name of the catalog/SKU-level gateway model this gateway is an instance of.
MAC address of the gateway. Optional; inferred from node_id if not supplied.
Most recently reported battery level. Optional; null since most gateways are mains/PoE powered.
Timestamp of the last report from the gateway, in RFC 3339 format. Optional; null if never reported.
Name of the person who installed the gateway. Optional; null if not set.
Runtime connectivity state of the gateway: OFFLINE, ACTIVE, READY_TO_CONNECT, or UNKNOWN.
OFFLINE- OfflineACTIVE- ActiveREADY_TO_CONNECT- Ready to ConnectUNKNOWN- Unknown
Installation workflow state of the gateway: AWAITING_PHOTOS or COMPLETED. Automatically becomes COMPLETED when the first installation photo is uploaded.
AWAITING_PHOTOS- Awaiting PhotosCOMPLETED- CompletedUNKNOWN- Unknown
How the gateway reaches the internet: CELLULAR, ETHERNET, or UNKNOWN.
CELLULAR- CellularETHERNET- EthernetUNKNOWN- Unknown
Firmware version running on the gateway. Optional; null if unknown.
Cellular modem hardware identifier, relevant when backhaul is CELLULAR. Optional; null if not applicable.
Regional/geographic designation for radio compliance. Optional; null if not set.
Whether the gateway has completed the installation flow. True means installed.
Radio antenna gain value, an RF tuning parameter. Optional; null if not set.
Free-form JSON properties for the gateway, validated against the gateway model's properties_schema. Optional; null if not set.
Optimistic-locking revision counter, incremented on every update.
Timestamp the gateway was installed, in RFC 3339 format. Optional; null if not set.
Human-readable name of the gateway's latest reported campus. Computed live from the latest GatewayLocation, not stored. Null if never located.
Human-readable name of the gateway's latest reported building. Computed live, not stored. Null if never located.
Human-readable name of the gateway's latest reported floor. Computed live, not stored. Null if never located.
Human-readable name of the gateway's latest reported room. Computed live, not stored. Null if never located.
Human-readable name of the gateway's latest reported zone. Computed live, not stored. Null if never located.
Installation photos recorded for this gateway.
Installation notes recorded for this gateway.
Add/delete delta for installation notes, applied atomically on update. Optional.
Delete delta for installation photos, applied atomically on update. Optional.
Timestamp of the last external sync attempt, in RFC 3339 format. Optional; null if never synced.
Outcome of the last external sync attempt: SUCCESS, FAILURE, or NOT_SYNCED.
SUCCESS- SuccessFAILURE- FailureNOT_SYNCED- Not Synced
{
"id": 0,
"node_id": "string",
"description": "string",
"gateway_model": 0,
"gateway_model_name": "string",
"mac_address": "string",
"battery_level": 0,
"last_reported_at": "2006-01-02T15:04:05.000Z",
"installer": "string",
"status": {},
"install_status": {},
"backhaul": "string",
"firmware_version": "string",
"imei": "string",
"region": "string",
"is_installed": true,
"antenna_gain": 0,
"properties": "",
"version": 0,
"installed_date": "2006-01-02T15:04:05.000Z",
"campus_description": "string",
"building_description": "string",
"floor_description": "string",
"room_description": "string",
"zone_description": "string",
"installation_photos": [
{
"id": 0,
"gateway": 0,
"photo_path": "string",
"timestamp": "2006-01-02T15:04:05.000Z",
"user": "string",
"original_filename": "string",
"version": 0
}
],
"installation_notes": [
{
"id": 0,
"gateway": 0,
"installation_note": "string",
"timestamp": "2006-01-02T15:04:05.000Z",
"user": "string",
"version": 0
}
],
"installation_notes_delta": {
"add": [
"string"
],
"delete_ids": [
0
]
},
"installation_photos_delta": {
"delete_ids": [
0
]
},
"last_synced_at": "2006-01-02T15:04:05.000Z",
"last_sync_status": "string"
}
Retrieves a list of gateways
Returns a paginated list of gateways — the LoRa/cellular hardware units that relay tag/device signals back to the platform (the infrastructure counterpart to Device). Each row is annotated with its latest reported location (campus/building/floor/room/zone description and DB ID); unlike Device, which reflects the currently-open location interval, Gateway location tracking uses a most-recent-timestamp model rather than an open/closed date range.
Key fields:
status(OFFLINE/ACTIVE/READY_TO_CONNECT/UNKNOWN, runtime connectivity)install_status(AWAITING_PHOTOS/COMPLETED/UNKNOWN, installation workflow state)backhaul(CELLULAR/ETHERNET/UNKNOWN, how the gateway reaches the internet)battery_level(nullable, since many gateways are mains/PoE powered)imei(relevant whenbackhaul=CELLULAR)
Supports rich filtering (node_id, mac_address, region, description icontains, install_status__in, status__in, backhaul__in, gateway_model_db_id__in, is_installed, battery/installed-date/last-reported-at ranges, campus/building/floor/room/zone DB ID) and free-text search.
Scopes results to the campuses/buildings/floors/rooms/zones the authenticated user has permission to view.
Query Parameters
Filters to gateways whose backhaul (CELLULAR, ETHERNET, UNKNOWN) is in this comma-separated list. Optional.
Filters to gateways with a battery level within this range (min,max). Optional.
Filters to gateways with a battery level within this range (min,max). Optional.
Filters to gateways whose latest reported building ID matches. Optional.
Filters to gateways whose latest reported building ID is in this comma-separated list. Optional.
Filters to gateways whose latest reported campus ID matches. Optional.
Filters to gateways whose latest reported campus ID is in this comma-separated list. Optional.
Filters to gateways whose description contains this text (case-insensitive). Optional.
Filters to gateways whose description contains this text (case-insensitive). Optional. Equivalent to description.
Filters to gateways whose latest reported floor ID matches. Optional.
Filters to gateways whose latest reported floor ID is in this comma-separated list. Optional.
Response format override. Optional. Allowed values: csv, json.
Filters to gateways belonging to these gateway model IDs. Comma-separated. Optional.
Filters to gateways belonging to this exact gateway model ID. Optional.
Filters to gateways with these numeric IDs. Comma-separated. Optional.
Filters to gateways whose install_status (AWAITING_PHOTOS, COMPLETED, UNKNOWN) is in this comma-separated list. Optional.
Filters to gateways installed at or after this timestamp, in RFC 3339 format. Optional.
Filters to gateways installed at or before this timestamp, in RFC 3339 format. Optional.
Filters to gateways that have (true) or have not (false) completed the installation flow. Optional.
Filters to gateways that last reported at or after this timestamp, in RFC 3339 format. Optional.
Filters to gateways that last reported at or before this timestamp, in RFC 3339 format. Optional.
Filters to gateways whose MAC address contains this text (case-insensitive). Optional.
Filters to gateways whose MAC address contains this text (case-insensitive). Optional. Equivalent to mac_address.
Filters to gateways whose node_id contains this text (case-insensitive). Optional.
Which field to use when ordering the results.
A page number within the paginated result set.
Number of results to return per page.
Filters to gateways whose region contains this text (case-insensitive). Optional.
Filters to gateways whose region contains this text (case-insensitive). Optional. Equivalent to region.
Filters to gateways whose latest reported room ID matches. Optional.
Filters to gateways whose latest reported room ID is in this comma-separated list. Optional.
A search term.
Filters to gateways whose status (OFFLINE, ACTIVE, READY_TO_CONNECT, UNKNOWN) is in this comma-separated list. Optional.
Filters to gateways whose latest reported zone ID matches. Optional.
Filters to gateways whose latest reported zone ID is in this comma-separated list. Optional.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/gateway/'
Integrations
Endpoints for third party integrations
- GET/integrations/asset-utilization-lite/
- DELETE/integrations/asset/{customer_reference}
- POST/integrations/asset/{customer_reference}/led/activate
- GET/integrations/asset/{customer_reference}/location
- POST/integrations/asset/upsert
- GET/integrations/sensor-data-lite
- POST/integrations/sync-asset-location
Retrieves a list of lightweight asset utilization records
Returns a paginated, read-only, denormalized list of AssetUtilization intervals — periods during which an asset was actively 'in use' per its configured utilization sensor thresholds — enriched with the asset's identity and location so integration clients don't need extra joins.
is_utilization=True means the asset was in active use during [start_date, end_date]; a null end_date means the interval is still ongoing. asset_device lists the asset's attached devices.
All location fields (campus_description/campus_id, building_description/building_id, floor_description/floor_id, room_description/room_id, zone_description) reflect the asset's current location only (its open AssetLocation row), not the location at the time of the utilization interval.
Supports filtering by start_date/end_date ranges, customer_reference (icontains), and current-location fields (campus_id/campus_description, building_id/building_description, floor_id/floor_description, room_id/room_description).
Scopes results to the campuses/buildings/floors/rooms the authenticated user has permission to view.
Query Parameters
Filters to intervals whose asset's current building name contains this text (case-insensitive). Optional.
Filters to intervals whose asset's current building text code matches exactly (case-insensitive). Optional.
Filters to intervals whose asset's current campus name contains this text (case-insensitive). Optional.
Filters to intervals whose asset's current campus text code matches exactly (case-insensitive). Optional.
Filters to intervals whose asset's customer_reference contains this text (case-insensitive). Optional.
Filters to utilization intervals ending at or after this timestamp, in RFC 3339 format. Optional.
Filters to utilization intervals ending at or before this timestamp, in RFC 3339 format. Optional.
Filters to intervals whose asset's current floor name contains this text (case-insensitive). Optional.
Filters to intervals whose asset's current floor text code matches exactly (case-insensitive). Optional.
Which field to use when ordering the results.
A page number within the paginated result set.
Number of results to return per page.
Filters to intervals whose asset's current room name contains this text (case-insensitive). Optional.
Filters to intervals whose asset's current room text code matches exactly (case-insensitive). Optional.
Filters to utilization intervals starting at or after this timestamp, in RFC 3339 format. Optional.
Filters to utilization intervals starting at or before this timestamp, in RFC 3339 format. Optional.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/integrations/asset-utilization-lite/'
Deletes an asset (integration)
Soft-deletes every asset matching the given customer_reference (normally exactly one, since customer_reference is unique).
This is a soft delete (via django-softdelete): it sets the asset's deleted_at field, so the asset disappears from normal queries/endpoints, but the API does not physically remove the row and can restore it later — including automatically, if upsert is subsequently called with the same customer_reference.
Path Parameters
Unique, customer/SAP-supplied identifier of the asset(s) to delete.
Body Parameters
No parameters.
Returns
curl -X DELETE 'https://track.poc.mqlocate.net/api/v1.0/integrations/asset/{customer_reference}'
Activates an asset LED (integration)
Triggers the physical LED on the asset's location-tracking device so it can be visually located, identified by customer_reference in the path. Resolves the best device to light (preferring an LED-enabled location device, most-recently-reporting), then the nearest Bridge by RSSI/shared location if one exists.
Debounces activation per device: if an LED request for that device started less than LED_TIMEOUT_SECONDS ago, the API sends no new hardware message and the response reports the remaining cooldown instead. Otherwise the API creates a new LedRequest and, if messaging is enabled, dispatches it asynchronously to the device.
Path Parameters
Unique, customer/SAP-supplied identifier of the asset.
Body Parameters
No parameters.
Returns
curl -X POST 'https://track.poc.mqlocate.net/api/v1.0/integrations/asset/{customer_reference}/led/activate'
Retrieves an asset's location (integration)
Returns current location data for a single asset, identified by customer_reference.
tag_identifier lists the dash-formatted device IDs of every device currently paired to the asset (via AssetDevice).
The API populates campus_id/building_id/room_id/zone_id and confidence from the asset's current (open-ended) AssetLocation row; these are null if the asset has no current location. location_updated_at reflects when that location was recorded.
Path Parameters
Unique, customer/SAP-supplied identifier of the asset.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/integrations/asset/{customer_reference}/location'
Upserts an asset (integration)
Creates or updates an asset by customer_reference — the unique external join key used for integration workflows. If an asset (including a previously soft-deleted one) already has this customer_reference, the API overwrites only the fields present as keys in the request body and un-deletes the asset if needed (200 response); otherwise it creates a new asset directly from the payload (201 response).
Supply asset_type/asset_owner as plain name strings (not IDs): the API resolves each case-insensitively against existing records, auto-creates it if no match exists, or rejects the request with 409 if the name ambiguously matches more than one existing record.
Body Parameters
Unique external identifier used to find/create the asset. Required.
Description of the asset. Required.
Manufacturer name. Optional.
Manufacturer model number. Optional.
Manufacturer serial number. Optional.
Arbitrary customer-defined JSON object. Optional; a JSON-encoded string is also accepted and parsed.
Asset type name, not ID. Optional; auto-created if not found.
Asset owner name, not ID. Optional; auto-created if not found.
Returns
{
"customer_reference": "string",
"description": "string",
"manufacturer": "string",
"model_number": "string",
"serial_number": "string",
"customer_properties": "",
"asset_type": "string",
"asset_owner": "string"
}
curl -X POST 'https://track.poc.mqlocate.net/api/v1.0/integrations/asset/upsert'
Retrieves a list of lightweight sensor data
Returns a paginated, denormalized/flattened list of sensor readings intended for lightweight integration consumption, joining device/asset/location context into a single row per reading so clients don't need to perform their own joins.
Notable response behavior (in to_representation): converts data from Celsius if the sensor type is TEMPERATURE and the requesting user prefers Fahrenheit; converts data from kPa if the sensor type is PIPE_PRESSURE and the user prefers PSI; and, when rendering the response as CSV, flattens data from an object down to a single scalar value (overriding DAILY_ENERGY_USAGE with its daily_energy_usage value in that case).
Supports filtering by device_db_id, device_id, asset_db_id, sensor_type__in, timestamp range, is_alert_state, campus/building/floor/room description or DB ID, and customer_reference.
Scopes results to the campuses/buildings/floors/rooms the authenticated user has permission to view.
Query Parameters
Filters to readings associated with this asset ID. Optional.
Filters to readings in this building ID. Optional.
Filters to readings with this exact building name. Optional.
Filters to readings with this exact campus name. Optional.
Filters to readings with this exact campus text code. Optional.
Filters to readings whose associated asset has this exact customer_reference. Optional.
Filters to readings from this device ID. Optional.
Filters to readings from the device with this exact hardware identifier. Optional.
Filters to readings on this floor ID. Optional.
Filters to readings with this exact floor name. Optional.
Filters to readings in (true) or not in (false) an alert state. Optional.
Which field to use when ordering the results.
A page number within the paginated result set.
Number of results to return per page.
Filters to readings in this room ID. Optional.
Filters to readings with this exact room name. Optional.
A search term.
Filters to readings whose sensor type name is in this comma-separated list. Optional.
Filters to readings recorded at or after this timestamp, in RFC 3339 format. Optional.
Filters to readings recorded at or before this timestamp, in RFC 3339 format. Optional.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/integrations/sensor-data-lite'
Syncs asset locations (integration)
Asynchronously re-syncs asset locations by dispatching a Celery task and returning immediately — a 200 response only means the API queued the sync, not that it completed.
Accepts either customer_references (a list of specific assets to sync) or from_date (sync assets updated since this date); if customer_references is present it takes priority over from_date.
The API does not validate or require either field — omitting both still returns 200 and queues the task with empty criteria.
Body Parameters
Specific asset customer_references to sync. Optional; takes priority over from_date if both are given.
Syncs assets updated on or after this date. Optional, and ignored if customer_references is given.
Returns
{
"customer_references": [
"string"
],
"from_date": "string"
}
curl -X POST 'https://track.poc.mqlocate.net/api/v1.0/integrations/sync-asset-location'
Rooms
Endpoints for querying rooms
- GET/room/
- GET/room/{id}/
The Rooms object
Attributes
Unique identifier of the room.
{
"type": "string",
"id": 0,
"geometry": {
"type": "string",
"coordinates": [
"array"
]
},
"properties": {
"room_id": "string",
"room_description": "string",
"version": 0,
"created": "2006-01-02T15:04:05.000Z",
"floor_id": 0,
"floor": {
"id": 0,
"floor_id": "string",
"floor_description": "string"
},
"people_count": 0,
"is_occupied": true,
"is_people_count_enabled": true,
"people_count_last_reported_at": "2006-01-02T15:04:05.000Z"
}
}
Retrieves a list of rooms
Returns a paginated list of rooms as GeoJSON Feature objects (geometry is a polygon), each nesting a summary floor object plus people-count/occupancy fields.
Supports filtering by floor or building (integer IDs; floor takes priority if both are supplied) in addition to the documented filterset fields. Sorts results naturally by room_description unless the ordering parameter is supplied. Scopes results to the campuses/buildings/floors/rooms the authenticated user has permission to view.
Query Parameters
Filters to rooms belonging to this building ID. Ignored if floor is also supplied. Optional.
Filters to rooms belonging to these building IDs. Comma-separated. Optional.
Filters to rooms belonging to this floor ID. Takes priority over building if both are supplied. Optional.
Filters to rooms belonging to these floor IDs. Comma-separated. Optional.
Filters to rooms with these numeric IDs. Comma-separated. Optional.
Which field to use when ordering the results.
A page number within the paginated result set.
Number of results to return per page.
Filters to the room with this exact human-readable name. Optional.
Filters to the room with this exact text code. Optional.
A search term.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/room/'
Retrieves a room by ID
Returns a single room by its numeric ID, as a GeoJSON Feature object with the same shape as the list endpoint.
Path Parameters
A unique integer value identifying this room.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/room/{id}/'
Room Occupancies
Endpoints for room occupancy history
- GET/room-occupancy/history/
The Room Occupancies object
Attributes
Timestamp of the snapshot, in RFC 3339 format.
Whether the room was occupied at this timestamp. True means occupied.
{
"timestamp": "2006-01-02T15:04:05.000Z",
"room_occupancy_history": true
}
Retrieves room occupancy history
Returns raw {timestamp, room_occupancy_history} snapshots for a single room, ordered ascending by timestamp, where room_occupancy_history is a boolean occupied/unoccupied state (distinct from the numeric people-count history returned by /room-people-count/history).
Requires both room_db_id and timestamp__gte as query parameters; raises a 400 ValidationError if either is missing and a 404 if room_db_id doesn't match an existing room.
Query Parameters
Numeric ID of the room to fetch occupancy history for. Required.
Includes only records at or after this timestamp, in RFC 3339 format. Required.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/room-occupancy/history/'
Room People Counts
Endpoints for room people count data and statistics
- GET/room-people-count/
- GET/room-people-count/history/
- GET/room-people-count/stats/
The Room People Counts object
Attributes
Unique identifier of the people-count record.
Numeric foreign key of the room this record applies to (not the room's human-readable room_id text code).
Timestamp the record was recorded, in RFC 3339 format.
Running total people count as of this record.
Running total count of people who entered the room as of this record.
Running total count of people who exited the room as of this record.
Net people count for just this period.
Count of people who entered the room during this period.
Count of people who exited the room during this period.
Snapshot people-count value recorded for the room at this timestamp.
{
"id": 0,
"room_id": 0,
"timestamp": "2006-01-02T15:04:05.000Z",
"total": 0,
"total_counter_in": 0,
"total_counter_out": 0,
"periodic_total": 0,
"periodic_counter_in": 0,
"periodic_counter_out": 0,
"room_count_history": 0
}
Retrieves a list of room people counts
Returns a paginated list of raw RoomPeopleCount records — periodic snapshots of people traffic in a room derived from sensor readings. Each record includes running totals (total, total_counter_in, total_counter_out) and the counts for just that period (periodic_total, periodic_counter_in, periodic_counter_out), plus a room_count_history snapshot value.
room_id here is the numeric foreign key to the Room model, not the room's human-readable room_id text code used elsewhere.
Supports filtering by room_id (numeric). Scopes results to the campuses/buildings/floors/rooms the authenticated user has permission to view.
Query Parameters
Which field to use when ordering the results.
A page number within the paginated result set.
Number of results to return per page.
Filters to people-count records for this room ID (the numeric foreign key, not the text room_id code). Optional.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/room-people-count/'
Retrieves room people count history
Returns raw {timestamp, room_count_history} snapshots for a single room, ordered ascending by timestamp.
Requires both room_db_id and timestamp__gte as query parameters; raises a 400 ValidationError if either is missing (enforced in the view body, not via a filterset) and a 404 if room_db_id doesn't match an existing room.
Query Parameters
Numeric ID of the room to fetch history for. Required.
Includes only records at or after this timestamp, in RFC 3339 format. Required.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/room-people-count/history/'
Retrieves room people count stats
Returns {date, total} records for a single room: the sum of periodic_counter_in grouped by day or month, ordered ascending by date.
Requires room_db_id and length_of_time as query parameters; returns 400 if either is missing or if length_of_time isn't day/month, and 404 if room_db_id doesn't match an existing room.
timezone, if supplied, must be a valid IANA timezone name (e.g. America/New_York) used when truncating timestamps to day/month boundaries; the API does not validate an invalid value and raises a raw error rather than a friendly 400.
Query Parameters
Granularity to group and sum counts by. Required. Allowed values: day, month.
Numeric ID of the room to fetch stats for. Required.
IANA timezone name used when truncating timestamps to day/month boundaries. Optional; uses the default Django server timezone if omitted.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/room-people-count/stats/'
Room Roll Ups
Endpoints for room location roll up summaries
- GET/room-roll-up/
The Room Roll Ups object
Attributes
Unique identifier of the room.
{
"type": "string",
"id": 0,
"geometry": {
"type": "string",
"coordinates": [
"array"
]
},
"properties": {
"room_id": "string",
"room_description": "string",
"floor_id": "string",
"floor_db_id": 0,
"floor_description": "string",
"campus_db_id": 0,
"sensor_count": 0,
"active_alert_count": 0,
"people_count": 0,
"is_people_count_enabled": true,
"sq_feet": 0.0,
"sq_meters": 0.0,
"people_count_last_reported_at": "2006-01-02T15:04:05.000Z",
"is_occupied": true,
"occupancy_last_reported_at": "2006-01-02T15:04:05.000Z",
"asset_count": 0,
"in_use_asset_count": 0,
"unpaired_asset_count": 0,
"active_asset_count": 0,
"not_in_use_asset_count": 0,
"missing_asset_count": 0,
"missing_asset_count_last_24_hours": 0,
"device_count": 0,
"offline_device_count": 0,
"active_device_count": 0,
"ready_to_connect_device_count": 0,
"device_last_reported_at": "2006-01-02T15:04:05.000Z"
}
}
Retrieves a list of room roll-ups
Returns a paginated, read-only list of denormalized per-room metric rollups as GeoJSON Feature objects (geometry is a polygon). Includes room/floor identity fields (room_id, room_description, floor_id, floor_db_id, floor_description, campus_db_id), room size fields unique to this roll-up (sq_feet, sq_meters), plus the same sensor/alert, occupancy/people-count, asset-status, and device-status aggregate metrics as the other location roll-ups.
This is a materialized/precomputed read model with no create/update/delete operations, and no AI-summary sub-action.
Sorts results naturally by room_description unless the ordering parameter is supplied.
Scopes results to the campuses/buildings/floors/rooms the authenticated user has permission to view.
Query Parameters
Filters to room roll-ups belonging to this floor ID. Optional.
Filters to the room roll-up with this exact numeric ID. Optional.
Which field to use when ordering the results.
A page number within the paginated result set.
Number of results to return per page.
A search term.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/room-roll-up/'
Sensor Models
Endpoints for querying sensor models
- GET/sensor-model/
- GET/sensor-model/{id}/
The Sensor Models object
Attributes
Unique identifier of the sensor model.
Unique name of the sensor model. Required.
JSON key this sensor model's readings live under in raw sensor data payloads. Required.
Arbitrary JSON metadata for the sensor model. Optional; null if not set.
Name of the sensor type this sensor model measures. Required.
Whether this sensor model appears in the UI. True means it is shown.
Whether this sensor model can drive an asset's in-use/utilization state.
Unit the sensor model reports readings in, taken from the parent sensor type. Computed live, not stored.
Whether this sensor model supports continuous (not just threshold-crossing) alerting.
JSON enumeration of valid values for this sensor model (e.g. OPEN/CLOSED for a door sensor). Optional; null if unrestricted.
Data type of readings for this sensor model: BOOLEAN, NUMERIC, COORDINATES, STRING, or UNKNOWN.
BOOLEAN- BooleanNUMERIC- NumericCOORDINATES- CoordinatesSTRING- StringUNKNOWN- Unknown
JSON schema for validating the properties of this sensor model. Optional; null if unrestricted.
{
"id": 0,
"name": "string",
"data_key": "string",
"metadata": "",
"sensor_type": "string",
"is_displayed": true,
"is_utilization_enabled": true,
"unit_of_measurement": "string",
"is_continuous_alert_enabled": true,
"allowable_values": "",
"data_type": "string",
"properties_schema": ""
}
Retrieves a list of sensor models
Returns a paginated list of sensor models. A sensor model is a specific, configurable sensor implementation tied to one sensor_type (referenced by name via a slug field, not ID) and associated with one or more DeviceModels through the DeviceModelSensorModel join table.
Notable fields:
data_key(the JSON key this sensor's readings live under in raw sensor data payloads)data_type(BOOLEAN/NUMERIC/COORDINATES/STRING/UNKNOWN)allowable_values(JSON, enumerates valid values for e.g. a door sensor's OPEN/CLOSED states)is_displayed(show in UI)is_utilization_enabled(whether this sensor can drive an asset's in-use/utilization state)properties_schema(JSON schema describing custom per-Sensorconfiguration fields required for this sensor model, e.g. Isl/Ish/Osl/Osh scaling values for an analog input; validated against eachSensor'sproperties)
Query Parameters
A page number within the paginated result set.
Number of results to return per page.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/sensor-model/'
Retrieves a sensor model by ID
Returns a single sensor model by its numeric ID.
Path Parameters
A unique integer value identifying this sensor model.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/sensor-model/{id}/'
Sensor Types
Endpoints for querying sensor types
- GET/sensor-type/
- GET/sensor-type/{id}/
The Sensor Types object
Attributes
Unique identifier of the sensor type.
Unique internal key for the sensor type. Required.
Human-readable name of the sensor type. Required.
Unit the sensor type reports readings in (e.g. "°F"). Optional; blank if not applicable.
Whether readings of this type support threshold-based alerting. True means alerting is supported.
{
"id": 0,
"name": "string",
"display_name": "string",
"unit_of_measurement": "string",
"is_alertable": true
}
Retrieves a list of sensor types
Returns a paginated list of sensor types. A sensor type is a category of measurement (e.g. temperature, humidity, door-open) with a display_name, an optional unit_of_measurement, and an is_alertable flag indicating whether readings of this type support threshold-based alerting. SensorModel records reference a sensor type to describe a concrete, configurable sensor implementation.
Query Parameters
Which field to use when ordering the results.
A page number within the paginated result set.
Number of results to return per page.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/sensor-type/'
Retrieves a sensor type by ID
Returns a single sensor type by its numeric ID.
Path Parameters
A unique integer value identifying this sensor type.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/sensor-type/{id}/'
Zones
Endpoints for querying zones
- GET/zone/
- GET/zone/{id}/
The Zones object
Attributes
Unique identifier of the zone.
{
"type": "string",
"id": 0,
"geometry": {
"type": "string",
"coordinates": [
"array"
]
},
"properties": {
"zone_id": "string",
"zone_description": "string",
"version": 0,
"created": "2006-01-02T15:04:05.000Z",
"room": {
"id": 0,
"room_id": "string",
"room_description": "string"
},
"room_id": 0,
"location_set": [
0
]
}
}
Retrieves a list of zones
Returns a paginated list of zones as GeoJSON Feature objects (geometry is a polygon), each nesting a summary room object and a read-only location_set (the IDs of the denormalized Location row(s) tied to this zone; each zone maintains exactly one paired Location record).
Scopes results to the campuses/buildings/floors/rooms/zones the authenticated user has permission to view.
Query Parameters
Filters to zones belonging to the floor with this exact text code. Optional.
Filters to zones with these numeric IDs. Comma-separated. Optional.
Which field to use when ordering the results.
A page number within the paginated result set.
Number of results to return per page.
Filters to zones belonging to this room ID. Optional.
Filters to zones belonging to these room IDs. Comma-separated. Optional.
Filters to zones belonging to the room with this exact text code. Optional.
A search term.
Filters to the zone with this human-readable name (case-insensitive exact match). Optional.
Filters to the zone with this exact text code. Optional.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/zone/'
Retrieves a zone by ID
Returns a single zone by its numeric ID, as a GeoJSON Feature object with the same shape as the list endpoint.
Path Parameters
A unique integer value identifying this zone.
Body Parameters
No parameters.
Returns
curl 'https://track.poc.mqlocate.net/api/v1.0/zone/{id}/'