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.

Base URL
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.

Authenticated Request
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.

HTTP Error Codes
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

Endpoints
  • GET/asset/
  • GET/asset/{id}/
  • PUT/asset/bulk-update/
  • GET/asset/customer-reference/{customer_reference}/
  • GET/asset/unique-description-count/

The Assets object

Attributes

id integer

Unique identifier of the asset.

description string

Human-readable description of the asset.

customer_reference string

Unique, customer/SAP-supplied identifier for the asset, used as the external join key for integration workflows.

manufacturer string

Manufacturer of the asset. Null if not set.

model_number string

Manufacturer model number of the asset. Null if not set.

serial_number string

Manufacturer serial number of the asset. Null if not set.

image string (uri)

URL of the asset image. Null if not set.

customer_properties

Arbitrary customer-defined JSON properties for the asset. Null if not set.

type string

Name of the asset type. Optional; null if not classified.

owner string

Name of the asset owner. Optional; null if not assigned.

asset_device array of objects

Devices currently paired to this asset.

version integer

Optimistic-locking revision counter, incremented on every update.

is_integrations boolean

Whether this asset is managed by an external integration. True means integration-managed writes take precedence and bulk-update skips it.

is_location_stable boolean

Whether the asset's location has been stable (not recently changing) based on incoming location reports.

status string

Current status of the asset: UNPAIRED, ACTIVE, IN_USE, NOT_IN_USE, or MISSING.

  • UNPAIRED - Unpaired
  • ACTIVE - Active
  • IN_USE - In Use
  • NOT_IN_USE - Not In Use
  • MISSING - Missing
last_reported_at string (date-time)

Timestamp of the last report from any paired device, in RFC 3339 format. Null if never reported.

location_last_reported_at string (date-time)

Timestamp of the last location report, in RFC 3339 format. Null if never reported.

related_assets array of objects

Assets related to this asset via a RelatedAsset link.

paired_display_properties

Freeform JSON, keyed by device_id, used to drive e-ink display templates on MQdisplay-class paired devices. Null if not set.

