IP Library Granted Patent US 8,190,675
Granted Patent B2
US 8,190,675 · App. 12/726,284 · Granted May 29, 2012

Method and system for providing access to remotely hosted services through a normalized application programming interface

Assignee: inDitto, LLC
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,190,675
App. No.
12/726,284
Granted
May 29, 2012
Kind
B2
Abstract

A server system having one or more processors and memory receives, from a client, a generic request to access remotely hosted services. The server system identifies a plurality of respective remotely hosted services that are each associated with a respective API. For each respective remotely hosted service, the server system translates the generic request to a respective API-specific request to access the respective remotely hosted service using API-specific parameters and sends the respective API-specific request to the respective remotely hosted service. In response to the requests, the server system receives, from a plurality of the respective remotely hosted services, respective API-specific responses, where a respective API-specific response for a respective remotely hosted service includes respective content. The server system generates a final response that includes content from two or more of the API-specific responses and transmits the final response to the client.

Claims (136)

1. A method comprising:

at a server system having one or more processors and memory:

receiving, from a client, a generic request to access remotely hosted services, wherein the generic request uses generic parameters;

identifying a plurality of respective remotely hosted services that correspond to the generic request, wherein the remotely hosted services are each associated with a respective Application Programming Interface (API);

for each respective remotely hosted service, translating the generic request to a respective API-specific request to access the respective remotely hosted service using API-specific parameters, wherein:

the API-specific request and the API-specific parameters are specific to the respective API of the respective remotely hosted service; and

the translating includes, for a respective generic parameter in the generic request, identifying a corresponding respective API-specific parameter in an API database storing information about API-specific parameters for multiple distinct remotely hosted services, including the respective remotely hosted service, and using the corresponding respective API-specific parameter in place of the respective generic parameter in the respective API-specific request;

for each of the plurality respective remotely hosted services, sending the respective API-specific request to the respective remotely hosted service;

in response to the requests, receiving, from a plurality of the respective remotely hosted services, respective API-specific responses, where a respective API-specific response for a respective remotely hosted service includes respective content;

generating a final response that includes content from two or more of the API-specific responses; and

transmitting, to the client, the final response.

2. The method of claim 1 , wherein the generic request includes a request to perform a generic-named operation, and translating the generic request to a respective API-specific request includes translating the request to perform the generic-named operation to an API-specific request to perform an API-specific-named operation at the respective remotely hosted service, wherein the API-specific-named operation is analogous to the generic-named operation.

3. The method of claim 1 , wherein:

the generic request includes a request to perform an operation using a generic name for the operation;

translating the generic request to a respective API-specific request includes translating the generic name for the operation to an API-specific name for the operation; and

sending the respective API-specific request to the respective remotely hosted service includes sending, to the respective remotely hosted service, a request to perform the operation using the API-specific name for the operation.

4. The method of claim 1 , wherein the method includes:

communicating with the client using a first predefined communication protocol to receive the generic request and to send the final response; and

communicating with a respective remotely hosted service using a second predefined communication protocol that is distinct from the first predefined communication protocol to send a respective API-specific request and to receive a respective API-specific response.

5. The method of claim 1 , wherein:

a user account is stored at the server system, the user account including previously registered user-supplied security credentials associated with a particular remotely hosted service; and

sending a particular API-specific request from the server system to the particular remotely hosted service includes authenticating the particular API-specific request using the user-supplied security credentials for the particular remotely hosted service.

6. The method of claim 1 , wherein the generic request includes identifiers for the plurality of respective remotely hosted services.

7. The method of claim 1 , wherein:

a user account associated with the generic request includes a definition for a command;

the definition for the command includes identifiers for the plurality of respective remotely hosted services; and

the generic request is associated with the user account and includes the command.

8. The method of claim 1 , wherein sending respective API-specific requests to the respective remotely hosted services includes:

sending a first API-specific request to a first remotely hosted service;

receiving a first API-specific response from the first remotely hosted service;

sending a second API-specific request to a second remotely hosted service that is distinct from the first remotely hosted service, wherein the second API-specific request is based at least in part on the first API-specific response; and

receiving a second API-specific response from the second remotely hosted service.

9. The method of claim 1 , wherein:

the respective API-specific response for a respective remotely hosted service includes one or more respective API-specific return parameters; and

the method includes translating the one or more respective API-specific return parameters into generic return parameters.

10. The method of claim 1 , wherein generating the final response includes:

for each of the respective API-specific responses, translating the API-specific response to a respective generic response; and

combining a plurality of the respective generic responses from a plurality of distinct remotely hosted services to generate the final response.

11. The method of claim 10 , wherein:

each of the respective API-specific responses includes at least one API-specific return parameter; and

translating a respective API-specific response from a respective remotely hosted service to a respective generic response includes:

retrieving, from the API database, information about formatting of responses from the respective remotely hosted service; and

converting the respective API-specific return parameter to a generic return parameter in accordance with the information retrieved from the API database.

