# US 2019/0377620 A1 · Extensibility for third party application programming interfaces

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2019/0377620 A1
- Document ID: US20190377620A1
- Status: Published application
- Kind: A1
- Application number: 16/006,749
- Filed: 2018-06-12
- Published: 2019-12-12
- Earliest claimed: 2018-06-12
- Assignees: commercetools GmbH
- Applicants: commercetools GmbH
- Inventors: Christoph NEIJENHUIS
- Web page: https://patentgrep.com/patent/US20190377620A1

## CPC

- G06F 9/548: {Object oriented; Remote method invocation [RMI] (non-remote method invocation G06F9/449)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Techniques are disclosed for extending an API using remote, synchronous, user-defined extensions in a microservices environment. A request can be received to perform at least one action on at least one object type, the at least one action defined by an application programming interface (API). At least one extension associated with the at least one action and at least one object type can be determined. An object of the at least one object type and the at least one action can be performed on the object to generate an intermediate object. The intermediate object can be sent to the at least one extension for processing, the at least one extension hosted by a remote service. A response from the at least one extension can be received and the intermediate object can be updated based on the response.

## Claims

### Claim 1

A method, comprising:
receiving a request to perform at least one action on at least one object type, the at least one action defined by an application programming interface (API);
determining at least one extension associated with the at least one action and at least one object type;
obtaining an object of the at least one object type;
performing the at least one action to generate an intermediate object;
sending the intermediate object to the at least one extension for processing, the at least one extension hosted by a remote service;
receiving a response from the at least one extension; and
updating the intermediate object based on the response.

### Claim 2 (depends on 1)

The method of claim 1, wherein the at least one extension is associated with an extension definition, the extension definition specifying a destination for the extension and one or more triggers, the one or more triggers including the at least one object type and the at least one action definition.

### Claim 3 (depends on 2)

The method of claim 2, wherein sending the intermediate object to the at least one extension for processing further comprises:
sending the intermediate object to an endpoint specified by the destination for the at least one extension, the endpoint comprising one of an HTTP endpoint or a serverless computing provider endpoint.

### Claim 4 (depends on 2)

The method of claim 2, wherein the one or more triggers further include at least one predicate trigger, the at least one predicate trigger defining at least one field value associated with the at least one action.

### Claim 5 (depends on 2)

The method of claim 2, wherein the extension definition further includes an object query, wherein when the intermediate object is obtained, at least one additional object identified using the object query is obtained and the at least one additional object is sent to the at least one extension with the intermediate object.

### Claim 6 (depends on 1)

The method of claim 1, wherein updating the intermediate object based on the response further comprises:
receiving a plurality of responses from a plurality of extensions, each of the plurality of responses including at least one command to be executed on the intermediate object;
determining at least one extension dependency using at least one extension definition; and
executing the at least one command received from each of the plurality of extensions in an order based on the at least one extension dependency.

### Claim 7 (depends on 1)

The method of claim 1, wherein updating the intermediate object based on the response further comprises:
receiving a plurality of responses from a plurality of extensions, each of the plurality of responses including at least one command to be executed on the intermediate object;
executing the at least one action received from each of the plurality of extensions in an order based on when each of the plurality of responses is received.

### Claim 8

A system, comprising:
at least one processor; and
a computer readable storage medium including instructions stored thereon which, when executed by the processor, cause the system to:
receive a request to perform at least one action on at least one object type, the at least one action defined by an application programming interface (API);
determine at least one extension associated with the at least one action and at least one object type;
obtain an object of the at least one object type;
perform the at least one action to generate an intermediate object;
send the intermediate object to the at least one extension for processing, the at least one extension hosted by a remote service;
receive a response from the at least one extension; and
update the intermediate object based on the response.

### Claim 9 (depends on 8)

The system of claim 8, wherein the at least one extension is associated with an extension definition, the extension definition specifying a destination for the extension and one or more triggers, the one or more triggers including the at least one object type and the at least one action definition.

### Claim 10 (depends on 9)

The system of claim 9, wherein the instructions to send the intermediate object to the at least one extension for processing, when executed, further causes the system to:
send the intermediate object to an endpoint specified by the destination for the at least one extension, the endpoint comprising one of an HTTP endpoint or a serverless computing provider endpoint.

### Claim 11 (depends on 9)

The system of claim 9, wherein the one or more triggers further include at least one predicate trigger, the at least one predicate trigger defining at least one field value associated with the at least one action.

### Claim 12 (depends on 9)

The system of claim 9, wherein the extension definition further includes an object query, wherein when the intermediate object is obtained, at least one additional object identified using the object query is obtained and the at least one additional object is sent to the at least one extension with the intermediate object.

### Claim 13 (depends on 8)

The system of claim 8, wherein the instructions to update the intermediate object based on the response, when executed, further causes the system to:
receive a plurality of responses from a plurality of extensions, each of the plurality of responses including at least one command to be executed on the intermediate object;
determine at least one extension dependency using at least one extension definition; and
execute the at least one command received from each of the plurality of extensions in an order based on the at least one extension dependency.

### Claim 14 (depends on 8)

The system of claim 8, wherein the instructions to update the intermediate object based on the response, when executed, further causes the system to:
receive a plurality of responses from a plurality of extensions, each of the plurality of responses including at least one command to be executed on the intermediate object;
execute the at least one action received from each of the plurality of extensions in an order based on when each of the plurality of responses is received.

### Claim 15

A computer readable storage medium including instructions stored thereon which, when executed by one or more processors, cause the one or more processors to:
receive a request to perform at least one action on at least one object type, the at least one action defined by an application programming interface (API);
determine at least one extension associated with the at least one action and at least one object type;
obtain an object of the at least one object type;
perform the at least one action to generate an intermediate object;
send the intermediate object to the at least one extension for processing, the at least one extension hosted by a remote service;
receive a response from the at least one extension; and
update the intermediate object based on the response.

### Claim 16 (depends on 15)

The computer readable storage medium of claim 15, wherein the at least one extension is associated with an extension definition, the extension definition specifying a destination for the extension and one or more triggers, the one or more triggers including the at least one object type and the at least one action definition wherein the one or more triggers further include at least one predicate trigger, the at least one predicate trigger defining at least one field value associated with the at least one action.

### Claim 17 (depends on 16)

The computer readable storage medium of claim 16, wherein the instructions to send the intermediate object to the at least one extension for processing, when executed, further causes the one or more processors to:
send the intermediate object to an endpoint specified by the destination for the at least one extension, the endpoint comprising one of an HTTP endpoint or a serverless computing provider endpoint.

### Claim 18 (depends on 16)

The computer readable storage medium of claim 16, wherein the extension definition further includes an object query, wherein when the intermediate object is obtained, at least one additional object identified using the object query is obtained and the at least one additional object is sent to the at least one extension with the intermediate object.

### Claim 19 (depends on 15)

The computer readable storage medium of claim 15, wherein the instructions to update the intermediate object based on the response, when executed, further causes the one or more processors to:
receive a plurality of responses from a plurality of extensions, each of the plurality of responses including at least one command to be executed on the intermediate object;
determine at least one extension dependency using at least one extension definition; and
execute the at least one command received from each of the plurality of extensions in an order based on the at least one extension dependency.

### Claim 20 (depends on 15)

The computer readable storage medium of claim 15, wherein the instructions to update the intermediate object based on the response, when executed, further causes the one or more processors to:
receive a plurality of responses from a plurality of extensions, each of the plurality of responses including at least one command to be executed on the intermediate object;
execute the at least one action received from each of the plurality of extensions in an order based on when each of the plurality of responses is received.