The Assets object
{
  "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

building_db_id array of numbers

Filters to assets whose current location's building ID is in this comma-separated list. Optional.

building_db_id__in array of numbers

Alias for building_db_id. Filters to assets whose current location's building ID is in this comma-separated list. Optional.

campus_db_id array of numbers

Filters to assets whose current location's campus ID is in this comma-separated list. Optional.

campus_db_id__in array of numbers

Alias for campus_db_id. Filters to assets whose current location's campus ID is in this comma-separated list. Optional.

floor_db_id array of numbers

Filters to assets whose current location's floor ID is in this comma-separated list. Optional.

floor_db_id__in array of numbers

Alias for floor_db_id. Filters to assets whose current location's floor ID is in this comma-separated list. Optional.

format string

Response format override. Optional. Allowed values: csv, json.

id integer

Filters to the asset with this exact numeric ID. Optional.

id__in array of integers

Multiple values may be separated by commas.

ordering string

Which field to use when ordering the results.

owner string

Filters to assets with this exact owner name. Optional.

owner__in array of strings

Filters to assets whose owner name is in this comma-separated list. Optional.

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

room_db_id array of numbers

Filters to assets whose current location's room ID is in this comma-separated list. Optional.

room_db_id__in array of numbers

Alias for room_db_id. Filters to assets whose current location's room ID is in this comma-separated list. Optional.

search string

Free-text search across description, customer_reference, type, owner, manufacturer, model_number, serial_number, and customer_properties. Optional.

status string

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.

status__in array of strings

Filters to assets whose status (UNPAIRED, ACTIVE, IN_USE, NOT_IN_USE, MISSING) is in this comma-separated list. Optional.

type string

Filters to assets with this exact type name. Optional.

type__in array of strings

Filters to assets whose type name is in this comma-separated list. Optional.

zone_db_id array of numbers

Filters to assets whose current location's zone ID is in this comma-separated list. Optional.

zone_db_id__in array of numbers

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

Query Parameters
GET /asset/
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

id integer required

A unique integer value identifying this asset.

Query Parameters

format string

Response format override. Optional. Allowed values: csv, json.

Body Parameters

No parameters.

Returns

Path Parameters
Query Parameters
GET /asset/{id}/
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:

  • description
  • type
  • owner
  • manufacturer
  • model_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

format string

Response format override. Optional. Allowed values: csv, json.

Body Parameters

asset_ids array of integers

Optional list of asset IDs. NOT currently used to select update targets — only the active query filters determine which assets are updated.

update_fields array of objects required

List of field-name/value pairs to apply to every matched asset. Required; must not contain duplicate field_name entries.

Returns

Query Parameters
Body
{
  "asset_ids": [
    0
  ],
  "update_fields": [
    {
      "field_name": "",
      "value": "string"
    }
  ]
}
PUT /asset/bulk-update/
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

customer_reference string required

Unique, customer/SAP-supplied identifier of the asset.

Query Parameters

format string

Response format override. Optional. Allowed values: csv, json.

Body Parameters

No parameters.

Returns

Path Parameters
Query Parameters
GET /asset/customer-reference/{customer_reference}/
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

format string

Response format override. Optional. Allowed values: csv, json.

Body Parameters

No parameters.

Returns

Query Parameters
GET /asset/unique-description-count/
curl 'https://track.poc.mqlocate.net/api/v1.0/asset/unique-description-count/'

Asset Led Request Histories

Endpoints for asset LED activation request history

Endpoints
  • GET/asset-led-request-history

The Asset Led Request Histories object

Attributes

asset_id integer

ID of the asset this LED request was made for.

led_request_history_id integer

Unique identifier of the underlying LED request history record.

device_id string

Hardware identifier of the device the LED request targeted.

monitor_id string

Identifier of the bridge that relayed the LED request, if any.

is_led_enabled boolean

Whether the target device's model supports an LED. True means LED-capable.

led_event_type string

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.

created string (date-time)

Timestamp the LED request was recorded, in RFC 3339 format.

asset object

The asset this LED request was made for.

The Asset Led Request Histories object
{
  "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

asset_db_id float

Filters to LED requests for this asset ID. Optional.

created__gte string

Filters to LED requests created at or after this timestamp, in RFC 3339 format. Optional.

created__lte string

Filters to LED requests created at or before this timestamp, in RFC 3339 format. Optional.

ordering string

Which field to use when ordering the results.

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

Body Parameters

No parameters.

Returns

Query Parameters
GET /asset-led-request-history
curl 'https://track.poc.mqlocate.net/api/v1.0/asset-led-request-history'

Asset Owners

Endpoints for managing asset owners

Endpoints
  • GET/asset-owner/
  • POST/asset-owner/
  • GET/asset-owner/{id}/
  • PUT/asset-owner/{id}/
  • DELETE/asset-owner/{id}/

The Asset Owners object

Attributes

id integer

Unique identifier of the asset owner.

name string

Name of the asset owner. Required.

The Asset Owners object
{
  "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

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

Body Parameters

No parameters.

Returns

Query Parameters
GET /asset-owner/
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

id integer required

Unique identifier of the asset owner.

name string required

Name of the asset owner. Required.

Returns

Body
{
  "id": 0,
  "name": "string"
}
POST /asset-owner/
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

id integer required

A unique integer value identifying this asset owner.

Body Parameters

No parameters.

Returns

Path Parameters
GET /asset-owner/{id}/
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

id integer required

A unique integer value identifying this asset owner.

Body Parameters

name string required

Name of the asset owner. Required.

Returns

Path Parameters
Body
{
  "name": "string"
}
PUT /asset-owner/{id}/
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

id integer required

A unique integer value identifying this asset owner.

Body Parameters

No parameters.

Returns

Path Parameters
DELETE /asset-owner/{id}/
curl -X DELETE 'https://track.poc.mqlocate.net/api/v1.0/asset-owner/{id}/'

Asset Searches

Endpoints for searching assets

Endpoints
  • GET/asset-search

The Asset Searches object

Attributes

id integer

Unique identifier of the asset.

customer_reference string

Unique, customer/SAP-supplied identifier for the asset.

description string

Human-readable description of the asset. Null if not set.

manufacturer string

Manufacturer of the asset. Null if not set.

model_number string

Manufacturer model number of the asset. Null if not set.

serial_number string

Manufacturer serial number of the asset. Null if not set.

status string

Current status of the asset: UNPAIRED, ACTIVE, IN_USE, NOT_IN_USE, or MISSING.

  • UNPAIRED - Unpaired
  • ACTIVE - Active
  • IN_USE - In Use
  • NOT_IN_USE - Not In Use
  • MISSING - Missing
type string

Name of the asset type.

is_integrations boolean

Whether this asset is managed by an external integration.

owner string

Name of the asset owner.

location_last_reported_at string (date-time)

Timestamp of the last location report, in RFC 3339 format. Null if never reported.

asset_locations array of objects

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.

customer_properties

Arbitrary customer-defined JSON properties for the asset.

The Asset Searches object
{
  "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

building_db_id integer

Filters to assets in this building ID. Optional.

building_db_id__in array of integers

Filters to assets in these building IDs. Comma-separated. Optional.

building_id string

Filters to assets in the building with this exact text code. Optional.

campus_db_id integer

Filters to assets in this campus ID. Optional.

campus_db_id__in array of integers

Filters to assets in these campus IDs. Comma-separated. Optional.

campus_id string

Filters to assets in the campus with this exact text code. Optional.

floor_db_id integer

Filters to assets on this floor ID. Optional.

floor_db_id__in array of integers

Filters to assets on these floor IDs. Comma-separated. Optional.

floor_id string

Filters to assets on the floor with this exact text code. Optional.

id integer

Filters to the asset with this exact numeric ID. Optional.

id__in array of integers

Filters to assets with these numeric IDs. Comma-separated. Optional.

ordering string

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.

owner string

Filters to assets with this exact owner name. Optional.

owner__in array of strings

Filters to assets whose owner name is in this comma-separated list. Optional.

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

room_db_id integer

Filters to assets in this room ID. Optional.

room_db_id__in array of integers

Filters to assets in these room IDs. Comma-separated. Optional.

room_id string

Filters to assets in the room with this exact text code. Optional.

search string

Free-text search across description, customer_reference, type, owner, manufacturer, model_number, serial_number, and customer_properties. Optional.

status string

Filters to assets with this exact status (UNPAIRED, ACTIVE, IN_USE, NOT_IN_USE, MISSING). Optional.

status__in array of strings

Filters to assets whose status is in this comma-separated list. Optional.

type string

Filters to assets with this exact type name. Optional.

type__in array of strings

Filters to assets whose type name is in this comma-separated list. Optional.

zone_db_id integer

Filters to assets in this zone ID. Optional.

zone_db_id__in array of integers

Filters to assets in these zone IDs. Comma-separated. Optional.

zone_id string

Filters to assets in the zone with this exact text code. Optional.

Body Parameters

No parameters.

Returns

Query Parameters
GET /asset-search
curl 'https://track.poc.mqlocate.net/api/v1.0/asset-search'

Asset Search CSVs

Endpoints for exporting asset search results as CSV

Endpoints
  • POST/asset-search-csv

The Asset Search CSVs object

Attributes

message string

Human-readable summary of the export request result.

The Asset Search CSVs object
{
  "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

format string

Response format override. Optional. Allowed values: csv, json.

Body Parameters

id integer required

Unique identifier of the asset.

customer_reference string required

Unique, customer/SAP-supplied identifier for the asset.

description string required

Human-readable description of the asset. Null if not set.

manufacturer string required

Manufacturer of the asset. Null if not set.

model_number string required

Manufacturer model number of the asset. Null if not set.

serial_number string required

Manufacturer serial number of the asset. Null if not set.

status string required

Current status of the asset: UNPAIRED, ACTIVE, IN_USE, NOT_IN_USE, or MISSING.

  • UNPAIRED - Unpaired
  • ACTIVE - Active
  • IN_USE - In Use
  • NOT_IN_USE - Not In Use
  • MISSING - Missing
type string required

Name of the asset type.

is_integrations boolean required

Whether this asset is managed by an external integration.

owner string required

Name of the asset owner.

location_last_reported_at string (date-time) required

Timestamp of the last location report, in RFC 3339 format. Null if never reported.

asset_locations array of objects required

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 object required

device_id and battery_level for the asset's paired device, if any. Computed live, not stored.

customer_properties

Arbitrary customer-defined JSON properties for the asset.

Returns

Query Parameters
Body
{
  "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": ""
}
POST /asset-search-csv
curl -X POST 'https://track.poc.mqlocate.net/api/v1.0/asset-search-csv'

Asset Types

Endpoints for managing asset types

Endpoints
  • GET/asset-type/
  • POST/asset-type/
  • GET/asset-type/{id}/
  • PUT/asset-type/{id}/
  • DELETE/asset-type/{id}/

The Asset Types object

Attributes

id integer

Unique identifier of the asset type.

name string

Name of the asset type. Required.

is_displayed boolean

Whether this asset type appears as a selectable option in the UI. True means it is shown.

The Asset Types object
{
  "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

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

Body Parameters

No parameters.

Returns

Query Parameters
GET /asset-type/
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

id integer required

Unique identifier of the asset type.

name string required

Name of the asset type. Required.

is_displayed boolean

Whether this asset type appears as a selectable option in the UI. True means it is shown.

Returns

Body
{
  "id": 0,
  "name": "string",
  "is_displayed": true
}
POST /asset-type/
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

id integer required

A unique integer value identifying this asset type.

Body Parameters

No parameters.

Returns

Path Parameters
GET /asset-type/{id}/
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

id integer required

A unique integer value identifying this asset type.

Body Parameters

name string required

Name of the asset type. Required.

is_displayed boolean

Whether this asset type appears as a selectable option in the UI. True means it is shown.

Returns

Path Parameters
Body
{
  "name": "string",
  "is_displayed": true
}
PUT /asset-type/{id}/
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

id integer required

A unique integer value identifying this asset type.

Body Parameters

No parameters.

Returns

Path Parameters
DELETE /asset-type/{id}/
curl -X DELETE 'https://track.poc.mqlocate.net/api/v1.0/asset-type/{id}/'

Buildings

Endpoints for querying buildings

Endpoints
  • GET/building/
  • GET/building/{id}/

The Buildings object

Attributes

type enum (string)
id integer

Unique identifier of the building.

geometry object
properties object
The Buildings object
{
  "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

campus integer

Filters to buildings belonging to this campus's numeric ID. Optional.

campus_db_id__in array of numbers

Filters to buildings belonging to these campus IDs. Comma-separated. Optional.

format string

Response format override. Optional. Allowed values: csv, json.

id__in array of integers

Filters to buildings with these numeric IDs. Comma-separated. Optional.

last_sync_status__in array of strings

Filters to buildings with these last external sync outcomes (SUCCESS, FAILURE, NOT_SYNCED). Comma-separated. Optional.

ordering string

Which field to use when ordering the results.

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

pause_alerts boolean

Filters to buildings whose active maintenance-window BuildingProfile has alerts paused (true) or not (false). Optional.

pause_integrations boolean

Filters to buildings whose active maintenance-window BuildingProfile has integrations paused (true) or not (false). Optional.

search string

A search term.

Body Parameters

No parameters.

Returns

Query Parameters
GET /building/
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

id integer required

A unique integer value identifying this building.

Query Parameters

format string

Response format override. Optional. Allowed values: csv, json.

Body Parameters

No parameters.

Returns

Path Parameters
Query Parameters
GET /building/{id}/
curl 'https://track.poc.mqlocate.net/api/v1.0/building/{id}/'

Building Roll Ups

Endpoints for building location roll up summaries

Endpoints
  • GET/building-roll-up/

The Building Roll Ups object

Attributes

type enum (string)
id integer

Unique identifier of the building.

geometry object
properties object
The Building Roll Ups object
{
  "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

campus_db_id integer

Filters to building roll-ups belonging to this campus ID. Optional.

id integer

Filters to the building roll-up with this exact numeric ID. Optional.

ordering string

Which field to use when ordering the results.

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

search string

A search term.

Body Parameters

No parameters.

Returns

Query Parameters
GET /building-roll-up/
curl 'https://track.poc.mqlocate.net/api/v1.0/building-roll-up/'

Campuses

Endpoints for querying campuses

Endpoints
  • GET/campus/
  • GET/campus/{id}/

The Campuses object

Attributes

type enum (string)
id integer

Unique identifier of the campus.

geometry object
properties object
The Campuses object
{
  "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

id__in array of integers

Filters to campuses with these numeric IDs. Comma-separated. Optional.

ordering string

Which field to use when ordering the results.

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

search string

A search term.

Body Parameters

No parameters.

Returns

Query Parameters
GET /campus/
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

id integer required

A unique integer value identifying this campus.

Body Parameters

No parameters.

Returns

Path Parameters
GET /campus/{id}/
curl 'https://track.poc.mqlocate.net/api/v1.0/campus/{id}/'

Campus Roll Ups

Endpoints for campus location roll up summaries

Endpoints
  • GET/campus-roll-up/

The Campus Roll Ups object

Attributes

type enum (string)
id integer

Unique identifier of the campus.

geometry object
properties object
The Campus Roll Ups object
{
  "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

id integer

Filters to the campus roll-up with this exact numeric ID. Optional.

ordering string

Which field to use when ordering the results.

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

search string

A search term.

Body Parameters

No parameters.

Returns

Query Parameters
GET /campus-roll-up/
curl 'https://track.poc.mqlocate.net/api/v1.0/campus-roll-up/'

Devices

Endpoints for querying devices

Endpoints
  • GET/device/
  • GET/device/{id}/

The Devices object

Attributes

id integer

Unique identifier of the device.

device_id string

Hardware identifier of the device (e.g. Dev EUI). Required.

description string

Human-readable description of the device. Required.

mac_address string

MAC address of the device. Optional; auto-generated from device_id if not supplied.

battery_level integer

Most recently reported battery level. Optional; null if not reported.

last_reported_at string (date-time)

Timestamp of the last report from the device, in RFC 3339 format. Optional; null if never reported.

installed_date string (date-time)

Timestamp the device was installed, in RFC 3339 format. Optional; null if not set.

confidence object

Precision of the device's last reported location: CAMPUS, BUILDING, FLOOR, ROOM, or ZONE. Optional; null if not located.

  • CAMPUS - Campus
  • BUILDING - Building
  • FLOOR - Floor
  • ROOM - Room
  • ZONE - Zone
status string

Runtime connectivity state of the device: OFFLINE, ACTIVE, READY_TO_CONNECT, or UNKNOWN.

  • OFFLINE - Offline
  • ACTIVE - Active
  • READY_TO_CONNECT - Ready to Connect
  • UNKNOWN - Unknown
firmware_version string

Firmware version running on the device. Optional; null if unknown.

device_model_id integer

ID of the catalog/SKU-level device model this device is an instance of. Required.

device_model object

Catalog/SKU-level device model this device is an instance of.

sensors array of objects

Sensors attached to this device.

version integer

Optimistic-locking revision counter, incremented on every update.

asset array of objects

Asset(s) this device is currently paired to.

properties

Free-form JSON properties for the device, validated against the device model's properties_schema. Optional; null if not set.

is_installed boolean

Whether the device has completed the installation flow. True means installed.

installer string

Name of the person who installed the device. Optional; null if not set.

installation_notes array of objects

Installation notes recorded for this device.

installation_photos array of objects

Installation photos recorded for this device.

device_location object

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.

last_synced_at string (date-time)

Timestamp of the last external sync attempt, in RFC 3339 format. Optional; null if never synced.

last_sync_status string

Outcome of the last external sync attempt: SUCCESS, FAILURE, or NOT_SYNCED.

  • SUCCESS - Success
  • FAILURE - Failure
  • NOT_SYNCED - Not Synced
The Devices object
{
  "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

asset_db_id integer

Filters to devices paired to this asset ID. Optional.

asset_db_id__isnull boolean

Filters to devices with (false) or without (true) a paired asset. Optional.

battery_level__lte integer

Filters to devices with a battery level at or below this value. Optional.

building_db_id__in array of numbers

Filters to devices whose currently-active location's building ID is in this comma-separated list. Optional.

campus_db_id__in array of numbers

Filters to devices whose currently-active location's campus ID is in this comma-separated list. Optional.

device_id string

Filters to the device with this hardware identifier (case-insensitive, normalized to uppercase). Optional.

device_model_db_id__in array of integers

Filters to devices belonging to these device model IDs. Comma-separated. Optional.

floor_db_id__in array of numbers

Filters to devices whose currently-active location's floor ID is in this comma-separated list. Optional.

format string

Response format override. Optional. Allowed values: csv, json.

id__in array of integers

Filters to devices with these numeric IDs. Comma-separated. Optional.

installed_date__gte string

Filters to devices installed at or after this timestamp, in RFC 3339 format. Optional.

installed_date__lte string

Filters to devices installed at or before this timestamp, in RFC 3339 format. Optional.

ordering string

Which field to use when ordering the results.

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

room_db_id__in array of numbers

Filters to devices whose currently-active location's room ID is in this comma-separated list. Optional.

search string

Free-text search across device_id, description, device model name, status, last_reported_at, and active location descriptions. Optional.

sensor_type__in array of strings

Filters to devices with an attached sensor whose sensor type name is in this comma-separated list. Optional.

status__in array of strings

Filters to devices whose status (OFFLINE, ACTIVE, READY_TO_CONNECT, UNKNOWN) is in this comma-separated list. Optional.

zone_db_id__in array of numbers

Filters to devices whose currently-active location's zone ID is in this comma-separated list. Optional.

Body Parameters

No parameters.

Returns

Query Parameters
GET /device/
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

id integer required

A unique integer value identifying this device.

Query Parameters

format string

Response format override. Optional. Allowed values: csv, json.

Body Parameters

No parameters.

Returns

Path Parameters
Query Parameters
GET /device/{id}/
curl 'https://track.poc.mqlocate.net/api/v1.0/device/{id}/'

Device Models

Endpoints for querying device models

Endpoints
  • GET/device-model/
  • GET/device-model/{id}/
  • GET/device-model/dev-eui/{dev_eui}

The Device Models object

Attributes

id integer

Unique identifier of the device model.

name string

Name of the device model. Required.

firmware_version string

Default firmware version for devices of this model. Optional; null if unset.

sku string

Unique manufacturer SKU for the device model. Required.

manufacturer string

Manufacturer of the device model. Optional; null if not set.

model string

Manufacturer model name of the device model. Optional; null if not set.

sensor_models array of objects

Sensor models this device model supports, each annotated with is_default_selection. Computed live from the DeviceModelSensorModel through-table, not stored.

setup_action_type string

Installation/pairing workflow used for devices of this model: TAG or DEVICE.

  • TAG - Tag
  • DEVICE - Device
version integer

Optimistic-locking revision counter, incremented on every update.

indoor_outdoor string

Whether the device model is rated for indoor or outdoor use. Optional; null if not set.

led boolean

Whether devices of this model have an LED. True means LED-capable.

sleep_function boolean

Whether devices of this model support a low-power sleep mode. True means supported.

location_type string

Location-tracking method used by devices of this model. Optional; null if not set.

sounder boolean

Whether devices of this model have an audible sounder. True means sounder-capable.

tx_interval string

Default radio transmit interval for devices of this model. Optional; null if not set.

tx_power_config string

Default radio transmit power configuration for devices of this model. Optional; null if not set.

properties_schema

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.

The Device Models object
{
  "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

ordering string

Which field to use when ordering the results.

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

Body Parameters

No parameters.

Returns

Query Parameters
GET /device-model/
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

id integer required

A unique integer value identifying this device model.

Body Parameters

No parameters.

Returns

Path Parameters
GET /device-model/{id}/
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 Device already exists with that device_id, the API returns its device_model directly, but raises a 400 ValidationError if 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 to DeviceModels (manufacturer EUI blocks pre-assigned to specific models), returning 404 if no range matches.

Path Parameters

dev_eui string required

Hardware Dev EUI to resolve, normalized/uppercased and no more than 16 characters.

Body Parameters

No parameters.

Returns

Path Parameters
GET /device-model/dev-eui/{dev_eui}
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

Endpoints
  • GET/device-model-sensor-model/
  • GET/device-model-sensor-model/{id}/

The Device Model Sensor Models object

Attributes

id integer

Unique identifier of the association.

device_model_id integer

ID of the device model in this association. Required.

sensor_model_id integer

ID of the sensor model in this association. Required.

device_model object

Full device model in this association.

sensor_model object

Full sensor model in this association.

is_default_selection boolean

Whether this sensor model is pre-selected in the UI when a device of this model is provisioned. True means pre-selected.

The Device Model Sensor Models object
{
  "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

device_model_id float

Filters to associations for this device model ID. Optional.

ordering string

Which field to use when ordering the results.

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

Body Parameters

No parameters.

Returns

Query Parameters
GET /device-model-sensor-model/
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

id integer required

A unique integer value identifying this device model sensor model.

Body Parameters

No parameters.

Returns

Path Parameters
GET /device-model-sensor-model/{id}/
curl 'https://track.poc.mqlocate.net/api/v1.0/device-model-sensor-model/{id}/'

Endpoints

Endpoints for managing location message endpoints

Endpoints
  • GET/endpoint/
  • POST/endpoint/
  • GET/endpoint/{id}/
  • PUT/endpoint/{id}/
  • DELETE/endpoint/{id}/

The Endpoints object

Attributes

id integer

Unique identifier of the endpoint subscription.

base_url string

Base URL the platform POSTs to when the subscribed event fires; concatenated with extended_url to form the full delivery URL. Required.

extended_url string

URL path appended to base_url to form the full delivery URL. Optional; may be blank.

is_sap boolean

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.

event_type object

The single event type this endpoint subscribes to. Optional; null means the endpoint will not receive any events.

  • ASSET_LEFT_ROOM - Asset left room
  • ASSET_ARRIVED_ROOM - Asset arrived at room
  • ASSET_LEFT_FLOOR - Asset left floor
  • ASSET_ARRIVED_FLOOR - Asset arrived at floor
  • ASSET_LEFT_BUILDING - Asset left building
  • ASSET_ARRIVED_BUILDING - Asset arrived at building
  • ASSET_LEFT_CAMPUS - Asset left campus
  • ASSET_ARRIVED_CAMPUS - Asset arrived at campus
  • ASSET_MOVED - Asset moved
  • TAG_BATTERY_LOW - Tag battery low
  • DEVICE_BATTERY_LOW - Device battery low
  • DEVICE_STATUS_CHANGE - Device status change
  • MISSING_ASSET - Missing asset
  • BRIDGE_MISSING - Bridge missing
  • LED_ACTIVATED - Led activated
  • LED_ACTIVATION_FAILED - Led activation failed
  • ASSET_UNTAGGED - Asset untagged
  • LED_REQUEST - Led request
  • CONFIGURATION - configuration
  • ASSET_LOCATION_SYNC - Asset location sync
  • DAISY_CHAIN_OFFLINE - Daisy chain offline
  • DEVICE_OFFLINE - Device offline
  • SENSOR_THRESHOLD_TRIGGER - Sensor threshold trigger
  • SENSOR_THRESHOLD_CLEAR - Sensor threshold clear
  • SENSOR_DATA - Sensor data
enabled boolean

Whether this endpoint currently receives events. True means active.

The Endpoints object
{
  "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

event_type string

Filters to endpoint subscriptions for this exact event type. Optional.

ordering string

Which field to use when ordering the results.

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

Body Parameters

No parameters.

Returns

Query Parameters
GET /endpoint/
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

id integer required

Unique identifier of the endpoint subscription.

base_url string required

Base URL the platform POSTs to when the subscribed event fires; concatenated with extended_url to form the full delivery URL. Required.

extended_url string

URL path appended to base_url to form the full delivery URL. Optional; may be blank.

is_sap boolean

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.

event_type object

The single event type this endpoint subscribes to. Optional; null means the endpoint will not receive any events.

  • ASSET_LEFT_ROOM - Asset left room
  • ASSET_ARRIVED_ROOM - Asset arrived at room
  • ASSET_LEFT_FLOOR - Asset left floor
  • ASSET_ARRIVED_FLOOR - Asset arrived at floor
  • ASSET_LEFT_BUILDING - Asset left building
  • ASSET_ARRIVED_BUILDING - Asset arrived at building
  • ASSET_LEFT_CAMPUS - Asset left campus
  • ASSET_ARRIVED_CAMPUS - Asset arrived at campus
  • ASSET_MOVED - Asset moved
  • TAG_BATTERY_LOW - Tag battery low
  • DEVICE_BATTERY_LOW - Device battery low
  • DEVICE_STATUS_CHANGE - Device status change
  • MISSING_ASSET - Missing asset
  • BRIDGE_MISSING - Bridge missing
  • LED_ACTIVATED - Led activated
  • LED_ACTIVATION_FAILED - Led activation failed
  • ASSET_UNTAGGED - Asset untagged
  • LED_REQUEST - Led request
  • CONFIGURATION - configuration
  • ASSET_LOCATION_SYNC - Asset location sync
  • DAISY_CHAIN_OFFLINE - Daisy chain offline
  • DEVICE_OFFLINE - Device offline
  • SENSOR_THRESHOLD_TRIGGER - Sensor threshold trigger
  • SENSOR_THRESHOLD_CLEAR - Sensor threshold clear
  • SENSOR_DATA - Sensor data
enabled boolean

Whether this endpoint currently receives events. True means active.

Returns

Body
{
  "id": 0,
  "base_url": "string",
  "extended_url": "string",
  "is_sap": true,
  "event_type": "",
  "enabled": true
}
POST /endpoint/
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

id integer required

A unique integer value identifying this endpoint.

Body Parameters

No parameters.

Returns

Path Parameters
GET /endpoint/{id}/
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

id integer required

A unique integer value identifying this endpoint.

Body Parameters

base_url string required

Base URL the platform POSTs to when the subscribed event fires; concatenated with extended_url to form the full delivery URL. Required.

extended_url string

URL path appended to base_url to form the full delivery URL. Optional; may be blank.

is_sap boolean

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.

event_type object

The single event type this endpoint subscribes to. Optional; null means the endpoint will not receive any events.

  • ASSET_LEFT_ROOM - Asset left room
  • ASSET_ARRIVED_ROOM - Asset arrived at room
  • ASSET_LEFT_FLOOR - Asset left floor
  • ASSET_ARRIVED_FLOOR - Asset arrived at floor
  • ASSET_LEFT_BUILDING - Asset left building
  • ASSET_ARRIVED_BUILDING - Asset arrived at building
  • ASSET_LEFT_CAMPUS - Asset left campus
  • ASSET_ARRIVED_CAMPUS - Asset arrived at campus
  • ASSET_MOVED - Asset moved
  • TAG_BATTERY_LOW - Tag battery low
  • DEVICE_BATTERY_LOW - Device battery low
  • DEVICE_STATUS_CHANGE - Device status change
  • MISSING_ASSET - Missing asset
  • BRIDGE_MISSING - Bridge missing
  • LED_ACTIVATED - Led activated
  • LED_ACTIVATION_FAILED - Led activation failed
  • ASSET_UNTAGGED - Asset untagged
  • LED_REQUEST - Led request
  • CONFIGURATION - configuration
  • ASSET_LOCATION_SYNC - Asset location sync
  • DAISY_CHAIN_OFFLINE - Daisy chain offline
  • DEVICE_OFFLINE - Device offline
  • SENSOR_THRESHOLD_TRIGGER - Sensor threshold trigger
  • SENSOR_THRESHOLD_CLEAR - Sensor threshold clear
  • SENSOR_DATA - Sensor data
enabled boolean

Whether this endpoint currently receives events. True means active.

Returns

Path Parameters
Body
{
  "base_url": "string",
  "extended_url": "string",
  "is_sap": true,
  "event_type": "",
  "enabled": true
}
PUT /endpoint/{id}/
curl -X PUT 'https://track.poc.mqlocate.net/api/v1.0/endpoint/{id}/'

Deletes a webhook endpoint

Deletes a webhook endpoint subscription.

Path Parameters

id integer required

A unique integer value identifying this endpoint.

Body Parameters

No parameters.

Returns

Path Parameters
DELETE /endpoint/{id}/
curl -X DELETE 'https://track.poc.mqlocate.net/api/v1.0/endpoint/{id}/'

Floors

Endpoints for querying floors

Endpoints
  • GET/floor/
  • GET/floor/{id}/

The Floors object

Attributes

type enum (string)
id integer

Unique identifier of the floor.

geometry object
properties object
The Floors object
{
  "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

building integer

Filters to floors belonging to this building ID. Optional.

building_db_id float

Filters to floors belonging to this building ID. Optional.

building_db_id__in array of numbers

Filters to floors belonging to these building IDs. Comma-separated. Optional.

floor_description string

Filters to the floor with this exact human-readable name. Optional.

floor_id string

Filters to the floor with this exact text code. Optional.

format string

Response format override. Optional. Allowed values: csv, json.

id__in array of integers

Filters to floors with these numeric IDs. Comma-separated. Optional.

ordering string

Which field to use when ordering the results.

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

room integer

Filters to the floor containing this room ID. Optional.

search string

A search term.

Body Parameters

No parameters.

Returns

Query Parameters
GET /floor/
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

id integer required

A unique integer value identifying this floor.

Query Parameters

format string

Response format override. Optional. Allowed values: csv, json.

Body Parameters

No parameters.

Returns

Path Parameters
Query Parameters
GET /floor/{id}/
curl 'https://track.poc.mqlocate.net/api/v1.0/floor/{id}/'

Floor Roll Ups

Endpoints for floor location roll up summaries

Endpoints
  • GET/floor-roll-up/

The Floor Roll Ups object

Attributes

type enum (string)
id integer

Unique identifier of the floor.

geometry object
properties object
The Floor Roll Ups object
{
  "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

building_db_id integer

Filters to floor roll-ups belonging to this building ID. Optional.

id integer

Filters to the floor roll-up with this exact numeric ID. Optional.

ordering string

Which field to use when ordering the results.

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

search string

A search term.

Body Parameters

No parameters.

Returns

Query Parameters
GET /floor-roll-up/
curl 'https://track.poc.mqlocate.net/api/v1.0/floor-roll-up/'

Gateways

Endpoints for querying gateways

Endpoints
  • GET/gateway/

The Gateways object

Attributes

id integer

Unique identifier of the gateway.

node_id string

Unique 16-character alphanumeric hardware node identifier. Required.

description string

Human-readable description of the gateway. Required.

gateway_model integer

ID of the catalog/SKU-level gateway model this gateway is an instance of. Required.

gateway_model_name string

Name of the catalog/SKU-level gateway model this gateway is an instance of.

mac_address string

MAC address of the gateway. Optional; inferred from node_id if not supplied.

battery_level integer

Most recently reported battery level. Optional; null since most gateways are mains/PoE powered.

last_reported_at string (date-time)

Timestamp of the last report from the gateway, in RFC 3339 format. Optional; null if never reported.

installer string

Name of the person who installed the gateway. Optional; null if not set.

status object

Runtime connectivity state of the gateway: OFFLINE, ACTIVE, READY_TO_CONNECT, or UNKNOWN.

  • OFFLINE - Offline
  • ACTIVE - Active
  • READY_TO_CONNECT - Ready to Connect
  • UNKNOWN - Unknown
install_status object

Installation workflow state of the gateway: AWAITING_PHOTOS or COMPLETED. Automatically becomes COMPLETED when the first installation photo is uploaded.

  • AWAITING_PHOTOS - Awaiting Photos
  • COMPLETED - Completed
  • UNKNOWN - Unknown
backhaul string

How the gateway reaches the internet: CELLULAR, ETHERNET, or UNKNOWN.

  • CELLULAR - Cellular
  • ETHERNET - Ethernet
  • UNKNOWN - Unknown
firmware_version string

Firmware version running on the gateway. Optional; null if unknown.

imei string

Cellular modem hardware identifier, relevant when backhaul is CELLULAR. Optional; null if not applicable.

region string

Regional/geographic designation for radio compliance. Optional; null if not set.

is_installed boolean

Whether the gateway has completed the installation flow. True means installed.

antenna_gain integer

Radio antenna gain value, an RF tuning parameter. Optional; null if not set.

properties

Free-form JSON properties for the gateway, validated against the gateway model's properties_schema. Optional; null if not set.

version integer

Optimistic-locking revision counter, incremented on every update.

installed_date string (date-time)

Timestamp the gateway was installed, in RFC 3339 format. Optional; null if not set.

campus_description string

Human-readable name of the gateway's latest reported campus. Computed live from the latest GatewayLocation, not stored. Null if never located.

building_description string

Human-readable name of the gateway's latest reported building. Computed live, not stored. Null if never located.

floor_description string

Human-readable name of the gateway's latest reported floor. Computed live, not stored. Null if never located.

room_description string

Human-readable name of the gateway's latest reported room. Computed live, not stored. Null if never located.

zone_description string

Human-readable name of the gateway's latest reported zone. Computed live, not stored. Null if never located.

installation_photos array of objects

Installation photos recorded for this gateway.

installation_notes array of objects

Installation notes recorded for this gateway.

installation_notes_delta object

Add/delete delta for installation notes, applied atomically on update. Optional.

installation_photos_delta object

Delete delta for installation photos, applied atomically on update. Optional.

last_synced_at string (date-time)

Timestamp of the last external sync attempt, in RFC 3339 format. Optional; null if never synced.

last_sync_status string

Outcome of the last external sync attempt: SUCCESS, FAILURE, or NOT_SYNCED.

  • SUCCESS - Success
  • FAILURE - Failure
  • NOT_SYNCED - Not Synced
The Gateways object
{
  "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 when backhaul=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

backhaul__in array of strings

Filters to gateways whose backhaul (CELLULAR, ETHERNET, UNKNOWN) is in this comma-separated list. Optional.

battery_level_max integer

Filters to gateways with a battery level within this range (min,max). Optional.

battery_level_min integer

Filters to gateways with a battery level within this range (min,max). Optional.

building_db_id float

Filters to gateways whose latest reported building ID matches. Optional.

building_db_id__in array of numbers

Filters to gateways whose latest reported building ID is in this comma-separated list. Optional.

campus_db_id float

Filters to gateways whose latest reported campus ID matches. Optional.

campus_db_id__in array of numbers

Filters to gateways whose latest reported campus ID is in this comma-separated list. Optional.

description string

Filters to gateways whose description contains this text (case-insensitive). Optional.

description__icontains string

Filters to gateways whose description contains this text (case-insensitive). Optional. Equivalent to description.

floor_db_id float

Filters to gateways whose latest reported floor ID matches. Optional.

floor_db_id__in array of numbers

Filters to gateways whose latest reported floor ID is in this comma-separated list. Optional.

format string

Response format override. Optional. Allowed values: csv, json.

gateway_model_db_id__in array of numbers

Filters to gateways belonging to these gateway model IDs. Comma-separated. Optional.

gateway_model_id float

Filters to gateways belonging to this exact gateway model ID. Optional.

id__in array of integers

Filters to gateways with these numeric IDs. Comma-separated. Optional.

install_status__in array of strings

Filters to gateways whose install_status (AWAITING_PHOTOS, COMPLETED, UNKNOWN) is in this comma-separated list. Optional.

installed_date__gte string

Filters to gateways installed at or after this timestamp, in RFC 3339 format. Optional.

installed_date__lte string

Filters to gateways installed at or before this timestamp, in RFC 3339 format. Optional.

is_installed boolean

Filters to gateways that have (true) or have not (false) completed the installation flow. Optional.

last_reported_at__gte string

Filters to gateways that last reported at or after this timestamp, in RFC 3339 format. Optional.

last_reported_at__lte string

Filters to gateways that last reported at or before this timestamp, in RFC 3339 format. Optional.

mac_address string

Filters to gateways whose MAC address contains this text (case-insensitive). Optional.

mac_address__icontains string

Filters to gateways whose MAC address contains this text (case-insensitive). Optional. Equivalent to mac_address.

node_id string

Filters to gateways whose node_id contains this text (case-insensitive). Optional.

ordering string

Which field to use when ordering the results.

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

region string

Filters to gateways whose region contains this text (case-insensitive). Optional.

region__icontains string

Filters to gateways whose region contains this text (case-insensitive). Optional. Equivalent to region.

room_db_id float

Filters to gateways whose latest reported room ID matches. Optional.

room_db_id__in array of numbers

Filters to gateways whose latest reported room ID is in this comma-separated list. Optional.

search string

A search term.

status__in array of strings

Filters to gateways whose status (OFFLINE, ACTIVE, READY_TO_CONNECT, UNKNOWN) is in this comma-separated list. Optional.

zone_db_id float

Filters to gateways whose latest reported zone ID matches. Optional.

zone_db_id__in array of numbers

Filters to gateways whose latest reported zone ID is in this comma-separated list. Optional.

Body Parameters

No parameters.

Returns

Query Parameters
GET /gateway/
curl 'https://track.poc.mqlocate.net/api/v1.0/gateway/'

Integrations

Endpoints for third party integrations

Endpoints
  • 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

building_description string

Filters to intervals whose asset's current building name contains this text (case-insensitive). Optional.

building_id string

Filters to intervals whose asset's current building text code matches exactly (case-insensitive). Optional.

campus_description string

Filters to intervals whose asset's current campus name contains this text (case-insensitive). Optional.

campus_id string

Filters to intervals whose asset's current campus text code matches exactly (case-insensitive). Optional.

customer_reference string

Filters to intervals whose asset's customer_reference contains this text (case-insensitive). Optional.

end_date__gte string

Filters to utilization intervals ending at or after this timestamp, in RFC 3339 format. Optional.

end_date__lte string

Filters to utilization intervals ending at or before this timestamp, in RFC 3339 format. Optional.

floor_description string

Filters to intervals whose asset's current floor name contains this text (case-insensitive). Optional.

floor_id string

Filters to intervals whose asset's current floor text code matches exactly (case-insensitive). Optional.

ordering string

Which field to use when ordering the results.

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

room_description string

Filters to intervals whose asset's current room name contains this text (case-insensitive). Optional.

room_id string

Filters to intervals whose asset's current room text code matches exactly (case-insensitive). Optional.

start_date__gte string

Filters to utilization intervals starting at or after this timestamp, in RFC 3339 format. Optional.

start_date__lte string

Filters to utilization intervals starting at or before this timestamp, in RFC 3339 format. Optional.

Body Parameters

No parameters.

Returns

Query Parameters
GET /integrations/asset-utilization-lite/
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

customer_reference string required

Unique, customer/SAP-supplied identifier of the asset(s) to delete.

Body Parameters

No parameters.

Returns

Path Parameters
DELETE /integrations/asset/{customer_reference}
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

customer_reference string required

Unique, customer/SAP-supplied identifier of the asset.

Body Parameters

No parameters.

Returns

Path Parameters
POST /integrations/asset/{customer_reference}/led/activate
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

customer_reference string required

Unique, customer/SAP-supplied identifier of the asset.

Body Parameters

No parameters.

Returns

Path Parameters
GET /integrations/asset/{customer_reference}/location
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

customer_reference string required

Unique external identifier used to find/create the asset. Required.

description string required

Description of the asset. Required.

manufacturer string

Manufacturer name. Optional.

model_number string

Manufacturer model number. Optional.

serial_number string

Manufacturer serial number. Optional.

customer_properties

Arbitrary customer-defined JSON object. Optional; a JSON-encoded string is also accepted and parsed.

asset_type string

Asset type name, not ID. Optional; auto-created if not found.

asset_owner string

Asset owner name, not ID. Optional; auto-created if not found.

Returns

Body
{
  "customer_reference": "string",
  "description": "string",
  "manufacturer": "string",
  "model_number": "string",
  "serial_number": "string",
  "customer_properties": "",
  "asset_type": "string",
  "asset_owner": "string"
}
POST /integrations/asset/upsert
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

asset_db_id integer

Filters to readings associated with this asset ID. Optional.

building_db_id integer

Filters to readings in this building ID. Optional.

building_description string

Filters to readings with this exact building name. Optional.

campus_description string

Filters to readings with this exact campus name. Optional.

campus_id string

Filters to readings with this exact campus text code. Optional.

customer_reference string

Filters to readings whose associated asset has this exact customer_reference. Optional.

device_db_id integer

Filters to readings from this device ID. Optional.

device_id string

Filters to readings from the device with this exact hardware identifier. Optional.

floor_db_id integer

Filters to readings on this floor ID. Optional.

floor_description string

Filters to readings with this exact floor name. Optional.

is_alert_state boolean

Filters to readings in (true) or not in (false) an alert state. Optional.

ordering string

Which field to use when ordering the results.

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

room_db_id integer

Filters to readings in this room ID. Optional.

room_description string

Filters to readings with this exact room name. Optional.

search string

A search term.

sensor_type__in array of strings

Filters to readings whose sensor type name is in this comma-separated list. Optional.

timestamp__gte string

Filters to readings recorded at or after this timestamp, in RFC 3339 format. Optional.

timestamp__lte string

Filters to readings recorded at or before this timestamp, in RFC 3339 format. Optional.

Body Parameters

No parameters.

Returns

Query Parameters
GET /integrations/sensor-data-lite
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

customer_references array of strings

Specific asset customer_references to sync. Optional; takes priority over from_date if both are given.

from_date string

Syncs assets updated on or after this date. Optional, and ignored if customer_references is given.

Returns

Body
{
  "customer_references": [
    "string"
  ],
  "from_date": "string"
}
POST /integrations/sync-asset-location
curl -X POST 'https://track.poc.mqlocate.net/api/v1.0/integrations/sync-asset-location'

Rooms

Endpoints for querying rooms

Endpoints
  • GET/room/
  • GET/room/{id}/

The Rooms object

Attributes

type enum (string)
id integer

Unique identifier of the room.

geometry object
properties object
The Rooms object
{
  "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

building integer

Filters to rooms belonging to this building ID. Ignored if floor is also supplied. Optional.

building_db_id__in array of numbers

Filters to rooms belonging to these building IDs. Comma-separated. Optional.

floor integer

Filters to rooms belonging to this floor ID. Takes priority over building if both are supplied. Optional.

floor_db_id__in array of numbers

Filters to rooms belonging to these floor IDs. Comma-separated. Optional.

id__in array of integers

Filters to rooms with these numeric IDs. Comma-separated. Optional.

ordering string

Which field to use when ordering the results.

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

room_description string

Filters to the room with this exact human-readable name. Optional.

room_id string

Filters to the room with this exact text code. Optional.

search string

A search term.

Body Parameters

No parameters.

Returns

Query Parameters
GET /room/
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

id integer required

A unique integer value identifying this room.

Body Parameters

No parameters.

Returns

Path Parameters
GET /room/{id}/
curl 'https://track.poc.mqlocate.net/api/v1.0/room/{id}/'

Room Occupancies

Endpoints for room occupancy history

Endpoints
  • GET/room-occupancy/history/

The Room Occupancies object

Attributes

timestamp string (date-time)

Timestamp of the snapshot, in RFC 3339 format.

room_occupancy_history boolean

Whether the room was occupied at this timestamp. True means occupied.

The Room Occupancies object
{
  "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

room_db_id integer required

Numeric ID of the room to fetch occupancy history for. Required.

timestamp__gte string required

Includes only records at or after this timestamp, in RFC 3339 format. Required.

Body Parameters

No parameters.

Returns

Query Parameters
GET /room-occupancy/history/
curl 'https://track.poc.mqlocate.net/api/v1.0/room-occupancy/history/'

Room People Counts

Endpoints for room people count data and statistics

Endpoints
  • GET/room-people-count/
  • GET/room-people-count/history/
  • GET/room-people-count/stats/

The Room People Counts object

Attributes

id integer

Unique identifier of the people-count record.

room_id integer

Numeric foreign key of the room this record applies to (not the room's human-readable room_id text code).

timestamp string (date-time)

Timestamp the record was recorded, in RFC 3339 format.

total integer

Running total people count as of this record.

total_counter_in integer

Running total count of people who entered the room as of this record.

total_counter_out integer

Running total count of people who exited the room as of this record.

periodic_total integer

Net people count for just this period.

periodic_counter_in integer

Count of people who entered the room during this period.

periodic_counter_out integer

Count of people who exited the room during this period.

room_count_history integer

Snapshot people-count value recorded for the room at this timestamp.

The Room People Counts object
{
  "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

ordering string

Which field to use when ordering the results.

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

room_id float

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

Query Parameters
GET /room-people-count/
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

room_db_id integer required

Numeric ID of the room to fetch history for. Required.

timestamp__gte string required

Includes only records at or after this timestamp, in RFC 3339 format. Required.

Body Parameters

No parameters.

Returns

Query Parameters
GET /room-people-count/history/
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

length_of_time string required

Granularity to group and sum counts by. Required. Allowed values: day, month.

room_db_id integer required

Numeric ID of the room to fetch stats for. Required.

timezone string

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

Query Parameters
GET /room-people-count/stats/
curl 'https://track.poc.mqlocate.net/api/v1.0/room-people-count/stats/'

Room Roll Ups

Endpoints for room location roll up summaries

Endpoints
  • GET/room-roll-up/

The Room Roll Ups object

Attributes

type enum (string)
id integer

Unique identifier of the room.

geometry object
properties object
The Room Roll Ups object
{
  "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

floor_db_id integer

Filters to room roll-ups belonging to this floor ID. Optional.

id integer

Filters to the room roll-up with this exact numeric ID. Optional.

ordering string

Which field to use when ordering the results.

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

search string

A search term.

Body Parameters

No parameters.

Returns

Query Parameters
GET /room-roll-up/
curl 'https://track.poc.mqlocate.net/api/v1.0/room-roll-up/'

Sensor Models

Endpoints for querying sensor models

Endpoints
  • GET/sensor-model/
  • GET/sensor-model/{id}/

The Sensor Models object

Attributes

id integer

Unique identifier of the sensor model.

name string

Unique name of the sensor model. Required.

data_key string

JSON key this sensor model's readings live under in raw sensor data payloads. Required.

metadata

Arbitrary JSON metadata for the sensor model. Optional; null if not set.

sensor_type string

Name of the sensor type this sensor model measures. Required.

is_displayed boolean

Whether this sensor model appears in the UI. True means it is shown.

is_utilization_enabled boolean

Whether this sensor model can drive an asset's in-use/utilization state.

unit_of_measurement string

Unit the sensor model reports readings in, taken from the parent sensor type. Computed live, not stored.

is_continuous_alert_enabled boolean

Whether this sensor model supports continuous (not just threshold-crossing) alerting.

allowable_values

JSON enumeration of valid values for this sensor model (e.g. OPEN/CLOSED for a door sensor). Optional; null if unrestricted.

data_type string

Data type of readings for this sensor model: BOOLEAN, NUMERIC, COORDINATES, STRING, or UNKNOWN.

  • BOOLEAN - Boolean
  • NUMERIC - Numeric
  • COORDINATES - Coordinates
  • STRING - String
  • UNKNOWN - Unknown
properties_schema

JSON schema for validating the properties of this sensor model. Optional; null if unrestricted.

The Sensor Models object
{
  "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-Sensor configuration fields required for this sensor model, e.g. Isl/Ish/Osl/Osh scaling values for an analog input; validated against each Sensor's properties)

Query Parameters

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

Body Parameters

No parameters.

Returns

Query Parameters
GET /sensor-model/
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

id integer required

A unique integer value identifying this sensor model.

Body Parameters

No parameters.

Returns

Path Parameters
GET /sensor-model/{id}/
curl 'https://track.poc.mqlocate.net/api/v1.0/sensor-model/{id}/'

Sensor Types

Endpoints for querying sensor types

Endpoints
  • GET/sensor-type/
  • GET/sensor-type/{id}/

The Sensor Types object

Attributes

id integer

Unique identifier of the sensor type.

name string

Unique internal key for the sensor type. Required.

display_name string

Human-readable name of the sensor type. Required.

unit_of_measurement string

Unit the sensor type reports readings in (e.g. "°F"). Optional; blank if not applicable.

is_alertable boolean

Whether readings of this type support threshold-based alerting. True means alerting is supported.

The Sensor Types object
{
  "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

ordering string

Which field to use when ordering the results.

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

Body Parameters

No parameters.

Returns

Query Parameters
GET /sensor-type/
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

id integer required

A unique integer value identifying this sensor type.

Body Parameters

No parameters.

Returns

Path Parameters
GET /sensor-type/{id}/
curl 'https://track.poc.mqlocate.net/api/v1.0/sensor-type/{id}/'

Zones

Endpoints for querying zones

Endpoints
  • GET/zone/
  • GET/zone/{id}/

The Zones object

Attributes

type enum (string)
id integer

Unique identifier of the zone.

geometry object
properties object
The Zones object
{
  "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

floor_id string

Filters to zones belonging to the floor with this exact text code. Optional.

id__in array of integers

Filters to zones with these numeric IDs. Comma-separated. Optional.

ordering string

Which field to use when ordering the results.

page_num integer

A page number within the paginated result set.

page_size integer

Number of results to return per page.

room_db_id string

Filters to zones belonging to this room ID. Optional.

room_db_id__in array of numbers

Filters to zones belonging to these room IDs. Comma-separated. Optional.

room_id string

Filters to zones belonging to the room with this exact text code. Optional.

search string

A search term.

zone_description string

Filters to the zone with this human-readable name (case-insensitive exact match). Optional.

zone_id string

Filters to the zone with this exact text code. Optional.

Body Parameters

No parameters.

Returns

Query Parameters
GET /zone/
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

id integer required

A unique integer value identifying this zone.

Body Parameters

No parameters.

Returns

Path Parameters
GET /zone/{id}/
curl 'https://track.poc.mqlocate.net/api/v1.0/zone/{id}/'