12. The method of claim 1 , wherein the method includes processing multiple respective API-specific responses without modifying the content of the multiple respective API-specific responses, and the final response includes the unmodified content of the multiple respective API-specific responses.

13. The method of claim 1 , wherein the final response is in a customized response format specified by a user of the client.

14. A server system for providing normalized access to Application Programming Interfaces (APIs) of one or more remotely hosted services at host servers coupled to a communications network, comprising:

one or more processors;

memory; and

one or more programs stored in the memory, the one or more programs comprising instructions executed by the one or more processors for:

receiving, from a client, a generic request to access the remotely hosted services, wherein the generic request uses generic parameters;

identifying a plurality of respective remotely hosted services that correspond to the generic request, wherein the remotely hosted services are each associated with a respective API of the APIs;

for each respective remotely hosted service, translating the generic request to a respective API-specific request to access the respective remotely hosted service using API-specific parameters, wherein:

the API-specific request and the API-specific parameters are specific to the respective API of the respective remotely hosted service; and

the translating includes, for a respective generic parameter in the generic request, identifying a corresponding respective API-specific parameter in an API database storing information about API-specific parameters for multiple distinct remotely hosted services, including the respective remotely hosted service, and using the corresponding respective API-specific parameter in place of the respective generic parameter in the respective API-specific request;

for each of the plurality respective remotely hosted services, sending the respective API-specific request to the respective remotely hosted service;

in response to the requests, receiving, from a plurality of the respective remotely hosted services, respective API-specific responses, where a respective API-specific response for a respective remotely hosted service includes respective content;

generating a final response that includes content from two or more of the API-specific responses; and

transmitting, to the client, the final response.

15. The server system of claim 14 , wherein the generic request includes a request to perform a generic-named operation, and translating the generic request to a respective API-specific request includes translating the request to perform the generic-named operation to an API-specific request to perform an API-specific-named operation at the respective remotely hosted service, wherein the API-specific-named operation is analogous to the generic-named operation.

16. The server system of claim 14 , wherein:

the generic request includes a request to perform an operation using a generic name for the operation;

translating the generic request to a respective API-specific request includes translating the generic name for the operation to an API-specific name for the operation; and

sending the respective API-specific request to the respective remotely hosted service includes sending, to the respective remotely hosted service, a request to perform the operation using the API-specific name for the operation.

17. The server system of claim 14 , wherein generating the final response includes:

for each of the respective API-specific responses, translating the API-specific response to a respective generic response; and

combining a plurality of the respective generic responses from a plurality of distinct remotely hosted services to generate the final response.

18. The server system of claim 17 , wherein:

each of the respective API-specific responses includes at least one API-specific return parameter; and

translating a respective API-specific response from a respective remotely hosted service to a respective generic response includes:

retrieving, from the API database, information about formatting of responses from the respective remotely hosted service; and

converting the respective API-specific return parameter to a generic return parameter in accordance with the information retrieved from the API database.

19. The server system of claim 14 , wherein the one or more programs further comprise instructions for:

communicating with the client using a first predefined communication protocol to receive the generic request and to send the final response; and

communicating with a respective remotely hosted service using a second predefined communication protocol that is distinct from the first predefined communication protocol to send a respective API-specific request and to receive a respective API-specific response.

20. The server system of claim 14 , wherein:

a user account is stored at the server system, the user account including previously registered user-supplied security credentials associated with a particular remotely hosted service; and

sending a particular API-specific request from the server system to the particular remotely hosted service includes authenticating the particular API-specific request using the user-supplied security credentials for the particular remotely hosted service.

21. The server system of claim 14 , wherein the generic request includes identifiers for the plurality of respective remotely hosted services.

22. The server system of claim 14 , wherein:

a user account associated with the generic request includes a definition for a command;

the definition for the command includes identifiers for the plurality of respective remotely hosted services; and

the generic request is associated with the user account and includes the command.

23. The server system of claim 14 , wherein sending respective API-specific requests to the respective remotely hosted services includes:

sending a first API-specific request to a first remotely hosted service;

receiving a first API-specific response from the first remotely hosted service;

sending a second API-specific request to a second remotely hosted service that is distinct from the first remotely hosted service, wherein the second API-specific request is based at least in part on the first API-specific response; and

receiving a second API-specific response from the second remotely hosted service.

24. The server system of claim 14 , wherein:

the respective API-specific response for a respective remotely hosted service includes one or more respective API-specific return parameters; and

the one or more programs further comprise instructions for translating the one or more respective API-specific return parameters into generic return parameters.

25. The server system of claim 14 , wherein the one or more programs further comprise instructions for processing multiple respective API-specific responses without modifying the content of the multiple respective API-specific responses, and the final response includes the unmodified content of the multiple respective API-specific responses.

26. The server system of claim 14 , wherein the final response is in a customized response format specified by a user of the client.

27. A non-transitory computer readable storage medium storing one or more programs configured for execution by one or more processors of a server system, the one or more programs comprising instructions to be executed by the one or more processors so as to:

