A method, including receiving, by a first api hub server in communication with a set of private APIs and with a second api hub server that is in communication with a set of public APIs, metadata for the APIs, each of the APIs including one or more respective api calls. A request is received from a client computer to access a given endpoint of a given api, and using the metadata for the given api, an api call is generated. Upon determining that the given api includes a given private api the generated api call is conveyed to the given private api, and upon determining that the given api call includes a given public api, the generated api call is conveyed to the second api hub server. Finally, upon receiving a response to the conveyed api call, the response is forwarded to the client computer.

Patent
   10999413
Priority
May 21 2020
Filed
May 21 2020
Issued
May 04 2021
Expiry
May 21 2040
Assg.orig
Entity
Small
1
16
currently ok
1. A method, comprising:
receiving, by a first application program interface (api) hub server in communication with a set of private APIs and with a second api hub server that is in communication with a set of public APIs, metadata for the public APIs and the private APIs, each of the public APIs and the private APIs comprising one or more respective api calls;
receiving, from a client computer, a request to access an endpoint of a given api;
generating, using the metadata for the given api, an api call;
upon determining that the given api comprises a given private api, conveying the generated api call to the given private api;
upon determining that the given api comprises a given public api, conveying the generated api call to the second api hub server; and
upon receiving a response to the conveyed generated api call, forwarding the response to the client computer.
10. An apparatus comprising a first application program interface (api) hub server in communication with a set of private APIs and with a second api hub server that is in communication with a set of public APIs, the first api hub server comprising:
a memory; and
at least one processor configured:
to receive metadata for the public APIs and the private APIs, each of the public APIs and the private APIs comprising one or more respective api calls,
to store the received api metadata to the memory,
to receive, from a client computer, a request to access an endpoint of a given api,
to generate, using the metadata for the given api, an api call,
upon determining that the given api comprises a given private api, to convey the generated api call to the given private api,
upon determining that the given api comprises a given public api, to convey the generated api call to the second api hub server, and
upon receiving a response to the conveyed generated api call, to forward the response to the client computer.
19. A computer software product, the product comprising a non-transitory computer-readable medium, in which program instructions are stored, which instructions, when read by a first application program interface (api) hub server in communication with a set of private APIs and with a second api hub server that is in communication with a set of public APIs, cause the first api hub server:
to receive metadata for the public APIs and the private APIs, each of the public APIs and the private APIs comprising one or more respective api calls;
to receive, from a client computer, a request to access an endpoint of a given api;
to generate, using the metadata for the given api, an api call;
upon determining that the given api comprises a given private api, to convey the generated api call to the given private api;
upon determining that the given api comprises a given public api, to convey the generated api call to the second api hub server; and
upon receiving a response to the conveyed generated api call, to forward the response to the client computer.
2. The method according to claim 1, and comprising computing, by the first api hub server, performance metrics for the generated api call and the response.
3. The method according to claim 2, and comprising conveying the computed performance metrics to the second api hub server.
4. The method according to claim 3, and comprising receiving, by the first api hub server from the client computer, a request for performance metrics for one or more of the public APIs, forwarding the request to the second api hub server, receiving a response to the request for the performance metrics, and forwarding, to the client computer, the response to the request for the performance metrics.
5. The method according to claim 2, wherein the first api hub server stores, in a memory, initial performance metrics, and comprising updating, in the memory, the initial performance metrics with the computed performance metrics.
6. The method according to claim 5, and comprising conveying the computed performance metrics to the second api hub server upon determining that the given api comprises the given public api.
7. The method according to claim 5, and comprising receiving, by the first api hub server from the client computer, a request for performance metrics for one or more of the private APIs or one or more of the public APIs, retrieving the requested performance metrics from the memory, and forwarding, to the client computer, the retrieved requested performance metrics.
8. The method according to claim 2, wherein a given performance metric for the given api comprises usage information for the given api.
9. The method according to claim 1, wherein receiving the metadata for the public APIs and the private APIs comprises receiving the metadata for a subset of the public APIs.
11. The apparatus according to claim 10, wherein the at least one processor is further configured to compute performance metrics for the generated api call and the response.
12. The apparatus according to claim 11, wherein the at least one processor is further configured to convey the computed performance metrics to the second api hub server.
13. The apparatus according to claim 12, wherein the at least one processor is further configured to receive, from the client computer, a request for performance metrics for one or more of the public APIs, to forward the request to the second api hub server, to receive a response to the request for the performance metrics, and to forward, to the client computer, the response to the request for the performance metrics.
14. The apparatus according to claim 11, wherein the at least one processor is configured to store, in the memory, initial performance metrics, and wherein the at least one processor is further configured to update, in the memory, the initial performance metrics with the computed performance metrics.
15. The apparatus according to claim 14, wherein the at least one processor is further configured to convey the computed performance metrics to the second api hub server upon determining that the given api comprises the given public api.
16. The apparatus according to claim 14, wherein the at least one processor is further configured to receive, from the client computer, a request for performance metrics for one or more of the private APIs or one or more of the public APIs, to retrieve the requested performance metrics from the memory, and to forward, to the client computer, the retrieved requested performance metrics.
17. The apparatus according to claim 11, wherein a given performance metric for the given api comprises usage information for the given api.
18. The apparatus according to claim 10, wherein the at least one processor is configured to receive the metadata for the public APIs and the private APIs by receiving the metadata for a subset of the public APIs.

