IP Library Granted Patent US 10,164,961
Granted Patent B2
US 10,164,961 · App. 15/495,130 · Granted Dec 25, 2018

Dynamic web services server

Inventors: Suresh S. Pandian (Cupertino, CA); Udo H. Waibel (Los Altos, CA); Hong Hauw (San Ramon, CA); Andrii Zavgorodnii (San Jose, CA); Sundarapandian Sabapathy (Pleasanton, CA); Shaohua Yao (San Ramon, CA); Randy Jessee (Tracy, CA); Roland Poklemba (San Ramon, CA)
Assignee: Ivanti, Inc.
H04L63/08G06F17/3089H04L41/0246H04L63/102H04L67/02H04L67/20H04L67/2814H04L67/2823H04L67/327H04L63/123
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,164,961
App. No.
15/495,130
Granted
Dec 25, 2018
Kind
B2
Abstract

A method is provided for a multi-tenant system to accept web service calls from third party systems over a computer network. The method includes centrally receiving messages with different endpoint URLs from the third party systems over the computer network and processing each message by parsing an endpoint URL of the message to identify a tenant and an action for a payload of the message and authenticating the message. When the message is authenticated, the method further includes generating an acknowledgment of the message based on the identified tenant and the identified action and sending the acknowledgment over the computer network, routing the payload, the identified tenant, and the identified the action to a queue based on the identified tenant, retrieving the payload, the identified tenant, and the identified action from the queue, determining a user script corresponding to the identified action, and executing the user script on the payload.

Claims (73)

1. An apparatus, comprising:

a memory; and

a hardware processor operatively coupled to the memory, the hardware processor configured to:

receive a web service call message including an end point Uniform Resource Locator (URL) and a payload in a first format;

parse the end point URL in the web service call message to identify a tenant and an action;

transform the payload in the first format into a second format compatible with a script execution engine from a plurality of script execution engines, each script execution engine from the plurality of script execution engines associated with a queue from a plurality of queues;

responsive to the transforming the payload, generate a queue message (i) including an identifier of the tenant, an identifier of the action, and the payload in the second format and (ii) associated with the web service call message including the end point URL; and

send the queue message that has been generated to a compute device, such that the compute device in response to receiving the queue message routes the queue message based on the identifier of the tenant to the queue from the plurality of queues and associated with the script execution engine to, subsequent to the routing, execute a user script (i) with the payload in the queue message that has been generated as an input to the user script and (ii) selected based on the identifier of the action in the queue message that has been generated.

2. The apparatus of claim 1 , wherein the hardware processor is further configured to:

parse the end point URL to identify an Application Programming Interface (API) key;

determine an Internet Protocol (IP) address associated with the web service call message; and

authenticate the web service call message using the end point URL and the IP address by:

determining that the IP address is not included in a first list of IP addresses associated with a third-party system, the web service call message associated with the third-party system;

determining that the IP address is included in a second list of IP addresses associated with the tenant; and

determining that the API key matches a predefined API key associated with the tenant,

the hardware processor configured to transform the payload after authenticating the web service call message.

3. The apparatus of claim 1 , wherein the hardware processor is configured to receive the web service call message from a third-party system, the hardware processor further configured to:

determine that an acknowledgment message identifier in a table of acknowledgement messages is associated with the tenant and the action; and

send, in response to determining that the acknowledgement message identifier in the table is associated with the tenant and the action, an acknowledgement message associated with the acknowledgement message identifier to the third-party system.

4. The apparatus of claim 1 , wherein the hardware processor is configured to receive the web service call message from a third-party system from a plurality of third-party systems, each third-party system from the plurality of third-party systems associated with a computing platform different from a computing platform for at least one other third-party system from the plurality of third-party systems.

5. The apparatus of claim 1 , wherein the first format is Simple Object Access Protocol (SOAP) and the second format is JavaScript Object Notation (JSON).

