banks2ff/gocardless_bank_account_data_api_v2.json

4655 lines
155 KiB
JSON
Raw Normal View History

{
"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"
}
]
}