Skip to content

pagopa/p4pa-pdnd-services

Repository files navigation

p4pa-pdnd-services

This application belong to the outbound tier of the Piattaforma Unitaria product.

See PU Microservice Architecture for more details.

🧱 Role

🌐 APIs

See OpenAPI, exposed through the following path:

  • /swagger-ui/index.html

See Postman collection and Postman Environment.

πŸ“Œ Relevant APIs

  • GET /anpr-service-e002/citizen: To get citizen data from ANPR;
  • GET /token: To obtain a token to use in order to authenticate invocations towards PDND exposed services.

πŸ“Œ Common HTTP status returned:

  • 401: Invalid access token provided, thus a new login is required;
  • 403: Trying to access a not authorized resource.

πŸ”Ž Monitoring

See available actuator endpoints through the following path:

  • /actuator

πŸ“Œ Relevant endpoints

  • Health (provide an accessToken to see details): /actuator/health
    • Liveness: /actuator/health/liveness
    • Readiness: /actuator/health/readiness
  • Metrics: /actuator/metrics
    • Prometheus: /actuator/prometheus

Further endpoints are exposed through the JMX console.

✏️ Logging

See log configured pattern.

πŸ”— Dependencies

🌍 External

  • PDND - IDP to authenticate PA services exposed by PDND:
    • OpenAPI: To obtain access token towards PDND exposed services;
  • ANPR:

πŸ”§ Configuration

See application.yml for each configurable property.

πŸ“Œ Relevant configurations

🌐 Application Server

ENV DESCRIPTION DEFAULT
SERVER_PORT Application server listening port 8080

✏️ Logging

ENV DESCRIPTION DEFAULT
LOG_LEVEL_ROOT Base level INFO
LOG_LEVEL_PAGOPA Base level of custom classes INFO
LOG_LEVEL_SPRING Level applied to Spring framework INFO
LOG_LEVEL_SPRING_BOOT_AVAILABILITY To print availability events DEBUG
LOGGING_LEVEL_API_REQUEST_EXCEPTION Level applied to APIs exception INFO
LOG_LEVEL_PERFORMANCE_LOG Level applied to PerformanceLog INFO
LOG_LEVEL_PERFORMANCE_LOG_API_REQUEST Level applied to API Performance Log INFO
LOG_LEVEL_PERFORMANCE_LOG_REST_INVOKE Level applied to REST invoke Performance Log INFO

πŸ” Integrations

πŸ“‹ Caching
ENV DESCRIPTION DEFAULT
CACHE_ANPR_IDS_SIZE IdAnpr cache size 1000
CACHE_ANPR_IDS_MINUTES IdAnpr cache retention (minutes) 60
πŸ”— REST
ENV DESCRIPTION DEFAULT
DEFAULT_REST_CONNECTION_POOL_SIZE Default connection pool size 10
DEFAULT_REST_CONNECTION_POOL_SIZE_PER_ROUTE Default connection pool size per route 5
DEFAULT_REST_CONNECTION_POOL_TIME_TO_LIVE_MINUTES Default connection pool TTL (minutes) 10
DEFAULT_REST_TIMEOUT_CONNECT_MILLIS Default connection timeout (milliseconds) 120000
DEFAULT_REST_TIMEOUT_READ_MILLIS Default read timeout (milliseconds) 120000
🌍 External services
ENV DESCRIPTION DEFAULT
PDND_BASE_URL PDND service URL
PDND_MAX_ATTEMPTS PDND API max attempts 3
PDND_WAIT_TIME_MILLIS PDND retry waiting time (milliseconds) 500
PDND_PRINT_BODY_WHEN_ERROR To print body when an error occurs true
PDND_ACCESS_TOKEN_AUDIENCE Value set for the claim aud of the PDND clientAssertion JWT sent during the invocation of the API createToken of PDND auth.uat.interop.pagopa.it/client-assertion
ANPR_BASE_URL ANPR service base URL concatenated to particular service paths
ANPR_MAX_ATTEMPTS ANPR API max attempts 3
ANPR_WAIT_TIME_MILLIS ANPR retry waiting time (milliseconds) 500
ANPR_PRINT_BODY_WHEN_ERROR To print body when an error occurs true
PDND_SERVICE_ANPR_C003_BASE_PATH C003 ANPR service path /C003-servizioVerificaDichGeneralita/v1
PDND_SERVICE_ANPR_C030_BASE_PATH C030 ANPR service path /C030-servizioAccertamentoIdUnicoNazionale/v1/

πŸ’Ό Business logic