The present invention relates generally to application programming interfaces (APIs), and particularly to synchronizing a private API hub server with a public API hub server in order to manage calls to public and private APIs, and enabling independent management of users on each of the hub servers and independent and/or separate billing on each of the hub servers.

In computer programming, an application programming interface (API) is a set of building blocks that programmers can use to develop software applications. APIs enable two pieces of software to communicate by enabling one application to plug directly into the data and services of another application.

Types of APIs include private APIs and public APIs. A private API is an API that has its application hosted with in-house developers. Private APIs act as front end interfaces to back end data and application functions. A public API (also known as an open API) is a publicly available API that provides developers with programmatic access to a proprietary software application or web service.

The description above is presented as a general overview of related art in this field and should not be construed as an admission that any of the information it contains constitutes prior art against the present patent application.

There is provided, in accordance with an embodiment of the present invention, a method including receiving, by a first application program interface (API) hub server in communication with a set of private APIs and with a second API hub server that is in communication with a set of public APIs, metadata for the APIs, each of the APIs including one or more respective API calls, receiving, from a client computer, a request to access a given endpoint of a given API, generating, using the metadata for the given API, an API call, upon determining that the given API includes a given private API, conveying the generated API call to the given private API, upon determining that the given API call includes a given public API, conveying the generated API call to the second API hub server, and upon receiving a response to the conveyed API call, forwarding the response to the client computer.

In one embodiment, the method also includes computing, by the first API hub server, performance metrics for the given API call and response.

In an additional embodiment, the method also includes conveying the computed performance metrics to the second API hub server.

In a further embodiment, the method also includes receiving, by the first API hub server from the client computer, a request for performance metrics for one or more of the APIs, forwarding the request to the second API hub server, receiving a response to the performance metrics request, and forwarding, to the client computer, the response to the performance metrics request.

In another embodiment, the first API hub server stores, in a memory, initial performance metrics, and the method also includes updating, in the memory, the initial performance metrics with the computed performance metrics.

In a supplemental embodiment, the method also includes conveying the computed performance metrics to the second API server upon determining that the given API call includes a given public API.

In an additional embodiment, the method also includes receiving, by the first API hub server from the client computer, a request for performance metrics for one or more of the APIs, retrieving the requested performance metrics from the memory, and forwarding, to the client computer, the retrieved performance metrics.

In another embodiment, a given performance metric for the given API includes usage information for the given API.

In a further embodiment, receiving the metadata for the APIs includes the metadata for the set of the public APIs and the set of the private APIs.

