IP Library Granted Patent US 10,635,504
Granted Patent B2
US 10,635,504 · App. 14/515,516 · Granted Apr 28, 2020

API versioning independent of product releases

Inventors: Brent Rector (Redmond, WA); Lawrence William Osterman (Woodinville, WA); Tassaduq Basu (Sammamish, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F9/54G06F8/30G06F9/4881G06F9/541
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 10,635,504
App. No.
14/515,516
Granted
Apr 28, 2020
Kind
B2
Abstract

Technologies for a contract platform versioned according to the set of API contracts provided. API contracts are both development-time and run-time executable components. Each such contract defines a particular set of APIs that are fully supported at run-time by a corresponding implementation module. Contract applications are written to API contracts as opposed to the monolithic APIs of a legacy platform. Such applications are “platform agnostic”.

Claims (23)

1. A method performed on a computing device that includes at least processor and memory, the method for programmatically providing a feature to a contract application via an application programming interface (“API”) contract, the method comprising: hosting, by the computing device, the API contract that is configured for programmatically providing the feature to the application, where the API contract comprises identification information for the API contract, version information for the API contract and the feature, definition information that defines aspects of the feature, and executable code configured for responding to queries about the API contract.

2. The method of claim 1 where the API contract is discoverable at run-time.

3. The method of claim 1 where the API contract is associated with a corresponding executable module that implements at least a portion of the feature.

4. The method of claim 1 where a type defined by the API contract includes a type version attribute that indicates a version of the API contract at which the type was added to the API contract.

5. The method of claim 1 where the version information includes a current version of the API contract.

6. The method of claim 5 where the current version is equal to or greater than all versions indicated by any type version attributes included in the definition information.

7. The method of claim 1 where any types defined in the definition information are immutable or additively versioned.

8. A system comprising a computing device and at least one program module that are together configured for performing actions for programmatically providing a feature to a contract application via an application programming interface (“API”) contract, the computing device including at least one processor and memory, the actions comprising: hosting, by the computing device, the API contract that is configured for programmatically providing the feature to the contract application, where the API contract comprises identification information for the API contract, version information for the API contract and the feature, definition information that defines aspects of the feature, and executable code configured for responding to queries about the API contract.

9. The system of claim 8 where the API contract is discoverable at run-time.

10. The system of claim 8 where the API contract is associated with a corresponding executable module that implements at least a portion of the feature.

11. The system of claim 8 where a type defined by the API contract includes a type version attribute that indicates a version of the API contract at which the type was added to the API contract.

12. The system of claim 8 where the version information includes a current version of the API contract.

13. The system of claim 12 where the current version is equal to or greater than all versions indicated by any type version attributes included in the definition information.

14. The system of claim 8 where any types defined in the definition information are immutable or additively versioned.

15. At least one computer-readable medium storing computer-executable instructions that, when executed by at least one processor of a computing device, cause the computing device to perform actions programmatically providing a feature to a contract application via an application programming interface (“API”) contract, the computing device including at least one memory, the actions comprising: hosting, by the computing device, the API contract that is configured for programmatically providing the feature to the application, where the API contract comprises identification information for the API contract, version information for the API contract and the feature, definition information that defines aspects of the feature, and executable code configured for responding to queries about the API contract.

16. The at least one computer-readable medium of claim 15 where the API contract is discoverable at development-time the API contract is implied or indicated by source code.

17. The at least one computer-readable medium of claim 15 where the API contract is associated with a corresponding executable module that implements at least a portion of the feature.

18. The at least one computer-readable medium of claim 15 where a type defined by the API contract includes a type version attribute that indicates a version of the API contract at which the type was added to the API contract.

19. The at least one computer-readable medium of claim 15 where the version information includes a current version of the API contract that is equal to or greater than all versions indicated by any type version attributes included in the definition information.

20. The at least one computer-readable medium of claim 15 where any types defined in the definition information are immutable or additively versioned.

21. A method performed on a computing device that includes at least one processor and memory, the method for programmatically providing features of a contract platform to a contract application via at least one set of application programming interface (“API”) contracts, the method comprising: hosting, by the computing device, the at least one set of API contracts that are each configured for programmatically providing one of the features to the contract application, where the each API contract comprises identification information for the each API contract, version information for the each API contract and its provided feature, definition information that defines aspects of its provided feature, and executable code configured for responding to queries about the each API contract.

22. A method performed on a computing device that includes at least one processor and memory, the method for programmatically accessing, by a contract application, a feature provided via an application programming interface (“API”) contract, the method comprising: executing, by the computing device, the contract application that is configured for programmatically accessing, via the API contract, the feature, identification information of the API contract, version information of the API contract and the feature, definition information that defines aspects of the feature, and executable code configured for responding to queries about the API contract.

23. A method performed on a computing device that includes at least one processor and memory, the method for programmatically accessing, by tooling of a development environment, a feature provided via an application programming interface (“API”) contract, the method comprising: executing, by the computing device, the tooling that is configured for programmatically accessing, via the API contract, the feature, identification information of the API contract, version information of the API contract and the feature, definition information that defines aspects of the feature, and executable code configured for responding to queries about the API contract.

Assignments (3)
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE TO: MICROSOFT TECHNOLOGY LICENSING, LLC PREVIOUSLY RECORDED ON REEL 034693 FRAME 0187. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT Recorded Sep 30, 2015
From: RECTOR, BRENT; OSTERMAN, LAWRENCE WILLIAM; BASU, TASSADUQ
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 036718/0669 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034819/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 13, 2015
From: RECTOR, BRENT; OSTERMAN, LAWRENCE WILLIAM; BASU, TASSADUQ
To: MICROSOFT CORPORATION
Reel/Frame 034693/0187 →