{ "openapi": "3.1.0", "info": { "title": "FlowPay API", "version": "2.0.0-alpha.4", "description": { "$ref": "docs/general.md" }, "termsOfService": "https://developer.flowpay.it/tos", "license": { "name": "FlowPay SRL", "url": "https://developer.flowpay.it/tos" }, "x-logo": { "url": "https://images.flowpay.it/logo", "altText": "FlowPay" }, "contact": { "name": "API Support", "url": "https://developer.flowpay.it", "email": "api-support@flowpay.it" }, "x-json-schema-faker": { "locale": "it-IT", "omitNulls": true, "fillProperties": true, "reuseProperties": true } }, "servers": [ { "url": "https://api.flowpay.it/v2", "description": "Production server (Not implementend)" }, { "url": "https://mock.flowpay.it/v2", "description": "Mock server" }, { "url": "https://sandbox.{customerID}.flowpay.it/v2", "description": "Customer-assigned sandbox server", "variables": { "customerID": { "default": "00000000-00000000-00000000-00000000", "description": "Unique customer identifier assigned after contract signature" } } }, { "url": "http://localhost:5002", "description": "Debug" } ], "components": { "securitySchemes": { "oAuth2": { "type": "oauth2", "description": "OAuth2 flow", "flows": { "authorizationCode": { "authorizationUrl": "/openid/authenticate", "tokenUrl": "/oauth/token", "refreshUrl": "/oauth/token", "scopes": { "accounts:read": "Allow to read accounts", "accounts:write": "Allow to mediate accounts creation and open banking consent renewal", "invoices:read": "Allow to read invoices", "invoices:write": "Allow to create invoices and manage lifecycle", "bills:read": "Allow to read bills", "bills:write": "Allow to create bills and manage lifecycle", "constructions:read": "Allow to read information about construction sites", "constructions:write": "Allow to create construction sites and manage the lifecycle", "openid": "Allow to read user profile", "pagopa:read": "Allow to retrieve users' PagoPA payment notices", "pagopa:write": "Allow to create PagoPA payment notices", "transfers:read": "Allow to read transfers", "transfers:write": "Allow to create transfers and manage lifecycle", "wallet:`document_type`": "Allow to manage wallet for the specified use case" } }, "clientCredentials": { "tokenUrl": "/oauth/token", "scopes": { "ade": "Allow to interact with Agenzia delle Entrate services", "accounts:read": "Allow to read accounts", "accounts:write": "Allow to mediate accounts creation and open banking consent renewal", "invoices:read": "Allow to read invoices", "invoices:write": "Allow to create invoices and manage lifecycle", "bills:read": "Allow to read bills", "bills:write": "Allow to create bills and manage lifecycle", "constructions:read": "Allow to read information about construction sites", "constructions:write": "Allow to create construction sites and manage the lifecycle", "openid": "Allow to read user profile", "pagopa:read": "Allow to retrieve users' PagoPA payment notices", "pagopa:write": "Allow to create PagoPA payment notices", "transfers:read": "Allow to read transfers", "transfers:write": "Allow to create transfers and manage lifecycle", "wallet:`document_type`": "Allow to manage wallet for the specified use case" } } } } }, "schemas": { "Address": { "type": "object", "properties": { "city": { "type": "string", "description": "Name of the city where the property is located." }, "street": { "type": "string", "description": "This field contains the name of the street where the property is located. It must include the name with a type (e.g., Avenue, Street, Road, etc.) but not the number or any other information." }, "number": { "type": "string", "description": "This field refers to the numeric or alphanumeric value assigned to a property on a street." }, "unitNumber": { "type": "string", "description": "his field is used when a single property has multiple units, such as apartments or office suites. It differentiates one unit from another within the same property." }, "postalCode": { "type": "string", "description": "Also known as ZIP code (or CAP in Italy)" }, "province": { "type": "string", "description": "It refers to the name of the state or province where the property is located." }, "country": { "type": "string", "description": "The name of the country where the property is located." } }, "required": [ "city", "street", "postalCode", "province", "country" ] }, "Bank": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the bank", "example": "Intesa Sanpaolo", "x-faker": "Company.companyName" }, "nationalID": { "type": "string", "description": "National identifier of the bank", "example": "03999", "x-faker": "finance.bic" }, "id": { "type": "string", "description": "Unique identifier of the bank", "example": "intesa_sanpaolo" }, "countries": { "type": "array", "items": { "type": "string", "description": "Countries where the bank operates in ISO 3166-1 alpha-2 format", "example": "IT", "x-faker": "address.countryCode" } }, "logo": { "type": "string", "description": "URL of the bank logo", "example": "https://flowpayproduction.blob.core.windows.net/img/84036981-d004-40c4-a872-c81dd37e4acc.png", "x-faker": "image.imageUrl" }, "features": { "type": "object", "description": "Features supported by the bank", "properties": { "futurePayments": { "type": "boolean", "description": "True if the bank supports future payments", "example": true }, "sct": { "type": "array", "description": "List of SCT payment types supported by the bank", "items": { "type": "string", "enum": [ "standard", "instant" ], "description": "SCT payment type" } }, "recurringPayments": { "type": "array", "description": "List of recurring payment types supported by the bank", "items": { "type": "string", "enum": [ "monthly", "everyTwoMonths", "quarterly", "semiAnnual", "daily", "everyFourMonths", "weekly", "everyTwoWeeks", "annual" ], "description": "Recurring payment frequency" } } } } } }, "BankAccount": { "type": "object", "properties": { "owner": { "type": "string", "format": "uuid", "description": "Identifier of the owner of the bank account" }, "iban": { "type": "string", "description": "International Bank Account Number", "x-faker": "finance.iban", "example": "IT60X0542811101000000123456" }, "currencies": { "type": "array", "items": { "type": "string", "description": "Currencies supported by the bank account", "x-faker": "finance.currencyCode" }, "example": [ "EUR", "CHF", "GBP" ] }, "bankName": { "type": "string", "description": "Identifier of the bank", "example": "intesa_sanpaolo" }, "owners": { "type": "array", "description": "List of owners of the bank account", "items": { "type": "string", "description": "Name of the owner of the bank account", "x-faker": "person.fullName" }, "example": [ "Maria Fumagalli", "Luigi Verdi" ] }, "consentStatus": { "$ref": "#/components/schemas/ConsentStatusEnum" } } }, "Bulk": { "type": "object", "properties": { "fingerprint": { "$ref": "#/components/schemas/Fingerprint" }, "amount": { "type": "number", "format": "double", "example": 48223.07, "description": "Total amount of the bulk" }, "allowWireTranfersAggregation": { "type": "boolean", "example": true, "description": "Indicate if the wire transfers to the same beneficiary can be aggregated" }, "documents": { "type": "object", "description": "Dictionary of documents related to the bulk. Keys are the document type, values are the fingerprints of the documents.", "additionalProperties": { "type": "array", "items": { "$ref": "#/components/schemas/Fingerprint" } } } } }, "Chain": { "description": "Chain of documents", "type": "object", "properties": { "fingerprint": { "$ref": "#/components/schemas/Fingerprint" }, "targetType": { "$ref": "#/components/schemas/DocumentKindEnum" }, "targetFingerprint": { "$ref": "#/components/schemas/Fingerprint" }, "triggerType": { "$ref": "#/components/schemas/DocumentKindEnum" }, "triggerFingerprint": { "$ref": "#/components/schemas/Fingerprint" } } }, "Checkout": { "type": "object", "properties": { "code": { "type": "string", "pattern": "^[a-zA-Z\\d]{8}$", "description": "Unique identifier of the checkout session. This code is secret and should never be shared with anyone who is not the payer." }, "fingerprint": { "$ref": "#/components/schemas/Fingerprint" }, "type": { "$ref": "#/components/schemas/DocumentKindEnum" }, "creditor": { "type": "string", "format": "uuid", "description": "Identifier of the creditor", "x-faker": "datatype.uuid" }, "debtor": { "type": "string", "format": "uuid", "description": "Identifier of the debtor", "x-faker": "datatype.uuid" }, "collectionMethods": { "type": "array", "items": { "$ref": "#/components/schemas/CollectionMethodEnum" }, "description": "Collection methods enabled for the payment.
Note that collection methods are the intersection of the collection methods techologies enabled for the creditor and the collection methods allowed by the client for checkout." }, "payments": { "type": "array", "items": { "$ref": "#/components/schemas/Payment" }, "description": "List of payments related to the checkout" } }, "required": [ "code", "fingerprint", "type", "creditor", "debtor", "collectionMethods" ] }, "ConsentStatusEnum": { "type": "string", "enum": [ "not_granted", "granted", "revoked", "expired", "all" ], "default": "all", "description": "Status of the account information service (AIS) consent granted by account owner to FlowPay.
- `not_granted`: owner has never granted a consent
- `granted`: consent granted by account owner
- `revoked`: consent revoked by account owner
- `expired`: consent expired
- `all`: all types of consent" }, "CollectionMethodEnum": { "type": "string", "enum": [ "sct", "sct-inst", "sdd", "card", "custom/