In a supplemental embodiment, receiving the metadata for the APIs includes receiving the metadata for a subset of the public APIs.

There is also provided, in accordance with an embodiment of the present invention, an apparatus including a first application program interface (API) hub server in communication with a set of private APIs and with a second API hub server that is in communication with a set of public APIs, the first API hub server including a memory, and at least one processor configured to receive metadata for the APIs, each of the APIs including one or more respective API calls, to store the received API metadata to the memory, to receive, from a client computer, a request to access a given endpoint of a given API, to generate, using the metadata for the given API, an API call, upon determining that the given API includes a given private API, to convey the generated API call to the given private API, upon determining that the given API call includes a given public API, to convey the generated API call to the second API hub server, and upon receiving a response to the conveyed API call, to forward the response to the client computer.

There is additionally provided, in accordance with an embodiment of the present invention, a computer software product, the product including a non-transitory computer-readable medium, in which program instructions are stored, which instructions, when read by a by an first application program interface (API) hub server in communication with a set of private application program interfaces (APIs) and with a second API hub server that is in communication with a set of public APIs, cause the first API hub server to receive metadata for the APIs, each of the APIs including one or more respective API calls, to receive, from a client computer, a request to access a given endpoint of a given API, to generate, using the metadata for the given API, an API call, upon determining that the given API includes a given private API, to convey the generated API call to the given private API, upon determining that the given API call includes a given public API, to convey the generated API call to the second API hub server, and upon receiving a response to the conveyed API call, to forward the response to the client computer.

The disclosure is herein described, by way of example only, with reference to the accompanying drawings, wherein:

FIG. 1 is a block diagram that schematically shows a computing facility comprising a private application programming interface (API) hub server that synchronizes with a public API hub server in order to manage API calls to public and private APIs, in accordance with an embodiment of the present invention;

FIG. 2 is a block diagram showing examples of API call metadata stored by the local API hub server, in accordance with an embodiment of the present invention;

FIG. 3 is a block diagram showing examples of user metadata stored by the local API hub server, in accordance with an embodiment of the present invention;

FIG. 4 is a flow diagram that schematically illustrates a first method for processing, by the private API hub server, requests for API calls to public and private APIs, in accordance with a first embodiment of the present invention; and

FIG. 5 is a flow diagram that schematically illustrates a first method for processing, by the private API hub server, requests for API calls to public and private APIs, in accordance with a second embodiment of the present invention.

Enterprise software systems typically utilize several public and/or private application programming interfaces (APIs). These APIs may be grouped by user access privileges or by their respective developers (i.e., the creators/providers of the APIs).

Embodiments of the present invention provide methods and systems for synchronizing a first API hub server to synchronize with a second API hub server in order to manage requests for API calls. As described hereinbelow, the first API hub server is in communication with a set of private APIs and with the second API hub server that is in communication with a set of public APIs, each of the APIs comprising one or more respective API calls, and the first API hub server is initialized by receiving metadata for each of the APIs.

Once initialized, the first API hub server receives, from a client computer, a request to access a given endpoint of a given API, and uses the metadata for the given API to generate an API call. Upon determining that the given API comprises a given private API, generated API call is conveyed to the given private API, and upon determining that the given API call comprises a given public API, the generated API call is conveyed to the second API hub server. Finally, upon receiving a response to the conveyed API call, the response is forwarded to the client computer.

Private APIs (also known as internal APIs) can be created and published by employees within an organization. Typically, only an authorized subset of the organization's employees can view or access the private APIs. However, there may be exceptions to this rule. In a first exception example, private APIs that are shared with select external individuals, teams or organizations are known as partner APIs. In a second exception example, private APIs that are accessible to any developer to find/test/use online are known as externalized APIs (i.e., published public APIs). In a third exception example, APIs published by individuals or organizations external to the enterprise (and may or may not be accessible to the general public) are known as consumed external APIs (and are also known as third party public or partner APIs).

