wiki-spaces-s1-pages-2629435393-3-dot-3-dot-plus-aufbau-plus-der-plus-url.md
By Frank Sprenger
3 min
Add a reaction
Jede Url ist nach folgendem Schema aufgebaut:
https://[baseurl]/[Virtual Directory]/[Application]/[Contract]/[Dataset]/[Ressourcentyp]
Je nach der Art der Verwendung der Sage 100 API sind die Angaben für die Basis Adresse unterschiedlich:
Bei Verwendung der API über das Sage API Gateway
https://connectivity.sage.de/ws/[EntitlementID]
|
Segment Name
|
Beispiel
|
Beschreibung
| | --- | --- | --- |
|
Segment Name
|
Beispiel
|
Beschreibung
| | --- | --- | --- | |
EntitlementID
|
260662
|
Die EntitlementID ist die eindeutige ID einer Kundeninstallation und muss immer angegeben werden
|
Bei Verwendung der API über den direkten Zugriff innerhalb einer Installation auf den Applikationsserver
https://[host]:[port]
Die folgenden Segmente sind für beide Varianten gleich:
|
Segment Name
|
Beispiel
|
Beschreibung
| | --- | --- | --- |
|
Segment Name
|
Beispiel
|
Beschreibung
| | --- | --- | --- | |
Virtual Directory
|
sdata/
|
Ein virtuelles Verzeichnis das besagt, dass die Bearbeitung der Anfrage auf darunter liegenden Segmenten, dem Sage 100 spezifischen SData Protokoll folgt. Dieses Segment muss immer den konstanten Wert "sdata" enthalten.
| |
Application
|
ol/
|
Name der Zielapplikation. Für die Sage 100 API ist dies immer "ol".
| |
Contract
|
apiKunden.Sage.API/
|
Name der API (ein Vertrag beinhaltet mehrere Endpunkte/Ressourcen)
| |
Dataset
|
OLDemo;123/
|
Der Dataset, der den Datenkontext angibt. In der Sage 100 API muss dies immer im Format "[Name der Datenbank];[Nummer des Mandaten]" erfolgen.
| |
Ressourcentyp
|
eptKunden.Sage.API
|
Der Endpunkt der Anfrage. Ein Endpunkt definiert immer einen Ressourcentyp.
|
In den Beispielen wird [baseurl] als Platzhalter für die Basis-Url verwendet. Der Platzhalter ist durch die oben erklärte Basis-Url, je nach Verwendung, zu ersetzen.
Auf einem Ressourcentyp können in der Regel CRUD-Operationen gegen eine einzelne Ressource aber auch Queries ausgeführt werden.
Ein Ressourcentyp wird dann angesprochen wenn das letzte Segment der URL nur den Namen der Typs beinhaltet.
https://[baseurl]/sdata/ol/apiKunden.Sage.API/OLDemo;123/eptKunden.Sage.API
Solche Urls sind für folgende Anfragearten zu verwenden:
Queries (GET) zum Lesen einer Liste von Ressourcen
Erzeugen (POST) einer Ressource
Das Sage 100 API Protokoll erkennt den Zugriff auf eine einzelne Ressource durch das anfügen eines in einer Klammer '(' ')' eingeschlossenen Schlüsselwertes - in einfachen Ausführungszeichen - oder eines booleschen Ausdrucks:
https://[baseurl]/sdata/ol/apiKunden.Sage.API/OLDemo;123/eptKunden.Sage.API('RDEwMDAy;MQ')
Die obige Url adressiert von dem Ressourcentyp 'eptKunden.Sage.API' der API 'apiKunden.Sage.API' die Ressource, die durch den Schlüssel 'RDEwMDAy;MQ' eindeutig identifiziert ist.
Urls auf einzelne Ressourcen sind zu verwenden für:
Abrufen der Daten einer Ressource (GET)
Ändern der Daten einer Ressource (PUT/PATCH)
Entfernen einer Ressource (DELETE)
Eindeutige Schlüssel einer Ressource sind in der Regel mit Werten aus mehreren Feldern zusammengesetzt.
Die Werte der Schlüsselfelder sind base64 encodiert und mit einem Semikolon ";" getrennt zusammengefasst.
Bei welchen Feldern es sich um ein Schlüsselfeld handelt und deren Reihenfolge ist der Referenzdokumentation zu entnehmen.
Beispiel:
|
Schlüsselfeld
|
Wert
|
Base64 encoded
|
Ergebnis
| | --- | --- | --- | --- |
|
Schlüsselfeld
|
Wert
|
Base64 encoded
|
Ergebnis
| | --- | --- | --- | --- | |
key1
|
"D10002"
|
"RDEwMDAy"
|
"RDEwMDAy;MQ"
| |
key2
|
1
|
"MQ"
|
Falls eine Ressource zuvor über eine Query gesucht wurde, ist im Ergebnis der bereits codierte Primärschlüssel im System-Property '$key' enthalten.
Über die Template-Url kann ein leerer Datensatz, gefüllt mit Default-Werten abgerufen werden. Eine Template-Url setzt sich aus der Ressourcentyp-Url, gefolgt von dem Schlüsselwort $template als letztem Segment, zusammen.
Die folgende Url
https://[baseurl]/sdata/ol/apiArtikel.Sage.API/OLDemo;123/eptArtikel.Sage.API/$template
liefert bei einer Get-Operation beispielhaft folgendes Ergebnis:
{ "CustomFields": [], "Artikelnummer": "", "Steuerklasse": 1, "DezimalstellenVK": 0, "DezimalstellenBasis": 0, "DezimalstellenLager": 0, "UmrechnungsFaktorLME": 1.0, "Lagerfuehrung": -1, "Besteuerungsart": -1, "AuspraegungID": 0, "Herkunft": 0, "Erloescode": 0, "IstBestellartikel": -1, "IstRabattfaehig": -1, "IstSkontierfaehig": -1, "IstVerkaufsartikel": -1, "PreiseinheitVK": 1, "UmrechnungsfaktorVK": 1.0, "Gewicht": 0.0, "GewichtLME": 0.0, "KalkulatorischerEK": 0.0, "Meldebestand": 0.0 }
Während die vorher beschriebene Urls zum Lesen und Bearbeiten von Daten dienen, ist es die Aufgabe von Intermediate Urls Informationen der Installation zur Verfügung zu stellen. Diese Informationen werden benötigt um
zu überprüfen, ob die adressierte Installation die gewünschte API in der benötigten Version zur Verfügung stellt (Contract) und
die vorhandene Datasets der Installation zu kennen (diese sind i.d.R. in jeder Installation unterschiedlich).
Ein GET Anfrage auf eine Application-Url liefert eine Liste der APIs, die diese Installation unterstützt.
https://[baseurl]/sdata/ol/
Liefert das Ergebnis in folgender Form:
{ "$url": "https://[baseurl]/sdata/ol/", "$descriptor": "Contracts", "$updated": "2022-04-07T13:30:59+02:00", "$resources": [ { "$url": "https://[baseurl]/sdata/ol/apiArtikel.Sage.API", "$key": "apiArtikel.Sage.API", "$descriptor": "Artikel", "$version": "1.0.0", "$updated": "2022-04-07T13:30:59+02:00" }, { "$url": "https://[baseurl]/sdata/ol/apiBelegerfassung.Sage.API", "$key": "apiBelegerfassung.Sage.API", "$descriptor": "Belegerfassung", "$version": "1.0.0", "$updated": "2022-04-07T13:30:59+02:00" }, { "$url": "https://[baseurl]/sdata/ol/apiKunden.Sage.API", "$key": "apiKunden.Sage.API", "$descriptor": "Kunden", "$version": "1.0.0", "$updated": "2022-04-07T13:30:59+02:00" }, { "$url": "https://[baseurl]/sdata/ol/apiLieferanten.Sage.API", "$key": "apiLieferanten.Sage.API", "$descriptor": "Lieferanten", "$version": "1.0.0", "$updated": "2022-04-07T13:30:59+02:00" } ] }
Ein GET Anfrage auf eine Contract-Url liefert eine Liste der Datasets der angefragten Installation.
https://[baseurl]/sdata/ol/apiKunden.Sage.API
Liefert ein Ergebnis in folgender Form:
{ "$url": "[baseurl]/sdata/ol/apiKunden.Sage.API", "$descriptor": "Datasets", "$updated": "2022-04-07T13:35:18+02:00", "$resources": [ { "$url": "[baseurl]/sdata/ol/apiKunden.Sage.API/OLDemoReweAbfD;123", "$key": "OLDemoReweAbfD;123", "$descriptor": "OLDemoReweAbfD, Mandant: Mustermann & Söhne GmbH, Frankfurt", "$updated": "2022-04-07T13:35:18+02:00" }, { "$url": "[baseurl]/sdata/ol/apiKunden.Sage.API/OLDemoReweAbfD;999", "$key": "OLDemoReweAbfD;123", "$descriptor": "OLDemoReweAbfD, Mandant: Test OHG", "$updated": "2022-04-07T13:35:18+02:00" }, ] }
Für alle Contracts (APIs) werden dich gleichen Datasets zurückgeliefert. Es werden nur die Datasets zurückgeliefert, die in der Installation für die API freigegeben wurden. Bei einer direkten Anfrage gegen den Applikationsserver werden alle vorhandenen Datasets zurückgeliefert.
Collapse action bar
View all comments
Open Details Panel
Create page
Open Rovo Chat
Add a comment
Add a reaction