# Formate ## Zeichensatz / Kodierung Unabhängig vom Format erfolgt die Übergabe und Rückgabe der Daten immer `UTF8` kodiert. Nutzt Ihre Anwendung eine andere Zeichen-Kodierung (z.B. ISO-8859-1), so müssen die Buchungs-Daten vor der Übergabe in das entsprechende Format konvertiert werden. ## Validierung der Anfragen Alle schreibenden Anfragen (z.b. das Buchen eines Meldescheins) mithilfe eines JSON-Schemas validiert, um gültigen Datenaufbau zu gewährleisten. Entsprechende Schemata sind unter den jeweiligen Punkten der Dokumentation vermerkt. Offizielle Dokumentation und Syntax-Erklärung unter [json-schema.org](https://json-schema.org/) Info Anfragen in einem anderen Format (z.B.) werden **ebenfalls** über die Schemata geprüft, werden zurvor jedoch intern in JSON umgewandelt. ## Unterstützte Formate Die Schnittstelle kann mit verschiedenen Formaten verwendet werden. Diese werden in den folgenden Punkten erläutert und es werden Besonderheiten hervorgehoben. Folgende Formate werden unterstützt:
FormatCodeVerwendetURL-Parameter
JSON`json`**Standard**`?format=json` (nicht notwendig,da Standard)
XML`xml`explizite Angabe`?format=xml`
JSON Endpunkt aufrufen
``` POST /endpunkt-url # oder explizit POST /endpunkt-url?format=json ```
XML Endpunkt aufrufen
``` POST /endpunk-url?format=xml ```
Achtung Der `format` Parameter muss sowohl bei lesenden (`GET`), als bei schreibenden (`POST`,`PUT`) in als URL-Parameter übergeben werden, wenn ein anderes Format, als der Standard verwendet werden soll. --- ## JSON Es kann nur gültiger JSON Syntax nach der Spezifikation angenommen werden werden. Leerstellen und/oder Zeilenumbrüche sind hierbei nicht relevant.
``` {"a":"b","c":"d"} ```
ist äquivalent zu:
``` { "a": "b", "c": "d" } ```
Bibliotheken, die zur Erstellung des JSON Formats verwendet werden können, finden sich in allen gängigen Programmiersprachen sowie umgebungen, was die Implementierung vereinfacht. Eine Auflistung gängiger Bibliotheken sind unter json.org aufgelistet. Offizielle Spezifikation und Beispiele: [json.org](https://json.org/) --- ## XML Die API lässt sich ebenfalls über das XML-Format ansprechen. Alle URL-Endpunkte der API bleiben bestehen müssen jedoch mit dem `format` Parameter übergeben werden (siehe unten) Info Sowohl Übergabe, als auch Rückgabe der API werden in XML übermittelt. ### URL Parameter Um das XML Format zu verwenden ist es notwendig hinter allen aufrufenden URLs den GET Parameter `format`mit dem Wert `xml` zu verwenden. Um eine Authentizierung im XML-Format aufzurufen lautet die URL somit: `POST /api/token/?format=xml` ### Besonderheiten XML-Format #### Root-Element XML-Dokumente werden **immer** mit dem Element `<root>` beginnen und entsprechend mit `root>` enden Beispiel:
``` ```
#### Listen / Arrays Array Elemente werden **immer** mit dem Tag `<list-item>` versehen Beispiel: Übergabe einer Liste von 3 Meldescheinen
``` ```