Systems implementing embodiments of the present invention can provide a single enterprise API hub platform for managing discovery, testing, evaluation and comparison, access control, integration, and monitoring of internal, partner, externalized, and consumed external APIs.

FIG. 1 is a block diagram that schematically shows a computing facility 20 comprising a private API hub server 22 (also referred to herein as a first API hub server), and a public network 24 (e.g., the Internet) comprising a public API hub server 26 (also referred to herein as a second API hub server), in accordance with an embodiment of the present invention. In embodiments described herein, private API hub server 22 is configured to communicate with public API hub server 26 and one or more servers 28.

In embodiments of the present invention, private API hub server 22 synchronizes with public API hub server 26 so as to manage API calls 30 to respective endpoints 32 of APIs 34 hosted by servers 28, and to manage API responses 36 received in response to the API calls. While the configuration in FIG. 1 shows each server 28 hosting a single API 34, any given server 28 hosting more than one API 34 is considered to be within the spirit and scope of the present invention.

In examples described herein, API hub servers 22 and 26 execute the RapidAPI™ platform produced by R Software Inc. (San Francisco, Calif., U.S.A.).

Servers 28 can be configured to provide software services such as microservices and web services. Microservices typically comprise independently deployable and scalable software services that communicate over a network. Web services are typically software applications that make themselves available over public network 24 (e.g., the Internet) and use a standardized Extensible Markup Language (XML) messaging system.

In FIG. 1, servers 28 and their respective APIs 34 and endpoints 32 are differentiated by appending a letter to the identifying numeral, so that the servers comprise microservice servers 28A in computing facility 20 and web service servers 28B on public network 24, and the APIs comprise a set of private APIs 34A and a set of public APIs 34B. In some embodiments, each server 28A comprising respective private APIs 34A and private API endpoints 32A, and each server 28B comprising respective public APIs 34B and API endpoints 32B.

In a similar manner, API calls 30 and API responses 36 are differentiated in FIG. 1 by appending a letter to the identifying numeral, so that the API calls comprise API calls 30A-30C and the API responses comprise API responses 36A-36C. In embodiments described herein, call 30A (also referred to herein as private API call 30A) is for a given endpoint 32A of a given private API 34, and calls 30B and 30C (also referred to herein as public API call 30B and 30C) are for a given endpoint 32B of a given public API 34. Likewise, response 36A (also referred to herein as private API response 36A) is from a given private API 34, and responses 30B and 30C (also referred to herein as public API responses 30B and 30C) are from a given public API 34.

In some embodiments, servers 28B can be configured to provide (i.e., via APIs 34B) web services, which can be applications or data sources that are accessible via a standard web protocol (HTTP or HTTPS). Examples of web services include, but are not limited to, sending an SMS, providing information about the current weather, or sending an email.

Private API hub server 22 comprises a processor 38 and a memory 40 that can store API metadata records 42 and user metadata records 44. API metadata records 42 and user metadata records 44 are respectively described in the descriptions referencing FIGS. 2 and 3 hereinbelow.

In addition to private API hub 22 and one or more servers 34A, computing facility 20 may comprise a plurality of client computers 46.

In embodiments described herein, upon processor 38 receiving, from a given client computer 46, an API hub request 48 for a given API call 30, the processor determines if the given API call is for a given private API 34A or if the given API call is for a given public API 34B. If processor 38 determines that the given API call is for a given private API 34A, then the processor generates private API call 30A in response to receiving request 48, and conveys the generated private API call to the given private API. Upon processor 38 receiving private API response 36A from the give private API in response to the conveyed private API request, the processor forwards the private API response to the given client computer in API hub response 50.

On the other hand, if processor 38 determines that the given API call is for a given public API 34B, then the processor generates public API call 30B in response to receiving request 48, and conveys the generated public API call to public API hub server 26. In response to receiving public API call 30B, public API hub server 26 forwards the received public API call to the given public API in public API call 30C. Upon public API server 26 receiving public API response 36B from the given public API, the public API server forwards the received pubic API response to private API hub server 22 in public API response 36C. Upon private API hub server 22 receiving public API response 36, the private API server conveys the received public API response to the given client computer in API hub response 50.

