Grundlagen

Die OneGov GEVER API ist eine RESTful HTTP API.

Dies bedeutet, dass Operationen über die API via HTTP Requests durchgeführt werden, welche von einem HTTP Client abgesetzt werden.

HTTP ist ein Protokoll für die Kommunikation zwischen einem Client und einem Server, und basiert auf dem Austausch von Anfragen des Clients (Request) und Antworten des Servers (Response).

Die Verwendung der API funktioniert so, dass Requests auf die URL des entsprechenden Inhaltsobjekts gemacht werden, aber ein spezieller HTTP-Header verwendet wird welchen den Request als API-Request auszeichnet (um ihn von einem Request eines normales Browsers abzugrenzen).

Für die meisten Requests ist es notwendig, dass sich der Benutzer zuerst an der API authentisiert, siehe dazu das Kapitel zur Authentisierung.

Änderungen an der API werden im API Changelog dokumentiert.


Request

Requests an die API setzen sich zusammen aus einem HTTP Verb, einer URL, Request-Headern, und für gewisse Typen von Requests, einem Request-Body im JSON Format.

HTTP Verb

Im Kapitel Operationen ist beschrieben, auf welche HTTP Verben die verfügbaren Operationen gemappt sind.

URL

Die URL eines Requests ist bestimmt durch das Objekt, für welches eine Operation durchgeführt werden soll. Diese URL ist in der Regel für das entsprechende Objekt in der Adresszeile des Browsers sichtbar.

Headers

Die API verwendet JSON für die Serialisierung von Daten (für die Eingabe wie auch die Ausgabe).

Dementsprechend muss bei der Anfrage (Request) der HTTP-Header Accept: application/json gesetzt werden, damit ein Request an die API weitergeleitet wird.

Beispiel-Request:

GET /ordnungssystem HTTP/1.1
Accept: application/json

Dieser Header muss bei jedem Request auf die API gesetzt werden, und wird in den folgenden Beispielen daher nicht mehr immer explizit erwähnt.

Body

Bestimmte Request-Typen (POST und PATCH) brauchen weitere Informationen, welche in Form eines Request-Bodies im JSON Format mitgegeben werden. Wie der Inhalt dieses Bodies genau beschaffen sein muss, ist im Kapitel Operationen beschrieben.


Response

Wenn eine Response einen Body hat, ist dies immer ein JSON-Dokument:

Beispiel-Response:

HTTP/1.1 200 OK
Content-Type: application/json

{
   "@context": "http://www.w3.org/ns/hydra/context.jsonld",
   "@id": "https://example.org/ordnungssystem/fuehrung/dossier-23",
   "@type": "opengever.dossier.businesscasedossier",
   "oguid": "fd:12345",
   "title": "Titel des Objekts",
   "review_state": "dossier-state-active",
    "...": "..."
}

(Gekürzt - vollständige Beispiele von konkreten Responses sind in späteren Abschnitten zu finden)

Die mit einem @ Zeichen präfixten Keys haben eine spezielle Beduetung, und entsprechen nicht einem Feld auf dem Inhaltstyp, sondern sind JSON-LD (Linked Data) Metadaten:

Key Bedeutung Beschreibung
@context Kontext Wird immer denselben Wert haben, eine URI zum Hydra Kontext - dieser Key hat für die OneGov GEVER API im Moment keine Relevanz.
@id Eindeutige URL Die eindeutige URL zu einem Objekt.
@type Typ eines Objekts Der Typ eines Objekts. Dieser Typ entspricht einem der unter Inhaltstypen angegebenen Typen, und lässt den Client so wissen, welche Felder mit welchen Datentypen in einer Antwort zu erwarten sind.

Zusätzlich zu den oben aufgeführten JSON-LD Attributen gibt es für Objekttypen, welche einen Workflow haben, ein allgemeines Property review_state, welches den aktuellen Workflow-State enthält:

Key Bedeutung Beschreibung
review_state Workflow-State Falls das Objekt einen Workflow hat, enthält dieses Property den aktuellen Worflow-State.

Siehe Workflow für Details bezüglich Workflows.