Device preassignments API

Device preassignments endpoints in the Brix REST API: 3 operations (GET, POST, DELETE). Each lists its path, auth, required permission and a curl example.

View as Markdown · For AI agents: the full docs index is at /llms.txt

Base URL https://api.brixsignage.com. Send Authorization: Bearer $BRIX_API_KEY unless an operation says Auth: none or Auth: no API key. The Permission line names what the key must hold. See Authentication and scopes, Errors and rate limits and Pagination.

Every 4xx and 5xx response below returns this body:

FieldTypeDescription
errorstringMachine-readable code: unauthorized, forbidden, not_found, validation_error, conflict, rate_limited, internal_error, …
messagestringHuman-readable explanation. Safe to show an operator.
requestIdstringPresent on 5xx: quote it to support.

GET /v1/device-preassignments

Auth: Bearer token. Permission: screen.view.

List devices pre-assigned to locations in your workspace. Each entry shows the end of the device serial number, the location, the screen name, and whether the device is still waiting to be claimed or has already been claimed. Results are limited to the organization nodes you can see. Notes. - Carries available beside data.

curl "https://api.brixsignage.com/v1/device-preassignments" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200: Success.

FieldTypeDescription
dataarray of object
data[].idstring
data[].serialHintstring | nullThe last 4 characters of the serial. The full serial is not stored.
data[].nodeIdstring
data[].locationNamestring | null
data[].locationIdstring | nullThe location's own id (its Location ID), when set.
data[].namestring | null
data[].status"waiting" | "claimed"
data[].claimedAtstring | null
data[].claimedScreenIdstring | null
data[].createdAtstringISO-8601 timestamp (UTC).
availablebooleanFalse when the workspace's data region does not support pre-assignment yet (data is then empty).

Response 401: Missing, expired or revoked bearer token.

Response 403: The token lacks the permission this operation needs (see x-brix-permission).

Response 5XX: Server error. The body carries a requestId to quote to support.

POST /v1/device-preassignments

Auth: Bearer token. Permission: screen.create.

Pre-assign device serial numbers to locations, identified by Location ID or nodeId, so each device pairs automatically into its assigned location the first time it is plugged in. Submit up to 1000 rows in one request; all rows are validated before any are saved. Re-uploading the same rows is safe and does not create duplicates, and dryRun validates rows without saving them. A serial number already assigned to another workspace is refused with a conflict error, and the action is recorded in the activity log.

Request body: application/json

FieldTypeRequiredDescription
rowsarray of objectyes
rows[].serialstringyesThe device serial number.
rows[].locationIdstringnoThe location's Location ID (case-insensitive). Give this or nodeId.
rows[].nodeIdstringno
rows[].namestringnoScreen name; default: the location name and the serial's last 4 characters.
dryRunbooleannoTrue: check and report, change nothing (answers 200).
curl -X POST "https://api.brixsignage.com/v1/device-preassignments" \
  -H "Authorization: Bearer $BRIX_API_KEY" \
  -H "Content-Type: application/json"

Response 200: Success: a dry run (dryRun: true): the same report, nothing changed.

FieldTypeDescription
dataobject
data.dryRunboolean
data.countsobject
data.counts.claimedinteger
data.counts.createdinteger
data.counts.updatedinteger
data.counts.unchangedinteger
data.rowsarray of object
data.rows[].indexinteger
data.rows[].serialstringThe serial's last 4 characters.
data.rows[].outcome"claimed" | "created" | "updated" | "unchanged"
data.rows[].nodeIdstring
data.rows[].locationNamestring
data.rows[].locationIdstring | null
data.rows[].namestring

Response 201: Success.

FieldTypeDescription
dataobject
data.dryRunboolean
data.countsobject
data.counts.claimedinteger
data.counts.createdinteger
data.counts.updatedinteger
data.counts.unchangedinteger
data.rowsarray of object
data.rows[].indexinteger
data.rows[].serialstringThe serial's last 4 characters.
data.rows[].outcome"claimed" | "created" | "updated" | "unchanged"
data.rows[].nodeIdstring
data.rows[].locationNamestring
data.rows[].locationIdstring | null
data.rows[].namestring

Response 401: Missing, expired or revoked bearer token.

Response 403: The token lacks the permission this operation needs (see x-brix-permission).

Response 409: A serial is held by another workspace, or the data region does not support pre-assignment.

Response 422: No rows, too many rows, or a row is invalid; data.errors lists each by index and code.

Response 5XX: Server error. The body carries a requestId to quote to support.

DELETE /v1/device-preassignments/{id}

Auth: Bearer token. Permission: screen.create.

Cancel a pending device pre-assignment. If the device has already been claimed and turned into a screen, that screen is not affected. The action is recorded in the activity log.

ParameterInTypeRequiredDescription
idpathstringyesPre-assignment id.
curl -X DELETE "https://api.brixsignage.com/v1/device-preassignments/{id}" \
  -H "Authorization: Bearer $BRIX_API_KEY"

Response 200: Success.

FieldTypeDescription
dataobject
data.idstring
data.deletedtrue

Response 401: Missing, expired or revoked bearer token.

Response 403: The token lacks the permission this operation needs (see x-brix-permission).

Response 5XX: Server error. The body carries a requestId to quote to support.