openapi: 3.0.3 info: termsOfService: https://selfcare.notifichedigitali.it/termini-di-servizio x-api-id: api-external-b2b-pa title: 'Piattaforma Notifiche: API B2B per le Pubbliche Amministrazioni' x-summary: 'Piattaforma Notifiche: API B2B per le Pubbliche Amministrazioni' version: 1.0.0 description: >- ## Abstract API utilizzate dalle pubbliche amministrazioni per __inviare richieste di notifiche__ e __ottenere informazioni in modalità pull__ sullo stato della _"richiesta di notifica"_ (accettata o rifiutata) e, in caso di richiesta accettata, sulle comunicazioni effettuate, o solo tentate, nei confronti dei destinatari della notifica. ## Operazioni utilizzate, in sequenza temporale
#### 3. Verifica accettazione richiesta di invio notifica Per questa verifica possono essere utilizzate due modalità: 1. __richiesta puntuale__: consigliato solo ai fini di test 2. __lettura da stream configurato__: consigliato per ambienti di produzione La differenza tra le due modalità è nell'interazione e nell'efficienza. Con la modalità _"richiesta puntuale"_ è necessaria l'invocazione per ogni notifica, mentre con la modalità _"stream"_ è possibile avere gli aggiornamenti di stato di più notifiche con una sola invocazione. #### 3.1 Richiesta puntuale di verifica accettazione Questa modalità è resa disponibile solo ai fini di test o di eventuali operazioni di allineamento. Richiede l'invio di una richiesta per ogni notifica. Se il passo (2) avviene con successo si utilizza l'operazione [getNotificationRequestStatus](#/SenderReadB2B/retrieveNotificationRequestStatusV23) per ottenere informazioni riguardo allo stato della "richiesta di invio di notifica". Nel campo _notificationRequestStatus_ sarà indicato: >\- WAITING: se la validazione è ancora in corso. \- ACCEPTED: se richiesta di notifica accettata, lo _IUN_ è valorizzato. \- REFUSED: se richiesta di notifica rifiutata, è valorizzato il campo _errors_. #### 3.2 Richiesta avanzamento via "stream" di verifica di accettazione Questa è la modalità consigliata. Per essere utilizzata è necessaria un'operazione preliminare tramite la chiamata alla API [createEventStream](https://petstore.swagger.io/?url=https%3A%2F%2Fraw.githubusercontent.com%2Fpagopa%2Fpn-delivery-push%2Fmain%2Fdocs%2Fopenapi%2Fapi-external-b2b-webhook.yaml#/Streams/createEventStream) per configurare uno "stream" che registri il cambio di stato della notifica con il seguente payload:`` { "title": "NotificationAccepted", "eventType": "STATUS", "filterValues": [ "ACCEPTED" ] } `` Successivamente si possono ottenere i dati richiamando la API [consumeEventStream](https://petstore.swagger.io/?url=https%3A%2F%2Fraw.githubusercontent.com%2Fpagopa%2Fpn-delivery-push%2Fmain%2Fdocs%2Fopenapi%2Fapi-external-b2b-webhook.yaml#/Events/consumeEventStream) __NOTA__ saranno disponibili i dati di cambiamento di stato occorsi solo successivamente alla configurazione dello stream. |
### Ciclo di vita della notifica lato mittente
#### 1. Caricamento dei documenti della notifica
Prima di invocare la richiesta di notifica è necessario caricare i documenti della notifica (documenti e bollettini/metadata di pagamento).
[Schema Metadata F24](#/components/schemas/F24Metadata)
#### 1.a. Richiesta presigned Url
Invocare l'operazione [presignedUploadRequest](#/NewNotification/presignedUploadRequest)
con cui prenotare il caricamento. Possono essere effettuate un massimo di 15 prenotazioni di caricamento
per ogni richiesta.
In risposta si ottengono le seguenti informazioni: \- httpMethod \- secret \- url L'url restituito ha una validità di 1h. #### 1.b Upload documenti della notifica Per ogni documento utilizzare un richiesta HTTP con metodo _httpMethod_ (POST o PUT) all'url indicato dal campo _url_. In tale richiesta vanno aggiunti i seguenti header: \- _content-type_: valorizzato come il campo "contentType" della richiesta di cui al punto (1.a) \- _x-amz-meta-secret_: valorizzato con il valore del campo "secret" della risposta di cui al punto (1.a) \- _trailer_: valorizzato con ```x-amz-checksum-sha256``` \- _x-amz-checksum-sha256_: valorizzato con il checksum sha256, codificato in base 64, del contenuto binario del file che verrà caricato. (__N.B.__ questo è un trailer HTTP non un header). Vedi [HTTP Trailer](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Trailer) __NOTA:__ se l'operazione di upload è stata eseguita con successo, si otterrà come risposta _status 200 OK_. Nell'header di questa risposta, si otterrà il campo __x-amz-version-id__ che dovrà essere utilizzato durante l'inserimento della notifica, nel campo ref.__versionToken__ in corrispondenza del documento ad esso associato. #### 2. Richiesta di invio della notifica Per effettuare una richiesta di invio notifica, invocare l'operazione [sendNewNotification](#/NewNotification/sendNewNotificationV21) valorizzando il campo payments (scegliendo in base alla tipologia di file caricato F24/pagoPa) e il campo documents utilizzando i riferimenti dei file caricati in precedenza nel seguente: - digests.sha256 : SHA256 associato all'allegato caricato - contentType : in caso la tipologia dell'allegato fosse documento e avviso di pagamento dovrà essere popolato con "application/pdf" in caso di F24 invece dovrà contenere "application/json" - ref.key: key ottenuta nella response della chiamata [presignedUploadRequest](#/NewNotification/presignedUploadRequest) - ref.versionToken: valore dell'header x-amz-version-id ottenuto dalla response in fase di upload dell'allegato ad esso associato. Nel caso si voglia valorizzare il campo payments con un bolletino di pagamento pagoPa oltre al riferimento al file tramite la sezione pagoPaForm con le indicazioni riportate sopra, sono da valorizzare i campi noticeCode "codice avviso pagoPA" ,univoco, di pagamento del sistema pagoPA utilizzato , usato per pagamento online; creditorTaxId: codice fiscale dell'ente a cui fa riferimento il "codice avviso pagoPA"; il campo applyCost: flag per indicare se l'avviso pagoPA deve contenere i costi di notifica e il campo Nel caso,invece, nel campo payments si voglia valorizzare un pagamento F24,oltre al riferimento al file caricato tramite la sezione metadataAttachment con le indicazioni riportate sopra, sono da valorizzare i campi title: titolo del documento pdf da mostrare all'utente e applyCost: flag per indicare se il modello F24 deve contenere i costi di notifica. |
{Iun}
della notifica di interesse: all'interno del campo timeline della response è possibile trovare l'elenco degli eventi di quella notifica ed i legalFactType e legalFactId in corrispondenza degli eventi che generano documenti.