Cross space shares API
Cross space shares endpoints in the Brix REST API: 3 operations (GET, POST, DELETE). Each lists its path, auth, required permission and a curl example.
Base URL https://api.brixsignage.com. Send Authorization: Bearer $BRIX_API_KEY unless an operation says No auth. The permission chip names what the key must hold. See Authentication and scopes, Errors and rate limits and Pagination.
GET/v1/cross-space-shares
List content this space shares into its child spaces, and content shared with it in turn. A space receiving a share can read it but cannot change or remove it. **Notes.** - Lists the shares this workspace RECEIVES (it is the target), not the ones it grants.
curl "https://api.brixsignage.com/v1/cross-space-shares" \
-H "Authorization: Bearer $BRIX_API_KEY" Response 200 Success.
| Field | Type | Description |
|---|---|---|
data | array of object | |
data[].id | string | |
data[].sourceSpaceId | string | The workspace that shares. |
data[].targetSpaceId | string | The child workspace that receives. |
data[].contentKind | string | `playlist`, `schedule`, `layout`, `creative`, `media`, … |
data[].contentId | string | |
data[].mode | "linked" | "snapshot" | Always `linked` for a new share: the child plays the parent's current version. |
data[].lockLevel | "playlist" | "items" | "both" | What the child cannot change. |
data[].lockedItemIds | string | A JSON-ENCODED array of item ids (the stored column), not an array. |
data[].grantedBy | string | The user who shared it; `system` for an API key. |
data[].grantedAt | string | ISO-8601 timestamp (UTC). |
data[].createdAt | string | ISO-8601 timestamp (UTC). |
data[].updatedAt | string | ISO-8601 timestamp (UTC). |
data[].deletedAt | string | null | |
data[].contentName | string | null | Null when the content no longer exists. |
data[].sourceSpaceName | string | null | |
data[].available | boolean | False when the shared content was deleted. |
Response 401 Missing, expired or revoked bearer token.
| 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. |
Response 403 The token lacks the permission this operation needs (see `x-brix-permission`).
| 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. |
Response 5XX Server error. The body carries a `requestId` to quote to support.
| 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. |
POST/v1/cross-space-shares
Share a playlist, layout, schedule, or creative from this space into a child space. The shared content appears in the child space alongside its own content. Only the space that owns the content can create the share. Requires view permission on shares plus the appropriate permission on the content itself.
**Notes.**
- Besides the playlist.view gate, the caller needs the content kind's edit permission at the content's location.
Request body application/json
| Field | Type | Required | Description |
|---|---|---|---|
targetSpaceId | string | yes | A child workspace of yours. |
contentKind | string | yes | |
contentId | string | yes | |
lockLevel | "playlist" | "items" | "both" | no | Default `both`. |
lockedItemIds | array of string | no | |
mode | string | no | Ignored: a share is always `linked`. |
curl -X POST "https://api.brixsignage.com/v1/cross-space-shares" \
-H "Authorization: Bearer $BRIX_API_KEY" \
-H "Content-Type: application/json" Response 200 Success: The content is already shared with that workspace: the existing share is returned.
| Field | Type | Description |
|---|---|---|
data | CrossSpaceShare | Content a parent workspace shares with a child workspace. |
data.id | string | |
data.sourceSpaceId | string | The workspace that shares. |
data.targetSpaceId | string | The child workspace that receives. |
data.contentKind | string | `playlist`, `schedule`, `layout`, `creative`, `media`, … |
data.contentId | string | |
data.mode | "linked" | "snapshot" | Always `linked` for a new share: the child plays the parent's current version. |
data.lockLevel | "playlist" | "items" | "both" | What the child cannot change. |
data.lockedItemIds | string | A JSON-ENCODED array of item ids (the stored column), not an array. |
data.grantedBy | string | The user who shared it; `system` for an API key. |
data.grantedAt | string | ISO-8601 timestamp (UTC). |
data.createdAt | string | ISO-8601 timestamp (UTC). |
data.updatedAt | string | ISO-8601 timestamp (UTC). |
data.deletedAt | string | null |
Response 201 Success.
| Field | Type | Description |
|---|---|---|
data | CrossSpaceShare | Content a parent workspace shares with a child workspace. |
data.id | string | |
data.sourceSpaceId | string | The workspace that shares. |
data.targetSpaceId | string | The child workspace that receives. |
data.contentKind | string | `playlist`, `schedule`, `layout`, `creative`, `media`, … |
data.contentId | string | |
data.mode | "linked" | "snapshot" | Always `linked` for a new share: the child plays the parent's current version. |
data.lockLevel | "playlist" | "items" | "both" | What the child cannot change. |
data.lockedItemIds | string | A JSON-ENCODED array of item ids (the stored column), not an array. |
data.grantedBy | string | The user who shared it; `system` for an API key. |
data.grantedAt | string | ISO-8601 timestamp (UTC). |
data.createdAt | string | ISO-8601 timestamp (UTC). |
data.updatedAt | string | ISO-8601 timestamp (UTC). |
data.deletedAt | string | null |
Response 401 Missing, expired or revoked bearer token.
| 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. |
Response 403 The target is not a child workspace of yours, or you lack the content kind's edit permission (`playlist.edit`, …) where it lives.
| 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. |
Response 404 No such content in your workspace.
| 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. |
Response 422 `targetSpaceId`, `contentKind` or `contentId` is missing.
| 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. |
Response 5XX Server error. The body carries a `requestId` to quote to support.
| 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. |
DELETE/v1/cross-space-shares/{id}
Withdraw a share. Only the space that created the share can remove it; the receiving space cannot. **Notes.** - Only the sharing workspace can revoke; it needs the content kind's edit permission too.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | Share id. |
curl -X DELETE "https://api.brixsignage.com/v1/cross-space-shares/{id}" \
-H "Authorization: Bearer $BRIX_API_KEY" Response 200 Success.
| Field | Type | Description |
|---|---|---|
data | object | |
data.id | string | |
data.revoked | true |
Response 401 Missing, expired or revoked bearer token.
| 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. |
Response 403 You lack the content kind's edit permission where the content lives.
| 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. |
Response 404 No such share granted by this workspace.
| 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. |
Response 5XX Server error. The body carries a `requestId` to quote to support.
| 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. |