---
title: "Update a location"
method: PATCH
path: "/v1/org-nodes/{id}"
tags: ["org-nodes"]
---

# Update a location

`PATCH /v1/org-nodes/{id}`

## Request

- Base URL: `https://api.brixsignage.com`
- URL: `https://api.brixsignage.com/v1/org-nodes/{id}`
- Auth: HTTP bearer

Updates a location's name, parent location, approval configuration, or preferences. Moving a location to a new parent updates the path of every location beneath it.

Rename, re-code, move, or change inheritable settings. Only the fields sent change.

## Path parameters

- `id` string, required

## Request body

- object
  - `paysForItself` boolean: On: the location pays for its own screens and waits on the hold card until it adds a card. Off: the account pays for them and the location's payer is closed. Needs `billing.edit` at the workspace root.
  - `name` string
  - `parentId` string, nullable: Move under another location (null = the workspace root).
  - `externalId` string, nullable
  - `timezone` string, nullable: IANA zone, or null/empty to inherit.
  - `tier` integer
  - `prefs` object: Per-key: a value sets it, null clears it back to inherit, absent keeps it.
    - `location` object, nullable
      - `label` string, required
      - `lat` number, required
      - `lng` number, required
    - `language` string, nullable: BCP 47 tag, or null to inherit.
    - `defaultContent` object, nullable
      - `kind` 'playlist' | 'schedule' | 'layout' | 'creative' | 'app' | 'media' | 'signage', required
      - `id` string, required
  - `approval` ApprovalPolicy: The location's content-approval policy, as stored. New locations inherit `{required:false, inheritFromParent:true, …}`.
    - `required` boolean
    - `inheritFromParent` boolean
    - `escalateUpTiers` boolean
    - `allowSharedExemptions` boolean
    - `approvers` string[]: User ids named as approvers.
  - `approvalBase` ApprovalPolicy: The location's content-approval policy, as stored. New locations inherit `{required:false, inheritFromParent:true, …}`.
    - `required` boolean
    - `inheritFromParent` boolean
    - `escalateUpTiers` boolean
    - `allowSharedExemptions` boolean
    - `approvers` string[]: User ids named as approvers.
  - `billing` unknown
  - `featureOverrides` unknown

## Response `200`

Success.

- object
  - `data` Location, required: A location in the workspace tree (an org node).
    - `id` string, required: Location (org node) id.
    - `name` string, required
    - `parentId` string, nullable, required: Parent location; null for the workspace root.
    - `externalId` string, nullable, required: Your own location code (store number, region code). Unique in the workspace.
    - `timezone` string, nullable, required: IANA zone screens here inherit, e.g. `America/Chicago`.
    - `tier` integer, required: Depth: 1 = the workspace root.
    - `isSpace` boolean, required: True for a workspace (Space) boundary: the root, or a franchise child workspace.
    - `payment` 'awaiting' | 'live', nullable, required: A location that pays for itself: `awaiting` (its screens wait on the hold card for its card), `live` (its own payer pays). Null when the account pays.
    - `paymentTrial` 'card_added' | 'no_card', nullable, required: While the account is in its free trial the location plays like any trial location: `card_added` (its year starts when the trial ends) or `no_card` (it waits on the hold card from then). Null outside the trial.
    - `screenCount` integer, required: Screens placed directly at this location (not its children).
    - `members` object[], required: People granted a role at this location.
      - `userId` string, required
      - `userName` string, required
      - `roleId` string, required
      - `roleName` string, required
      - `roleColor` string, nullable, required
      - `source` string, nullable, required: `sso:<connectionId>` when an identity provider granted this; null when granted in Brix.
    - `featureOverrides` unknown, required
    - `approval` ApprovalPolicy, required: The location's content-approval policy, as stored. New locations inherit `{required:false, inheritFromParent:true, …}`.
      - `required` boolean
      - `inheritFromParent` boolean
      - `escalateUpTiers` boolean
      - `allowSharedExemptions` boolean
      - `approvers` string[]: User ids named as approvers.
    - `billing` unknown, required
    - `prefs` LocationPrefs, required: Inheritable per-location settings (nearest ancestor wins).
      - `location` object, nullable, required: Physical place screens here inherit (drives weather and other location-aware apps).
        - `label` string, required
        - `lat` number, required
        - `lng` number, required
      - `language` string, nullable, required: BCP 47 tag screens here inherit, e.g. `de-DE`.
      - `defaultContent` object, nullable, required: What screens here play when they have no content of their own.
        - `kind` 'playlist' | 'schedule' | 'layout' | 'creative' | 'app' | 'media' | 'signage', required
        - `id` string, required

## Other responses

- `401`: Missing, expired or revoked bearer token.
- `403`: Owner-only field, or a move you lack permission for at the destination.
- `404`: No such location in this workspace.
- `409`: `externalId` already used, or `approvalBase` no longer matches.
- `422`: Invalid field (a malformed `prefs`, moving a location under itself, unplayable default content).
- `5XX`: Server error. The body carries a `requestId` to quote to support.

---

[API](https://skmtc.dev/brixsignage/apis/brix-api.md) · [All operations](https://skmtc.dev/brixsignage/apis/brix-api/llms.txt) · [OpenAPI document](https://skmtc.dev/brixsignage/apis/brix-api/revisions/02fd3665dc7d?raw)
