IP Library Granted Patent US 11,620,312
Granted Patent B2
US 11,620,312 · App. 16/997,367 · Granted Apr 4, 2023

Method and system for processing write queries in an application programming interface based on declarative schemas for individual services

Inventors: Aveer Ratan Thakur (Mountain View, CA); Michael J. Kogan (San Diego, CA); Banani Medhi (San Diego, CA); Peter Allen Vogel (Santa Clara, CA)
Assignee: INTUIT INC.
G06F16/283G06F9/546G06F16/248G06F16/2455G06F16/2474
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 11,620,312
App. No.
16/997,367
Granted
Apr 4, 2023
Kind
B2
Abstract

Certain aspects of the present disclosure provide techniques for processing north-south queries in an application programming interface (API) generated for a plurality of associated services. The method generally includes receiving a request to invoke a function exposed by a first service in the API, wherein the function commits data to one or more data repositories. A data record is generated by the first service based on the received request based on a data object definition and a service definition for the first service. A message is generated including the generated data record and an indication that the message is to be consumed by a data lake processing system to commit data to a data lake. The message is published on a message bus for consumption by the data lake processing system.

Claims (52)

1. A method for processing requests in an application programming interface (API), comprising:

receiving a request to invoke a function exposed by a first service through the API, wherein:

the function commits data to one or more data repositories, and

the request is received as a first message on a message bus from another service;

generating, by the first service, a data record based on the received request based on a data object definition and a service definition for the first service, wherein generating the data record comprises generating one or more data records associated with objects defined in a data object definition and a service definition for a second service referenced by the data object definition by:

identifying, from the data object definition and the service definition for the first service, one or more references to objects defined in the data object definition and the service definition for the second service; and

publishing a data object write message on the message bus for consumption by the second service, wherein the data object write message instructs the second service to generate and commit records associated with the referenced objects to a data repository associated with the second service;

generating a second message including the generated data record and an indication that the message is to be consumed by a data lake processing system to commit data to a data lake;

publishing the second message on the message bus for consumption by the data lake processing system; and

publishing a third message on the message bus, intended for the other service, indicating that the request has been satisfied and that the other service can continue processing a data write operation.

2. The method of claim 1 , wherein the second message includes versioning information identifying a version of the data object definition used in generating the data record.

3. The method of claim 1 , further comprising: committing the data record to a local data store associated with the first service such that future requests for the data record are retrieved from the local data store associated with the first service and not from the data lake and data stored in the data lake is used outside of an operating environment in which the API is deployed.

4. The method of claim 1 , wherein:

the data object write message comprises a batch write instruction to instruct the second service to write a plurality of records to the data repository associated with the second service; and

the method further comprises:

receiving, from the second service, identifiers of the plurality of records written to the data repository associated with the second service, and

inserting the received identifiers into the generated data record such that the plurality of records written to the data repository associated with the second service are not duplicated in the data lake.

5. The method of claim 1 , wherein the API comprises a graph projection composed from schemas defining a plurality of services exposed by the API.

6. A system, comprising:

a memory having executable instructions stored thereon; and

a processor configured to execute the executable instructions to cause the system to:

receive a request to invoke a function exposed by a first service through an application programming interface (API), wherein:

the function commits data to one or more data repositories, and

the request is received as a first message on a message bus from another service;

generate, by the first service, a data record based on the received request based on a data object definition and a service definition for the first service, wherein in order to generate the data record, the processor is configured to cause the system to generate one or more data records associated with objects defined in a data object definition and a service definition for a second service referenced by the data object definition by causing the system to:

identify, from the data object definition and the service definition for the first service, one or more references to objects defined in the data object definition and the service definition for the second service, and

publish a data object write message on the message bus for consumption by the second service, wherein the data object write message instructs the second service to generate and commit records associated with the referenced objects to a data repository associated with the second service;

generate a second message including the generated data record and an indication that the message is to be consumed by a data lake processing system to commit data to a data lake;

publish the second message on the message bus for consumption by the data lake processing system; and

publish a third message on the message bus, intended for the other service, indicating that the request has been satisfied and that the other service can continue processing a data write operation.

7. The system of claim 6 , wherein the second message includes versioning information identifying a version of the data object definition used in generating the data record.

8. The system of claim 6 , wherein the processor is further configured to cause the system to commit the data record to a local data store associated with the first service such that future requests for the data record are retrieved from the local data store associated with the first service and not from the data lake and data stored in the data lake is used outside of an operating environment in which the API is deployed.

9. The system of claim 6 , wherein:

the data object write message comprises a batch write instruction to instruct the second service to write a plurality of records to the data repository associated with the second service; and

the processor is further configured to cause the system to:

receive, from the second service, identifiers of the plurality of records written to the data repository associated with the second service, and

insert the received identifiers into the generated data record such that the plurality of records written to the data repository associated with the second service are not duplicated in the data lake.

10. The system of claim 6 , wherein the API comprises a graph projection composed from schemas defining a plurality of services exposed by the API.

11. A method for processing requests in an application programming interface (API), comprising:

receiving a request to invoke a first function exposed by a first service through the API, wherein the function is configured to commits data to one or more data repositories;

publishing an object write message on a message bus to invoke a second function to generate one or more data records associated with objects defined in a data object definition and a service definition for a second service referenced by the data object definition, wherein the object write message comprises a batch write instruction to instruct the second service to write a plurality of records to the data repository associated with the second service;

receiving, from the second service, identifiers of the generated one or more data records in a message consumed on the message bus;

generating a data record based on the received request, a data object definition and a service definition for the first service, and the identifiers of the generated one or more data records associated with objects defined in the data object definition and the service definition for the second service, wherein generating the data record comprises generating one or more data records associated with objects defined in a data object definition and a service definition for a second service referenced by the data object definition by:

identifying, from the data object definition and the service definition for the first service, one or more references to objects defined in the data object definition and the service definition for the second service; and

publishing a data object write message on the message bus for consumption by the second service, wherein the data object write message instructs the second service to generate and commit records associated with the referenced objects to a data repository associated with the second service;

generating a message including the generated data record, an indication that the message is to be consumed by a data lake processing system to commit data to a data lake, and versioning information identifying a version of the data object definition used in generating the data record; and

publishing the message on the message bus for consumption by the data lake processing system.

12. The method of claim 11 , further comprising: committing the generated data record to a local data store associated with the first service such that future requests for the generated data record are retrieved from the local data store associated with the first service and not from the data lake and data stored in the data lake is used outside of an operating environment in which the API is deployed.

13. The method of claim 11 , wherein the API comprises a graph projection composed from schemas defining a plurality of services exposed by the API.

14. The method of claim 1 , wherein the data object definition references a data object defined by a different data object definition such that the referenced data object is not duplicated in the generated data record.

15. The system of claim 6 , wherein the data object definition references a data object defined by a different data object definition such that the referenced data object is not duplicated in the generated data record.

16. The method of claim 11 , wherein the data object definition references a data object defined by a different data object definition such that the referenced data object is not duplicated in the generated data record.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 19, 2020
From: THAKUR, AVEER RATAN; KOGAN, MICHAEL J.; MEDHI, BANANI; VOGEL, PETER ALLEN
To: INTUIT INC.
Reel/Frame 053540/0575 →
Continuity (1)
Related Publication 20220058210A1 · Feb 24, 2022