> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chatsailer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Campos personalizados

> Campos definidos por el workspace, en el wire.

Los workspaces definen sus propios campos en los registros del CRM. Llegan en
un objeto anidado con keys estables:

```json theme={null}
{
  "object": "contact",
  "id": "con_...",
  "first_name": "Ana",
  "custom_fields": {
    "annual_revenue": 250000,
    "segment": "enterprise",
    "renewal_date": "2027-03-01",
    "is_key_account": true,
    "notes_from_sales": null
  }
}
```

De esa forma se siguen dos cosas.

**Las keys son legibles y estables.** `custom_fields.segment` es la key del
campo, no un id opaco, así tu código lee como habla el workspace. La key se
fija al crearlo; renombrar el label de un campo en Sailer no la mueve.

**Los valores están tipados.** Un campo numérico devuelve un JSON number, un
checkbox un boolean, una fecha un string de fecha ISO-8601. No van
stringifyados.

## Descubrir los campos que usa un workspace

`GET /v1/fields` lista cada campo definido en un resource, built-in y
personalizado: key, label, type, si es required o read-only, y los valores
permitidos de los selects. Pasa `entity=contact`, `entity=organization` o
`entity=deal` para restringir la lista; omítelo para listar todo el workspace.

```bash theme={null}
curl "https://api.chatsailer.com/v1/fields?entity=contact" \
  -H "Authorization: Bearer $SAILER_API_TOKEN"
```

Usa la `key` que devuelve dentro de `custom_fields` en create y update.
Adivinar desde otro workspace — o desde esta documentación — es cómo obtienes
un error de unknown-field.

En MCP, la misma tabla es `describe_schema`. Llámalo primero; los clientes
cachean schemas de tools por servidor, no por tenant, así que los campos
personalizados nunca van en la tool misma.

Cada campo personalizado definido en la entidad también aparece en cada
registro, con `null` donde un registro no tiene valor. Leer un registro
muestra las keys en uso, pero no sus tipos ni valores permitidos — para eso
está `/v1/fields`.

## Cómo escribirlos

Envía solo las keys que quieres cambiar. Los campos no listados se dejan
igual:

```bash theme={null}
curl -X PATCH https://api.chatsailer.com/v1/contacts/con_123 \
  -H "Authorization: Bearer $SAILER_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"custom_fields": {"segment": "mid-market"}}'
```

Para vaciar un campo, envía `null`. Enviar una key desconocida, o un valor del
tipo incorrecto, devuelve `422` con la key ofensora en `error.detail`.
