---
title: "Listar campos personalizados disponibles"
method: GET
path: "/custom-fields/properties"
tags: ["Custom Fields"]
---

# Listar campos personalizados disponibles

`GET /custom-fields/properties`

## Request

- Base URL: `http://localhost:8081`
- URL: `http://localhost:8081/custom-fields/properties`
- Auth: HTTP bearer

Retorna todos los custom fields disponibles para el tenant autenticado.

**Información incluida**:
- `property_name`: Nombre técnico del campo
- `data_type`: Tipo de la definición viva (TEXT, SELECT, LIST, NUMBER, BOOLEAN, DATE)
- `display_name`: Nombre legible para UI
- `total_records`: Cantidad de registros con este campo
- `data_type_conflict` (opcional): tipos incompatibles del mismo nombre entre los tenants consultados

Una entrada por campo. Un nombre sin definición viva no se ofrece.

**Cache**: Resultados cacheados por 5 minutos para performance.

**Uso**: Útil para construir UI de selección de custom fields en segmentación.

## Response `200`

Lista de custom fields obtenida exitosamente

- CustomFieldPropertiesResponse
  - `success` boolean, required
  - `custom_fields` CustomFieldInfo[], required
    - `property_name` string, required: Nombre técnico del campo
    - `data_type` 'TEXT' | 'SELECT' | 'LIST' | 'NUMBER' | 'BOOLEAN' | 'DATE', required: Tipo de la definición viva del campo (no el tipo con que se escribió cada valor)
    - `display_name` string, required: Nombre legible para UI
    - `total_records` integer, required: Número de registros con este campo
    - `data_type_conflict` string[]: Solo cuando el nombre tiene definiciones de tipos incompatibles en los tenants consultados; la segmentación lo rechaza con CUSTOM_FIELD_TYPE_CONFLICT
    - `definition_unverified` boolean: Solo si no se pudieron leer las definiciones; el catálogo muestra entonces el tipo del valor más reciente sin verificar

## Other responses

- `403`: Acceso denegado antes de ejecutar ninguna consulta. Dos casos: - **Rol no admitido** (`error.code: FORBIDDEN`): las rutas de datos solo admiten tokens con rol ADMIN, OWNER o SUPERADMIN (los `campaign_service_token` de nev-api llevan rol ADMIN). Un token de fan (USER), STAFF, EXTERNAL o sin rol recibe 403. - **Selección ajena** (`code: ACTIVE_TENANT_FORBIDDEN`): la organización seleccionada (`activeTenantId`) no pertenece a la jerarquía actual de `tenantId`.
- `500`: Error interno del servidor
- `503`: No se pudo leer la jerarquía de tenants (MongoDB no disponible). Reintentable; nunca se sustituye por un ámbito parcial o global.

---

[API](https://skmtc.dev/nevent/apis/nevent-data-api.md) · [All operations](https://skmtc.dev/nevent/apis/nevent-data-api/llms.txt) · [OpenAPI document](https://skmtc.dev/nevent/apis/nevent-data-api/revisions/81035d32c1c1?raw)
