Oneprofile Table UI Prefs API
Endpoints for org-shared per-column display preferences: hidden, pinned, width, and colour tint.
Endpoints for org-shared per-column display preferences: hidden, pinned, width, and colour tint.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/getoneprofile-ai:getoneprofile-ai-table-ui-prefs-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
contact:
email: support@getoneprofile.ai
name: Oneprofile Support
description: REST API reference for Oneprofile, the GTM data layer for your CRM. Manage tables, enrichments, and integrations. Authenticate with an API key to get started.
termsOfService: https://www.getoneprofile.ai/terms
title: Reference | Oneprofile Table UI Prefs API
version: 1.0.42765316646
tags:
- description: 'Endpoints for org-shared per-column display preferences: hidden, pinned, width, and colour tint.'
name: table-ui-prefs
paths:
/tables/{table_id}/columns/{column_id}/ui-prefs/:
patch:
description: '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.'
operationId: update_table_column_ui_prefs
parameters:
- in: path
name: table_id
required: true
schema:
format: uuid
title: Table Id
type: string
- in: path
name: column_id
required: true
schema:
format: uuid
title: Column Id
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TableColumnUIPrefsUpdateSchema'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TableColumnUIPrefsSchema'
description: Successful Response
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenResponse'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Table column not found
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Invalid request made to the API.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/ServerErrorResponse'
description: Internal server error.
'502':
content:
application/json:
schema:
$ref: '#/components/schemas/ServerErrorResponse'
description: Bad gateway error.
'503':
content:
application/json:
schema:
$ref: '#/components/schemas/ServerErrorResponse'
description: Service unavailable.
security:
- APIKeyHeader: []
- HTTPBearer: []
summary: Update a column's display preferences
tags:
- table-ui-prefs
components:
schemas:
ForbiddenResponse:
properties:
detail:
description: The detail of why the request is forbidden.
title: Detail
type: string
required:
- detail
title: ForbiddenResponse
type: object
UnprocessableEntityIssue:
properties:
input:
anyOf:
- type: string
- type: integer
- type: number
- type: boolean
- items: {}
type: array
- additionalProperties: true
type: object
description: The user's input that caused the error.
title: Input
loc:
description: The location of the error. Always contains 1 or 2 elements. The first element is the type of location (e.g. 'body', 'query', 'path', 'header'). The second element is the name of the field that caused the error. If the error is not related to a specific field, the second element is not present.
items:
type: string
title: Loc
type: array
msg:
description: The message of the error. The error message to show to the user.
title: Msg
type: string
type:
description: The type of the error. Useful for frontend code to handle different types of errors.
title: Type
type: string
required:
- loc
- msg
- type
- input
title: UnprocessableEntityIssue
type: object
ServerErrorResponse:
properties:
detail:
description: The detail of why the server returned an error.
title: Detail
type: string
required:
- detail
title: ServerErrorResponse
type: object
TableColumnUIPrefsUpdateSchema:
description: Request body for updating a column's display preferences (tri-state PATCH).
properties:
color:
anyOf:
- $ref: '#/components/schemas/TableColumnUIColor'
- {}
- type: 'null'
description: New palette token, the same for everyone. Set to null to clear the tint.
title: Color
hidden:
anyOf:
- type: boolean
- {}
description: 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.
title: Hidden
pinned:
anyOf:
- type: boolean
- {}
description: 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.
title: Pinned
width:
anyOf:
- maximum: 720.0
minimum: 64.0
type: integer
- {}
- type: 'null'
description: 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.
title: Width
title: TableColumnUIPrefsUpdateSchema
type: object
TableColumnUIPrefsSchema:
description: '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.'
properties:
color:
anyOf:
- $ref: '#/components/schemas/TableColumnUIColor'
- type: 'null'
description: Semantic palette token the client maps per theme; null means untinted.
hidden:
description: Whether the grid omits the column; its cell values are untouched.
title: Hidden
type: boolean
pinned:
description: Whether the column is frozen to the left edge through horizontal scroll.
title: Pinned
type: boolean
width:
anyOf:
- type: integer
- type: 'null'
description: Rendered width in pixels; null means the client default.
title: Width
required:
- hidden
- pinned
- width
- color
title: TableColumnUIPrefsSchema
type: object
TableColumnUIColor:
description: '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.'
enum:
- gray
- red
- orange
- amber
- green
- blue
- purple
- pink
title: TableColumnUIColor
type: string
UnprocessableEntityResponse:
properties:
detail:
description: The detail of the error. This is the error message to show to the user. You should also use the issues field to show more detailed error messages per field. Use this field for a single liner error message.
title: Detail
type: string
issues:
description: The issues that caused the error. There can be multiple issues. Each issue is a user-facing error message.
items:
$ref: '#/components/schemas/UnprocessableEntityIssue'
title: Issues
type: array
required:
- detail
- issues
title: UnprocessableEntityResponse
type: object
UnauthorizedResponse:
properties:
detail:
description: The detail of why the request is unauthorized.
title: Detail
type: string
required:
- detail
title: UnauthorizedResponse
type: object
NotFoundResponse:
properties:
detail:
description: The detail of why the resource was not found.
title: Detail
type: string
required:
- detail
title: NotFoundResponse
type: object
securitySchemes:
APIKeyHeader:
in: header
name: X-API-Key
type: apiKey
HTTPBearer:
scheme: bearer
type: http