{"files":{"SKILL.md":"---\nname: account-and-transaction-api-specification\ndescription: \"Account and Transaction API Specification API skill. Use when working with Account and Transaction API Specification for account-access-consents, accounts, balances. Covers 29 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# Account and Transaction API Specification\nAPI version: 4.0.0\n\n## Auth\nOAuth2 | OAuth2\n\n## Base URL\n/open-banking/v4.0/aisp\n\n## Setup\n1. Configure auth: OAuth2 | OAuth2\n2. GET /accounts -- verify access\n3. POST /account-access-consents -- create first account-access-consents\n\n## Endpoints\n\n29 endpoints across 12 groups. See references/api-spec.lap for full details.\n\n### account-access-consents\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /account-access-consents | Create Account Access Consents |\n| GET | /account-access-consents/{ConsentId} | Get Account Access Consents |\n| DELETE | /account-access-consents/{ConsentId} | Delete Account Access Consents |\n\n### accounts\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /accounts | Get Accounts |\n| GET | /accounts/{AccountId} | Get Accounts |\n| GET | /accounts/{AccountId}/balances | Get Balances |\n| GET | /accounts/{AccountId}/beneficiaries | Get Beneficiaries |\n| GET | /accounts/{AccountId}/direct-debits | Get Direct Debits |\n| GET | /accounts/{AccountId}/offers | Get Offers |\n| GET | /accounts/{AccountId}/parties | Get Parties |\n| GET | /accounts/{AccountId}/party | Get Parties |\n| GET | /accounts/{AccountId}/product | Get Products |\n| GET | /accounts/{AccountId}/scheduled-payments | Get Scheduled Payments |\n| GET | /accounts/{AccountId}/standing-orders | Get Standing Orders |\n| GET | /accounts/{AccountId}/statements | Get Statements |\n| GET | /accounts/{AccountId}/statements/{StatementId} | Get Statements |\n| GET | /accounts/{AccountId}/statements/{StatementId}/file | Get Statements |\n| GET | /accounts/{AccountId}/statements/{StatementId}/transactions | Get Transactions |\n| GET | /accounts/{AccountId}/transactions | Get Transactions |\n\n### balances\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /balances | Get Balances |\n\n### beneficiaries\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /beneficiaries | Get Beneficiaries |\n\n### direct-debits\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /direct-debits | Get Direct Debits |\n\n### offers\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /offers | Get Offers |\n\n### party\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /party | Get Parties |\n\n### products\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /products | Get Products |\n\n### scheduled-payments\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /scheduled-payments | Get Scheduled Payments |\n\n### standing-orders\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /standing-orders | Get Standing Orders |\n\n### statements\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /statements | Get Statements |\n\n### transactions\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /transactions | Get Transactions |\n\n## Common Questions\n\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"Create a account-access-consent?\" -> POST /account-access-consents\n- \"Get account-access-consent details?\" -> GET /account-access-consents/{ConsentId}\n- \"Delete a account-access-consent?\" -> DELETE /account-access-consents/{ConsentId}\n- \"List all accounts?\" -> GET /accounts\n- \"Get account details?\" -> GET /accounts/{AccountId}\n- \"List all balances?\" -> GET /accounts/{AccountId}/balances\n- \"List all beneficiaries?\" -> GET /accounts/{AccountId}/beneficiaries\n- \"List all direct-debits?\" -> GET /accounts/{AccountId}/direct-debits\n- \"List all offers?\" -> GET /accounts/{AccountId}/offers\n- \"List all parties?\" -> GET /accounts/{AccountId}/parties\n- \"List all party?\" -> GET /accounts/{AccountId}/party\n- \"List all product?\" -> GET /accounts/{AccountId}/product\n- \"List all scheduled-payments?\" -> GET /accounts/{AccountId}/scheduled-payments\n- \"List all standing-orders?\" -> GET /accounts/{AccountId}/standing-orders\n- \"List all statements?\" -> GET /accounts/{AccountId}/statements\n- \"Get statement details?\" -> GET /accounts/{AccountId}/statements/{StatementId}\n- \"List all file?\" -> GET /accounts/{AccountId}/statements/{StatementId}/file\n- \"List all transactions?\" -> GET /accounts/{AccountId}/statements/{StatementId}/transactions\n- \"List all transactions?\" -> GET /accounts/{AccountId}/transactions\n- \"List all balances?\" -> GET /balances\n- \"List all beneficiaries?\" -> GET /beneficiaries\n- \"List all direct-debits?\" -> GET /direct-debits\n- \"List all offers?\" -> GET /offers\n- \"List all party?\" -> GET /party\n- \"List all products?\" -> GET /products\n- \"List all scheduled-payments?\" -> GET /scheduled-payments\n- \"List all standing-orders?\" -> GET /standing-orders\n- \"List all statements?\" -> GET /statements\n- \"List all transactions?\" -> GET /transactions\n- \"How to authenticate?\" -> See Auth section\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Create/update endpoints typically return the created/updated object\n\n## CLI\n\n```bash\n# Update this spec to the latest version\nnpx @lap-platform/lapsh get account-and-transaction-api-specification -o references/api-spec.lap\n\n# Search for related APIs\nnpx @lap-platform/lapsh search account-and-transaction-api-specification\n```\n\n## References\n- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas\n\n> Generated from the official API spec by [LAP](https://lap.sh)\n","references/api-spec.lap":"@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"}}