Dieser Dienst bietet eine allgemeine Schnittstelle für benutzerdefinierte Deklarationen, wobei diese Deklarationen mithilfe des WCO-Deklarationsschemas dargestellt werden. Neben der Abgabe von Anmeldungen bietet Ihnen der Zollanmeldungsdienst auch die Möglichkeit, diese zu ändern und zu stornieren. Es bietet auch die Möglichkeit, Belege hochzuladen und Ankunftsbenachrichtigungen zu erstellen.
Das Ziel der Customs Declarations Service API ist:
Da der Benachrichtigungsprozess asynchron ist, besteht die einzige Antwort dieser API an den Anmelder darin, den Erfolg (oder Nichterfolg) der Validierung und Übermittlung an das CDS-Backend anzuzeigen.
sbt run
, das standardmäßig auf Port 9820
ausgeführt wirdsbt 'run -Dapplication.router=testOnlyDoNotUseInAppConf.Routes'
Der Zolldeklarationsdienst kann lokal über Service Manager mit den folgenden Profilen ausgeführt werden:
Profildetails | Befehl | Beschreibung |
---|---|---|
CUSTOMS_DECLARATION_ALL | sm2 --start CUSTOMS_DECLARATION_ALL | Zum Ausführen aller CDS-Anwendungen. |
CUSTOMS_INVENTORY_LINKING_EXPORTS_ALL | sm2 --start CUSTOMS_INVENTORY_LINKING_EXPORTS_ALL | Zum Ausführen aller CDS Inventory Linking Exports-bezogenen Anwendungen. |
CUSTOMS_INVENTORY_LINKING_IMPORTS_ALL | sm2 --start CUSTOMS_INVENTORY_LINKING_IMPORTS_ALL | Zum Ausführen aller CDS Inventory Linking Imports-bezogenen Anwendungen. |
sbt test
sbt IntegrationTest/test
sbt test IntegrationTest/test
./run_all_tests.sh
clean scalastyle coverage test it:test coverageReport dependencyUpdates"
Informationen zum Ausführen der CDS-Akzeptanztests finden Sie hier.
Informationen zum Ausführen von Leistungstests finden Sie hier.
Die Dokumentation zur Zollanmeldungs-API finden Sie hier.
Pfad – interne Routen mit dem Präfix /customs-declarations | Unterstützte Methoden | Beschreibung |
---|---|---|
/customs-declarations/ | POST | Endpunkt zum Einreichen einer Deklaration. |
/customs-declarations/cancellation-requests | POST | Endpunkt zum Abbrechen einer Deklaration. |
/customs-declarations/amend | POST | Endpunkt zum Ändern einer Deklaration. |
/customs-declarations/file-upload | POST | Endpunkt zum Senden eines Datei-Uploads. |
/customs-declarations/uploaded-file-upscan-notifications/clientSubscriptionId/:clientSubscriptionId | POST | Endpunkt zum Verwalten von Upscan-Benachrichtigungen zum Hochladen von Dateien. |
/customs-declarations/file-transmission-notify/clientSubscriptionId/:clientSubscriptionId | POST | Endpunkt zur Übermittlung von Datei-Upload-Benachrichtigungen an die Zollbenachrichtigung. |
/customs-declarations/arrival-notification | POST | Endpunkt zum Einreichen einer Ankunftsbenachrichtigungserklärung. |
Weg | Unterstützte Methoden | Beschreibung |
---|---|---|
/file-upload/test-only/all | LÖSCHEN | Endpunkt zum Löschen aller Datei-Upload-Metadaten. |
Eine Anfrage an den Endpunkt /file-upload kann die URLs successRedirect und errorRedirect enthalten. Diese sind nicht verpflichtend. Wenn sowohl eine Erfolgs- als auch eine Fehlerumleitung enthalten sind, wird Upscan v2 aufgerufen, andernfalls v1.
Link zu Curl-Befehlen
Es gibt eine SBT-Aufgabe zipWcoXsds
, die während der Verpackungsphase unter /public/api/conf
eine ZIP-Datei mit Schemata und Beispielmeldungen für jede Version generiert (wird daher während der normalen Entwicklung nicht generiert). Auf diese ZIP-Dateien wird von der YAML verwiesen. Diese Verweise werden als HTML-Links zur generierten ZIP-Datei im bereitgestellten Dienst gerendert.
Um die ZIP-Datei lokal zu generieren, führen Sie den folgenden Befehl in der Befehlszeile aus dem Stammverzeichnis des Projekts aus:
sbt package
fieldsId
vom Dienst api-subscription-fields
. Der X-Client-ID
Header wird zusammen mit dem Anwendungskontext und der Anwendungsversion verwendet, um den api-subscription-fields
Dienst aufzurufen, um die eindeutige fieldsId
UUID abzurufen, die an die Backend-Anfrage weitergegeben wird.
Beachten Sie, dass der Dienst zum Abrufen der fieldsId
derzeit nicht blockiert ist.
api-subscription-fields
für lokale End-to-End-Tests Stellen Sie sicher, dass der Dienst api-subscription-fields
auf Port 9650
ausgeführt wird. Führen Sie dann den folgenden Curl-Befehl aus.
Bitte beachten Sie, dass in den angegebenen Befehlen Version 2.0
als Beispiel verwendet wird und Sie die Versionsnummer der Zollanmeldungs-API einfügen sollten, die Sie anschließend aufrufen.
Bitte beachten Sie, dass der Wert d65f2252-9fcf-4f04-9445-5971021226bb
in den angegebenen Befehlen als Beispiel verwendet wird und Sie den UUID-Wert eingeben sollten, der Ihren Anforderungen entspricht.
curl -v -X PUT "http://localhost:9650/field/application/d65f2252-9fcf-4f04-9445-5971021226bb/context/customs%2Fdeclarations/version/2.0" -H "Cache-Control: no-cache" -H "Content-Type: application/json" -d '{ "fields" : { "callbackUrl" : "https://postman-echo.com/post", "securityToken" : "securityToken", "authenticatedEori": "ABC123" } }'
Anschließend müssen wir das Feld fieldId
manuell zurücksetzen, damit es mit der von den Downstream-Diensten erwarteten ID übereinstimmt. Fügen Sie in einem Mongo-Befehlsfenster nacheinander Folgendes ein.
use api-subscription-fields
db.subscriptionFields.update(
{ "clientId" : "d65f2252-9fcf-4f04-9445-5971021226bb", "apiContext" : "customs/declarations", "apiVersion" : "2.0" },
{ $set:
{"fieldsId" : "d65f2252-9fcf-4f04-9445-5971021226bb"}
}
)
Wenn Sie dann eine Anfrage an customs-declarations
senden, stellen Sie sicher, dass Sie den HTTP-Header X-Client-ID
mit dem Wert d65f2252-9fcf-4f04-9445-5971021226bb
haben
Drei Versionen dieses Dienstes sind im Developer Hub verfügbar.
Jeder verfügt über separate Konfigurationsabschnitte für den MDG-WCO-Declaration-Endpunkt, sodass die Versionen auf unterschiedliche Back-End-Dienste verweisen können.
Durch die Bereitstellung des erforderlichen ACCEPT-Headers in der Anfrage wird unterschieden, welche Dienstkonfiguration verwendet werden soll:
Kopfzeile akzeptieren | Version |
---|---|
application/vnd.hmrc.1.0+xml | v1 |
application/vnd.hmrc.2.0+xml | v2 |
application/vnd.hmrc.3.0+xml | v3 |
Bitte beachten Sie, dass Anfragen mit einem anderen Wert des Accept
-Headers mit dem Antwortstatus 406 Not Acceptable
abgelehnt werden.
Für den WCO-Deklarationskonnektor wurde ein dynamischer Wechsel von Dienstendpunkten implementiert. Um die dynamische Umschaltung des Endpunkts zu konfigurieren, muss ein entsprechender Abschnitt in der Anwendungskonfigurationsdatei vorhanden sein (siehe Beispiel unten). Dies sollte die Endpunktkonfigurationsdetails enthalten.
Der Dienst customs-declarations
verfügt über eine default
und eine stub
-Konfiguration. Beachten Sie, dass die default
direkt im Abschnitt customs-declarations
deklariert wird.
Prod {
...
services {
...
wco-declaration {
host = some.host
port = 80
bearer-token = "some_token"
context = /services/declarationmanagement/1.0.0
stub {
host = localhost
port = 9479
bearer-token = "some_stub_token"
context = "/registrations/registerwithid/1.0.0"
}
}
v2 {
wco-declaration {
host = some.host
port = 80
bearer-token = "some_token"
context = /services/declarationmanagement/1.0.0
stub {
host = localhost
port = 9479
bearer-token = "some_stub_token"
context = "/registrations/registerwithid/1.0.0"
}
}
}
}
}
default version (application/vnd.hmrc.1.0+xml):
curl -X "POST" http://customs-declarations-host/test-only/service/wco-declaration/configuration -H 'content-type: application/json' -d '{ "environment": "stub" }'
version 2 (application/vnd.hmrc.2.0+xml):
curl -X "POST" http://customs-declarations-host/test-only/service/v2.wco-declaration/configuration -H 'content-type: application/json' -d '{ "environment": "stub" }'
The service customs-declarations is now configured to use the stub environment
curl -X "POST" http://customs-declarations-host/test-only/service/wco-declaration/configuration -H 'content-type: application/json' -d '{ "environment": "default" }'
The service customs-declarations is now configured to use the default environment
curl -X "GET" http://customs-declarations-host/test-only/service/wco-declaration/configuration
{
"service": "wco-declaration",
"environment": "stub",
"url": "http://currenturl/customs-declarations"
"bearerToken": "current token"
}
Bei diesem Code handelt es sich um Open-Source-Software, die unter der Apache 2.0-Lizenz lizenziert ist.