In some embodiments, processor 38 can initialize private API hub server 22 by conveying a metadata request 52 to public API hub server 26. In response to receiving metadata request 52, public API hub server 26 conveys API metadata 54 and user metadata 56 to private API hub server 22. Upon receiving metadata 54 and 56, processor 38 stores information the API metadata to records 42 as described in the descriptions referencing FIGS. 4 and 5 hereinbelow.

Processor 38 comprises one or more general-purpose central processing units (CPUs) or one or more special-purpose embedded processors, which can be programmed in software or firmware to carry out the functions described herein. This software may be downloaded to private API hub 22 in electronic form, over a network, for example. Additionally or alternatively, the software may be stored on tangible, non-transitory computer-readable media, such as optical, magnetic, or electronic memory media. Further additionally or alternatively, at least some of the functions of processor 38 may be carried out by hard-wired or programmable digital logic circuits.

Examples of memory 40 include dynamic random-access memories and non-volatile random-access memories. Additionally or alternatively, the memories may comprise non-volatile storage devices such as hard disk drives and solid-state disk drives.

In embodiments described herein, API hub servers 22 and 26 are each configured to provide, to client computers 46, API marketplace and API gateway services. In these embodiments, private API hub server 22 provides a private API marketplace and a private API gateway, and public API server 26 provides a public API marketplace and a pubic API gateway.

In an alternative embodiment, the private API marketplace and the private gateway services may execute on separate servers. Likewise, the public API marketplace and the public gateway services may execute on separate servers

The API marketplaces can compute analytic information for the APIs (as described herein), and provide a user interface that enables users to discover (i.e., search, browse, read documentation) and test APIs 34 to which they have access. The API gateways can proxy API hub requests 48 and API responses 36 between the marketplaces and servers 28 comprising APIs 34.

In some embodiments, the functionality of API private hub server 22 may be deployed in a data cloud and/or as one or more physical and/or virtual computers in one or more computing facilities such as computing facility 20. In another embodiment, the local API hub server and one or more of servers 28A may comprise a single virtual machine or a single physical computer. Likewise, the functionality of API public API hub server 26 may be deployed in a data cloud and/or as one or more physical and/or virtual computers.

FIG. 2 is a block diagram showing a configuration of a given API metadata record 42, in accordance with an embodiment of the present invention. In some embodiments, API metadata records 42 have a one-to-one correspondence with APIs 32, and in the example shown in FIG. 2, each API metadata record 42 for a given (i.e., its corresponding) API 34 stores information such as:

{
 ″type″: ″object″,
 ″properties″: {
  ″id″: {
  ″type″: ″string″
   },
  ″name″: }
     ″type″: ″string″
    }
  }
}

FIG. 3 is a block diagram showing examples of user metadata records 44, in accordance with an embodiment of the present invention. In some embodiments, user metadata records 44 have a one-to-one correspondence with users (not shown) of client computers 46. For each given user, the corresponding metadata record can store information such as:

In some embodiments, private API server 22 and/or public API server 24 can use information stored in user metadata records 44 to compute, for a given user (i.e., as referenced by a given user ID 90 a given organization ID 92), analytic information for API calls 30 by the given user to APIs 34, and to convey the computed analytic information to the user interface on a given client computer 46 operated by the given user.

In further embodiments, as described supra, API hub servers 22 and can 26 execute the RapidAPI™ platform produced by R Software Inc. (San Francisco, Calif., U.S.A.). In these embodiments, private API hub server 22 can receive the following API hub request 48 from a given client computer 46 (note that line numbers are included in the examples below for purposes of visual simplicity):

In this example, the API hub request is requesting a call to the ClimaCell API (produced by ClimaCell Inc., Boston, Mass., U.S.A.) to retrieve a daily weather forecast for a specified location. In this API hub request:

