banks2ff/gocardless_bank_account_data_api_v2.json
Jacob Kiers 80849a9eef Fix bug in official Gocardless API definition
The official Gocardless API definition indicates that transactions are
directly output to an array.

Instead, they are wrapped in a transactions key.

This made the code fail to retrieve transactions, because they could not
be correctly serialized.

This is now fixed in the API definition, and the API code is also
regenerated.

Signed-off-by: Jacob Kiers <code@kiers.eu>
2024-10-04 20:34:27 +02:00

4655 lines
155 KiB
JSON

{
"openapi": "3.0.3",
"info": {
"title": "GoCardless Bank Account Data API",
"version": "2.0 (v2)"
},
"paths": {
"/api/v2/accounts/{id}/": {
"get": {
"operationId": "retrieve account metadata",
"description": "Access account metadata.\n\nInformation about the account record, such as the processing status and IBAN.\n\nAccount status is recalculated based on the error count in the latest req.",
"parameters": [
{
"in": "path",
"name": "id",
"schema": {
"type": "string"
},
"required": true
}
],
"tags": [
"accounts"
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Account"
}
}
},
"description": "Sample account metadata"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NotFoundError": {
"value": {
"detail": "Not found.",
"summary": "Not found.",
"status_code": 404
},
"summary": "Not found error",
"description": "Not found error"
},
"AccountNotFoundError": {
"value": {
"summary": "Account ID $ACC_ID not found",
"detail": "Please check whether you specified a valid Account ID",
"status_code": 404
},
"summary": "Account not found error",
"description": "Account not found"
}
}
}
},
"description": "Account not found"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NordigenRateLimitExceeded": {
"value": {
"summary": "Rate limit exceeded",
"detail": "The rate limit for this resource is <times>/<time_period>. Please try again in <time_left> seconds",
"status_code": 429
},
"summary": "Nordigen rate limit exceeded",
"description": "Nordigen rate limit exceeded"
}
}
}
},
"description": "Nordigen rate limit exceeded"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidToken": {
"value": {
"summary": "Invalid token",
"detail": "Token is invalid or expired",
"status_code": 401
},
"summary": "Invalid token",
"description": "Token is invalid or expired"
}
}
}
},
"description": "Token is invalid or expired"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"IPAccessDenied": {
"value": {
"summary": "IP address access denied",
"detail": "Your IP $IP_ADDRESS isn't whitelisted to perform this action",
"status_code": 403
},
"summary": "IP Access denied",
"description": "IP address not whitelisted"
}
}
}
},
"description": "IP address not whitelisted"
}
}
}
},
"/api/v2/accounts/{id}/balances/": {
"get": {
"operationId": "retrieve account balances",
"description": "Access account balances.\n\nBalances will be returned in Berlin Group PSD2 format.",
"parameters": [
{
"in": "path",
"name": "id",
"schema": {
"type": "string"
},
"required": true
}
],
"tags": [
"accounts"
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AccountBalance"
},
"examples": {
"RetrieveAccountBalances": {
"value": {
"balances": [
{
"balanceAmount": {
"amount": "657.49",
"currency": "string"
},
"balanceType": "string",
"referenceDate": "2021-11-22"
},
{
"balanceAmount": {
"amount": "185.67",
"currency": "string"
},
"balanceType": "string",
"referenceDate": "2021-11-19"
}
]
},
"summary": "Account balances",
"description": "Sample account balances"
}
}
}
},
"description": "Sample account balances"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NotFoundError": {
"value": {
"detail": "Not found.",
"summary": "Not found.",
"status_code": 404
},
"summary": "Not found error",
"description": "Not found error"
},
"AccountNotFoundError": {
"value": {
"summary": "Account ID $ACC_ID not found",
"detail": "Please check whether you specified a valid Account ID",
"status_code": 404
},
"summary": "Account not found error",
"description": "Account not found"
}
}
}
},
"description": "Account not found"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NordigenRateLimitExceeded": {
"value": {
"summary": "Rate limit exceeded",
"detail": "The rate limit for this resource is <times>/<time_period>. Please try again in <time_left> seconds",
"status_code": 429
},
"summary": "Nordigen rate limit exceeded",
"description": "Nordigen rate limit exceeded"
},
"RateLimitError": {
"value": {
"summary": "Couldn't update account balances",
"detail": "Daily request limit set by the Institution has been exceeded.",
"type": "RateLimitError",
"status_code": 429
},
"summary": "Rate Limit Error",
"description": "RateLimitError"
}
}
}
},
"description": "RateLimitError"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidToken": {
"value": {
"summary": "Invalid token",
"detail": "Token is invalid or expired",
"status_code": 401
},
"summary": "Invalid token",
"description": "Token is invalid or expired"
},
"AccessExpiredError": {
"value": {
"summary": "Couldn't update account balances",
"detail": "Access has expired or it has been revoked. To restore access reconnect the account.",
"type": "AccessExpiredError",
"status_code": 401
},
"summary": "Access Expired Error",
"description": "AccessExpiredError"
},
"AccountInactiveError": {
"value": {
"summary": "Couldn't update account balances",
"detail": "Account has been deactivated or it no longer exists.",
"type": "AccountInactiveError",
"status_code": 401
},
"summary": "Account Inactive Error",
"description": "AccountInactiveError"
}
}
}
},
"description": "AccountInactiveError"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"IPAccessDenied": {
"value": {
"summary": "IP address access denied",
"detail": "Your IP $IP_ADDRESS isn't whitelisted to perform this action",
"status_code": 403
},
"summary": "IP Access denied",
"description": "IP address not whitelisted"
},
"AccountEUAScopeError": {
"value": {
"summary": "End User Agreement (EUA) access scope error",
"detail": "EUA doesn't allow access to account balances. Check EUA access scope. Or create new EUA with correct access scope",
"status_code": 403
},
"summary": "Account EUA scope error",
"description": "EUA doesn't allow access to account balances."
},
"AccountValidEUAError": {
"value": {
"summary": "No valid End User Agreement",
"detail": "Account exists but there is no valid End User Agreement permitting you to access it",
"status_code": 403
},
"summary": "Account valid EUA error",
"description": "Account has no valid End User Agreement"
},
"AccountAccessForbidden": {
"value": {
"summary": "Couldn't update account balances",
"detail": "Access to account is forbidden. The user might not have the necessary permissions.",
"type": "AccountAccessForbidden",
"status_code": 403
},
"summary": "Account Access Forbidden",
"description": "AccountAccessForbidden"
}
}
}
},
"description": "AccountAccessForbidden"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidID": {
"value": {
"summary": "Invalid Account ID",
"detail": "$ACCOUNT_ID is not a valid Account UUID. ",
"status_code": 400
},
"summary": "Invalid ID",
"description": "Invalid Account ID"
}
}
}
},
"description": "Invalid Account ID"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"UnknownRequestError": {
"value": {
"summary": "Couldn't update account balances",
"detail": "Request to Institution returned an error",
"type": "UnknownRequestError",
"status_code": 500
},
"summary": "Unknown Request Error",
"description": "Couldn't update account balances"
}
}
}
},
"description": "Couldn't update account balances"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"AccountSuspendedError": {
"value": {
"summary": "Account suspended",
"detail": "This account or its requisition was suspended due to numerous errors that occurred while accessing it.",
"status_code": 409
},
"summary": "Account suspended error",
"description": "Account or its requisition suspended"
},
"AccountStateError": {
"value": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"created": "2024-10-04 17:15:14.926423+00:00",
"last_accessed": "2024-10-04 17:15:14.926442+00:00",
"iban": "string",
"aspsp_identifier": "string",
"status": "ERROR"
},
"summary": "Account state error",
"description": "Account state does not support this operation"
}
}
}
},
"description": "Account state does not support this operation"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"ServiceError": {
"value": {
"summary": "Couldn't update account balances",
"detail": "Institution service unavailable",
"type": "ServiceError",
"status_code": 503
},
"summary": "Service Error",
"description": "ServiceError"
},
"ConnectionError": {
"value": {
"summary": "Couldn't update account balances",
"detail": "Couldn't connect to Institution",
"type": "ConnectionError",
"status_code": 503
},
"summary": "Connection Error",
"description": "ConnectionError"
}
}
}
},
"description": "ConnectionError"
}
}
}
},
"/api/v2/accounts/{id}/details/": {
"get": {
"operationId": "retrieve account details",
"description": "Access account details.\n\nAccount details will be returned in Berlin Group PSD2 format.",
"parameters": [
{
"in": "path",
"name": "id",
"schema": {
"type": "string"
},
"required": true
}
],
"tags": [
"accounts"
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AccountDetail"
},
"examples": {
"RetrieveAccountDetails": {
"value": {
"account": {
"resourceId": "string",
"iban": "string",
"currency": "string",
"ownerName": "string",
"name": "string",
"product": "string",
"cashAccountType": "string"
}
},
"summary": "Sample account details",
"description": "Sample account details"
}
}
}
},
"description": "Sample account details"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NotFoundError": {
"value": {
"detail": "Not found.",
"summary": "Not found.",
"status_code": 404
},
"summary": "Not found error",
"description": "Not found error"
},
"AccountNotFoundError": {
"value": {
"summary": "Account ID $ACC_ID not found",
"detail": "Please check whether you specified a valid Account ID",
"status_code": 404
},
"summary": "Account not found error",
"description": "Account not found"
}
}
}
},
"description": "Account not found"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NordigenRateLimitExceeded": {
"value": {
"summary": "Rate limit exceeded",
"detail": "The rate limit for this resource is <times>/<time_period>. Please try again in <time_left> seconds",
"status_code": 429
},
"summary": "Nordigen rate limit exceeded",
"description": "Nordigen rate limit exceeded"
},
"RateLimitError": {
"value": {
"summary": "Couldn't update account details",
"detail": "Daily request limit set by the Institution has been exceeded.",
"type": "RateLimitError",
"status_code": 429
},
"summary": "Rate Limit Error",
"description": "RateLimitError"
}
}
}
},
"description": "RateLimitError"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidToken": {
"value": {
"summary": "Invalid token",
"detail": "Token is invalid or expired",
"status_code": 401
},
"summary": "Invalid token",
"description": "Token is invalid or expired"
},
"AccessExpiredError": {
"value": {
"summary": "Couldn't update account details",
"detail": "Access has expired or it has been revoked. To restore access reconnect the account.",
"type": "AccessExpiredError",
"status_code": 401
},
"summary": "Access Expired Error",
"description": "AccessExpiredError"
},
"AccountInactiveError": {
"value": {
"summary": "Couldn't update account details",
"detail": "Account has been deactivated or it no longer exists.",
"type": "AccountInactiveError",
"status_code": 401
},
"summary": "Account Inactive Error",
"description": "AccountInactiveError"
}
}
}
},
"description": "AccountInactiveError"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"IPAccessDenied": {
"value": {
"summary": "IP address access denied",
"detail": "Your IP $IP_ADDRESS isn't whitelisted to perform this action",
"status_code": 403
},
"summary": "IP Access denied",
"description": "IP address not whitelisted"
},
"AccountEUAScopeError": {
"value": {
"summary": "End User Agreement (EUA) access scope error",
"detail": "EUA doesn't allow access to account details. Check EUA access scope. Or create new EUA with correct access scope",
"status_code": 403
},
"summary": "Account EUA scope error",
"description": "EUA doesn't allow access to account details."
},
"AccountValidEUAError": {
"value": {
"summary": "No valid End User Agreement",
"detail": "Account exists but there is no valid End User Agreement permitting you to access it",
"status_code": 403
},
"summary": "Account valid EUA error",
"description": "Account has no valid End User Agreement"
},
"AccountAccessForbidden": {
"value": {
"summary": "Couldn't update account details",
"detail": "Access to account is forbidden. The user might not have the necessary permissions.",
"type": "AccountAccessForbidden",
"status_code": 403
},
"summary": "Account Access Forbidden",
"description": "AccountAccessForbidden"
}
}
}
},
"description": "AccountAccessForbidden"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidID": {
"value": {
"summary": "Invalid Account ID",
"detail": "$ACCOUNT_ID is not a valid Account UUID. ",
"status_code": 400
},
"summary": "Invalid ID",
"description": "Invalid Account ID"
}
}
}
},
"description": "Invalid Account ID"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"UnknownRequestError": {
"value": {
"summary": "Couldn't update account details",
"detail": "Request to Institution returned an error",
"type": "UnknownRequestError",
"status_code": 500
},
"summary": "Unknown Request Error",
"description": "Couldn't update account details"
}
}
}
},
"description": "Couldn't update account details"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"AccountSuspendedError": {
"value": {
"summary": "Account suspended",
"detail": "This account or its requisition was suspended due to numerous errors that occurred while accessing it.",
"status_code": 409
},
"summary": "Account suspended error",
"description": "Account or its requisition suspended"
},
"AccountStateError": {
"value": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"created": "2024-10-04 17:15:14.926423+00:00",
"last_accessed": "2024-10-04 17:15:14.926442+00:00",
"iban": "string",
"aspsp_identifier": "string",
"status": "ERROR"
},
"summary": "Account state error",
"description": "Account state does not support this operation"
}
}
}
},
"description": "Account state does not support this operation"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"ServiceError": {
"value": {
"summary": "Couldn't update account details",
"detail": "Institution service unavailable",
"type": "ServiceError",
"status_code": 503
},
"summary": "Service Error",
"description": "ServiceError"
},
"ConnectionError": {
"value": {
"summary": "Couldn't update account details",
"detail": "Couldn't connect to Institution",
"type": "ConnectionError",
"status_code": 503
},
"summary": "Connection Error",
"description": "ConnectionError"
}
}
}
},
"description": "ConnectionError"
}
}
}
},
"/api/v2/accounts/{id}/transactions/": {
"get": {
"operationId": "retrieve account transactions",
"description": "Access account transactions.\n\nTransactions will be returned in Berlin Group PSD2 format.",
"parameters": [
{
"in": "query",
"name": "date_from",
"schema": {
"type": "string",
"format": "date"
},
"examples": {
"2024-07-06": {
"value": "2024-07-06",
"summary": "2024-07-06",
"description": "ISO 8601 format date"
}
}
},
{
"in": "query",
"name": "date_to",
"schema": {
"type": "string",
"format": "date"
},
"examples": {
"2024-10-04": {
"value": "2024-10-04",
"summary": "2024-10-04",
"description": "ISO 8601 format date"
}
}
},
{
"in": "path",
"name": "id",
"schema": {
"type": "string"
},
"required": true
}
],
"tags": [
"accounts"
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BankTransactions"
},
"examples": {
"RetrieveAccountTransactions": {
"value": {
"transactions": {
"booked": [
{
"transactionId": "string",
"debtorName": "string",
"debtorAccount": {
"iban": "string"
},
"transactionAmount": {
"currency": "string",
"amount": "328.18"
},
"bankTransactionCode": "string",
"bookingDate": "date",
"valueDate": "date",
"remittanceInformationUnstructured": "string"
},
{
"transactionId": "string",
"transactionAmount": {
"currency": "string",
"amount": "947.26"
},
"bankTransactionCode": "string",
"bookingDate": "date",
"valueDate": "date",
"remittanceInformationUnstructured": "string"
}
],
"pending": [
{
"transactionAmount": {
"currency": "string",
"amount": "99.20"
},
"valueDate": "date",
"remittanceInformationUnstructured": "string"
}
]
}
},
"summary": "Account transactions",
"description": "Sample account transactions"
}
}
}
},
"description": "Sample account transactions"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NotFoundError": {
"value": {
"detail": "Not found.",
"summary": "Not found.",
"status_code": 404
},
"summary": "Not found error",
"description": "Not found error"
},
"AccountNotFoundError": {
"value": {
"summary": "Account ID $ACC_ID not found",
"detail": "Please check whether you specified a valid Account ID",
"status_code": 404
},
"summary": "Account not found error",
"description": "Account not found"
}
}
}
},
"description": "Account not found"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NordigenRateLimitExceeded": {
"value": {
"summary": "Rate limit exceeded",
"detail": "The rate limit for this resource is <times>/<time_period>. Please try again in <time_left> seconds",
"status_code": 429
},
"summary": "Nordigen rate limit exceeded",
"description": "Nordigen rate limit exceeded"
},
"RateLimitError": {
"value": {
"summary": "Couldn't update account transactions",
"detail": "Daily request limit set by the Institution has been exceeded.",
"type": "RateLimitError",
"status_code": 429
},
"summary": "Rate Limit Error",
"description": "RateLimitError"
}
}
}
},
"description": "RateLimitError"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidToken": {
"value": {
"summary": "Invalid token",
"detail": "Token is invalid or expired",
"status_code": 401
},
"summary": "Invalid token",
"description": "Token is invalid or expired"
},
"AccessExpiredError": {
"value": {
"summary": "Couldn't update account transactions",
"detail": "Access has expired or it has been revoked. To restore access reconnect the account.",
"type": "AccessExpiredError",
"status_code": 401
},
"summary": "Access Expired Error",
"description": "AccessExpiredError"
},
"AccountInactiveError": {
"value": {
"summary": "Couldn't update account transactions",
"detail": "Account has been deactivated or it no longer exists.",
"type": "AccountInactiveError",
"status_code": 401
},
"summary": "Account Inactive Error",
"description": "AccountInactiveError"
}
}
}
},
"description": "AccountInactiveError"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"IPAccessDenied": {
"value": {
"summary": "IP address access denied",
"detail": "Your IP $IP_ADDRESS isn't whitelisted to perform this action",
"status_code": 403
},
"summary": "IP Access denied",
"description": "IP address not whitelisted"
},
"AccountEUAScopeError": {
"value": {
"summary": "End User Agreement (EUA) access scope error",
"detail": "EUA doesn't allow access to account transactions. Check EUA access scope. Or create new EUA with correct access scope",
"status_code": 403
},
"summary": "Account EUA scope error",
"description": "EUA doesn't allow access to account transactions."
},
"AccountValidEUAError": {
"value": {
"summary": "No valid End User Agreement",
"detail": "Account exists but there is no valid End User Agreement permitting you to access it",
"status_code": 403
},
"summary": "Account valid EUA error",
"description": "Account has no valid End User Agreement"
},
"AccountAccessForbidden": {
"value": {
"summary": "Couldn't update account transactions",
"detail": "Access to account is forbidden. The user might not have the necessary permissions.",
"type": "AccountAccessForbidden",
"status_code": 403
},
"summary": "Account Access Forbidden",
"description": "AccountAccessForbidden"
}
}
}
},
"description": "AccountAccessForbidden"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidID": {
"value": {
"summary": "Invalid Account ID",
"detail": "$ACCOUNT_ID is not a valid Account UUID. ",
"status_code": 400
},
"summary": "Invalid ID",
"description": "Invalid Account ID"
},
"DateRangeError": {
"value": {
"summary": "Incorrect date range",
"detail": "Starting date '2024-10-14' is greater than end date '2024-10-04'. When specifying date range, starting date must precede the end date",
"status_code": 400
},
"summary": "Date range error",
"description": "Incorrect date range in query parameters"
}
}
}
},
"description": "Incorrect date range in query parameters"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"UnknownRequestError": {
"value": {
"summary": "Couldn't update account transactions",
"detail": "Request to Institution returned an error",
"type": "UnknownRequestError",
"status_code": 500
},
"summary": "Unknown Request Error",
"description": "Couldn't update account transactions"
}
}
}
},
"description": "Couldn't update account transactions"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"AccountSuspendedError": {
"value": {
"summary": "Account suspended",
"detail": "This account or its requisition was suspended due to numerous errors that occurred while accessing it.",
"status_code": 409
},
"summary": "Account suspended error",
"description": "Account or its requisition suspended"
},
"AccountStateError": {
"value": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"created": "2024-10-04 17:15:14.926423+00:00",
"last_accessed": "2024-10-04 17:15:14.926442+00:00",
"iban": "string",
"aspsp_identifier": "string",
"status": "ERROR"
},
"summary": "Account state error",
"description": "Account state does not support this operation"
}
}
}
},
"description": "Account state does not support this operation"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"ServiceError": {
"value": {
"summary": "Couldn't update account transactions",
"detail": "Institution service unavailable",
"type": "ServiceError",
"status_code": 503
},
"summary": "Service Error",
"description": "ServiceError"
},
"ConnectionError": {
"value": {
"summary": "Couldn't update account transactions",
"detail": "Couldn't connect to Institution",
"type": "ConnectionError",
"status_code": 503
},
"summary": "Connection Error",
"description": "ConnectionError"
}
}
}
},
"description": "ConnectionError"
}
}
}
},
"/api/v2/agreements/enduser/": {
"get": {
"operationId": "retrieve all EUAs for an end user",
"description": "API endpoints related to end-user agreements.",
"parameters": [
{
"name": "limit",
"required": false,
"in": "query",
"description": "Number of results to return per page.",
"schema": {
"type": "integer",
"default": 100,
"minimum": 1
}
},
{
"name": "offset",
"required": false,
"in": "query",
"description": "The initial zero-based index from which to return the results.",
"schema": {
"type": "integer",
"default": 0,
"minimum": 0
}
}
],
"tags": [
"agreements"
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaginatedEndUserAgreementList"
}
}
},
"description": "Retrieve all end user agreements"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NotFoundError": {
"value": {
"detail": "Not found.",
"summary": "Not found.",
"status_code": 404
},
"summary": "Not found error",
"description": "Not found error"
}
}
}
},
"description": "Not found error"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NordigenRateLimitExceeded": {
"value": {
"summary": "Rate limit exceeded",
"detail": "The rate limit for this resource is <times>/<time_period>. Please try again in <time_left> seconds",
"status_code": 429
},
"summary": "Nordigen rate limit exceeded",
"description": "Nordigen rate limit exceeded"
}
}
}
},
"description": "Nordigen rate limit exceeded"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidToken": {
"value": {
"summary": "Invalid token",
"detail": "Token is invalid or expired",
"status_code": 401
},
"summary": "Invalid token",
"description": "Token is invalid or expired"
}
}
}
},
"description": "Token is invalid or expired"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"IPAccessDenied": {
"value": {
"summary": "IP address access denied",
"detail": "Your IP $IP_ADDRESS isn't whitelisted to perform this action",
"status_code": 403
},
"summary": "IP Access denied",
"description": "IP address not whitelisted"
}
}
}
},
"description": "IP address not whitelisted"
}
}
},
"post": {
"operationId": "create EUA",
"description": "API endpoints related to end-user agreements.",
"tags": [
"agreements"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EndUserAgreementRequest"
}
},
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/EndUserAgreementRequest"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/EndUserAgreementRequest"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EndUserAgreement"
}
}
},
"description": "Create enduser agreement"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InstitutionFieldErrors": {
"value": {
"institution_id": {
"summary": "Unknown Institution ID $INSTITUTION_ID",
"detail": "Get Institution IDs from /institutions/?country={$COUNTRY_CODE}"
},
"status_code": 400
},
"summary": "Institution field errors",
"description": "Errors related to 'institution' field."
},
"AccessScopeFieldErrors": {
"value": {
"access_scope": [
{
"summary": "Unknown value '$SCOPE' in access_scope",
"detail": "Choose one or several from ['balances', 'details', 'transactions']"
},
{
"summary": "Institution access scope dependencies error",
"detail": "For this institution the following scopes are required together: ['balances', 'details']"
},
{
"summary": "Institution access scope dependencies error",
"detail": "The following scopes are mandatory for this institution: ['transactions']"
},
{
"summary": "Unsupported access scope selected.",
"detail": "The access scopes supported by the institution are ['transactions']. The following scopes are not supported: ['balances', 'details']"
},
{
"summary": "Field 'access_scope' may not be an empty list.",
"detail": "Please choose one or several of ['balances', 'details', 'transactions']."
}
],
"status_code": 400
},
"summary": "Access scope field errors",
"description": "Errors related to 'access_scope' field."
},
"MaxHistoricalDaysFieldErrors": {
"value": {
"max_historical_days": [
{
"summary": "Incorrect max_historical_days",
"detail": "max_historical_days must be > 0 and <= N26_NTSBDEB1 transaction_total_days (90)"
}
],
"status_code": 400
},
"summary": "Max historical days field errors",
"description": "Errors related to 'max_historical_days' field."
},
"AccessValidForDaysFieldErrors": {
"value": {
"access_valid_for_days": [
{
"summary": "Incorrect access_valid_for_days",
"detail": "access_valid_for_days must be > 0 and <= 180"
}
],
"status_code": 400
},
"summary": "Access valid for days field errors",
"description": "Errors related to 'access_valid_for_days' field."
},
"AgreementFieldErrors": {
"value": {
"agreement": {
"summary": "Incorrect Institution ID $INSTITUTION_ID",
"detail": "Provided Institution ID: '$INSTITUTION_ID' for requisition does not match EUA institution ID '$EUA_INSTITUTION_ID'. Please provide correct institution ID: '$EUA_INSTITUTION_ID'"
},
"status_code": 400
},
"summary": "Agreement field errors",
"description": "Errors related to 'agreement' field."
}
}
}
},
"description": "Errors related to 'agreement' field."
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NordigenRateLimitExceeded": {
"value": {
"summary": "Rate limit exceeded",
"detail": "The rate limit for this resource is <times>/<time_period>. Please try again in <time_left> seconds",
"status_code": 429
},
"summary": "Nordigen rate limit exceeded",
"description": "Nordigen rate limit exceeded"
}
}
}
},
"description": "Nordigen rate limit exceeded"
},
"402": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"PaymentRequired": {
"value": {
"summary": "Payment Required",
"detail": "Free usage limit exceeded",
"status_code": 402
},
"summary": "Payment Required",
"description": "Free usage limit exceeded"
}
}
}
},
"description": "Free usage limit exceeded"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidToken": {
"value": {
"summary": "Invalid token",
"detail": "Token is invalid or expired",
"status_code": 401
},
"summary": "Invalid token",
"description": "Token is invalid or expired"
}
}
}
},
"description": "Token is invalid or expired"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"IPAccessDenied": {
"value": {
"summary": "IP address access denied",
"detail": "Your IP $IP_ADDRESS isn't whitelisted to perform this action",
"status_code": 403
},
"summary": "IP Access denied",
"description": "IP address not whitelisted"
}
}
}
},
"description": "IP address not whitelisted"
}
}
}
},
"/api/v2/agreements/enduser/{id}/": {
"get": {
"operationId": "retrieve EUA by id",
"description": "Retrieve end user agreement by ID",
"parameters": [
{
"in": "path",
"name": "id",
"schema": {
"type": "string",
"format": "uuid"
},
"description": "A UUID string identifying this end user agreement.",
"required": true
}
],
"tags": [
"agreements"
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EndUserAgreement"
}
}
},
"description": "Retrieve end user agreement by ID"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NotFoundError": {
"value": {
"detail": "Not found.",
"summary": "Not found.",
"status_code": 404
},
"summary": "Not found error",
"description": "Not found error"
}
}
}
},
"description": "Not found error"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidID": {
"value": {
"summary": "Invalid ID",
"detail": "272785d5-de45-4efb-aa1a-f8157ffa94 is not a valid UUID.",
"status_code": 400
},
"summary": "Invalid ID",
"description": "Invalid ID"
}
}
}
},
"description": "Invalid ID"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NordigenRateLimitExceeded": {
"value": {
"summary": "Rate limit exceeded",
"detail": "The rate limit for this resource is <times>/<time_period>. Please try again in <time_left> seconds",
"status_code": 429
},
"summary": "Nordigen rate limit exceeded",
"description": "Nordigen rate limit exceeded"
}
}
}
},
"description": "Nordigen rate limit exceeded"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidToken": {
"value": {
"summary": "Invalid token",
"detail": "Token is invalid or expired",
"status_code": 401
},
"summary": "Invalid token",
"description": "Token is invalid or expired"
}
}
}
},
"description": "Token is invalid or expired"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"IPAccessDenied": {
"value": {
"summary": "IP address access denied",
"detail": "Your IP $IP_ADDRESS isn't whitelisted to perform this action",
"status_code": 403
},
"summary": "IP Access denied",
"description": "IP address not whitelisted"
}
}
}
},
"description": "IP address not whitelisted"
}
}
},
"delete": {
"operationId": "delete EUA by id",
"description": "Delete an end user agreement",
"parameters": [
{
"in": "path",
"name": "id",
"schema": {
"type": "string",
"format": "uuid"
},
"description": "A UUID string identifying this end user agreement.",
"required": true
}
],
"tags": [
"agreements"
],
"responses": {
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"CannotDeleteEUA": {
"value": {
"summary": "Cannot delete End User Agreement",
"detail": "Cannot delete accepted End User Agreement: $EUA_ID. Only non accepted agreements can be deleted",
"status_code": 400
},
"summary": "Cannot delete EUA",
"description": "Cannot delete End User Agreement"
},
"InvalidID": {
"value": {
"summary": "Invalid ID",
"detail": "272785d5-de45-4efb-aa1a-f8157ffa94 is not a valid UUID.",
"status_code": 400
},
"summary": "Invalid ID",
"description": "Invalid ID"
}
}
}
},
"description": "Invalid ID"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NotFoundError": {
"value": {
"detail": "Not found.",
"summary": "Not found.",
"status_code": 404
},
"summary": "Not found error",
"description": "Not found error"
}
}
}
},
"description": "Not found error"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NordigenRateLimitExceeded": {
"value": {
"summary": "Rate limit exceeded",
"detail": "The rate limit for this resource is <times>/<time_period>. Please try again in <time_left> seconds",
"status_code": 429
},
"summary": "Nordigen rate limit exceeded",
"description": "Nordigen rate limit exceeded"
}
}
}
},
"description": "Nordigen rate limit exceeded"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidToken": {
"value": {
"summary": "Invalid token",
"detail": "Token is invalid or expired",
"status_code": 401
},
"summary": "Invalid token",
"description": "Token is invalid or expired"
}
}
}
},
"description": "Token is invalid or expired"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"IPAccessDenied": {
"value": {
"summary": "IP address access denied",
"detail": "Your IP $IP_ADDRESS isn't whitelisted to perform this action",
"status_code": 403
},
"summary": "IP Access denied",
"description": "IP address not whitelisted"
}
}
}
},
"description": "IP address not whitelisted"
}
}
}
},
"/api/v2/agreements/enduser/{id}/accept/": {
"put": {
"operationId": "accept EUA",
"description": "Accept an end-user agreement via the API",
"parameters": [
{
"in": "path",
"name": "id",
"schema": {
"type": "string",
"format": "uuid"
},
"description": "A UUID string identifying this end user agreement.",
"required": true
}
],
"tags": [
"agreements"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EnduserAcceptanceDetailsRequest"
}
},
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/EnduserAcceptanceDetailsRequest"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/EnduserAcceptanceDetailsRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EndUserAgreement"
}
}
},
"description": "Accept end user agreement"
},
"405": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"EUAAccepted": {
"value": {
"summary": "EUA cannot be accepted more than once",
"detail": "End User Agreements cannot be accepted more than once",
"status_code": 405
},
"summary": "EUA accepted",
"description": "End User Agreements cannot be accepted more than once"
}
}
}
},
"description": "End User Agreements cannot be accepted more than once"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InsufficientPermissions": {
"value": {
"summary": "Insufficient permissions",
"detail": "Your company doesn't have permission to accept EUA. You'll have to use our default form for this action.",
"status_code": 403
},
"summary": "Insufficient permissions",
"description": "Company doesn't have permission to accept EUA"
},
"IPAccessDenied": {
"value": {
"summary": "IP address access denied",
"detail": "Your IP $IP_ADDRESS isn't whitelisted to perform this action",
"status_code": 403
},
"summary": "IP Access denied",
"description": "IP address not whitelisted"
}
}
}
},
"description": "IP address not whitelisted"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidID": {
"value": {
"summary": "Invalid ID",
"detail": "272785d5-de45-4efb-aa1a-f8157ffa94 is not a valid UUID.",
"status_code": 400
},
"summary": "Invalid ID",
"description": "Invalid ID"
}
}
}
},
"description": "Invalid ID"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NotFoundError": {
"value": {
"detail": "Not found.",
"summary": "Not found.",
"status_code": 404
},
"summary": "Not found error",
"description": "Not found error"
}
}
}
},
"description": "Not found error"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NordigenRateLimitExceeded": {
"value": {
"summary": "Rate limit exceeded",
"detail": "The rate limit for this resource is <times>/<time_period>. Please try again in <time_left> seconds",
"status_code": 429
},
"summary": "Nordigen rate limit exceeded",
"description": "Nordigen rate limit exceeded"
}
}
}
},
"description": "Nordigen rate limit exceeded"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidToken": {
"value": {
"summary": "Invalid token",
"detail": "Token is invalid or expired",
"status_code": 401
},
"summary": "Invalid token",
"description": "Token is invalid or expired"
}
}
}
},
"description": "Token is invalid or expired"
}
}
}
},
"/api/v2/institutions/": {
"get": {
"operationId": "retrieve all supported Institutions in a given country",
"description": "List all available institutions",
"parameters": [
{
"in": "query",
"name": "access_scopes_supported",
"schema": {
"type": "string"
},
"description": "Boolean value, indicating if access scopes are supported",
"examples": {
"AccessScopesSupported": {
"value": "false",
"summary": "access_scopes_supported"
}
}
},
{
"in": "query",
"name": "account_selection_supported",
"schema": {
"type": "string"
},
"description": "Boolean value, indicating if account selection is supported",
"examples": {
"AccountSelectionSupported": {
"value": "false",
"summary": "account_selection_supported"
}
}
},
{
"in": "query",
"name": "business_accounts_supported",
"schema": {
"type": "string"
},
"description": "Boolean value, indicating if business accounts are supported",
"examples": {
"BusinessAccountsSupported": {
"value": "false",
"summary": "business_accounts_supported"
}
}
},
{
"in": "query",
"name": "card_accounts_supported",
"schema": {
"type": "string"
},
"description": "Boolean value, indicating if card accounts are supported",
"examples": {
"CardAccountsSupported": {
"value": "false",
"summary": "card_accounts_supported"
}
}
},
{
"in": "query",
"name": "corporate_accounts_supported",
"schema": {
"type": "string"
},
"description": "Boolean value, indicating if corporate accounts are supported",
"examples": {
"CorporateAccountsSupported": {
"value": "false",
"summary": "corporate_accounts_supported"
}
}
},
{
"in": "query",
"name": "country",
"schema": {
"type": "string"
},
"description": "ISO 3166 two-character country code",
"examples": {
"Austria": {
"value": "AT",
"summary": "Austria"
},
"Belgium": {
"value": "BE",
"summary": "Belgium"
},
"Bulgaria": {
"value": "BG",
"summary": "Bulgaria"
},
"Croatia": {
"value": "HR",
"summary": "Croatia"
},
"Cyprus": {
"value": "CY",
"summary": "Cyprus"
},
"Czechia": {
"value": "CZ",
"summary": "Czechia"
},
"Denmark": {
"value": "DK",
"summary": "Denmark"
},
"Estonia": {
"value": "EE",
"summary": "Estonia"
},
"Finland": {
"value": "FI",
"summary": "Finland"
},
"France": {
"value": "FR",
"summary": "France"
},
"Germany": {
"value": "DE",
"summary": "Germany"
},
"Greece": {
"value": "GR",
"summary": "Greece"
},
"Hungary": {
"value": "HU",
"summary": "Hungary"
},
"Iceland": {
"value": "IS",
"summary": "Iceland"
},
"Ireland": {
"value": "IE",
"summary": "Ireland"
},
"Italy": {
"value": "IT",
"summary": "Italy"
},
"Latvia": {
"value": "LV",
"summary": "Latvia"
},
"Liechtenstein": {
"value": "LI",
"summary": "Liechtenstein"
},
"Lithuania": {
"value": "LT",
"summary": "Lithuania"
},
"Luxembourg": {
"value": "LU",
"summary": "Luxembourg"
},
"Malta": {
"value": "MT",
"summary": "Malta"
},
"Netherlands": {
"value": "NL",
"summary": "Netherlands"
},
"Norway": {
"value": "NO",
"summary": "Norway"
},
"Poland": {
"value": "PL",
"summary": "Poland"
},
"Portugal": {
"value": "PT",
"summary": "Portugal"
},
"Romania": {
"value": "RO",
"summary": "Romania"
},
"Slovakia": {
"value": "SK",
"summary": "Slovakia"
},
"Slovenia": {
"value": "SI",
"summary": "Slovenia"
},
"Spain": {
"value": "ES",
"summary": "Spain"
},
"Sweden": {
"value": "SE",
"summary": "Sweden"
},
"UnitedKingdom": {
"value": "GB",
"summary": "United Kingdom"
}
}
},
{
"in": "query",
"name": "payment_submission_supported",
"schema": {
"type": "string"
},
"description": "Boolean value, indicating if payment submission is supported",
"examples": {
"PaymentSubmissionSupported": {
"value": "false",
"summary": "payment_submission_supported"
}
}
},
{
"in": "query",
"name": "payments_enabled",
"schema": {
"type": "string"
},
"description": "Boolean value, indicating if payments are supported",
"examples": {
"PaymentsEnabled": {
"value": "false",
"summary": "payments_enabled"
}
}
},
{
"in": "query",
"name": "pending_transactions_supported",
"schema": {
"type": "string"
},
"description": "Boolean value, indicating if pending transactions are supported",
"examples": {
"PendingTransactionsSupported": {
"value": "false",
"summary": "pending_transactions_supported"
}
}
},
{
"in": "query",
"name": "private_accounts_supported",
"schema": {
"type": "string"
},
"description": "Boolean value, indicating if private accounts are supported",
"examples": {
"PrivateAccountsSupported": {
"value": "false",
"summary": "private_accounts_supported"
}
}
},
{
"in": "query",
"name": "read_debtor_account_supported",
"schema": {
"type": "string"
},
"description": "Boolean value, indicating if debtor account can be read before submitting payment",
"examples": {
"ReadDebtorAccountSupported": {
"value": "false",
"summary": "read_debtor_account_supported"
}
}
},
{
"in": "query",
"name": "read_refund_account_supported",
"schema": {
"type": "string"
},
"description": "Boolean value, indicating if read refund account is supported",
"examples": {
"ReadRefundAccountSupported": {
"value": "false",
"summary": "read_refund_account_supported"
}
}
},
{
"in": "query",
"name": "ssn_verification_supported",
"schema": {
"type": "string"
},
"description": "Boolean value, indicating if ssn verification is supported",
"examples": {
"SsnVerificationSupported": {
"value": "false",
"summary": "ssn_verification_supported"
}
}
}
],
"tags": [
"institutions"
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Integration"
}
},
"examples": {
"SupportedInstitutions": {
"value": [
{
"id": "N26_NTSBDEB1",
"name": "N26 Bank",
"bic": "NTSBDEB1",
"transaction_total_days": "90",
"countries": [
"GB",
"NO",
"SE",
"FI",
"DK",
"EE",
"LV",
"LT",
"NL",
"CZ",
"ES",
"PL",
"BE",
"DE",
"AT",
"BG",
"HR",
"CY",
"FR",
"GR",
"HU",
"IS",
"IE",
"IT",
"LI",
"LU",
"MT",
"PT",
"RO",
"SK",
"SI"
],
"logo": "https://cdn-logos.gocardless.com/ais/N26_SANDBOX_NTSBDEB1.png",
"identification_codes": []
}
],
"summary": "Supported Institutions",
"description": "some of supported Institutions"
}
}
}
},
"description": "list of supported Institutions in the country"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NotAValidChoice": {
"value": {
"summary": "Invalid country choice.",
"detail": "GBA is not a valid choice.",
"status_code": 400
},
"summary": "Not a valid choice",
"description": "Provided country is not valid"
},
"UnknownFields": {
"value": {
"summary": "Unknown fields",
"detail": "Unknown fields {${FIELD}} in {${LOCATION}}",
"status_code": 400
},
"summary": "Unknown Fields",
"description": "Unknown Fields"
}
}
}
},
"description": "Unknown Fields"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NotFoundError": {
"value": {
"detail": "Not found.",
"summary": "Not found.",
"status_code": 404
},
"summary": "Not found error",
"description": "Not found error"
}
}
}
},
"description": "Not found error"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NordigenRateLimitExceeded": {
"value": {
"summary": "Rate limit exceeded",
"detail": "The rate limit for this resource is <times>/<time_period>. Please try again in <time_left> seconds",
"status_code": 429
},
"summary": "Nordigen rate limit exceeded",
"description": "Nordigen rate limit exceeded"
}
}
}
},
"description": "Nordigen rate limit exceeded"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidToken": {
"value": {
"summary": "Invalid token",
"detail": "Token is invalid or expired",
"status_code": 401
},
"summary": "Invalid token",
"description": "Token is invalid or expired"
}
}
}
},
"description": "Token is invalid or expired"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"IPAccessDenied": {
"value": {
"summary": "IP address access denied",
"detail": "Your IP $IP_ADDRESS isn't whitelisted to perform this action",
"status_code": 403
},
"summary": "IP Access denied",
"description": "IP address not whitelisted"
}
}
}
},
"description": "IP address not whitelisted"
}
}
}
},
"/api/v2/institutions/{id}/": {
"get": {
"operationId": "retrieve institution",
"description": "Get details about a specific Institution and its supported features",
"parameters": [
{
"in": "path",
"name": "id",
"schema": {
"type": "string"
},
"required": true,
"examples": {
"N26": {
"value": "N26_NTSBDEB1",
"summary": "N26",
"description": "Nordigen's Institution ID for N26"
}
}
}
],
"tags": [
"institutions"
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/IntegrationRetrieve"
},
"examples": {
"N26Bank": {
"value": {
"id": "N26_NTSBDEB1",
"name": "N26 Bank",
"bic": "NTSBDEB1",
"transaction_total_days": "90",
"countries": [
"GB",
"NO",
"SE",
"FI",
"DK",
"EE",
"LV",
"LT",
"NL",
"CZ",
"ES",
"PL",
"BE",
"DE",
"AT",
"BG",
"HR",
"CY",
"FR",
"GR",
"HU",
"IS",
"IE",
"IT",
"LI",
"LU",
"MT",
"PT",
"RO",
"SK",
"SI"
],
"logo": "https://cdn-logos.gocardless.com/ais/N26_SANDBOX_NTSBDEB1.png",
"supported_payments": {
"single-payment": [
"SCT",
"ISCT"
]
},
"supported_features": [
"account_selection",
"business_accounts",
"card_accounts",
"payments",
"private_accounts"
],
"identification_codes": []
},
"summary": "N26 Bank",
"description": "N26 Bank"
},
"ABNAMROBank": {
"value": {
"id": "ABNAMRO_FTSBDEFAXXX",
"name": "ABN AMRO Bank Commercial",
"bic": "FTSBDEFAXXX",
"transaction_total_days": "558",
"countries": [
"DE"
],
"logo": "https://cdn-logos.gocardless.com/ais/ABNAMRO_FTSBDEFAXXX.png",
"supported_payments": {
"single-payment": [
"SCT"
]
},
"supported_features": [
"business_accounts",
"card_accounts",
"payments",
"pending_transactions",
"private_accounts"
],
"identification_codes": []
},
"summary": "ABN AMRO Bank",
"description": "ABN AMRO Bank"
}
}
}
},
"description": "Retrieve institution by id"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NotFoundError": {
"value": {
"detail": "Not found.",
"summary": "Not found.",
"status_code": 404
},
"summary": "Not found error",
"description": "Not found error"
}
}
}
},
"description": "Not found error"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NordigenRateLimitExceeded": {
"value": {
"summary": "Rate limit exceeded",
"detail": "The rate limit for this resource is <times>/<time_period>. Please try again in <time_left> seconds",
"status_code": 429
},
"summary": "Nordigen rate limit exceeded",
"description": "Nordigen rate limit exceeded"
}
}
}
},
"description": "Nordigen rate limit exceeded"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidToken": {
"value": {
"summary": "Invalid token",
"detail": "Token is invalid or expired",
"status_code": 401
},
"summary": "Invalid token",
"description": "Token is invalid or expired"
}
}
}
},
"description": "Token is invalid or expired"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"IPAccessDenied": {
"value": {
"summary": "IP address access denied",
"detail": "Your IP $IP_ADDRESS isn't whitelisted to perform this action",
"status_code": 403
},
"summary": "IP Access denied",
"description": "IP address not whitelisted"
}
}
}
},
"description": "IP address not whitelisted"
}
}
}
},
"/api/v2/requisitions/": {
"get": {
"operationId": "retrieve all requisitions",
"description": "Retrieve all requisitions belonging to the company",
"parameters": [
{
"name": "limit",
"required": false,
"in": "query",
"description": "Number of results to return per page.",
"schema": {
"type": "integer",
"default": 100,
"minimum": 1
}
},
{
"name": "offset",
"required": false,
"in": "query",
"description": "The initial zero-based index from which to return the results.",
"schema": {
"type": "integer",
"default": 0,
"minimum": 0
}
}
],
"tags": [
"requisitions"
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaginatedRequisitionList"
}
}
},
"description": "Retrieve all requisitions"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NotFoundError": {
"value": {
"detail": "Not found.",
"summary": "Not found.",
"status_code": 404
},
"summary": "Not found error",
"description": "Not found error"
}
}
}
},
"description": "Not found error"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"UnknownFields": {
"value": {
"summary": "Unknown fields",
"detail": "Unknown fields {${FIELD}} in {${LOCATION}}",
"status_code": 400
},
"summary": "Unknown Fields",
"description": "Unknown Fields"
}
}
}
},
"description": "Unknown Fields"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NordigenRateLimitExceeded": {
"value": {
"summary": "Rate limit exceeded",
"detail": "The rate limit for this resource is <times>/<time_period>. Please try again in <time_left> seconds",
"status_code": 429
},
"summary": "Nordigen rate limit exceeded",
"description": "Nordigen rate limit exceeded"
}
}
}
},
"description": "Nordigen rate limit exceeded"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidToken": {
"value": {
"summary": "Invalid token",
"detail": "Token is invalid or expired",
"status_code": 401
},
"summary": "Invalid token",
"description": "Token is invalid or expired"
}
}
}
},
"description": "Token is invalid or expired"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"IPAccessDenied": {
"value": {
"summary": "IP address access denied",
"detail": "Your IP $IP_ADDRESS isn't whitelisted to perform this action",
"status_code": 403
},
"summary": "IP Access denied",
"description": "IP address not whitelisted"
}
}
}
},
"description": "IP address not whitelisted"
}
}
},
"post": {
"operationId": "Create requisition",
"description": "Create a new requisition",
"tags": [
"requisitions"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RequisitionRequest"
}
},
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/RequisitionRequest"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/RequisitionRequest"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SpectacularRequisition"
}
}
},
"description": "Requisition has been successfully created"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"ReferenceFieldErrors": {
"value": {
"reference": {
"summary": "Client reference must be unique",
"detail": "Client reference: $REFERENCE_ID already exists"
},
"status_code": 400
},
"summary": "Reference field errors",
"description": "Errors related to 'reference' field."
},
"UserLanguageFieldErrors": {
"value": {
"user_language": {
"summary": "Provided user_language is invalid or not supported",
"detail": "'$LNG_CODE' is an invalid or unsupported language"
},
"status_code": 400
},
"summary": "User language field errors",
"description": "Errors related to 'user_language' field."
},
"AgreementFieldErrors": {
"value": {
"agreement": [
{
"summary": "Unknown Institution ID $ASPSP_ID",
"detail": "Get Institution IDs from /institutions/?country={$COUNTRY_CODE}"
},
{
"summary": "Invalid EndUserAgreement ID",
"detail": "$AGREEMENT_ID is not a valid EndUserAgreement UUID. Please specify valid agreement from /api/agreements/enduser/?={$ENDUSER_ID} or create a new one"
}
],
"status_code": 400
},
"summary": "Agreement field errors",
"description": "Errors related to 'agreement' field."
},
"RedirectFieldErrors": {
"value": {
"redirect": [
{
"summary": "Redirect URL is required",
"detail": "Where an end user will be redirected after finishing authentication in the Institution"
},
{
"summary": "Invalid redirect URI",
"detail": "Redirect URI must have a valid URI structure"
}
],
"status_code": 400
},
"summary": "Redirect field errors",
"description": "Errors related to 'redirect' field."
},
"SSNFieldErrors": {
"value": {
"ssn": {
"summary": "SSN verification not supported",
"detail": "SSN verification not supported for $INSTITUTION_ID"
},
"status_code": 400
},
"summary": "SSN field errors",
"description": "Errors related to 'ssn' field."
},
"AccountSelectionFieldErrors": {
"value": {
"account_selection": {
"summary": "Account selection not supported",
"detail": "Account selection not supported for $INSTITUTION_ID"
},
"status_code": 400
},
"summary": "Account selection field errors",
"description": "Errors related to 'account_selection' field."
},
"InstitutionFieldErrors": {
"value": {
"institution_id": {
"summary": "Unknown Institution ID $INSTITUTION_ID",
"detail": "Get Institution IDs from /institutions/?country={$COUNTRY_CODE}"
},
"status_code": 400
},
"summary": "Institution field errors",
"description": "Errors related to 'institution' field."
},
"UnknownFields": {
"value": {
"summary": "Unknown fields",
"detail": "Unknown fields {${FIELD}} in {${LOCATION}}",
"status_code": 400
},
"summary": "Unknown Fields",
"description": "Unknown Fields"
},
"FieldsRequired": {
"value": {
"redirect": [
"This field is required."
],
"institution_id": [
"This field is required."
],
"status_code": 400
},
"summary": "Fields required",
"description": "Field is required"
}
}
}
},
"description": "Field is required"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"AgreementNotFoundErrors": {
"value": {
"agreement": {
"summary": "ID $AGREEMENT_ID not found",
"detail": "Please check whether you specified a valid ID"
},
"status_code": 404
},
"summary": "Agreement not found errors",
"description": "Errors related to 'agreement' field."
}
}
}
},
"description": "Errors related to 'agreement' field."
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NordigenRateLimitExceeded": {
"value": {
"summary": "Rate limit exceeded",
"detail": "The rate limit for this resource is <times>/<time_period>. Please try again in <time_left> seconds",
"status_code": 429
},
"summary": "Nordigen rate limit exceeded",
"description": "Nordigen rate limit exceeded"
}
}
}
},
"description": "Nordigen rate limit exceeded"
},
"402": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"PaymentRequired": {
"value": {
"summary": "Payment Required",
"detail": "Free usage limit exceeded",
"status_code": 402
},
"summary": "Payment Required",
"description": "Free usage limit exceeded"
}
}
}
},
"description": "Free usage limit exceeded"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidToken": {
"value": {
"summary": "Invalid token",
"detail": "Token is invalid or expired",
"status_code": 401
},
"summary": "Invalid token",
"description": "Token is invalid or expired"
}
}
}
},
"description": "Token is invalid or expired"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"IPAccessDenied": {
"value": {
"summary": "IP address access denied",
"detail": "Your IP $IP_ADDRESS isn't whitelisted to perform this action",
"status_code": 403
},
"summary": "IP Access denied",
"description": "IP address not whitelisted"
}
}
}
},
"description": "IP address not whitelisted"
}
}
}
},
"/api/v2/requisitions/{id}/": {
"get": {
"operationId": "requisition by id",
"description": "Retrieve a requisition by ID",
"parameters": [
{
"in": "path",
"name": "id",
"schema": {
"type": "string",
"format": "uuid"
},
"description": "A UUID string identifying this requisition.",
"required": true
}
],
"tags": [
"requisitions"
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Requisition"
}
}
},
"description": "Get requisition by ID"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NotFoundError": {
"value": {
"detail": "Not found.",
"summary": "Not found.",
"status_code": 404
},
"summary": "Not found error",
"description": "Not found error"
}
}
}
},
"description": "Not found error"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidID": {
"value": {
"summary": "Invalid ID",
"detail": "272785d5-de45-4efb-aa1a-f8157ffa94 is not a valid UUID.",
"status_code": 400
},
"summary": "Invalid ID",
"description": "Invalid ID"
}
}
}
},
"description": "Invalid ID"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NordigenRateLimitExceeded": {
"value": {
"summary": "Rate limit exceeded",
"detail": "The rate limit for this resource is <times>/<time_period>. Please try again in <time_left> seconds",
"status_code": 429
},
"summary": "Nordigen rate limit exceeded",
"description": "Nordigen rate limit exceeded"
}
}
}
},
"description": "Nordigen rate limit exceeded"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidToken": {
"value": {
"summary": "Invalid token",
"detail": "Token is invalid or expired",
"status_code": 401
},
"summary": "Invalid token",
"description": "Token is invalid or expired"
}
}
}
},
"description": "Token is invalid or expired"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"IPAccessDenied": {
"value": {
"summary": "IP address access denied",
"detail": "Your IP $IP_ADDRESS isn't whitelisted to perform this action",
"status_code": 403
},
"summary": "IP Access denied",
"description": "IP address not whitelisted"
}
}
}
},
"description": "IP address not whitelisted"
}
}
},
"delete": {
"operationId": "delete requisition by id",
"description": "Delete requisition and its end user agreement",
"parameters": [
{
"in": "path",
"name": "id",
"schema": {
"type": "string",
"format": "uuid"
},
"description": "A UUID string identifying this requisition.",
"required": true
}
],
"tags": [
"requisitions"
],
"responses": {
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidID": {
"value": {
"summary": "Invalid ID",
"detail": "272785d5-de45-4efb-aa1a-f8157ffa94 is not a valid UUID.",
"status_code": 400
},
"summary": "Invalid ID",
"description": "Invalid ID"
}
}
}
},
"description": "Invalid ID"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NotFoundError": {
"value": {
"detail": "Not found.",
"summary": "Not found.",
"status_code": 404
},
"summary": "Not found error",
"description": "Not found error"
}
}
}
},
"description": "Not found error"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NordigenRateLimitExceeded": {
"value": {
"summary": "Rate limit exceeded",
"detail": "The rate limit for this resource is <times>/<time_period>. Please try again in <time_left> seconds",
"status_code": 429
},
"summary": "Nordigen rate limit exceeded",
"description": "Nordigen rate limit exceeded"
}
}
}
},
"description": "Nordigen rate limit exceeded"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidToken": {
"value": {
"summary": "Invalid token",
"detail": "Token is invalid or expired",
"status_code": 401
},
"summary": "Invalid token",
"description": "Token is invalid or expired"
}
}
}
},
"description": "Token is invalid or expired"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"IPAccessDenied": {
"value": {
"summary": "IP address access denied",
"detail": "Your IP $IP_ADDRESS isn't whitelisted to perform this action",
"status_code": 403
},
"summary": "IP Access denied",
"description": "IP address not whitelisted"
}
}
}
},
"description": "IP address not whitelisted"
}
}
}
},
"/api/v2/token/new/": {
"post": {
"operationId": "Obtain new access/refresh token pair",
"description": "Obtain JWT pair",
"tags": [
"token"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/JWTObtainPairRequest"
}
},
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/JWTObtainPairRequest"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/JWTObtainPairRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SpectacularJWTObtain"
}
}
},
"description": "Obtain JWT response."
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"AuthenticationFailed": {
"value": {
"summary": "Authentication failed",
"detail": "No active account found with the given credentials",
"status_code": 401
},
"summary": "Authentication failed",
"description": "Incorrect secret key or id"
}
}
}
},
"description": "Incorrect secret key or id"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"IPAccessDenied": {
"value": {
"summary": "IP address access denied",
"detail": "Your IP $IP_ADDRESS isn't whitelisted to perform this action",
"status_code": 403
},
"summary": "IP Access denied",
"description": "IP address not whitelisted"
}
}
}
},
"description": "IP address not whitelisted"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NordigenRateLimitExceeded": {
"value": {
"summary": "Rate limit exceeded",
"detail": "The rate limit for this resource is <times>/<time_period>. Please try again in <time_left> seconds",
"status_code": 429
},
"summary": "Nordigen rate limit exceeded",
"description": "Nordigen rate limit exceeded"
}
}
}
},
"description": "Nordigen rate limit exceeded"
}
}
}
},
"/api/v2/token/refresh/": {
"post": {
"operationId": "Get a new access token",
"description": "Refresh access token",
"tags": [
"token"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/JWTRefreshRequest"
}
},
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/JWTRefreshRequest"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/JWTRefreshRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SpectacularJWTRefresh"
}
}
},
"description": "Refresh access token."
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"IPAccessDenied": {
"value": {
"summary": "IP address access denied",
"detail": "Your IP $IP_ADDRESS isn't whitelisted to perform this action",
"status_code": 403
},
"summary": "IP Access denied",
"description": "IP address not whitelisted"
}
}
}
},
"description": "IP address not whitelisted"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"InvalidToken": {
"value": {
"summary": "Invalid token",
"detail": "Token is invalid or expired",
"status_code": 401
},
"summary": "Invalid token",
"description": "Token is invalid or expired"
}
}
}
},
"description": "Token is invalid or expired"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"NordigenRateLimitExceeded": {
"value": {
"summary": "Rate limit exceeded",
"detail": "The rate limit for this resource is <times>/<time_period>. Please try again in <time_left> seconds",
"status_code": 429
},
"summary": "Nordigen rate limit exceeded",
"description": "Nordigen rate limit exceeded"
}
}
}
},
"description": "Nordigen rate limit exceeded"
}
}
}
}
},
"components": {
"schemas": {
"Account": {
"type": "object",
"description": "AccountSerializer.",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"readOnly": true,
"description": "The ID of this Account, used to refer to this account in other API calls."
},
"created": {
"type": "string",
"format": "date-time",
"readOnly": true,
"description": "The date & time at which the account object was created."
},
"last_accessed": {
"type": "string",
"format": "date-time",
"readOnly": true,
"description": "The date & time at which the account object was last accessed."
},
"iban": {
"type": "string",
"readOnly": true,
"description": "The Account IBAN"
},
"status": {
"type": "string",
"readOnly": true,
"description": "The processing status of this account."
},
"institution_id": {
"type": "string",
"readOnly": true,
"description": "The ASPSP associated with this account."
},
"owner_name": {
"type": "string",
"readOnly": true,
"description": "The name of the account owner."
}
}
},
"AccountBalance": {
"type": "object",
"description": "AccountBalanceSerializer.",
"properties": {
"balances": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BalanceSchema"
}
}
}
},
"AccountDetail": {
"type": "object",
"description": "AccountDetailSerializer.",
"properties": {
"account": {
"allOf": [
{
"$ref": "#/components/schemas/DetailSchema"
}
],
"description": "account"
}
},
"required": [
"account"
]
},
"AccountSchema": {
"type": "object",
"description": "AccountSchema.",
"properties": {
"iban": {
"type": "string",
"description": "iban"
},
"bban": {
"type": "string",
"description": "bban"
},
"pan": {
"type": "string",
"description": "pan"
},
"maskedPan": {
"type": "string",
"description": "maskedPan"
},
"msisdn": {
"type": "string",
"description": "msisdn"
},
"currency": {
"type": "string",
"description": "currency"
}
}
},
"BalanceAmountSchema": {
"type": "object",
"description": "BalanceAmountSchema.",
"properties": {
"amount": {
"type": "string",
"description": "amount"
},
"currency": {
"type": "string",
"description": "currency"
}
},
"required": [
"amount",
"currency"
]
},
"BalanceSchema": {
"type": "object",
"description": "BalanceSchema.",
"properties": {
"balanceAmount": {
"allOf": [
{
"$ref": "#/components/schemas/BalanceAmountSchema"
}
],
"description": "balanceAmount"
},
"balanceType": {
"type": "string",
"description": "balanceType"
},
"creditLimitIncluded": {
"type": "boolean",
"description": "creditLimitIncluded"
},
"lastChangeDateTime": {
"type": "string",
"description": "lastChangeDateTime"
},
"referenceDate": {
"type": "string",
"description": "referenceDate"
},
"lastCommittedTransaction": {
"type": "string",
"description": "lastCommittedTransaction"
}
},
"required": [
"balanceAmount",
"balanceType"
]
},
"BankTransactions": {
"type": "object",
"description": "BankTransactions.",
"properties": {
"transactions": {
"allOf": [
{
"$ref": "#/components/schemas/BankTransaction"
}
],
"description": "BankTransaction"
}
}
},
"BankTransaction": {
"type": "object",
"description": "BankTransactionSerializer.",
"properties": {
"booked": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TransactionSchema"
}
},
"pending": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TransactionSchema"
}
}
},
"required": [
"booked"
]
},
"CurrencyExchangeSchema": {
"type": "object",
"description": "CurrencyExchangeSchema.",
"properties": {
"sourceCurrency": {
"type": "string",
"description": "sourceCurrency"
},
"exchangeRate": {
"type": "string",
"description": "exchangeRate"
},
"unitCurrency": {
"type": "string",
"description": "unitCurrency"
},
"targetCurrency": {
"type": "string",
"description": "targetCurrency"
},
"quotationDate": {
"type": "string",
"description": "quotationDate"
},
"contractIdentification": {
"type": "string",
"description": "contractIdentification"
}
}
},
"DetailSchema": {
"type": "object",
"description": "DetailSchema.",
"properties": {
"resourceId": {
"type": "string",
"description": "resourceId"
},
"iban": {
"type": "string",
"description": "iban"
},
"bban": {
"type": "string",
"description": "bban"
},
"msisdn": {
"type": "string",
"description": "msisdn"
},
"currency": {
"type": "string",
"description": "currency"
},
"ownerName": {
"type": "string",
"description": "ownerName"
},
"name": {
"type": "string",
"description": "name"
},
"displayName": {
"type": "string",
"description": "displayName"
},
"product": {
"type": "string",
"description": "product"
},
"cashAccountType": {
"type": "string",
"description": "cashAccountType"
},
"status": {
"type": "string",
"description": "status"
},
"bic": {
"type": "string",
"description": "bic"
},
"linkedAccounts": {
"type": "string",
"description": "linkedAccounts"
},
"maskedPan": {
"type": "string",
"description": "maskedPan"
},
"usage": {
"type": "string",
"description": "usage"
},
"details": {
"type": "string",
"description": "details"
},
"ownerAddressUnstructured": {
"type": "array",
"items": {
"type": "string"
},
"description": "ownerAddressUnstructured"
},
"ownerAddressStructured": {
"allOf": [
{
"$ref": "#/components/schemas/OwnerAddressStructuredSchema"
}
],
"description": "ownerAddressStructured"
}
}
},
"EndUserAgreement": {
"type": "object",
"description": "Represents an end-user agreement.",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"readOnly": true,
"title": "End User Agreement ID",
"description": "The ID of this End User Agreement, used to refer to this end user agreement in other API calls."
},
"created": {
"type": "string",
"format": "date-time",
"readOnly": true,
"title": "Created Date",
"description": "The date & time at which the end user agreement was created."
},
"institution_id": {
"type": "string",
"description": "an Institution ID for this EUA"
},
"max_historical_days": {
"type": "integer",
"maximum": 730,
"minimum": 1,
"default": 90,
"title": "Maximum Historical Days",
"description": "Maximum number of days of transaction data to retrieve."
},
"access_valid_for_days": {
"type": "integer",
"maximum": 180,
"minimum": 1,
"default": 90,
"title": "Access Valid For (Days)",
"description": "Number of days from acceptance that the access can be used."
},
"access_scope": {
"type": "array",
"items": {},
"default": [
"balances",
"details",
"transactions"
],
"title": "Level of information to access (by default all)",
"description": "Array containing one or several values of ['balances', 'details', 'transactions']"
},
"accepted": {
"type": "string",
"format": "date-time",
"nullable": true,
"readOnly": true,
"title": "Accepted Date",
"description": "The date & time at which the end user accepted the agreement."
}
},
"required": [
"institution_id"
]
},
"EndUserAgreementRequest": {
"type": "object",
"description": "Represents an end-user agreement.",
"properties": {
"institution_id": {
"type": "string",
"minLength": 1,
"description": "an Institution ID for this EUA"
},
"max_historical_days": {
"type": "integer",
"maximum": 730,
"minimum": 1,
"default": 90,
"title": "Maximum Historical Days",
"description": "Maximum number of days of transaction data to retrieve."
},
"access_valid_for_days": {
"type": "integer",
"maximum": 180,
"minimum": 1,
"default": 90,
"title": "Access Valid For (Days)",
"description": "Number of days from acceptance that the access can be used."
},
"access_scope": {
"type": "array",
"items": {},
"default": [
"balances",
"details",
"transactions"
],
"title": "Level of information to access (by default all)",
"description": "Array containing one or several values of ['balances', 'details', 'transactions']"
}
},
"required": [
"institution_id"
]
},
"EnduserAcceptanceDetailsRequest": {
"type": "object",
"description": "Represents end-user details.",
"properties": {
"user_agent": {
"type": "string",
"minLength": 1,
"title": "user agent string for the end user"
},
"ip_address": {
"type": "string",
"minLength": 1,
"title": "end user IP address"
}
},
"required": [
"ip_address",
"user_agent"
]
},
"ErrorResponse": {
"type": "object",
"properties": {
"summary": {
"type": "string"
},
"detail": {
"type": "string"
},
"type": {
"type": "string"
},
"status_code": {
"type": "integer"
}
},
"required": [
"detail",
"status_code",
"summary"
]
},
"Integration": {
"type": "object",
"description": "Represents an Integration.",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"bic": {
"type": "string"
},
"transaction_total_days": {
"type": "string",
"default": "90"
},
"countries": {
"type": "array",
"items": {
"type": "string"
}
},
"logo": {
"type": "string"
}
},
"required": [
"countries",
"id",
"logo",
"name"
]
},
"IntegrationRetrieve": {
"type": "object",
"description": "IntegrationSerializer for Retrieve endpoint.",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"bic": {
"type": "string"
},
"transaction_total_days": {
"type": "string",
"default": "90"
},
"countries": {
"type": "array",
"items": {
"type": "string"
}
},
"logo": {
"type": "string"
},
"supported_payments": {
"type": "object",
"additionalProperties": {}
},
"supported_features": {
"type": "array",
"items": {}
},
"identification_codes": {
"type": "array",
"items": {}
}
},
"required": [
"countries",
"id",
"identification_codes",
"logo",
"name",
"supported_features",
"supported_payments"
]
},
"JWTObtainPairRequest": {
"type": "object",
"description": "Obtain JWT pair.",
"properties": {
"secret_id": {
"type": "string",
"minLength": 1,
"description": "Secret id from /user-secrets/"
},
"secret_key": {
"type": "string",
"minLength": 1,
"description": "Secret key from /user-secrets/"
}
},
"required": [
"secret_id",
"secret_key"
]
},
"JWTRefreshRequest": {
"type": "object",
"description": "Refresh access token.",
"properties": {
"refresh": {
"type": "string",
"minLength": 1
}
},
"required": [
"refresh"
]
},
"OwnerAddressStructuredSchema": {
"type": "object",
"description": "OwnerAddressStructuredSchema.",
"properties": {
"streetName": {
"type": "string",
"description": "streetName"
},
"buildingNumber": {
"type": "string",
"description": "buildingNumber"
},
"townName": {
"type": "string",
"description": "townName"
},
"postCode": {
"type": "string",
"description": "postCode"
},
"country": {
"type": "string",
"description": "country"
}
}
},
"PaginatedEndUserAgreementList": {
"type": "object",
"required": [
"count",
"results"
],
"properties": {
"count": {
"type": "integer",
"example": 123
},
"next": {
"type": "string",
"nullable": true,
"format": "uri",
"example": "https://bankaccountdata.gocardless.com/api/v2/agreements/enduser/?limit=100&offset=0"
},
"previous": {
"type": "string",
"nullable": true,
"format": "uri",
"example": "https://bankaccountdata.gocardless.com/api/v2/agreements/enduser/?limit=100&offset=0"
},
"results": {
"type": "array",
"items": {
"$ref": "#/components/schemas/EndUserAgreement"
}
}
}
},
"PaginatedRequisitionList": {
"type": "object",
"required": [
"count",
"results"
],
"properties": {
"count": {
"type": "integer",
"example": 123
},
"next": {
"type": "string",
"nullable": true,
"format": "uri",
"example": "https://bankaccountdata.gocardless.com/api/v2/requisitions/?limit=100&offset=0"
},
"previous": {
"type": "string",
"nullable": true,
"format": "uri",
"example": "https://bankaccountdata.gocardless.com/api/v2/requisitions/?limit=100&offset=0"
},
"results": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Requisition"
}
}
}
},
"Requisition": {
"type": "object",
"description": "RequisitionSerializer.",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"readOnly": true
},
"created": {
"type": "string",
"format": "date-time",
"nullable": true,
"readOnly": true,
"title": "Created Date",
"description": "The date & time at which the requisition was created."
},
"redirect": {
"type": "string",
"format": "uri",
"nullable": true,
"description": "redirect URL to your application after end-user authorization with ASPSP",
"maxLength": 1024
},
"status": {
"allOf": [
{
"$ref": "#/components/schemas/StatusEnum"
}
],
"description": "status of this requisition",
"title": "Requisition status",
"readOnly": true
},
"institution_id": {
"type": "string",
"description": "an Institution ID for this Requisition"
},
"agreement": {
"type": "string",
"format": "uuid",
"description": "EUA associated with this requisition"
},
"reference": {
"type": "string",
"description": "additional ID to identify the end user",
"maxLength": 256
},
"accounts": {
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"title": "accounts"
},
"readOnly": true,
"description": "array of account IDs retrieved within a scope of this requisition"
},
"user_language": {
"type": "string",
"description": "A two-letter country code (ISO 639-1)",
"maxLength": 5
},
"link": {
"type": "string",
"format": "uri",
"readOnly": true,
"default": "https://ob.gocardless.com/psd2/start/3fa85f64-5717-4562-b3fc-2c963f66afa6/{$INSTITUTION_ID}",
"description": "link to initiate authorization with Institution"
},
"ssn": {
"type": "string",
"description": "optional SSN field to verify ownership of the account",
"maxLength": 64
},
"account_selection": {
"type": "boolean",
"default": false,
"description": "option to enable account selection view for the end user"
},
"redirect_immediate": {
"type": "boolean",
"default": false,
"description": "enable redirect back to the client after account list received"
}
},
"required": [
"institution_id",
"redirect"
]
},
"RequisitionRequest": {
"type": "object",
"description": "RequisitionSerializer.",
"properties": {
"redirect": {
"type": "string",
"format": "uri",
"nullable": true,
"minLength": 1,
"description": "redirect URL to your application after end-user authorization with ASPSP",
"maxLength": 1024
},
"institution_id": {
"type": "string",
"minLength": 1,
"description": "an Institution ID for this Requisition"
},
"agreement": {
"type": "string",
"format": "uuid",
"description": "EUA associated with this requisition"
},
"reference": {
"type": "string",
"minLength": 1,
"description": "additional ID to identify the end user",
"maxLength": 256
},
"user_language": {
"type": "string",
"minLength": 1,
"description": "A two-letter country code (ISO 639-1)",
"maxLength": 5
},
"ssn": {
"type": "string",
"description": "optional SSN field to verify ownership of the account",
"maxLength": 64
},
"account_selection": {
"type": "boolean",
"default": false,
"description": "option to enable account selection view for the end user"
},
"redirect_immediate": {
"type": "boolean",
"default": false,
"description": "enable redirect back to the client after account list received"
}
},
"required": [
"institution_id",
"redirect"
]
},
"SpectacularJWTObtain": {
"type": "object",
"description": "Obtain new JWT pair.",
"properties": {
"access": {
"type": "string",
"readOnly": true,
"description": "Your access token"
},
"access_expires": {
"type": "integer",
"readOnly": true,
"default": 86400,
"description": "Access token expires in seconds"
},
"refresh": {
"type": "string",
"readOnly": true,
"description": "Your refresh token"
},
"refresh_expires": {
"type": "integer",
"readOnly": true,
"default": 2592000,
"description": "Refresh token expires in seconds"
}
}
},
"SpectacularJWTRefresh": {
"type": "object",
"description": "Refresh Access token.",
"properties": {
"access": {
"type": "string",
"readOnly": true,
"description": "Your access token"
},
"access_expires": {
"type": "integer",
"readOnly": true,
"default": 86400,
"description": "Access token expires in seconds"
}
}
},
"SpectacularRequisition": {
"type": "object",
"description": "Create requisition.",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"readOnly": true
},
"created": {
"type": "string",
"format": "date-time",
"nullable": true,
"readOnly": true,
"title": "Created Date",
"description": "The date & time at which the requisition was created."
},
"redirect": {
"type": "string",
"format": "uri",
"nullable": true,
"description": "redirect URL to your application after end-user authorization with ASPSP",
"maxLength": 1024
},
"status": {
"allOf": [
{
"$ref": "#/components/schemas/StatusEnum"
}
],
"description": "status of this requisition",
"title": "Requisition status",
"readOnly": true
},
"institution_id": {
"type": "string",
"description": "an Institution ID for this Requisition"
},
"agreement": {
"type": "string",
"format": "uuid",
"description": "EUA associated with this requisition"
},
"reference": {
"type": "string",
"description": "additional ID to identify the end user",
"maxLength": 256
},
"accounts": {
"type": "array",
"items": {},
"readOnly": true,
"default": [],
"description": "array of account IDs retrieved within a scope of this requisition"
},
"user_language": {
"type": "string",
"description": "A two-letter country code (ISO 639-1)",
"maxLength": 5
},
"link": {
"type": "string",
"format": "uri",
"readOnly": true,
"default": "https://ob.gocardless.com/psd2/start/3fa85f64-5717-4562-b3fc-2c963f66afa6/{$INSTITUTION_ID}",
"description": "link to initiate authorization with Institution"
},
"ssn": {
"type": "string",
"description": "optional SSN field to verify ownership of the account",
"maxLength": 64
},
"account_selection": {
"type": "boolean",
"default": false,
"description": "option to enable account selection view for the end user"
},
"redirect_immediate": {
"type": "boolean",
"default": false,
"description": "enable redirect back to the client after account list received"
}
},
"required": [
"institution_id",
"redirect"
]
},
"StatusEnum": {
"enum": [
"CR",
"ID",
"LN",
"RJ",
"ER",
"SU",
"EX",
"GC",
"UA",
"GA",
"SA"
],
"type": "string"
},
"TransactionAmountSchema": {
"type": "object",
"description": "TransactionAmountSchema.",
"properties": {
"amount": {
"type": "string",
"description": "amount"
},
"currency": {
"type": "string",
"description": "currency"
}
},
"required": [
"amount",
"currency"
]
},
"TransactionSchema": {
"type": "object",
"description": "TransactionSchema.",
"properties": {
"transactionId": {
"type": "string",
"description": "transactionId"
},
"entryReference": {
"type": "string",
"description": "entryReference"
},
"endToEndId": {
"type": "string",
"description": "endToEndId"
},
"mandateId": {
"type": "string",
"description": "mandateId"
},
"checkId": {
"type": "string",
"description": "checkId"
},
"creditorId": {
"type": "string",
"description": "creditorId"
},
"bookingDate": {
"type": "string",
"description": "bookingDate"
},
"valueDate": {
"type": "string",
"description": "valueDate"
},
"bookingDateTime": {
"type": "string",
"description": "bookingDateTime"
},
"valueDateTime": {
"type": "string",
"description": "valueDateTime"
},
"transactionAmount": {
"allOf": [
{
"$ref": "#/components/schemas/TransactionAmountSchema"
}
],
"description": "transactionAmount"
},
"currencyExchange": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CurrencyExchangeSchema"
}
},
"creditorName": {
"type": "string",
"description": "creditorName"
},
"creditorAccount": {
"allOf": [
{
"$ref": "#/components/schemas/AccountSchema"
}
],
"description": "creditorAccount"
},
"ultimateCreditor": {
"type": "string",
"description": "ultimateCreditor"
},
"debtorName": {
"type": "string",
"description": "debtorName"
},
"debtorAccount": {
"allOf": [
{
"$ref": "#/components/schemas/AccountSchema"
}
],
"description": "debtorAccount"
},
"ultimateDebtor": {
"type": "string",
"description": "ultimateDebtor"
},
"remittanceInformationUnstructured": {
"type": "string",
"description": "remittanceInformationUnstructured"
},
"remittanceInformationUnstructuredArray": {
"type": "array",
"items": {
"type": "string"
},
"description": "remittanceInformationUnstructuredArray"
},
"remittanceInformationStructured": {
"type": "string",
"description": "remittanceInformationStructured"
},
"remittanceInformationStructuredArray": {
"type": "array",
"items": {
"type": "string"
},
"description": "remittanceInformationStructuredArray"
},
"additionalInformation": {
"type": "string",
"description": "additionalInformation"
},
"purposeCode": {
"type": "string",
"description": "purposeCode"
},
"bankTransactionCode": {
"type": "string",
"description": "bankTransactionCode"
},
"proprietaryBankTransactionCode": {
"type": "string",
"description": "proprietaryBankTransactionCode"
},
"internalTransactionId": {
"type": "string",
"description": "internalTransactionId"
}
},
"required": [
"transactionAmount"
]
}
},
"securitySchemes": {
"jwtAuth": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "JWT"
}
}
},
"security": [
{
"jwtAuth": []
}
],
"servers": [
{
"url": "https://bankaccountdata.gocardless.com"
}
]
}