Electronic system for intelligent processing and routing of incoming API requests based on context matching

An electronic system is typically configured for crawling, via a machine learning model, into one or more API servers, wherein the one or more API servers comprise one or more versions of one or more APIs, capturing, via the machine learning model, information associated with the one or more versions of the one or more APIs, creating context objects associated with each of the one or more versions of the one or more APIs, receiving a real-time API request from a client system, processing the real-time API request received from the client system, and routing the real-time API request to an API version of the one or more versions.

BACKGROUND

Current conventional systems route the incoming API requests using techniques such as API versioning, custom headers, accept headers or the like. However, using such techniques may be inefficient as there are multiple versions of APIs in any entity and the clients associated with the incoming requests need to provide headers and content in a certain format for the routing to work. As such, there exists a need for a system to intelligently process and route incoming API requests without using the techniques mentioned above.

BRIEF SUMMARY

Embodiments of the present invention address the above needs and/or achieve other advantages by providing apparatuses (e.g., a system, computer program product and/or other devices) and methods for intelligently processing and routing the incoming API requests based on context matching. The system embodiments may comprise one or more memory devices having computer readable program code stored thereon, a communication device, and one or more processing devices operatively coupled to the one or more memory devices, wherein the one or more processing devices are configured to execute the computer readable program code to carry out the invention. In computer program product embodiments of the invention, the computer program product comprises at least one non-transitory computer readable medium comprising computer readable instructions for carrying out the invention. Computer implemented method embodiments of the invention may comprise providing a computing system comprising a computer processing device and a non-transitory computer readable medium, where the computer readable medium comprises configured computer program instruction code, such that when said instruction code is operated by said computer processing device, said computer processing device performs certain operations to carry out the invention. For sample, illustrative purposes, system environments will be summarized. The system may crawl, via machine learning model, into one or more API servers, wherein the one or more API servers comprise one or more versions of one or more APIs, capture, via the machine learning model, information associated with the one or more versions of the one or more APIs, create context objects associated with each of the one or more versions of the one or more APIs, receive a real-time API request from a client system, process the real-time API request received from the client system, and route the real-time API request to an API version of the one or more versions.

In some embodiments, the system sends a response to the client system based on routing the real-time API request, wherein the response is generated based on combining an output provided by the API version and context in a context object associated with the API version.

In some embodiments, the system determines that the API version does not exist in the one or more API servers and generates the API version in response to determining that the API version does not exist in the one or more API servers.

In some embodiments, the system processes the real-time API request based on identifying one or more requirements associated with the real-time API request.

In some embodiments, the system routes the real-time API request to the API version based on identifying a match between the one or more requirements and information associated with the API version.

In some embodiments, creating the context objects comprises creating context associated with each of the one or more API versions.

In some embodiments, the system identifies, via the machine learning model, differences between the one or more versions of the one or more APIs in response to crawling into the one or more API servers.

DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION

In accordance with embodiments of the invention, the term “entity” may include any organization that utilizes APIs. Furthermore, embodiments of the present invention use the term “user.” It will be appreciated by someone with ordinary skill in the art that the user may be an employee of the entity or third-party entity. In accordance with embodiments of the present invention, the term “third party entity” or “calling party” may be any third-party system that may or may not be a customer of the entity. In an embodiment of the present invention, the entity may be a financial institution, the third-party entity may be a merchant, and a user may be an employee (e.g., application developer) of the merchant or the financial institution.