While this example of a given API hub request 48 uses Python and the Requests library, using other programming languages and other libraries to generate API hub requests 48 are considered to be within the spirit and scope of the present invention. For example, a given API hub request 48 may use Node.js and the Unirest library, Node.js and the Request library, Python and the Unirest library or PHP and the Unirest library.

In response to receiving the API hub request described supra, processor 38 generates and conveys the following API call 30B to private API hub server 22:

API call 30B includes credentials identifying itself to the RapidAPI™ Public Cloud (i.e., public API hub server 26) for billing at the RapidAPI public cloud level. In line 3 of API call 30B, X-RapidAPI-Key references information such as:

In response to receiving API call 30B, public API hub server 26 modifies call 30B to generate API call 30C, and forwards the following API call 30C to a given server 28B (i.e., referenced by the base URL for the given API):

In response to receiving this API call, the given web service server processes the API call, and can convey, to public API server 26, the following API response 36B (i.e., an example), which forwards this API response to private API server 22:

Upon private API server 22 receiving the API response, the API response is forwarded to the given client computer (i.e., that generated the API hub request).

In some embodiments, public API hub server 22 can modify the received API response so as to generate API hub response 50. In one example, a given API hub server can add, to the received API response, headers such as usage and balances (e.g., x-ratelimit-realtime-&-forecast-limit and x-ratelimit-realtime-&-forecast-remaining), and RapidAPI™-specific headers (region, version etc.). In another example, a given API hub server can strip out, from the received API response, any custom billing related headers that the API's provider may include in the response. In a further example, a given API hub server can further modify the API response to strip out the billing and usage headers specific to the given API hub server, and insert any headers with values that are specific to the user/team calling the API on the given API hub server.

In the configuration shown in FIG. 1, in response to public API server 26 receiving API response 36B, the public API server forwards the received API response to private API server 22 in API response 36C. In embodiments where public API hub server modifies API response 36B, API response 36C comprises the modified API response. In these embodiments, private API hub server 22 can forward the modified API response in API hub response 50.

