openapi: 3.0.3 info: contact: email: federico.giuntoli@flowpay.it name: Federico Giuntoli description: "\nHai uno use case di pagamento complesso come pagamenti massivi, split o pagopa? [chiedi qui](https://meetings.hubspot.com/rmancini)\n# Autenticazione\n​\n\n## Premesse\n ​\nPotete richiedere due tipi diversi di client a seconda delle vostre esigenze di implementazione:\n* Client pubblico: Possiede un `client_id` ma non un `client_secret` ed è pensato per applicativi che non sono in grado di mantenere un `client_secret` al sicuro (e.g. Un applicazione solamente frontend, o mobile).\n* Client confidenziale: Possiede un `client_id` e un `client_secret`ed è in grado di mantenere sicuro il `client_secret` (e.g. Un applicativo server, una combinazione di applicativi frontend + backend dove il backend si occupa delle chiamate API.)\n\n\n## Autenticazione con client credentials\n\nQuesto tipo di autenticazione è riservato per client confidenziali e attualmente permette di ottenere token collegato al vostro client utilizzato (per il momento) solamente presso l'endpoint di\ncreazione\ \ di un consenso di riconciliazione\n\n```\nPOST https://core.sandbox-new.flowpay.it/api/oauth/token\n```\n\ncon content-type `application/x-www-form-urlencoded`\n| nome | descrizione | esempio |\n|------|-------------|---------|\n| client_id | client ID fornito (il client id è un valore pubblico) | 9a585977-98c1-4f68-a0a5-651a192f7383 |\n| grant_type | Tipo di autenticazione fornita nella richiesta (in questo caso credenziali client) | client_credentials |\n| client_secret | vostro client secret fornito in fase di registrazione | client-secret |\n| scope | Tipi di scope da fornire nel token di risposta (notare che sono diversi da quelli di authorization code) | reconciliation |\n\nesempio di risposta\n\n```json\n {\n \"access_token\": \"1234567890-token-1234567890\",\n \"token_type\": \"bearer\",\n \"expires_in\": 3600,\n \"scope\": \"reconciliation\"\n }\n```\n\n\n## Flusso di autenticazione\n\n### Autorizzazione\n​\nIl flusso di autenticazione si\ \ basa su un flusso standard OAuth2 di `authorization code` quindi dal vostro applicativo l'utente deve essere rediretto da un browser al seguente link (il link vale per l'ambiente di sandbox):\n```\nhttps://core.sandbox-new.flowpay.it/api/openid/authenticate\n```\n​\nPassando nei query params del redirect i seguenti parametri obbligatori:\n​\n| nome | descrizione | esempio |\n|------|-------------|-----|\n| client_id | client ID fornito (il client id è un valore pubblico) | 9a585977-98c1-4f68-a0a5-651a192f7383 |\n| response_type | tipo di risposta del server (nel vostro caso dovrebbe essere code) | code |\n| scope | lista di scope richiesti separati dal carattere spazio | `invoice:read(spazio)invoice:write` Spazio indica il carattere |\n| redirect_uri | dove effettuare il redirect una volta completato il flusso di autorizzazione. Durante la creazione dell'applicativo è stato possibile (ed è sempre possibile modificarli) indicare le url autorizzate per la vostra applicazione | `https://ex.amp.le/redirect`\ \ |\n​| request | campo request standard openid si rimanda a **Flusso autorizzativo di riconciliazione** per un esempio | jwt encoded request |\n\nInoltre è possibile indicare un ulteriore parametro:\n​\n`state`: un valore in qualunque formato che verra' ripassato indietro invariato nel redirect al `redirect_uri`\n​\nNel caso il vostro applicativo sia un client pubblico è necesarrio utilizzare l'estensione [PKCE](https://datatracker.ietf.org/doc/html/rfc7636) di Oauth2 ed è quindi necessario passare nella url due ulteriori parametri: `code_challenge` e `code_challenge_method`\n\n**In sandbox sono forniti client confidenziali ma è comunque possibile effettuare un flusso di autenticazione con estensione PKCE per testare la propria implementazione, in ambiente di produzione il tipo di flusso utilizzabile sarà definito dal tipo di client** ​\n\n* `code_challenge`: questo valore corrisponde al BASE64URL(SHA256(`code_verifier`)) dove BASE64URL indica di codificare in base64urlencoded e SHA256\ \ indica la funzione di hashing. `code_verifier` è una stringa casuale creata dall'applicativo all'inizio della richiesta di lunghezza compresa tra 43 e 128 caratteri\n* `code_challenge_method`: unico valore ammesso `S256`\n​\nUn esempio per generare una code_challenge in js potrebbe essere\n​\n```js\n​\nconst gen_code_challenge = async () => {\n const buffer = new Uint8Array(64)\n crypto.getRandomValues(buffer)\n const code_verifier = btoa(String.fromCharCode(...buffer))\n //crypto.subtle è presente se la pagina web è caricata su https\n const hash = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(codeVerifier))\n const code_challenge = btoa(String.fromCharCode(...new Uint8Array(hash)))\n .replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_')\n return { code_verifier, code_challenge }\n}\n```\n​\nQuindi un esempio di url di redirect finale potrebbe essere\n​\n```\nhttps://core.sandbox-new.flowpay.it/api/openid/authenticate?client_id=9a585977-98c1-4f68-a0a5-651a192f7383&scope=invoice:read\ \ invoice:write&response_type=code&redirect_uri=https://ex.amp.le/redirect&state=1234567890\n```\n​\n​\nL'utente a questo punto concedera' l'autorizzazione per gli scope richiesti (questa parte di flusso è gestita da FlowPay).\n​\nDopo che l'utente ha autorizzato verra' effettuato il redirect alla url indicata nella richiesta iniziale dove verra' inserito nei queri parameters i seguenti campi:\n​\n* `code`: Codice autorizzativo necessario nel prossimo step, di brevissima vita e mono uso\n* `state`: Se presente nella richiesta originaria, viene reinviato non modificato\n​\nquindi ad esempio\n​\n```\nhttps://ex.amp.le/redirect?code=423as23asdfweqf&state=1234567890\n```\n​\n### Ottenimento dell'Access Token\n​\neffettuato il redirect adesso è possibile scambiare il code ottenuto per access token + refresh token con una chiamata all'access token endpoint:\n​\n```\nPOST https://core.sandbox-new.flowpay.it/api/oauth/token\n```\n​\ncon content-type `application/x-www-form-urlencoded`\n​\ne\ \ body composto da:\n\n| parametro | valore |\n|--|--|\n| grant_type | authorization_code |\n| client_id | vostro client id |\n| code | codice ottenuto nel redirect |\n| redirect_uri | redirect uri della richiesta iniziale |\n\n\nInoltre nel caso il client sia privato è necessario aggiungere il parametro `client_secret` mentre nel caso di un client pubblico è necessario inviare il parametro `code_verifier` generato prima della richiesta iniziale.\n​\nLa risposta conterra' l'access_token e il refresh_token necessari per interagire con il gateway FlowPay\n\n\n## Flusso autorizzativo per lettura di dati relativi ad un conto\n\nPer poter ottenere un token autorizzativo che permetta di leggere dati sui conti un di un utente (iban, saldo, transazioni) è necessario per motivi di sicurezza essere un client di tipo confidenziale e quindi di avere a disposizione un client id e un client secret.\n\nIl flusso è diviso nei seguenti passaggi\n\n### Ottenimento di un token `client_credential` abilitato\ \ sullo scope `authorization_intent`\nUn token di questo tipo è collegato al client e non ad un utente e permette di invocare l'endpoint di creazione di un intento di consenso di accesso ai conti di un utente\n\nIn questo caso la chiamata è così composta:\n\n```\nPOST https://core.sandbox-new.flowpay.it/api/oauth/token\n```\n\n| nome | descrizione | esempio |\n|------|-------------|---------|\n| client_id | client ID fornito (il client id è un valore pubblico) | 9a585977-98c1-4f68-a0a5-651a192f7383 |\n| grant_type | Tipo di autenticazione fornita nella richiesta (in questo caso credenziali client) | client_credentials |\n| client_secret | vostro client secret fornito in fase di registrazione | client-secret |\n| scope | Tipi di scope da fornire nel token di risposta (notare che sono diversi da quelli di authorization code) in questo caso siamo interessati allo scope `authorization_intent` | authorization_intent |\n\n\nQuesta chiamata restituirà un access_token in grado di invocare l'endpoint\ \ di creazione di un consenso di riconciliazione necessario nel passaggio successivo\n\nesempio di risposta\n\n```json\n {\n \"access_token\": \"1234567890-token-1234567890\",\n \"token_type\": \"bearer\",\n \"expires_in\": 3600,\n \"scope\": \"authorization_intent\"\n }\n```\n\n\n### Creazione di un consenso di riconciliazione\n\nCon l'access token ottenuto al passaggio precedente si è in grado di invocare la rotta\n\n```\nPOST /authorization/intent/account\n```\n\nutilizzando tale token come bearer token.\n\nEsempio di body\n\n```json\n{\n \"transaction\": true,\n \"balance\": true,\n \"strict\": false,\n}\n```\n\nNel caso si voglia restringere la richiesta a degli account specifici dell'utente (sempre che si conoscano) è possibile inviare la lista di IBAN sui quale si vuole il consenso direttamente nella chiamata.\nLasciando il parametro a `null` sarà l'utente stesso a decidere su quali conti fornire il consenso.\n\nLa risposta conterrà l'id\ \ del consenso appena generato necessario nel prossimo passaggio\n\n```json\n{\n \"transaction\": true,\n \"balance\": true,\n \"id\": \"69EA2496-B2D1-4D29-BE22-9C93F2FE1699\"\n}\n```\n\n\n### Autorizzazione del consenso\n\nQuesti step del flusso sono avvenuti senza nessuna interazione con l'utente finale al quale si sta richiedendo il consenso.\nAdesso è necessario collegare il consenso creato ad un utente, per fare ciò il client deve generare un link di autorizzazione come già spiegato nella documentazione del flusso di autenticazione utilizzando un ulteriore parametro da aggiungere a quelli già discussi:\nIl parametro aggiuntivo è il parametro standard `request` nel contesto [OpenID](https://openid.net/specs/openid-connect-core-1_0.html#JWTRequests).\nIl parametro `request` ha il duplice scopo di verificare l'identità del client e di richiedere all'endpoint di autorizzazione ulteriori funzionalità.\nIn questo specifico caso viene richiesto di autorizzare un consenso alla\ \ lettura dei conti di un utente. \n\n### Generazione del campo request\n\nIl campo request è un JWT formato dai seguenti parametri:\n\n```json\nHEADER:\n{\n \"typ\": \"JWT\",\n \"alg\": \"algoritmo di firma applicato al token\",\n \"kid\": \"id univoco della chiave utilizzata per firmare il jwt\"\n}\nPAYLOAD:\n{\n \"iss\": \"9a585977-98c1-4f68-a0a5-651a192f7383\", //Issuer del JWT in questo caso voi e quindi il campo corrisponde al vostro client_id\n \"aud\": \"https://core.sandbox-new.flowpay.it/api/openid/\", //Audience al quale è rivolto il jwk in questo caso il nostro servizio di openid\n \"redirect_uri\": \"https://ex.amp.le\", //stesso redirect uri passato nel parametro dei query params\n \"client_id\": \"9a585977-98c1-4f68-a0a5-651a192f7383\", //vostro client_id\n \"state\": \"123456789\", //se presente, deve essere uguale al parametro nei query params\n \"scope\": \"openid authorization_intent\", //stessi scope inviati nei query params in questo caso\ \ lo scope openid è necessario per attivare le funzionalità openid e authorization_intent indica che si vuole attivare l'estensione di autorizzazione di uno specifico consenso\n \"response_type\": \"id_token code\", //stessi valori passati nel campo dei query params\n \"claims\": {\n \"id_token\": {\n \"account_access_intent\": {\n \"value\": \"69EA2496-B2D1-4D29-BE22-9C93F2FE1699\", //ID del consenso generato nel passaggio precedente.\n \"essential\": true\n }\n }\n }\n}\n```\n\nLa richiesta verso l'endpoint di autorizzazione che richiede di concedere il consenso in lettura degli account di un utente passa attraverso l'inserimento dell'id del consenso creato al punto precendete e non ancora speso\nnel campo `claims.id_token.account_access_intent`.\n\nCon un esempio concreto abbiamo:\n\n```json\nHEADER\n{\n \"typ\": \"JWT\",\n \"alg\": \"ES256\",\n \"kid\": \"12345678\"\n}\nPAYLOAD\n{\n \"iss\": \"\ 9a585977-98c1-4f68-a0a5-651a192f7383\",\n \"aud\": \"https://core.sandbox-new.flowpay.it/api/openid\",\n \"redirect_uri\": \"https://ex.amp.le/redirect\",\n \"client_id\": \"9a585977-98c1-4f68-a0a5-651a192f7383\",\n \"state\": \"123456789\",\n \"scope\": \"invoice:read invoice:write openid authorization_intent\",\n \"response_type\": \"code\",\n \"claims\": {\n \"id_token\": {\n \"account_access_intent\": {\n \"value\": \"69EA2496-B2D1-4D29-BE22-9C93F2FE1699\",\n \"essential\": true\n }\n }\n }\n}\n```\n\nfirmando il jwt con la seguente chiave:\n```\nREDACTED_PRIVATE_KEY_EXAMPLE\n```\n\nOtteniamo il seguente risultato:\n```\neyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IjEyMzQ1Njc4In0.eyJpc3MiOiI5YTU4NTk3Ny05OGMxLTRmNjgtYTBhNS02NTFhMTkyZjczODMiLCJhdWQiOiJodHRwczovL2NvcmUuc2FuZGJveC1uZXcuZmxvd3BheS5pdC9hcGkvb3BlbmlkIiwicmVkaXJlY3RfdXJpIjoiaHR0cHM6Ly9leC5hbXAubGUvcmVkaXJlY3QiLCJjbGllbnRfaWQiOiI5YTU4NTk3Ny05OGMxLTRmNjgtYTBhNS02NTFhMTkyZjczODMiLCJzdGF0ZSI6IjEyMzQ1Njc4OSIsInNjb3BlIjoiaW52b2ljZTpyZWFkIGludm9pY2U6d3JpdGUgb3BlbmlkIGF1dGhvcml6YXRpb25faW50ZW50IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJjbGFpbXMiOnsiaWRfdG9rZW4iOnsiYWNjb3VudF9hY2Nlc3NfaW50ZW50Ijp7InZhbHVlIjoiNjlFQTI0OTYtQjJEMS00RDI5LUJFMjItOUM5M0YyRkUxNjk5IiwiZXNzZW50aWFsIjp0cnVlfX19fQ.P0Pqeho32esd2crpw2q-AZoSlIPlZ5xy6w6e7GMBIznAB4ohcYIOquZGNC3f-IwXBGcJow-ZvCH7A6jiYKRLHA\n\ ```\n\nquesto jwt deve essere incluso nella richiesta di autenticazione nel campo `request`\n\n\n**Notare che in sandbox non viene verificata la firma del jwt ma si consiglia comunque di applicarla in quanto in ambiente di produzione sarà necessaria,\n Quanto prima verrà fornita un'interfaccia dalla quale sarà possibile caricare la propria chiave pubblica che verrà utilizzata per tale scopo**\n\n**In ambiente di produzione le chiavi e algoritmi utilizzabili per firmare il jwt sono: `PS256` oppure `ES256`**\n\n\nPer quanto riguarda il valore aud in ambiente di sandbox deve essere valorizzato con la stringa\n`https://core.sandbox-new.flowpay.it/api/openid`\n\nPer l'ambiente di produzione invece è richiesta la stringa\n`https://core.flowpay.it/api`\n\nCome esempio la url comprensiva di tutti i parametri per questo flusso autorizzativo è:\nNotare che gli accapo sono stati aggiunti solo per aumentare la leggibilità\n```\nhttps://core.sandbox-new.flowpay.it/api/openid/authenticate\n?client_id=9a585977-98c1-4f68-a0a5-651a192f7383\n\ &scope=invoice:read invoice:write openid authorization_intent\n&response_type=code\n&redirect_uri=https://ex.amp.le/redirect\n&state=123456789\n&request=eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IjEyMzQ1Njc4In0.eyJpc3MiOiI5YTU4NTk3Ny05OGMxLTRmNjgtYTBhNS02NTFhMTkyZjczODMiLCJhdWQiOiJodHRwczovL2NvcmUuc2FuZGJveC1uZXcuZmxvd3BheS5pdC9hcGkvb3BlbmlkIiwicmVkaXJlY3RfdXJpIjoiaHR0cHM6Ly9leC5hbXAubGUvcmVkaXJlY3QiLCJjbGllbnRfaWQiOiI5YTU4NTk3Ny05OGMxLTRmNjgtYTBhNS02NTFhMTkyZjczODMiLCJzdGF0ZSI6IjEyMzQ1Njc4OSIsInNjb3BlIjoiaW52b2ljZTpyZWFkIGludm9pY2U6d3JpdGUgb3BlbmlkIGF1dGhvcml6YXRpb25faW50ZW50IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJjbGFpbXMiOnsiaWRfdG9rZW4iOnsiYWNjb3VudF9hY2Nlc3NfaW50ZW50Ijp7InZhbHVlIjoiNjlFQTI0OTYtQjJEMS00RDI5LUJFMjItOUM5M0YyRkUxNjk5IiwiZXNzZW50aWFsIjp0cnVlfX19fQ.P0Pqeho32esd2crpw2q-AZoSlIPlZ5xy6w6e7GMBIznAB4ohcYIOquZGNC3f-IwXBGcJow-ZvCH7A6jiYKRLHA\n```\n\nA questo punto il flusso rientra nel già documentato flusso di autenticazione.\nIl token ottenuto alla fine di tale flusso potrà essere\ \ speso per effettuare le chiamate relative agli account\n\n\n# Refresh di un Token\n\nIl refresh token viene dato insieme all'access token in caso di grant_type authorization_code.\n\nNel momento in cui l'access token scade si può richiedere un nuovo access token con il refresh token.\n\nLa chiamata da effettuare in questo caso è simile alla chiamata per ottenere l'access token con le proprie client_credentials:\n\n```\nPOST https://core.sandbox-new.flowpay.it/api/oauth/token\n```\n\ncon content-type `application/x-www-form-urlencoded`\n\n\n| nome | descrizione | esempio |\n|------|-------------|---------|\n| client_id | client ID fornito (il client id è un valore pubblico) | 9a585977-98c1-4f68-a0a5-651a192f7383 |\n| grant_type | Tipo di autenticazione fornita nella richiesta (in questo caso token di refresh) | refresh_token |\n| client_secret | vostro client secret fornito in fase di registrazione | client-secret |\n| refresh_token | Refresh token che vogliamo utilizzare | 1234567890-refresh-1234567890\ \ |\n\n\nesempio di risposta\n\n```json\n {\n \"access_token\": \"0987654321-token-0987654321\",\n \"token_type\": \"bearer\",\n \"expires_in\": 3600,\n \"refresh_token\": \"0987654321-refresh-0987654321\"\n }\n```\n\nLa risposta conterrà un nuovo access token ed un nuovo refresh token, **il refresh token appena utilizzato non è più valido. Ma è stato sostituito dal nuovo refresh token, ritornato in questo momento**.\n\n\n\n\n## Push Authorization Request\n\n**Questo endpoint è in fase di sviluppo, ma già utilizzabile in ambiente di sandbox**\n\nPer il flusso autorizzativo `authorization_code` è disponibile l'endpoint di par dove è possibile inviare i dati autorizzativi come post per poi essere successivamente utilizzati\nin una richiesta autorizzativa.\n\nL'endpoint di par è conforme alla sua [RFC](https://datatracker.ietf.org/doc/html/rfc9126).\n\nL'endpoint è disponibile al seguente url in produzione: `https://core.flowpay.it/api/oauth/par`\n\nAccetta\ \ richieste POST con content-type `application/x-www-form-urlencoded` e permette di inviare gli stessi dati che verrebbero inviati in una richiesta di autorizzazione.\nPer i client confidenziali è necessario inviare anche le proprie credenziali in particolare è necessario inviare il parametro `client_secret`\nLa risposta di tale endpoint è nel seguente formato\n\n```\n{\n \"request_uri\": \"urn:abc:def:123456789\",\n \"expires_in\": 60\n}\n```\nLa risposta contiene il campo expires_in che indica per quanto tempo il request_uri è valido.\nIl campo `request_uri` invece contiene un url che deve essere utilizzata per effettuare la richiesta di autorizzazione inviandola nel parametro `request_uri` della richiesta autorizzativa.\nTale `request_uri` è valida per un tempo limitato e monouso.\n\n### Esempio\n\nEseguendo la chiamata:\n\n```\nPOST https://core.sandbox-new.flowpay.it/api/oauth/par\nContent-Type: application/x-www-form-urlencoded\nclient_id=12345-6789&\nclient_secret=client-secret&\n\ scope=invoice:read&\nredirect_uri=https://ex.amp.le/redirect\n```\n\nRiceviamo la risposta:\n\n```\n{\n \"request_uri\": \"urn:abc:def:123456789\",\n \"expires_in\": 60\n}\n```\n\nIl `request_uri` ricevuto viene poi utilizzato per comporre la richiesta di autorizzazione:\n\n```\nGET https://core.sandbox-new.flowpay.it/api/openid/authenticate?\nrequest_uri=urn:abc:def:123456789&\nresponse_type=code\n```\n\nIn questo caso la richiesta completa di autorizzazione viene composta con i seguenti parametri:\n\n```\nclient_id=12345-6789\nscope=invoice:read\nredirect_uri=https://ex.amp.le/redirect\nresponse_type=code\n```\n\nche sono sufficienti per effettuare la richiesta di autorizzazione. Se nella get non fosse stato passato oltre al `request_uri` anche il parametro `response_type` allora la richiesta di autorizzazione avrebbe restituito l'errore:\n`missing required parameter 'response_type'`\n\nQuesto endpoint non va a sostituire nessuna delle funzionalità dell'endpoint di autenticazione,\ \ ma da agli integratori maggiore possibilità di scegliere come meglio gestire i flussi autorizzativi.\n\n### Request e Request uri\n\nIl parametro `request` e `request_uri` sono mutualmente esclusivi e non possono essere utilizzati insieme.\nNel caso si voglia utilizzare una delle funzionalità del campo `request` è possibile inviare il parametro `request` all'endpoint di par. e poi utilizzare il parametro `request_uri` per effettuare la richiesta di autorizzazione.\n\nSe il campo `request` viene inviato all'endpoint di par è possibile omettere il resto dei campi per la richiesta di autorizzazione a patto che il parametro `request` contenga abbastanza informazioni per comporre la richiesta autorizzativa.\n\n\n# Estensioni\n\n\n\n\n## Estensioni OpenID\n\nDurante il flusso autorizzativo è possibile attivare delle estensioni del protocollo OpenID. La prima è già stata documentata e si tratta della estensione per richiedere l'accesso ai conti dell'utente.\n\n\n\n\n### Richiesta esplicita\ \ di accesso\n\nPer i client che volessero dare agli utenti delle proprie piattaforme un meccanismo di collegamento dell'account FlowPay con meno frizioni possibili è possibile\nutilizzare le seguenti estensioni OpenID. Per l'attivazione di tali estensioni è necessario richiedere esplicitamente questa funzionalità, nel caso non ci sia già una via diretta di comunicazione è possibile [contattarci direttamente](mailto:support@flowpay.it)\n\n### Comunicazione dei dati dell'azienda durante l'accesso\n\nL'estensione OpenID in questo caso permette di comunicare i dati dell'azienda e dell'utente per il quale il client sta richiedendo l'accesso.\nIn questo modo nel caso l'azienda che deve concedere l'autorizzazione non sia già registrata a FlowPay potrà registrarsi utilizzando i dati comunicati dal client.\n\nTale estensione prevede di inviare i dati dell'azienda o del consumer nel jwt del campo `request` della richiesta di autorizzazione.\nIn particolare il campo `claims` del jwt deve contenere\ \ i seguenti campi per richiedere l'attivazione di tale estensione nel processo autorizzativo.\n\n```json\n{\n ...\n \"claims\": {\n \"userinfo\": {\n \"business\": { //Si richiede che l'azienda che concede l'autorizzazione rispetti i seguenti requisiti\n \"value\": {\n \"name\": \"Nome Azienda\", //Denominazione dell'azienda\n \"vat_code\": \"00000000001\", //Vat code dell'azienda (senza prefisso)\n \"vat_country_id\": \"IT\", //Codice nazione dell'azienda\n \"certified_email\": \"azienda@pec.com\", //Email certificata dell'azienda\n //I seguenti campi sono opzionali\n \"email\": \"email@email.com\", //Email di contatto dell'azienda\n \"address\": \"via Roma, 1\" //Indirizzo dell'azienda\n },\n \"essential\": true\n },\n \"user\": {\n \"value\": {\n\ \ \"name\": \"Mario\",\n \"surname\": \"Rossi\",\n //I seguenti campi sono opzionali\n \"vat_code\": \"RSSMRA22A01D612M\", //Codice fiscale dell'utente\n \"email\": \"email@email.com\", //Email dell'utente\n \"phone_number\": \"+39 123 456 789\", //Numero di telefono dell'utente\n \"address\": \"via Roma, 1\" //Indirizzo dell'utente\n }\n }\n }\n }\n```\n\nPer l'onboarding degli utenti consumer, è necessario valorizzare il campo `tenant_type=consumer` nei parametri query del link oauth, inoltre è necessario aggiungere lo scope `consumer`.\nPer gli utenti consumer il jwt deve contenere:\n\n```json\n{\n ...\n \"claims\": {\n \"userinfo\": {\n \"consumer\": {\n \"value\": {\n \"name\": \"Mario\",\n \"surname\": \"Rossi\",\n \"\ vat_code\": \"RSSMRA22A01D612M\", //Codice fiscale dell'utente\n //I seguenti campi sono opzionali\n \"email\": \"email@email.com\", //Email dell'utente\n \"phone_number\": \"+39 123456789\", //Numero di telefono dell'utente\n \"address\": \"via Roma 1, Firenze, Italia\" //Indirizzo dell'utente\n },\n \"essential\": true\n }\n }\n }\n```\n\n\n\n## Account Statement\n\nPer casi d'uso dove la terza parte voglia che l'utente attesti l'accesso ad uno o più conti, è possibile utilizzare l'estensione di Account Statement.\nQuesta estensione consente di richiedere, in fase di autorizzazione, che l'utente abbia l'accesso ad uno o più conti indicati dalla terza parte.\n\nIn questo modo la terza parte è in grado di richiedere un servizio equivalente al check iban.\n\nL'account statement è un custom claim che quindi deve essere inviato all'interno del jwt del campo `request`\ \ della richiesta di autenticazione.\nIl formato del custom claim è\n\nNel caso di singolo conto:\n```\n{\n...\n \"claims\": {\n \"id_token\": {\n \"account_statement\": {\n \"value\": \"IT43M0300203280178858532758\",\n \"essential\": true\n }\n }\n }\n...\n}\n```\n\nNel caso di attestazione su più conti:\n```\n{\n...\n \"claims\": {\n \"id_token\": {\n \"account_statement\": {\n \"values\": [\"IT43M0300203280178858532758\", \"IT56E0300203280397756918554\"],\n \"essential\": true\n }\n }\n }\n...\n}\n```\n\nPer attivare questa estensione all'interno degli scope richiesti deve essere presente lo scope `openid`.\n\nLa risposta a questo tipo di richiesta di autorizzazione comprenderà un `id_token` firmato da FlowPay al cui interno sarà compreso un campo `account_statement` dove vengono inseriti gli account verificati dall'utente.\n\nEsempio:\n\n\ ```\n{\n...\n \"account_statement\": [\n {\n \"bankID\": \"flowpay_bank\",\n \"iban\": \"IT43M0300203280178858532758\"\n },\n {\n \"bankID\": \"flowpay_bank\",\n \"iban\": \"IT56E0300203280397756918554\"\n }\n ],\n...\n}\n```\n\nBasterà verificare l'autenticità dell'`id_token` con i classici metodi di verifica tra cui verifica dell'autenticità della firma e valori `iat` e `exp` conformi.\n\nL'`id_token` viene restituito a seconda del tipo di `response_type` richiesto secondo le normali specifiche OpenID.\n\nIn particolare:\n* nel caso di risposta `id_token` l'id_token viene inviato direttamente durante la redirezione verso la url di risposta.\n* nel caso di risposta `code` l'id_token viene inviato in risposta all'ottenimento dell'access token in un ulteriore campo della risposta `id_token`.\n* nel caso di risposta `code id_token` viene inviato sia nei query params sia a seguito dell'ottenimento dell'access token.\n\n### Spiegazione\ \ ad alto livello\nRichiedendo questa estensione il processo di autorizzazione renderà esplicito che la terza parte sta richiedendo che l'utente attesti che tali conti gli appartengano.\nNel caso i conti inviati dalla terza parte siano già stati collegati precedentemente dall'utente sarà sufficiente che l'utente autorizzi a condividere tali informazioni alla terza parte.\nPer i conti invece non collegati all'utente, sarà necessario che prima colleghi tali conti a FlowPay (e quindi che provi l'effettivo possesso di essi) per poter soddisfare la richiesta della terza parte.\n\n\n# Webhooks\n\nIn fase sperimentale e soggetta a breaking changes.\n\n\n\n\n## Creazione di un webhook\n\nGli endpoint di webhook permettono di attivare uno o più webhook per un determinato evento, avendo gli scope necessari per farlo.\n\nAd esempio per ricevere la notifica per l'evento **nuovo pagamento per una fattura** è necessario avere gli scope `invoice:read` e `payment:read`\n\nPer ciascun tipo di webhook\ \ sono definiti gli scope necessari per la sua attivazione.\n\nL'endpoint di attivazione di un webhook in produzione non permette di specificare un webhook che non utilizzi https.\n\n\n\n## Eventi WebHook\n\nL'endpoint di webhook permette di ottenere la lista dei webhook che possono essere attivati, ma forniamo anche qua la lista degli stessi eventi.\n\n* **nuovo pagamento per una fattura**: Nel momento in cui viene autorizzato il pagamento di un termine di pagamento relativo ad una fattura.\n* **nuovo pagamento per un salario**: Nel momento in cui viene autorizzato il pagamento di un termine di pagamento relativo ad un salario.\n* **nuovo pagamento per una ricevuta**: Nel momento in cui viene autorizzato il pagamento di un termine di pagamento relativo ad una ricevuta.\n* **un pagamento cambia stato**: Nel momento in cui un pagamento cambia stato rispetto allo stato precedente.\n\n\n\n## Attivazione di un webhook\n\nPer ciascun webhook creato, deve essere anche impostato un periodo\ \ di interesse. L'interesse è il periodo di tempo per il quale il webhook rimane attivo.\nNon può superare il mese di tempo, ma è sempre possibile rinnovare il periodo di interesse.\n\nQuesto permette di non sovraccaricare il sistema FlowPay con webhook non più attivi.\n\n\n### Disattivazione di un webhook\n\nSi fa presente che un webhook può essere disattivato contattando il relativo endpoint, ma è anche disattivato nel caso di revoca del token utilizzato per la\ncreazione del webhook, sia che il token venga revocato dall'utente oppure dall'applicazione.\n\n\n\n### Revoca di un token utilizzato per un webhook\n\nNel caso un token utilizzato per creare un webhook venga revocato, i webhook collegati a tale token vengono eliminati. Nel momento in cui vengono eliminati viene effettuata una ultima chiamata verso la url del webhook per indicare la sua disattivazione.\nIl formato della chiamata è il seguente:\n\nmetodo: DELETE\n\nbody:\n\n| parametro | tipo | descrizione |\n| --------- | ----\ \ | ----------- |\n| `event` | string | Nome dell'evento per il quale è stato disattivato il webhook |\n| `tenantID` | string | ID dell'azienda per il quale è stato disattivato il webhook |\n| `webhookID` | string | ID del webhook per il quale è stato disattivato il webhook |\n\n\n\n## Funzionamento di un WebHook\n\nI WebHook vengono eseguiti con chiamate POST al link ricevuto.\n\nIl content-type della richiesta è `application/json`.\n\nInoltre per permettere al client di verificare la validità della richiesta vengono inclusi due header\n* `X-FlowPay-Timestamp` che contiene il timestamp della richiesta come secondi dal 1/1/1970\n* `X-FlowPay-Raw-Signature` e `X-FlowPay-Der-Signature` che contengono la firma della richiesta.\n\nUn webhook viene considerato consegnato quando la risposta alla richiesta fornisce una risposta con status code 200.\n\nIn tutti gli altri casi viene considerato che il webhook abbia fallito ad essere consegnato.\n\nAttraverso questi due headers è possibile verificare\ \ che la richiesta sia stata inviata da FlowPay.\n\nI webhook per motivi di sicurezza hanno delle policy restrittive sui tempi di esecuzione.\n\nQuindi è necessario che l'endpoint contattato risponda entro un massimo di 10 secondi.\n\nInoltre in ambiente di produzione, il sistema FlowPay controlla il certificato del server al quale la richiesta viene inviata, quindi non è possibile utilizzare dei certificati self signed in quanto la loro verifica fallirà.\n\nIl webhook in caso di errore verrà riprovato automaticamente più volte fino ad massimo numero di tentativi ad intervalli di tempo casuali con un backup esponenziale\n\n\n## Scadenza di un webhook\n\nUn webhook come già specificato, ha una scadenza, dopo che il webhook è scaduto, non verrà più contattato dal sistema FlowPay.\nPer evitare discontinuità di servizio, si invita ad implementare politiche di refresh del webhook.\n\nPer aiutare in questo compito, il sistema FlowPay effettua esso stesso una chiamata ad ogni webhook la cui\ \ data di scadenza sia inferiore ad un giorno.\n\nLa chiamata a differenza della richiesta normale, è una chiamata GET. Senza body. Viene firmata come le altre richieste, in questo caso la stringa che genera la firma è:\n`timestamp + '.'`\n\nSe la risposta che FlowPay si aspetta è una risposta con status code 201 (created).\nCon content-type `application/json`:\n\n| parametro | tipo | descrizione |\n| -------- | ---- | ----------- |\n| `expiresAt` | `string` | nuova data di scadenza del webhook in formato ISO 8601 (yyyy-MM-ddTHH:mm:SSZ), (MAX 1 mese rispetto alla chiamata) |\n\nIn questo caso il sistema FlowPay aggiorna la data di scadenza del webhook.\n\nCon qualunque altro tipo di risposta il sistema FlowPay non effettuerà alcuna azione ne applicherà nessun tipo di fallback.\n\n\n\n## Signature\n\nCome già menzionato per verificare la correttezza della richiesta effettuata sul webhook viene inclusa una firma.\n\nLa firma è composta utilizzando l'algoritmo ECDSA con SHA256 come funzione\ \ di hashing.\nLa firma in rappresentazione raw (r || s) è poi codificata in base64.\nEd inserita nel header `X-FlowPay-Raw-Signature`.\nLa firma in rappresentazione der è poi codificata in base64.\nEd inserita nell header `X-FlowPay-Der-Signature`.\n\nQuesti due header identificano la stessa identica firma, ma a seconda di linguaggi e librerie criptografiche utilizzate potrebbe essere necessario utilizzare l'una o l'altra rappresentazione.\n(Ad esempio `openssl` da linea di comando ha bisogno della rappresentazione der, la libreria `ecdsa` di python invece permette di convertire da uno all'altro formato, e permette di verificare in formato raw).\nPer aiutare nell'integrazione abbiamo deciso di includere entrambi i formati\n\nLa firma è calcolata come segue:\nil timestamp presente nell'header `X-FlowPay-Timestamp`.\nil carattere '.'\nil body della richiesta.\n\nQuindi ad esempio se il timestamp fosse `1564984123` e il body è `{\"foo\":\"bar\"}` allora la firma sarà calcolata a partire\ \ da `1564984123.{\"foo\":\"bar\"}`.\n\nSe la chiave privata fosse la seguente:\n```\nREDACTED_PRIVATE_KEY_EXAMPLE\n```\n\nLa firma ottenuta sarà:\n```\n62yjf/WdIsIXrKZWtgO0EMgaJdGIpT2/8YipH5XkhcVV3B3juNhq8r/UaBWva/GOVcE2vKUmTYp/I1F98lb1DA==\n```\n\n\n## Chiavi\n\nLe chiavi pubbliche utilizzate da FlowPay per firmare le richieste sono le seguenti:\n\n### Sandbox\n```\n-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEV8qSJfTqHfOqy3UI6xVGNFjpYpQV \nBBFZUXxrttYkxNrCcpn2MEKJ4lM50xDRdpdnoi3ORgW3SUCmTaMA4dNUoA==\n-----END PUBLIC KEY-----\n```\n\n### Production\n```\n-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElKC85kYFZdNyaKeCWBwdfOt+kWNi\n/3jjVPihZgUTvwthdLIONHziSWrNlx4i0A5luWA0ZRbGbUggea8INtlNgA==\n-----END PUBLIC KEY-----\n```\n\n\n## Eventi in dettaglio\n\ \nPer ciascun evento viene definito in dettaglio i campi del body della richiesta.\nInoltre ciascun corpo comprende sempre:\n\n* `event`: identificativo dell'evento.\n* `tenantID`: l'identificativo dell'azienda interessata dall'evento.\n* `eventID`: Identificativo di idempotenza per la richiesta.\n* `payload`: il payload della richiesta.\n* `expiresAt`: quando il webhook contattato scade, questo campo è da intendersi come un reminder per permettere di riattivare il webhook. Il suo formato è una stringa che rappresenta una data in formato ISO8601 `YYYY-MM-DDTHH:mm:SSZ`.\n* `eventCreatedAt`: indica il momento di creazione dello specifico evento. Il suo formato è una stringa che rappresenta una data in formato ISO8601 `YYYY-MM-DDTHH:mm:SSZ`.\n\n### Token Revocato\n\n\nInvocato se uno qualunque dei token ottenuti dal client viene revocato.\n\nnome evento: `token_revoked`\n\nscope client credentials richiesti: qualunque token valido\n\nbody:\n\n| campo | formato | descrizione |\n| ----- |\ \ ------- | ----------- |\n| `tenantID` | `string` | Identificativo dell'azienda per il quale è stato revocato il token |\n| `tokenID` | `string` | Identificativo del token revocato |\n| `revokedAt` | `string` | Data e ora di revoca del token. (formato ISO8601 yyyy-MM-ddTHH:mm:SSZ) |\n\n### Nuovo pagamento per una fattura\n\nnome evento: `invoice_payment_authorized`\n\nscope authorization code richiesti: `invoice:read & payment:read`\n\nbody:\n\n| campo | formato | descrizione |\n| ---- | ---- | ---- |\n| `identifier` | `string` | Identificativo del pagamento |\n| `fingerprint` | `string` | Identificativo della fattura. |\n| `termID` | `string` | Identificativo del termine di pagamento all'interno della fattura. |\n| `creditor` | `string` | Codice fiscale del creditore (vat code in quanto si fa riferimento ad un documento B2B). |\n| `debtor` | `string` | Codice fiscale del debitore (vat code in quanto si fa riferimento ad un documento B2B). |\n| `amount` | `double` | Importo del pagamento.\ \ |\n| `status` | `string` | Stato del pagamento. |\n| `createdAt` | `string` | Data di creazione del pagamento. (formato ISO8601 yyyy-MM-ddTHH:mm:SSZ) |\n\n### Nuovo pagamento per un checkout creato dal client\n\nQuesto webhook viene eseguito quando un checkout creato dal client viene pagato.\n\nnome evento: `checkout_payment_authorized`\n\nscope client credential richiesti: `payment:read`\n\nbody:\n\n| campo | formato | descrizione |\n| ---- | ---- | ---- |\n| `type` | `string` | Tipo del documento (e.g. `bill`, `invoice`) |\n| `identifier` | `string` | Identificativo del pagamento (formato uuid) |\n| `tenantID` | `string` | Identificativo del tenant a cui si riferisce il pagamento, in particolare è il tenant che per il quale il client ha creato il checkout |\n| `fingerprint` | `string` | Identificativo del documento |\n| `termID` | `string` | Identificativo del termine di pagamento all'interno del documento (formato uuid) |\n| `creditor` | `string` | identificativo del creditore\ \ (vat code quando si fa riferimento ad un documento B2B) |\n| `debtor` | `string` | identificativo del debitore (vat code quando si fa riferimento ad un documento B2B, codice fiscale nel caso di documento B2C) |\n| `status` | `string` | Stato del pagamento |\n| `createdAt` | `string` | Data di creazione del pagamento. (formato ISO8601 yyyy-MM-ddTHH:mm:SSZ) |\n\n### Un pagamento per un checkout creato dal client ha cambiato stato\n\nnome evento: `checkout_payment_status_changed`\n\nscope client credential richiesti: `payment:read`\n\nbody:\n\n| campo | formato | descrizione |\n| ---- | ---- | ---- |\n| `type` | `string` | Tipo del documento (e.g. `bill`, `invoice`) |\n| `identifier` | `string` | Identificativo del pagamento (formato uuid) |\n| `tenantID` | `string` | Identificativo del tenant a cui si riferisce il pagamento, in particolare è il tenant che per il quale il client ha creato il checkout |\n| `fingerprint` | `string` | Identificativo del documento |\n| `termID` | `string`\ \ | Identificativo del termine di pagamento all'interno del documento (formato uuid) |\n| `creditor` | `string` | identificativo del creditore (vat code quando si fa riferimento ad un documento B2B) |\n| `debtor` | `string` | identificativo del debitore (vat code quando si fa riferimento ad un documento B2B, codice fiscale nel caso di documento B2C) |\n| `createdAt` | `string` | Data di creazione del pagamento. (formato ISO8601 yyyy-MM-ddTHH:mm:SSZ) |\n| `previousState` | `string` | Stato precedente del pagamento (opzionale nel caso non fosse presente uno stato precedente) |\n| `currentState` | `string` | Stato attuale del pagamento |\n\n\n### Nuovo pagamento per una ricevuta\n\nnome evento: `bill_payment_authorized`\n\nscope authorization code richiesti: `bill:write & payment:read`\nscope client credential richiesti: `bill`\n\nbody:\n\n| campo | formato | descrizione |\n| ---- | ---- | ---- |\n| `identifier` | `string` | Identificativo del pagamento |\n| `fingerprint` | `string` | Identificativo\ \ della fattura. |\n| `termID` | `string` | Identificativo del termine di pagamento all'interno della fattura. |\n| `creditor` | `string` | Codice fiscale del creditore (vat code o codice fiscale in quanto si fa riferimento ad un documento B2C). |\n| `debtor` | `string` | Codice fiscale del debitore (vat code o codice fiscale in quanto si fa riferimento ad un documento B2C). |\n| `amount` | `double` | Importo del pagamento. |\n| `status` | `string` | Stato del pagamento. |\n| `createdAt` | `string` | Data di creazione del pagamento. (formato ISO8601 yyyy-MM-ddTHH:mm:SSZ) |\n\n### Un pagamento per una fattura ha cambiato stato\n\nnome evento: `invoice_payment_status_changed`\n\nscope authorization code richiesti: `invoice:read payment:read`\n\nbody:\n\n| campo | formato | descrizione |\n| ---- | ---- | ---- |\n| `identifier` | `string` | Identificativo del pagamento |\n| `fingerprint` | `string` | Identificativo della fattura. |\n| `termID` | `string` | Identificativo del termine di pagamento\ \ all'interno della fattura. |\n| `creditor` | `string` | Codice fiscale del creditore (vat code in quanto si fa riferimento ad un documento B2B). |\n| `debtor` | `string` | Codice fiscale del debitore (vat code in quanto si fa riferimento ad un documento B2B). |\n| `amount` | `double` | Importo del pagamento. |\n| `status` | `string` | Stato del pagamento. |\n| `createdAt` | `string` | Data di creazione del pagamento. (formato ISO8601 yyyy-MM-ddTHH:mm:SSZ) |\n| `previousState` | `string or null` | Stato precedente del pagamento. (nullo nel caso il pagamento sia stato appena creato) |\n| `currentState` | `string` | Stato corrente del pagamento. |\n\n### Un pagamento per una ricevuta ha cambiato stato\n\nnome evento: `bill_payment_status_changed`\n\nscope authorization code richiesti: `bill:write payment:read`\nscope client credential richiesti: `bill`\n\nbody:\n\n| campo | formato | descrizione |\n| ---- | ---- | ---- |\n| `identifier` | `string` | Identificativo del pagamento |\n| `fingerprint`\ \ | `string` | Identificativo della fattura. |\n| `termID` | `string` | Identificativo del termine di pagamento all'interno della fattura. |\n| `creditor` | `string` | Codice fiscale del creditore (vat code o codice fiscale in quanto si fa riferimento ad un documento B2C). |\n| `debtor` | `string` | Codice fiscale del debitore (vat code o codice fiscale in quanto si fa riferimento ad un documento B2C). |\n| `amount` | `double` | Importo del pagamento. |\n| `status` | `string` | Stato del pagamento. |\n| `createdAt` | `string` | Data di creazione del pagamento. (formato ISO8601 yyyy-MM-ddTHH:mm:SSZ) |\n| `previousState` | `string or null` | Stato precedente del pagamento. (nullo nel caso il pagamento sia stato appena creato) |\n| `currentState` | `string` | Stato corrente del pagamento. |\n\n\n### Un consenso su una banca sta per scadere\n\nnome evento: `consent_expiring`\n\nscope authorization code richiesti: nessuno, ma il token deve essere stato ottenuto secondo il flusso per l'accesso\ \ ai conti dell'utente\nscope client credential richiesti: `account:read`\n\nbody:\n\n| campo | formato | descrizione |\n| ---- | ---- | ---- |\n| `bankID` | `string` | Identificativo della banca. all'interno di flowpay |\n| `expiresAt` | `date` | Data di scadenza del consenso. (formato ISO8601 yyyy-MM-ddTHH:mm:SSZ) |\n\nQuesto evento viene inviato circa 7 giorni prima della scadenza normale di un consenso.\n\n### Un consenso su una banca è scaduto\n\nnome evento: `consent_expired`\n\nscope authorization code richiesti: nessuno, ma il token deve essere stato ottenuto secondo il flusso per l'accesso ai conti dell'utente\nscope client credential richiesti: `account:read`\n\nbody:\n\n| campo | formato | descrizione |\n| ---- | ---- | ---- |\n| `bankID` | `string` | Identificativo della banca. all'interno di flowpay |\n| `expiresAt` | `date` | Data di scadenza del consenso. (formato ISO8601 yyyy-MM-ddTHH:mm:SSZ) |\n\n\nQuesto evento viene inviato quando un consenso scade. Questo può avvenire\ \ all scadenza normale di un consenso ricorrente: 90 giorni dopo la sua creazione.\nOppure in seguito alla revoca del consenso da parte dell'utente che in autonomia può accedere alla propria banca e richiedere di revocare il consenso.\n\n### Eventi relativi ad un flusso di checkout\n\nscope client credential richiesti: `invoice:read bill`\n\nbody:\n\n| campo | formato | descrizione |\n| ---- | ---- | ---- |\n| `code` | `string` | Codice del checkout |\n| `fingerprint` | `string` | Identificativo dell'documento al quale fa riferimento il checkout. |\n| `type` | `enum('invoice', 'bill')` | Tipo di documento al quale fa riferimento il checkout. |\n| `createdAt` | `string` | Data di creazione del checkout. (formato ISO8601 yyyy-MM-ddTHH:mm:SSZ) |\n| `previous` | `PreviousEvent` | Informazioni sullo stato precedente del checkout. (nullo se questo è il primo evento per questo checkout) |\n\nPreviousEvent:\n\n\n| campo | formato | descrizione |\n| ---- | ---- | ---- |\n| `name` | `enum('checkout_opened',\ \ 'checkout_closed', 'checkout_sca_opened', 'checkout_ok', 'checkout_ko')` | Nome dell'evento precedente. |\n| `createdAt` | `string` | Data di registrazione dell'evento precedente. (formato ISO8601 yyyy-MM-ddTHH:mm:SSZ) |\n\n* nome evento: `checkout_opened`\n * descrizione: Indica che un link di checkout creato dall'applicazione è stato aperto.\n* nome evento: `checkout_closed`\n * descrizione: Indica che la finestra di checkout è stata abbandonata.\n* nome evento: `checkout_sca_opened`\n * descrizione: Indica che il checkout è stato rediretto all'autorizzazione esterna al sistema FlowPay.\n* nome evento: `checkout_ok`\n * descrizione: Indica che l'autorizzazione esterna è stata effettuata con successo.\n* nome evento: `checkout_ko`\n * descrizione: Indica che l'autorizzazione esterna non è stata effettuata con successo.\n\nQuesti eventi possono essere utilizzati per monitorare lo stato di un checkout. E il flusso che l'utente sta seguendo.\nGli eventi possono essere\ \ inviati secondo uno specifico ordine.\nIl ciclo di vita di tali eventi è il seguente:\n\n### Evento ricevuto: `checkout_opened`\nL'utente chiude il checkout: -> `checkout_closed`\nL'utente viene redirezionato verso l'autorizzazione esterna: -> `checkout_sca_opened`\n\n### Evento ricevuto: `checkout_closed`\nL'utente ha abbandonato la finestra di checkout\n\n### Evento ricevuto: `checkout_sca_opened`\nL'utente si trova nella pagina di autorizzazione esterna.\nNel caso l'utente abbandoni la pagina in questo momento non abbiamo modo di monitorare la sua azione e quindi non verrà scatenato l'evento di `checkout_closed`\nRiceviamo un redirect dall'autorizzazione esterna a seguito dell'autorizzazione dell'utente -> Controlliamo l'esito dell'autorizzazione -> `checkout_ok` o `checkout_ko`\n\n### Evento ricevuto: `checkout_ok`\nL'utente ha autorizzato il checkout e l'utente adesso viene redirezionato. Nel caso il checkout comprenda okRedirect, l'utente viene redirezionato fuori dal checkout\ \ FlowPay.\nNel caso il checkout non comprenda un okRedirect l'utente viene nuovamente redirezionato alla pagina di checkout -> `checkout_opened`, l'utente non sarà in grado di riaprire la pagina di autorizzazione se tutti i termini di pagamento del checkout sono stati autorizzati.\n\n### Evento ricevuto: `checkout_ko`\nL'utente ha negato l'autorizzazione al pagamento. Nel caso il checkout comprenda koRedirect, l'utente viene redirezionato fuori dal checkout FlowPay.\nNel caso il checkout non comprenda un koRedirect l'utente viene nuovamente redirezionato alla pagina di checkout -> `checkout_opened`, l'utente può tentare nuovamente di autorizzare il pagamento.\n\n\n## Testare un WebHook\n\nIn ambiente solo di sandbox, è possibile testare un WebHook inviando una richiesta POST all'endpoint\n\n/:tenantID/webhooks/trigger\n\n\nIl body della richiesta deve includere il campo webHookID che indica quale webHook deve essere triggherato,\ninoltre accetta qualunque parametro che verrebbe inviato\ \ nella richiesta di webhook. I parametri passati saranno inviati al webhook così come sono.\nPer quelli non ricevuti il sistema provvederà a generarli in maniera casuale.\n\nQuesto tipo di trigger non attiva meccanismi di fallback nel caso il webhook non risponda, ma registrerà l'eventuale errore.\n\nPoiché la chiamata dal webhook viene eseguita dal sistema flowpay tale url deve essere contattabile dai nostri server. Quindi evitate di utilizzare localhost o simili in quanto non funzioneranno.\nPer testare in locale la chiamata si consiglia l'utilizzo di un proxy. Ad esempio [ngrok](https://ngrok.com/).\n\n# TenantID\n\n## Premessa\nIl tenantID è necessario per quasi tutti gli endpoint della piattaforma. Questo tenantID corrisponde all'id univoco fornito all'azienda dell'utente.\nQuesto è necessario in quanto FlowPay implementa un meccanismo di multi business dove lo stesso utente potrebbe aver accesso a più aziende contemporaneamente.\n\nPer ottenere tale valore una volta ottenuto un\ \ token autorizzativo è necessario invocare l'endpoint di token introspection si rimanda al suo [RFC](https://datatracker.ietf.org/doc/html/rfc7662)\n\nla cui rotta è\n```\nhttps://core.sandbox-new.flowpay.it/api/openid/token/introspection\n```\n\ncon content-type `application/x-www-form-urlencoded`\n\nparametro `token` valore il token per il quale si vuole fare introspezione\n\nNon è necessaria autenticazione per invocare tale endpoint e ritorna informazioni sul token inviato nella richiesta, si fornisce un esempio di risposta\n```json\n{\n \"client_id\": \"EC8D0335-186A-4C11-9BAA-15330FB34637\",\n \"scope\": [\n \"invoice:read\"\n ],\n \"exp\": 1627908504.210332,\n \"active\": true,\n \"iss\": \"https://core.sandbox-new.flowpay.it/api/openid\",\n \"aud\": \"EC8D0335-186A-4C11-9BAA-15330FB34637\",\n \"jti\": \"7FD9003C-C8B8-481D-AC9C-015CE6E56733\",\n \"business_id\": \"24EDB5F1-9C5D-498D-83C1-03B3DD7023BD\",\n \"token_type\": \"Bearer\",\n \"\ role\": 100,\n \"iat\": 1627907604.2105079,\n \"sub\": \"2E3F6F08-AC92-4924-8337-0CB82B6444BF\"\n}\n```\nil campo `business_id` corrisponde al tenantID collegato a questo token\n\n# Third party and user API endpoint.\n\n## Pagination\nIn every request which returns a list of object it accepts in the query the following parameters to paginate the results\n\n| name | type | default | description |\n|---|---|---|---|\n| `per` | `integer` | 15 | Results per page |\n| `page` | `integer` | 0 | Page number |\n" termsOfService: https://www.flowpay.it/tos title: FlowPay version: 1.0.0 x-api-evangelist: method: searched fetched: '2026-09-17' source: https://gist.githubusercontent.com/RaesakAce/be1ea786e0949c700d90099c8504f03a/raw/f4cc83791e32b45957a364b0f2466f8895422d8b/fp-docs.json via: https://docs.flowpay.it/ (ReDoc spec-url attribute on the first-party docs host) original: openapi/_original/bancomat-flowpay-api-v1-openapi.json ownership: 'FlowPay S.r.l. (flowpay.it) is a BANCOMAT S.p.A. subsidiary: the acquisition closed 2025-07-22 per https://bancomat.it/en/press-releases/bancomat-acquires-flowpay-closing-finalized and the FlowPay GitHub org describes itself as "a Bancomat company"; the spec self-identifies as FlowPay (servers, contact) and is saved unmodified.' components: schemas: Account: properties: additionalData: description: Dati aggiuntivi sull'account, in particolare i dati si riferiscono allo stato attuale del consenso che FlowPay ha sull'account properties: consentActive: example: 'true' type: boolean consentValidUntil: example: '2020-03-03T17:32:28Z' format: date-time type: string hasAccessRight: example: 'true' type: boolean required: - consentActive type: object bankID: description: |- ID FlowPay della banca all'interno del Bank Gateway. Identifica l'istituto di pagamento dove è collocato l'account example: string type: string currency: description: |- Valuta dell'account (e.g. `EUR`, `CHF`). Verrà probabilmente codificato in futuro con una enum example: string type: string iban: description: IBAN dell'account example: string type: string id: example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string label: description: Testo libero per identificare meglio l'account example: string type: string userIDs: items: example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string type: array vatCode: description: Partita iva a cui appartiene questo account example: string type: string required: - iban - currency - vatCode - bankID - userIDs type: object Accounts: items: $ref: '#/components/schemas/Account' type: array AIS-Session: properties: aisSessionID: example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string url: example: string type: string required: - url - aisSessionID type: object AdditionalData: properties: consentActive: example: 'true' type: boolean consentValidUntil: example: '2020-03-03T17:32:28Z' format: date-time type: string hasAccessRight: example: 'true' type: boolean required: - consentActive type: object AisConsentType: enum: - transaction - balance type: string Array: items: $ref: '#/components/schemas/Item' type: array Attachment: properties: file: description: Contenuto dell'allegato codificato in base64 example: null format: binary type: string id: description: Identificativo univoco dell'allegato example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string name: description: Nome dell'allegato example: allegato.pdf type: string type: example: pdf type: string required: - name - type type: object Balance: properties: balance: example: '123.45' format: double type: number balanceType: example: string type: string currency: example: EUR type: string date: example: '2020-03-03T17:32:28Z' format: date-time type: string iban: example: IT59Q0300203280162876621571 type: string required: - iban - balance - date - currency - balanceType type: object Balances: additionalProperties: additionalProperties: additionalProperties: items: $ref: '#/components/schemas/Balance' type: array type: object type: object type: object Bank: properties: countryID: example: IT type: string details: properties: endDateSupported: example: 'true' type: boolean executionRuleSupported: items: example: string type: string type: array futurePaymentSupported: example: 'true' type: boolean oneShotRecurringAvailable: example: 'true' type: boolean recurringPaymentFrequencies: items: example: string type: string type: array recurringPaymentSupported: example: 'true' type: boolean sctInstSupported: example: 'true' type: boolean required: - endDateSupported - oneShotRecurringAvailable - futurePaymentSupported - sctInstSupported - recurringPaymentFrequencies - executionRuleSupported - recurringPaymentSupported type: object email: example: example@example.com type: string flowpayID: example: string type: string icon: example: string type: string name: example: string type: string nationalCode: example: string type: string nestedIn: example: string type: string phoneNumber: example: string type: string required: - name - icon - phoneNumber - countryID type: object BankInfo: properties: endDateSupported: example: 'true' type: boolean executionRuleSupported: items: example: string type: string type: array futurePaymentSupported: example: 'true' type: boolean oneShotRecurringAvailable: example: 'true' type: boolean recurringPaymentFrequencies: items: example: string type: string type: array recurringPaymentSupported: example: 'true' type: boolean sctInstSupported: example: 'true' type: boolean required: - endDateSupported - oneShotRecurringAvailable - futurePaymentSupported - sctInstSupported - recurringPaymentFrequencies - executionRuleSupported - recurringPaymentSupported type: object Banks: items: $ref: '#/components/schemas/Bank' type: array Bulk: properties: amount: description: Importo totale del bulk example: 48223.07 format: double type: number documents: additionalProperties: items: $ref: '#/components/schemas/Fingerprint' type: array description: Dizionario dei documenti relativi a bulk, con chiave il tipo di documento e con valore le fingerprint dei documenti type: object fingerprint: $ref: '#/components/schemas/Fingerprint' type: object ConsentDTO: type: object properties: id: type: string format: uuid description: Id univoco del consenso bankID: type: string description: Nome univoco della banca per la quale è stato concesso il consenso expiresAt: type: string format: date-time description: Data nella quale il consenso finisce di valere createdAt: type: string format: date-time description: Data nella quale il consenso è stato creato recurring: type: boolean description: Indica se il consenso è di tipo ricorrente oppure no usableFor: type: array items: $ref: '#/components/schemas/ConsentType' description: Indica per cosa questo consenso può essere usato (e.g. Lettura conti, saldo, transazioni) userID: type: string format: uuid nullable: true required: - id - bankID - expiresAt - createdAt - recurring - usableFor ConsentType: type: string enum: - account - balance - transaction description: 'Tipi di consenso disponibili: account, balance, transaction' Categorization: properties: dateString: example: string type: string documentDate: example: '2020-03-03T17:32:28Z' format: date-time type: string documentType: $ref: '#/components/schemas/DocumentType' id: example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string reference: example: string type: string transactionID: example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string type: object Categorizations: items: $ref: '#/components/schemas/Categorization' type: array Chain: description: Chain of documents properties: fingerprint: $ref: '#/components/schemas/Fingerprint' targetFingerprint: $ref: '#/components/schemas/Fingerprint' targetType: $ref: '#/components/schemas/DocumentKindEnum' triggerFingerprint: $ref: '#/components/schemas/Fingerprint' triggerType: $ref: '#/components/schemas/DocumentKindEnum' type: object CheckoutRequest: properties: fingerprint: description: Fingerprint del documento per il quale si sta creando il checkout example: d41d8cd98f00b204e9800998ecf8427e type: string nokRedirect: description: |- URL di reindirizzamento in caso di checkout fallito. Poiché questa URL deve essere pubblica e raggiungibile dal browser dell'utente si consiglia di inserire al suo interno qualcosa che possa provare la correttezza del redirect. Ad esempio un jwt firmato dall'integratore con al suo interno un id univoco riconoscibile nel momento del redirect. example: https://www.google.com/search?q=nok type: string okRedirect: description: |- URL di reindirizzamento in caso di checkout andato a buon fine. Poiché questa URL deve essere pubblica e raggiungibile dal browser dell'utente si consiglia di inserire al suo interno qualcosa che possa provare la correttezza del redirect. Ad esempio un jwt firmato dall'integratore con al suo interno un id univoco riconoscibile nel momento del redirect. example: https://www.google.com/search?q=ok type: string type: $ref: '#/components/schemas/DocumentType' required: - type - fingerprint type: object CheckoutResponse: properties: code: description: Codice univoco del checkout example: LjJ5imbL type: string expire: description: Data di scadenza del codice di checkout example: '2020-03-03T17:32:28Z' format: date-time type: string payments: items: $ref: '#/components/schemas/PaymentDTO' type: array required: - code - expire - payments type: object CollectionMethodEnum: type: string enum: - sct - sctInst - card - ssd CheckoutPreferences: type: object properties: strict: type: boolean default: false terms: type: array items: type: string format: uuid paymentMethodID: type: string format: uuid connectorMethodID: type: string format: uuid allowedMethods: description: Lista di metodi di pagamento che il debitore puó selezionare, in caso non sia stato indicato un metodo di pagamento specifico type: array items: $ref: '#/components/schemas/CollectionMethodEnum' default: - sct - sctInst - card - ssd canEditRemittance: type: boolean default: true required: - allowedMethods CheckoutPreferencesResponse: type: object properties: strict: type: boolean default: false allowedMethods: description: Lista di metodi di pagamento che il debitore puó selezionare, in caso non sia stato indicato un metodo di pagamento specifico type: array items: $ref: '#/components/schemas/CollectionMethodEnum' default: - sct - sctInst - card - ssd canEditRemittance: type: boolean default: true required: - strict - allowedMethods - canEditRemittance CompanyVATNumber: description: VAT number of the company, full european format example: IT12345678901 pattern: /^((AT)(U\d{8})|(BE)(0\d{9})|(BG)(\d{9,10})|(CY)(\d{8}[LX])|(CZ)(\d{8,10})|(DE)(\d{9})|(DK)(\d{8})|(EE)(\d{9})|(EL|GR)(\d{9})|(ES)([\dA-Z]\d{7}[\dA-Z])|(FI)(\d{8})|(FR)([\dA-Z]{2}\d{9})|(HU)(\d{8})|(IE)(\d{7}[A-Z]{2})|(IT)(\d{11})|(LT)(\d{9}|\d{12})|(LU)(\d{8})|(LV)(\d{11})|(MT)(\d{8})|(NL)(\d{9}(B\d{2}|BO2))|(PL)(\d{10})|(PT)(\d{9})|(RO)(\d{2,10})|(SE)(\d{12})|(SI)(\d{8})|(SK)(\d{10}))$ type: string x-faker: finance.vat Contact: properties: SDICode: description: Codice SDI example: string type: string address: description: Indirizzo dell'azienda example: string type: string certifiedEmail: description: posta certificata dell'azienda example: example@example.com type: string email: description: email di contatto dell'azienda example: example@example.com type: string icon: description: URL dove trovare l'icona dell'azienda example: string type: string latitude: description: Latitudine dell'indirizzo dell'azienda example: '123.45' format: double type: number longitude: description: Longitudine dell'indirizzo dell'azienda example: '123.45' format: double type: number name: description: Nome comune dell'azienda example: string type: string onFlowpay: example: 'true' type: boolean phoneNumber: description: Numero di contatto dell'azienda example: string type: string vatCode: description: Partita iva dell'azienda example: string type: string required: - onFlowpay - name - vatCode type: object CountryCode: enum: - AL - AD - AT - AZ - BH - BE - BA - BR - BG - CR - HR - CY - CZ - DK - DO - TL - EG - SV - EE - FO - FI - FR - GE - DE - GI - GR - GL - GT - HU - IS - IQ - IE - IL - IT - JO - KZ - XK - KW - LV - LB - LY - LI - LT - LU - MK - MT - MR - MU - MC - MD - ME - NL - 'NO' - PK - PS - PL - PT - QA - RO - LC - SM - ST - SA - RS - SC - SK - SI - ES - SD - SE - CH - TN - TR - UA - AE - GB - VA - VG type: string CreateAisSessionRequest: properties: consentType: $ref: '#/components/schemas/AisConsentType' iban: example: IT59Q0300203280162876621571 type: string name: example: string type: string nokRedirect: example: https://www.google.com/search?q=nok type: string okRedirect: example: https://www.google.com/search?q=ok type: string surname: example: string type: string vatCode: example: string type: string required: - okRedirect - nokRedirect type: object Detail: properties: eventName: description: Nome dell'evento registrato example: string type: string lastCalledAt: description: Data dell'ultima chiamata (ISO 8601) example: '2020-03-03T17:32:28Z' format: date-time type: string lastError: description: Descrizione sull'ultimo errore example: string type: string lastErroredAt: description: Data dell'ultima chiamata fallita (ISO 8601) example: '2020-03-03T17:32:28Z' format: date-time type: string numberOfErroredCalls: description: Numero di chiamate fallite example: '12345678' format: int64 type: integer numberOfSuccessfulCalls: description: Numero di chiamate riuscite example: '12345678' format: int64 type: integer required: - eventName - numberOfErroredCalls - numberOfSuccessfulCalls type: object DocumentKindEnum: enum: - bill - bulk - chain - construction - invoice - pagopa - transfer type: string DocumentType: description: Tipo di documento del checkout enum: - invoice - bill type: string Dossier: properties: clientID: description: Identificativo univoco del client che ha inserito la pratica example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string code: description: Codice univoco che identifica la richiesta dei pagamento relativa alla pratica, da inviare al ceduto example: string type: string createdAt: description: Data di creazione della pratica example: '2020-03-03T17:32:28Z' format: date-time type: string creditor: description: Identificativo univoco creditore all'interno della piataforma FlowPay example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string currency: description: Valuta della pratica. Una pratica può contenere documenti solamente della stessa valuta example: EUR type: string debtor: description: ID univoco del debitore all'interno della piataforma FlowPay example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string deletedAt: description: Data della rimozione della pratica example: '2020-03-03T17:32:28Z' format: date-time type: string documents: description: Lista dei documenti all'interno della pratica items: $ref: '#/components/schemas/DossierDocument' type: array externalID: description: Identificativo univoco che ricollega la pratica inserita nella piattaforma FlowPay con quella contenuta nella piattaforma del client example: string type: string fingerprint: description: Identificativo univoco del dossier definito come HEX SHA256 di [codice_instant][anno_di_caricamento][creditore] example: d41d8cd98f00b204e9800998ecf8427e type: string id: description: Identificativo univoco della pratica all'interno della piattaforma FlowPay example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string updatedAt: description: Data dell'ultimo aggiornamento della pratica example: '2020-03-03T17:32:28Z' format: date-time type: string required: - clientID - creditor - debtor - code - fingerprint - currency - externalID - documents type: object DossierDocument: properties: createdAt: description: Data di creazione del documento example: '2020-03-03T17:32:28Z' format: date-time type: string deletedAt: description: Data della rimozione del documento example: '2020-03-03T17:32:28Z' format: date-time type: string fingerprint: description: Identificativo univoco del documento all'interno della pratica definito come HEX SHA256 di [numero][anno][partita_iva_mittente] example: d41d8cd98f00b204e9800998ecf8427e type: string id: description: Identificativo univoco della pratica all'interno della piattaforma FlowPay example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string updatedAt: description: Data dell'ultimo aggiornamento del documento example: '2020-03-03T17:32:28Z' format: date-time type: string required: - fingerprint type: object DossierInput: properties: externalID: description: Identificativo univoco che ricollega la pratica inserita nella piattaforma FlowPay con quella contenuta nella piattaforma del client example: string type: string invoices: description: Lista dei documenti da caricare. Posso essere in formato plain text oppure in Base64 items: example: string type: string type: array required: - externalID - invoices type: object EditInvoiceRequest: properties: creditorIban: description: Iban del creditore, modificabile dal creditore o dal debitore nel caso il creditore non abbia già modificato l'iban. example: string type: string debtorIban: description: Iban del debitore, modificabile dal debitore example: string type: string terms: description: |- Lista di termini da aggiornare, a seconda della parte che richiede la modifica (creditore o debitore) tale modifica potrebbe essere rifiutata. Inoltre un termine è modificabile fintanto che non esiste un pagamento relativo a tale termine. items: $ref: '#/components/schemas/EditTerm' type: array type: object EditTerm: properties: amount: description: Nuovo importo del termine, modificabile dal creditore example: '123.45' format: double type: number description: description: Nuova descrizione del termine, modificabile dal creditore example: string type: string expire: description: Nuova data di scadenza del termine, modificabile dal creditore example: '2020-03-03T17:32:28Z' format: date-time type: string id: description: Identificativo univoco del termine da modificare example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string information: description: Nuova causale del termine, modificabile dal creditore, (max 100 caraterri) example: string type: string method: description: Indica la tipologia di pagamento scelta per il termine, modificabile da creditore example: string type: string recurringinfo: description: Modifica o rende il termine pagabile a rate, modificabile dal creditore properties: executionRule: $ref: '#/components/schemas/ExecutionRule' frequency: $ref: '#/components/schemas/FrequencyEnum' installments: example: '12345678' format: int64 type: integer required: - frequency - installments type: object required: - id type: object ErrorDTO: description: "Formato errore standard\n \nLista dei possibili codici di errore:\n\n| codice | descrizione |\n| ------ | ----------- |\n| 401 | Errore generale di codifica |\n| 402 | Campo necessario mancante |\n| 403 | Valore di un campo del tipo sbagliato |\n| 404 | Valore di un campo assente |\n| 405 | Errore di codifica sconosciuto |\n| 406 | Null pointer exception |\n| 407 | Campo necessario mancante |\n| 408 | Errore di connessione |\n| 409 | Errore di input output |\n| 410 - 428 | Errore generico con il database |\n| 429, 432, 433 | Errore di logica con il database |\n| 430 | Campo invalido |\n| 431 | Campo assente |\n| 434 | Risultati non trovati |\n| 500 | Errore generico |\n| 2000 | Tenant non specificato |\n| 2001 | Non autorizzato ad operare su questa risorsa |\n| 2002 | Impossibile eliminare il documento poiché sono presente dei pagamenti collegati |\n| 2003 | Non autorizzato a creare la risorsa |\n| 2004 | Non autorizzato ad operare su questa risorsa |\n| 2005 | Si\ \ sta provando a modificare un termine non di questo documento |\n| 2006 | Codice istant scaduto |\n| 2007 | Non autorizzato generare un codice instant |\n| 2008 | Codice instant inesistente o non autorizzato a leggerlo |\n| 2012 | Si sta provando a caricare un documento già esistente |\n| 3001 | Tenant non specificato |\n| 4001 | Tenant non specificato |\n| 5001 | Corpo richiesta mancante |\n| 5002 | Corpo richiesta non valido |\n| 5003 | Vatcode del ricevente fattura mancante |\n| 6001 | Tenant non specificato |\n| 6002 | Ricevuta non trovata |\n| 8005 | Non puoi modificare questo conto |\n| 8010 | Troppi risultati ottenuti |\n| 11001 | Non autorizzato ad accedere a questa risorsa |\n| 11002 | Si sta provando a caricare un documento già esistente |\n| 13001 | Azienda non trovata |\n| 13003 | vatcode non è valido |" properties: code: description: Codice errore example: '12345678' format: int64 type: integer errorDescription: description: Descrizione errore example: string type: string errorURI: description: URI dell'errore se presente example: string type: string expectedType: description: Nel caso di un errore di codifica indica il tipo di dato che non si è riuscito a decodificare example: string type: string field: description: Nel caso di un errore di codifica indica il campo che non si è riuscito a decodificare example: string type: string requestID: description: ID della richiesta da comunicare per poter fornire un supporto example: string type: string service: description: ID interno del servizio example: '12345678' format: int64 type: integer statusCode: description: Codice di stato HTTP example: '12345678' format: int64 type: integer required: - service - code - errorDescription - statusCode type: object ExecutionRule: enum: - following - preceeding type: string FeeBearer: enum: - debtor - creditor - followingServiceLevel - shared type: string Fingerprint: description: Fingerprint del documento example: d41d8cd98f00b204e9800998ecf8427e type: string FrequencyEnum: enum: - monthly type: string GetCheckoutResponse: properties: code: description: Codice univoco del checkout example: LjJ5imbL type: string expire: description: Data di scadenza del codice di checkout example: '2020-03-03T17:32:28Z' format: date-time type: string required: - code type: object GetSCAResponse: properties: fees: items: $ref: '#/components/schemas/SCAFee' type: array scaLink: example: string type: string required: - scaLink type: object Invoice: properties: amount: description: Totale del documento example: '123.45' format: double type: number attachments: description: Allegati al documento items: $ref: '#/components/schemas/Attachment' type: array currency: description: Valuta del documento (e.g. EUR) example: EUR type: string date: description: Data di emissione del documento example: '2020-03-03T17:32:28Z' format: date-time type: string fingerprint: example: d41d8cd98f00b204e9800998ecf8427e type: string id: description: Identificativo univoco del documento example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string items: description: Lista di oggetti a cui il documento fa riferimento items: $ref: '#/components/schemas/Item' type: array number: description: Numero del documento example: string type: string recipientIban: description: IBAN del ricevente documento e quindi del debitore example: string type: string recipientVat: description: Codice fiscale/Partita iva del ricevente compreso il country code (e.g. IT12345678901) example: string type: string rootSubstitutedBy: properties: fingerprint: example: d41d8cd98f00b204e9800998ecf8427e type: string type: example: string type: string required: - fingerprint - type type: object senderIban: description: |- IBAN del mittente del documento e quindi creditore, tale valore deve essere valorizzato prima di poter generare un link di checkout. Il sistema lo valorizza automaticamente nel caso l'azienda abbia definito una preferenza per l'incasso sulla nostra piattaforma. Altrimenti è necessario che tale valore venga aggiunto dal client. example: string type: string senderVat: description: Codice fiscale/Partita iva del mittente compreso il country code (e.g. IT12345678901) example: string type: string substitutedBy: properties: fingerprint: example: d41d8cd98f00b204e9800998ecf8427e type: string type: example: string type: string required: - fingerprint - type type: object terms: description: Lista di termini di pagamento per il documento items: $ref: '#/components/schemas/Term' type: array required: - senderVat - recipientVat - terms - items - date - amount - number - currency type: object InvoicePreference: properties: incomingAccount: description: Account di default sul quale incassare le fatture properties: bankID: example: string type: string currency: example: EUR type: string iban: example: IT59Q0300203280162876621571 type: string required: - iban - currency - bankID type: object outgoingAccount: description: Account di default dal quale pagare le fatture properties: bankID: example: string type: string currency: example: EUR type: string iban: example: IT59Q0300203280162876621571 type: string required: - iban - currency - bankID type: object warnings: description: Identificativi dei messaggi silenziati items: example: string type: string type: array type: object Invoices: items: $ref: '#/components/schemas/Invoice' type: array Item: properties: amount: example: '123.45' format: double type: number description: example: string type: string id: example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string quantity: example: '123.45' format: double type: number required: - description - quantity - amount type: object LatestBalances: additionalProperties: additionalProperties: additionalProperties: $ref: '#/components/schemas/Balance' type: object type: object type: object LinkedDocument: properties: fingerprint: example: d41d8cd98f00b204e9800998ecf8427e type: string type: example: string type: string required: - fingerprint - type type: object NewInvoice: properties: attachments: description: Allegati al documento items: $ref: '#/components/schemas/Attachment' type: array currency: description: Valuta del documento (e.g. EUR) example: EUR type: string date: description: Data di emissione del documento example: '2020-03-03T17:32:28Z' format: date-time type: string items: description: Lista di oggetti a cui il documento fa riferimento items: $ref: '#/components/schemas/NewItem' type: array number: description: Numero del documento example: string type: string recipientIban: description: IBAN del ricevente documento e quindi del debitore example: string type: string recipientVat: description: Codice fiscale/Partita iva del ricevente compreso il country code (e.g. IT12345678901) example: string type: string senderIban: description: |- IBAN del mittente del documento e quindi creditore, tale valore deve essere valorizzato prima di poter generare un link di checkout. Il sistema lo valorizza automaticamente nel caso l'azienda abbia definito una preferenza per l'incasso sulla nostra piattaforma. Altrimenti è necessario che tale valore venga aggiunto dal client. example: string type: string senderVat: description: Codice fiscale/Partita iva del mittente compreso il country code (e.g. IT12345678901) example: string type: string terms: description: Lista di termini di pagamento per il documento items: $ref: '#/components/schemas/NewTerm' type: array required: - senderVat - recipientVat - terms - items - date - number - currency type: object NewItem: properties: amount: description: Numero di unità dell'oggetto example: '123.45' format: double type: number description: description: Descrizione dell'oggetto del documento example: string type: string quantity: description: Quantità dell'oggetto example: '123.45' format: double type: number required: - description - quantity - amount type: object NewTerm: properties: amount: description: Importo del termine di pagamento viene controllato che il valore abbia al massimo due cifre decimali example: '123.45' format: double type: number description: description: Descrizione del termine di pagamento example: string type: string expire: description: Data di scadenza del termine di pagamento. Indica la data nel quale il termine di pagamento deve essere incassato example: '2020-03-03T17:32:28Z' format: date-time type: string information: description: Causale del termine di pagamento example: string type: string method: description: Indica la tipologia di pagamento scelta per il termine example: string type: string recurringInfo: properties: executionRule: $ref: '#/components/schemas/ExecutionRule' frequency: $ref: '#/components/schemas/FrequencyEnum' installments: example: '12345678' format: int64 type: integer required: - frequency - installments type: object required: - expire - amount - description - information type: object PaidOutsideFlowPayTerm: items: $ref: '#/components/schemas/PaidOutsideFlowPayTerm' type: array PaidOutsideFlowPayTermList: items: $ref: '#/components/schemas/PaidOutsideFlowPayTerm' type: array Payment: properties: createdAt: description: Data di creazione del pagamento, corrisponde al momento in cui il pagamento è stato autorizzato dal debitore example: '2020-03-03T17:32:28Z' format: date-time type: string creditor: description: Codice fiscale del creditore (vat code in caso di azienda, codice fiscale in caso di privato) example: string type: string debtor: description: Codice fiscale del debitore (vat code in caso di azienda, codice fiscale in caso di privato) example: string type: string fingerprint: description: fingerprint del documento per il quale è stato creato il pagamento example: d41d8cd98f00b204e9800998ecf8427e type: string identifier: description: ID univoco del pagamento example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string method: $ref: '#/components/schemas/PaymentMethodInfo' status: $ref: '#/components/schemas/PaymentStatusEnum' termID: description: ID univoco del termine di pagamento del documento al quale questo pagamento si riferisce example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string type: description: Tipo di documento per il quale è stato creato il pagamento example: string type: string required: - identifier - fingerprint - termID - creditor - debtor - status type: object PaymentDTO: properties: createdAt: description: Data di creazione del pagamento, corrisponde al momento in cui il pagamento è stato autorizzato dal debitore example: '2020-03-03T17:32:28Z' format: date-time type: string creditor: description: Codice fiscale del creditore (vat code in caso di azienda, codice fiscale in caso di privato) example: string type: string debtor: description: Codice fiscale del debitore (vat code in caso di azienda, codice fiscale in caso di privato) example: string type: string debtorIban: example: string type: string fingerprint: description: fingerprint del documento per il quale è stato creato il pagamento example: d41d8cd98f00b204e9800998ecf8427e type: string identifier: description: ID univoco del pagamento example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string method: $ref: '#/components/schemas/PaymentMethodInfo' status: $ref: '#/components/schemas/PaymentStatusEnum' terms: items: description: ID univoco del termine di pagamento del documento al quale questo pagamento si riferisce example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string type: array type: description: Tipo di documento per il quale è stato creato il pagamento example: string type: string required: - identifier - fingerprint - terms - creditor - debtor - status - method type: object PaymentMethodInfo: enum: - card type: string PaymentStatusEnum: description: |- Stato di un pagamento: * `concluded` - Indica che il pagamento è stato addebitato sul conto del debitore * `not_concluded` - Indica che il pagamento è stato autorizzato ma ancora non è stato addebitato (ad esempio per un pagamento a data futura) * `rejected` - Indica che il pagamento è stato rifiutato (ad esempio il pagamento è stato annullato dal debitore oppure non erano presenti i fondi nel momento di eseguire il pagamento) * `not_available` - Indica che è avvenuto un errore di comunicazione con la banca per controllare lo stato del pagamento, riprovando dovrebbe risolversi * `outside_flowpay_creditor` - Indica che il pagamento non è avvenuto attraverso il sistema FlowPay, e l'azione di indicare tale pagamento come avvenuto all'esterno di FlowPay è stata fatta dal creditore * `outside_flowpay_debtor` - Indica che il pagamento non è avvenuto attraverso il sistema FlowPay, e l'azione di indicare tale pagamento come avvenuto all'esterno di FlowPay è stata fatta dal debitore Gli stati `concluded`, `rejected`, `outside_flowpay_creditor`, `outside_flowpay_debtor` sono stati finali per un pagamento enum: - concluded - not_concluded - rejected - not_available - outsideFlowPay - outside_flowpay_creditor - outside_flowpay_debtor - forwarded type: string Payments: items: $ref: '#/components/schemas/Payment' type: array PlanType: oneOf: - properties: number: type: integer type: enum: - singleTerms type: string required: - number type: object - properties: frequency: $ref: '#/components/schemas/FrequencyEnum' number: type: integer type: enum: - recurringTerms type: string required: - number - frequency type: object type: object PostWebHook: properties: events: description: Lista di eventi da registrare sul webhook items: example: string type: string type: array expiresAt: description: Data di scadenza del webhook (ISO 8601). Max 1 mese rispetto al momento della chiamata example: '2020-03-03T17:32:28Z' format: date-time type: string url: description: Url alla quale si vuole essere contattati example: string type: string required: - events - url - expiresAt type: object PreferenceAccount: properties: bankID: description: |- ID FlowPay della banca all'interno del Bank Gateway. Identifica l'istituto di pagamento dove è collocato l'account example: string type: string currency: description: |- Valuta dell'account (e.g. `EUR`, `CHF`). Verrà probabilmente codificato in futuro con una enum example: EUR type: string iban: description: IBAN che identifica l'account example: IT59Q0300203280162876621571 type: string required: - iban - currency - bankID type: object PutWebHook: properties: events: description: Nuovi eventi da collegare al webhook. items: example: string type: string type: array expiresAt: description: Data di scadenza del webhook (ISO 8601). Max 1 mese rispetto al momento della chiamata example: '2020-03-03T17:32:28Z' format: date-time type: string type: object RecurringInfo: properties: executionRule: $ref: '#/components/schemas/ExecutionRule' frequency: $ref: '#/components/schemas/FrequencyEnum' installments: example: '12345678' format: int64 type: integer required: - frequency - installments type: object SCAFee: properties: amount: example: '123.45' format: double type: number bearer: $ref: '#/components/schemas/FeeBearer' currency: example: EUR type: string required: - amount - currency - bearer type: object SalaryBatchUpdate: additionalProperties: $ref: '#/components/schemas/SalaryUpdate' description: Gli attributi dell'oggetto (o chiavi) sono le fingerprint dei documenti di tipo salary. Ciascuna fingerprint è associata a un aggiornamento delle informazioni relative al pagamento o bonifico. description: Gli attributi dell'oggetto (o chiavi) sono le fingerprint dei documenti di tipo salary. Ciascuna fingerprint è associata a un aggiornamento delle informazioni relative al pagamento o bonifico. type: object SalaryEmployee: properties: name: description: Nome del dipendente type: string surname: description: Cognome del dipendente type: string tin: description: Codice fiscale del dipendente type: string required: - tim - name - surname type: object SalaryResponse: properties: amount: description: Importo totale della busta paga (o cedolino) type: number batchID: description: '' format: uuid type: string currency: description: Valuta in cui è espresso l'importo della busta paga (es. EUR) example: EUR type: string employee: $ref: '#/components/schemas/SalaryEmployee' description: Informazioni relative al dipendente destinatario della busta paga employeeIBAN: description: Codice IBAN del dipendente per l'accredito della busta paga type: string employeeTIN: description: Codice fiscale del dipendente destinatario type: string employerTIN: description: Codice fiscale o Partita IVA del datore di lavoro type: string fingerprint: description: Fingerprint del documento salary example: d41d8cd98f00b204e9800998ecf8427e type: string month: description: Mese di riferimento della busta paga (o cedolino) type: integer paymentDate: description: Data in cui viene effettuato il pagamento della busta paga (o cedolino) example: '2024-10-10T17:32:28Z' format: iso8601 type: string payslip: description: Identificativo univoco del cedolino associato alla busta paga format: uuid type: string year: description: Anno di riferimento della busta paga (o cedolino) type: integer required: - batchID - employee - employeeTIN - employerTIN - month - year - amount - currency - paymentDate - fingerprint SalaryResponseTemp: properties: amount: description: Importo totale della busta paga (o cedolino) type: number batchID: description: '' format: uuid type: string currency: description: Valuta in cui è espresso l'importo della busta paga (es. EUR) example: EUR type: string employeeIBAN: description: Codice IBAN del dipendente per l'accredito della busta paga type: string fingerprint: description: Fingerprint del documento salary example: d41d8cd98f00b204e9800998ecf8427e type: string month: description: Mese di riferimento della busta paga (o cedolino) type: integer paymentDate: description: Data in cui viene effettuato il pagamento della busta paga (o cedolino) example: '2024-10-10T17:32:28Z' format: iso8601 type: string payslip: description: Identificativo univoco del cedolino associato alla busta paga format: uuid type: string year: description: Anno di riferimento della busta paga (o cedolino) type: integer required: - batchID - month - year - amount - currency - paymentDate - fingerprint SalaryUpdate: properties: iban: description: Codice IBAN aggiornato del dipendente per l'accredito della busta paga type: string paymentDate: description: Data in cui viene effettuato il pagamento della busta paga (o cedolino) example: '2024-10-10T17:32:28Z' format: iso8601 type: string remittance: description: Informazioni aggiornate relative al pagamento o al bonifico type: string type: object Term: properties: amount: description: Importo del termine di pagamento example: '123.45' format: double type: number description: description: Descrizione del termine di pagamento example: string type: string expire: description: Data di scadenza del termine di pagamento example: '2020-03-03T17:32:28Z' format: date-time type: string fingerprint: description: |- Identificativo univoco di un documento calcolato come `HEX(SHA256([numero][anno][partita_iva_mittente]))` Come esempio: `[1][2021][06968160488] -> fe92051fc0d735f31f6e85ae8515838e6540ba994ede74c5cb2f19599e723d49` example: d41d8cd98f00b204e9800998ecf8427e type: string id: description: Identificativo univoco del termine di pagamento example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string information: description: Causale del termine di pagamento example: string type: string method: description: Indica la tipologia di pagamento scelta per il termine example: string type: string recurringInfo: properties: executionRule: $ref: '#/components/schemas/ExecutionRule' frequency: $ref: '#/components/schemas/FrequencyEnum' installments: example: '12345678' format: int64 type: integer required: - frequency - installments type: object useFlowpay: example: 'true' type: boolean required: - expire - amount - description - information type: object Transaction: properties: amount: example: '123.45' format: double type: number bookingDate: example: '2020-03-03T17:32:28Z' format: date-time type: string creditorIban: example: string type: string creditorName: example: string type: string currency: example: EUR type: string debtorIban: example: string type: string debtorName: example: string type: string documentType: example: string type: string id: example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string identifier: example: string type: string method: example: string type: string remittanceInformationUnstructured: example: string type: string type: example: string type: string valueDate: example: '2020-03-03T17:32:28Z' format: date-time type: string required: - type - amount - currency type: object TransactionCategorization: properties: dateString: example: string type: string documentDate: example: '2020-03-03T17:32:28Z' format: date-time type: string documentType: $ref: '#/components/schemas/DocumentType' id: example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string reference: example: string type: string transactionID: example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string type: object Transactions: items: $ref: '#/components/schemas/Transaction' type: array Transfer: description: "Documento che permette di gestire richieste di pagamento con pochi vincoli. \n I Transfer sono indicati per rapidi prototipi o per evitare la gestione del ciclo di vita di specifici documenti. \n Nota< /b>: Per utilizzare i transfers in produzione è necessaria una due diligence più approfondita." properties: amount: description: Importo del trasferimento example: 100.34 type: number x-faker: finance.amount date: description: Data del trasferimento example: '2020-01-01T00:00:00Z' format: iso8601 type: string fingerprint: $ref: '#/components/schemas/Fingerprint' type: object UpdateBusiness: properties: SDICode: example: string type: string banner: example: string type: string email: example: example@example.com type: string icon: example: string type: string phoneNumber: example: string type: string type: object VerificationResult: enum: - valid - invalid - notSupported type: string WalletInput: properties: externalID: description: Identificativo univoco per ricollegare il wallet inserito nella piattaforma FlowPay con quello contenuto nella piattaforma del client example: string type: string iban: description: L'iban del wallet example: IT59Q0300203280162876621571 type: string provider: $ref: '#/components/schemas/WalletProvider' required: - iban - externalID - provider type: object WalletProvider: enum: - lemonway - flowpayBeta type: string WebHook: properties: events: additionalProperties: items: example: string type: string type: array description: |- Dizionario, le chiavi sono i tenantID, i valori sono gli eventi registrati per tale tenant su questo webhook type: object id: description: Identificativo univoco del webhook example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string url: description: Url del webhook example: string type: string required: - id - url - events type: object WebHookDeleteRequest: properties: events: description: Lista di eventi da eliminare per tale webhook. Se non presente vengono eliminati tutti items: example: string type: string type: array type: object WebHookDetail: properties: createdAt: description: Data di creazione del webhook (ISO 8601) example: '2020-03-03T17:32:28Z' format: date-time type: string events: additionalProperties: items: $ref: '#/components/schemas/Detail' type: array description: |- Dizionario, le chiavi sono i tenantID, i valori sono i dettagli sull'evento type: object expiresAt: description: Data di scadenza del webhook (ISO 8601) example: '2020-03-03T17:32:28Z' format: date-time type: string id: description: Identificativo univoco del webhook example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string url: description: Url del webhook example: string type: string required: - id - url - createdAt - expiresAt - events type: object WebHookType: properties: eventDescription: description: Descrizione di cosa rappresenta l'evento example: string type: string eventName: description: nome dell'evento example: string type: string necessaryAuthorizationCodeScope: description: |- Scope di tipo `authorization code` necessari per attivare un webhook su tale evento. Se non presente indica che questo evento non può essere attivato tramite questo tipo di autorizzazione. items: example: string type: string type: array necessaryClientCredentialScope: description: |- Scope di tipo `client credential` necessari per attivare un webhook su tale evento Se non presente indica che questo evento non può essere attivato tramite questo tipo di autorizzazione. items: example: string type: string type: array needsAccounts: description: |- Indica se questo evento richiede un token abilitato alla gestione degli account dell'utente. In caso di token `authorization_code` il token deve essere stato ottenuto secondo il flusso descritto nella documentazione. In caso di token `client_credentials` il token deve essere ottenuto con lo scope `account:read` example: 'true' type: boolean required: - eventName - eventDescription - needsAccounts type: object WebHookTypes: items: $ref: '#/components/schemas/WebHookType' type: array WebHooks: items: $ref: '#/components/schemas/WebHook' type: array XML: description: |- Fattura elettronica in formato standard codificata in base64 oppure direttamente nel formato xml La documentazione sul formato della fattura elettronica si puo' trovare a https://www.fatturapa.gov.it/it/norme-e-regole/documentazione-fattura-elettronica/formato-fatturapa/ properties: {} type: object check-iban: properties: result: $ref: '#/components/schemas/VerificationResult' required: - result type: object pagoPaStatusEnum: enum: - PAYABLE - PAID - ACTIVATED - PAID_FROM_OTHER_PSP - ACTIVATED_FROM_OTHER_PSP type: string pagoPA: description: PagoPA payment information properties: ec: $ref: '#/components/schemas/CompanyVATNumber' description: Public administration VAT number fingerprint: $ref: '#/components/schemas/Fingerprint' description: Fingerprint generated for the document noticeNumber: description: Notice number emitted by pagoPA example: '1234567890123456' pattern: ^d{11} type: string remittance: description: Remittance information example: Rata scuola A.S. 2019/2020 type: string id: description: Identificativo univoco del documento PagoPA su flowpay example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string date: description: Due date of the PagoPa notice example: '2099-12-30T23:00:00Z' format: date-time type: string amount: description: amount due for the PagoPa notice example: '1' format: double type: number status: $ref: '#/components/schemas/pagoPaStatusEnum' required: - fingerprint - ec - noticeNumber type: object pagoPAFieldLess: description: PagoPA payment information properties: ec: $ref: '#/components/schemas/CompanyVATNumber' description: Public administration VAT number fingerprint: $ref: '#/components/schemas/Fingerprint' description: Fingerprint generated for the document noticeNumber: description: Notice number emitted by pagoPA example: '1234567890123456' pattern: ^d{11} type: string remittance: description: Remittance information example: Rata scuola A.S. 2019/2020 type: string id: description: Identificativo univoco del documento PagoPA su flowpay example: cb15b52a-91db-41ed-81a0-764a0cc4795d format: uuid type: string required: - fingerprint - ec - noticeNumber type: object securitySchemes: ThirdPartyAuthorizationCode: description: Autorizzazione oauth ottenuta da terze parti con un authorization flow flows: authorizationCode: authorizationUrl: https://core.flowpay.it/api/openid/authenticate refreshUrl: https://core.flowpay.it/api/oauth/token scopes: account:read: Operazioni di lettura sui conti bill:write: Creazione e gestione di ricevute business:read: Operazioni di lettura sulle informazioni della azienda contacts:read: Operazioni di lettura sulla rete aziendale invoice:read: Operazioni di lettura sulle fatture invoice:write: Operazioni di scrittura sulle fatture payment:read: Operazioni di lettura sui pagamenti salary:read: Operazioni di lettura sulle buste paga salary:write: Operazioni di scrittura sui salary statistic:read: Lettura dei dati statistici raggruppati transfer:read: Operazioni di lettura sui trasferimenti transfer:write: Operazioni di scrittura sui trasferimenti tokenUrl: https://core.flowpay.it/api/oauth/token type: oauth2 ThirdPartyClientCredential: description: Autorizzazione oauth ottenuta da terze parti con client credential flow flows: clientCredentials: refreshUrl: https://core.flowpay.it/api/oauth/token scopes: account:read: Operazioni di lettura sui conti account:write: Operazione di modifica sui conti authorization_intent: Creazione di intenti a consensi relativi a risorse di un utente bill: Gestione di ricevute business:read: Operazioni di lettura sulle informazioni della azienda invoice:read: Operazioni di lettura sulle fatture invoice:write: Operazioni di scrittura sulle fatture pagopa: '' payment:read: Operazioni di lettura sui pagamenti salary:read: Operazioni di lettura sulle buste paga salary:write: Operazioni di scrittura sui salary statistic:read: Lettura dei dati statistici raggruppati transfer:read: '' transfer:write: '' tokenUrl: https://core.flowpay.it/api/oauth/token type: oauth2 paths: /ais: post: description: Inizializza una sessione che genera un link di SCA per ottenere informazioni degli account con uso singolo del consenso. parameters: [] requestBody: content: application/vnd.api+json; charset=utf-8: example: consentType: null iban: IT59Q0300203280162876621571 name: null nokRedirect: https://www.google.com/search?q=nok okRedirect: https://www.google.com/search?q=ok surname: null vatCode: null schema: $ref: '#/components/schemas/CreateAisSessionRequest' required: true responses: '201': content: application/json; charset=utf-8: example: aisSessionID: cb15b52a-91db-41ed-81a0-764a0cc4795d url: hello schema: $ref: '#/components/schemas/AIS-Session' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - account:read summary: '' tags: - AIS Service /ais/check-iban/{iban}/{vatCode}: get: description: Verifica se l'iban è associato a quel vatCode parameters: - description: IBAN in formato europeo example: IT42Z0335300300000078000002 in: path name: iban required: true schema: example: IT42Z0335300300000078000002 type: string - description: Partita IVA dell'azienda in formato europeo example: 06968160488 in: path name: vatCode required: true schema: example: 06968160488 type: string responses: '200': content: application/json; charset=utf-8: example: result: valid schema: $ref: '#/components/schemas/check-iban' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - account:read summary: '' tags: - AIS Service /ais/{aisSessionID}: get: description: Ottiene lo stato attuale e valori richiesti di una sessione inizializzata. parameters: - description: Id univoco per ottenere le informazioni ottenuti in async dalla AIS service example: E288220F-AB87-4736-8E2F-BC1863DFBBAB in: path name: aisSessionID required: true schema: example: E288220F-AB87-4736-8E2F-BC1863DFBBAB format: uuid type: string responses: '200': content: application/json; charset=utf-8: example: accountInformations: null status: pending schema: $ref: '#/components/schemas/AIS-Session' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - account:read summary: '' tags: - AIS Service /banks: get: description: '' parameters: [] responses: '200': content: application/json; charset=utf-8: example: - countryID: IT details: null email: example@example.com flowpayID: null icon: hello name: hello nationalCode: null nestedIn: null phoneNumber: hello schema: $ref: '#/components/schemas/Banks' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: [] summary: '' tags: - Banche /banks/{flowpayID}: get: description: '' parameters: - description: ID FlowPay della banca all'interno del Bank Gateway example: banca_flowpay_di_campi_bisenzio in: path name: flowpayID required: true schema: example: banca_flowpay_di_campi_bisenzio type: string responses: '200': content: application/json; charset=utf-8: example: countryID: IT details: null email: example@example.com flowpayID: null icon: hello name: hello nationalCode: null nestedIn: null phoneNumber: hello schema: $ref: '#/components/schemas/Bank' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: [] summary: '' tags: - Banche /pagopa: get: description: Recupera la lista dei documenti di tipo pagoPA parameters: - description: Codice fiscale dell'ente creditore (vat code in caso di azienda, codice fiscale in caso di privato) in: query name: paVatCode required: false schema: type: string - description: Numero avviso PagoPA in: query name: noticeNumber required: false schema: type: string responses: '200': content: application/json: example: - ec: '8008008008' fingerprint: aaa9994db24ee81c2831363a24bab2ddc56ae36d33567146c4e924d238927ada noticeNumber: '1234567890123456' remittance: Donazione - ec: '9000110009' fingerprint: ff894db24ee811c2831363a24bab20bc56ae366633567146c4e924d238927ede noticeNumber: '1234567890123457' remittance: Rinnovo schema: items: $ref: '#/components/schemas/pagoPAFieldLess' type: array description: Pagopa list retrieved '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente security: - ThirdPartyClientCredential: - pagopa summary: pagoPA list tags: - pagoPA post: description: Permette di caricare un avviso di pagamento pagoPA parameters: [] requestBody: content: application/json: schema: oneOf: - type: object properties: debtorMail: description: Debtor email address example: example@example.com format: email type: string debtorVatCode: description: Codice fiscale del debitore (vat code in caso di azienda, codice fiscale in caso di privato) example: string type: string noticeNumber: description: Notice number emitted by pagoPA example: '1234567890123456' pattern: ^d{11} type: string paVatCode: description: P.iva della pubblica amministrazione example: '12345678901' pattern: ^d{11} type: string required: - noticeNumber - paVatCode - type: object properties: debtorMail: description: Debtor email address example: example@example.com format: email type: string debtorVatCode: description: Codice fiscale del debitore (vat code in caso di azienda, codice fiscale in caso di privato) example: string type: string vehicleType: description: Vehicle type for car tax payment. Can be 'auto', 'moto', or 'rimorchio'. type: string enum: - auto - moto - rimorchio licensePlate: description: License plate for car tax payment type: string required: - vehicleType - licensePlate description: Pagopa payment request responses: '201': content: application/json: example: ec: '8008008008' fingerprint: aaa9994db24ee81c2831363a24bab2ddc56ae36d33567146c4e924d238927ada noticeNumber: '1234567890123456' remittance: Donazione status: PAYABLE amount: 1 date: '2099-12-30T23:00:00Z' schema: $ref: '#/components/schemas/pagoPA' description: L'avviso non è presente nella nostra piattaforma, perciò viene effettuata una chiamata al nodo PagoPA per caricarla. '200': content: application/json: example: ec: '8008008008' fingerprint: aaa9994db24ee81c2831363a24bab2ddc56ae36d33567146c4e924d238927ada noticeNumber: '1234567890123456' remittance: Donazione schema: $ref: '#/components/schemas/pagoPAFieldLess' description: L'avviso risulta già caricato nella nostra piattaforma. Non viene effettuata alcuna chiamata al nodo PagoPA. '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente security: - ThirdPartyClientCredential: - pagopa summary: pagoPA payment tags: - pagoPA /pagopa/{fingerprint}: get: description: Recupera il documento pagoPA usando la fingerprint parameters: - in: path name: fingerprint required: true schema: type: string responses: '200': content: application/json: example: ec: '8008008008' fee: 0 fingerprint: aaa9994db24ee81c2831363a24bab2ddc56ae36d33567146c4e924d238927ada noticeNumber: '1234567890123456' remittance: Donazione schema: $ref: '#/components/schemas/pagoPA' description: L'avviso recuperato dalla nostra piattaforma. Viene contatto il nodo PagoPA, per verifica. '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente security: - ThirdPartyClientCredential: - pagopa summary: pagoPA document tags: - pagoPA patch: description: Modifica la mail del debitore di un documento pagoPA parameters: - in: path name: fingerprint required: true schema: type: string requestBody: content: application/json: schema: type: object properties: debtorMail: description: Debtor email address example: example@example.com format: email type: string required: - debtorMail description: edit Pagopa payment request responses: '200': content: {} description: Documento pagoPA modificato correttamente '400': content: {} description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '403': content: {} description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: {} description: La richiesta fa riferimento ad una risorsa inesistente security: - ThirdPartyClientCredential: - pagopa summary: edit pagoPA document tags: - pagoPA /pagopa/receipts/:id: get: description: Ottiene il pdf della ricevuta di pagamento di un documento pagoPA parameters: - in: path description: Identificativo univoco del documento PagoPA su flowpay name: id required: true schema: type: string format: uuid responses: '200': content: application/pdf: schema: type: string format: binary description: Pagopa document '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente security: - ThirdPartyClientCredential: - pagopa summary: pagoPA receipts tags: - pagoPA /webhooks: get: description: Ottiene la lista dei webhook attivi registrati dal client per tutti i suoi tenant. parameters: [] responses: '200': content: application/json; charset=utf-8: example: - events: hello: - hello id: cb15b52a-91db-41ed-81a0-764a0cc4795d url: hello schema: $ref: '#/components/schemas/WebHooks' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: [] summary: '' tags: - Webhook /webhooks/types: get: description: Ottiene la lista dei webhook disponibili parameters: [] responses: '200': content: application/json; charset=utf-8: example: - eventDescription: hello eventName: hello necessaryAuthorizationCodeScope: null necessaryClientCredentialScope: null needsAccounts: false schema: $ref: '#/components/schemas/WebHookTypes' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: [] summary: '' tags: - Webhook /webhooks/{id}: delete: description: Elimina un webhook oppure elimina degli eventi associati ad un webhook. parameters: - description: identificativo del webhook example: 0C87AA6A-FDED-41A8-97A8-FCB5231B0B0C in: path name: id required: true schema: example: 0C87AA6A-FDED-41A8-97A8-FCB5231B0B0C format: uuid type: string requestBody: content: application/vnd.api+json; charset=utf-8: example: events: null schema: $ref: '#/components/schemas/WebHookDeleteRequest' required: true responses: '200': content: application/json; charset=utf-8: {} description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: [] summary: '' tags: - Webhook get: description: Ottiene il dettaglio di un webhook parameters: - description: identificativo del webhook example: 0C87AA6A-FDED-41A8-97A8-FCB5231B0B0C in: path name: id required: true schema: example: 0C87AA6A-FDED-41A8-97A8-FCB5231B0B0C format: uuid type: string responses: '200': content: application/json; charset=utf-8: example: createdAt: '2020-03-03T17:32:28Z' events: hello: - eventName: hello lastCalledAt: null lastError: null lastErroredAt: null numberOfErroredCalls: 12345678 numberOfSuccessfulCalls: 12345678 expiresAt: '2020-03-03T17:32:28Z' id: cb15b52a-91db-41ed-81a0-764a0cc4795d url: hello schema: $ref: '#/components/schemas/WebHookDetail' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: [] summary: '' tags: - Webhook /webhooks/{id}/renew: put: description: Rinnova un webhook per altri 7 giorni rispetto al momento della chiamata parameters: - description: identificativo del webhook example: 0C87AA6A-FDED-41A8-97A8-FCB5231B0B0C in: path name: id required: true schema: example: 0C87AA6A-FDED-41A8-97A8-FCB5231B0B0C format: uuid type: string responses: '201': content: application/json; charset=utf-8: example: createdAt: '2020-03-03T17:32:28Z' events: hello: - eventName: hello lastCalledAt: null lastError: null lastErroredAt: null numberOfErroredCalls: 12345678 numberOfSuccessfulCalls: 12345678 expiresAt: '2020-03-03T17:32:28Z' id: cb15b52a-91db-41ed-81a0-764a0cc4795d url: hello schema: $ref: '#/components/schemas/WebHookDetail' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: [] summary: '' tags: - Webhook /{tenantID}/accounts: get: description: Ottiene la lista di account relative all'azienda identificata da `tenantID` parameters: - description: ID dell'owner della richiesta example: F6E7643D-C4CF-4E1C-9FB3-D05E231E165C in: path name: tenantID required: true schema: example: F6E7643D-C4CF-4E1C-9FB3-D05E231E165C format: uuid type: string responses: '200': content: application/json; charset=utf-8: example: - additionalData: null bankID: hello currency: hello iban: hello id: null label: null userIDs: - cb15b52a-91db-41ed-81a0-764a0cc4795d vatCode: hello schema: $ref: '#/components/schemas/Accounts' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - account:read - ThirdPartyOauth: - account:read summary: '' tags: - Conti /{tenantID}/consents: get: description: Ottiene la lista di consensi che l'utente ha fornito parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string responses: '200': content: application/json: schema: items: $ref: '#/components/schemas/ConsentDTO' type: array description: Bulk payments list '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente security: - ThirdPartyClientCredential: [] - ThirdPartyAuthorizationCode: [] tags: - Consent post: description: |- Il flusso previsto per questa chiamata prevede che la terza parte invii l'id della banca che l'utente desidera collegare o per la quale intende rinnovare il consenso. Viene restituito un link valido una singola volta. L'utente deve essere redirezionato verso il link, l'utente deve effettuare una SCA presso la propria banca e a seconda del successo o del fallimento di tale operazione viene in seguito redirezionato verso i link di ok o di nok che sono stati forniti nella richiesta. parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string requestBody: required: true content: application/json: schema: type: object properties: bankID: type: string description: id della banca da collegare, corrisponde al flowpayID ottenibile attraverso la relativa chiamata verso le api GET /banks. okRedirect: type: string description: url di redirect in caso di flusso di collegamento conto completato con successo nokRedirect: type: string description: url di redirect in caso di flusso di collegamento completato con fallimento required: - bankID - okRedirect - nokRedirect responses: '200': description: risposta di successo. content: application/json: schema: type: object properties: url: type: string description: url dove redirezionare l'utente per iniziare il processo di collegamento account required: - url '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente security: - ThirdPartyClientCredential: [] - ThirdPartyAuthorizationCode: [] tags: - Consent /{tenantID}/balances: get: description: Ottiene la lista di tutti i punti saldo per ogni IBAN dell'azienda parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string responses: '200': content: application/json; charset=utf-8: example: IT27H0300203280878355659528: EUR: available: balance: 123.45 balanceType: interimAvailable currency: EUR date: 742596848.647101 iban: IT27H0300203280878355659528 IT59Q0300203280162876621571: EUR: closingBooked: balance: 54.32 balanceType: closingBooked currency: EUR date: 742596848.647087 iban: IT59Q0300203280162876621571 interimAvailable: balance: 100 balanceType: interimAvailable currency: EUR date: 742596848.647084 iban: IT59Q0300203280162876621571 schema: $ref: '#/components/schemas/Balances' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - account:read - ThirdPartyAuthorizationCode: - account:read summary: Lista tags: - Saldo /{tenantID}/balances/last: get: description: Ottiene il saldo più recente per ogni IBAN dell'azienda parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string responses: '200': content: application/json; charset=utf-8: example: IT27H0300203280878355659528: EUR: available: balance: 453 balanceType: interimAvailable currency: EUR date: 742596848.647101 iban: IT27H0300203280878355659528 IT59Q0300203280162876621571: EUR: closingBooked: balance: 98 balanceType: closingBooked currency: EUR date: 742596848.647087 iban: IT59Q0300203280162876621571 interimAvailable: balance: 100 balanceType: interimAvailable currency: EUR date: 742596848.647084 iban: IT59Q0300203280162876621571 GBP: closingBooked: balance: 882 balanceType: closingBooked currency: GBP date: 742596848.647093 iban: IT59Q0300203280162876621571 interimAvailable: balance: 649 balanceType: interimAvailable currency: GBP date: 742596848.647092 iban: IT59Q0300203280162876621571 schema: $ref: '#/components/schemas/LatestBalances' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - account:read - ThirdPartyAuthorizationCode: - account:read summary: Ultimi dati disponibili tags: - Saldo /{tenantID}/bulk: get: description: Recupera la lista dei documenti di tipo bulk. parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string responses: '200': content: application/json: schema: items: $ref: '#/components/schemas/Bulk' type: array description: Bulk payments list '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente security: - ThirdPartyClientCredential: [] - ThirdPartyAuthorizationCode: [] summary: List bulk documents tags: - Bulk post: description: "Crea un nuvo document Bulk. L'endpoint permette di collegare le fingerprint, presenti nel corpo della richiesta, (i campi indicano la tipologia di documento), in un unico documento bulk. \n Restituisce il documento bulk creato con una nuova fingerprint." parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string requestBody: content: application/json: schema: example: documents: invoice: - d41d8cd98f00b204e9800998ecf8427e - GskefcByhlsgCSUODJPWTRFaOVsPGDdq pagopa: - RXi4PrrsOTiPxUVsbo12TAAD9kmTH2cM minProperties: 1 properties: documents: additionalProperties: description: List of fingerprints to be linked to the bulk payment. I nomi delle proprieta sono le tipologie dei documenti. items: $ref: '#/components/schemas/Fingerprint' minItems: 1 type: array uniqueItems: true description: Dizionario delle fingerprint che saranno collegate al pagemento bulk, i nomi delle proprieta sono le tipologie dei documenti. type: object propertyNames: $ref: '#/components/schemas/DocumentKindEnum' required: - additionalProperties type: object description: Preferenze e fingerprints che faranno parte del bulk. responses: '201': content: application/json: schema: $ref: '#/components/schemas/Bulk' description: Bulk payment created '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente security: - ThirdPartyClientCredential: [] - ThirdPartyAuthorizationCode: [] tags: - Bulk /{tenantID}/bulk/{fingerprint}: delete: description: |- Elimina un bulk payment con la fingerprint. Non avrà effetto sui documenti collegati (non verranno eliminati). parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string - in: path name: fingerprint required: true schema: type: string responses: '204': description: Bulk payment deleted '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente security: - ThirdPartyClientCredential: [] - ThirdPartyAuthorizationCode: [] tags: - Bulk get: description: Restituisce le informazioni relative a uno specifico documento di tipo bulk parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string - in: path name: fingerprint required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/Bulk' description: Bulk payment details '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente security: - ThirdPartyClientCredential: [] - ThirdPartyAuthorizationCode: [] tags: - Bulk /{tenantID}/chain: get: description: Recupera la lista dei documenti di tipo chain parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string responses: '200': content: application/json: schema: items: $ref: '#/components/schemas/Chain' type: array description: Chain payments list '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente security: - ThirdPartyClientCredential: [] - ThirdPartyAuthorizationCode: [] tags: - Chain post: description: Crea un nuvo document chain. Specificando la fingerprint del documento che verra pagato e di quello che triggera il pagamento, insieme ai loro tipi. parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string requestBody: content: application/json: schema: properties: targetFingerprint: $ref: '#/components/schemas/Fingerprint' targetType: $ref: '#/components/schemas/DocumentKindEnum' triggerFingerprint: $ref: '#/components/schemas/Fingerprint' triggerType: $ref: '#/components/schemas/DocumentKindEnum' required: - triggerType - triggerFingerprint - targetType - targetFingerprint type: object responses: '201': content: application/json: schema: $ref: '#/components/schemas/Chain' description: Chain payment created '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente security: - ThirdPartyClientCredential: [] - ThirdPartyAuthorizationCode: [] tags: - Chain /{tenantID}/chain/{fingerprint}: get: description: Restituisce le informazioni relative a uno specifico documento di tipo chain parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string - in: path name: fingerprint required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/Chain' description: Chain payment details '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente security: - ThirdPartyClientCredential: [] - ThirdPartyAuthorizationCode: [] summary: Get document details tags: - Chain /{tenantID}/checkout: post: description: |- Crea un codice di checkout per il documento identificato da tipo e fingerprint. Nel caso un codice sia già stato creato per il documento, viene restituito un errore. parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string requestBody: content: application/vnd.api+json; charset=utf-8: example: fingerprint: d41d8cd98f00b204e9800998ecf8427e nokRedirect: https://www.google.com/search?q=nok okRedirect: https://www.google.com/search?q=ok type: invoice schema: $ref: '#/components/schemas/CheckoutRequest' required: true responses: '201': content: application/json; charset=utf-8: example: code: hello expire: null schema: $ref: '#/components/schemas/CheckoutResponse' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - pagopa - ThirdPartyClientCredential: - pagopa - ThirdPartyClientCredential: - pagopa - ThirdPartyClientCredential: - pagopa - ThirdPartyClientCredential: - pagopa - ThirdPartyAuthorizationCode: - transfer:write - ThirdPartyAuthorizationCode: - transfer:write - ThirdPartyAuthorizationCode: - transfer:write - ThirdPartyAuthorizationCode: - transfer:write summary: '' tags: - Sessioni di checkout /{tenantID}/checkout/intents: post: description: '' parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string responses: '201': content: application/json; charset=utf-8: {} description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - transfer:write - payment:read - ThirdPartyClientCredential: - transfer:write - payment:read - ThirdPartyClientCredential: - transfer:write - payment:read summary: '' tags: - Sessioni di checkout /{tenantID}/checkout/{code}: delete: description: Elimina un checkout esistente. parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string - description: code example: LjJ5imbL in: path name: code required: true schema: example: LjJ5imbL type: string responses: '200': content: application/json; charset=utf-8: {} description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - pagopa - ThirdPartyClientCredential: - pagopa - ThirdPartyClientCredential: - pagopa - ThirdPartyClientCredential: - pagopa - ThirdPartyAuthorizationCode: - transfer:write - ThirdPartyAuthorizationCode: - transfer:write - ThirdPartyAuthorizationCode: - transfer:write summary: '' tags: - Sessioni di checkout /{tenantID}/checkout/{code}/preferences: put: summary: Update checkout preferences description: This endpoint allows to update a checkout preferences specifying the code. security: - ThirdPartyClientCredential: - pagopa - ThirdPartyClientCredential: - pagopa - ThirdPartyClientCredential: - pagopa - ThirdPartyClientCredential: - pagopa - ThirdPartyAuthorizationCode: - transfer:write - ThirdPartyAuthorizationCode: - transfer:write - ThirdPartyAuthorizationCode: - transfer:write parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string - description: Checkout code example: LjJ5imbL in: path name: code required: true schema: example: LjJ5imbL type: string requestBody: content: application/vnd.api+json; charset=utf-8: example: allowedMethods: - sct - sctInst schema: $ref: '#/components/schemas/CheckoutPreferences' required: true responses: '200': description: Checkout details content: application/json: schema: $ref: '#/components/schemas/CheckoutPreferencesResponse' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente tags: - Sessioni di checkout /{tenantID}/checkout/{type}/{fingerprint}: get: description: Restituisce le informazioni sullo stato del checkout identificato da tipo e fingerprint. parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string - description: tipo di documento example: invoice in: path name: type required: true schema: example: invoice format: enum('invoice, 'bill') type: string - description: Identificativo univoco della fattura definito come HEX SHA256 di [numero][anno][partita_iva_mittente] example: '[1][2021][06968160488] -> fe92051fc0d735f31f6e85ae8515838e6540ba994ede74c5cb2f19599e723d49' in: path name: fingerprint required: true schema: example: '[1][2021][06968160488] -> fe92051fc0d735f31f6e85ae8515838e6540ba994ede74c5cb2f19599e723d49' type: string responses: '200': content: application/json; charset=utf-8: example: code: hello expire: null schema: $ref: '#/components/schemas/GetCheckoutResponse' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - pagopa - ThirdPartyClientCredential: - pagopa - ThirdPartyClientCredential: - pagopa - ThirdPartyClientCredential: - pagopa - ThirdPartyClientCredential: - pagopa - ThirdPartyAuthorizationCode: - transfer:read - ThirdPartyAuthorizationCode: - transfer:read - ThirdPartyAuthorizationCode: - transfer:read - ThirdPartyAuthorizationCode: - transfer:read summary: '' tags: - Sessioni di checkout /{tenantID}/invoices: get: description: Ottiene la lista delle fatture parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string responses: '200': content: application/json; charset=utf-8: example: - amount: 123.45 attachments: null date: '2020-03-03T17:32:28Z' example: EUR fingerprint: d41d8cd98f00b204e9800998ecf8427e id: null items: - amount: 123.45 description: hello id: null quantity: 123.45 number: hello recipientIban: null recipientVat: hello rootSubstitutedBy: null senderIban: null senderVat: hello substitutedBy: null terms: - amount: 123.45 description: hello expire: '2020-03-03T17:32:28Z' fingerprint: d41d8cd98f00b204e9800998ecf8427e id: null information: hello method: null recurringInfo: null useFlowpay: null schema: $ref: '#/components/schemas/Invoices' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - invoice:read - ThirdPartyAuthorizationCode: - invoice:read summary: '' tags: - Fatture post: description: Effettua l'upload di una nuova fattura parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string requestBody: content: application/json; charset=utf-8: example: attachments: null date: '2020-03-03T17:32:28Z' example: EUR items: - amount: 123.45 description: hello quantity: 123.45 number: hello recipientIban: null recipientVat: hello senderIban: null senderVat: hello terms: - amount: 123.45 description: hello expire: '2020-03-03T17:32:28Z' information: hello method: null recurringInfo: null schema: $ref: '#/components/schemas/NewInvoice' application/xml; charset=utf-8: example: {} schema: $ref: '#/components/schemas/XML' required: true responses: '201': content: application/json; charset=utf-8: example: amount: 123.45 attachments: null date: '2020-03-03T17:32:28Z' example: EUR fingerprint: d41d8cd98f00b204e9800998ecf8427e id: null items: - amount: 123.45 description: hello id: null quantity: 123.45 number: hello recipientIban: null recipientVat: hello rootSubstitutedBy: null senderIban: null senderVat: hello substitutedBy: null terms: - amount: 123.45 description: hello expire: '2020-03-03T17:32:28Z' fingerprint: d41d8cd98f00b204e9800998ecf8427e id: null information: hello method: null recurringInfo: null useFlowpay: null schema: $ref: '#/components/schemas/Invoice' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - invoice:write - ThirdPartyAuthorizationCode: - invoice:write summary: '' tags: - Fatture /{tenantID}/invoices/preferences: get: description: Ottiene le preferenze relative alle fatture parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string responses: '200': content: application/json; charset=utf-8: example: incomingAccount: null outgoingAccount: null warnings: null schema: $ref: '#/components/schemas/InvoicePreference' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: [] summary: '' tags: - Fatture put: description: Modifica le preferenze relative alle fatture parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string requestBody: content: application/vnd.api+json; charset=utf-8: example: incomingAccount: null outgoingAccount: null warnings: null schema: $ref: '#/components/schemas/InvoicePreference' required: true responses: '201': content: application/json; charset=utf-8: example: incomingAccount: null outgoingAccount: null warnings: null schema: $ref: '#/components/schemas/InvoicePreference' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: [] summary: '' tags: - Fatture /{tenantID}/invoices/{fingerprint}: delete: description: |- Elimina il documento identificato da `fingerprint`, L'eliminazione è consentita finché non esiste un pagamento per il documento. Inoltre l'eliminazione è consentita allo stesso client che ha caricato il documento parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string - description: Identificativo univoco della fattura definito come HEX SHA256 di [numero][anno][partita_iva_mittente] example: '[1][2021][06968160488] -> fe92051fc0d735f31f6e85ae8515838e6540ba994ede74c5cb2f19599e723d49' in: path name: fingerprint required: true schema: example: '[1][2021][06968160488] -> fe92051fc0d735f31f6e85ae8515838e6540ba994ede74c5cb2f19599e723d49' type: string responses: '200': content: application/json; charset=utf-8: {} description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyAuthorizationCode: - invoice:write - ThirdPartyClientCredential: - invoice:write summary: '' tags: - Fatture get: description: Ottiene il documento identificato dal `fingerprint` parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string - description: Identificativo univoco della fattura definito come HEX SHA256 di [numero][anno][partita_iva_mittente] example: '[1][2021][06968160488] -> fe92051fc0d735f31f6e85ae8515838e6540ba994ede74c5cb2f19599e723d49' in: path name: fingerprint required: true schema: example: '[1][2021][06968160488] -> fe92051fc0d735f31f6e85ae8515838e6540ba994ede74c5cb2f19599e723d49' type: string responses: '200': content: application/json; charset=utf-8: example: amount: 123.45 attachments: null date: '2020-03-03T17:32:28Z' example: EUR fingerprint: d41d8cd98f00b204e9800998ecf8427e id: null items: - amount: 123.45 description: hello id: null quantity: 123.45 number: hello recipientIban: null recipientVat: hello rootSubstitutedBy: null senderIban: null senderVat: hello substitutedBy: null terms: - amount: 123.45 description: hello expire: '2020-03-03T17:32:28Z' fingerprint: d41d8cd98f00b204e9800998ecf8427e id: null information: hello method: null recurringInfo: null useFlowpay: null schema: $ref: '#/components/schemas/Invoice' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - invoice:read - ThirdPartyAuthorizationCode: - invoice:read summary: '' tags: - Fatture patch: description: Modifica il documento identificato da `fingerprint`. Il ruolo (creditore/debitore) di chi effettua la chiamata è rilevante ai fini di ciò che è modificabile, più dettagli nella definizione del body parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string - description: Identificativo univoco della fattura definito come HEX SHA256 di [numero][anno][partita_iva_mittente] example: '[1][2021][06968160488] -> fe92051fc0d735f31f6e85ae8515838e6540ba994ede74c5cb2f19599e723d49' in: path name: fingerprint required: true schema: example: '[1][2021][06968160488] -> fe92051fc0d735f31f6e85ae8515838e6540ba994ede74c5cb2f19599e723d49' type: string requestBody: content: application/vnd.api+json; charset=utf-8: example: creditorIban: null debtorIban: null terms: null schema: $ref: '#/components/schemas/EditInvoiceRequest' required: true responses: '202': content: application/json; charset=utf-8: example: amount: 123.45 attachments: null date: '2020-03-03T17:32:28Z' example: EUR fingerprint: d41d8cd98f00b204e9800998ecf8427e id: null items: - amount: 123.45 description: hello id: null quantity: 123.45 number: hello recipientIban: null recipientVat: hello rootSubstitutedBy: null senderIban: null senderVat: hello substitutedBy: null terms: - amount: 123.45 description: hello expire: '2020-03-03T17:32:28Z' fingerprint: d41d8cd98f00b204e9800998ecf8427e id: null information: hello method: null recurringInfo: null useFlowpay: null schema: $ref: '#/components/schemas/Invoice' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - invoice:write - ThirdPartyAuthorizationCode: - invoice:write summary: '' tags: - Fatture put: description: |- Setta pagati all'esterno di FlowPay i termini del documento identificato da `fingerprint`. Il ruolo di chi effettua la chiamata è rilevante ai fini di ciò che è possibile segnalare come già pagato. Un termine per il quale esiste un pagamento non è settabile a già pagato. Il debitore ha la facoltà di segnalare già pagato un termine per il quale non esiste un pagamento, oppure di settare a da pagare un termine precedentemente segnato già pagato dallo stesso debitore. Il creditore ha la facoltà di segnare già pagato un termine per il quale non esiste un pagamento, settare egli stesso un termine già pagato già settato dal debitore (questo può essere visto come il fatto che il creditore conferma l'operato del debitore), settare a da pagare un termine settato pagato sia da se stesso o dal debitore (in questo caso il creditore non conferma l'indicazione del debitore sul fatto che tale termine è già stato pagato per altre vie) parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string - description: Identificativo univoco della fattura definito come HEX SHA256 di [numero][anno][partita_iva_mittente] example: '[1][2021][06968160488] -> fe92051fc0d735f31f6e85ae8515838e6540ba994ede74c5cb2f19599e723d49' in: path name: fingerprint required: true schema: example: '[1][2021][06968160488] -> fe92051fc0d735f31f6e85ae8515838e6540ba994ede74c5cb2f19599e723d49' type: string requestBody: content: application/vnd.api+json; charset=utf-8: example: - id: cb15b52a-91db-41ed-81a0-764a0cc4795d paid: false schema: $ref: '#/components/schemas/PaidOutsideFlowPayTermList' required: true responses: '201': content: application/json; charset=utf-8: example: amount: 123.45 attachments: null date: '2020-03-03T17:32:28Z' example: EUR fingerprint: d41d8cd98f00b204e9800998ecf8427e id: null items: - amount: 123.45 description: hello id: null quantity: 123.45 number: hello recipientIban: null recipientVat: hello rootSubstitutedBy: null senderIban: null senderVat: hello substitutedBy: null terms: - amount: 123.45 description: hello expire: '2020-03-03T17:32:28Z' fingerprint: d41d8cd98f00b204e9800998ecf8427e id: null information: hello method: null recurringInfo: null useFlowpay: null schema: $ref: '#/components/schemas/Invoice' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - invoice:write - ThirdPartyAuthorizationCode: - invoice:write summary: '' tags: - Fatture /{tenantID}/payments/{service}/{fingerprint}: get: description: Ritorna i pagamenti esistenti per il documento identificato da `fingerprint` parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string - description: Nome del servizio, nel contesto Core, da contattare example: invoice, salary, bill in: path name: service required: true schema: example: invoice, salary, bill format: enum type: string - description: Identificativo univoco della fattura definito come HEX SHA256 di [numero][anno][partita_iva_mittente] example: '[1][2021][06968160488] -> fe92051fc0d735f31f6e85ae8515838e6540ba994ede74c5cb2f19599e723d49' in: path name: fingerprint required: true schema: example: '[1][2021][06968160488] -> fe92051fc0d735f31f6e85ae8515838e6540ba994ede74c5cb2f19599e723d49' type: string responses: '200': content: application/json; charset=utf-8: example: - createdAt: null creditor: hello debtor: hello fingerprint: d41d8cd98f00b204e9800998ecf8427e identifier: cb15b52a-91db-41ed-81a0-764a0cc4795d method: null status: concluded termID: cb15b52a-91db-41ed-81a0-764a0cc4795d type: null schema: $ref: '#/components/schemas/Payments' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - payment:read - ThirdPartyAuthorizationCode: - payment:read summary: '' tags: - Pagamenti /{tenantID}/salaries: get: description: Questa richiesta recupera i dati relativi agli stipendi dei dipendenti, inclusi importi, date di pagamento, e informazioni sul datore di lavoro. parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string responses: '200': content: application/json; charset=utf-8: example: - amount: 311.39 batchID: E047A2F8-718E-4D4D-A1B6-61C596191F55 currency: EUR employee: name: KHLLBN19B01B838K surname: '' tin: KHLLBN19B01B838K employeeIBAN: VRPRZO74E41C446S employeeTIN: KHLLBN19B01B838K employerTIN: IT12345678901 fingerprint: 6171a600917ee119cfca1e8fef358755438456d19717b14202e3c3a649ea471f month: 11 paymentDate: '2024-05-20T14:59:00Z' year: 2024 - amount: 919.94 batchID: E047A2F8-718E-4D4D-A1B6-61C596191F55 currency: EUR employee: name: Crplns72B01F965I surname: '' tin: CRPLNS72B01F965I employeeIBAN: LT050077900322650701 employeeTIN: CRPLNS72B01F965I employerTIN: IT12345678901 fingerprint: 446ae8258aeb13096a06e76eb7497693f9538304b85de0301856d0ce08aa506c month: 11 paymentDate: '2024-05-20T14:59:00Z' year: 2024 schema: items: $ref: '#/components/schemas/SalaryResponse' type: array description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - salary:read - ThirdPartyAuthorizationCode: - salary:read summary: Recupera le buste paga. tags: - Stipendi patch: description: Modifica gli stipendi in batch, aggiornando informazioni come IBAN, remittance e data di pagamento. parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string requestBody: content: application/json; charset=utf-8: example: b23a5d95-8492-43ff-89c9-e38da3512ac5: iban: IT44U0300203280423537939792 paymentDate: '2024-05-21T09:00:00Z' remittance: stipendio aggiornato 2 dde00def-29c9-4fed-ac20-88da52dce45c: iban: IT45S0300203280877589174726 paymentDate: '2024-05-20T14:59:00Z' remittance: stipendio aggiornato schema: $ref: '#/components/schemas/SalaryBatchUpdate' required: true responses: '200': content: application/json; charset=utf-8: example: - amount: 311.39 batchID: E047A2F8-718E-4D4D-A1B6-61C596191F55 currency: EUR employeeIBAN: VRPRZO74E41C446S fingerprint: 6171a600917ee119cfca1e8fef358755438456d19717b14202e3c3a649ea471f month: 11 paymentDate: '2024-05-20T14:59:00Z' year: 2024 - amount: 919.94 batchID: E047A2F8-718E-4D4D-A1B6-61C596191F55 currency: EUR employeeIBAN: LT050077900322650701 fingerprint: 446ae8258aeb13096a06e76eb7497693f9538304b85de0301856d0ce08aa506c month: 11 paymentDate: '2024-05-20T14:59:00Z' year: 2024 schema: items: $ref: '#/components/schemas/SalaryResponseTemp' type: array description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - salary:write - ThirdPartyAuthorizationCode: - salary:write summary: Aggiorna i dati delle buste paga (precedentemente caricate) tags: - Stipendi post: description: Effettua l'upload delle buste paga dei dipendenti, includendo le informazioni del datore di lavoro, dei dipendenti e dei relativi pagamenti. parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string requestBody: content: application/json; charset=utf-8: example: data: - amount: 311.39 employeeIBAN: VRPRZO74E41C446S employeeTIN: KHLLBN19B01B838K payslip: dde00def-29c9-4fed-ac20-88da52dce45c - amount: 919.94 employeeIBAN: LT050077900322650701 employeeTIN: CRPLNS72B01F965I payslip: b23a5d95-8492-43ff-89c9-e38da3512ac5 employerTIN: IT12345678901 month: 11 paymentDate: '2024-05-20T14:59:00Z' remittance: stipendio year: 2024 schema: properties: currency: description: Valuta in cui è espresso l'importo della busta paga (es. EUR) example: EUR type: string data: description: Elenco dei dipendenti con le relative informazioni sulla busta paga, tra cui TIN, IBAN, importo, e cedolino items: properties: amount: description: Importo totale della busta paga (o cedolino) type: number employeeIBAN: description: Codice IBAN del dipendente type: string employeeTIN: description: Codice fiscale del dipendente type: string metadata: additionalProperties: type: string description: Metadati aggiuntivi relativi alla transazione o alla busta paga type: object payslip: description: Identificativo univoco del cedolino associato alla busta paga format: uuid type: string remittance: description: Dettagli del pagamento o bonifico specifico per il dipendente type: string type: object required: - employeeTIN - amount type: array employerTIN: description: Codice fiscale o Partita IVA del datore di lavoro type: string month: description: Mese di riferimento della busta paga (o cedolino) type: integer paymentDate: description: Data in cui viene effettuato il pagamento della busta paga (o cedolino) example: '2024-10-10T17:32:28Z' format: iso8601 type: string remittance: description: Descrizione dell'oggetto del pagamento o del bonifico effettuato, es. 'stipendio' type: string year: description: Anno di riferimento della busta paga (o cedolino) type: integer required: - employerTIN - year - month - paymentDate - data required: true responses: '201': content: application/json; charset=utf-8: example: - amount: 311.39 batchID: E047A2F8-718E-4D4D-A1B6-61C596191F55 currency: EUR employee: name: KHLLBN19B01B838K surname: '' tin: KHLLBN19B01B838K employeeIBAN: VRPRZO74E41C446S employeeTIN: KHLLBN19B01B838K employerTIN: IT12345678901 fingerprint: 6171a600917ee119cfca1e8fef358755438456d19717b14202e3c3a649ea471f month: 11 paymentDate: '2024-05-20T14:59:00Z' year: 2024 - amount: 919.94 batchID: E047A2F8-718E-4D4D-A1B6-61C596191F55 currency: EUR employee: name: Crplns72B01F965I surname: '' tin: CRPLNS72B01F965I employeeIBAN: LT050077900322650701 employeeTIN: CRPLNS72B01F965I employerTIN: IT12345678901 fingerprint: 446ae8258aeb13096a06e76eb7497693f9538304b85de0301856d0ce08aa506c month: 11 paymentDate: '2024-05-20T14:59:00Z' year: 2024 schema: items: $ref: '#/components/schemas/SalaryResponse' type: array description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - salary:write - ThirdPartyAuthorizationCode: - salary:write summary: Carica le buste paga dei dipendenti tags: - Stipendi /{tenantID}/salaries/{fingerprint}: delete: description: Elimina il documento salary identificato dalla `fingerprint`. responses: '204': content: application/json; charset=utf-8: {} description: Salary document deleted '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - salary:write - ThirdPartyAuthorizationCode: - salary:write summary: Elimina uno stipendio specifico tags: - Stipendi get: description: Recupera il documento salary identificato dalla `fingerprint`. Questa richiesta restituisce i dettagli dello stipendio, inclusi importi, data di pagamento, informazioni sul dipendente e sul datore di lavoro. parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string - description: Identificativo univoco della fattura definito come HEX SHA256 di [numero][anno][partita_iva_mittente] example: '[1][2021][06968160488] -> fe92051fc0d735f31f6e85ae8515838e6540ba994ede74c5cb2f19599e723d49' in: path name: fingerprint required: true schema: example: '[1][2021][06968160488] -> fe92051fc0d735f31f6e85ae8515838e6540ba994ede74c5cb2f19599e723d49' type: string responses: '200': content: application/json; charset=utf-8: example: amount: 919.94 batchID: E047A2F8-718E-4D4D-A1B6-61C596191F55 currency: EUR employee: name: Crplns72B01F965I surname: '' tin: CRPLNS72B01F965I employeeIBAN: LT050077900322650701 employeeTIN: CRPLNS72B01F965I employerTIN: IT12345678901 fingerprint: 446ae8258aeb13096a06e76eb7497693f9538304b85de0301856d0ce08aa506c month: 11 paymentDate: '2024-05-20T14:59:00Z' year: 2024 schema: items: $ref: '#/components/schemas/SalaryResponse' type: array description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - salary:read - ThirdPartyAuthorizationCode: - salary:read summary: Recupera i dettagli di una busta paga specifica tags: - Stipendi patch: description: Modifica il documento salary identificato dalla `fingerprint`. Consente di aggiornare dettagli come l'IBAN, la causale del pagamento e la data di pagamento dello stipendio parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string - description: Identificativo univoco della fattura definito come HEX SHA256 di [numero][anno][partita_iva_mittente] example: '[1][2021][06968160488] -> fe92051fc0d735f31f6e85ae8515838e6540ba994ede74c5cb2f19599e723d49' in: path name: fingerprint required: true schema: example: '[1][2021][06968160488] -> fe92051fc0d735f31f6e85ae8515838e6540ba994ede74c5cb2f19599e723d49' type: string requestBody: content: application/vnd.api+json; charset=utf-8: example: iban: null paymentDate: '2024-10-10T17:32:28Z' remittance: null schema: $ref: '#/components/schemas/SalaryUpdate' required: true responses: '200': content: application/json; charset=utf-8: example: amount: 311.39 batchID: E047A2F8-718E-4D4D-A1B6-61C596191F55 currency: EUR employeeIBAN: VRPRZO74E41C446S fingerprint: 6171a600917ee119cfca1e8fef358755438456d19717b14202e3c3a649ea471f month: 11 paymentDate: '2024-05-20T14:59:00Z' year: 2024 schema: items: $ref: '#/components/schemas/SalaryResponseTemp' type: array description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - salary:write - ThirdPartyAuthorizationCode: - salary:write summary: Aggiorna i dati di una busta paga (precedentemente caricata) tags: - Stipendi /{tenantID}/transactions: get: description: Ottiene la lista di tutte le transazione del tenant. parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string responses: '200': content: application/json; charset=utf-8: example: - amount: 123.45 bookingDate: null creditorIban: null creditorName: null debtorIban: null debtorName: null documentType: null example: EUR id: null identifier: null method: null remittanceInformationUnstructured: null type: hello valueDate: null schema: $ref: '#/components/schemas/Transactions' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - account:read - ThirdPartyAuthorizationCode: - account:read summary: Lista tags: - Transazioni /{tenantID}/transactions/{transactionID}: get: description: Restituisce la transazione del tenant corrispondente all'identificativo parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string - description: Id univoco della transazione example: 3911CCAB-5A9E-48BF-8AD7-139033BA7A38 in: path name: transactionID required: true schema: example: 3911CCAB-5A9E-48BF-8AD7-139033BA7A38 format: uuid type: string responses: '200': content: application/json; charset=utf-8: example: amount: 123.45 bookingDate: null creditorIban: null creditorName: null debtorIban: null debtorName: null documentType: null example: EUR id: null identifier: null method: null remittanceInformationUnstructured: null type: hello valueDate: null schema: $ref: '#/components/schemas/Transaction' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyClientCredential: - account:read - ThirdPartyAuthorizationCode: - account:read summary: Transazione corrispondente all'identificativo tags: - Transazioni /{tenantID}/transfers: get: description: Recupera la lista dei documenti di tipo transfer parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string responses: '200': content: application/json: example: - amount: 15.75 date: '2024-08-22T15:20:30Z' debtor: CMLLBR43E41C375Z fingerprint: d41d8cd98f00b204e9800998ecf8427e - amount: 1 date: '2024-08-22T15:20:30Z' debtor: CNTVTR74R01C070U fingerprint: aa1d8cd98f00b204e9800998aaf842aa schema: items: $ref: '#/components/schemas/Transfer' type: array description: Transfer documents list '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente security: - ThirdPartyClientCredential: - transfers:read - ThirdPartyAuthorizationCode: - transfers:read tags: - Transfer post: description: Consente di creare un nuovo documento trasfert. Il corpo della richiesta deve includere tutte le informazioni necessarie per completare il trasferimento, come l'importo, l'IBAN del creditore, il codice fiscale del creditore e del debitore, e la data della transazione. parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string requestBody: content: application/json: example: amount: 15.75 creditor: BRNMHL77L01Z602U creditorIBAN: IT45S0300203280877589174726 date: '2024-08-22T15:20:30Z' debtor: CMLLBR43E41C375Z remittance: Pagamento due pizze schema: properties: amount: description: Amount of the transfer example: 100.34 format: float type: number x-faker: finance.amount creditor: description: Codice fiscale del creditore (vat code in caso di azienda, codice fiscale in caso di privato) example: string type: string creditorIBAN: description: IBAN del creditore, modificabile dal creditore o dal debitore nel caso il creditore non abbia già modificato l'iban. example: string type: string date: example: '2020-03-03T17:32:28Z' format: date-time type: string debtor: description: Codice fiscale del debitore (vat code in caso di azienda, codice fiscale in caso di privato) example: string type: string remittance: description: Remittance information of the SEPA Credit Transfer example: Pizza at Pizzeria da Mario. Thank you! type: string x-faker: lorem.sentence required: - amount - creditor - creditorIBAN - date - debtor - remittance type: object description: Transfer details required: true responses: '201': content: application/json: example: amount: 15.75 date: '2024-08-22T15:20:30Z' debtor: CMLLBR43E41C375Z fingerprint: d41d8cd98f00b204e9800998ecf8427e schema: $ref: '#/components/schemas/Transfer' description: Transfer created '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente security: - ThirdPartyClientCredential: - transfers:write - ThirdPartyAuthorizationCode: - transfers:write summary: Creazione di un nuovo documento trasfert tags: - Transfer /{tenantID}/transfers/plan: post: description: Crea un nuvo document transfer parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string requestBody: content: application/json: example: creditor: '12345678901' creditorIBAN: IT45S0300203280877589174726 date: '2024-08-22T10:00:00Z' debtor: '10987654321' planType: singleTerms: number: 5 remittance: Pagamento per servizi di consulenza singleAmount: 100.34 schema: properties: creditor: description: Codice fiscale del creditore (vat code in caso di azienda, codice fiscale in caso di privato) example: string type: string creditorIBAN: description: IBAN del creditore, modificabile dal creditore o dal debitore nel caso il creditore non abbia già modificato l'iban. example: string type: string date: example: '2020-03-03T17:32:28Z' format: date-time type: string debtor: description: Codice fiscale del debitore (vat code in caso di azienda, codice fiscale in caso di privato) example: string type: string planType: description: Rappresenta un tipo di piano che può essere a termini singoli o ricorrenti. oneOf: - description: Un piano con termini singoli, che non si ripetono. properties: singleTerms: properties: number: type: integer required: - number required: - singleTerms - description: Un piano con termini che si ripetono a una frequenza determinata. properties: recurringTerms: properties: frequency: enum: - monthly type: string number: type: integer required: - number - frequency required: - recurringTerms remittance: description: Remittance information of the SEPA Credit Transfer example: Pizza at Pizzeria da Mario. Thank you! type: string x-faker: lorem.sentence singleAmount: description: Amount of the transfer example: 100.34 format: float type: number x-faker: finance.amount required: - singleAmount - creditor - creditorIBAN - debtor - remittance - date - planType type: object description: Transfer details required: true responses: '201': content: application/json: schema: $ref: '#/components/schemas/Transfer' description: Transfer created '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente security: - ThirdPartyClientCredential: - transfers:write - ThirdPartyAuthorizationCode: - transfers:write tags: - Transfer /{tenantID}/transfers/{fingerprint}: delete: description: Cancella un documento transfer con la fingerprint, se ancora non è stato eseguito parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string - in: path name: fingerprint required: true schema: type: string responses: '204': content: application/json; charset=utf-8: {} description: Transfer document deleted '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente security: - ThirdPartyClientCredential: - transfers:write - ThirdPartyAuthorizationCode: - transfers:write summary: Cancella un documento transfer tags: - Transfer get: description: Restituisce le informazioni relative a uno specifico documento di tipo transfer parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string - in: path name: fingerprint required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/Transfer' description: Transfer document details '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente security: - ThirdPartyClientCredential: - transfers:read - ThirdPartyAuthorizationCode: - transfers:read summary: Recupera i dettagli di un documento transfer tags: - Transfer /{tenantID}/webhooks: get: description: Ottiene la lista dei webhook attivi per lo specifico tenant. parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string responses: '200': content: application/json; charset=utf-8: example: - events: hello: - hello id: cb15b52a-91db-41ed-81a0-764a0cc4795d url: hello schema: $ref: '#/components/schemas/WebHooks' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyAuthorizationCode: [] - ThirdPartyClientCredential: [] summary: '' tags: - Webhook post: description: Crea un nuovo webhook. Se la url del webhook è già presente, vengono agganciati i nuovi eventi al webhook. parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string requestBody: content: application/vnd.api+json; charset=utf-8: example: events: - hello expiresAt: '2020-03-03T17:32:28Z' url: hello schema: $ref: '#/components/schemas/PostWebHook' required: true responses: '201': content: application/json; charset=utf-8: example: createdAt: '2020-03-03T17:32:28Z' events: hello: - eventName: hello lastCalledAt: null lastError: null lastErroredAt: null numberOfErroredCalls: 12345678 numberOfSuccessfulCalls: 12345678 expiresAt: '2020-03-03T17:32:28Z' id: cb15b52a-91db-41ed-81a0-764a0cc4795d url: hello schema: $ref: '#/components/schemas/WebHookDetail' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyAuthorizationCode: [] - ThirdPartyClientCredential: [] summary: '' tags: - Webhook /{tenantID}/webhooks/{id}: delete: description: Elimina gli eventi dello specifico tenant associati ad un webhook oppure parte di essi parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string - description: identificativo del webhook example: 0C87AA6A-FDED-41A8-97A8-FCB5231B0B0C in: path name: id required: true schema: example: 0C87AA6A-FDED-41A8-97A8-FCB5231B0B0C format: uuid type: string requestBody: content: application/vnd.api+json; charset=utf-8: example: events: null schema: $ref: '#/components/schemas/WebHookDeleteRequest' required: true responses: '200': content: application/json; charset=utf-8: {} description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyAuthorizationCode: [] - ThirdPartyClientCredential: [] summary: '' tags: - Webhook get: description: Ottiene il dettaglio di un webhook parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string - description: identificativo del webhook example: 0C87AA6A-FDED-41A8-97A8-FCB5231B0B0C in: path name: id required: true schema: example: 0C87AA6A-FDED-41A8-97A8-FCB5231B0B0C format: uuid type: string responses: '200': content: application/json; charset=utf-8: example: createdAt: '2020-03-03T17:32:28Z' events: hello: - eventName: hello lastCalledAt: null lastError: null lastErroredAt: null numberOfErroredCalls: 12345678 numberOfSuccessfulCalls: 12345678 expiresAt: '2020-03-03T17:32:28Z' id: cb15b52a-91db-41ed-81a0-764a0cc4795d url: hello schema: $ref: '#/components/schemas/WebHookDetail' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyAuthorizationCode: [] - ThirdPartyClientCredential: [] summary: '' tags: - Webhook put: description: Aggiorna un webhook parameters: - description: ID dell'owner della richiesta example: 84461172-4326-4D6B-AEA7-840ED1372200 in: path name: tenantID required: true schema: example: 84461172-4326-4D6B-AEA7-840ED1372200 format: uuid type: string - description: identificativo del webhook example: 0C87AA6A-FDED-41A8-97A8-FCB5231B0B0C in: path name: id required: true schema: example: 0C87AA6A-FDED-41A8-97A8-FCB5231B0B0C format: uuid type: string requestBody: content: application/vnd.api+json; charset=utf-8: example: events: null expiresAt: null schema: $ref: '#/components/schemas/PutWebHook' required: true responses: '201': content: application/json; charset=utf-8: example: createdAt: '2020-03-03T17:32:28Z' events: hello: - eventName: hello lastCalledAt: null lastError: null lastErroredAt: null numberOfErroredCalls: 12345678 numberOfSuccessfulCalls: 12345678 expiresAt: '2020-03-03T17:32:28Z' id: cb15b52a-91db-41ed-81a0-764a0cc4795d url: hello schema: $ref: '#/components/schemas/WebHookDetail' description: '' '400': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta sintatticamente, body, headers, path o query params non conformi alla documentazione '401': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: Le credenziali fornite non sono sufficienti a completare la richiesta '403': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è autorizzata a procedere con le credenziali fornite '404': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta fa riferimento ad una risorsa inesistente '417': content: application/json; charset=utf-8: example: code: 12345678 errorDescription: hello errorURI: null expectedType: null field: null requestID: null service: 12345678 statusCode: 12345678 schema: $ref: '#/components/schemas/ErrorDTO' description: La richiesta non è corretta semanticamente security: - ThirdPartyAuthorizationCode: [] - ThirdPartyClientCredential: [] summary: '' tags: - Webhook servers: - url: https://app.flowpay.it/api variables: {} tags: - description: Endpoint per il servizio di AIS in cui è possbile ottenere informazioni di un account o semplicemente un check iban name: AIS Service - description: Banche conformi allo standard PSD2 name: Banche - description: Gestione del consenso per l'accesso ai dati bancari name: Consent - description: Endpoint di gestione dei webhook name: Webhook - description: |- Transazioni conto corrente Le transazioni possono essere filtrate per data e iban. utilizzando i seguenti parametri: - `dateFrom`: data di inizio del filtro in formato ISO8601 - `dateTo`: data di fine del filtro in formato ISO8601 - `iban`: iban del conto corrente ad esempio: `//transactions?dateFrom=2022-07-19T19:29:48Z&dateTo=2022-10-19T19:29:48Z&iban=IT00A0000000000000000000000` name: Transazioni - description: I pagamenti generati dall'approvazione di uno o più termini di pagamento relativi a una fattura name: Pagamenti - description: "\nGestione e creazione di un codici di checkout\n\nIl codice di checkout permette di far pagare un documento caricato su FlowPay attraverso il nostro flusso di checkout.\n\nIl flusso per il checkout passa dall'ottenere il codice di checkout e redirezionare il proprio utente verso la pagina\n* `https://checkout.flowpay.it/{code}` in produzione\n* `https://checkout.sandbox-new.flowpay.it/{code}` in sandbox \n" name: Sessioni di checkout - description: '' name: Stipendi - description: | Saldo conto corrente ## Balance Type The balance types given by this endpoint can be any of the following: | name | description | |---|---| | expected | Balance composed of booked entries and pending items known at the time of calculation, which projects the end of day balance if everything is booked on the account and no other entry is posted. | | authorised | The expected balance together with the value of a pre-approved credit line the ASPSP makes permanently available to the user. | | openingBooked | Book balance of the account at the beginning of the account reporting period. It always equals the closing book balance from the previous report. | | interimAvailable | Available balance calculated in the course of the account 'servicer's business day, at the time specified, and subject to further changes during the business day. The interim balance is calculated on the basis of booked credit and debit items during the calculation time/period specified. | | closingBooked | Balance of the account at the end of the pre-agreed account reporting period. It is the sum of the opening booked balance at the beginning of the period and all entries booked to the account during the pre-agreed account reporting period. | | forwardAvailable | Forward available balance of money that is at the disposal of the account owner on the date specified. | name: Saldo - description: "Possibilità di visualizzare e creare documenti di pagamento tra l'azienda ed un consumatore.\n \nIl flusso per eseguire generare una ricevuta è:\n1. Creare una ricevuta con l'endpoint\n2. Comporre la url di checkout con il code contenuto nei campi della risposta. L'url è quindi:\n - https://app.sandbox-new.flowpay.it/instant/{code} nel caso della sandbox\n - https://app.flowpay.it/instant/{code} nel caso di produzione\n3. Far aprire in un popup l'url creata in precedenza.\n\n### Importante\n\nDurante il periodo di deprecazione delle API di instant, la creazione di una Ricevuta da API continuerà a generare il codice di checkout per tale Ricevuta.\nPer evitare che ciò accada è possibile inviare il parametro `skip-instant=true` nei query params della richiesta.\nDopo il periodi di deprecazione la creazione di un bill non creerà più in automatico il codice di checkout." name: Ricevute - description: Documenti senza Lifecycle name: Transfer - description: |+ Questo endpoint consente di effettuare pagamenti bulk di documenti di diversi tipi.
Nota: l'API di questo endpoint non richiede scope specifici, il token di autorizzazione utilizzato deve avere accesso ai documenti che desidera pagare.

