Content Type

Última atualização: 3 de julho de 2026

Content Type é o molde (esquema) que o conteúdo segue. Ele define quais campos existem e qual tipo, suporte a múltiplos idiomas, obrigatoriedade e regras de validação cada campo possui. Tomando o "produto" de uma loja de roupas como exemplo, a composição dos itens como nome do produto, preço, descrição detalhada e foto principal é definida por um único Content Type "produto", e cada produto individual é criado como um Content que segue esse molde.

No CMA, Content Type é um recurso subordinado a Space, e o caminho tem como base /spaces/{spaceId}/content-types. Operações de gerenciamento como criação, modificação e anulação de publicação são realizadas no CMA, e o snapshot publicado é entregue ao CDA. Porém, Content Type é publicado automaticamente na criação e na modificação, portanto, ao contrário de Content, ele passa imediatamente ao estado Published sem uma chamada de publicação separada (veja Estado e publicação automática abaixo).

Estrutura do recurso

A seguir está a resposta de consulta individual de um Content Type "produto". Junto com sys (propriedades de sistema), ele possui propriedades de corpo como name, displayField, publishWithAuthor e 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": "Produto",
  "displayField": "productName",
  "publishWithAuthor": false,
  "fields": [
    { "id": "5n06s7ocmwdi", "name": "Nome do produto", "apiName": "productName", "type": "ShortText", "localized": true, "required": true, "validations": [], "disabled": false },
    { "id": "1gecyz8g4llwf", "name": "Preço", "apiName": "price", "type": "Long", "localized": false, "required": false, "validations": [], "disabled": false },
    { "id": "3ow4popgz54zg", "name": "Descrição", "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"
    }
  ]
}

Chaves principais:

  • sys.id: identificador exclusivo do Content Type. Entra no {contentTypeId} dos caminhos de consulta individual, modificação e exclusão.
  • name: nome do Content Type (exemplo: Produto).
  • displayField: o apiName do campo que representará cada Content na lista do estúdio de conteúdo (exemplo: productName).
  • publishWithAuthor: define se as informações do autor são incluídas ao publicar o Content. O valor padrão é false.
  • fields: lista de campos que este molde define. A estrutura de cada item é explicada em Campos abaixo.

O campo photo tem type igual a Refer e targetType igual a Media, portanto aponta para um arquivo de mídia carregado. O campo brand é Refer + targetType: Content e, por meio de referContentType em validations, restringe a referência apenas a Content de um Content Type específico (aqui, "marca").

Propriedades de sistema (sys)

Todo Content Type armazena as propriedades de sistema comuns e as propriedades próprias de Content Type no objeto sys. space, createdBy e updatedBy entram no formato Refer ({ "sys": { "id", "type": "Refer", "targetType" } }).

PropriedadeTipoDescrição
idstringIdentificador exclusivo do recurso.
typestringTipo do recurso. Para Content Type é sempre "ContentType".
spaceRefer<Space>O Space ao qual este Content Type pertence.
createdByRefer<User>Usuário que criou.
createdAtstring (date-time)Momento da criação.
updatedByRefer<User>Usuário que modificou por último.
updatedAtstring (date-time)Momento da última modificação.
versioninteger (≥1)Versão do recurso. Aumenta em 1 a cada alteração, como criação, modificação, publicação e anulação de publicação.
statusstring (enum)Estado de publicação. Um entre Draft, Changed, Published, Archived.
publishobjectHistórico de publicação. Veja as chaves abaixo.

Chaves do objeto publish:

ChaveTipoDescrição
versionintegerO sys.version no momento da última publicação.
atstring (date-time)Momento da última publicação.
firstAtstring (date-time)Momento da primeira publicação. É preservado mesmo após anular a publicação.
counterintegerNúmero acumulado de publicações.
byRefer<User>Usuário que publicou por último.

Ao anular a publicação (DELETE .../publish), version, at e by são removidos de publish e permanecem apenas firstAt e counter.

O sys de Content Type não tem a propriedade contentType (autorreferência) que existe no sys de Content. Isso ocorre porque o próprio Content Type é o molde. Ele também não tem a propriedade archive.

Campos

fields é a lista de campos que este Content Type define. Cada item tem a estrutura a seguir (FieldDefinition).

ChaveTipoDescrição
idstring (1~64)Identificador exclusivo do campo. Atribuído automaticamente na criação.
namestring (1~50)Nome do campo exibido no estúdio de conteúdo (exemplo: Nome do produto).
apiNamestring (1~64)Chave que aponta para este campo na API. Padrão ^[a-zA-Z0-9][a-zA-Z0-9-_]*$ (começa com letra ou dígito, seguido de letras, dígitos, - ou _).
typestring (enum)Tipo do campo. Veja Tipos de campo (type) abaixo.
localizedbooleanDefine se pode ter valores em múltiplos idiomas.
requiredbooleanDefine se o preenchimento é obrigatório.
validationsarrayLista de regras de validação aplicadas ao valor. Se não houver regras, array vazio []. Veja Validações (validations) abaixo.
disabledbooleanDefine se está desativado.
targetTypestring (enum)Somente quando type é Refer. Indica se o alvo da referência é Content ou Media.
itemsobjectSomente quando type é Array. Definição do elemento do array (elemento Refer ou elemento ShortText).

