The AB Open Banking API Platform for Digital Transformation
In 2010 we just started out, our first product Uniview had tremendous traction. Uniview initially started as "DocumentDisplay" with the purpose of displaying Bills and Invoices on the browser. The subsequent avatar Uniview (short for universal viewer) had a payment gateway integrated to facilitate payments. This was because Uniview was predominently used to display Invoices and Bills, usually those that required recurring payments like Fees, Subscriptions etc. For close to nine years till about 2019, when we decided to open source the code, it was an undisputed leader with integrations to about ten payment gateway vendors including Airpay, Atom, EBS, HDFC FSS, HDFC EBS, ICICI, PayU, PayTM, Worldline etc. The product would undergo a feature addition every month followed by regression testing. The programming velocity was high and during this time we launched our Digital Lending SaaS application. During this time we felt the need to have a common platform for all our products and the idea for "AB Platform" had just been sown. During 2016-17 the first version of the "AB Platform" was written ground-up in PHP, We then released a second version on BPMN and Workflow before the pandemic hit the world in 2020. During this time our workflow vendor had challenges, so we ported parts of the code to an open source workflow tool Activiti. Though Activiti was a good fit for workflow there were areas where we needed additional tools. So after a lot of research during Spetember 2020 we decided to use the PHP Symfony framework as the base for the "AB Platform". The platform comes with built in support for various standards and has several components integrated to facilitate development of software applications especially those that need to adhere to Open Banking Standards.
What is Open Banking?
Open Banking is a term used to describe the sharing of Financial Data of an Institution with partners through the use of API's usually over the Internet Cloud. For example a Bank can allow access to its "Customer Acquisition" data to "field Investigation" agencies to facilitate telephone and contact point verifications.
The Platform approach
Application Platforms accelerate the adoption of standards that accelerate development and deployment of applications, seamless sharing of information and provide a unified experience for users. "AB Platform" simplifies the development of Open Banking API's and automates the release process. "AB Platform" is cloud vendor agnostic i.e it can run on AWS, Azure, Digital Ocean or GCP with very little or no change at all. The "AB Platform" is "12 Factor" compliant and includes tools to
- Integrate and version source code
- Continuously Integrate and deploy the application to production environment
- Configuration management of the server environment
- Container Images to scale the application
- facilitate Asynchronous messaging amongst applications
- Centralised logging and monitoring of application and infrstructure components
Standards Support
The "AB Platform" comes with open API standards support like JSON, JSON-LD and Hydra. JSON is an Open Standard format for Data Interchange on the cloud. Orginally derived from JavaScript it is now supported by most programming languages and scripts. A sample JSON for a customer record would look somthing like this
{ "first_name": "Sridhar", "last_name": "Pandurangiah", "dateofbirth": 10/03/1970, "address": { "House/Unit": "1,", "Floor": "3rd Floor", "Building Name": "", "Street": "Gaudiya Mutt Road", "Locality": "Royapettah", "City": "Chennai", "State": "TN", "Country": "IN" }, "phone_numbers": [ { "type": "office", "country code": "91", "state code": "44", "number": "42070027" }, { "type": "mobile", "country code": "91", "state code": "", "number": "8056999999" ], }
JSON-LD or JavaScript Object Notation for Lined Dta is a Open Standards format format for linking data. This means that a JSON-LD file can contain links to other standards and formats that are hosted on other servers. The above example in JSON-LD would look something like this
{ "@context": "http://schema.org/", "@type": "Person", "first_name": "Sridhar", "last_name": "Pandurangiah", "dateofbirth": "10/03/1970", { "@context": { "name": "http://schema.org/name", "description": "http://schema.org/description", "image": { "@id": "http://schema.org/image", "@type": "@id" }, "geo": "http://schema.org/geo", "latitude": { "@id": "http://schema.org/latitude", "@type": "xsd:float" }, "longitude": { "@id": "http://schema.org/longitude", "@type": "xsd:float" }, "xsd": "http://www.w3.org/2001/XMLSchema#" }, "name": "123, Gaudiya Mutt Road, Royapettah, Chennai, TN, IN", "description": "Office address of Sastra Technologies", "image": "", "geo": { "latitude": "13.049464478084257", "longitude": "80.2621391388931" } } }
The Hydra standard is an effort to simplify the creation of interoperable API's on the Cloud. Hydra builds on the JSON-LD standards. Here is a snippet of the Hydra context of an API built on the AB Platform that lists some Financial Statements
{
"hydra:member": [
{
"@context": "string",
"@id": "string",
"@type": "string",
"id": 0,
"fstype_Id": 0,
"fstype_ShortCode": "string",
"fstype_Name": "string",
"fstype_CreatedBy": "string",
"fstype_CreatedOn": "2024-02-22T06:42:45.662Z",
"fstypeId": 0,
"fstypeShortCode": "string",
"fstypeName": "string",
"fstypeCreatedBy": "string",
"fstypeCreatedOn": "2024-02-22T06:42:45.662Z"
}
],
"hydra:totalItems": 0,
"hydra:view": {
"@id": "string",
"@type": "string",
"hydra:first": "string",
"hydra:last": "string",
"hydra:previous": "string",
"hydra:next": "string"
},
"hydra:search": {
"@type": "string",
"hydra:template": "string",
"hydra:variableRepresentation": "string",
"hydra:mapping": [
{
"@type": "string",
"variable": "string",
"property": "string",
"required": true
}
]
}
}
Consumption
Though Open API's are designed to simplify data interchange between servers they can be consumed in a variety of ways inluding rendering on the command line, over a browser, a variety of suer interfaces etc. Here are a few examples of how the the Open Banking API's can be consumed
Curl is a Command Line tool for accessing API's on a variety of Operating Systems. Here is an example of accessing the API using Curl on an Ubuntu terminal
Postman is a platform for accessing and testing API's. The site allows users to provide the URL and the parameters and the application fetches the data from the API. Here is an example of the API accessed using Postman.
Hopscotch is another Platform for accessing API's. The site allows users to provide the URL and the parameters and the application fetches the data from the API. Here is an example of the API accessed using Hopscotch
There are several other tools on the command line like Httpie, Wget and several more on the cloud for accessing and testing API's. Any of these tools could be used to access the API's published by the AB Platform.
Cloud Vendor Agnostic
The "AB Platform" can be deployed in the enterprise or on the Cloud. The Platform is Cloud vendor agnostic which means that it can be deployed on AWS, Azure, Digital Ocean, GCP or any other cloud provided the Cloud platform supports PHP.
Digital Transformation Platform
The "AB Platform" is currently in its third major release. We have built our application products on this platform. Several vendors have built glue scripts, integrations and user intefaces for our API's. Demonstrations of these are available on request.