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: apiName del 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 es false.
  • 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" } }).

PropiedadTipoDescripción
idstringIdentificador único del recurso.
typestringClase de recurso. Para Content Type siempre es "ContentType".
spaceRefer<Space>El Space al que pertenece este Content Type.
createdByRefer<User>Usuario que lo creó.
createdAtstring (date-time)Momento de creación.
updatedByRefer<User>Último usuario que lo modificó.
updatedAtstring (date-time)Momento de la última modificación.
versioninteger (≥1)Versión del recurso. Aumenta en 1 con cada cambio: creación, modificación, publicación, anulación de publicación, etc.
statusstring (enum)Estado de publicación. Uno de Draft, Changed, Published, Archived.
publishobjectHistorial de publicación. Consulta las claves más abajo.

Claves del objeto publish:

ClaveTipoDescripción
versionintegersys.version en el momento de la última publicación.
atstring (date-time)Momento de la última publicación.
firstAtstring (date-time)Momento de la primera publicación. Se conserva aunque se anule la publicación.
counterintegerNúmero acumulado de publicaciones.
byRefer<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).

ClaveTipoDescripción
idstring (1-64)Identificador único del campo. Se asigna automáticamente al crearlo.
namestring (1-50)Nombre del campo que se muestra en el estudio de contenidos (por ejemplo, Nombre del producto).
apiNamestring (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 _).
typestring (enum)Tipo del campo. Consulta Tipos de campo (type) más abajo.
localizedbooleanIndica si puede tener valores en varios idiomas.
requiredbooleanIndica si la entrada es obligatoria.
validationsarrayLista 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.
disabledbooleanIndica si está deshabilitado.
targetTypestring (enum)Solo cuando type es Refer. Indica si el destino de la referencia es Content o Media.
itemsobjectSolo 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.

typeSignificadoNotas
ShortTextTexto corto de una sola línea.Adecuado para consultas exactas por palabra clave.
LongTextTexto de cuerpo largo.Admite búsqueda de similitud de texto completo (full-text).
RichTextCuerpo con formato.No es objeto de búsqueda; sirve para representar formato.
LongNúmero entero.Por ejemplo, el precio price.
NumberNúmero real (con decimales).
BooleanVerdadero/falso.
DateFecha y hora.
JsonEstructura JSON arbitraria.
LocationUbicación (coordenadas).
ReferReferencia que apunta a otro recurso.Con targetType se indica Content o Media.
ArrayArray 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.

ClaveFormaDescripción
size{ "min", "max" }Longitud mínima y máxima del texto o tamaño del array.
uniquebooleanProhí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.
inarrayLista 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.
mediaMimetypeGrouparrayLista 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).
referContentTypearrayLista de Content Type a los que se permite referenciar en un campo Refer (Content). Cada elemento tiene forma Refer<ContentType>.
messagestringMensaje 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.

statusSignificado
DraftEstado sin publicar.
ChangedEstado en el que se publicó alguna vez, pero los cambios posteriores aún no se han publicado.
PublishedEstado en el que está publicado y no hay cambios sin publicar.
ArchivedEstado 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

ObjetoRestricción
name (Content Type)1-64 caracteres, obligatorio.
description128 caracteres o menos, opcional.
fieldsDe 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 en Draft y luego elimínalo (el estado Archived tambié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.