Content Type

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, ao publicar o Content, as informações do autor (sys.createdBy e sys.updatedBy) são incluídas no snapshot publicado. O valor padrão é false e, nesse caso, o snapshot entregue à CDA/ACDA não inclui o autor. Esse valor é aplicado no momento da publicação e não é retroativo, portanto, mesmo que você o altere para true depois, o Content já publicado só terá o autor preenchido após ser publicado novamente. Os rascunhos tratados pela API de gerenciamento (CMA/ACMA) têm sys.createdBy independentemente dessa configuração. Para expor o autor (byline) na resposta de entrega ou para que o filtro createdBy (incluindo :self) das regras de permissão seja avaliado na CDA/ACDA, é preciso deixar esse valor como true (consulte a explicação do filtro createdBy em SpaceRole e ServiceUserRole).
  • 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.

typeSignificadoLimite de valorObservação
ShortTextTexto curto de uma única linha.64 caracteresAdequado para consulta exata por palavra-chave.
LongTextTexto longo de corpo.5.120 caracteresSuporta busca por similaridade de texto completo (full-text).
RichTextCorpo com formatação.204.800 caracteresNão é alvo de busca; serve para representação com formatação.
LongNúmero inteiro.Exemplo: preço price.
NumberNúmero real (incluindo decimais).Apenas valores finitosInfinito e NaN não são aceitos.
BooleanVerdadeiro/falso.
DateData e hora.
JsonEstrutura JSON arbitrária.5.120 caracteres serializadosOs números dentro da estrutura também precisam ser finitos.
LocationLocalização (coordenadas).latitude -9090, longitude -180180
ReferReferência que aponta para outro recurso.Especifique Content ou Media por meio de targetType.
ArrayArray que contém vários valores.64 elementosAcompanha 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).

O limite de valor é o teto de plataforma definido pelo tipo, e ele é verificado quando se escreve um valor no Content, não quando se cria o Content Type. Mesmo que você informe um teto maior por meio de size em validations, o teto de plataforma é aplicado primeiro. Aos elementos de Array se aplica o mesmo limite do tipo do elemento, portanto, em um array cujo items.type é ShortText, cada elemento não pode ultrapassar 64 caracteres. Se você escrever um Content com um valor que ultrapassa o limite, ele é recusado, e o código correspondente está em Erros de 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 campos. A criação, a modificação e a modificação parcial devem respeitar esse intervalo.
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. 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. Primeiro anule a publicação (DELETE .../publish) para torná-lo Draft e depois exclua (o estado Archived também pode ser excluído).

Erros

São os códigos que você encontra ao lidar com o Content Type. Para os códigos comuns a todos os recursos, consulte Erros comuns.

CódigoCondição
WGL422010O chamador tentou excluir o Content Type enquanto ainda restava algum Content que usa esse Content Type. A anulação da publicação passa pela mesma verificação, portanto, se ainda restar algum Content, a própria anulação da publicação já é recusada com este código.
WGL422009O chamador tentou excluir um Content Type em estado de publicação (Published, Changed) sem antes anular a publicação.
WGL422006O chamador tentou anular a publicação de um Content Type que não está em estado de publicação.
WGL400002A quantidade de fields ultrapassa o número permitido. A criação, a modificação e a modificação parcial passam por esta verificação.
WGL400045O valor informado em displayField não corresponde a nenhum apiName entre os fields desse Content Type.
WGL400046Um campo que precisa trazer o atributo correspondente não traz esse atributo. Array exige items e Refer exige targetType.
WGL400040Dois ou mais campos têm o mesmo apiName.

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.