{"note":"OpenAPI conversion -- returning structured metadata","name":"openbanking-org-uk-account-info-openapi","description":"Account and Transaction API Specification","version":"4.0.0","base_url":"/open-banking/v4.0/aisp","endpoints":29,"raw":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api Account and Transaction API Specification\n@base /open-banking/v4.0/aisp\n@version 4.0.0\n@auth OAuth2 | OAuth2\n@common_fields {Authorization: str # An Authorisation Token as per https://tools.ietf.org/html/rfc6750, x-fapi-auth-date: str # The time when the PSU last logged in with the TPP.  All dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below:  Sun, 10 Sep 2017 19:43:31 UTC, x-fapi-customer-ip-address: str # The PSU's IP address if the PSU is currently logged in with the TPP., x-fapi-interaction-id: str # An RFC4122 UID used as a correlation id., x-customer-user-agent: str # Indicates the user-agent that the PSU is using.}\n@endpoints 29\n@hint download_for_search\n@toc account-access-consents(3), accounts(16), balances(1), beneficiaries(1), direct-debits(1), offers(1), party(1), products(1), scheduled-payments(1), standing-orders(1), statements(1), transactions(1)\n\n@group account-access-consents\n@endpoint POST /account-access-consents\n@desc Create Account Access Consents\n@required {Data: map{Permissions!: [str], ExpirationDateTime: str(date-time), TransactionFromDateTime: str(date-time), TransactionToDateTime: str(date-time)}, Risk: map # The Risk section is sent by the initiating party to the ASPSP. <br /> It is used to specify additional details for risk scoring for Account Info.}\n@returns(201) {Data: map{ConsentId: str, CreationDateTime: str(date-time), Status: str, StatusReason: [map], StatusUpdateDateTime: str(date-time), Permissions: [str], ExpirationDateTime: str(date-time), TransactionFromDateTime: str(date-time), TransactionToDateTime: str(date-time)}, Risk: map, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Account Access Consents Created\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 405: Method Not Allowed, 406: Not Acceptable, 415: Unsupported Media Type, 429: Too Many Requests, 500: Internal Server Error}\n\n@endpoint GET /account-access-consents/{ConsentId}\n@desc Get Account Access Consents\n@required {ConsentId: str # ConsentId}\n@returns(200) {Data: map{ConsentId: str, CreationDateTime: str(date-time), Status: str, StatusReason: [map], StatusUpdateDateTime: str(date-time), Permissions: [str], ExpirationDateTime: str(date-time), TransactionFromDateTime: str(date-time), TransactionToDateTime: str(date-time)}, Risk: map, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Account Access Consents Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endpoint DELETE /account-access-consents/{ConsentId}\n@desc Delete Account Access Consents\n@required {ConsentId: str # ConsentId}\n@returns(204) Account Access Consents Deleted\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endgroup\n\n@group accounts\n@endpoint GET /accounts\n@desc Get Accounts\n@returns(200) {Data: map{Account: [map]}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Accounts Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endpoint GET /accounts/{AccountId}\n@desc Get Accounts\n@required {AccountId: str # AccountId}\n@returns(200) {Data: map{Account: [map]}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Accounts Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endpoint GET /accounts/{AccountId}/balances\n@desc Get Balances\n@required {AccountId: str # AccountId}\n@returns(200) {Data: map{Balance: [map], TotalValue: map{Amount: str, Currency: str}}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Balances Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endpoint GET /accounts/{AccountId}/beneficiaries\n@desc Get Beneficiaries\n@required {AccountId: str # AccountId}\n@returns(200) {Data: map{Beneficiary: [map]}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Beneficiaries Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endpoint GET /accounts/{AccountId}/direct-debits\n@desc Get Direct Debits\n@required {AccountId: str # AccountId}\n@returns(200) {Data: map{DirectDebit: [map]}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Direct Debits Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endpoint GET /accounts/{AccountId}/offers\n@desc Get Offers\n@required {AccountId: str # AccountId}\n@returns(200) {Data: map{Offer: [map]}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Offers Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endpoint GET /accounts/{AccountId}/parties\n@desc Get Parties\n@required {AccountId: str # AccountId}\n@returns(200) {Data: map{Party: [map]}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Parties Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endpoint GET /accounts/{AccountId}/party\n@desc Get Parties\n@required {AccountId: str # AccountId}\n@returns(200) {Data: map{Party: map{PartyId: str, PartyNumber: str, PartyType: str, Name: str, FullLegalName: str, LegalStructure: str, LEI: str, BeneficialOwnership: bool, AccountRole: str, EmailAddress: str, Phone: str, Mobile: str, Relationships: map{Account: map}, Address: [map]}}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Parties Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endpoint GET /accounts/{AccountId}/product\n@desc Get Products\n@required {AccountId: str # AccountId}\n@returns(200) {Data: map{Product: [map]}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Products Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endpoint GET /accounts/{AccountId}/scheduled-payments\n@desc Get Scheduled Payments\n@required {AccountId: str # AccountId}\n@returns(200) {Data: map{ScheduledPayment: [map]}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Scheduled Payments Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endpoint GET /accounts/{AccountId}/standing-orders\n@desc Get Standing Orders\n@required {AccountId: str # AccountId}\n@returns(200) {Data: map{StandingOrder: [map]}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Standing Orders Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endpoint GET /accounts/{AccountId}/statements\n@desc Get Statements\n@required {AccountId: str # AccountId}\n@optional {fromStatementDateTime: str(date-time) # The UTC ISO 8601 Date Time to filter statements FROM NB Time component is optional - set to 00:00:00 for just Date. If the Date Time contains a timezone, the ASPSP must ignore the timezone component., toStatementDateTime: str(date-time) # The UTC ISO 8601 Date Time to filter statements TO NB Time component is optional - set to 00:00:00 for just Date. If the Date Time contains a timezone, the ASPSP must ignore the timezone component.}\n@returns(200) {Data: map{Statement: [map]}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Statements Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endpoint GET /accounts/{AccountId}/statements/{StatementId}\n@desc Get Statements\n@required {StatementId: str # StatementId, AccountId: str # AccountId}\n@returns(200) {Data: map{Statement: [map]}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Statements Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endpoint GET /accounts/{AccountId}/statements/{StatementId}/file\n@desc Get Statements\n@required {StatementId: str # StatementId, AccountId: str # AccountId}\n@returns(200) Statements Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endpoint GET /accounts/{AccountId}/statements/{StatementId}/transactions\n@desc Get Transactions\n@required {StatementId: str # StatementId, AccountId: str # AccountId}\n@returns(200) {Data: map{Transaction: [map]}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Transactions Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endpoint GET /accounts/{AccountId}/transactions\n@desc Get Transactions\n@required {AccountId: str # AccountId}\n@optional {fromBookingDateTime: str(date-time) # The UTC ISO 8601 Date Time to filter transactions FROM NB Time component is optional - set to 00:00:00 for just Date. If the Date Time contains a timezone, the ASPSP must ignore the timezone component., toBookingDateTime: str(date-time) # The UTC ISO 8601 Date Time to filter transactions TO NB Time component is optional - set to 00:00:00 for just Date. If the Date Time contains a timezone, the ASPSP must ignore the timezone component.}\n@returns(200) {Data: map{Transaction: [map]}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Transactions Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endgroup\n\n@group balances\n@endpoint GET /balances\n@desc Get Balances\n@returns(200) {Data: map{Balance: [map], TotalValue: map{Amount: str, Currency: str}}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Balances Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endgroup\n\n@group beneficiaries\n@endpoint GET /beneficiaries\n@desc Get Beneficiaries\n@returns(200) {Data: map{Beneficiary: [map]}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Beneficiaries Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endgroup\n\n@group direct-debits\n@endpoint GET /direct-debits\n@desc Get Direct Debits\n@returns(200) {Data: map{DirectDebit: [map]}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Direct Debits Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endgroup\n\n@group offers\n@endpoint GET /offers\n@desc Get Offers\n@returns(200) {Data: map{Offer: [map]}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Offers Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endgroup\n\n@group party\n@endpoint GET /party\n@desc Get Parties\n@returns(200) {Data: map{Party: map{PartyId: str, PartyNumber: str, PartyType: str, Name: str, FullLegalName: str, LegalStructure: str, LEI: str, BeneficialOwnership: bool, AccountRole: str, EmailAddress: str, Phone: str, Mobile: str, Relationships: map{Account: map}, Address: [map]}}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Parties Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endgroup\n\n@group products\n@endpoint GET /products\n@desc Get Products\n@returns(200) {Data: map{Product: [map]}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Products Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endgroup\n\n@group scheduled-payments\n@endpoint GET /scheduled-payments\n@desc Get Scheduled Payments\n@returns(200) {Data: map{ScheduledPayment: [map]}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Scheduled Payments Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endgroup\n\n@group standing-orders\n@endpoint GET /standing-orders\n@desc Get Standing Orders\n@returns(200) {Data: map{StandingOrder: [map]}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Standing Orders Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endgroup\n\n@group statements\n@endpoint GET /statements\n@desc Get Statements\n@optional {fromStatementDateTime: str(date-time) # The UTC ISO 8601 Date Time to filter statements FROM NB Time component is optional - set to 00:00:00 for just Date. If the Date Time contains a timezone, the ASPSP must ignore the timezone component., toStatementDateTime: str(date-time) # The UTC ISO 8601 Date Time to filter statements TO NB Time component is optional - set to 00:00:00 for just Date. If the Date Time contains a timezone, the ASPSP must ignore the timezone component.}\n@returns(200) {Data: map{Statement: [map]}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Statements Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endgroup\n\n@group transactions\n@endpoint GET /transactions\n@desc Get Transactions\n@optional {fromBookingDateTime: str(date-time) # The UTC ISO 8601 Date Time to filter transactions FROM NB Time component is optional - set to 00:00:00 for just Date. If the Date Time contains a timezone, the ASPSP must ignore the timezone component., toBookingDateTime: str(date-time) # The UTC ISO 8601 Date Time to filter transactions TO NB Time component is optional - set to 00:00:00 for just Date. If the Date Time contains a timezone, the ASPSP must ignore the timezone component.}\n@returns(200) {Data: map{Transaction: [map]}, Links: map{Self: str(uri), First: str(uri), Prev: str(uri), Next: str(uri), Last: str(uri)}, Meta: map{TotalPages: int(int32), FirstAvailableDateTime: str(date-time), LastAvailableDateTime: str(date-time)}} # Transactions Read\n@errors {400: Bad request, 401: Unauthorized, 403: Forbidden, 404: Not found, 405: Method Not Allowed, 406: Not Acceptable, 429: Too Many Requests, 500: Internal Server Error}\n\n@endgroup\n\n@end\n"}