Wiki-Quellcode von Release-API

Version 17.1 von MACH ProForms GmbH am 15.02.2021

Zeige letzte Bearbeiter
1 ## Allgemeines
2
3 Form-Solutions stellt eine Schnittstelle zur Verfügung, die alle im System hinterlegten Veröffentlichungen ausliest. Diese Veröffentlichungen beinhalten sowohl Assistenten als auch PDF-Formulare. Die Architektur beruht auf dem REST-Standard und ist in der Lage die angefragten Dokumente entweder im JSON-Format oder im CSV-Format auszuliefern. Wie bei allen von Form-Solutions angebotenen Schnittstellen unterliegt auch diese einem Authentifizierungskonzept. Hierbei werden die Zugriffsberechtigungen auf die getätigte Anfrage geprüft und sichergestellt, dass keine Dokumente ausgeliefert werden, auf die der Zugriff verweigert ist. Eine Besonderheit hierbei stellt der Supermandant dar, welcher als übergeordnete Instanz Zugriff auf alle unterliegenden Mandanten hat. Im nachfolgenden Dokument werden die genauen Funktionalitäten im Einzelnen beschrieben.
4
5 ___
6
7 ## Voraussetzungen
8
9 Um die Release-API nutzen zu können sind folgende Voraussetzungen zu erfüllen:
10
11 - Der Formularserver benötigt mindestens das [Release](https://wiki.form-solutions.de/wiki/docwiki/view/Main/13_Release-Notes/) mit der Version 4.46.0
12 - Es muss für die Authentifizierung die Mandantennummer und der API-Key vorhanden sein.
13
14 ___
15
16
17 ## Verwenden der Schnittstelle
18
19 ### Einstiegspunkt
20
21 Da die Schnittstelle auf dem REST-Standard beruht, kann diese über eine URL erreicht werden. Hierbei gibt es einen festen Basispfad und einen entsprechenden Endpunkt. Der Basispfad ist bei jedem Aufruf gleich, wobei sich die Endpunkte je nach Funktion unterscheiden können.
22
23 ```javascript
24 Basispfad:
25 https://<server-name>/release-api
26 ```
27
28 #### Endpunkte
29
30 Ein Endpunkt spricht eine Funktionalität der Schnittstelle an. Da der Basispfad immer gleich ist, können über diverse Endpunkte mehrere Funktionalitäten in die Schnittstelle verbaut werden.
31 Im Folgenden wird eine Auflistung aller aktuell unterstützten Endpunkte aufgeführt.
32
33 ```javascript
34 Endpunkt: /releases
35
36 Pfadbeispiel:
37 https://<server-name>/release-api/releases
38 ```
39
40 _Beschreibung: Der hier aufgeführte Endpunkt liefert alle Veröffentlichungen eines Mandanten (sowohl Assistenten als auch PDF-Formulare) zurück. Hierbei besteht die Möglichkeit sich als einzelner Mandant oder als Supermandant anzumelden. Die detaillierte Unterscheidung dieser beiden Methoden findet sich unter dem Punkt Authentifizierung._
41
42 ```javascript
43 Endpunkt: /releases/assistants
44
45 Pfadbeispiel:
46 https://<server-name>/release-api/releases/assistants
47 ```
48
49 _Beschreibung: Der hier aufgeführte Endpunkt liefert alle Veröffentlichungen von Assistenten eines Mandanten zurück. Hierbei besteht die Möglichkeit sich als einzelner Mandant oder als Supermandant anzumelden. Die detaillierte Unterscheidung dieser beiden Methoden findet sich unter dem Punkt Authentifizierung._
50
51 ```javascript
52 Endpunkt: /releases/pdfs
53
54 Pfadbeispiel:
55 https://<server-name>/release-api/releases/pdfs
56 ```
57
58 _Beschreibung: Der hier aufgeführte Endpunkt liefert alle Veröffentlichungen von PDF-Formularen eines Mandanten zurück. Hierbei besteht die Möglichkeit sich als einzelner Mandant oder als Supermandant anzumelden. Die detaillierte Unterscheidung dieser beiden Methoden findet sich unter dem Punkt Authentifizierung._
59
60 ```javascript
61 Endpunkt: /releases/secureIds
62
63 Pfadbeispiele:
64 https://<server-name>/release-api/releases/secureIds
65 https://<server-name>/release-api/releases/assistants/secureIds
66 https://<server-name>/release-api/releases/pdfs/secureIds
67 ```
68
69 _Beschreibung: Der hier aufgeführte Endpunkt liefert ausschließlich alle "SecureId's" der angefragten Veröffentlichungen zurück. Eine SecureId dient zur eindeutigen Idenfizierung einer Veröffentlichung. Hierbei besteht die Möglichkeit sich als einzelner Mandant oder als Supermandant anzumelden. Die detaillierte Unterscheidung dieser beiden Methoden findet sich unter dem Punkt Authentifizierung._
70
71 ![[Anzeige der SecureID|@Release-API-SecureID.jpg]]
72
73 ### Authentifizierung
74
75 Um die Schnittstelle verwenden zu können, muss eine Authentifizierung vorgenommen werden.
76 Für diese ist die Mandantennummer und der dafür hinterlegte API-Schlüssel notwendig, wobei die Mandantennummer als Benutzername und der API-Schlüssel als Passwort gilt.
77 Sollte noch kein passender API-Schlüssel vorliegen, kann dieser beim Administrator des Formularservers beantragt werden.
78 Generell werden die beiden im Folgenden aufgeführten Authentifizierungsarten unterschieden.
79
80 Mit dem folgenden Link wird auf eine Oberfläche weitergeleitet, bei der die Schnittstelle auf ihre Funktionalität getestet werden kann.
81 Die erforderlichen Authentifizierungsdaten dienen zu Demonstrationszwecken und lauten wie folgt:
82
83 *Beispiel: [https://vertrieb.form-solutions.de/release-api/swagger-ui.html](https://vertrieb.form-solutions.de/release-api/swagger-ui.html)*
84 <br>
85 *Mandantennummer: 88888888-8888*
86 <br>
87 *API-Schlüssel: npcnqwpefwAFWFAFAFqwcqcqwc23rf23rzhbnerg*
88
89
90
91 > ***Hinweis:***
92 > Die verwendete Authentifizierungsart ist eine [Basis-Authentifizierung](https://de.wikipedia.org/wiki/HTTP-Authentifizierung#Basic_Authentication).
93
94 #### Authentifizierung als Supermandant
95
96 Bei der Authentifizierung als Supermandant liegen Berechtigungen auf alle im System hinterlegten Benutzer vor. Somit ist es möglich, alle Veröffentlichungen auf dem Formularserver mandantenübergreifend auszulesen. Gleichzeitig bietet die Schnittstelle über einen Parameter die Möglichkeit auch nur die Veröffentlichungen für einen oder mehrere Mandanten auszulesen. Dieses Verhalten wird über den Parameter \<organizationId\> gesteuert.
97
98 **Aufruf ohne Parameter \organizationId\**
99
100 ```javascript
101 Pfadbeispiel: https://<server-name>/release-api/releases
102 ```
103
104 _Beschreibung: Wird die Schnittstelle als Supermandant ohne den Parameter < organizationId > aufgerufen, so werden alle Veröffentlichungen aller im Formularserver hinterlegten Mandanten ausgelesen. Dies betrifft sowohl Assistenten als auch PDF-Formulare._
105
106
107 **Aufruf mit Parameter \organizationId\**
108
109 ```javascript
110 Pfadbeispiel: https://<server-name>/release-api/releases?organizationId=12345678-1234
111 ```
112
113 Beschreibung: Wird die Schnittstelle als Supermandant mit dem Parameter < organizationId > aufgerufen, so werden alle Veröffentlichungen für den in dem Parameter aufgeführten Mandanten ausgelesen. Dies betrifft sowohl Assistenten als auch PDF-Formulare. Zusätzlich zu dieser Funktion können auch mehrere Mandantennummern kommasepariert als Wert des Parameters eingetragen werden. Somit würden alle Veröffentlichungen der angegebenen Mandantennummern ausgelesen werden.
114
115 #### Authentifizierung als einzelner Mandant
116
117 Bei der Authentifizierung als einzelner Mandant liegen Berechtigungen auf alle Veröffentlichungen des eigenen Mandanten vor. Um die Schnittstelle nach einer solchen Authentifizierung nutzen zu können, wird die oben beschriebene Basis-Url sowie der gewünschte Endpunkt verwendet.
118
119 ```javascript
120 Pfadbeispiel: https://<server-name>/release-api/releases
121 ```
122
123 Da wir mit dieser Art der Authentifizierung bereits eindeutig als Mandant identifiziert sind, wird an dieser Stelle keine Filterung der Mandanten über einen gesonderten Parameter benötigt. Mit der Nutzung der oben beschriebenen URL werden nun alle Veröffentlichungen von Assistenten und PDF-Formularen des angemeldeten Mandanten ausgehändigt.
124
125 ___
126
127 ## Parameter
128
129 Über die nachfolgenden Parameter kann die Schnittstelle entsprechende Filterungen der Suchanfragen vornehmen. Diese werden hierbei als Query-Parameter übergeben.
130
131 > **organizationId**
132
133 *Beschreibung: Durch diesen Parameter kann gesteuert werden, welche Mandanten von der Suchanfrage betroffen sind. Liegen keine Berechtigungen auf die angegebenen Mandantennummern vor, so werden diese nicht bei der Suche berücksichtigt. Es können mehrere Mandantennummern kommasepariert eingegeben werden.*
134
135 ```javascript
136 Pfadbeispiel: https://<server-name>/release-api/releases?organizationId=12345678-1234
137 ```
138
139 > **secureId**
140
141 *Beschreibung: Durch diesen Parameter können einzelne Veröffentlichungen mit den angegebenen secureId's an allen Endpunkten ermittelt werden. Die Werte können kommasepariert eingegeben werden.*
142
143 ```javascript
144 Pfadbeispiel: https://<server-name>/release-api/releases?secureId=5b9b53dad5de93019b42df8c
145 ```
146
147 ### Ausgabeformate
148
149 Die Schnittstelle unterstützt insgesamt zwei unterschiedliche Ausgabeformate. Standardmäßig wird hier ein Dokument im JSON-Format ausgehändigt, während über einen Parameter im Header der Anfrage die Ausgabe im CSV-Format erzwungen werden kann.
150
151 #### Ausgabe im JSON-Format
152
153 Werden keine Header-Parameter mitgegeben, erfolgt die Ausgabe standardmäßig im JSON-Format. Hierbei wird eine Ausgabe erzeugt, welche verschiedene Felder beinhaltet. Welche Bedeutung diese Felder haben und wie eine Beispielausgabe aussehen kann, wir [[hier|Main.02_FSSchnittstellen.02_ReleaseAPI.01_Ressourcen.01_JSON]] beschrieben.
154
155 #### Ausgabe im CSV-Format
156
157 Mit dem Header-Parameter „accept“ kann die Ausgabe im CSV-Format erzwungen werden. Hierbei sollte der oben erwähnte Parameter wie folgt aufgebaut sein: *accept = text/csv*. Auch hier beinhaltet die Ausgabe verschiedene Felder, der Bedeutung inklusive einem Ausgabebeispiel [[hier|Main.02_FSSchnittstellen.02_ReleaseAPI.01_Ressourcen.02_CSV]] nachgelesen werden kann.
158
159 ___
160
161 ## Einschränkungen
162
163 Im derzeitigen Zustand hat die Schnittstelle folgende Einschränkungen:
164 - Es werden nicht alle möglichen Konfigurationsoptionen angezeigt
165 - Fehlerhafte Konfigurationsfelder werden ausgeblendet
166
167 Weiterhin werden nur "gültige" Veröffentlichungen angezeigt. Für Assistenten bedeutet das, dass
168
169 - der Assistent seine Gültigkeitsperiode bereits begonnen hat
170 - der Assistent seine Gültigkeitsperiode nicht beendet hat
171
172 Für PDF bedeutet das, dass
173 - die aktuelle Formularversion aktiv ist
174
175
176 Zudem ist die Schnittstelle nicht zur Verwendung mit Browsern gedacht. Es werden daher keine Garantien über die vollständige Kompatibilität der Schnittstelle mit Browsern gemacht. Die browsergestützte Verwendung erfolgt auf eigene Gefahr.
177 Um die Schnittstelle verwenden zu können, kann diese entweder programmatisch oder über entsprechende Hilfsprogramme (Insomnia, Postman, ...) angesprochen werden.
178 ___
179
180 ## Beispielanwendung
181
182 Um die Schnittstelle beispielhaft bedienen zu können, wird eine Demoanwendung unter folgender URL bereitgestellt: https://vertrieb.form-solutions.de/release-api/swagger-ui.html
183
184 Ebenso steht dem Anwender mit dieser Beispielanwendung eine technische Dokumentation bereit, welche die einzelnen Ressourcen detaillierter beschreibt.