API-Spezifikation des B2B HUB
Funktionsweise B2B Hub
Die B2B Hub (Message Exchange Service) Integration von einer Anwendung des Geschäftspartners (GP-Anwendung) und einer BAZG Fachanwendung (FA) ist Asynchron (siehe Abbildung unten). Das B2B Hub API bestätigt synchron den empfang einer Meldung mit dem HTTP 201 Status-Code. Alle Meldungen, welche eine GP-Anwendung übermittelt, landen in einer Input Queue. Die GP-Anwendung kann Meldungen in diese Queue schreiben, die übermittelten Meldungen aber nicht via dem API lesen.
Der B2B Hub notifiziert via asynchroner Message, dass eine neue Meldung für eine FA empfangen wurde. Die entsprechende FA liest anschliessend die Meldung, verarbeitet diese und sendet eine Antwortmeldung an den B2B Hub auf die Output Queue. Die GP-Anwendung kann die Output Queue mit verschiedenen Operationen abfragen und Meldungen lesen. Eine Meldung kann mehrfach gelesen werden und wird erst nach einer Retention-Time von 14 Tagen aus der Output Queue gelöscht.
Die Meldungen und das Format von Meldungen, welche via dem B2B Hub ausgetauscht werden, wird jeweils von der entsprechenden FA definiert. Die Meldungen werden ohne Veränderung übertragen. Der B2B Hub tauscht ausschliesslich Meldungen zwischen einer FA und einer GP-Anwendung aus. Die B2B Hub API Versionen können von FA zu FA unterschiedlich sein. Eine FA bestimmt die Versionen der API, welche sie zu einem bestimmten Zeitpunkt unterstützt.
Anwendung Geschäftspartner | Die Anwendung des Geschäftspartners (GP)
|
|---|---|
B2B Hub Fachanwendung | Der B2B Hub bietet einen asynchronen Meldungsaustausch zwischen zwei Systemen, zum Beispiel GP-Anwendung und Passar.
|
BAZG Fachanwendung | Die BAZG Fachanwendung wird mittels einem Event über eingehende Meldungen des GP informiert. Diese werden nach dem Eintreffen des Events von Queue A gelesen und entsprechend der Fachapplikationslogik verarbeitet. Anschliessend wird eine Antwortmeldung auf Queue B publiziert. |
Generische API des B2B Hub
Der B2B Hub ist ein Standardservice für die sichere, asynchrone Kommunikation zwischen Fachanwendungen der Bundesverwaltung und externen Partnersystemen.
Der Service wird dabei pro Fachanwendung oder Domäne instanziiert.
Die API für den B2B Hub ist generisch gehalten, kann aber Domänen-spezifisch verwendet werden.
API Funktionen
Hinweis: Die Pfade werden jeweils mit den entsprechenden Versionen versehen.
Beispiel: /messages entspricht bei der API-Version 3 dem Pfad /v3/messages
Queue |
| Methode | Pfad | Verwendung |
|---|---|---|---|---|
Output | Abfrage Messages | GET |
| Gibt eine Liste von Meldungen in Form von |
Lesen einer Message | GET |
| Gibt genau eine Meldung für den authentisierten Geschäftspartner und Meldungsidentifkation | |
Lesen nächster Message mit einem Offset | GET |
| Gibt eine Meldung der Output Queue für den authentisierten GP (und optional | |
Input | Übermitteln einer Meldung | PUT |
| Dient dem Übermitteln einer neuen Meldung in die Input Queue. |
API Versionen
Die API Versionen sind standardmässig im OpenAPI Specification Format dokumentiert. Details finden Sie auf den folgenden Seiten:
Verwendung von B2B Hubs im neuen Warenverkehrssystem
Im Umfeld des neuen Warenverkehrssystems des BAZG können diverse Fachanwendungen über einen jeweils dedizierten B2B Hub angebunden werden.
Zur Verfügung stehen im Kontext Passar aktuell:
Fachanwendung / Domäne | Verwendung |
|---|---|
Meldungsaustausche zwischen Passar und nationalen Partnersysteme | |
Bezug von Dokumenten durch die Partnersysteme |
Die folgenden Parameter werden domänenspezifisch verwendet. Details zu diesen Parametern sind jeweils in den Artikeln der oben erwähnten Fachanwendungen und Domänen beschrieben.
Domäne spez. Parameter | Verwendung |
|---|---|
http Header | Der |
http Header http Header | Diese Attribute können beim PUT gesetzt werden. |
http Header | Bei GET |
Query | Dieser Parameter wird in der Antwortmeldung vom Fachsystem geschrieben. |
Query | Dieser Parameter kann domänenspezifische (zum Beispiel |
query | Die |
Ablauf
Die unteren Sequenz Diagramm beschreibt beispielhaft den Meldungsaustausch einer Applikation des Geschäftspartners (Anwendung Geschäftspartner) via B2BHub mit einer BAZG Fachapplikation (BAZG_FA).
Übermittlung von Meldungen an BAZG
Mit dem HTTP Return Code 201 erhält die Applikation des GPs synchron die Bestätigung, dass die Meldung in der BAZG_FA angekommen und gespeichert wurde. Diese Meldung wird von der BAZG_FA automatisch verarbeitet.
Lesen von BAZG Meldungen
Die BAZG_FA sendet im Regelfall zu jeder eingehenden Meldung asynchron mindestens eine Antwortmeldung. Je nach Prozess können auch mehrere Meldungen ausgelöst werden.
HTTP Return Codes
Die Services vom BAZG sind redundant verfügbar, dennoch können verschiedene Fehler während des Betriebs auftreten. Die Softwarelösung des Geschäftspartners muss robust mit unterschiedlichen Fehlersituationen umgehen können - beispielsweise Meldungen zu einem späteren Zeitpunkt erneut senden.
Return Code | Ursache | Massnahmen |
|---|---|---|
| Der Aufruf ist fehlerhaft. Beispiele:
|
|
|
|
|
|
|
|
|
| Konfiguration überprüfen |
|
| Header korrekt setzen |
| B2B Hub hat nicht in der gewünschten Zeit geantwortet. | Request später nochmals senden. |
| B2B Hub hat ein internen Fehler | Request später nochmals senden. |
Temporäres Fehler-Handling
Die folgenden Fehler sind temporär und können mit einem Retry wiederholt gesendet werden:
408 Request Timeout500 Internal Server Error
Da temporäre Fehler vielfach mit überlasteten Systemen in Zusammenhang stehen, ist es sinnvoll eine exponentielle Backoff-Strategie mit Circuit Breaker einzusetzen.
Generische Parameter
Die folgenden Parameter werden bei allen Instanzen vom B2B Hub gleichermassen verwendet.
Parameter | Beschreibung / Verwendung |
|---|---|
Path http Header | Eindeutige Identifikation einer Meldung, die übermittelt wird. Diese Identifikation wird vom Sender der Meldung gesetzt und muss als eine UUID Version 4 übermittelt werden. Die |
http Header | Eindeutige, 10-stellige ID zur Identifikation des Geschäftspartners. Sie wird beim Onboarding eines Geschäftspartners der BAZG vergeben. |
Query | Eindeutige Identifikation der letzten Meldung. Dieser Query Parameter wird verwendet, um die nächsten Meldungen nach einer vorherigen Abfrage zu suchen. Kann ähnlich wie ein Pointer/Offset angesehen werden. |
Query | Anzahl der Meldungen, welche zurückgegeben werden (standardmässig
|
Autorisierung
Um eine B2B Hub API Version einer FA zu verwenden muss diese vorgängig über das API Selfservice Portal für einen Geschäftspartner abonniert werden.
TODO Rollen verlinken, GP-Anwendung
Die Autorisierung ist mittels Bearer Token gemäss HTTP-Standard implementiert. Die Autorisierungsinformationen werden im HTTP Header übermittelt.
Syntax: Authorization: <auth-scheme> <authorization-parameters>
Beispiel: Authorization: Bearer eyJ0e...
Das Access Token (authorization-parameters) kann mit dem Support-Prozess SP4: "Access Token refreshen" erneuert werden.
Idempotenz B2B Hub
Die messageId auf dem PUT /messages Request ist die Idempotenz ID für den B2B Hub. Jede Meldung mit der gleichen ID wird auch als die gleiche Anfrage angesehen. Wenn eine messageId mehrfach übermittelt wird, diese aber schon verarbeitet wurde, gibt es keine Prozessierung des Payloads der Meldung (beispielsweise NT015 - Warenanmeldung Durchfuhr (initial)).
Der Payload der Meldungen hat für die Fachanwendung auch immer eine eindeutige ID, wie beispielsweise messageIdentification bei Passar oder die ProcessId bei Chartera Output.
Die folgende Tabelle zeigt verschiede Beispiele von den Identifiern. Dort ist beschrieben wie der B2B Hub und die Fachanwendung (Passar) reagieren.
| messageId | messageIdentfication | Bermerkung |
|---|---|---|---|
Initial | 979dc4db-…-3c5426a1cfe1 | 6eb03ffb-…-f1edfdebfaa5 |
|
Resend | 979dc4db-…-3c5426a1cfe1 | 6eb03ffb-…-f1edfdebfaa5 |
|
Resend mit anderer Payload ID | 979dc4db-…-3c5426a1cfe1 | 2ac54a8f-…-ab4ef6565f0a |
|
Neue | 44b7cb0a-…-7673882bf6df | 6eb03ffb-…-f1edfdebfaa5 |
|
Q&A