6. The apparatus of claim 1 , wherein the hardware processor is further configured to:

parse the end point URL to identify a query string; and

append the query string to a beginning of the payload in the second format.

7. The apparatus of claim 1 , wherein the queue message includes the end point URL.

8. The apparatus of claim 1 , wherein the compute device is a first compute device and the web service call message is received from a second compute device, the hardware processor further configured to:

generate, after the sending, an acknowledgement message based on the action; and

send the acknowledgement message to the second compute device.

9. The apparatus of claim 1 , wherein the hardware processor is further configured to:

receive, from a device of a user, an edit to the user script; and

modify the user script to include the edit from the device of the user.

10. A method, comprising:

receiving a web service call message including an end point Uniform Resource Locator (URL) and a payload in a first format;

parsing the end point URL in the web service call message to identify a tenant and an action;

transforming the payload in the first format into a second format compatible with a script execution engine from a plurality of script execution engines, each script execution engine from the plurality of script execution engines associated with a queue from a plurality of queues;

responsive to the transforming of the payload, generating a queue message (i) including an identifier of the tenant, an identifier of the action, and the payload in the second format and (ii) associated with the web service call message including the end point URL; and

sending the queue message that has been generated to a compute device, such that the compute device in response to receiving the queue message routes the queue message based on the identifier of the tenant to the queue from the plurality of queues and associated with the script execution engine to, subsequent to the routing, execute a user script (i) with the payload in the queue message that has been generated as an input to the user script and (ii) selected based on the identifier of the action in the queue message that has been generated.

11. The method of claim 10 , further comprising:

parsing the end point URL to identify an Application Programming Interface (API) key;

determining an Internet Protocol (IP) address associated with the web service call message; and

authenticating the web service call message using the end point URL and the IP address by:

determining that the IP address is not included in a first list of IP addresses associated with a third-party system, the web service call message associated with the third-party system;

determining that the IP address is included in a second list of IP addresses associated with the tenant; and

determining that the API key matches a predefined API key associated with the tenant,

the transforming the payload occurring after the authenticating the web service call message.

12. The method of claim 10 , wherein the receiving includes receiving the web service call message from a third-party system, the method further comprising:

determining that an acknowledgment message identifier in a table of acknowledgement messages is associated with the tenant and the action; and

sending, in response to determining that the acknowledgement message identifier in the table is associated with the tenant and the action, an acknowledgement message associated with the acknowledgement message identifier to the third-party system.

13. The method of claim 10 , wherein the receiving includes receiving the web service call message from a third-party system from a plurality of third-party systems, each third-party system from the plurality of third-party systems associated with a computing platform different from a computing platform for at least one other third-party system from the plurality of third-party systems.

14. The method of claim 10 , wherein the first format is Simple Object Access Protocol (SOAP) and the second format is JavaScript Object Notation (JSON).

15. The method of claim 10 , further comprising:

parsing the end point URL to identify a query string; and

appending the query string to a beginning of the payload in the second format.

16. A non-transitory processor-readable medium storing code representing instructions to be executed by a hardware processor, the code comprising code to cause the hardware processor to:

parse an end point Uniform Resource Locator (URL) in a web service call message to identify a tenant and an action, the web service call message including the end point URL and a payload in a first format;

transform the payload in the first format into a second format compatible with a script execution engine from a plurality of script execution engines, each script execution engine from the plurality of script execution engines associated with a queue from a plurality of queues;

responsive to the transforming the payload, generate a queue message (i) including an identifier of the tenant, an identifier of the action, and the payload in the second format and (ii) associated with the web service call message including the end point URL; and

send the queue message that has been generated to a compute device, such that the compute device in response to receiving the queue message routes the queue message based on the identifier of the tenant to the queue from the plurality of queues and associated with the script execution engine to, subsequent to the routing, execute a user script (i) with the payload in the queue message that has been generated as an input to the user script and (ii) selected based on the identifier of the action in the queue message that has been generated.

