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: oapiNamedo 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" } }).
| Propriedade | Tipo | Descrição |
|---|---|---|
id | string | Identificador exclusivo do recurso. |
type | string | Tipo do recurso. Para Content Type é sempre "ContentType". |
space | Refer<Space> | O Space ao qual este Content Type pertence. |
createdBy | Refer<User> | Usuário que criou. |
createdAt | string (date-time) | Momento da criação. |
updatedBy | Refer<User> | Usuário que modificou por último. |
updatedAt | string (date-time) | Momento da última modificação. |
version | integer (≥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. |
status | string (enum) | Estado de publicação. Um entre Draft, Changed, Published, Archived. |
publish | object | Histórico de publicação. Veja as chaves abaixo. |
Chaves do objeto publish:
| Chave | Tipo | Descrição |
|---|---|---|
version | integer | O sys.version no momento da última publicação. |
at | string (date-time) | Momento da última publicação. |
firstAt | string (date-time) | Momento da primeira publicação. É preservado mesmo após anular a publicação. |
counter | integer | Número acumulado de publicações. |
by | Refer<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).
| Chave | Tipo | Descrição |
|---|---|---|
id | string (1~64) | Identificador exclusivo do campo. Atribuído automaticamente na criação. |
name | string (1~50) | Nome do campo exibido no estúdio de conteúdo (exemplo: Nome do produto). |
apiName | string (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 _). |
type | string (enum) | Tipo do campo. Veja Tipos de campo (type) abaixo. |
localized | boolean | Define se pode ter valores em múltiplos idiomas. |
required | boolean | Define se o preenchimento é obrigatório. |
validations | array | Lista de regras de validação aplicadas ao valor. Se não houver regras, array vazio []. Veja Validações (validations) abaixo. |
disabled | boolean | Define se está desativado. |
targetType | string (enum) | Somente quando type é Refer. Indica se o alvo da referência é Content ou Media. |
items | object | Somente 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.
type | Significado | Observação |
|---|---|---|
ShortText | Texto curto de uma única linha. | Adequado para consulta exata por palavra-chave. |
LongText | Texto longo de corpo. | Suporta busca por similaridade de texto completo (full-text). |
RichText | Corpo com formatação. | Não é alvo de busca; serve para representação com formatação. |
Long | Número inteiro. | Exemplo: preço price. |
Number | Número real (incluindo decimais). | |
Boolean | Verdadeiro/falso. | |
Date | Data e hora. | |
Json | Estrutura JSON arbitrária. | |
Location | Localização (coordenadas). | |
Refer | Referência que aponta para outro recurso. | Especifique Content ou Media por meio de targetType. |
Array | Array 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.
| Chave | Formato | Descrição |
|---|---|---|
size | { "min", "max" } | Mínimo e máximo do comprimento do texto ou do tamanho do array. |
unique | boolean | Proí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. |
in | array | Lista 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. |
mediaMimetypeGroup | array | Lista 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). |
referContentType | array | Lista de Content Type cuja referência é permitida em um campo Refer (Content). Cada item tem o formato Refer<ContentType>. |
message | string | Mensagem 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.
status | Significado |
|---|---|
Draft | Estado não publicado. |
Changed | Estado em que já houve publicação, mas as alterações posteriores ainda não foram publicadas. |
Published | Estado publicado e sem alterações não publicadas. |
Archived | Estado 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
| Alvo | Restrição |
|---|---|
name (Content Type) | 1~64 caracteres, obrigatório. |
description | 128 caracteres ou menos, opcional. |
fields | 1~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á-loDrafte depois exclua (o estadoArchivedtambé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.
Documentos relacionados
- Modelagem de Content: como criar Content Type no estúdio de conteúdo.
- Estado e publicação: o significado de publicação e versão.
