Schema and fields
Discover and manage object schemas and custom fields
Use "type": "date" for date fields, not "date-time" — date-time fields become read-only in the UI. Enum values are case-sensitive: "Active" and "active" are treated as different values.
Get all schemas
GET /schemas
Returns every object schema in the workspace — standard and custom. The response contains two groups:
core/*— built-in object types:core/person,core/company,core/deal,core/meetingentities/*— custom object types you've created
{
"data": {
"core/person": {
"properties": {
"name": { "type": "text" },
"email_addresses": { "type": "collection" },
"title": { "type": "text" },
"stage": {
"type": "select",
"enum": ["Lead", "Qualified", "Customer"]
}
}
},
"entities/investor": {
"properties": {
"fund_size": { "type": "number" },
"investment_stage": {
"type": "select",
"enum": ["Seed", "Series A", "Series B"]
}
}
}
}
}Create schema properties
POST /schemas/{entity}/properties
Adds custom fields to an object type. entity is the full schema key, e.g. core/person or entities/investor.
{
"properties": {
"deal_source": {
"type": "select",
"title": "Deal Source",
"enum": ["Inbound", "Outbound", "Referral", "Partner"]
},
"close_date": {
"type": "date",
"title": "Close Date"
},
"notes": {
"type": "text",
"title": "Notes"
}
}
}Use "type": "date" (not "date-time") for user-editable date fields. "date-time" fields are read-only.
Update schema properties
PATCH /schemas
Updates existing field definitions across one or more schemas. Use the same property structure as create — only include fields you want to modify.
{
"core/deal": {
"properties": {
"deal_source": {
"enum": ["Inbound", "Outbound", "Referral", "Partner", "Event"]
}
}
}
}Adding values to an existing enum is safe. Removing values is destructive — any records currently set to a removed value will be nulled out, and those records will be dropped from any lists that filter on that field. Always check which records use a value before removing it.
Create a custom object
POST /schemas/objects
Creates a new custom object type with its own records, fields, and relationships.
{
"name": "investor",
"title": "Investor"
}name is the slug used in API paths (e.g. /objects/investor/records). title is the display name shown in the UI.
Update a custom object
PUT /schemas/objects/{object}
Updates the display title of a custom object. The name (slug) cannot be changed after creation.
{
"title": "LP Investor"
}Create relationship properties
POST /schemas/{entity}/relationships
Defines a new relationship between two object types.
{
"name": "funds",
"title": "Funds",
"target": "entities/fund",
"cardinality": "many"
}cardinality is either "one" or "many".
Delete relationship property
DELETE /schemas/{entity}/relationships/{fieldName}
Removes a relationship definition and all associated relationship data. Returns 204 No Content. This cannot be undone.