{"components":{"schemas":{"AuthMethod":{"properties":{"approach":{"enum":["DECOUPLED","EMBEDDED","REDIRECT"],"type":"string"},"credentials":{"items":{"$ref":"#/components/schemas/Credential"},"type":"array"},"hidden_method":{"type":"boolean"},"name":{"type":"string"},"psu_types":{"enum":["business","personal"],"type":"string"},"title":{"type":"string"}},"type":"object"},"AuthorizationUrlResponse":{"properties":{"authorizationId":{"type":"string"},"origin":{"type":"string"},"state":{"type":"string"},"url":{"type":"string"},"validUntil":{"type":"string"},"validityDays":{"format":"int32","type":"integer"}},"type":"object"},"AvailableBanksResult":{"properties":{"records":{"items":{"$ref":"#/components/schemas/BankRecord"},"type":"array"},"status":{"$ref":"#/components/schemas/ResponseStatus"}},"type":"object"},"BadRequest":{"description":"Returned when something is wrong in the request, e.g. failed argument validation or missed argument","properties":{"attributes":{"description":"Invalid attributes","items":{"$ref":"#/components/schemas/RequestAttribute"},"type":"array"},"error":{"default":"BadRequest","description":"Error name","type":"string"},"message":{"default":"Required arguments are missing in the request","description":"Description of the request error","type":"string"}},"type":"object"},"BankRecord":{"properties":{"authMethods":{"items":{"$ref":"#/components/schemas/AuthMethod"},"type":"array"},"bankLogo":{"type":"string"},"countryCode":{"type":"string"},"maxValidityDays":{"format":"int32","type":"integer"},"name":{"type":"string"},"type":{"enum":["business","personal"],"type":"string"}},"type":"object"},"Credential":{"properties":{"description":{"type":"string"},"name":{"type":"string"},"required":{"type":"boolean"},"template":{"type":"string"},"title":{"type":"string"}},"type":"object"},"CredentialsRequest":{"description":"Open banking credentials request","properties":{"authOption":{"description":"Authentication option name","type":"string"},"cardNumber":{"type":"string"},"companyId":{"type":"string"},"currencyCode":{"type":"string"},"email":{"type":"string"},"iban":{"type":"string"},"password":{"type":"string"},"personalCode":{"type":"string"},"phoneNumber":{"type":"string"},"type":{"description":"Bank account type","enum":["business","personal"],"type":"string"},"userId":{"type":"string"}},"type":"object"},"Forbidden":{"description":"Returned when request is not authorized due to insufficient credentials","properties":{"error":{"default":"Forbidden","description":"Error name","type":"string"},"message":{"default":"Request is not authorized due to insufficient credentials","description":"Description of the request error","type":"string"}},"type":"object"},"RequestAttribute":{"description":"Incorrect attribute of request","properties":{"attribute":{"description":"Parameter name","type":"string"},"value":{"description":"Parameter value, subject for validation","type":"string"}},"type":"object"},"ResponseStatus":{"properties":{"code":{"description":"0 - found, 1 - not found","format":"int32","type":"integer"},"text":{"description":"search result description","type":"string"}},"type":"object"},"ServerError":{"description":"Internal server error","properties":{"error":{"default":"InternalServerError","description":"Error name","type":"string"},"message":{"default":"An internal server error occurred, please contact the system administrator with information on the error","description":"Description of the request error","type":"string"}},"type":"object"}},"securitySchemes":{"OAuth2":{"description":"All requests require authentication via OAuth2 client credentials.\n\nBase URL: https://api.roaring.io\n\n1. Obtain a Consumer key and Consumer secret from https://developer.roaring.io/keys\n   (separate sandbox and production pairs).\n2. Request an access token by POSTing to the token endpoint:\n\n   POST https://api.roaring.io/token\n   Content-Type: application/x-www-form-urlencoded\n   Authorization: Basic base64(consumer-key:consumer-secret)\n\n   body: grant_type=client_credentials\n\n   Tokens are valid for 3600 seconds. The response contains an access_token of\n   type Bearer.\n3. Send the access token on every API call:\n\n   Authorization: Bearer <access_token>","flows":{"clientCredentials":{"tokenUrl":"https://api.roaring.io/token","scopes":{}}},"type":"oauth2"}}},"info":{"description":"Global bank account data\n\nAll requests require authentication via OAuth2 client credentials.\n\nBase URL: https://api.roaring.io\n\n1. Obtain a Consumer key and Consumer secret from https://developer.roaring.io/keys\n   (separate sandbox and production pairs).\n2. Request an access token by POSTing to the token endpoint:\n\n   POST https://api.roaring.io/token\n   Content-Type: application/x-www-form-urlencoded\n   Authorization: Basic base64(consumer-key:consumer-secret)\n\n   body: grant_type=client_credentials\n\n   Tokens are valid for 3600 seconds. The response contains an access_token of\n   type Bearer.\n3. Send the access token on every API call:\n\n   Authorization: Bearer <access_token>","title":"Global bank account data","version":"1.0","x-logo":{"url":"https://assets.roaring.io/svg/psd2-icon-v3.1.svg"}},"openapi":"3.0.1","paths":{"/account/details/{accountId}":{"get":{"operationId":"getAccountDetails","parameters":[{"description":"Account id","in":"path","name":"accountId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK, successful response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"Returned when something is wrong in the request, e.g. failed argument validation or arguments are missing"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Returned when authentication credentials are insufficient to grant access"},"404":{"description":"Requested resource could not be found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerError"}}},"description":"An internal server error occurred, please contact the system administrator with information on the error"}},"summary":"Gets account details","tags":["BankAccountData"]}},"/account/{accountId}/transactions":{"get":{"description":"Fetches transactions for a given account. Dates must be in yyyy-MM-dd format. The maximum allowed transaction period depends on the bank (ASPSP) and is typically limited to 89-90 days. Requesting a longer period may result in a 'Wrong transactions period requested' error from the bank. If no dates are provided, the bank's default period is used. Use the optional 'strategy' parameter to request the longest history the bank will return, rather than only the requested window.","operationId":"getAccountTransactions","parameters":[{"description":"Account id","in":"path","name":"accountId","required":true,"schema":{"type":"string"}},{"description":"Start date for transactions (inclusive, format: yyyy-MM-dd). The maximum transaction history period depends on the bank (ASPSP), but is typically limited to 90 days. Example: 2025-01-01","in":"query","name":"fromDate","schema":{"type":"string"}},{"description":"End date for transactions (inclusive, format: yyyy-MM-dd). Must be after fromDate. Example: 2025-03-31","in":"query","name":"toDate","schema":{"type":"string"}},{"description":"Continuation key for paginating through results","in":"query","name":"continuationKey","schema":{"type":"string"}},{"description":"Optional transaction fetch strategy. 'default' (the behaviour when omitted) applies fromDate/toDate literally. 'longest' asks the bank for the earliest available transaction and everything after it - toDate is ignored and fromDate is treated as a starting hint, so use it for a first full sync. Not every bank supports extended history; unsupported values are rejected with 400.","in":"query","name":"strategy","schema":{"enum":["default","longest"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK, successful response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"Returned when something is wrong in the request, e.g. failed argument validation or arguments are missing"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Returned when authentication credentials are insufficient to grant access"},"404":{"description":"Requested resource could not be found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerError"}}},"description":"An internal server error occurred, please contact the system administrator with information on the error"}},"summary":"Get account transactions","tags":["BankAccountData"]}},"/aspsps_statuses":{"get":{"operationId":"getAspspsStatuses","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK, successful response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"Returned when something is wrong in the request, e.g. failed argument validation or arguments are missing"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Returned when authentication credentials are insufficient to grant access"},"404":{"description":"Requested resource could not be found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerError"}}},"description":"An internal server error occurred, please contact the system administrator with information on the error"}},"summary":"Gets aspsps statuses","tags":["BankAccountData"]}},"/auth/session":{"get":{"operationId":"getAuthSession","parameters":[{"description":"Auth code","in":"query","name":"authCode","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK, successful response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"Returned when something is wrong in the request, e.g. failed argument validation or arguments are missing"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Returned when authentication credentials are insufficient to grant access"},"404":{"description":"Requested resource could not be found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerError"}}},"description":"An internal server error occurred, please contact the system administrator with information on the error"}},"summary":"Gets auth session","tags":["BankAccountData"]}},"/auth/url":{"post":{"description":"Starts a bank authorization and returns the URL the PSU must visit. The optional 'validityDays' query parameter sets how long the resulting AIS session (consent) stays valid before the PSU must re-authenticate. If omitted it defaults to 180 days. The requested value is automatically capped to the target bank's maximum supported consent validity (maximum_consent_validity, as reported by the bank) and to the 180-day PSD2 regulatory ceiling, so a longer request never causes the bank to reject the session. The resolved values are returned in this response as validityDays and validUntil (so the caller can see when a request was capped), and the same expiry is later echoed as access.valid_until by the 'Gets auth session' endpoint. To see each bank's maximum upfront, read maxValidityDays from the 'Fetch a list of available banks' response. The response also contains 'origin', the scheme and host of the returned url (e.g. https://tilisy.enablebanking.com). Callers who redirect the PSU to the url can ignore it. Callers who instead embed Enable Banking's enablebanking-auth-flow widget must pass it in the widget's required origin attribute, and should read it from each response rather than hardcoding it, since the auth host is changing.","operationId":"getAuthUrlWithQueryParam","parameters":[{"description":"Bank name","in":"query","name":"bankName","required":true,"schema":{"type":"string"}},{"description":"banks country","in":"query","name":"countryCode","required":true,"schema":{"type":"string"}},{"description":"Url which user will be redirected after successful authorization","in":"query","name":"redirectUrl","required":true,"schema":{"type":"string"}},{"description":"Two-letter lowercase language code in ISO 639-1 format. If omitted, defaults to the banks country language","in":"query","name":"language","schema":{"type":"string"}},{"description":"Optional PSU type (e.g. business or personal)","in":"query","name":"psuType","schema":{"type":"string"}},{"description":"Optional desired AIS session validity, in days from now. Defaults to 180 days.Automatically capped to the bank's maximum supported consent validity and to the 180-day PSD2 regulatory ceiling. Must be a positive integer. The resolved expiry is returned as access.valid_until by 'Gets auth session'.","in":"query","name":"validityDays","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialsRequest"}}},"description":"request body with bank credentials"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizationUrlResponse"}}},"description":"OK, successful response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"Returned when something is wrong in the request, e.g. failed argument validation or arguments are missing"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Returned when authentication credentials are insufficient to grant access"},"404":{"description":"Requested resource could not be found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerError"}}},"description":"An internal server error occurred, please contact the system administrator with information on the error"}},"summary":"Gets auth url","tags":["BankAccountData"]}},"/auth/url/{country}/{bankName}":{"post":{"description":"Deprecated, use 'Gets auth url' with query params instead. The optional 'validityDays' query parameter controls how long the AIS session (consent) stays valid; see the non-deprecated 'Gets auth url' endpoint for details. The response also carries the 'origin' of the returned url, needed by callers embedding Enable Banking's auth widget.","operationId":"getAuthUrl","parameters":[{"description":"Bank name","in":"path","name":"bankName","required":true,"schema":{"type":"string"}},{"description":"banks country","in":"path","name":"country","required":true,"schema":{"type":"string"}},{"description":"Url which user will be redirected after successful authorization","in":"query","name":"redirectUrl","required":true,"schema":{"type":"string"}},{"description":"Two-letter lowercase language code in ISO 639-1 format. If omitted, defaults to the banks country language","in":"query","name":"language","schema":{"type":"string"}},{"description":"Optional PSU type (e.g. business or personal)","in":"query","name":"psuType","schema":{"type":"string"}},{"description":"Optional desired AIS session validity, in days from now. Defaults to 180 days.Automatically capped to the bank's maximum supported consent validity and to the 180-day PSD2 regulatory ceiling. Must be a positive integer. The resolved expiry is returned as access.valid_until by 'Gets auth session'.","in":"query","name":"validityDays","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialsRequest"}}},"description":"request body with bank credentials"},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK, successful response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"Returned when something is wrong in the request, e.g. failed argument validation or arguments are missing"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Returned when authentication credentials are insufficient to grant access"},"404":{"description":"Requested resource could not be found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerError"}}},"description":"An internal server error occurred, please contact the system administrator with information on the error"}},"summary":"Gets auth url (path)","tags":["BankAccountData"]}},"/banks/{psuType}":{"get":{"description":"Each bank record includes maxValidityDays — the maximum AIS session (consent) validity the bank supports, in days. Use it to decide the validityDays to pass to 'Gets auth url' (requests above a bank's maximum are capped).","operationId":"getAvailableBanksList","parameters":[{"description":"psu type","in":"path","name":"psuType","required":true,"schema":{"type":"string"}},{"description":"Country connected to bank","in":"query","name":"countryCode","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvailableBanksResult"}}},"description":"OK, successful response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"Returned when something is wrong in the request, e.g. failed argument validation or arguments are missing"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Returned when authentication credentials are insufficient to grant access"},"404":{"description":"Requested resource could not be found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerError"}}},"description":"An internal server error occurred, please contact the system administrator with information on the error"}},"summary":"Fetch a list of available banks","tags":["BankAccountData"]}},"/session/{sessionId}":{"delete":{"operationId":"deleteSession","parameters":[{"description":"Session id","in":"path","name":"sessionId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK, successful response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"Returned when something is wrong in the request, e.g. failed argument validation or arguments are missing"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Returned when authentication credentials are insufficient to grant access"},"404":{"description":"Requested resource could not be found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerError"}}},"description":"An internal server error occurred, please contact the system administrator with information on the error"}},"summary":"Deletes session","tags":["BankAccountData"]}}},"security":[{"OAuth2":[]}],"servers":[{"url":"https://api.roaring.io/global/bank-account-data/1.0"}],"x-category":"person","x-countries":["global"],"x-id":"BankAccountDataApi"}