{
"openapi": "3.0.1",
"info": {
"title": "FDR Fase3 - Flussi di rendicontazione (PSP)",
"description": "FDR - Flussi di rendicontazione (PSP)",
"termsOfService": "https://www.pagopa.gov.it/",
"version": "1.2.4"
},
"servers": [
{
"url": "https://api.platform.pagopa.it/fdr-psp/service/v1"
}
],
"paths": {
"/psps/{pspId}/created": {
"get": {
"tags": [
"PSP"
],
"summary": "Get all draft flows related to the PSP",
"description": "## Description:\nThis API permits to search all draft flows for a specific PSP, formatted in a paginated view.\nThe only flows retrieved are the single draft revision, one for each flow identifier.
\nBefore executing the query, the search filters are validated against entities configured for\nNodo dei Pagamenti environment, in particular on PSP.
\nThe result of the query is paginated and contains all the metadata needed for pagination purposes.
\n\nDate-time fields in the response are defined with UTC time-zone.
\n\n\n## Error codes:\nAPPLICATIVE CODE | HTTP CODE | MESSAGE\n- | - | -\n**FDR-2000** | 400 | PSP with ID [%] is invalid or unknown.\n**FDR-2001** | 400 | PSP with ID [%] is not enabled.\n\n\n## API properties:\nPROPERTY | VALUE\n- | -\n***Internal*** | N\n***External*** | Y\n***Synchronous*** | Synchronous\n***Authorization*** | Y (Authorizer)\n***Authentication*** | Y (Subscription Key)\n***TPS*** | 1.0/sec\n***Idempotency*** | Y\n***Stateless*** | Y\n***Read/Write Intensive*** | Read\n***Cacheable*** | Y\n",
"operationId": "IPspsController_getAllFlowsNotInPublishedStatus",
"parameters": [
{
"name": "pspId",
"in": "path",
"description": "The PSP identifier, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": 88888888888
},
{
"name": "createdGt",
"in": "query",
"description": "A date-time to be used as a lower limit search on creation date. Defined with UTC time-zone and formatted as ISO-8601 (yyyy-MM-dd'T'HH:mm:ss'Z').",
"schema": {
"$ref": "#/components/schemas/Instant"
},
"example": "2025-01-01T12:00:00.0000000+00:00"
},
{
"name": "page",
"in": "query",
"description": "The index of the page to be shown in the result",
"schema": {
"minimum": 1.0,
"type": "integer",
"format": "int64",
"default": 1
},
"example": 1
},
{
"name": "size",
"in": "query",
"description": "The number of the elements of the page to be shown in the result",
"schema": {
"minimum": 1.0,
"type": "integer",
"format": "int64",
"default": 1000
},
"example": 50
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaginatedFlowsCreatedResponse"
},
"example": {
"metadata": {
"pageSize": [
25
],
"pageNumber": [
1
],
"totPage": [
3
]
},
"count": [
100
],
"data": [
{
"fdr": [
"2025-01-0188888888888-0000001"
],
"organizationId": [
"77777777777"
],
"revision": [
1
],
"created": [
"2022-03-10T04:15:50.0000000+00:00"
]
}
]
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 400,
"httpStatusDescription": "Bad Request",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"path": "",
"message": ""
}
]
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 404,
"httpStatusDescription": "Not Found",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"message": ""
}
]
}
}
}
},
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"errorId": "50905466-1881-457b-b42f-fb7b2bfb1610",
"httpStatusCode": 500,
"httpStatusDescription": "Internal Server Error",
"appErrorCode": "FDR-0500",
"errors": [
{
"message": "An unexpected error has occurred. Please contact support."
}
]
}
}
}
}
}
}
},
"/psps/{pspId}/created/fdrs/{fdr}/organizations/{organizationId}": {
"get": {
"tags": [
"PSP"
],
"summary": "Get single draft flow related to the PSP, searching by name",
"description": "## Description:\nThis API permits to search a single draft flow for a specific PSP.\nIn order to do so, it is required to add the following search filters:\n- Creditor institution identifier: for filtering by specific organization\n- PSP identifier: for filtering by flow-related PSP\n- Flow name: for filtering by specific instance of the flow\n\nThe result will contains a single element because there can be only one draft flow for each\nunique identifier.
\nBefore executing the query, the search filters are validated against entities configured for\nNodo dei Pagamenti environment, in particular on creditor institution and PSP. Also,\nthe name of the flow is validated against a specific standard format.
\n\nDate-time fields in the response are defined with UTC time-zone. Business-date fields preserve the original calendar day.
\n\n\n## Error codes:\nAPPLICATIVE CODE | HTTP CODE | MESSAGE\n- | - | -\n**FDR-2000** | 400 | PSP with ID [%] is invalid or unknown.\n**FDR-2001** | 400 | PSP with ID [%] is not enabled.\n**FDR-2008** | 400 | Creditor institution with ID [%] is invalid or unknown.\n**FDR-2009** | 400 | Creditor institution with ID [%] is not enabled.\n**FDR-3008** | 400 | Flow identifier [%] contains a date that is not compliant.\n**FDR-3009** | 400 | Flow identifier [%] contains a PSP ID that is not compliant.\n**FDR-3001** | 404 | Flow with ID [%] not found.\n\n\n## API properties:\nPROPERTY | VALUE\n- | -\n***Internal*** | N\n***External*** | Y\n***Synchronous*** | Synchronous\n***Authorization*** | Y (Authorizer)\n***Authentication*** | Y (Subscription Key)\n***TPS*** | 1.0/sec\n***Idempotency*** | Y\n***Stateless*** | Y\n***Read/Write Intensive*** | Read\n***Cacheable*** | Y\n",
"operationId": "IPspsController_getSingleFlowNotInPublishedStatus",
"parameters": [
{
"name": "fdr",
"in": "path",
"description": "The flow name, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": "2025-01-0188888888888-0001"
},
{
"name": "organizationId",
"in": "path",
"description": "The creditor institution identifier, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": 15376371009
},
{
"name": "pspId",
"in": "path",
"description": "The PSP identifier, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": 88888888888
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SingleFlowCreatedResponse"
},
"example": {
"status": "CREATED",
"revision": [
4
],
"created": [
"2022-03-10T04:15:50.0000000+00:00"
],
"updated": [
"2022-03-10T04:15:50.0000000+00:00"
],
"fdr": [
"2025-01-0188888888888-0000001"
],
"fdrDate": [
"2022-03-10T04:15:50.0000000+00:00"
],
"regulation": [
"SEPA - Bonifico X"
],
"regulationDate": "string",
"bicCodePouringBank": [
"UNCRITMMXXX"
],
"sender": {
"type": "LEGAL_PERSON",
"id": [
"SELBIT2B"
],
"pspId": [
"60000000001"
],
"pspName": [
"PSP Name"
],
"pspBrokerId": [
"70000000001"
],
"channelId": [
"80000000001"
],
"password": [
"password"
]
},
"receiver": {
"id": [
"APPBIT2B"
],
"organizationId": [
"20000000001"
],
"organizationName": [
"Comune di Roma"
]
},
"computedTotPayments": [
93
],
"computedSumPayments": [
81.66
],
"totPayments": [
100
],
"sumPayments": [
100.95
]
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 400,
"httpStatusDescription": "Bad Request",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"path": "",
"message": ""
}
]
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 404,
"httpStatusDescription": "Not Found",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"message": ""
}
]
}
}
}
},
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"errorId": "50905466-1881-457b-b42f-fb7b2bfb1610",
"httpStatusCode": 500,
"httpStatusDescription": "Internal Server Error",
"appErrorCode": "FDR-0500",
"errors": [
{
"message": "An unexpected error has occurred. Please contact support."
}
]
}
}
}
}
}
}
},
"/psps/{pspId}/created/fdrs/{fdr}/organizations/{organizationId}/payments": {
"get": {
"tags": [
"PSP"
],
"summary": "Get payments of draft flow related to the PSP, searching by name",
"description": "## Description:\nThis API permits to search all the payments of a single draft flow for a specific PSP,\nformatted in a paginated view. In order to do so, it is required to add the following search filters:\n- Creditor institution identifier: for filtering by specific organization\n- PSP identifier: for filtering by flow-related PSP\n- Flow name: for filtering by specific instance of the flow\n\nBefore executing the query, the search filters are validated against entities configured for\nNodo dei Pagamenti environment, in particular on creditor institution and PSP. Also,\nthe name of the flow is validated against a specific standard format.
\nThe result of the query is paginated and contains all the metadata needed for pagination purposes.
\n\nDate-time fields in the response are defined with UTC time-zone. Business-date fields preserve the original calendar day.
\n\n\n## Error codes:\nAPPLICATIVE CODE | HTTP CODE | MESSAGE\n- | - | -\n**FDR-2000** | 400 | PSP with ID [%] is invalid or unknown.\n**FDR-2001** | 400 | PSP with ID [%] is not enabled.\n**FDR-2008** | 400 | Creditor institution with ID [%] is invalid or unknown.\n**FDR-2009** | 400 | Creditor institution with ID [%] is not enabled.\n**FDR-3008** | 400 | Flow identifier [%] contains a date that is not compliant.\n**FDR-3009** | 400 | Flow identifier [%] contains a PSP ID that is not compliant.\n**FDR-3001** | 404 | Flow with ID [%] not found.\n\n\n## API properties:\nPROPERTY | VALUE\n- | -\n***Internal*** | N\n***External*** | Y\n***Synchronous*** | Synchronous\n***Authorization*** | Y (Authorizer)\n***Authentication*** | Y (Subscription Key)\n***TPS*** | 1.0/sec\n***Idempotency*** | Y\n***Stateless*** | Y\n***Read/Write Intensive*** | Read\n***Cacheable*** | Y\n",
"operationId": "IPspsController_getPaymentsForFlowNotInPublishedStatus",
"parameters": [
{
"name": "fdr",
"in": "path",
"description": "The flow name, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": "2025-01-0188888888888-0001"
},
{
"name": "organizationId",
"in": "path",
"description": "The creditor institution identifier, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": 15376371009
},
{
"name": "pspId",
"in": "path",
"description": "The PSP identifier, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": 88888888888
},
{
"name": "page",
"in": "query",
"description": "The index of the page to be shown in the result",
"schema": {
"minimum": 1.0,
"type": "integer",
"format": "int64",
"default": 1
},
"example": 1
},
{
"name": "size",
"in": "query",
"description": "The number of the elements of the page to be shown in the result",
"schema": {
"minimum": 1.0,
"type": "integer",
"format": "int64",
"default": 1000
},
"example": 50
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaginatedPaymentsResponse"
},
"example": {
"metadata": {
"pageSize": [
25
],
"pageNumber": [
1
],
"totPage": [
3
]
},
"count": [
100
],
"data": [
{
"index": [
1
],
"iuv": [
"17854456582215"
],
"iur": [
"3354426511008"
],
"idTransfer": [
1
],
"pay": [
0.01
],
"payStatus": [
"EXECUTED"
],
"payDate": [
"2022-03-10T04:15:50.0000000+00:00"
]
}
]
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 400,
"httpStatusDescription": "Bad Request",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"path": "",
"message": ""
}
]
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 404,
"httpStatusDescription": "Not Found",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"message": ""
}
]
}
}
}
},
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"errorId": "50905466-1881-457b-b42f-fb7b2bfb1610",
"httpStatusCode": 500,
"httpStatusDescription": "Internal Server Error",
"appErrorCode": "FDR-0500",
"errors": [
{
"message": "An unexpected error has occurred. Please contact support."
}
]
}
}
}
}
}
}
},
"/psps/{pspId}/fdrs/{fdr}": {
"delete": {
"tags": [
"PSP"
],
"summary": "Delete an existing draft flow and all related payments",
"description": "## Description:\nThis API permits to delete a draft flow and all the payments associated to it. The deletion process\nirreversibly removes the flow and all related payments, making it impossible to recover any data afterwards.\nThis procedure frees the draft for the flow with a specific identifier, enabling the generation of\na new revision from scratch.
\nPlease note that in order to remove an existing flow and all the related payments, the flow must\nexist and be in draft, i.e. not be in PUBLISHED status. A published flow cannot be removed at all and\ncan only be 'replaced' by the creation of a new revision of the same flow through the 'new flow creation'\nAPI, although the old revision will be present anyway.
\nBefore executing the operation, the request fields are validated against entities configured for\nNodo dei Pagamenti environment, in particular on PSP.
\n\n\n## Error codes:\nAPPLICATIVE CODE | HTTP CODE | MESSAGE\n- | - | -\n**FDR-2000** | 400 | PSP with ID [%] is invalid or unknown.\n**FDR-2001** | 400 | PSP with ID [%] is not enabled.\n**FDR-3008** | 400 | Flow identifier [%] contains a date that is not compliant.\n**FDR-3009** | 400 | Flow identifier [%] contains a PSP ID that is not compliant.\n**FDR-3001** | 404 | Flow with ID [%] not found.\n\n\n## API properties:\nPROPERTY | VALUE\n- | -\n***Internal*** | N\n***External*** | Y\n***Synchronous*** | Synchronous\n***Authorization*** | Y (Authorizer)\n***Authentication*** | Y (Subscription Key)\n***TPS*** | 1.0/sec\n***Idempotency*** | N\n***Stateless*** | Y\n***Read/Write Intensive*** | Read and Write\n***Cacheable*** | N\n",
"operationId": "IPspsController_deleteExistingFlow",
"parameters": [
{
"name": "fdr",
"in": "path",
"description": "The flow name, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": "2025-01-0188888888888-0001"
},
{
"name": "pspId",
"in": "path",
"description": "The PSP identifier, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": 88888888888
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GenericResponse"
},
"example": {
"message": [
"Success"
]
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 400,
"httpStatusDescription": "Bad Request",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"path": "",
"message": ""
}
]
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 404,
"httpStatusDescription": "Not Found",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"message": ""
}
]
}
}
}
},
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"errorId": "50905466-1881-457b-b42f-fb7b2bfb1610",
"httpStatusCode": 500,
"httpStatusDescription": "Internal Server Error",
"appErrorCode": "FDR-0500",
"errors": [
{
"message": "An unexpected error has occurred. Please contact support."
}
]
}
}
}
}
}
},
"post": {
"tags": [
"PSP"
],
"summary": "Create a new flow structure",
"description": "## Description:\nThis API permits to generate a new flow for a specific creditor institution. The generated flow\nis only a structure that define the main fields and the guidelines related to the payments that\nmust be added in the next operations.
\nThe flow can only be created if no other flow exists in the CREATED or INSERTED state with the\nsame identifier. If it is necessary to define a new version but you have a flow in the listed statuses,\nyou must first publish the flow in draft status, or delete the flow completely via the API if you want\nto change it in its entirety.
\nBefore executing the operation, the request fields are validated against entities configured for\nNodo dei Pagamenti environment, in particular (but not limited) on creditor institution\nand PSP. Also, the name of the flow is validated against a specific standard format.
\n\nAll date-time fields in the request body are defined with UTC time-zone unless otherwise specified at field level.
\n\n\n## Error codes:\nAPPLICATIVE CODE | HTTP CODE | MESSAGE\n- | - | -\n**FDR-2000** | 400 | PSP with ID [%] is invalid or unknown.\n**FDR-2001** | 400 | PSP with ID [%] is not enabled.\n**FDR-3002** | 400 | Flow with ID [%] already exists with [%] status.\n**FDR-2002** | 400 | PSP Broker with ID [%] is invalid or unknown.\n**FDR-2003** | 400 | PSP Broker with ID [%] is not enabled.\n**FDR-2004** | 400 | Channel with ID [%] is invalid or unknown.\n**FDR-2005** | 400 | Channel with ID [%] is not enabled.\n**FDR-2006** | 400 | Channel with ID [%] is not authorized to be used with PSP Broker with ID [%].\n**FDR-2007** | 400 | Channel with ID [%] is not authorized to be used with PSP with ID [%].\n**FDR-2008** | 400 | Creditor institution with ID [%] is invalid or unknown.\n**FDR-2009** | 400 | Creditor institution with ID [%] is not enabled.\n**FDR-3008** | 400 | Flow identifier [%] contains a date that is not compliant.\n**FDR-3009** | 400 | Flow identifier [%] contains a PSP ID that is not compliant.\n**FDR-3004** | 400 | Flow with ID [%] have field sender.pspId [%] that does not match with query param [%].\n**FDR-3010** | 400 | Field fdr [%] does not match with query param [%].\n**FDR-3011** | 400 | Flow [%] contains a date that is not compliant. The inserted date [%] must be after the date in the last revision [%].\n**FDR-3012** | 400 | Invalid reporting flow revision for [%]: previous organizationId [%] is different from current organizationId [%].\n\n\n## API properties:\nPROPERTY | VALUE\n- | -\n***Internal*** | N\n***External*** | Y\n***Synchronous*** | Synchronous\n***Authorization*** | Y (Authorizer)\n***Authentication*** | Y (Subscription Key)\n***TPS*** | 1.0/sec\n***Idempotency*** | N\n***Stateless*** | Y\n***Read/Write Intensive*** | Write\n***Cacheable*** | N\n",
"operationId": "IPspsController_createEmptyFlow",
"parameters": [
{
"name": "fdr",
"in": "path",
"description": "The flow name, used as a search filter",
"required": true,
"schema": {
"pattern": "[a-zA-Z0-9\\-_]{1,35}",
"type": "string"
},
"example": "2025-01-0188888888888-0001"
},
{
"name": "pspId",
"in": "path",
"description": "The PSP identifier, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": 88888888888
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateFlowRequest"
},
"example": {
"fdr": [
"2016-08-16pspTest-1178"
],
"fdrDate": [
"2022-03-10T04:15:50.0000000+00:00"
],
"sender": {
"type": "LEGAL_PERSON",
"id": [
"SELBIT2B"
],
"pspId": [
"60000000001"
],
"pspName": [
"PSP Name"
],
"pspBrokerId": [
"70000000001"
],
"channelId": [
"80000000001"
],
"password": [
"password"
]
},
"receiver": {
"id": [
"APPBIT2B"
],
"organizationId": [
"20000000001"
],
"organizationName": [
"Comune di Roma"
]
},
"regulation": [
"SEPA - Bonifico X"
],
"regulationDate": "string",
"bicCodePouringBank": [
"UNCRITMMXXX"
],
"totPayments": [
1
],
"sumPayments": [
0.01
]
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GenericResponse"
},
"example": {
"message": [
"Success"
]
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 400,
"httpStatusDescription": "Bad Request",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"path": "",
"message": ""
}
]
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 404,
"httpStatusDescription": "Not Found",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"message": ""
}
]
}
}
}
},
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"errorId": "50905466-1881-457b-b42f-fb7b2bfb1610",
"httpStatusCode": 500,
"httpStatusDescription": "Internal Server Error",
"appErrorCode": "FDR-0500",
"errors": [
{
"message": "An unexpected error has occurred. Please contact support."
}
]
}
}
}
}
}
}
},
"/psps/{pspId}/fdrs/{fdr}/payments/add": {
"put": {
"tags": [
"PSP"
],
"summary": "Add one or more payments to an existing flow",
"description": "## Description:\nThis API permits to add one or more payments to a given flow, previously created through\nthe dedicated API. Newly added payments will be validated according to the indexes defined\nduring the insertion process and according to the totality of the indexes of the payments\nalready inserted in the same flow.
\nIn addition, during the process of adding payments the relevant flow is updated, in particular\nby adjusting the \u2018computed values\u2019: these fields will include the updated count of the inserted\npayments and the total amount of payments added together.
\nPlease note that in order to add a new payment, the flow must exist and be in draft, i.e.\nnot be in PUBLISHED status. In order to add a payment to an already published flow, it is necessary\nto create a new revision of the same flow through the 'new flow creation' API.
\nBefore executing the operation, the request fields are validated against entities configured for\nNodo dei Pagamenti environment, in particular on PSP. Also, the name of the flow is validated\nagainst a specific standard format.
\n\nAll date-time fields in the request body are defined with UTC time-zone unless otherwise specified at field level.
\n\n\n## Error codes:\nAPPLICATIVE CODE | HTTP CODE | MESSAGE\n- | - | -\n**FDR-2000** | 400 | PSP with ID [%] is invalid or unknown.\n**FDR-2001** | 400 | PSP with ID [%] is not enabled.\n**FDR-3008** | 400 | Flow identifier [%] contains a date that is not compliant.\n**FDR-3009** | 400 | Flow identifier [%] contains a PSP ID that is not compliant.\n**FDR-3005** | 400 | There are one or more identical payment indexes in same request for flow with ID [%].\n**FDR-3001** | 404 | Flow with ID [%] not found.\n**FDR-3006** | 400 | One or more payment index already added on flow with ID [%].\n\n\n## API properties:\nPROPERTY | VALUE\n- | -\n***Internal*** | N\n***External*** | Y\n***Synchronous*** | Synchronous\n***Authorization*** | Y (Authorizer)\n***Authentication*** | Y (Subscription Key)\n***TPS*** | 1.0/sec\n***Idempotency*** | N\n***Stateless*** | Y\n***Read/Write Intensive*** | Write\n***Cacheable*** | N\n",
"operationId": "IPspsController_addPaymentToExistingFlow",
"parameters": [
{
"name": "fdr",
"in": "path",
"description": "The flow name, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": "2025-01-0188888888888-0001"
},
{
"name": "pspId",
"in": "path",
"description": "The PSP identifier, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": 88888888888
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AddPaymentRequest"
},
"example": {
"payments": [
{
"index": [
1
],
"iuv": [
"17854456582215"
],
"iur": [
"3354426511008"
],
"idTransfer": [
1
],
"pay": [
0.01
],
"payStatus": [
"EXECUTED"
],
"payDate": [
"2022-03-10T04:15:50.0000000+00:00"
]
}
]
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GenericResponse"
},
"example": {
"message": [
"Success"
]
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 400,
"httpStatusDescription": "Bad Request",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"path": "",
"message": ""
}
]
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 404,
"httpStatusDescription": "Not Found",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"message": ""
}
]
}
}
}
},
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"errorId": "50905466-1881-457b-b42f-fb7b2bfb1610",
"httpStatusCode": 500,
"httpStatusDescription": "Internal Server Error",
"appErrorCode": "FDR-0500",
"errors": [
{
"message": "An unexpected error has occurred. Please contact support."
}
]
}
}
}
}
}
}
},
"/psps/{pspId}/fdrs/{fdr}/payments/del": {
"put": {
"tags": [
"PSP"
],
"summary": "Delete one or more payments from an existing flow",
"description": "## Description:\nThis API permits to remove one or more payments from a particular flow, which were\npreviously added via the dedicated API. The payments to be removed are indicated in the request\nvia the index with which they were previously defined when they were added to the flow,\nand must all be present within the flow at the time of deletion.
\nIn addition, during the process of removing payments the relevant flow is updated, in particular\nby adjusting the \u2018computed fields\u2019: these fields will include the updated count of the removed\npayments and the total amount of payments reduced by the amounts of the removed payments.
\nPlease note that in order to remove an existing payment, the flow must exist and be in draft,\ni.e. not be in PUBLISHED status. In order to remove a payment from a flow that has already been\npublished, it is necessary to create a new revision of the same flow through the 'new flow creation' API\nnot including the affected payments.
\nBefore executing the operation, the request fields are validated against entities configured for\nNodo dei Pagamenti environment, in particular on PSP.
\n\n\n## Error codes:\nAPPLICATIVE CODE | HTTP CODE | MESSAGE\n- | - | -\n**FDR-2000** | 400 | PSP with ID [%] is invalid or unknown.\n**FDR-2001** | 400 | PSP with ID [%] is not enabled.\n**FDR-3008** | 400 | Flow identifier [%] contains a date that is not compliant.\n**FDR-3009** | 400 | Flow identifier [%] contains a PSP ID that is not compliant.\n**FDR-3005** | 400 | There are one or more identical payment indexes in same request for flow with ID [%].\n**FDR-3001** | 404 | Flow with ID [%] not found.\n**FDR-3003** | 400 | Flow with ID [%] exists with [%] status.\n**FDR-3007** | 400 | Index of payment not match with index loaded on flow with ID [%].\n\n\n## API properties:\nPROPERTY | VALUE\n- | -\n***Internal*** | N\n***External*** | Y\n***Synchronous*** | Synchronous\n***Authorization*** | Y (Authorizer)\n***Authentication*** | Y (Subscription Key)\n***TPS*** | 1.0/sec\n***Idempotency*** | N\n***Stateless*** | Y\n***Read/Write Intensive*** | Write\n***Cacheable*** | N\n",
"operationId": "IPspsController_deletePaymentFromExistingFlow",
"parameters": [
{
"name": "fdr",
"in": "path",
"description": "The flow name, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": "2025-01-0188888888888-0001"
},
{
"name": "pspId",
"in": "path",
"description": "The PSP identifier, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": 88888888888
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeletePaymentRequest"
},
"example": {
"indexList": [
0
]
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GenericResponse"
},
"example": {
"message": [
"Success"
]
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 400,
"httpStatusDescription": "Bad Request",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"path": "",
"message": ""
}
]
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 404,
"httpStatusDescription": "Not Found",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"message": ""
}
]
}
}
}
},
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"errorId": "50905466-1881-457b-b42f-fb7b2bfb1610",
"httpStatusCode": 500,
"httpStatusDescription": "Internal Server Error",
"appErrorCode": "FDR-0500",
"errors": [
{
"message": "An unexpected error has occurred. Please contact support."
}
]
}
}
}
}
}
}
},
"/psps/{pspId}/fdrs/{fdr}/publish": {
"post": {
"tags": [
"PSP"
],
"summary": "Publish an existing flow in draft status",
"description": "## Description:\nThis API permits to publish a flow in draft, completed and ready to be retrieved by\nthe creditor institution related to the flow. The publication release a new revision of\ncertain flow, permitting to generate a new version if required. After publication,\nspecific metadata are saved in order to perform an asynchronous historicization of this\nflow, including all the payments related to it.
\nIn addition, during the flow publication process a final validation of the \"computed fields\" is performed,\nchecking that their values are equal to the values pre-defined in the creation phase of the empty flow.\nPlease note that, in order to publish a flow, it must be in draft, so it must not be already in PUBLISHED status.
\nBefore executing the operation, the request fields are validated against entities configured for\nNodo dei Pagamenti environment, in particular on PSP.
\n\n\n## Error codes:\nAPPLICATIVE CODE | HTTP CODE | MESSAGE\n- | - | -\n**FDR-2000** | 400 | PSP with ID [%] is invalid or unknown.\n**FDR-2001** | 400 | PSP with ID [%] is not enabled.\n**FDR-3008** | 400 | Flow identifier [%] contains a date that is not compliant.\n**FDR-3009** | 400 | Flow identifier [%] contains a PSP ID that is not compliant.\n**FDR-3001** | 404 | Flow with ID [%] not found.\n**FDR-3003** | 400 | Flow with ID [%] exists with [%] status.\n**FDR-4001** | 400 | On flow with ID [%], [%] payments were defined to be added but [%] were actually added.\n**FDR-4002** | 400 | On flow with ID [%], an amount of [%] euro for all payments were defined to be added but [%] is actually calculated.\n\n\n## API properties:\nPROPERTY | VALUE\n- | -\n***Internal*** | N\n***External*** | Y\n***Synchronous*** | Synchronous\n***Authorization*** | Y (Authorizer)\n***Authentication*** | Y (Subscription Key)\n***TPS*** | 1.0/sec\n***Idempotency*** | N\n***Stateless*** | Y\n***Read/Write Intensive*** | Write\n***Cacheable*** | N\n",
"operationId": "IPspsController_publishFlow",
"parameters": [
{
"name": "fdr",
"in": "path",
"description": "The flow name, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": "2025-01-0188888888888-0001"
},
{
"name": "pspId",
"in": "path",
"description": "The PSP identifier, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": 88888888888
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GenericResponse"
},
"example": {
"message": [
"Success"
]
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 400,
"httpStatusDescription": "Bad Request",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"path": "",
"message": ""
}
]
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 404,
"httpStatusDescription": "Not Found",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"message": ""
}
]
}
}
}
},
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"errorId": "50905466-1881-457b-b42f-fb7b2bfb1610",
"httpStatusCode": 500,
"httpStatusDescription": "Internal Server Error",
"appErrorCode": "FDR-0500",
"errors": [
{
"message": "An unexpected error has occurred. Please contact support."
}
]
}
}
}
}
}
}
},
"/psps/{pspId}/published": {
"get": {
"tags": [
"PSP"
],
"summary": "Get all published flow related to the PSP",
"description": "## Description:\nThis API permits to search all published flows for a specific PSP, formatted in a paginated view.\nThe search can be enhanced including the creditor institution identifier in order to filter only the flows\nfor certain receiver. The only flows retrieved are the latest revision, as same as \"nodoChiediElencoFlussiRendicontazione\"\nprimitive does.
\nBefore executing the query, the search filters are validated against entities configured for\nNodo dei Pagamenti environment, in particular on PSP and creditor institution (if that\nsearch filter is defined).
\nThe result of the query is paginated and contains all the metadata needed for pagination purposes.
\n\nDate-time fields in the response are defined with UTC time-zone.
\n\n\n## Error codes:\nAPPLICATIVE CODE | HTTP CODE | MESSAGE\n- | - | -\n**FDR-2000** | 400 | PSP with ID [%] is invalid or unknown.\n**FDR-2001** | 400 | PSP with ID [%] is not enabled.\n**FDR-2008** | 400 | Creditor institution with ID [%] is invalid or unknown.\n**FDR-2009** | 400 | Creditor institution with ID [%] is not enabled.\n\n\n## API properties:\nPROPERTY | VALUE\n- | -\n***Internal*** | N\n***External*** | Y\n***Synchronous*** | Synchronous\n***Authorization*** | Y (Authorizer)\n***Authentication*** | Y (Subscription Key)\n***TPS*** | 1.0/sec\n***Idempotency*** | Y\n***Stateless*** | Y\n***Read/Write Intensive*** | Read\n***Cacheable*** | Y\n",
"operationId": "IPspsController_getAllFlowsInPublishedStatus",
"parameters": [
{
"name": "pspId",
"in": "path",
"description": "The PSP identifier, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": 88888888888
},
{
"name": "organizationId",
"in": "query",
"description": "The creditor institution identifier, used as a search filter",
"schema": {
"pattern": "^(.{1,35})$",
"type": "string"
},
"example": 15376371009
},
{
"name": "page",
"in": "query",
"description": "The index of the page to be shown in the result",
"schema": {
"minimum": 1.0,
"type": "integer",
"format": "int64",
"default": 1
},
"example": 1
},
{
"name": "publishedGt",
"in": "query",
"description": "A date-time to be used as a lower limit search on publication date. Defined with UTC time-zone and formatted as ISO-8601 (yyyy-MM-dd'T'HH:mm:ss'Z').",
"schema": {
"$ref": "#/components/schemas/Instant"
},
"example": "2025-01-01T12:00:00.0000000+00:00"
},
{
"name": "size",
"in": "query",
"description": "The number of the elements of the page to be shown in the result",
"schema": {
"minimum": 1.0,
"type": "integer",
"format": "int64",
"default": 1000
},
"example": 50
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaginatedFlowsPublishedResponse"
},
"example": {
"metadata": {
"pageSize": [
25
],
"pageNumber": [
1
],
"totPage": [
3
]
},
"count": [
100
],
"data": [
{
"fdr": [
"2025-01-0188888888888-0000001"
],
"organizationId": [
"77777777777"
],
"revision": [
1
],
"published": [
"2022-03-10T04:15:50.0000000+00:00"
]
}
]
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 400,
"httpStatusDescription": "Bad Request",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"path": "",
"message": ""
}
]
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 404,
"httpStatusDescription": "Not Found",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"message": ""
}
]
}
}
}
},
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"errorId": "50905466-1881-457b-b42f-fb7b2bfb1610",
"httpStatusCode": 500,
"httpStatusDescription": "Internal Server Error",
"appErrorCode": "FDR-0500",
"errors": [
{
"message": "An unexpected error has occurred. Please contact support."
}
]
}
}
}
}
}
}
},
"/psps/{pspId}/published/fdrs/{fdr}/revisions/{revision}/organizations/{organizationId}": {
"get": {
"tags": [
"PSP"
],
"summary": "Get single published flow related to the PSP, searching by name and revision",
"description": "## Description:\nThis API permits to search a single published flow for a specific PSP.\nIn order to do so, it is required to add the following search filters:\n- Creditor institution identifier: for filtering by specific organization\n- PSP identifier: for filtering by flow-related PSP\n- Flow name: for filtering by specific instance of the flow\n- Revision: for filtering by flow revision\n\nThe result will contains a single element because there can be only one flow for each\nunique identifier and revision.
\nBefore executing the query, the search filters are validated against entities configured for\nNodo dei Pagamenti environment, in particular on creditor institution and PSP. Also,\nthe name of the flow is validated against a specific standard format.
\n\nDate-time fields in the response are defined with UTC time-zone. Business-date fields preserve the original calendar day.
\n\n\n## Error codes:\nAPPLICATIVE CODE | HTTP CODE | MESSAGE\n- | - | -\n**FDR-2000** | 400 | PSP with ID [%] is invalid or unknown.\n**FDR-2001** | 400 | PSP with ID [%] is not enabled.\n**FDR-2008** | 400 | Creditor institution with ID [%] is invalid or unknown.\n**FDR-2009** | 400 | Creditor institution with ID [%] is not enabled.\n**FDR-3008** | 400 | Flow identifier [%] contains a date that is not compliant.\n**FDR-3009** | 400 | Flow identifier [%] contains a PSP ID that is not compliant.\n**FDR-3001** | 404 | Flow with ID [%] not found.\n\n\n## API properties:\nPROPERTY | VALUE\n- | -\n***Internal*** | N\n***External*** | Y\n***Synchronous*** | Synchronous\n***Authorization*** | Y (Authorizer)\n***Authentication*** | Y (Subscription Key)\n***TPS*** | 1.0/sec\n***Idempotency*** | Y\n***Stateless*** | Y\n***Read/Write Intensive*** | Read\n***Cacheable*** | Y\n",
"operationId": "IPspsController_getSingleFlowInPublishedStatus",
"parameters": [
{
"name": "fdr",
"in": "path",
"description": "The flow name, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": "2025-01-0188888888888-0001"
},
{
"name": "organizationId",
"in": "path",
"description": "The creditor institution identifier, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": 15376371009
},
{
"name": "pspId",
"in": "path",
"description": "The PSP identifier, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": 88888888888
},
{
"name": "revision",
"in": "path",
"description": "The specific revision of the flow needed",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
},
"example": 1
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SingleFlowResponse"
},
"example": {
"status": "CREATED",
"revision": [
4
],
"created": [
"2022-03-10T04:15:50.0000000+00:00"
],
"updated": [
"2022-03-10T04:15:50.0000000+00:00"
],
"fdr": [
"2025-01-0188888888888-0000001"
],
"fdrDate": [
"2022-03-10T04:15:50.0000000+00:00"
],
"regulation": [
"SEPA - Bonifico X"
],
"regulationDate": "string",
"bicCodePouringBank": [
"UNCRITMMXXX"
],
"sender": {
"type": "LEGAL_PERSON",
"id": [
"SELBIT2B"
],
"pspId": [
"60000000001"
],
"pspName": [
"PSP Name"
],
"pspBrokerId": [
"70000000001"
],
"channelId": [
"80000000001"
],
"password": [
"password"
]
},
"receiver": {
"id": [
"APPBIT2B"
],
"organizationId": [
"20000000001"
],
"organizationName": [
"Comune di Roma"
]
},
"published": [
"2022-03-10T04:15:50.0000000+00:00"
],
"computedTotPayments": [
100
],
"computedSumPayments": [
100.95
],
"totPayments": [
100
],
"sumPayments": [
100.95
]
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 400,
"httpStatusDescription": "Bad Request",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"path": "",
"message": ""
}
]
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 404,
"httpStatusDescription": "Not Found",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"message": ""
}
]
}
}
}
},
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"errorId": "50905466-1881-457b-b42f-fb7b2bfb1610",
"httpStatusCode": 500,
"httpStatusDescription": "Internal Server Error",
"appErrorCode": "FDR-0500",
"errors": [
{
"message": "An unexpected error has occurred. Please contact support."
}
]
}
}
}
}
}
}
},
"/psps/{pspId}/published/fdrs/{fdr}/revisions/{revision}/organizations/{organizationId}/payments": {
"get": {
"tags": [
"PSP"
],
"summary": "Get payments of published flow related to the PSP, searching by name and revision",
"description": "## Description:\nThis API permits to search all the payments of a single published flow for a specific PSP,\nformatted in a paginated view. In order to do so, it is required to add the following search filters:\n- Creditor institution identifier: for filtering by specific organization\n- PSP identifier: for filtering by flow-related PSP\n- Flow name: for filtering by specific instance of the flow\n- Revision: for filtering by flow revision\n\nBefore executing the query, the search filters are validated against entities configured for\nNodo dei Pagamenti environment, in particular on creditor institution and PSP. Also,\nthe name of the flow is validated against a specific standard format.
\nThe result of the query is paginated and contains all the metadata needed for pagination purposes.
\n\nDate-time fields in the response are defined with UTC time-zone. Business-date fields preserve the original calendar day.
\n\n\n## Error codes:\nAPPLICATIVE CODE | HTTP CODE | MESSAGE\n- | - | -\n**FDR-2000** | 400 | PSP with ID [%] is invalid or unknown.\n**FDR-2001** | 400 | PSP with ID [%] is not enabled.\n**FDR-2008** | 400 | Creditor institution with ID [%] is invalid or unknown.\n**FDR-2009** | 400 | Creditor institution with ID [%] is not enabled.\n**FDR-3008** | 400 | Flow identifier [%] contains a date that is not compliant.\n**FDR-3009** | 400 | Flow identifier [%] contains a PSP ID that is not compliant.\n**FDR-3001** | 404 | Flow with ID [%] not found.\n\n\n## API properties:\nPROPERTY | VALUE\n- | -\n***Internal*** | N\n***External*** | Y\n***Synchronous*** | Synchronous\n***Authorization*** | Y (Authorizer)\n***Authentication*** | Y (Subscription Key)\n***TPS*** | 1.0/sec\n***Idempotency*** | Y\n***Stateless*** | Y\n***Read/Write Intensive*** | Read\n***Cacheable*** | Y\n",
"operationId": "IPspsController_getPaymentsForFlowInPublishedStatus",
"parameters": [
{
"name": "fdr",
"in": "path",
"description": "The flow name, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": "2025-01-0188888888888-0001"
},
{
"name": "organizationId",
"in": "path",
"description": "The creditor institution identifier, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": 15376371009
},
{
"name": "pspId",
"in": "path",
"description": "The PSP identifier, used as a search filter",
"required": true,
"schema": {
"type": "string"
},
"example": 88888888888
},
{
"name": "revision",
"in": "path",
"description": "The specific revision of the flow needed",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
},
"example": 1
},
{
"name": "page",
"in": "query",
"description": "The index of the page to be shown in the result",
"schema": {
"minimum": 1.0,
"type": "integer",
"format": "int64",
"default": 1
},
"example": 1
},
{
"name": "size",
"in": "query",
"description": "The number of the elements of the page to be shown in the result",
"schema": {
"minimum": 1.0,
"type": "integer",
"format": "int64",
"default": 1000
},
"example": 50
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaginatedPaymentsResponse"
},
"example": {
"metadata": {
"pageSize": [
25
],
"pageNumber": [
1
],
"totPage": [
3
]
},
"count": [
100
],
"data": [
{
"index": [
1
],
"iuv": [
"17854456582215"
],
"iur": [
"3354426511008"
],
"idTransfer": [
1
],
"pay": [
0.01
],
"payStatus": [
"EXECUTED"
],
"payDate": [
"2022-03-10T04:15:50.0000000+00:00"
]
}
]
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 400,
"httpStatusDescription": "Bad Request",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"path": "",
"message": ""
}
]
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"httpStatusCode": 404,
"httpStatusDescription": "Not Found",
"appErrorCode": "FDR-XXXX",
"errors": [
{
"message": ""
}
]
}
}
}
},
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"errorId": "50905466-1881-457b-b42f-fb7b2bfb1610",
"httpStatusCode": 500,
"httpStatusDescription": "Internal Server Error",
"appErrorCode": "FDR-0500",
"errors": [
{
"message": "An unexpected error has occurred. Please contact support."
}
]
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"AddPaymentRequest": {
"required": [
"payments"
],
"type": "object",
"properties": {
"payments": {
"maxItems": 1000,
"minItems": 1,
"type": "array",
"items": {
"$ref": "#/components/schemas/Payment"
},
"description": "The list of payments to be added on the draft flow. Date-time fields inside each payment are defined with UTC time-zone unless otherwise specified at field level."
}
}
},
"CreateFlowRequest": {
"required": [
"fdr",
"fdrDate",
"sender",
"receiver",
"regulation",
"regulationDate",
"totPayments",
"sumPayments"
],
"type": "object",
"properties": {
"fdr": {
"pattern": "[a-zA-Z0-9\\-_]{1,35}",
"type": "string",
"description": "The value of the flow identifier.
In the XML request for SOAP primitives, this field is mappable with the tag [NodoInviaFlussoRendicontazione.identificativoFlusso].",
"example": [
"2016-08-16pspTest-1178"
]
},
"fdrDate": {
"$ref": "#/components/schemas/Instant"
},
"sender": {
"$ref": "#/components/schemas/Sender"
},
"receiver": {
"$ref": "#/components/schemas/Receiver"
},
"regulation": {
"pattern": "^(.{1,35})$",
"type": "string",
"description": "The description related to the regulation payment related to the flow.
In the XML request for SOAP primitives, this field is mappable with the tag [FlussoRiversamento.identificativoUnivocoRegolamento].",
"example": [
"SEPA - Bonifico X"
]
},
"regulationDate": {
"$ref": "#/components/schemas/LocalDate"
},
"bicCodePouringBank": {
"pattern": "^(.{1,35})$",
"type": "string",
"description": "The BIC code of the bank where the regulation payment related to the flow will be poured.
In the XML request for SOAP primitives, this field is mappable with the tag [FlussoRiversamento.codiceBicBancaDiRiversamento].",
"example": [
"UNCRITMMXXX"
]
},
"totPayments": {
"minimum": 1.0,
"type": "integer",
"description": "The total number of payments to be included in the flow during the flow compilation.
In the XML request for SOAP primitives, this field is mappable with the tag [FlussoRiversamento.numeroTotalePagamenti].",
"format": "int64",
"example": [
1
]
},
"sumPayments": {
"pattern": "^\\d{1,2147483647}[.]\\d{1,2}?$",
"type": "number",
"description": "The total amount of payments to be calculated in the flow during the flow compilation.
In the XML request for SOAP primitives, this field is mappable with the tag [FlussoRiversamento.importoTotalePagamenti].",
"format": "double",
"example": [
0.01
]
}
}
},
"DeletePaymentRequest": {
"required": [
"indexList"
],
"type": "object",
"properties": {
"indexList": {
"maxItems": 1000,
"minItems": 1,
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"description": "The list of payments indexes to be removed on the draft flow"
}
}
},
"ErrorMessage": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "The path reference for the specific error clause in the general response.",
"example": [
"detail.path.if-exist"
]
},
"message": {
"type": "string",
"description": "The descriptive message for the specific error clause in the general response.",
"example": [
"An unexpected error has occurred. Please contact support."
]
}
}
},
"ErrorResponse": {
"type": "object",
"properties": {
"errorId": {
"type": "string",
"description": "The unique identifier that can be used for tracking request and error response.",
"example": [
"50905466-1881-457b-b42f-fb7b2bfb1610"
]
},
"httpStatusCode": {
"type": "integer",
"description": "The HTTP status code related to the error message.",
"format": "int32",
"example": [
500
]
},
"httpStatusDescription": {
"type": "string",
"description": "The descriptive name of the HTTP status code.",
"example": [
"Internal Server Error"
]
},
"appErrorCode": {
"type": "string",
"description": "The operational error code related to the error response",
"example": [
"FDR-0500"
]
},
"errors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ErrorMessage"
},
"description": "The list of specific errors to show for the error response."
}
}
},
"FlowByCICreated": {
"type": "object",
"properties": {
"fdr": {
"type": "string",
"description": "The unique identifier of the flow.",
"example": [
"2025-01-0188888888888-0000001"
]
},
"organizationId": {
"type": "string",
"description": "The domain identifier of the creditor institution related to the flow.",
"example": [
"77777777777"
]
},
"revision": {
"type": "integer",
"description": "The revision (or version) of the flow.",
"format": "int64",
"example": [
1
]
},
"created": {
"$ref": "#/components/schemas/Instant"
}
}
},
"FlowByCIPublished": {
"type": "object",
"properties": {
"fdr": {
"type": "string",
"description": "The unique identifier of the flow.",
"example": [
"2025-01-0188888888888-0000001"
]
},
"organizationId": {
"type": "string",
"description": "The domain identifier of the creditor institution related to the flow.",
"example": [
"77777777777"
]
},
"revision": {
"type": "integer",
"description": "The revision (or version) of the flow.",
"format": "int64",
"example": [
1
]
},
"published": {
"$ref": "#/components/schemas/Instant"
}
}
},
"FlowByPSP": {
"type": "object",
"properties": {
"fdr": {
"type": "string",
"description": "The unique identifier of the flow.",
"example": [
"2025-01-0188888888888-0000001"
]
},
"pspId": {
"type": "string",
"description": "The domain identifier of the PSP related to the flow.",
"example": [
"88888888888"
]
},
"revision": {
"type": "integer",
"description": "The revision (or version) of the flow.",
"format": "int64",
"example": [
1
]
},
"published": {
"$ref": "#/components/schemas/Instant"
},
"flowDate": {
"$ref": "#/components/schemas/Instant"
}
}
},
"FlowBySenderAndReceiver": {
"type": "object",
"properties": {
"pspId": {
"type": "string",
"description": "The domain identifier of the PSP related to the flow.",
"example": [
"88888888888"
]
},
"organizationId": {
"type": "string",
"description": "The domain identifier of the creditor institution related to the flow.",
"example": [
"77777777777"
]
},
"fdr": {
"type": "string",
"description": "The unique identifier of the flow.",
"example": [
"2025-01-0188888888888-0000001"
]
},
"revision": {
"type": "integer",
"description": "The revision (or version) of the flow.",
"format": "int64",
"example": [
1
]
},
"created": {
"$ref": "#/components/schemas/Instant"
}
}
},
"GenericResponse": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "The descriptive information that shows a message related to the executed operation.",
"example": [
"Success"
]
}
}
},
"InfoResponse": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The identificative name of the deployed application",
"example": [
"pagopa-fdr"
]
},
"version": {
"type": "string",
"description": "The current version of the deployed application",
"example": [
"2003-01-02"
]
},
"environment": {
"type": "string",
"description": "The current environment where the application is deployed",
"example": [
"dev"
]
},
"description": {
"type": "string",
"description": "The descriptive information related to the info response",
"example": [
"FDR - Flussi di rendicontazione"
]
}
}
},
"Instant": {
"type": "string",
"format": "date-time",
"example": [
"2022-03-10T04:15:50.0000000+00:00"
]
},
"InternalAddPaymentRequest": {
"required": [
"payments"
],
"type": "object",
"properties": {
"payments": {
"maxItems": 5000,
"minItems": 1,
"type": "array",
"items": {
"$ref": "#/components/schemas/Payment"
},
"description": "The list of payments to be added on the draft flow (internal use). Date-time fields inside each payment are defined with UTC time-zone unless otherwise specified at field level."
}
}
},
"InternalDeletePaymentRequest": {
"required": [
"indexList"
],
"type": "object",
"properties": {
"indexList": {
"maxItems": 5000,
"minItems": 1,
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"description": "The list of payments indexes to be removed on the draft flow"
}
}
},
"LocalDate": {
"type": "string",
"format": "date"
},
"Metadata": {
"type": "object",
"properties": {
"pageSize": {
"type": "integer",
"description": "The size of the current page shown in response",
"format": "int32",
"example": [
25
]
},
"pageNumber": {
"type": "integer",
"description": "The index of the current page shown in response",
"format": "int32",
"example": [
1
]
},
"totPage": {
"type": "integer",
"description": "The total number of the pages that can be retrieved in order to show all elements.",
"format": "int32",
"example": [
3
]
}
}
},
"PaginatedFlowsBySenderAndReceiverResponse": {
"type": "object",
"properties": {
"metadata": {
"$ref": "#/components/schemas/Metadata"
},
"count": {
"type": "integer",
"description": "The number of elements that can be found in this page.",
"format": "int64",
"example": [
100
]
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/FlowBySenderAndReceiver"
},
"description": "The list of flows that are included in this page. Date-time fields inside each item are defined with UTC time-zone."
}
}
},
"PaginatedFlowsCreatedResponse": {
"type": "object",
"properties": {
"metadata": {
"$ref": "#/components/schemas/Metadata"
},
"count": {
"type": "integer",
"description": "The number of elements that can be found in this page.",
"format": "int64",
"example": [
100
]
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/FlowByCICreated"
},
"description": "The list of flows that are included in this page. Date-time fields inside each item are defined with UTC time-zone."
}
}
},
"PaginatedFlowsPublishedResponse": {
"type": "object",
"properties": {
"metadata": {
"$ref": "#/components/schemas/Metadata"
},
"count": {
"type": "integer",
"description": "The number of elements that can be found in this page.",
"format": "int64",
"example": [
100
]
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/FlowByCIPublished"
},
"description": "The list of flows that are included in this page. Date-time fields inside each item are defined with UTC time-zone."
}
}
},
"PaginatedFlowsResponse": {
"type": "object",
"properties": {
"metadata": {
"$ref": "#/components/schemas/Metadata"
},
"count": {
"type": "integer",
"description": "The number of elements that can be found in this page.",
"format": "int64",
"example": [
100
]
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/FlowByPSP"
},
"description": "The list of flows that are included in this page. Date-time fields inside each item are defined with UTC time-zone."
}
}
},
"PaginatedPaymentsResponse": {
"type": "object",
"properties": {
"metadata": {
"$ref": "#/components/schemas/Metadata"
},
"count": {
"type": "integer",
"description": "The number of elements that can be found in this page.",
"format": "int64",
"example": [
100
]
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Payment"
},
"description": "The list of payments that are included in this page. Date-time fields inside each item are defined with UTC time-zone. The original business day is preserved where applicable."
}
}
},
"Payment": {
"required": [
"index",
"iuv",
"iur",
"idTransfer",
"pay",
"payStatus",
"payDate"
],
"type": "object",
"properties": {
"index": {
"minimum": 1.0,
"type": "integer",
"description": "Unique index of the payment in the flow",
"format": "int64",
"example": [
1
]
},
"iuv": {
"pattern": "^(.{1,35})$",
"type": "string",
"description": "The value of the 'Identificativo Univoco Versamento' code related to the payment.
In the XML request for SOAP primitives, this field is mappable with the tag [FlussoRiversamento.datiSingoliPagamenti.identificativoUnivocoVersamento].",
"example": [
"17854456582215"
]
},
"iur": {
"pattern": "^(.{1,35})$",
"type": "string",
"description": "The value of the 'Identificativo Univoco Riscossione' code related to the payment in the flow.
In the XML request for SOAP primitives, this field is mappable with the tag [FlussoRiversamento.datiSingoliPagamenti.identificativoUnivocoRiscossione].",
"example": [
"3354426511008"
]
},
"idTransfer": {
"maximum": 5.0,
"minimum": 1.0,
"type": "integer",
"description": "The value of the transfer identifier related to the payment during the payment process.
In the XML request for SOAP primitives, this field is mappable with the tag [FlussoRiversamento.datiSingoliPagamenti.indiceDatiSingoloPagamento].",
"format": "int64",
"example": [
1
]
},
"pay": {
"pattern": "^\\d{1,2147483647}[.]\\d{1,2}?$",
"type": "number",
"description": "The value of the payment amount in decimal euro.
In the XML request for SOAP primitives, this field is mappable with the tag [FlussoRiversamento.datiSingoliPagamenti.singoloImportoPagato].",
"format": "double",
"example": [
0.01
]
},
"payStatus": {
"enum": [
"EXECUTED",
"STAND_IN",
"STAND_IN_NO_RPT",
"NO_RPT"
],
"type": "string",
"description": "The value of the status of the payment in relation to ist completion.
In the XML request for SOAP primitives, this field is mappable with the tag [FlussoRiversamento.datiSingoliPagamenti.codiceEsitoSingoloPagamento].
The enumeration is mapped with the following values:
- EXECUTED -> 0
- STAND_IN -> 4
- STAND_IN_NO_RPT -> 8
- NO_RPT -> 9
",
"example": [
"EXECUTED"
]
},
"payDate": {
"$ref": "#/components/schemas/Instant"
}
}
},
"Receiver": {
"required": [
"id",
"organizationId",
"organizationName"
],
"type": "object",
"properties": {
"id": {
"pattern": "^(.{1,35})$",
"type": "string",
"description": "The identifier of the Creditor Institution receiver entity.
In the XML request for SOAP primitives, this field is mappable with the tag [FlussoRiversamento.istitutoRicevente.identificativoUnivocoRicevente.codiceIdentificativoUnivoco].",
"example": [
"APPBIT2B"
]
},
"organizationId": {
"pattern": "^(.{1,35})$",
"type": "string",
"description": "The domain identifier of the Creditor Institution receiver entity.
In the XML request for SOAP primitives, this field is mappable with the tag [NodoInviaFlussoRendicontazione.identificativoDominio].",
"example": [
"20000000001"
]
},
"organizationName": {
"pattern": "^(.{1,140})$",
"type": "string",
"description": "The fiscal name of the Creditor Institution receiver entity.
In the XML request for SOAP primitives, this field is mappable with the tag [FlussoRiversamento.istitutoRicevente.denominazioneRicevente].",
"example": [
"Comune di Roma"
]
}
}
},
"ReportingFlowStatusEnum": {
"enum": [
"CREATED",
"INSERTED",
"PUBLISHED"
],
"type": "string"
},
"Sender": {
"required": [
"type",
"id",
"pspId",
"pspName",
"pspBrokerId",
"channelId"
],
"type": "object",
"properties": {
"type": {
"$ref": "#/components/schemas/SenderTypeEnum"
},
"id": {
"pattern": "^(.{1,35})$",
"type": "string",
"description": "The identifier of the PSP sender entity.
In the XML request for SOAP primitives, this field is mappable with the tag [FlussoRiversamento.istitutoMittente.identificativoUnivocoMittente.codiceIdentificativoUnivoco].",
"example": [
"SELBIT2B"
]
},
"pspId": {
"pattern": "^(.{1,35})$",
"type": "string",
"description": "The domain identifier of the PSP sender entity.
In the XML request for SOAP primitives, this field is mappable with the tag [NodoInviaFlussoRendicontazione.identificativoPSP].",
"example": [
"60000000001"
]
},
"pspName": {
"pattern": "^(.{3,70})$",
"type": "string",
"description": "The fiscal name of the PSP sender entity.
In the XML request for SOAP primitives, this field is mappable with the tag [FlussoRiversamento.istitutoMittente.denominazioneMittente].",
"example": [
"PSP Name"
]
},
"pspBrokerId": {
"pattern": "^(.{1,35})$",
"type": "string",
"description": "The domain identifier of the PSP sender entity's Broker.
In the XML request for SOAP primitives, this field is mappable with the tag [NodoInviaFlussoRendicontazione.identificativoIntermediarioPSP].",
"example": [
"70000000001"
]
},
"channelId": {
"pattern": "^(.{1,35})$",
"type": "string",
"description": "The identifier of the PSP sender entity's Channel.
In the XML request for SOAP primitives, this field is mappable with the tag [NodoInviaFlussoRendicontazione.identificativoCanale].",
"example": [
"80000000001"
]
},
"password": {
"pattern": "^(\\w{8,15})$",
"type": "string",
"description": "The password of the PSP sender entity's Channel.
In the XML request for SOAP primitives, this field is mappable with the tag [NodoInviaFlussoRendicontazione.password].",
"example": [
"password"
],
"deprecated": true
}
}
},
"SenderTypeEnum": {
"enum": [
"LEGAL_PERSON",
"ABI_CODE",
"BIC_CODE"
],
"type": "string"
},
"SingleFlowCreatedResponse": {
"type": "object",
"properties": {
"status": {
"$ref": "#/components/schemas/ReportingFlowStatusEnum"
},
"revision": {
"type": "integer",
"description": "The revision (or version) of the flow.",
"format": "int64",
"example": [
4
]
},
"created": {
"$ref": "#/components/schemas/Instant"
},
"updated": {
"$ref": "#/components/schemas/Instant"
},
"fdr": {
"type": "string",
"description": "The unique identifier of the flow.",
"example": [
"2025-01-0188888888888-0000001"
]
},
"fdrDate": {
"$ref": "#/components/schemas/Instant"
},
"regulation": {
"type": "string",
"description": "The description related to the regulation payment related to the flow.",
"example": [
"SEPA - Bonifico X"
]
},
"regulationDate": {
"$ref": "#/components/schemas/LocalDate"
},
"bicCodePouringBank": {
"type": "string",
"description": "The BIC code of the bank where the regulation payment related to the flow will be poured.",
"example": [
"UNCRITMMXXX"
]
},
"sender": {
"$ref": "#/components/schemas/Sender"
},
"receiver": {
"$ref": "#/components/schemas/Receiver"
},
"computedTotPayments": {
"type": "integer",
"description": "The computed total number of payments included in the flow during the compilation.",
"format": "int64",
"example": [
93
]
},
"computedSumPayments": {
"pattern": "^\\d{1,2147483647}[.]\\d{1,2}?$",
"type": "number",
"description": "The computed total amount of payments calculated in the flow during the compilation.",
"format": "double",
"example": [
81.66
]
},
"totPayments": {
"type": "integer",
"description": "The total number of payments to be included in the flow during the flow compilation.",
"format": "int64",
"example": [
100
]
},
"sumPayments": {
"pattern": "^\\d{1,2147483647}[.]\\d{1,2}?$",
"type": "number",
"description": "The total amount of payments to be calculated in the flow during the flow compilation.",
"format": "double",
"example": [
100.95
]
}
}
},
"SingleFlowResponse": {
"type": "object",
"properties": {
"status": {
"$ref": "#/components/schemas/ReportingFlowStatusEnum"
},
"revision": {
"type": "integer",
"description": "The revision (or version) of the flow.",
"format": "int64",
"example": [
4
]
},
"created": {
"$ref": "#/components/schemas/Instant"
},
"updated": {
"$ref": "#/components/schemas/Instant"
},
"fdr": {
"type": "string",
"description": "The unique identifier of the flow.",
"example": [
"2025-01-0188888888888-0000001"
]
},
"fdrDate": {
"$ref": "#/components/schemas/Instant"
},
"regulation": {
"type": "string",
"description": "The description related to the regulation payment related to the flow.",
"example": [
"SEPA - Bonifico X"
]
},
"regulationDate": {
"$ref": "#/components/schemas/LocalDate"
},
"bicCodePouringBank": {
"type": "string",
"description": "The BIC code of the bank where the regulation payment related to the flow will be poured.",
"example": [
"UNCRITMMXXX"
]
},
"sender": {
"$ref": "#/components/schemas/Sender"
},
"receiver": {
"$ref": "#/components/schemas/Receiver"
},
"published": {
"$ref": "#/components/schemas/Instant"
},
"computedTotPayments": {
"type": "integer",
"description": "The computed total number of payments included in the flow during the compilation.",
"format": "int64",
"example": [
100
]
},
"computedSumPayments": {
"pattern": "^\\d{1,2147483647}[.]\\d{1,2}?$",
"type": "number",
"description": "The computed total amount of payments calculated in the flow during the compilation.",
"format": "double",
"example": [
100.95
]
},
"totPayments": {
"type": "integer",
"description": "The total number of payments to be included in the flow during the flow compilation.",
"format": "int64",
"example": [
100
]
},
"sumPayments": {
"pattern": "^\\d{1,2147483647}[.]\\d{1,2}?$",
"type": "number",
"description": "The total amount of payments to be calculated in the flow during the flow compilation.",
"format": "double",
"example": [
100.95
]
}
}
}
},
"securitySchemes": {
"apiKeyHeader": {
"type": "apiKey",
"name": "Ocp-Apim-Subscription-Key",
"in": "header"
},
"apiKeyQuery": {
"type": "apiKey",
"name": "subscription-key",
"in": "query"
}
}
},
"security": [
{
"apiKeyHeader": []
},
{
"apiKeyQuery": []
}
],
"tags": [
{
"name": "PSP",
"description": "APIs for payment service providers, used for creation and inspection of flows"
},
{
"name": "Info",
"description": "Info operations"
},
{
"name": "Organizations",
"description": "APIs for creditor institution, used for inspection of generated flows"
},
{
"name": "Support",
"description": "APIs for technical support, used for troubleshooting operations"
},
{
"name": "Internal Operations",
"description": "APIs for internal operations, used for hidden processes in FdR ecosystem"
}
]
}