ENV DESCRIPTION DEFAULT
PDND_SERVICE_CLIENTID Default clientId clientId
PDND_SERVICE_KID Default kid related to the default client kid
PDND_SERVICE_PRIVATEKEY Default private key related to the default client used to sign JWTs
PDND_SERVICE_PUBLICKEY Default public key related to the default client used to sign JWTs
ENV Value set for the claim userLocation of the Agid-JWT-TrackingEvidence JWT dev
PDND_AUTH_USERID Value set for the claim userID of the Agid-JWT-TrackingEvidence JWT pdnd-user
PDND_AUTH_EXPIRATION_MINUTES Life time of the JWT created during the PDND exchange protocol (minutes) 10
PDND_SERVICE_ANPR_CLIENTID Default ANPR clientId ${PDND_SERVICE_CLIENTID}
PDND_SERVICE_ANPR_KID Default ANPR kid related to the default ANPR client ${PDND_SERVICE_KID}
PDND_SERVICE_ANPR_PRIVATEKEY Default ANPR private key related to the default ANPR client used to sign JWTs ${PDND_SERVICE_PRIVATEKEY}
PDND_SERVICE_ANPR_PUBLICKEY Default ANPR public key related to the default ANPR client used to sign JWTs ${PDND_SERVICE_PUBLICKEY}
PDND_SERVICE_ANPR_C003_PURPOSE_ID C003 ANPR service purposeId c003purposeid
PDND_SERVICE_ANPR_C003_AUDIENCE C003 ANPR service audience C003audience
PDND_SERVICE_ANPR_C003_CLIENTID C003 ANPR service clientId ${PDND_SERVICE_ANPR_CLIENTID}
PDND_SERVICE_ANPR_C003_KID C003 ANPR service kid related to the C003 ANPR service client ${PDND_SERVICE_ANPR_KID}
PDND_SERVICE_ANPR_C003_PRIVATEKEY C003 ANPR service private key related to the C003 ANPR service client used to sign JWTs ${PDND_SERVICE_ANPR_PRIVATEKEY}
PDND_SERVICE_ANPR_C003_PUBLICKEY C003 ANPR service public key related to the C003 ANPR service client used to sign JWTs ${PDND_SERVICE_ANPR_PUBLICKEY}
PDND_SERVICE_ANPR_C030_PURPOSE_ID C030 ANPR service purposeId c030purposeid
PDND_SERVICE_ANPR_C030_AUDIENCE C030 ANPR service audience C030audience
PDND_SERVICE_ANPR_C030_CLIENTID C030 ANPR service clientId ${PDND_SERVICE_ANPR_CLIENTID}
PDND_SERVICE_ANPR_C030_KID C030 ANPR service kid related to the C030 ANPR service client ${PDND_SERVICE_ANPR_KID}
PDND_SERVICE_ANPR_C030_PRIVATEKEY C030 ANPR service private key related to the C030 ANPR service client used to sign JWTs ${PDND_SERVICE_ANPR_PRIVATEKEY}
PDND_SERVICE_ANPR_C030_PUBLICKEY C030 ANPR service public key related to the C030 ANPR service client used to sign JWTs ${PDND_SERVICE_ANPR_PUBLICKEY}
PDND_SERVICE_SEND_PURPOSE_ID SEND service purposeId purposeid
PDND_SERVICE_SEND_CLIENTID SEND service clientId ${PDND_SERVICE_CLIENTID}
PDND_SERVICE_SEND_KID SEND service kid related to the SEND service client ${PDND_SERVICE_KID}
PDND_SERVICE_SEND_PRIVATEKEY SEND service private key related to the SEND service client used to sign JWTs ${PDND_SERVICE_PRIVATEKEY}
PDND_SERVICE_SEND_PUBLICKEY SEND service public key related to the SEND service client used to sign JWTs ${PDND_SERVICE_PUBLICKEY}

πŸ”‘ keys

ENV DESCRIPTION DEFAULT
JWT_TOKEN_PUBLIC_KEY p4pa-auth JWT public key

πŸ› οΈ Getting Started

πŸ“ Prerequisites

Ensure the following tools are installed on your machine:

  1. Java 21+
  2. Gradle (or use the Gradle wrapper included in the repository)
  3. Docker (to build and run on an isolated environment, optional)

πŸ” Write Locks

./gradlew dependencies --write-locks

βš™οΈ Build

./gradlew clean build

πŸ§ͺ Test

πŸ“Œ JUnit

./gradlew test

πŸš€ Run local

./gradlew bootRun

🐳 Build & run through Docker

docker build -t <APP_NAME> .
docker run --env-file <ENV_FILE> <APP_NAME>

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors 6