Este servicio ofrece una interfaz general para declaraciones personalizadas, donde esas declaraciones se representan utilizando el esquema de declaraciones de la OMA. Además de presentar declaraciones, el servicio de Declaraciones Aduaneras permite modificarlas y cancelarlas. También brinda la posibilidad de cargar documentos de respaldo y realizar notificaciones de llegada.
El objetivo de la API del Servicio de Declaraciones Aduaneras es:
Como el proceso de notificación es asincrónico, la única respuesta de esta API al declarante es indicar el éxito (o no) de la validación y el envío al backend de CDS.
sbt run
que se ejecuta en el puerto 9820
de forma predeterminadasbt 'run -Dapplication.router=testOnlyDoNotUseInAppConf.Routes'
El servicio de Declaraciones de Aduana se puede ejecutar localmente desde Service Manager, utilizando los siguientes perfiles:
Detalles del perfil | Dominio | Descripción |
---|---|---|
DECLARACIÓN_ADUANA_ALL | sm2 --iniciar CUSTOMS_DECLARATION_ALL | Para ejecutar todas las aplicaciones CDS. |
CUSTOMS_INVENTORY_LINKING_EXPORTS_ALL | sm2 --iniciar CUSTOMS_INVENTORY_LINKING_EXPORTS_ALL | Para ejecutar todas las aplicaciones relacionadas con CDS Inventory Linking Exports. |
CUSTOMS_INVENTORY_LINKING_IMPORTS_ALL | sm2 --iniciar CUSTOMS_INVENTORY_LINKING_IMPORTS_ALL | Para ejecutar todas las aplicaciones relacionadas con CDS Inventory Linking Imports. |
sbt test
sbt IntegrationTest/test
sbt test IntegrationTest/test
./run_all_tests.sh
clean scalastyle coverage test it:test coverageReport dependencyUpdates"
Para ejecutar las pruebas de aceptación de CDS, consulte aquí.
Para ejecutar pruebas de rendimiento, consulte aquí.
Para obtener documentación de la API de declaraciones de aduanas, consulte aquí.
Ruta: rutas internas con el prefijo /customs-declarations | Métodos admitidos | Descripción |
---|---|---|
/customs-declarations/ | CORREO | Punto final para presentar una declaración. |
/customs-declarations/cancellation-requests | CORREO | Punto final para cancelar una declaración. |
/customs-declarations/amend | CORREO | Punto final para modificar una declaración. |
/customs-declarations/file-upload | CORREO | Punto final para enviar una carga de archivo. |
/customs-declarations/uploaded-file-upscan-notifications/clientSubscriptionId/:clientSubscriptionId | CORREO | Punto final para administrar las notificaciones de upscan de carga de archivos. |
/customs-declarations/file-transmission-notify/clientSubscriptionId/:clientSubscriptionId | CORREO | Punto final para enviar notificaciones de carga de archivos a la notificación de aduanas. |
/customs-declarations/arrival-notification | CORREO | Punto final para presentar una declaración de notificación de llegada. |
Camino | Métodos admitidos | Descripción |
---|---|---|
/file-upload/test-only/all | BORRAR | Punto final para eliminar todos los metadatos de carga de archivos. |
Una solicitud al punto final /file-upload puede contener las URL SuccessRedirect y errorRedirect. Estos no son obligatorios. Si se incluyen tanto una redirección exitosa como una redirección de error, se llamará a upscan v2; de lo contrario, se llamará a v1.
enlace a comandos curl
Hay una tarea SBT zipWcoXsds
que genera un archivo ZIP que contiene esquemas y mensajes de ejemplo para cada versión en /public/api/conf
durante la fase de empaquetado (por lo que no se generan durante el desarrollo normal). YAML hace referencia a estos archivos ZIP. Estas referencias se representan como enlaces HTML al ZIP generado en el servicio implementado.
Para generar el archivo zip localmente, ejecute el siguiente comando en la línea de comando desde el directorio raíz del proyecto:
sbt package
fieldsId
desde el servicio api-subscription-fields
El encabezado X-Client-ID
, junto con el contexto y la versión de la aplicación, se utilizan para llamar al servicio api-subscription-fields
para obtener el UUID fieldsId
único para pasarlo a la solicitud de backend.
Tenga en cuenta que el servicio para obtener el fieldsId
no está actualmente bloqueado.
api-subscription-fields
para pruebas locales de un extremo a otro Asegúrese de que el servicio api-subscription-fields
se esté ejecutando en el puerto 9650
. Luego ejecute el siguiente comando curl.
Tenga en cuenta que la versión 2.0
se utiliza como ejemplo en los comandos proporcionados y debe insertar el número de versión de la API de declaraciones de aduanas al que llamará posteriormente.
Tenga en cuenta que el valor d65f2252-9fcf-4f04-9445-5971021226bb
se utiliza como ejemplo en los comandos proporcionados y debe insertar el valor UUID que se adapte a sus necesidades.
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" } }'
Luego tenemos que restablecer manualmente el campo fieldId
para que coincida con la identificación esperada por los servicios posteriores. En una ventana de comando de mongo, pegue lo siguiente, uno tras otro.
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"}
}
)
Cuando envíe una solicitud a customs-declarations
asegúrese de tener el encabezado HTTP X-Client-ID
con el valor d65f2252-9fcf-4f04-9445-5971021226bb
Hay tres versiones de este servicio disponibles en Developer Hub.
Cada uno tiene secciones de configuración separadas para el punto final de declaración wco de MDG, por lo que las versiones pueden apuntar a diferentes servicios de backend.
Proporcionar el encabezado ACCEPT requerido en la solicitud distingue qué configuración de servicio usar:
Aceptar encabezado | Versión |
---|---|
aplicación/vnd.hmrc.1.0+xml | v1 |
aplicación/vnd.hmrc.2.0+xml | v2 |
aplicación/vnd.hmrc.3.0+xml | v3 |
Tenga en cuenta que las solicitudes con cualquier otro valor de encabezado Accept
se rechazan con el estado de respuesta 406 Not Acceptable
.
Se ha implementado el cambio dinámico de puntos finales de servicio para el conector de declaración wco. Para configurar el cambio dinámico del punto final debe haber una sección correspondiente en el archivo de configuración de la aplicación (vea el ejemplo a continuación). Esto debería contener los detalles de configuración del punto final.
El servicio customs-declarations
tiene una configuración default
y una configuración stub
. Tenga en cuenta que la configuración default
se declara directamente dentro de la sección customs-declarations
.
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"
}
Este código es un software de código abierto con licencia Apache 2.0.