DevPortalPagoPA



Tabella dei contenuti

Verifichiamo la correttezza dell'Identificativo organizzazione

L'e-service “Demo - Identificativo organizzazione” pubblicato sul catalogo offre un servizio mediante il quale è possibile verificare la presenza e la correttezza di un determinato id legato a un'organizzazione o un'azienda, simulando un ente che possiede le informazioni aggiornate e centralizzate di tutte le anagrafiche delle organizzazioni/aziende.
In questo tutorial viene mostrato un caso reale di applicazione di questo servizio.

Il caso d'uso

1POST /organization-id-verification/check
2

Data preparation

La prima cosa da fare è la configurazione dei dati. Procediamo dunque alla fase di Data Preparation.
Scambio certificati
L'e-service che desideriamo invocare prevede un ulteriore livello di sicurezza per il quale è prevista una fase di handshake.
Questa fase prevede lo scambio di un certificato tra fruitore ed erogatore ed è permessa dalla seguente API
1POST /organization-id-verification/data-preparation/handshake 
2

Header:

1Authorization: Bearer {{bearerToken}} apikey: {{apikey}}
2

Payload:

1multipart/form-data
2form: 'certificate=@"/myLocation/cert.pem"'
3

Response:

1{ 
2  "message": "string" 
3}
4

Status codes:

  • 200 - Certificato salvato con successo
  • 400 - Errore formato dati input
Di seguito alcune informazioni sulla creazione del certificato.

Come generare il certificato

Il primo passo da fare è quello di generare un certificato client, utilizzando, per esempio, il tool OpenSSL. Lanciamo il comando per la generazione della chiave privata che nel nostro esempio è a 2048 bit:
1openssl genrsa -out private-key.pem 2048
2
a questo punto possiamo procedere alla creazione del certificato, contenente al suo interno la chiave pubblica (della durata di 365 giorni nell’esempio):
1openssl req -new -x509 -key private-key.pem -out cert.pem -days 365
2
Il certificato è pronto per essere condiviso con l’erogatore nella fase di handshake e successive chiamate.

Inserimento dati

Supponiamo di avere la seguente base dati all’interno della nostra applicazione:
IDNomeData fine validità
Org-1Organizzazione 1NULL
Org-2Organizzazione 22022-12-31
Effettuiamo quindi la data preparation simulando il seguente scenario:
  • L’id Org-1 è un'organizzazione ancora valido
  • L’id Org-2 è un'organizzazione obsoleta e che quindi deve essere rimossa dalla nostra base dati
Replichiamo la configurazione desiderata nel seguente modo:
1POST /organization-id-verification/data-preparation
2

Header:

1Content-Type: application/json
2Content-Encoding: identity
3Authorization: Bearer {{bearerToken}}
4x-correlation-id: {{myUniqueCorrelationId}}
5apikey: {{apikey}}
6

Payload:

1{ 
2  "idOrganization": "Org-1" 
3}
4

Response:

Status codes:

  • 200 - Configurazione salvata con successo
1{
2  "message": "string"
3}
4
  • 400 - Errore formato dati input
1{
2  "detail": "Request took too long to complete.",
3  "instance": "string",
4  "status": 503,
5  "title": "string",
6  "type": "about:blank"
7}
8

Ottenimento dei dati

Con questa chiamata è possibile ottenere la lista delle organizzazioni presenti all'interno della base dati.
1GET /organization-id-verification/data-preparation
2

Header:

1Content-Type: application/json
2Content-Encoding: identity
3Authorization: Bearer {{bearerToken}}
4x-correlation-id: {{myUniqueCorrelationId}}
5apikey: {{apikey}}
6

Response:

Status codes:

  • 200 - Operazione eseguita con successo
1[
2  {
3    "organizationId": "Org-1"
4  }
5]
6
  • 400 - Errore formato dati input
1{
2  "detail": "Request took too long to complete.",
3  "instance": "string",
4  "status": 503,
5  "title": "string",
6  "type": "about:blank"
7}
8

Eliminazione di tutti i dati

Con questo end-point è possibile eliminare una specifica organizzazione tramite il suo id dalla base dati.
1POST /organization-id-verification/data-preparation/remove
2

Header:

1Content-Type: application/json
2Content-Encoding: identity
3Authorization: Bearer {{bearerToken}}
4x-correlation-id: {{myUniqueCorrelationId}}
5apikey: {{apikey}}
6

Payload:

1{ 
2  "idOrganization": "Org-1" 
3}
4

Response:

Status codes:

  • 200 - Operazione eseguita con successo
1[
2  {
3    "message": "string"
4  }
5]
6
  • 400 - Errore formato dati input
1{
2  "detail": "Request took too long to complete.",
3  "instance": "string",
4  "status": 503,
5  "title": "string",
6  "type": "about:blank"
7}
8
Procediamo a questo punto all’invocazione delle API messe a disposizione dell’e-service.

Invocazione E-Service

Completata la fase di configurazione non resta che procedere all’invocazione del servizio effettuando la verifica per i due soggetti presenti nella nostra base dati.
Ripetiamo dunque la seguente chiamata prima per l’id organizzazione di Org-1 e dopo per Org-2.
1POST /organization-id-verification/check 
2
curl --location '{host}/organization-id-verification/check' --cert '/myLocation/cert.pem' --key '/myLocation/private-key.pem' --header 'x-correlation-id: myUniqueCorrelationId' --header 'Content-Encoding: identity' --header 'apikey: {{apikey}}' --header 'Content-Type: application/json' --header 'Authorization: Bearer {{bearerToken}}' --data '{ "organizationId": "Org-1" }' -k

Response:

1{
2  "organizationId": "Org-1",
3  "valid": true,
4  "status": "ATTIVA",
5  "denomination": "Organizzazione 1",
6  "dateStartActivity": "2001-01-02"
7}
8
Ciò che otterremo a seguito delle due invocazioni è il seguente risultato:
  • Org-1: l'organizzazione è stata trovata e abbiamo ottenuto una risposta positiva che ci indica la validità dell’id inviato
  • Org-2: l'organizzazione non è stata trovata. Il servizio ci ha risposto con successo indicandoci però che l’id inviato non è più valido

Esito Finale

Dopo aver interrogato l’e-service possiamo procedere all’aggiornamento della nostra base dati in base alle informazioni che abbiamo recuperato.
Di seguito una panoramica della situazione a seguito dell’aggiornamento
IdNomeData fine validità
Org-1Organizzazione 1NULL
Org-2Organizzazione 201/09/2024
La nostra base dati è stata correttamente aggiornata.

Diagramma di Flusso:

An image

Hai bisogno di aiuto?

Apri un ticket utilizzando l’apposita funzione all’interno della tua Area Riservata

Dicci cosa ne pensi

Per segnalare problemi o dare feedback, puoi aprire una segnalazione su Github