17. The non-transitory processor-readable medium of claim 16 , the code further comprising code to cause the hardware processor to:

parse the end point URL to identify an Application Programming Interface (API) key;

determine an Internet Protocol (IP) address associated with the web service call message; and

authenticate the web service call message using the end point URL and the IP address by:

determining that the IP address is not included in a first list of IP addresses associated with a third-party system, the web service call message associated with the third-party system;

determining that the IP address is included in a second list of IP addresses associated with the tenant; and

determining that the API key matches a predefined API key associated with the tenant,

the code to cause the hardware processor to transform the payload including code to cause the hardware processor to transform the payload after authenticating the web service call message.

18. The non-transitory processor-readable medium of claim 16 , wherein the web service call message is received from a third-party system, the code further comprising code to cause the hardware processor to:

determine that an acknowledgment message identifier in a table of acknowledgement messages is associated with the tenant and the action; and

send, in response to determining that the acknowledgement message identifier in the table is associated with the tenant and the action, an acknowledgement message associated with the acknowledgement message identifier to the third-party system.

19. The non-transitory processor-readable medium of claim 16 , wherein the first format is Simple Object Access Protocol (SOAP) and the second format is JavaScript Object Notation (JSON).

20. The non-transitory processor-readable medium of claim 16 , wherein the code further comprises code to cause the hardware processor to:

parse the end point URL to identify a query string; and

append the query string to a beginning of the payload in the second format.

Assignments (8)
CORRECTIVE ASSIGNMENT TO CORRECT THE PROPERTY 14633493 WHICH WAS ENTERED INCORRECTLY AS 14633793 PREVIOUSLY RECORDED ON REEL 71176 FRAME 315. ASSIGNOR(S) HEREBY CONFIRMS THE FIRST LIEN NEWCO SECURITY AGREEMENT. Recorded Nov 10, 2025
From: PULSE SECURE, LLC; IVANTI, INC.; IVANTI US LLC; IVANTI SECURITY HOLDINGS LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 073818/0515 →
FIRST LIEN NEWCO SECURITY AGREEMENT Recorded May 5, 2025
From: PULSE SECURE, LLC; IVANTI, INC.; IVANTI US LLC; IVANTI SECURITY HOLDINGS LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 071176/0315 →
SECURITY INTEREST Recorded May 2, 2025
From: IVANTI, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 071164/0482 →
NOTICE OF SUCCESSION OF AGENCY FOR SECURITY INTEREST AT REEL/FRAME 054665/0873 Recorded Apr 29, 2025
From: BANK OF AMERICA, N.A., AS RESIGNING AGENT
To: ALTER DOMUS (US) LLC, AS SUCCESSOR AGENT
Reel/Frame 071123/0386 →
SECURITY INTEREST Recorded Dec 9, 2020
From: CELLSEC, INC.; PULSE SECURE, LLC; INVANTI, INC.; MOBILEIRON, INC.; INVANTI US LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 054665/0873 →
SECURITY INTEREST Recorded Dec 9, 2020
From: CELLSEC, INC.; PULSE SECURE, LLC; IVANTI, INC.; MOBILEIRON, INC.; IVANTI US LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 054665/0062 →
MERGER Recorded Apr 19, 2018
From: HEAT SOFTWARE USA INC.
To: IVANTI, INC.
Reel/Frame 045589/0203 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 4, 2017
From: PANDIAN, SURESH S.; WAIBEL, UDO H.; HAUW, HONG; ZAVGORODNII, ANDRII; SABAPATHY, SUNDARAPANDIAN; YAO, SHAOHUA; JESSEE, RANDY; POKLEMBA, ROLAND
To: HEAT SOFTWARE USA INC.
Reel/Frame 042237/0981 →
Continuity (2)
Continuation 14864747 · Sep 24, 2015
Related Publication 20180077132A1 · Mar 15, 2018