Content Type
Ein Content Type ist das Schema (die Vorlage), dem ein Inhalt folgt. Er legt fest, welche Felder vorhanden sind und welchen Typ, welche Mehrsprachigkeit, welche Pflichteigenschaft und welche Validierungsregeln jedes Feld hat. Am Beispiel des "Produkts" eines Bekleidungsshops wird die Zusammenstellung von Angaben wie Produktname, Preis, ausführliche Beschreibung und Titelbild durch einen einzigen Content Type "Produkt" festgelegt, und die einzelnen Produkte selbst werden als Content erstellt, der dieser Vorlage folgt.
In der CMA ist ein Content Type eine untergeordnete Ressource eines Space und folgt dem Pfad /spaces/{spaceId}/content-types. Verwaltungsvorgänge wie Erstellen, Bearbeiten und Zurückziehen werden in der CMA ausgeführt, und der veröffentlichte Snapshot wird über die CDA ausgeliefert. Ein Content Type wird beim Erstellen und Bearbeiten jedoch automatisch veröffentlicht und erhält daher anders als ein Content ohne separaten Veröffentlichungsaufruf sofort den Status Published (siehe Status und automatische Veröffentlichung weiter unten).
Ressourcenstruktur
Im Folgenden sehen Sie die Antwort einer Einzelabfrage des Content Type "Produkt". Neben sys (Systemeigenschaften) enthält er Hauptkörper-Eigenschaften wie name, displayField, publishWithAuthor und 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": "Produkt",
"displayField": "productName",
"publishWithAuthor": false,
"fields": [
{ "id": "5n06s7ocmwdi", "name": "Produktname", "apiName": "productName", "type": "ShortText", "localized": true, "required": true, "validations": [], "disabled": false },
{ "id": "1gecyz8g4llwf", "name": "Preis", "apiName": "price", "type": "Long", "localized": false, "required": false, "validations": [], "disabled": false },
{ "id": "3ow4popgz54zg", "name": "Beschreibung", "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": "Marke",
"apiName": "brand",
"type": "Refer",
"localized": false,
"required": false,
"validations": [
{ "referContentType": [ { "sys": { "id": "3trmXRM3RqbgSnifyg7OveRYWnJWEG", "type": "Refer", "targetType": "ContentType" } } ] }
],
"disabled": false,
"targetType": "Content"
}
]
}Wichtige Schlüssel:
sys.id: Die eindeutige Kennung des Content Type. Sie wird in{contentTypeId}der Pfade für Einzelabfrage, Bearbeiten und Löschen eingesetzt.name: Der Name des Content Type (z. B.Produkt).displayField: DerapiNamedes Feldes, das in der Content-Studio-Liste stellvertretend für jeden Content angezeigt wird (z. B.productName).publishWithAuthor: Gibt an, ob beim Veröffentlichen eines Content die Autoreninformationen (sys.createdByundsys.updatedBy) in den Veröffentlichungs-Snapshot aufgenommen werden. Der Standardwert istfalse; in diesem Fall enthält der über CDA/ACDA ausgelieferte Snapshot keine Autoreninformationen. Dieser Wert wird zum Zeitpunkt der Veröffentlichung angewendet und wirkt nicht rückwirkend. Wenn Sie ihn später auftrueändern, muss ein bereits veröffentlichter Content erneut veröffentlicht werden, damit die Autoreninformationen gefüllt werden. Die Entwürfe, mit denen die Management-APIs (CMA/ACMA) arbeiten, enthalten unabhängig von dieser Einstellungsys.createdBy. Damit in der Auslieferungsantwort der Autor (Byline) angezeigt wird oder dercreatedBy-Filter der Berechtigungsregeln (einschließlich:self) über CDA/ACDA ausgewertet wird, muss dieser Wert auftruegesetzt sein (siehe die Beschreibung descreatedBy-Filters bei SpaceRole und ServiceUserRole).fields: Die Liste der Felder, die diese Vorlage definiert. Die Struktur jedes Eintrags wird unten unter Felder beschrieben.
Das Feld photo hat type Refer und targetType Media und verweist daher auf ein hochgeladenes Dateiasset. Das Feld brand ist Refer + targetType: Content und beschränkt über referContentType in validations den Verweis auf den Content eines bestimmten Content Type (hier "Marke").
Systemeigenschaften (sys)
Jeder Content Type führt gemeinsame Systemeigenschaften sowie Content Type-spezifische Eigenschaften im Objekt sys. space, createdBy und updatedBy werden in der Refer-Form ({ "sys": { "id", "type": "Refer", "targetType" } }) abgelegt.
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
id | string | Eindeutige Kennung der Ressource. |
type | string | Ressourcenart. Bei einem Content Type immer "ContentType". |
space | Refer<Space> | Der Space, zu dem dieser Content Type gehört. |
createdBy | Refer<User> | Der Benutzer, der die Ressource erstellt hat. |
createdAt | string (date-time) | Erstellungszeitpunkt. |
updatedBy | Refer<User> | Der Benutzer, der zuletzt bearbeitet hat. |
updatedAt | string (date-time) | Zeitpunkt der letzten Bearbeitung. |
version | integer (≥1) | Version der Ressource. Erhöht sich bei jeder Änderung wie Erstellen, Bearbeiten, Veröffentlichen oder Zurückziehen um 1. |
status | string (enum) | Veröffentlichungsstatus. Einer von Draft, Changed, Published, Archived. |
publish | object | Veröffentlichungsverlauf. Siehe die Schlüssel unten. |
Schlüssel des Objekts publish:
| Schlüssel | Typ | Beschreibung |
|---|---|---|
version | integer | sys.version zum Zeitpunkt der letzten Veröffentlichung. |
at | string (date-time) | Zeitpunkt der letzten Veröffentlichung. |
firstAt | string (date-time) | Zeitpunkt der ersten Veröffentlichung. Bleibt auch beim Zurückziehen erhalten. |
counter | integer | Kumulierte Anzahl der Veröffentlichungen. |
by | Refer<User> | Der Benutzer, der zuletzt veröffentlicht hat. |
Beim Zurückziehen (DELETE .../publish) werden version, at und by aus publish entfernt, und nur firstAt und counter bleiben erhalten.
Das sys eines Content Type enthält nicht die Eigenschaft contentType (Selbstverweis), die im sys eines Content vorhanden ist. Das liegt daran, dass der Content Type selbst die Vorlage ist. Auch die Eigenschaft archive ist nicht vorhanden.
Felder
fields ist die Liste der Felder, die dieser Content Type definiert. Jeder Eintrag hat die folgende Struktur (FieldDefinition).
| Schlüssel | Typ | Beschreibung |
|---|---|---|
id | string (1-64) | Eindeutige Kennung des Feldes. Wird beim Erstellen automatisch vergeben. |
name | string (1-50) | Der im Content-Studio angezeigte Feldname (z. B. Produktname). |
apiName | string (1-64) | Der Schlüssel, der dieses Feld in der API bezeichnet. Muster ^[a-zA-Z0-9][a-zA-Z0-9-_]*$ (beginnt mit Buchstabe oder Ziffer, danach Buchstaben, Ziffern, -, _). |
type | string (enum) | Der Typ des Feldes. Siehe Feldarten (type) unten. |
localized | boolean | Gibt an, ob mehrsprachige Werte möglich sind. |
required | boolean | Gibt an, ob eine Eingabe erforderlich ist. |
validations | array | Die Liste der Validierungsregeln, die auf den Wert angewendet werden. Ohne Regeln ein leeres Array []. Siehe Validierung (validations) unten. |
disabled | boolean | Gibt an, ob das Feld deaktiviert ist. |
targetType | string (enum) | Nur wenn type gleich Refer ist. Ob das Verweisziel Content oder Media ist. |
items | object | Nur wenn type gleich Array ist. Die Definition der Arrayelemente (Refer-Element oder ShortText-Element). |
Feldarten (type)
type bestimmt, wie der Wert gespeichert und abgefragt wird. Bei einigen Typen verhält sich die Suche unterschiedlich.
type | Bedeutung | Wertgrenze | Hinweis |
|---|---|---|---|
ShortText | Kurzer einzeiliger Text. | 64 Zeichen | Geeignet für die exakte Abfrage nach Schlüsselwörtern. |
LongText | Langer Fließtext. | 5.120 Zeichen | Unterstützt die Volltext-Ähnlichkeitssuche. |
RichText | Formatierter Fließtext. | 204.800 Zeichen | Nicht durchsuchbar, dient der Darstellung mit Formatierung. |
Long | Ganzzahl. | Beispiel: Preis price. | |
Number | Reelle Zahl (mit Nachkommastellen). | Nur endliche Werte | Unendlich und NaN werden nicht akzeptiert. |
Boolean | Wahr/falsch. | ||
Date | Datum/Uhrzeit. | ||
Json | Beliebige JSON-Struktur. | 5.120 Zeichen serialisiert | Auch die Zahlen innerhalb der Struktur müssen endlich sein. |
Location | Standort (Koordinaten). | latitude -90 bis 90, longitude -180 bis 180 | |
Refer | Verweis auf eine andere Ressource. | Mit targetType wird Content oder Media angegeben. | |
Array | Array, das mehrere Werte aufnimmt. | 64 Elemente | Wird von items mit der Elementdefinition begleitet. |
Im Beispiel "Produkt" ist Produktname ShortText, Preis Long, Beschreibung RichText, Foto Refer (targetType: Media) und Marke Refer (targetType: Content).
Die Wertgrenze ist die vom Typ festgelegte Plattformobergrenze und wird nicht beim Erstellen eines Content Type geprüft, sondern beim Schreiben eines Wertes in einen Content. Tragen Sie über size in validations eine höhere Obergrenze ein, greift dennoch zuerst die Plattformobergrenze. Für die Elemente eines Array gilt dieselbe Grenze des Elementtyps unverändert, sodass in einem Array mit items.type gleich ShortText kein einzelnes Element 64 Zeichen überschreiten darf. Schreiben Sie einen Content mit einem Wert, der die Grenze überschreitet, wird er abgelehnt; den zugehörigen Code finden Sie unter Fehler bei Content.
Validierung (validations)
validations ist das Array der Regeln, die auf den Feldwert angewendet werden. Jeder Eintrag enthält einen der folgenden Schlüssel.
| Schlüssel | Form | Beschreibung |
|---|---|---|
size | { "min", "max" } | Minimum und Maximum der Textlänge oder der Arraygröße. |
unique | boolean | Verbietet doppelte Werte innerhalb desselben Content Type. |
regexp | { "pattern", "flags" } | Der Wert muss mit dem regulären Ausdruck übereinstimmen. pattern ist erforderlich. |
prohibitRegexp | { "pattern", "flags" } | Lehnt den Wert ab, wenn er mit dem regulären Ausdruck übereinstimmt. pattern ist erforderlich. |
in | array | Liste der zulässigen Werte. Nur Werte aus der Liste werden akzeptiert. |
range | { "min", "max" } | Minimum und Maximum eines Zahlenwerts. |
dateRange | { "min", "max", "after", "before" } | Zulässiger Bereich eines Datumswerts. |
mediaMimetypeGroup | array | Liste der zulässigen Dateitypen für ein Refer-Feld (Media). Siehe enum unten. |
mediaImageDimensions | { "width", "height" } | Pixelbeschränkung für Breite und Höhe eines Bildes. |
mediaFileSize | { "min", "max" } | Minimum und Maximum der Dateigröße (Bytes). |
referContentType | array | Liste der Content Type, deren Verweis in einem Refer-Feld (Content) zulässig ist. Jeder Eintrag hat die Form Refer<ContentType>. |
message | string | Eine benutzerdefinierte Meldung, die bei fehlgeschlagener Validierung angezeigt wird. |
Werte, die für mediaMimetypeGroup verwendet werden können (12 Stück): Attachment, Plaintext, Image, Audio, Video, RichText, Presentation, Spreadsheet, PdfDocument, Archive, Code, Markup.
Das Feld brand im Beispiel "Produkt" beschränkt über referContentType den Verweis auf den Content Type "Marke" (sys.id ist 3trmXRM3RqbgSnifyg7OveRYWnJWEG).
Status und automatische Veröffentlichung
Ein Content Type wird beim Erstellen, Bearbeiten und Teilbearbeiten automatisch veröffentlicht. Darin unterscheidet er sich von einem Content. Ein Content gelangt erst nach einem separaten Veröffentlichungsaufruf in den Auslieferungspfad, während bei einem Content Type die Erstellungsantwort sofort mit status: "Published" zurückkommt.
status ist einer der folgenden vier Werte.
status | Bedeutung |
|---|---|
Draft | Nicht veröffentlichter Zustand. |
Changed | War bereits veröffentlicht, aber die seitdem erfolgten Änderungen sind noch nicht veröffentlicht. |
Published | Veröffentlicht und ohne unveröffentlichte Änderungen. |
Archived | Archivierter Zustand. |
sys.version erhöht sich bei jeder Änderung um 1. Da bei einem Content Type Bearbeitung und Veröffentlichung in einem Schritt erfolgen, erhöht eine einzelne Bearbeitung version um 2 (Bearbeitung selbst +1, automatische Veröffentlichung +1). Im Beispiel "Mitteilung" ist version direkt nach dem Erstellen 2 (Erstellen +1, automatische Veröffentlichung +1) und publish.counter 1. Bearbeitet man anschließend, wird version zu 4 und publish.counter zu 2.
Der einzige Weg, auf dem ein Content Type zu Draft wird, ist das ausdrückliche Zurückziehen (DELETE .../publish). Beim Zurückziehen wird status zu Draft, und im Objekt publish entfallen version, at und by, während nur firstAt und counter erhalten bleiben.
Einschränkungen
| Ziel | Einschränkung |
|---|---|
name (Content Type) | 1-64 Zeichen, erforderlich. |
description | Höchstens 128 Zeichen, optional. |
fields | 1-80 Stück. Erstellen, Bearbeiten und Teilbearbeiten müssen diesen Bereich einhalten. |
name (Feld) | 1-50 Zeichen, erforderlich. |
apiName (Feld) | 1-64 Zeichen, Muster ^[a-zA-Z0-9][a-zA-Z0-9-_]*$, erforderlich. |
Löschschutz: Das Löschen muss beide Bedingungen erfüllen.
- Existiert auch nur ein Content, der diesen Content Type verwendet, kann er nicht gelöscht werden. Löschen Sie zuerst alle betreffenden Content. Diese Prüfung greift zuerst.
- Ein Content Type im veröffentlichten Status (
Published,Changed) kann nicht unmittelbar gelöscht werden. Ziehen Sie ihn zuerst zurück (DELETE .../publish), um ihn aufDraftzu setzen, und löschen Sie ihn dann (auch der StatusArchivedist löschbar).
Fehler
Dies sind die Codes, die beim Umgang mit einem Content Type auftreten. Codes, die allen Ressourcen gemeinsam sind, finden Sie unter Gemeinsame Fehler.
| Code | Bedingung |
|---|---|
WGL422010 | Der Aufrufer wollte einen Content Type löschen, obwohl noch Content vorhanden war, der diesen Content Type verwendet. Das Zurückziehen unterliegt derselben Prüfung, daher wird bereits das Zurückziehen mit diesem Code abgelehnt, solange noch Content vorhanden ist. |
WGL422009 | Der Aufrufer wollte einen Content Type im veröffentlichten Status (Published, Changed) löschen, ohne diesen Content Type zuvor zurückzuziehen. |
WGL422006 | Der Aufrufer wollte einen Content Type zurückziehen, der nicht im veröffentlichten Status ist. |
WGL400002 | fields überschreitet die zulässige Anzahl. Erstellen, Bearbeiten und Teilbearbeiten unterliegen alle dieser Prüfung. |
WGL400045 | Der in displayField eingetragene Wert kommt in keinem apiName innerhalb von fields dieses Content Type vor. |
WGL400046 | Bei einem Feld, das eine zugehörige Eigenschaft mit angeben muss, fehlt genau diese Eigenschaft. Array benötigt items, Refer benötigt targetType. |
WGL400040 | Zwei oder mehr Felder tragen denselben apiName. |
API
Die Basis-URL aller folgenden Endpunkte ist https://cma.weegloo.com/v1, und im Header Authorization ist ein Bearer-Token erforderlich, das sich bei der CMA authentifiziert. Bei Bearbeiten, Teilbearbeiten, Veröffentlichen und Zurückziehen muss für die optimistische Nebenläufigkeitskontrolle zusätzlich der Header X-Weegloo-Version (das sys.version der aktuellen Ressource) mitgesendet werden.
Verwandte Dokumente
- Content-Modellierung: Wie man einen Content Type im Content-Studio erstellt.
- Status und Veröffentlichung: Bedeutung von Veröffentlichung und Version.
