Verfügbare Datentypen
Die Beschreibung der Felder lehnt sich an den fastest-validator an. Unterstützt wird aber nur eine Auswahl seiner Typen und Parameter, dazu kommen einige CMS-eigene Typen. Nur type ist immer anzugeben. Unbekannte Parameter werden abgewiesen.
Als Beispiel wird eine API tutorial/people Schritt für Schritt aufgebaut. Die Beispiele verwenden jeweils alle unterstützten Einstellungen, ob im Einzelfall sinnvoll oder nicht. In den Kapiteln steht { "…": "wie zuvor" } für die bereits beschriebenen Felder. Die vollständige Beschreibung zum Kopieren steht unten.
| Typ | Kapitel | Lokalisierbar |
|---|---|---|
string | Zeichenkette | ja |
html | HTML-Inhalt | ja |
number | Zahl | ja |
boolean | Wahrheitswert | ja |
email | ja | |
object | Substruktur | ja |
array | Feld (Liste) | ja |
file | Mediendatei | ja |
geo-point | GEO-Koordinate | nein |
compound | Makro | ja |
Gemeinsame Parameter
| Parameter | Bedeutung |
|---|---|
type | Datentyp, Pflicht |
optional | true: Das Feld darf fehlen. Voreinstellung false, das Feld ist also Pflicht. |
localizable | true: Der Wert ist je Sprache getrennt, siehe Mehrsprachigkeit. |
cms | Meta-Daten für Datenbank und Pflegeanwendung |
Bei lokalisierbaren Feldern wird in der Schnittstelle statt des einfachen Werts immer ein Objekt mit einem Eintrag je Sprache übertragen, z. B. { "de": "…", "en": "…" }.
Vollständiges Beispiel
Die API tutorial/people mit allen Feldern aus den Kapiteln Zeichenkette bis Feld:
{
"application": "Tutorial",
"label": "People",
"project": "inSynergie CMS",
"fields": {
"name": {
"cms": { "column": true },
"empty": false,
"max": 40,
"min": 4,
"type": "string"
},
"age": {
"cms": { "column": true },
"integer": true,
"max": 120,
"min": 0,
"optional": true,
"type": "number"
},
"married": {
"cms": { "column": true },
"optional": true,
"type": "boolean"
},
"email": {
"cms": { "column": true },
"type": "email"
},
"address": {
"cms": { "column": true },
"optional": true,
"properties": {
"city": { "cms": { "column": true }, "optional": true, "type": "string" },
"street": { "optional": true, "type": "string" },
"postalcode": { "optional": true, "type": "string" }
},
"strict": true,
"type": "object"
},
"colleagues": {
"optional": true,
"items": {
"properties": {
"first": { "optional": true, "type": "string" },
"last": { "type": "string" }
},
"strict": true,
"type": "object"
},
"min": 0,
"max": 5,
"type": "array"
}
}
}
curl -X POST -u 'CMS_User_01:<kennwort>' -H 'Content-Type: application/json' \
-d @people.json https://cms.example.org/schema/tutorial/people
Ein passender Datensatz:
{
"name": "Nicolas",
"age": 42,
"married": false,
"email": "nicolas@example.org",
"address": { "city": "Bonn" },
"colleagues": [{ "first": "Ada", "last": "Lovelace" }]
}