As described supra, private API hub server 22 is configured to manage API hub requests 48 comprising API calls 30 to private APIs 34A and public APIs 34B. To manage API hub requests 48 to private APIs 32A, processor 38 can generate API calls 30A (and forward API responses 36A) in a manner similar to the example described hereinabove, albeit without needing to use public API hub server as a proxy (i.e., the private API hub server can communicate directly with microservice servers 28A.

FIG. 4 is a flow diagram that schematically illustrates a method for processing API hub requests 48, in accordance with a first request processing embodiment of the present invention. In step 100, processor 38 receives metadata 54 and 56 from public API hub server 26. In some embodiments, public API server 26 can convey metadata 54 and 56 to private API hub server 22 upon receiving metadata request 52 from the private API hub. In the first request processing embodiment, processor 38 can receive the API metadata for all public APIs 34B managed by public API hub server 26.

Upon receiving metadata 54 and 56, processor 38 populates API metadata records 42 with the information from API metadata 54, and populates user metadata records 44 with information from user metadata 56. In the first request processing embodiment, the received API metadata 54 (i.e., in step 100) comprises metadata for both the set of public APIs 34B and the set of private APIs 34A.

In step 102, processor 38 receives, from a given client computer 46, a given API hub request 48. In embodiments of the present invention, the received API hub request comprises a request for a call to a given API endpoint 32 of a given API 34.

In step 104, processor 38 validates the received API hub request. In some embodiments, processor 38 can first identify the user metadata record corresponding to a given user referenced in the received request, and identify the API metadata record corresponding to the given API.

In a first validation embodiment, processor 38 can validate the received request by comparing parameters in the request to the parameter information for the given API to make sure that any required parameters are included, and that the included parameters are in the correct format and have acceptable values. In a second validation embodiment, processor 38 can validate the received request by monitoring the volume of API calls 30 to the given endpoint of the given API and compare the volume to the rate limit information for the given API and to the endpoint limit for the given endpoint to ensure that the volume is within the respective limits. In a third validation embodiment, processor 38 can validate the received request by ensuring that the subscription IDs for the given user includes the given API. In a fourth validation embodiment, processor 38 can validate the received request by comparing the given API in the received request to the API IDs in the API metadata records and detecting a match.

In step 106, if processor 38 determines that the received API hub request is valid, than in step 108 the processor uses embodiments described supra to generate a given API call 30 in response to the request. When generating the given API call, processor 38 can determine if the given API (i.e., comprising the given API call) is either public or private.

In step 110, if the given API is a given public API 34B, then in step 112, processor 38 conveys, to API public hub server 26, the generated API call in API call 30B, and the API public hub forwards API call 30B to a given server 28B in API call 30C. On the other hand, if the given API is a given private API 34A, then in step 114, processor 38 conveys, to a given server 28A referenced by the URL in the generated API call, the generated API call in API call 30A.

In step 116, processor 38 receives, in response to the conveyed API call, a given API response 36. If the given API is a given private API 34A, then processor 38 receives the API response in a given API response 36A from the given server 28A that processed the given private API call. However, if the given API is a given public API 34B, then the given web service server processes API call 30C, and conveys API response 36B to public API hub server 26, which conveys API response 36B to private API hub server 22 in API response 36C. Upon receiving API response 36C, processor 38 forwards the received response in API hub response 50 in step 118.

In step 120, processor 38 computes performance metrics for the conveyed API call (and the received API response). Examples of performance metrics that processor 38 can compute are described supra.

Finally, in step 122, processor 38 conveys the computed performance metrics to public API hub server 26, and the method continues with step 102. Returning to step 106, if processor 38 determines that the received API hub request is not valid then in step 124, the processor conveys a notification to the given client computer, and the method continues with step 102.

In the first request processing embodiment, a given client computer 46 can convey, to private API hub 22, requests for the following information:

Upon receiving the information request, processor 38 can forward the information request to public API hub 26, and upon receiving a response to the information request, the processor can forward the response to the given client computer.

FIG. 5 is a flow diagram that schematically illustrates a method for processing API hub requests 48, in accordance with a second request processing embodiment of the present invention. In step 130, processor 38 receives metadata 54 from public API hub server 26. In some embodiments, public API server 26 can convey metadata 54 to private API hub server 22 upon receiving metadata request 52 from the private API hub.

Upon receiving metadata 54, processor 38 populates API metadata records 42 with the information from API metadata 54. In the second request processing embodiment, processor 38 can receive the API metadata for a subset of “whitelisted” (i.e. for client computers 46) public APIs 34B managed by public API hub server 26.

In step 132, processor 38 loads API metadata 54 for private APIs 34A, populates API metadata records 42 with the private API metadata, loads user metadata 56, and populates user metadata records 44 with the user metadata. In the second request processing embodiment, processor 38 loads API metadata 54 for private APIs 34A and user metadata 56 from a local source in computing facility 20. In one embodiment, processor 38 can perform step 132 by receiving API metadata 54 for private APIs 34A and user metadata 56 from a given client computer 46. In another embodiment, or the processor can retrieve API metadata 54 for private APIs 34A and user metadata 56 from a storage device (not shown) coupled to private API hub server 22.

In step 134, processor 38 receives, from a given client computer 46, a given API hub request 48. As described supra, the received API hub request comprises a request for a call to a given API endpoint 32 of a given API 34.

In step 136, the processor validates the received API hub request in step 136. Embodiments for validating the received API request are described in the description referencing FIG. 4 hereinabove.

In step 138, if processor 38 determines that the received API hub request is valid, than in step 140 the processor uses embodiments described supra to generate a given API call 30 in response to the request. When generating the given API call, processor 38 can determine if the given API (i.e., comprising the given API call) is either public or private.

In step 142, if the given API is a given public API 34B, then in step 144, processor 38 conveys, to API public hub server 26, the generated API call in API call 30B, and the API public hub forwards API call 30B to a given server 28B in API call 30C. On the other hand, if the given API is a given private API 34A, then in step 146, processor 38 conveys, to a given server 28A referenced by the URL in the generated API call, the generated API call in API call 30A.

In step 148, processor 38 receives, in response to the conveyed API call, a given API response 36. If the given API is a given private API 34A, then processor 38 receives the API response as a given API response 36A from the given server 28A that processed the given private API call. However, if the given API is a given public API 34B, then the given web service server processes API call 30C, and conveys API response 36B to public API hub server 26, which conveys API response 36B to private API hub server 22 in API response 36C. Upon receiving API response 36C in step 150, processor 38 forwards the received response in API hub response 50.

In step 152, processor 38 computes performance metrics for the conveyed API call (and the received API response). Examples of performance metrics that processor 38 can compute are described supra.

In step 154, if the given API is a given private API 34A, then in step 156, processor 38 stores the computed performance metrics to usage and performance metrics 84 in the API metadata record corresponding to the given API, and the method continues with step 134. However, if the given API is a given public API 34B, then in step 158, processor 38 conveys the computed performance metrics to public API hub server 26, and the method continues with step 156.

Returning to step 138, if processor 38 determines that the received API hub request is not valid then in step 160, the processor conveys a notification to the given client computer, and the method continues with step 134.

In the second request processing embodiment, a given client computer 46 can convey requests to private API hub server 22 for the following information:

Upon receiving the information request, processor 38 can retrieve the requested information from API metadata records 42, and then forward the requested information to the given client computer.

It will be appreciated that the embodiments described above are cited by way of example, and that the present invention is not limited to what has been particularly shown and described hereinabove. Rather, the scope of the present invention includes both combinations and subcombinations of the various features described hereinabove, as well as variations and modifications thereof which would occur to persons skilled in the art upon reading the foregoing description and which are not disclosed in the prior art.

Srinivasan, Srivatsan, Gino, Iddo, Bukati, Andrey

Patent Priority Assignee Title
11630705, Dec 30 2021 Virtustream IP Holding Company LLC Dynamic generation of cloud platform application programming interface calls
Patent Priority Assignee Title
7433835, Jan 27 2004 Amazon Technologies, Inc Providing a marketplace for web services
9553787, Apr 29 2013 Amazon Technologies, Inc Monitoring hosted service usage
20090235283,
20130132584,
20150363493,
20160239546,
20160267153,
20160292018,
20160294667,
20180004585,
20180232444,
20190149425,
20190349382,
20200159597,
20200159731,
20200334304,
////
Executed onAssignorAssigneeConveyanceFrameReelDoc
May 21 2020R SOFTWARE INC.(assignment on the face of the patent)
Jul 19 2020SRINIVASAN, SRIVATSANR SOFTWARE INCASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0537010768 pdf
Aug 28 2020BUKATI, ANDREYR SOFTWARE INCASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0537010768 pdf
Aug 31 2020GINO, IDDOR SOFTWARE INCASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0537010768 pdf
Date Maintenance Fee Events
May 21 2020BIG: Entity status set to Undiscounted (note the period is included in the code).
May 29 2020SMAL: Entity status set to Small.
Oct 09 2024M2551: Payment of Maintenance Fee, 4th Yr, Small Entity.


Date Maintenance Schedule
May 04 20244 years fee payment window open
Nov 04 20246 months grace period start (w surcharge)
May 04 2025patent expiry (for year 4)
May 04 20272 years to revive unintentionally abandoned end. (for year 4)
May 04 20288 years fee payment window open
Nov 04 20286 months grace period start (w surcharge)
May 04 2029patent expiry (for year 8)
May 04 20312 years to revive unintentionally abandoned end. (for year 8)
May 04 203212 years fee payment window open
Nov 04 20326 months grace period start (w surcharge)
May 04 2033patent expiry (for year 12)
May 04 20352 years to revive unintentionally abandoned end. (for year 12)