---
title: "Update a column's display preferences"
method: PATCH
path: "/tables/{table_id}/columns/{column_id}/ui-prefs/"
tags: ["table-ui-prefs"]
---

# Update a column's display preferences

`PATCH /tables/{table_id}/columns/{column_id}/ui-prefs/`

## Request

- Base URL: `https://api.getoneprofile.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.getoneprofile.ai/tables/{table_id}/columns/{column_id}/ui-prefs/`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Partially update how one column is displayed: hidden, pinned, width, colour tint (omitted fields are left untouched). Hidden, pinned and width are the CALLING USER's own: they change this person's Default view and nobody else's, over the team's layout. The colour tint is shared by everyone in the organisation. A caller with no person behind it (an API key) sets the team's layout. Cosmetic only: this never touches the column definition, never bumps the columns change watermark, and never requests a recompute run. A request that sets nothing is a no-op and leaves the preferences watermark unmoved. Answers with the column's preferences as the caller now sees them.

## Path parameters

- `table_id` string, uuid, required
- `column_id` string, uuid, required

## Request body

- TableColumnUIPrefsUpdateSchema: Request body for updating a column's display preferences (tri-state PATCH).
  - `color` union: New palette token, the same for everyone. Set to null to clear the tint.
    - 'gray' | 'red' | 'orange' | 'amber' | 'green' | 'blue' | 'purple' | 'pink': Semantic tint token, shared by a column and by a column GROUP. Stored as a token rather than a hex value because the grid renders in both a light and a dark theme, and a single stored colour is only legible in one of them. The client maps each token to a per-mode value. Deliberately excludes teal: the brand primary is used for range selection and the anchor outline, so a teal column would read as permanently selected. Lives HERE rather than in ``table_column_prefs``, where it started, because two domains now need it and the layering only allows one direction. A column's tint is stored in ``table_column_prefs`` (org-shared appearance, keyed by column) while a group's is a field on the group row itself in ``table_column``, and ``table_column_prefs`` sits ABOVE ``table_column`` in the domain layers, so the token had to move DOWN to be reachable from both. ``table_column_prefs.types`` re-exports it, which is why that move touched no existing import. One enum for both on purpose: a colour token is a shared vocabulary (a team agreeing that amber means "needs review" is agreeing about it across columns and groups alike) and the organisation's renaming of the palette (``table_column_color_labels``) is keyed by this token, so a second enum would give groups colours the rename dialog could not name.
    - unknown
  - `hidden` union: Hide the column from the grid, or show it. A signed-in person's choice is their own and stays theirs over the team's; an API key sets the team's.
    - boolean
    - unknown
  - `pinned` union: Pin the column to the left edge, or unpin it. A signed-in person's choice is their own and stays theirs over the team's; an API key sets the team's.
    - boolean
    - unknown
  - `width` union: New width in pixels, for a signed-in person their own. Null makes a person's column follow the team's width again; from an API key it restores the client default for the team.
    - integer
    - unknown

## Response `200`

Successful Response

- TableColumnUIPrefsSchema: How one column is displayed to the caller. Hidden, pinned and width are the caller's own where they set one, laid over the team's; the colour tint is the team's. An API key sees the team's alone. Always present on a column, whether or not anything has been customised: a column nobody has touched reports the defaults rather than null.
  - `color` 'gray' | 'red' | 'orange' | 'amber' | 'green' | 'blue' | 'purple' | 'pink', required: Semantic tint token, shared by a column and by a column GROUP. Stored as a token rather than a hex value because the grid renders in both a light and a dark theme, and a single stored colour is only legible in one of them. The client maps each token to a per-mode value. Deliberately excludes teal: the brand primary is used for range selection and the anchor outline, so a teal column would read as permanently selected. Lives HERE rather than in ``table_column_prefs``, where it started, because two domains now need it and the layering only allows one direction. A column's tint is stored in ``table_column_prefs`` (org-shared appearance, keyed by column) while a group's is a field on the group row itself in ``table_column``, and ``table_column_prefs`` sits ABOVE ``table_column`` in the domain layers, so the token had to move DOWN to be reachable from both. ``table_column_prefs.types`` re-exports it, which is why that move touched no existing import. One enum for both on purpose: a colour token is a shared vocabulary (a team agreeing that amber means "needs review" is agreeing about it across columns and groups alike) and the organisation's renaming of the palette (``table_column_color_labels``) is keyed by this token, so a second enum would give groups colours the rename dialog could not name.
  - `hidden` boolean, required: Whether the grid omits the column; its cell values are untouched.
  - `pinned` boolean, required: Whether the column is frozen to the left edge through horizontal scroll.
  - `width` integer, nullable, required: Rendered width in pixels; null means the client default.

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Table column not found
- `422`: Invalid request made to the API.
- `500`: Internal server error.
- `502`: Bad gateway error.
- `503`: Service unavailable.

---

[API](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile.md) · [All operations](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/llms.txt) · [OpenAPI document](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/revisions/4a6bd71e3f02?raw)
