Skip to content

List Contact Columns

GET
/contacts/columns

List custom contact columns (table columns + global dynamic columns; +list-scoped if list_id given).

Authorizations

Parameters

Query Parameters

list_id
Any of:
integer

Optional list ID. When provided, list-specific dynamic columns are included alongside global ones.

Header Parameters

X-Target-Org-Id
Any of:
string

Responses

200

Successful Response

object
data
required
Array<object>

Column entity representing a database column definition. Used to describe table column metadata for MashupContact and other entities.

object
data_type

User-selectable dynamic-column data types.

Every member must have a physical type in the repos’ pg_type_map (contacts/companies CDP repos + enrichment DynamicColumnRepository: int→INTEGER, numeric→NUMERIC, text→TEXT, boolean→BOOLEAN) and belong to the user-owned family in lists/usecases/dynamic_column_write_contract.py — both already list these four. Write paths coerce values per type via shared.infrustructure.db.cdp.dynamic_column_values.coerce_dynamic_value.

string
default: text
Allowed values: text int numeric boolean
id
Any of:
integer
is_global
required

Automatically computed: True if object_id is None/empty, False otherwise.

boolean
label
required
Any of:
string
name
Any of:
string
object_id
Any of:
string
source

Which entity a field in the contact field list belongs to.

The GET /contacts/columns response deliberately combines fields from three provenances into one list (issue #21184): the person record, their employer’s company record, and user-created custom columns. Consumers (form-mapping UI, AI-agent field listing, CSV import) need to tell them apart — a company field like COMPANY_REVENUE describes the employer, not the contact.

  • contact: a field on the person record (MashupContact.*) — the default.
  • company: a field on the contact’s employer (MashupCompany.*), surfaced so contacts can be mapped/filtered by company attributes.
  • custom: a user-created dynamic column (global or list-scoped).
string
default: contact
Allowed values: contact company custom
title
required
string
pagination
Any of:
object
has_next
required

Whether there are more pages

boolean
limit
required

Items per page

integer
next_cursor
Any of:
string
notes
Any of:
Array<string>
page
required

Current page number (1-indexed)

integer
total
required

Total number of items

integer
total_available
Any of:
integer
total_is_lower_bound
Any of:
boolean

422

Validation Error

object
detail
Array<object>
object
loc
required
Array
msg
required
string
type
required
string