As of today, Application Programming Interfaces (API's) are being used by various entities. With the rapid development of API's that are being generated from multiple streams of functionality in larger enterprises, it is difficult to keep track of the different API's that are being used within a large entity. For each change that is associated with an API, entities create a new version of the API which in turn increases the number of API's that are in an entity. There may be different kind of changes and depending upon the type of changes, multiple versions are created. The different kind of changes may be classified as breaking changes (e.g., a change in the format, response type changes, any specific logic changes) and non-breaking changes (e.g., response parameter addition, or the like).

To manage the multiple versions of API's, conventional systems typically use versioning, custom headers, accept headers, and the like with which the changes are expected at the calling parties. Conventional systems utilize version numbering, publish the version numbering to their calling parties, and establish handshaking in order to route the incoming API request to the correct version of API. Typically, large entities create version numbers for each type of change and publish the version numbers of API's to calling parties. The calling parties use the published version numbers to send out the API requests to the entity. The conventional systems of the entity read the version number in the API request and route the request to the correct API. However, the process of using version numbering and publishing the version numbering to the calling parties may not be efficient as the calling parties may make changes to the version numbering locally on their copy and forget to notify the entity about it. In some other cases, the entity may make changes to the version numbering after publishing the version numbering to the calling parties. In some other cases, the calling parties may create a new request which is associated with version number of an API that has not been generated or published by the entity. As such, usage of version numbering, publishing to calling parties, and establishing handshaking is not an efficient way to receive and serve the request of calling parties. There exists a need for a system to efficiently receive the request of calling parties, process the request, and route the request to the correct API.

The present invention circumvents all the above-noted issues by presenting a way to received and intelligently process and route the incoming API requests from calling parties. Instead of maintaining the different versions, the system of the present invention upon receiving a request from the calling parties, intelligently analyzes the incoming requests without any version numbers and routes the incoming request to the correct API. In some embodiments, the incoming request may be associated with an API or a version of an API that doesn't exist. In such an embodiment, the system of the present invention automatically generates an API or a version of an API and serves the incoming requests dynamically.

FIG. 1provides a block diagram illustrating a system environment100for intelligently processing and routing the incoming API requests based on context matching, in accordance with an embodiment of the invention. As illustrated inFIG. 1, the environment100includes an intelligent routing system300, entity system200, a computing device system400, the and client system201. One or more users110may be included in the system environment100, where the users110interact with the other entities of the system environment100via a user interface of the computing device system400. In some embodiments, the one or more user(s)110of the system environment100may be employees of an entity associated with the entity system200.

The entity system(s)200may be any system owned or otherwise controlled by an entity to support or perform one or more process steps described herein. In some embodiments, the entity is a financial institution. The client system201may be any system associated with a third-party entity. In some embodiments, the third-party entity may be a customer of the entity.

The intelligent routing system300is a system of the present invention for performing one or more process steps described herein. In some embodiments, the intelligent routing system300may be an independent system. In some embodiments, the intelligent routing system300may be a part of the entity system200.

The intelligent routing system300, the entity system200, the computing device system400, and/or the client system201may be in network communication across the system environment100through the network150. The network150may include a local area network (LAN), a wide area network (WAN), and/or a global area network (GAN). The network150may provide for wireline, wireless, or a combination of wireline and wireless communication between devices in the network. In one embodiment, the network150includes the Internet. In general, the intelligent routing system300is configured to communicate information or instructions with the entity system200, the computing device system400, and/or the client system201across the network150.

The computing device system400may be a computing device of the user11. In general, the computing device system400communicates with the user110via a user interface of the computing device system400, and in turn is configured to communicate information or instructions with the intelligent routing system300, entity system200, and/or the client system201across the network150.

FIG. 2provides a block diagram illustrating the entity system200, in greater detail, in accordance with embodiments of the invention. As illustrated inFIG. 2, in one embodiment of the invention, the entity system200includes one or more processing devices220operatively coupled to a network communication interface210and a memory device230. In some embodiments, the entity system200may be operated by any entity that develops software applications. In certain embodiments, the entity system200is operated by a first entity, such as a financial institution, while in other embodiments, the entity system200is operated by an entity other than a financial institution.

It should be understood that the memory device230may include one or more databases or other data structures/repositories. The memory device230also includes computer-executable program code that instructs the processing device220to operate the network communication interface210to perform certain communication functions of the entity system200described herein. For example, in one embodiment of the entity system200, the memory device230includes, but is not limited to, a network server application240, an intelligent routing application250, one or more entity applications260, and a data repository280comprising one or more API versions286and user data288. The computer-executable program code of the network server application240, the intelligent routing application250, and the one or more entity applications260to perform certain logic, data-extraction, and data-storing functions of the entity system200described herein, as well as communication functions of the entity system200.

The network server application240, the intelligent routing application250and the one or more entity applications260are configured to store data in the data repository280or to use the data stored in the data repository280when communicating through the network communication interface210with the intelligent routing system300, the computing device system400, and/or the client system201to perform one or more process steps described herein. In some embodiments, the entity system200may receive instructions from the intelligent routing system300via the intelligent routing application250to perform certain operations. The intelligent routing application250may be provided by the intelligent routing system300.

FIG. 3provides a block diagram illustrating the intelligent routing system300in greater detail, in accordance with embodiments of the invention. As illustrated inFIG. 3, in one embodiment of the invention, the intelligent routing system300includes one or more processing devices320operatively coupled to a network communication interface310and a memory device330. In certain embodiments, the intelligent routing system300is operated by a first entity, such as a financial institution, while in other embodiments, the intelligent routing system300is operated by an entity other than a financial institution. In some embodiments, the intelligent routing system300is owned or operated by the entity of the entity system200. In some embodiments, the intelligent routing system300may be an independent system. In alternate embodiments, the intelligent routing system300may be a part of the entity system200.

It should be understood that the memory device330may include one or more databases or other data structures/repositories. The memory device330also includes computer-executable program code that instructs the processing device320to operate the network communication interface310to perform certain communication functions of the intelligent routing system300described herein. For example, in one embodiment of the intelligent routing system300, the memory device330includes, but is not limited to, a network provisioning application340, an API crawler350, an API context maker360, an API broker370, and a data repository390comprising context objects395created by the API context maker and data processed or accessed by one or more applications in the memory device330. The computer-executable program code of the network provisioning application340, the API crawler350, the API context maker360, and the API broker370may instruct the processing device320to perform certain logic, data-processing, and data-storing functions of the intelligent routing system300described herein, as well as communication functions of the intelligent routing system300.

The network provisioning application340, the API crawler350, the API context maker360, and the API broker370are configured to invoke or use the data in the data repository390when communicating through the network communication interface310with the entity system200, the computing device system400, and/or the client system201. In some embodiments, the network provisioning application340, the API crawler350, the API context maker360, and the API broker370may store the data extracted or received from the entity system200, the client system201, and the computing device system400in the data repository390. In some embodiments, the network provisioning application340, the API crawler350, the API context maker360, and the API broker370may be a part of a single application. One or more processes performed by the network provisioning application340, the API crawler350, the API context maker360, and the API broker370are described inFIG. 5andFIG. 6.

FIG. 4provides a block diagram illustrating a computing device system400ofFIG. 1in more detail, in accordance with embodiments of the invention. However, it should be understood that the computing device system400is merely illustrative of one type of computing device system that may benefit from, employ, or otherwise be involved with embodiments of the present invention and, therefore, should not be taken to limit the scope of embodiments of the present invention. The computing devices may include any one of portable digital assistants (PDAs), pagers, mobile televisions, mobile phone, gaming devices, desktop computers, workstations, laptop computers, cameras, video recorders, audio/video player, radio, GPS devices, wearable devices, Internet-of-things devices, augmented reality devices, virtual reality devices, automated teller machine devices, electronic kiosk devices, or any combination of the aforementioned.

Some embodiments of the computing device system400include a processor410communicably coupled to such devices as a memory420, user output devices436, user input devices440, a network interface460, a power source415, a clock or other timer450, a camera480, and a positioning system device475. The processor410, and other processors described herein, generally include circuitry for implementing communication and/or logic functions of the computing device system400. For example, the processor410may include a digital signal processor device, a microprocessor device, and various analog to digital converters, digital to analog converters, and/or other support circuits. Control and signal processing functions of the computing device system400are allocated between these devices according to their respective capabilities. The processor410thus may also include the functionality to encode and interleave messages and data prior to modulation and transmission. The processor410can additionally include an internal data modem. Further, the processor410may include functionality to operate one or more software programs, which may be stored in the memory420. For example, the processor410may be capable of operating a connectivity program, such as a web browser application422. The web browser application422may then allow the computing device system400to transmit and receive web content, such as, for example, location-based content and/or other web page content, according to a Wireless Application Protocol (WAP), Hypertext Transfer Protocol (HTTP), and/or the like.

The processor410is configured to use the network interface460to communicate with one or more other devices on the network150. In this regard, the network interface460includes an antenna476operatively coupled to a transmitter474and a receiver472(together a “transceiver”). The processor410is configured to provide signals to and receive signals from the transmitter474and receiver472, respectively. The signals may include signaling information in accordance with the air interface standard of the applicable cellular system of the wireless network152. In this regard, the computing device system400may be configured to operate with one or more air interface standards, communication protocols, modulation types, and access types. By way of illustration, the computing device system400may be configured to operate in accordance with any of a number of first, second, third, and/or fourth-generation communication protocols and/or the like. For example, the computing device system400may be configured to operate in accordance with second-generation (2G) wireless communication protocols IS-136 (time division multiple access (TDMA)), GSM (global system for mobile communication), and/or IS-95 (code division multiple access (CDMA)), or with third-generation (3G) wireless communication protocols, such as Universal Mobile Telecommunications System (UMTS), CDMA2000, wideband CDMA (WCDMA) and/or time division-synchronous CDMA (TD-SCDMA), with fourth-generation (4G) wireless communication protocols, with LTE protocols, with 4GPP protocols and/or the like. The computing device system400may also be configured to operate in accordance with non-cellular communication mechanisms, such as via a wireless local area network (WLAN) or other communication/data networks.

As described above, the computing device system400has a user interface that is, like other user interfaces described herein, made up of user output devices436and/or user input devices440. The user output devices436include a display430(e.g., a liquid crystal display or the like) and a speaker432or other audio device, which are operatively coupled to the processor410.

The user input devices440, which allow the computing device system400to receive data from a user such as the user110may include any of a number of devices allowing the computing device system400to receive data from the user110, such as a keypad, keyboard, touch-screen, touchpad, microphone, mouse, joystick, other pointer device, button, soft key, and/or other input device(s). The user interface may also include a camera480, such as a digital camera.

The computing device system400may also include a positioning system device475that is configured to be used by a positioning system to determine a location of the computing device system400. For example, the positioning system device475may include a GPS transceiver. In some embodiments, the positioning system device475is at least partially made up of the antenna476, transmitter474, and receiver472described above. For example, in one embodiment, triangulation of cellular signals may be used to identify the approximate or exact geographical location of the computing device system400. In other embodiments, the positioning system device475includes a proximity sensor or transmitter, such as an RFID tag, that can sense or be sensed by devices known to be located proximate a merchant or other location to determine that the computing device system400is located proximate these known devices.

The computing device system400further includes a power source415, such as a battery, for powering various circuits and other devices that are used to operate the computing device system400. Embodiments of the computing device system400may also include a clock or other timer450configured to determine and, in some cases, communicate actual or relative time to the processor410or one or more other devices.

The computing device system400also includes a memory420operatively coupled to the processor410. As used herein, memory includes any computer readable medium (as defined herein below) configured to store data, code, or other information. The memory420may include volatile memory, such as volatile Random Access Memory (RAM) including a cache area for the temporary storage of data. The memory420may also include non-volatile memory, which can be embedded and/or may be removable. The non-volatile memory can additionally or alternatively include an electrically erasable programmable read-only memory (EEPROM), flash memory or the like.

The memory420can store any of a number of applications which comprise computer-executable instructions/code executed by the processor410to implement the functions of the computing device system400and/or one or more of the process/method steps described herein. For example, the memory420may include such applications as a conventional web browser application422, a intelligent routing application421, an entity application424, or the like. These applications also typically instructions to a graphical user interface (GUI) on the display430that allows the user110to interact with the entity system200, the intelligent routing system300, and/or other devices or systems. The memory420of the computing device system400may comprise a Short Message Service (SMS) application423configured to send, receive, and store data, information, communications, alerts, and the like via the wireless telephone network152.

The memory420can also store any of a number of pieces of information, and data, used by the computing device system400and the applications and devices that make up the computing device system400or are in communication with the computing device system400to implement the functions of the computing device system400and/or the other systems described herein.

FIG. 5provides a block diagram illustrating the process of intelligently routing the incoming API requests, in accordance with an embodiment of the invention. The API crawler350crawls into the one or more API servers comprising one or more versions (e.g., API version1, API version2, and API version3as shown) of one or more APIs. In some embodiments, the one or more API servers are an integral part of the entity systems200. The API crawler350identifies the differences between the one or more versions and identifies the functions associated with each version (e.g., Function Variant1associated with API version1, Function Variant2associated with API version2, Function Variant3associated with API version3as shown). The API crawler350after identifying the functions and gathering information associated with the one or more versions, passes the information and the functions to the context maker360. The API context maker360creates context objects associated with each of the one or more versions, where the context objects comprises context (e.g., API V1context, API V2context, API V3context as shown) associated with the functions and the information associated with the one or more versions. The API broker370receives one or more API requests in real-time from one or more client systems201. The API broker370in response to receiving the real-time API requests (e.g., Client API intended1, Client API intended2, Client API intended3), understands the requirements or context of the real-time API requests and identifies a match between the requirements of the real-time API requests and the context of the one or more versions. The system, in response to finding a match, routes the real-time API requests to the correct version of the API. After routing to the API, the API provides a response for the incoming requirements, where the response is sent back to the client system and the response comprises the content in the context objects created by the context maker360.

FIG. 6Aprovides a flowchart illustrating a process flow600A for crawling into one or more API servers and creating context objects associated with one or more API versions present in the one or more API servers, in accordance with an embodiment of the invention. As shown in block605, the system crawls, via machine learning model, into one or more API servers, wherein the one or more API servers comprise one or more versions of one or more APIs. For example, if an application is associated with verifying KYC information associated with customers of an entity, multiple versions of API may be created to respond to each type of KYC verification. In an exemplary embodiment, a version may be created that may be used to verify customer address. In another exemplary embodiment, a version may be created that may be used to verify phone number and Social Security Number of a customer. As such, there may be multiple versions of APIs stored in the one or more API servers.

As shown in block610, the system captures, via the machine learning model, information associated with the one or more versions of the one or more APIs. The system identifies functions associated with each of the one or more versions. For example, the system may identify that a first version may be used to verify customer address.

As shown in block615, the system identifies, via the machine learning model, differences between the one or more versions of the one or more APIs in response to crawling into the one or more API servers. For example, the system may identify that a first version may be used to verify customer address and a second version is used to verify customer legal name and address.

As shown in block625, the system creates context objects associated with each of the one or more versions of the one or more APIs. The system creates context objects comprises context associated with the one or more versions. Continuing with the previous example, for the first version, the system may create a context that specifies whether the address of a customer is verified or nor.

FIG. 6Bprovides a flowchart illustrating a process flow600B for routing the incoming API requests, in accordance with an embodiment of the invention. As shown in block630, the system receives a real-time API request from a client system. The real-time API request may include one or more requirements and/or context. For example, the real-time API request may include verify SSN along with a customer name and six digits of Social Security Number.

As shown in block635, the system processes the real-time API request received from the client system. The system reads and understands the one or more requirements and context of the real-time API request. For example, the system understands that the real-time API request is associated with verifying Social Security Number of a customer.

As shown in block640, the system routes the real-time API request to an API version of the one or more versions. Continuing with the previous example, the system routes the incoming API request to a version of an API that can verify the Social Security Number of the customer by identifying a match between the requirement of the real-time API request and function of the version of an API. In some embodiments, when the system routes the real-time API request to the API version, the API version provides an output associated with the real-time API request. Continuing with the previous example, when the system routes the incoming API request to the version of API that can verify the Social Security Number of the customer, the version of the API verifies the Social Security Number and provides an output associated with the verification. In another example, if the incoming API request is associated with providing an address of a customer, the system routes the incoming API request to a version of the API associated with providing addresses of customer. In response to receiving the incoming API request, the API version provides an output that comprises the address of the customer.

In an embodiment, where the system is unable to find a match, the system generates an API and routes the incoming API request to the generated API. For example, the system may identify that none of the versions of the APIs meet the requirements of the incoming API request and generates a new API which meets the requirements of the incoming API request.

As shown in block645, the system sends a response to the client system based on routing the real-time API request. In some embodiments, the system may generate the response by combining an output provided by the API version and context in the context object associated with the API version. Continuing with the previous example, the API may verify the Social Security Number and the system fetches the context object and returns a response to the client system, where the response is associated with the verification of the SSN and is generated based on the context in the context object associated with the API and the output provided by the API.

Computer-executable program code for carrying out operations of embodiments of the present invention may be written in an object oriented, scripted or unscripted programming language. However, the computer program code for carrying out operations of embodiments of the present invention may also be written in conventional procedural programming languages, such as the “C” programming language or similar programming languages.