Il diagramma sopra mostra come funziona bulk. Supponiamo il caso in cui un utente abbia due fatture per il beneficiario 1 (Ben1), una fattura per il beneficiario 2 (Ben2) e un pagamento PagoPA L'utente desidera pagare tutti in un'unica operazione. Il client dell'utente, che ha accesso a tutti i documenti, chiama l'endpoint in blocco con l'elenco dei documenti da pagare, l'endpoint restituisce un nuovo documento (Bulk) collegato a tutti i documenti da pagare. Il client fornisce il documento bulk all'utente, che ora può pagarlo con un'unica operazione di Payment Initiation (PIS). Il bonifico bancario consentito con PIS sul documento in blocco è indirizzato al conto tecnico FlowPay (TA). Quando il TA riceve il pagamento, divide l'importo tra i beneficiari e invia loro i pagamenti tramite bonifico bancario. In caso di pagamento bulk allo stesso beneficiario, il beneficiario effettivo di avvio del pagamento è il beneficiario stesso, quindi il pagatore può riconoscere facilmente la transazione. In caso contrario, il beneficiario effettivo di avvio del pagamento è FlowPay. I bonifici bancari ai beneficiari vengono inviati con lo stesso pagatore originale, quindi i beneficiari possono identificare facilmente il pagatore. Nota: il destinatario dei pagamenti pagoPA è FlowPay stesso, quindi i pagamenti correlati non vengono conteggiati nelle operazioni di suddivisione. name: Bulk - description: |- Questo endpoint consente di concatenare i pagamenti tra diversi documenti, automatizzando il pagamento di una fattura utilizzando l'importo ricevuto da un'altra fattura attiva.
Nota: L'API per questo endpoint non richiede scopi specifici; il token di autorizzazione utilizzato deve avere accesso ai documenti da pagare. Il processo della catena di pagamento funziona collegando un documento "ring" che collega un documento di attivazione a un documento di destinazione. Una volta creato il documento ring, esso stabilisce una connessione tra il documento di attivazione, che avvia la catena di pagamento, e il documento di destinazione, che riceverà il pagamento una volta che il documento di attivazione è stato pagato tramite FlowPay. Ad esempio, supponiamo che ci siano due documenti. Il primo documento riguarda un pagamento che l'azienda A deve effettuare all'azienda B, mentre il secondo documento riguarda un pagamento che l'azienda B deve effettuare all'azienda C. Per automatizzare questi pagamenti, l'azienda B crea un "anello" utilizzando il suo token di autorizzazione. Questo anello collega il primo documento come "trigger" (documento di attivazione) e il secondo documento come "target" (documento di destinazione). Una volta creato l'anello, è possibile generare sessioni di checkout per ciascun documento. Il checkout per il documento di attivazione procede come un processo di pagamento standard, mentre il checkout per il documento di destinazione viene creato con un tipo di catena. Questo tipo di checkout a catena per il documento di destinazione non richiede un pagamento immediato, ma attende il pagamento del documento di attivazione. Quando l'azienda B accede e completa il checkout per il documento di destinazione, non viene effettuato alcun pagamento. Tuttavia, quando il documento di attivazione viene pagato, si attiva automaticamente il pagamento del documento di destinazione. Se c'è un importo residuo dopo il pagamento del documento di destinazione, l'azienda B lo riceverà. In questo modo, l'automazione dei pagamenti assicura che tutti i documenti coinvolti siano regolati in modo sequenziale, utilizzando i fondi ricevuti da un documento attivo per pagare un altro documento in sospeso, riducendo al minimo l'intervento manuale e semplificando la gestione dei flussi di cassa tra le aziende coinvolte. ### Utilizzo della catena di pagamento per il pagamento frazionato In uno scenario di pagamento frazionato, la catena di pagamento può essere utilizzata per distribuire automaticamente i fondi tra più parti, anche trattenendo una parte del pagamento per il partner prima di inoltrare l'importo rimanente al creditore. Ad esempio, supponiamo che l'azienda A debba pagare l'azienda B, ma che una parte del pagamento sia trattenuta dall'azienda C (che agisce come partner o intermediario). L'azienda A crea un documento di attivazione che rappresenta il pagamento che deve all'azienda B. Viene quindi creato un documento ring che collega questo documento di attivazione a due documenti di destinazione: uno per l'azienda B e uno per l'azienda C. Quando l'azienda A effettua il pagamento, la catena di pagamento assicura che i fondi vengano prima instradati attraverso l'azienda C. La parte a cui l'azienda C ha diritto (come concordato) viene trattenuta, mentre il resto del pagamento viene automaticamente inoltrato all'azienda B. Questa configurazione assicura che il pagamento frazionato venga gestito senza problemi, con un intervento manuale minimo, e che tutte le parti ricevano gli importi dovuti secondo le regole predefinite della catena di pagamento. name: Chain - description: pagoPA è il sistema nazionale italiano che permette ai cittadini di pagare la pubblica amministrazione. FlowPay partecipa a pagoPA e consente agli utenti di pagare con l'open banking. name: pagoPA