receive, from a client, a generic request to access remotely hosted services, wherein the generic request uses generic parameters;

identify a plurality of respective remotely hosted services that correspond to the generic request, wherein the remotely hosted services are each associated with a respective Application Programming Interface (API);

for each respective remotely hosted service, translate the generic request to a respective API-specific request to access the respective remotely hosted service using API-specific parameters, wherein:

the API-specific request and the API-specific parameters are specific to the respective API of the respective remotely hosted service; and

the translating includes, for a respective generic parameter in the generic request, identifying a corresponding respective API-specific parameter in an API database storing information about API-specific parameters for multiple distinct remotely hosted services, including the respective remotely hosted service, and using the corresponding respective API-specific parameter in place of the respective generic parameter in the respective API-specific request;

for each of the plurality respective remotely hosted services, send the respective API-specific request to the respective remotely hosted service;

in response to the requests, receive, from a plurality of the respective remotely hosted services, respective API-specific responses, where a respective API-specific response for a respective remotely hosted service includes respective content;

generate a final response that includes content from two or more of the API-specific responses; and

transmit, to the client, the final response.

28. The non-transitory computer readable storage medium of claim 27 , wherein the generic request includes a request to perform a generic-named operation, and translating the generic request to a respective API-specific request includes translating the request to perform the generic-named operation to an API-specific request to perform an API-specific-named operation at the respective remotely hosted service, wherein the API-specific-named operation is analogous to the generic-named operation.

29. The non-transitory computer readable storage medium of claim 27 , wherein:

the generic request includes a request to perform an operation using a generic name for the operation;

translating the generic request to a respective API-specific request includes translating the generic name for the operation to an API-specific name for the operation; and

sending the respective API-specific request to the respective remotely hosted service includes sending, to the respective remotely hosted service, a request to perform the operation using the API-specific name for the operation.

30. The non-transitory computer readable storage medium of claim 27 , wherein generating the final response includes:

for each of the respective API-specific responses, translating the API-specific response to a respective generic response; and

combining a plurality of the respective generic responses from a plurality of distinct remotely hosted services to generate the final response.

31. The non-transitory computer readable storage medium of claim 30 , wherein:

each of the respective API-specific responses includes at least one API-specific return parameter; and

translating a respective API-specific response from a respective remotely hosted service to a respective generic response includes:

retrieving, from the API database, information about formatting of responses from the respective remotely hosted service; and

converting the respective API-specific return parameter to a generic return parameter in accordance with the information retrieved from the API database.

32. The non-transitory computer readable storage medium of claim 27 , wherein the one or more programs further comprise instructions for:

communicating with the client using a first predefined communication protocol to receive the generic request and to send the final response; and

communicating with a respective remotely hosted service using a second predefined communication protocol that is distinct from the first predefined communication protocol to send a respective API-specific request and to receive a respective API-specific response.

33. The non-transitory computer readable storage medium of claim 27 , wherein:

a user account is stored at the server system, the user account including previously registered user-supplied security credentials associated with a particular remotely hosted service; and

sending a particular API-specific request from the server system to the particular remotely hosted service includes authenticating the particular API-specific request using the user-supplied security credentials for the particular remotely hosted service.

34. The non-transitory computer readable storage medium of claim 27 , wherein the generic request includes identifiers for the plurality of respective remotely hosted services.

35. The non-transitory computer readable storage medium of claim 27 , wherein:

a user account associated with the generic request includes a definition for a command;

the definition for the command includes identifiers for the plurality of respective remotely hosted services; and

the generic request is associated with the user account and includes the command.

36. The non-transitory computer readable storage medium of claim 27 , wherein sending respective API-specific requests to the respective remotely hosted services includes:

sending a first API-specific request to a first remotely hosted service;

receiving a first API-specific response from the first remotely hosted service;

sending a second API-specific request to a second remotely hosted service that is distinct from the first remotely hosted service, wherein the second API-specific request is based at least in part on the first API-specific response; and

receiving a second API-specific response from the second remotely hosted service.

37. The non-transitory computer readable storage medium of claim 27 , wherein:

the respective API-specific response for a respective remotely hosted service includes one or more respective API-specific return parameters; and

the one or more programs further comprise instructions for translating the one or more respective API-specific return parameters into generic return parameters.

38. The non-transitory computer readable storage medium of claim 27 , wherein the one or more programs further comprise instructions for processing multiple respective API-specific responses without modifying the content of the multiple respective API-specific responses, and the final response includes the unmodified content of the multiple respective API-specific responses.

39. The non-transitory computer readable storage medium of claim 27 , wherein the final response is in a customized response format specified by a user of the client.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 14, 2010
From: TRIBBETT, DAVID
To: INDITTO, LLC
Reel/Frame 024230/0507 →
Continuity (2)
Provisional Application 61303581 · Feb 11, 2010
Related Publication 20110196914A1 · Aug 11, 2011