Describes the bank search functionality in a FinTech Application. Generally bank search is provided to prevent PSU from manually entering complicated bank identifiers.
This bank search API allows for incremental keyword based search.
We will distinguish between remote and local incremental search.
The remote incremental search is implemented on the server side. A rest endpoint receives a keyword and return a list of matching search entries.
Use cases for this API:
- PSU loads FinTechSearchScreen
- FinTechUI displays a search screen to the PSU
- PSU enters any keyword in the search input field
- FinTechUI forward request to FinTechAPI
- FinTechAPI forward request to TppBankSearchApi
- TppBankSearchApi returns a list of matching BankDescriptors to FinTechAPI
- FinTechAPI returns a list of matching BankDescriptors to FinTechBankSearchUI
- UI displays list of found bank descriptors to PSU
Step 4. through 8. is repeated as long as PSU modifies keywords (by adding or removing characters)
The FinTechUI sends a get request to the FinTechApi. Request contains
- keyword (searchInput): The bank search input string
- start (searchStartIndex): The index of the first result
- max (searchMaxResult): the max number of entries to return with the response.
- sessionState: provided as a path param. Used to read the FinTechLoginSessionCookie.
- FinTechLoginSessionCookie: provided in the Cookie header. Used to identify the PSU.
The FinTechApi sends a get request to the TppBankSearchApi. Request contains
- keyword (searchInput): The bank search input string
- start (searchStartIndex): The index of the first result
- max (searchMaxResult): the max number of entries to return with the response.
TppBankSearchApi returns a search result with following information.
- List: found entries.
- searchInput: The bank search input string (might have been normalized in the backend).
- searchStartIndex: The index of the first result
- searchMaxResult: The max number of entries to return with the response.
- searchTotalResult: The total count of entities found for the given search input.
Result returned to FinTechUI contains same information as in RemoteSearch-005 and addition session management information like:
- sessionState: provided in the response body. Used read the FinTechLoginSessionCookie.
- FinTechLoginSessionCookie: provided in the Set-Cookie header.
Finally, the FinTechUI display's the bank search result to the PSU.
Local incremental search generally provides a way of reducing round trip to servers. So there is no local incremental search endpoint, but an endpoint to download the list of all BankProfiles.
The client is then responsible for the indexing and the implementation of the search logic.
For the purpose of keeping the client code simple, interface will also provide the possibility of downloading a standard lucene index file, as many platform provide login provide processing of lucene indexes. This approach will prevent each client from perfoming the expensive lucene indexing.
The following diagram describes additional steps performed in the local incremental search.
Use cases for this API:
- PSU loads FinTechSearchScreen
- FinTechUI requests the BankSearchIndex from FinTechApi
- FinTechApi requests the BankSearchIndex from TppBankSearchApi
- TppBankSearchApi return BankSearchIndex to FinTechApi
- FinTechApi return BankSearchIndex to FinTechUI
- FinTechUI displays a search screen to the PSU
- PSU enters any keyword in the search input field
- FinTechUI call the search routine of the embedded LocalSearch
- LocalSearch uses the keyword to retrieve the list of matching entries
- LocalSearch returns a list of matching BankDescriptors to FinTechBankSearchUI
- UI displays list of found bank descriptors to PSU
Step 8. through 11. is repeated as long as PSU modifies keywords (by adding or removing characters)
Like this diagram shows, local bank search does not send request to the network.
PSU loads the FinTechSearchString of the FinTechUI.
The FinTechUI sends a get request to the FinTechApi. If the List is not yet loaded by the FinTechUI, the FinTechUI issues a bankSearch request to the FinTechApi. A keyword passed as query parameter allows the backend to reduce the initial extent of records included in the index.
- keyword (searchInput): The bank search input string. Must be used to reduce the extent of records to be included in the local search. E.g.: c=DE could limit the search to bank in Germany.
- start (searchStartIndex): The index of the first result. The start will be set to 0 to get all records.
- max (searchMaxResult): the max number of entries to return with the response. Set this number to -1 to receive all applicable records from the server.
- sessionState: provided as a path parameter. Used to read the FinTechLoginSessionCookie.
- FinTechLoginSessionCookie: provided in the Cookie header. Used to identify the PSU.
TppBankSearchApi returns a search result with following information.
- List: found entries.
- searchInput: The bank search input string (might have been normalized in the backend).
- searchStartIndex: The index of the first result
- searchMaxResult: The max number of entries to return with the response.
- searchTotalResult: The total count of entities found for the given search input.
The FinTechApi sends a get request to the TppBankSearchApi. Request contains
- keyword (searchInput): The bank search input string
- start (searchStartIndex): The index of the first result
- max (searchMaxResult): the max number of entries to return with the response.
TppBankSearchApi returns a search result with following information.
- List: found entries.
- searchInput: The bank search input string (might have been normalized in the backend).
- searchStartIndex: The index of the first result
- searchMaxResult: The max number of entries to return with the response.
- searchTotalResult: The total count of entities found for the given search input.
Result returned to FinTechUI contains same information as in LocalSearch-103 and addition session management information like:
- sessionState: provided in the response body. Used read the FinTechLoginSessionCookie.
- FinTechLoginSessionCookie: provided in the Set-Cookie header.
As the PSU enters search keywords, the FinTechUI issues a search request to the LocalSearch that performs the search operation locally and returns corresponding result that is displayed to the PSU on the go.
The searchInput object passed to FinTechApi in this case is called discriminator and is used to reduce the extent of records to be included in the local search. E.g.: c=DE could limit the search to bank in Germany. If for example the TPP does not support some banks, he can include that information in the searchInput-String.
This is the UI-Komponent that operates (like lucene) on a local search index in the UI-Application. The technology used to implement this search is specific to the UI technology. JavaScript based technologies might use tools like: elasticlunr
The List return for the purpose of a local search can be cached by the FinTechApi to reduce quantity of request issued to the TppBankSearchApi