openapi: 3.2.0 info: contact: email: federico.giuntoli@flowpay.it name: Federico Giuntoli description: Hai uno use case di pagamento complesso come pagamenti massivi, split o pagopa? termsOfService: https://www.flowpay.it/tos title: FlowPay Transfer API version: 1.0.0 servers: - url: https://app.flowpay.it/api variables: {} tags: - description: Documenti senza Lifecycle name: Transfer paths: /{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 summary: Get by tenant id transfers x-summary-source: derived operationId: getByTenantIDTransfers x-operation-id-source: derived 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 operationId: postByTenantIDTransfers x-operation-id-source: derived /{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 summary: Create by tenant id transfers plan x-summary-source: derived operationId: postByTenantIDTransfersPlan x-operation-id-source: derived /{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 operationId: deleteByTenantIDTransfersByFingerprint x-operation-id-source: derived 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 operationId: getByTenantIDTransfersByFingerprint x-operation-id-source: derived components: schemas: 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 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 Fingerprint: description: Fingerprint del documento example: d41d8cd98f00b204e9800998ecf8427e type: string 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