Codierung der Daten
...
Die Nutzdaten werden als JSON-Objekt in Form von Name-Wert-Paaren übergeben. In der einfachen Form sieht das so aus:
Daten:
{
"ABCEinteilung":"2",
"Name":"abc"
}
Sollen gleichzeitig Detaildatensätze übergeben werden, so muss das in folgender Form geschehen:
{
"<Attribut-Name>":"<Attribut-Wert>"
"childList": [
{
"meta": {
"name": "<Entität-Name>",
"parameters": [
{
"name": "<Parameter-Name>",
},{
...
...
}]
}
"data": [<Array mit den Daten gemäss properties>]
},
{
"meta":...
...
}]
}
Konkret im Beispiel eines Updates auf einen Kurs mit 2 Unterlisten zu Grundausbildungen und Anstellungsarten sieht es so aus:
{
"BildungsschwerpunktID":"13",
"childlist": [
{
"meta": {
"name": "GrundausbildungListe",
"parameters": [{
"name": "StichwortID"
}]
},
"data": [[7], [8]]
},
{
"meta": {
"name": "AnstellungsartListe",
"parameters": [{
"name": "StichwortID"
}]
},
"data": [[1], [2], [3]]
}
]
}
...
Als Konsequenz werden mit einer leeren Daten-Liste alle vorhandenen Einträge gelöscht:
…
"name": "AnstellungsartListe",
"parameters": [{
"name": "StichwortID"
}]
},
"data": []
…
Ist dies nicht gewollt und die vorhandene Liste soll nicht verändert werden, darf die Substruktur nicht übergeben werden.
...
Die generelle Rückgabe-Struktur sieht wie folgt aus:
{
"resource": [{
"type": "<Resourcentyp "object">",
"meta": {
"name": "<Entität-Name im Kontext der Abfrage>",
"description": "<Beschreibung>",
"parameters": [ Nur bei Views und Methoden
{
"name": "<Parameter-Name>",
"description": "<Beschreibung>",
"required": <Ist Pflichtfeld [true|false], optional>,
"type": "<Feldtyp number|string|object|boolean|datetime|base64>"
"cardinality": <Kardinalität 1|2147483647>
},{
...
...
}],
"properties": [
{
"name": "<Element-Name>",
"description": "<Beschreibung>",
"primary": <Ist Primärschlüssel [true|false], optional>,
"required": <Ist Pflichtfeld [true|false], optional>,
"type": "<Feldtyp number|string|object|boolean|date-time|base64>"
"links": [
{
"resource": "<Entität-Name ohne Kontext>",
"cardinality": <Kardinalität 1|2147483647>,
<Wiederholung des Meta-Elements> Bei Model-Abfragen wird vom Meta-Element nur der Name zurückgegeben, da der Baum je nach Datenmodell ansonsten ins Unendliche wächst.
}]
},{
...
...
}]
}
"data": [<Array mit den Daten gemäss properties>] Bei Elementen mit Detail-Datensätzen wird der Element-Wert als Array mit 2 Werten ausgegeben, dem Feldwert und einem Array mit den Detaildatensatz-Arrays. Die data-Struktur entspricht exakt derjenigen des properties-Elements.
}]
}
Fehlermeldungen werden in einem analogen Format zurückgegeben:
{
"resource": [{
"type": "<Resourcentyp „message">",
"code": "<ErrorCode mit Errortext>",
"message": "<Detailtext>"
}]
}
Die resource-Elemente können sich wiederholen, wenn unterschiedliche Daten-Strukturen in einem Aufruf übergeben werden.
Beispiel einer komplexen Abfrage einiger Adress-Daten, Attributen des Aufwandkontos und der hinterlegten MWST-Details, sowie der vorhandenen Belege der Adresse 1181:
{
"resource" : [{
"type" : "object",
"meta" : {
"name" : "Adresse",
"description" : "",
"properties" : [{
"name" : "AnredeID",
"description" : "Anrede",
"type" : "number"
}, {
"name" : "Name",
"description" : "Name",
"type" : "string"
}, {
"name" : "Name2",
"description" : "Zweitname",
"type" : "string"
}, {
"name" : "ID",
"description" : "",
"primary" : true,
"required" : true,
"type" : "number",
"links" : [{
"name" : "Beleg",
"resource" : "Beleg",
"cardinality" : 2147483647,
"description" : "",
"type" : "object",
"properties" : [{
"name" : "ArtikelTotal",
"description" : "Artikeltotal",
"type" : "number"
}, {
"name" : "AuftragsNr",
"description" : "Auftrags-Nr.",
"type" : "number"
}, {
"name" : "BelegNr",
"description" : "Nummer",
"type" : "number"
}, {
"name" : "ID",
"description" : "",
"primary" : true,
"required" : true,
"type" : "number"
}, {
"name" : "AdresseID",
"description" : "Adresse",
"type" : "number"
}]
}]
}, {
"name" : "KontoIDAufwand",
"description" : "Vorschlag Aufwandskonto",
"type" : "number",
"links" : [{
"name" : "KontoAufwand",
"resource" : "Konto",
"cardinality" : 1,
"description" : "Vorschlag Aufwandskonto",
"type" : "object",
"properties" : [{
"name" : "Bezeichnung",
"description" : "Bezeichnung",
"type" : "string"
}, {
"name" : "Kontoart",
"description" : "Kontoart",
"type" : "number"
}, {
"name" : "ID",
"description" : "",
"primary" : true,
"required" : true,
"type" : "number"
}, {
"name" : "MWSTID",
"description" : "Vorschlag MWST",
"type" : "number",
"links" : [{
"name" : "MWSTToOne",
"resource" : "MWST",
"cardinality" : 1,
"description" : "Vorschlag MWST",
"type" : "object",
"properties" : [{
"name" : "Aktiv",
"description" : "MWST aktiv",
"type" : "boolean"
}, {
"name" : "Bezeichnung",
"description" : "Bezeichnung",
"type" : "string"
}, {
"name" : "Kuerzel",
"description" : "Kürzel",
"type" : "string"
}, {
"name" : "ID",
"description" : "",
"primary" : true,
"required" : true,
"type" : "number"
}]
}]
}]
}]
}]
},
"data" : [
[null,
"Meine AG",
null,
[1181,
[14835.15, 1024, 11476, 4904, 1181],
[14835.15, 1024, 1024, 4907, 1181],
[42.25, null, 2643, 4914, 1181],
[311.1, null, 2644, 4915, 1181],
[110.3, null, 2645, 4916, 1181]
],
[1000008,
["Einkauf Bier",
3,
1000008,
[2,
[true, "8% MWST", "8%", 2]
]
]
]
]
]
}]
}
Customizing, Modellerweiterungen
...