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:
| Field | Type | Description |
|---|---|---|
error | string | Machine-readable code: unauthorized, forbidden, not_found, validation_error, conflict, rate_limited, internal_error, … |
message | string | Human-readable explanation. Safe to show an operator. |
requestId | string | Present on 5xx: quote it to support. |
GET /v1/device-preassignments
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.
| Field | Type | Description |
|---|---|---|
data | array of object | |
data[].id | string | |
data[].serialHint | string | null | The last 4 characters of the serial. The full serial is not stored. |
data[].nodeId | string | |
data[].locationName | string | null | |
data[].locationId | string | null | The location's own id (its Location ID), when set. |
data[].name | string | null | |
data[].status | "waiting" | "claimed" | |
data[].claimedAt | string | null | |
data[].claimedScreenId | string | null | |
data[].createdAt | string | ISO-8601 timestamp (UTC). |
available | boolean | False 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
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
| Field | Type | Required | Description |
|---|---|---|---|
rows | array of object | yes | |
rows[].serial | string | yes | The device serial number. |
rows[].locationId | string | no | The location's Location ID (case-insensitive). Give this or nodeId. |
rows[].nodeId | string | no | |
rows[].name | string | no | Screen name; default: the location name and the serial's last 4 characters. |
dryRun | boolean | no | True: 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.
| Field | Type | Description |
|---|---|---|
data | object | |
data.dryRun | boolean | |
data.counts | object | |
data.counts.claimed | integer | |
data.counts.created | integer | |
data.counts.updated | integer | |
data.counts.unchanged | integer | |
data.rows | array of object | |
data.rows[].index | integer | |
data.rows[].serial | string | The serial's last 4 characters. |
data.rows[].outcome | "claimed" | "created" | "updated" | "unchanged" | |
data.rows[].nodeId | string | |
data.rows[].locationName | string | |
data.rows[].locationId | string | null | |
data.rows[].name | string |
Response 201: Success.
| Field | Type | Description |
|---|---|---|
data | object | |
data.dryRun | boolean | |
data.counts | object | |
data.counts.claimed | integer | |
data.counts.created | integer | |
data.counts.updated | integer | |
data.counts.unchanged | integer | |
data.rows | array of object | |
data.rows[].index | integer | |
data.rows[].serial | string | The serial's last 4 characters. |
data.rows[].outcome | "claimed" | "created" | "updated" | "unchanged" | |
data.rows[].nodeId | string | |
data.rows[].locationName | string | |
data.rows[].locationId | string | null | |
data.rows[].name | string |
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}
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.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | Pre-assignment id. |
curl -X DELETE "https://api.brixsignage.com/v1/device-preassignments/{id}" \
-H "Authorization: Bearer $BRIX_API_KEY" Response 200: Success.
| Field | Type | Description |
|---|---|---|
data | object | |
data.id | string | |
data.deleted | true |
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.