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: Der apiName des 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.createdBy und sys.updatedBy) in den Veröffentlichungs-Snapshot aufgenommen werden. Der Standardwert ist false; 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 auf true ä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 Einstellung sys.createdBy. Damit in der Auslieferungsantwort der Autor (Byline) angezeigt wird oder der createdBy-Filter der Berechtigungsregeln (einschließlich :self) über CDA/ACDA ausgewertet wird, muss dieser Wert auf true gesetzt sein (siehe die Beschreibung des createdBy-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.

EigenschaftTypBeschreibung
idstringEindeutige Kennung der Ressource.
typestringRessourcenart. Bei einem Content Type immer "ContentType".
spaceRefer<Space>Der Space, zu dem dieser Content Type gehört.
createdByRefer<User>Der Benutzer, der die Ressource erstellt hat.
createdAtstring (date-time)Erstellungszeitpunkt.
updatedByRefer<User>Der Benutzer, der zuletzt bearbeitet hat.
updatedAtstring (date-time)Zeitpunkt der letzten Bearbeitung.
versioninteger (≥1)Version der Ressource. Erhöht sich bei jeder Änderung wie Erstellen, Bearbeiten, Veröffentlichen oder Zurückziehen um 1.
statusstring (enum)Veröffentlichungsstatus. Einer von Draft, Changed, Published, Archived.
publishobjectVeröffentlichungsverlauf. Siehe die Schlüssel unten.

Schlüssel des Objekts publish:

SchlüsselTypBeschreibung
versionintegersys.version zum Zeitpunkt der letzten Veröffentlichung.
atstring (date-time)Zeitpunkt der letzten Veröffentlichung.
firstAtstring (date-time)Zeitpunkt der ersten Veröffentlichung. Bleibt auch beim Zurückziehen erhalten.
counterintegerKumulierte Anzahl der Veröffentlichungen.
byRefer<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üsselTypBeschreibung
idstring (1-64)Eindeutige Kennung des Feldes. Wird beim Erstellen automatisch vergeben.
namestring (1-50)Der im Content-Studio angezeigte Feldname (z. B. Produktname).
apiNamestring (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, -, _).
typestring (enum)Der Typ des Feldes. Siehe Feldarten (type) unten.
localizedbooleanGibt an, ob mehrsprachige Werte möglich sind.
requiredbooleanGibt an, ob eine Eingabe erforderlich ist.
validationsarrayDie Liste der Validierungsregeln, die auf den Wert angewendet werden. Ohne Regeln ein leeres Array []. Siehe Validierung (validations) unten.
disabledbooleanGibt an, ob das Feld deaktiviert ist.
targetTypestring (enum)Nur wenn type gleich Refer ist. Ob das Verweisziel Content oder Media ist.
itemsobjectNur 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.

typeBedeutungWertgrenzeHinweis
ShortTextKurzer einzeiliger Text.64 ZeichenGeeignet für die exakte Abfrage nach Schlüsselwörtern.
LongTextLanger Fließtext.5.120 ZeichenUnterstützt die Volltext-Ähnlichkeitssuche.
RichTextFormatierter Fließtext.204.800 ZeichenNicht durchsuchbar, dient der Darstellung mit Formatierung.
LongGanzzahl.Beispiel: Preis price.
NumberReelle Zahl (mit Nachkommastellen).Nur endliche WerteUnendlich und NaN werden nicht akzeptiert.
BooleanWahr/falsch.
DateDatum/Uhrzeit.
JsonBeliebige JSON-Struktur.5.120 Zeichen serialisiertAuch die Zahlen innerhalb der Struktur müssen endlich sein.
LocationStandort (Koordinaten).latitude -90 bis 90, longitude -180 bis 180
ReferVerweis auf eine andere Ressource.Mit targetType wird Content oder Media angegeben.
ArrayArray, das mehrere Werte aufnimmt.64 ElementeWird 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üsselFormBeschreibung
size{ "min", "max" }Minimum und Maximum der Textlänge oder der Arraygröße.
uniquebooleanVerbietet 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.
inarrayListe 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.
mediaMimetypeGrouparrayListe 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).
referContentTypearrayListe der Content Type, deren Verweis in einem Refer-Feld (Content) zulässig ist. Jeder Eintrag hat die Form Refer<ContentType>.
messagestringEine 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.

statusBedeutung
DraftNicht veröffentlichter Zustand.
ChangedWar bereits veröffentlicht, aber die seitdem erfolgten Änderungen sind noch nicht veröffentlicht.
PublishedVeröffentlicht und ohne unveröffentlichte Änderungen.
ArchivedArchivierter 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

ZielEinschränkung
name (Content Type)1-64 Zeichen, erforderlich.
descriptionHöchstens 128 Zeichen, optional.
fields1-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 auf Draft zu setzen, und löschen Sie ihn dann (auch der Status Archived ist 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.

CodeBedingung
WGL422010Der 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.
WGL422009Der Aufrufer wollte einen Content Type im veröffentlichten Status (Published, Changed) löschen, ohne diesen Content Type zuvor zurückzuziehen.
WGL422006Der Aufrufer wollte einen Content Type zurückziehen, der nicht im veröffentlichten Status ist.
WGL400002fields überschreitet die zulässige Anzahl. Erstellen, Bearbeiten und Teilbearbeiten unterliegen alle dieser Prüfung.
WGL400045Der in displayField eingetragene Wert kommt in keinem apiName innerhalb von fields dieses Content Type vor.
WGL400046Bei einem Feld, das eine zugehörige Eigenschaft mit angeben muss, fehlt genau diese Eigenschaft. Array benötigt items, Refer benötigt targetType.
WGL400040Zwei 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.