Tipos de campo (type)

type determina como o valor é armazenado e consultado. Alguns tipos têm comportamento de busca diferente.

typeSignificadoObservação
ShortTextTexto curto de uma única linha.Adequado para consulta exata por palavra-chave.
LongTextTexto longo de corpo.Suporta busca por similaridade de texto completo (full-text).
RichTextCorpo com formatação.Não é alvo de busca; serve para representação com formatação.
LongNúmero inteiro.Exemplo: preço price.
NumberNúmero real (incluindo decimais).
BooleanVerdadeiro/falso.
DateData e hora.
JsonEstrutura JSON arbitrária.
LocationLocalização (coordenadas).
ReferReferência que aponta para outro recurso.Especifique Content ou Media por meio de targetType.
ArrayArray que contém vários valores.Acompanha a definição do elemento por meio de items.

No exemplo "produto", Nome do produto é ShortText, Preço é Long, Descrição é RichText, Foto é Refer (targetType: Media) e Marca é Refer (targetType: Content).

Validações (validations)

validations é o array de regras aplicadas ao valor do campo. Cada item contém uma das chaves a seguir.

ChaveFormatoDescrição
size{ "min", "max" }Mínimo e máximo do comprimento do texto ou do tamanho do array.
uniquebooleanProíbe a duplicação do valor dentro do mesmo Content Type.
regexp{ "pattern", "flags" }O valor deve corresponder ao padrão de expressão regular. pattern obrigatório.
prohibitRegexp{ "pattern", "flags" }Rejeita se o valor corresponder ao padrão de expressão regular. pattern obrigatório.
inarrayLista de valores permitidos. Apenas valores presentes na lista passam.
range{ "min", "max" }Mínimo e máximo do valor numérico.
dateRange{ "min", "max", "after", "before" }Faixa permitida do valor de data.
mediaMimetypeGrouparrayLista de tipos de arquivo permitidos em um campo Refer (Media). Veja o enum abaixo.
mediaImageDimensions{ "width", "height" }Restrição de largura e altura em pixels da imagem.
mediaFileSize{ "min", "max" }Mínimo e máximo do tamanho do arquivo (bytes).
referContentTypearrayLista de Content Type cuja referência é permitida em um campo Refer (Content). Cada item tem o formato Refer<ContentType>.
messagestringMensagem personalizada exibida quando a validação falha.

Valores utilizáveis em mediaMimetypeGroup (12 tipos): Attachment, Plaintext, Image, Audio, Video, RichText, Presentation, Spreadsheet, PdfDocument, Archive, Code, Markup.

O campo brand do exemplo "produto" usa referContentType para restringir a referência apenas ao Content Type "marca" (cujo sys.id é 3trmXRM3RqbgSnifyg7OveRYWnJWEG).

Estado e publicação automática

Content Type é publicado automaticamente na criação, na modificação e na modificação parcial. Esse ponto difere de Content. Content só entra no caminho de entrega quando há uma chamada de publicação separada após a criação, mas Content Type retorna a resposta de criação imediatamente com status: "Published".

status é um entre os 4 seguintes.

statusSignificado
DraftEstado não publicado.
ChangedEstado em que já houve publicação, mas as alterações posteriores ainda não foram publicadas.
PublishedEstado publicado e sem alterações não publicadas.
ArchivedEstado arquivado.

sys.version aumenta em 1 a cada alteração. Como em Content Type a modificação e a publicação ocorrem de uma vez, uma única modificação eleva o version em 2 (a própria modificação +1, a publicação automática +1). No exemplo "aviso", logo após a criação o version é 2 (criação +1, publicação automática +1) e publish.counter é 1. Em seguida, ao modificar, o version passa a 4 e publish.counter passa a 2.

O único caminho pelo qual um Content Type se torna Draft é a anulação explícita de publicação (DELETE .../publish). Ao anular a publicação, o status se torna Draft e, no objeto publish, version, at e by são removidos, permanecendo apenas firstAt e counter.

Restrições

AlvoRestrição
name (Content Type)1~64 caracteres, obrigatório.
description128 caracteres ou menos, opcional.
fields1~80 na criação, no mínimo 1 na modificação.
name (campo)1~50 caracteres, obrigatório.
apiName (campo)1~64 caracteres, padrão ^[a-zA-Z0-9][a-zA-Z0-9-_]*$, obrigatório.

Proteção de exclusão: a exclusão exige que ambas as condições sejam satisfeitas.

  • Se houver pelo menos um Content que usa este Content Type, não é possível excluí-lo (WGL422010). Primeiro exclua todos esses Content. Esta verificação é a primeira a ser aplicada.
  • Um Content Type em estado de publicação (Published, Changed) não pode ser excluído diretamente (WGL422009). Primeiro anule a publicação (DELETE .../publish) para torná-lo Draft e depois exclua (o estado Archived também pode ser excluído).

API

A URL base de todos os endpoints abaixo é https://cma.weegloo.com/v1, e é necessário um token Bearer que autentique o CMA no cabeçalho Authorization. Modificação, modificação parcial, publicação e anulação de publicação devem enviar junto o cabeçalho X-Weegloo-Version (o sys.version do recurso atual) para o controle de concorrência otimista.