Content Type
Última actualización: 3 de julio de 2026
Content Type es el molde (esquema) que sigue el contenido. Define qué campos tiene y, para cada campo, su tipo, si admite varios idiomas, si es obligatorio y qué reglas de validación aplica. Si tomamos el "producto" de una tienda de ropa como ejemplo, un único Content Type "producto" regula la composición de elementos como el nombre del producto, el precio, la descripción detallada y la foto principal, y cada producto concreto se crea como un Content que sigue este molde.
En CMA, Content Type es un recurso secundario de Space y su ruta se basa en /spaces/{spaceId}/content-types. Las operaciones de gestión como crear, modificar o anular la publicación se realizan en CMA, y la instantánea publicada se entrega a través de CDA. Sin embargo, Content Type se publica automáticamente al crearse o modificarse, por lo que, a diferencia de Content, pasa de inmediato al estado Published sin una llamada de publicación aparte (consulta Estado y publicación automática más abajo).
Estructura del recurso
A continuación se muestra la respuesta de consulta individual del Content Type "producto". Junto con sys (propiedades del sistema), incluye propiedades del cuerpo como name, displayField, publishWithAuthor y fields.
{
"sys": {
"id": "3trmXRLdJF4GBlAjtcuoZ7Pnxj8dlA",
"type": "ContentType",
"space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
"publish": {
"version": 7,
"at": "2026-06-17T03:13:49.973Z",
"firstAt": "2026-06-14T17:04:46.953Z",
"counter": 4,
"by": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } }
},
"createdBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
"createdAt": "2026-06-14T17:04:46.846Z",
"updatedBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
"updatedAt": "2026-06-17T03:13:49.973Z",
"version": 8,
"status": "Published"
},
"name": "Producto",
"displayField": "productName",
"publishWithAuthor": false,
"fields": [
{ "id": "5n06s7ocmwdi", "name": "Nombre del producto", "apiName": "productName", "type": "ShortText", "localized": true, "required": true, "validations": [], "disabled": false },
{ "id": "1gecyz8g4llwf", "name": "Precio", "apiName": "price", "type": "Long", "localized": false, "required": false, "validations": [], "disabled": false },
{ "id": "3ow4popgz54zg", "name": "Descripción", "apiName": "description", "type": "RichText", "localized": true, "required": false, "validations": [], "disabled": false },
{ "id": "2alxdptmdub1s", "name": "Foto", "apiName": "photo", "type": "Refer", "localized": false, "required": false, "validations": [], "disabled": false, "targetType": "Media" },
{
"id": "2a80lehazfx3t",
"name": "Marca",
"apiName": "brand",
"type": "Refer",
"localized": false,
"required": false,
"validations": [
{ "referContentType": [ { "sys": { "id": "3trmXRM3RqbgSnifyg7OveRYWnJWEG", "type": "Refer", "targetType": "ContentType" } } ] }
],
"disabled": false,
"targetType": "Content"
}
]
}Claves principales:
sys.id: identificador único del Content Type. Va en{contentTypeId}de las rutas de consulta individual, modificación y eliminación.name: nombre del Content Type (por ejemplo,Producto).displayField:apiNamedel campo que representa cada Content en la lista del estudio de contenidos (por ejemplo,productName).publishWithAuthor: indica si la información del autor se incluye al publicar el Content. El valor por defecto esfalse.fields: lista de campos que define este molde. La estructura de cada elemento se describe en Campos más abajo.
El campo photo tiene type Refer y targetType Media, por lo que apunta a un archivo subido. El campo brand es Refer + targetType: Content y, mediante referContentType en validations, limita la referencia únicamente a los Content de un Content Type concreto (aquí, "Marca").
Propiedades del sistema (sys)
Todos los Content Type incluyen en el objeto sys las propiedades de sistema comunes y las propiedades propias de Content Type. space, createdBy y updatedBy van con forma Refer ({ "sys": { "id", "type": "Refer", "targetType" } }).
| Propiedad | Tipo | Descripción |
|---|---|---|
id | string | Identificador único del recurso. |
type | string | Clase de recurso. Para Content Type siempre es "ContentType". |
space | Refer<Space> | El Space al que pertenece este Content Type. |
createdBy | Refer<User> | Usuario que lo creó. |
createdAt | string (date-time) | Momento de creación. |
updatedBy | Refer<User> | Último usuario que lo modificó. |
updatedAt | string (date-time) | Momento de la última modificación. |
version | integer (≥1) | Versión del recurso. Aumenta en 1 con cada cambio: creación, modificación, publicación, anulación de publicación, etc. |
status | string (enum) | Estado de publicación. Uno de Draft, Changed, Published, Archived. |
publish | object | Historial de publicación. Consulta las claves más abajo. |
Claves del objeto publish:
| Clave | Tipo | Descripción |
|---|---|---|
version | integer | sys.version en el momento de la última publicación. |
at | string (date-time) | Momento de la última publicación. |
firstAt | string (date-time) | Momento de la primera publicación. Se conserva aunque se anule la publicación. |
counter | integer | Número acumulado de publicaciones. |
by | Refer<User> | Último usuario que publicó. |
Al anular la publicación (DELETE .../publish), se eliminan version, at y by de publish y solo quedan firstAt y counter.
El sys de Content Type no tiene la propiedad contentType (autorreferencia) que sí está en el sys de Content, porque el propio Content Type es el molde. Tampoco tiene la propiedad archive.
Campos
fields es la lista de campos que define este Content Type. Cada elemento tiene la siguiente estructura (FieldDefinition).
| Clave | Tipo | Descripción |
|---|---|---|
id | string (1-64) | Identificador único del campo. Se asigna automáticamente al crearlo. |
name | string (1-50) | Nombre del campo que se muestra en el estudio de contenidos (por ejemplo, Nombre del producto). |
apiName | string (1-64) | Clave que identifica este campo en la API. Patrón ^[a-zA-Z0-9][a-zA-Z0-9-_]*$ (empieza por letra o número, seguido de letras, números, - o _). |
type | string (enum) | Tipo del campo. Consulta Tipos de campo (type) más abajo. |
localized | boolean | Indica si puede tener valores en varios idiomas. |
required | boolean | Indica si la entrada es obligatoria. |
validations | array | Lista de reglas de validación que se aplican al valor. Si no hay reglas, es un array vacío []. Consulta Validaciones (validations) más abajo. |
disabled | boolean | Indica si está deshabilitado. |
targetType | string (enum) | Solo cuando type es Refer. Indica si el destino de la referencia es Content o Media. |
items | object | Solo cuando type es Array. Definición del elemento del array (elemento Refer o elemento ShortText). |
Tipos de campo (type)
type determina cómo se almacena y consulta el valor. Algunos tipos tienen un comportamiento de búsqueda distinto.
type | Significado | Notas |
|---|---|---|
ShortText | Texto corto de una sola línea. | Adecuado para consultas exactas por palabra clave. |
LongText | Texto de cuerpo largo. | Admite búsqueda de similitud de texto completo (full-text). |
RichText | Cuerpo con formato. | No es objeto de búsqueda; sirve para representar formato. |
Long | Número entero. | Por ejemplo, el precio price. |
Number | Número real (con decimales). | |
Boolean | Verdadero/falso. | |
Date | Fecha y hora. | |
Json | Estructura JSON arbitraria. | |
Location | Ubicación (coordenadas). | |
Refer | Referencia que apunta a otro recurso. | Con targetType se indica Content o Media. |
Array | Array que contiene varios valores. | Acompañado de items con la definición del elemento. |
En el ejemplo "producto", Nombre del producto es ShortText, Precio es Long, Descripción es RichText, Foto es Refer (targetType: Media) y Marca es Refer (targetType: Content).
Validaciones (validations)
validations es el array de reglas que se aplican al valor del campo. Cada elemento contiene una de las siguientes claves.
| Clave | Forma | Descripción |
|---|---|---|
size | { "min", "max" } | Longitud mínima y máxima del texto o tamaño del array. |
unique | boolean | Prohíbe valores duplicados dentro del mismo Content Type. |
regexp | { "pattern", "flags" } | El valor debe coincidir con el patrón de expresión regular. pattern es obligatorio. |
prohibitRegexp | { "pattern", "flags" } | Rechaza el valor si coincide con el patrón de expresión regular. pattern es obligatorio. |
in | array | Lista de valores permitidos. Solo pasan los valores incluidos en la lista. |
range | { "min", "max" } | Mínimo y máximo del valor numérico. |
dateRange | { "min", "max", "after", "before" } | Rango permitido del valor de fecha. |
mediaMimetypeGroup | array | Lista de tipos de archivo permitidos en un campo Refer (Media). Consulta el enum más abajo. |
mediaImageDimensions | { "width", "height" } | Restricción en píxeles del ancho y alto de la imagen. |
mediaFileSize | { "min", "max" } | Mínimo y máximo del tamaño del archivo (en bytes). |
referContentType | array | Lista de Content Type a los que se permite referenciar en un campo Refer (Content). Cada elemento tiene forma Refer<ContentType>. |
message | string | Mensaje personalizado que se muestra cuando falla la validación. |
Valores admitidos en mediaMimetypeGroup (12 tipos): Attachment, Plaintext, Image, Audio, Video, RichText, Presentation, Spreadsheet, PdfDocument, Archive, Code, Markup.
El campo brand del ejemplo "producto" limita, mediante referContentType, la referencia únicamente al Content Type "Marca" (cuyo sys.id es 3trmXRM3RqbgSnifyg7OveRYWnJWEG).
Estado y publicación automática
Content Type se publica automáticamente al crearse, modificarse o modificarse parcialmente. En esto se diferencia de Content. Content solo entra en la ruta de entrega cuando hay una llamada de publicación aparte tras crearlo, pero la respuesta de creación de Content Type devuelve directamente status: "Published".
status es uno de los siguientes 4 valores.
status | Significado |
|---|---|
Draft | Estado sin publicar. |
Changed | Estado en el que se publicó alguna vez, pero los cambios posteriores aún no se han publicado. |
Published | Estado en el que está publicado y no hay cambios sin publicar. |
Archived | Estado archivado. |
sys.version aumenta en 1 con cada cambio. Como en Content Type la modificación y la publicación ocurren a la vez, una sola modificación sube version en 2 (la propia modificación +1, la publicación automática +1). En el ejemplo "Aviso", justo después de la creación version es 2 (creación +1, publicación automática +1) y publish.counter es 1. Si a continuación se modifica, version pasa a 4 y publish.counter pasa a 2.
La única vía por la que un Content Type pasa a Draft es la anulación de publicación explícita (DELETE .../publish). Al anular la publicación, status pasa a Draft y en el objeto publish se quitan version, at y by, quedando solo firstAt y counter.
Restricciones
| Objeto | Restricción |
|---|---|
name (Content Type) | 1-64 caracteres, obligatorio. |
description | 128 caracteres o menos, opcional. |
fields | De 1 a 80 al crear, mínimo 1 al modificar. |
name (campo) | 1-50 caracteres, obligatorio. |
apiName (campo) | 1-64 caracteres, patrón ^[a-zA-Z0-9][a-zA-Z0-9-_]*$, obligatorio. |
Protección de eliminación: la eliminación debe cumplir ambas condiciones.
- No se puede eliminar si existe al menos un Content que use este Content Type (
WGL422010). Elimina primero todos esos Content. Esta comprobación se aplica en primer lugar. - Un Content Type en estado de publicación (
Published,Changed) no se puede eliminar directamente (WGL422009). Anula primero la publicación (DELETE .../publish) para dejarlo enDrafty luego elimínalo (el estadoArchivedtambién permite eliminar).
API
La URL base de todos los endpoints siguientes es https://cma.weegloo.com/v1 y se requiere en la cabecera Authorization un token Bearer que autentique en CMA. La modificación, la modificación parcial, la publicación y la anulación de publicación deben enviar también la cabecera X-Weegloo-Version (el sys.version actual del recurso) para el control de concurrencia optimista.
Documentos relacionados
- Modelado de Content: cómo crear un Content Type en el estudio de contenidos.
- Estado y publicación: el significado de la publicación y las versiones.
