IP Library Granted Patent US 12,693,839
Granted Patent B2
US 12,693,839 · App. 18/388,589 · Granted Jul 28, 2026

Graphical user interface and system for defining and maintaining code-based policies

Inventors: Mikol Graves (San Francisco, CA); Peter J. Shepherd (San Jose, CA); Magnus Hei-Yu Ma (San Francisco, CA); Timothy L. Hinrichs (Los Altos, CA); Teemu Koponen (San Francisco, CA)
Assignee: Apple Inc.
G06F8/427G06F8/38G06F8/71G06F8/73
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 12,693,839
App. No.
18/388,589
Granted
Jul 28, 2026
Kind
B2
Abstract

Some embodiments of the invention provide a method for defining code-based policies. The method generates a policy-builder first view of a policy for display in a graphical user interface (GUI) by processing a syntax tree that is generated from a code second view of the policy. The method receives, through the policy-builder first view, a modification to a portion of the policy. To reflect the modification, the method updates a portion of the syntax tree that corresponds to the portion of the policy that is affected by the modification. Based on the updating of the syntax tree, the method updates the code second view by modifying a portion of the code second view that corresponds to the updated portion of the syntax tree.

Claims (48)

1 . A method comprising:

in a graphical user interface (GUI) that displays a policy-builder view of a policy for which at least a first rule is defined, the policy-builder view comprising (i) at least a first row that comprises a definition of the first rule, and (ii) a set of selectable items for modifying the policy:

receiving a selection of a first selectable item to modify the policy by adding a second rule to the policy;

based on the selection, displaying a second row in the policy-builder view, the second row comprising a set of three selectable boxes for defining the second rule and directing interactions to a first selectable box of the set of three selectable boxes;

after receiving an operand first value as input for the first selectable box, directing interactions to a second selectable box of the set of three selectable boxes;

after receiving an operator second value as input for the second selectable box, directing interactions to a third selectable box of the set of three selectable boxes;

after receiving an operand third value as input for the third selectable box, providing a second selectable item for saving the second rule; and

upon receiving a selection to save the second rule, updating the policy to include the second rule.

2 . The method of claim 1 , wherein each selectable box in the set of three selectable boxes comprises a dropdown menu of selectable input options for populating the selectable box.

3 . The method of claim 2 , wherein the GUI enables each selectable box in the set of selectable boxes to be populated via at least one of (i) entering text into the selectable box and (ii) selecting a selectable input option from the dropdown menu of the selectable box.

4 . The method of claim 1 , wherein before receiving the operator second value, the GUI does not accept input for the third selectable box, wherein after receiving the operator second value, the method further comprises:

determining that the operator second value is not a Boolean value; and

based on said determining, accepting input for the third selectable box.

5 . The method of claim 1 , wherein before receiving the operator second value, the GUI does not accept input for the third selectable box, wherein after receiving the operator second value, the method further comprises:

determining that the operator second value is a Boolean value; and

based on said determining, removing the third selectable box from the second row.

6 . The method of claim 1 , wherein receiving the selection to save comprises receiving a selection of the second selectable item for saving the second rule.

7 . The method of claim 1 , wherein the second row further comprises one or more selectable items for adding conditions to the second rule.

8 . The method of claim 7 , wherein the set of three selectable boxes comprises a first subset of selectable boxes, the method further comprising:

receiving a selection to add a particular condition to the second rule; and

based on said receiving, displaying a second subset of selectable boxes for defining the particular condition.

9 . The method of claim 1 , wherein the policy-builder view of the policy is a policy-builder first view of the policy that is generated by processing a syntax tree that is generated from a code second view of the policy.

10 . The method of claim 9 , wherein updating the policy further comprises updating (i) the policy-builder first view of the policy and (ii) the code second view of the policy.

11 . The method of claim 1 , wherein the policy is defined in a declarative language.

12 . The method of claim 1 , wherein the set of selectable items for modifying the policy comprises at least a first selectable item for adding rules to the policy, a second selectable item for modifying existing rules of the policy, and a third selectable item for adding new conditions to the existing rules of the policy.

13 . A non-transitory machine readable medium storing a program for execution by at least one processing unit for defining code-based policies in a graphical user interface (GUI) that displays a policy-builder view of a policy for which at least a first rule is defined, the policy-builder view comprising (i) at least a first row that comprises a definition of the first rule, and (ii) a set of selectable items for modifying the policy, the program comprising sets of instructions for:

receiving a selection of a first selectable item to modify the policy by adding a second rule to the policy;

based on the selection, displaying a second row in the policy-builder view, the second row comprising a set of three selectable boxes for defining the second rule and directing interactions to a first selectable box of the set of three selectable boxes;

after receiving an operand first value as input for the first selectable box, directing interactions to a second selectable box of the set of three selectable boxes;

after receiving an operator second value as input for the second selectable box, directing interactions to a third selectable box of the set of three selectable boxes;

after receiving an operand third value as input for the third selectable box, providing a second selectable item for saving the second rule; and

upon receiving a selection to save the second rule, updating the policy to include the second rule.

14 . The non-transitory machine readable medium of claim 13 , wherein each selectable box in the set of three selectable boxes comprises a dropdown menu of selectable input options for populating the selectable box.

15 . The non-transitory machine readable medium of claim 14 , wherein the GUI enables each selectable box in the set of selectable boxes to be populated via at least one of (i) entering text into the selectable box and (ii) selecting a selectable input option from the dropdown menu of the selectable box.

16 . The non-transitory machine readable medium of claim 13 , wherein the policy-builder view of the policy is a policy-builder first view of the policy that is generated by processing a syntax tree that is generated from a code second view of the policy.

17 . The non-transitory machine readable medium of claim 16 , wherein the set of instructions for updating the policy comprises a set of instructions for updating (i) the policy-builder first view of the policy and (ii) the code second view of the policy.

18 . The non-transitory machine readable medium of claim 13 , wherein the policy is defined in a declarative language.

19 . The non-transitory machine readable medium of claim 13 , wherein the set of selectable items for modifying the policy comprises at least a first selectable item for adding rules to the policy, a second selectable item for modifying existing rules of the policy, and a third selectable item for adding new conditions to the existing rules of the policy.

20 . A device comprising:

a memory; and

at least one processor configured to:

in a graphical user interface (GUI) that displays a policy-builder view of a policy for which at least a first rule is defined, the policy-builder view comprising (i) at least a first row that comprises a definition of the first rule, and (ii) a set of selectable items for modifying the policy:

receive a selection of a first selectable item to modify the policy by adding a second rule to the policy;

based on the selection, display a second row in the policy-builder view, the second row comprising a set of three selectable boxes for defining the second rule and directing interactions to a first selectable box of the set of three selectable boxes;

after receipt of an operand first value as input for the first selectable box, direct interactions to a second selectable box of the set of three selectable boxes;

after receipt of an operator second value as input for the second selectable box, direct interactions to a third selectable box of the set of three selectable boxes;

after receipt of an operand third value as input for the third selectable box, provide a second selectable item for saving the second rule; and

upon receipt of a selection to save the second rule, updating the policy to include the second rule.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 5, 2025
From: STYRA, INC.
To: APPLE INC.
Reel/Frame 072818/0489 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 19, 2025
From: STYRA, INC.
To: APPLE INC.
Reel/Frame 072522/0568 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 14, 2025
From: HINRICHS, TIMOTHY L.; KOPONEN, TEEMU; GRAVES, MIKOL; SHEPHERD, PETER J.; MA, MAGNUS HEI-YU
To: STYRA, INC.
Reel/Frame 072022/0289 →
Continuity (5)
Continuation 17994358 · Nov 27, 2022
Continuation 17239334 · Apr 23, 2021
Provisional Application 63075036 · Sep 4, 2020
Provisional Application 63066112 · Aug 14, 2020
Related Publication 20240078097A1 · Mar 7, 2024
References Cited (119)
US 5974549A · Golan · 1999 [cited by applicant]
US 6985953B1 · Sandhu et al. · 2006 [cited by applicant]
US 7043659B1 · Klein et al. · 2006 [cited by applicant]
US 7062502B1 · Kesler · 2006 [cited by examiner]
US 7096367B2 · Garg et al. · 2006 [cited by applicant]
US 7124192B2 · High, Jr. et al. · 2006 [cited by applicant]
US 7752661B2 · Hemsath et al. · 2010 [cited by applicant]
US 7913300B1 · Flank et al. · 2011 [cited by applicant]
US 8074256B2 · Valente · 2011 [cited by examiner]
US 8170901B2 · Shukla · 2012 [cited by examiner]
US 8219457B2 · Smith · 2012 [cited by examiner]
US 8266694B1 · Roy · 2012 [cited by applicant]
US 8613070B1 · Borzycki et al. · 2013 [cited by applicant]
US 8683560B1 · Brooker et al. · 2014 [cited by applicant]
US 8782744B1 · Fuller et al. · 2014 [cited by applicant]
US 8789138B2 · Reierson et al. · 2014 [cited by applicant]
US 9397990B1 · Taly et al. · 2016 [cited by applicant]
US 9530020B2 · Brandwine et al. · 2016 [cited by applicant]
US 9578004B2 · Greenspan et al. · 2017 [cited by applicant]
US 9648040B1 · Morkel et al. · 2017 [cited by applicant]
US 10122757B1 · Kruse et al. · 2018 [cited by applicant]
US 10127393B2 · Ferraiolo et al. · 2018 [cited by applicant]
US 10182129B1 · Peterson et al. · 2019 [cited by applicant]
US 10257184B1 · Mehta et al. · 2019 [cited by applicant]
US 10353726B2 · Duan · 2019 [cited by applicant]
US 10453118B2 · Smith · 2019 [cited by examiner]
US 10454975B1 · Mehr · 2019 [cited by applicant]
US 10469314B2 · Ennis, Jr. et al. · 2019 [cited by applicant]
US 10574699B1 · Baer et al. · 2020 [cited by applicant]
US 10592302B1 · Hinrichs et al. · 2020 [cited by applicant]
US 10592683B1 · Lim et al. · 2020 [cited by applicant]
US 10715514B1 · Threlkeld · 2020 [cited by applicant]
US 10719373B1 · Koponen et al. · 2020 [cited by applicant]
US 10740470B2 · Ionescu et al. · 2020 [cited by applicant]
US 10789220B2 · Mayer et al. · 2020 [cited by applicant]
US 10984133B1 · Hinrichs et al. · 2021 [cited by applicant]
US 10986131B1 · Kruse et al. · 2021 [cited by applicant]
US 10990702B1 · Hinrichs et al. · 2021 [cited by applicant]
US 11023292B1 · Hinrichs et al. · 2021 [cited by applicant]
US 11080410B1 · Sandall et al. · 2021 [cited by applicant]
US 11108827B2 · Beckman et al. · 2021 [cited by applicant]
US 11108828B1 · Curtis et al. · 2021 [cited by applicant]
US 11170099B1 · Sandall et al. · 2021 [cited by applicant]
US 11245728B1 · Curtis et al. · 2022 [cited by applicant]
US 11258824B1 · Hinrichs et al. · 2022 [cited by applicant]
US 11327815B1 · Koponen et al. · 2022 [cited by applicant]
US 11470121B1 · Curtis et al. · 2022 [cited by applicant]
US 11477238B1 · Curtis et al. · 2022 [cited by applicant]
US 11477239B1 · Curtis et al. · 2022 [cited by applicant]
US 11494518B1 · Curtis et al. · 2022 [cited by applicant]
US 11496517B1 · Hinrichs et al. · 2022 [cited by applicant]
US 11502992B1 · Koponen et al. · 2022 [cited by applicant]
US 11513778B1 · Graves et al. · 2022 [cited by applicant]
US 11520579B1 · Narkar et al. · 2022 [cited by applicant]
US 11604684B1 · Hinrichs et al. · 2023 [cited by applicant]
US 11681568B1 · Hinrichs et al. · 2023 [cited by applicant]
US 11741244B2 · Sandall et al. · 2023 [cited by applicant]
US 11762712B2 · Koponen et al. · 2023 [cited by applicant]
US 11853733B2 · Graves et al. · 2023 [cited by applicant]
US 12118102B1 · Sandall et al. · 2024 [cited by applicant]
US 20040083367A1 · Garg et al. · 2004 [cited by applicant]
US 20050114674A1 · Carley · 2005 [cited by applicant]
US 20070156670A1 · Lim · 2007 [cited by applicant]
US 20080184336A1 · Sarukkai et al. · 2008 [cited by applicant]
US 20090063665A1 · Bagepalli et al. · 2009 [cited by applicant]
US 20090077618A1 · Pearce et al. · 2009 [cited by applicant]
US 20090281996A1 · Liu et al. · 2009 [cited by applicant]
US 20100281462A1 · Festa · 2010 [cited by applicant]
US 20100333079A1 · Sverdlov et al. · 2010 [cited by applicant]
US 20110113484A1 · Zeuthen · 2011 [cited by applicant]
US 20120030354A1 · Razzaq et al. · 2012 [cited by applicant]
US 20120117608A1 · Metke et al. · 2012 [cited by applicant]
US 20120144295A1 · Clark et al. · 2012 [cited by applicant]
US 20120303465A1 · Smith · 2012 [cited by examiner]
US 20120311672A1 · Connor et al. · 2012 [cited by applicant]
US 20120331539A1 · Matsugashita · 2012 [cited by applicant]
US 20130226970A1 · Weber et al. · 2013 [cited by applicant]
US 20140032691A1 · Barton et al. · 2014 [cited by applicant]
US 20140032759A1 · Barton et al. · 2014 [cited by applicant]
US 20140033267A1 · Aciicmez · 2014 [cited by applicant]
US 20140237594A1 · Thakadu et al. · 2014 [cited by applicant]
US 20150089575A1 · Vepa et al. · 2015 [cited by applicant]
US 20150213449A1 · Morrison et al. · 2015 [cited by applicant]
US 20150244724A1 · Xu et al. · 2015 [cited by applicant]
US 20160057107A1 · Call et al. · 2016 [cited by applicant]
US 20160188898A1 · Karinta et al. · 2016 [cited by applicant]
US 20170024428A1 · Patiejunas et al. · 2017 [cited by applicant]
US 20170111336A1 · Davis et al. · 2017 [cited by applicant]
US 20170161120A1 · Sasaki et al. · 2017 [cited by applicant]
US 20170220370A1 · Klompje et al. · 2017 [cited by applicant]
US 20170237729A1 · Uppalapati · 2017 [cited by applicant]
US 20170302655A1 · Sondhi et al. · 2017 [cited by applicant]
US 20170346807A1 · Blasi · 2017 [cited by applicant]
US 20170364702A1 · Goldfarb et al. · 2017 [cited by applicant]
US 20180067790A1 · Chheda et al. · 2018 [cited by applicant]
US 20180082053A1 · Brown et al. · 2018 [cited by applicant]
US 20180109538A1 · Kumar et al. · 2018 [cited by applicant]
US 20180309746A1 · Blasi · 2018 [cited by applicant]
US 20190007418A1 · Cook et al. · 2019 [cited by applicant]
US 20190007443A1 · Cook et al. · 2019 [cited by applicant]
US 20190080103A1 · Hadzic et al. · 2019 [cited by applicant]
US 20190190959A1 · Yuan · 2019 [cited by applicant]
US 20190230130A1 · Beckman et al. · 2019 [cited by applicant]
US 20190236975A1 · Chong et al. · 2019 [cited by applicant]
US 20190245862A1 · Kruse et al. · 2019 [cited by applicant]
US 20190386973A1 · Patwardhan et al. · 2019 [cited by applicant]
US 20200007580A1 · Liderman et al. · 2020 [cited by applicant]
US 20210029029A1 · Mehmedagic et al. · 2021 [cited by applicant]
US 20210240550A1 · Hinrichs et al. · 2021 [cited by applicant]
US 20210248017A1 · Hinrichs et al. · 2021 [cited by applicant]
US 20240004728A1 · Hinrichs et al. · 2024 [cited by applicant]
Author Unknown, “API Best Practices Managing the API Lifecycle: Design, Delivery, and Everything in Between,” Dec. 2016, 37 pages, Apigee, retrieved from https://pages.apigee.com/rs/351-WXY-166/images/API-Best-Practices… [cited by applicant]
Costa, Jeff, “Improve API Performance with Caching,” API Gateway, May 31, 2018, 18 pages, Akamai Developer, retrieved from https://developer.akamai.com/blog/2018/05/31/improve-api-performance-caching. [cited by applicant]
Moffett, Jonathan D., et al., “Policy Hierarchies for Distributed Systems Management,” IEEE Journal on Selected Areas in Communications, Dec. 1993, 11 pages, vol. 11, IEEE, USA. [cited by applicant]
Non-Published commonly Owned U.S. Appl. No. 16/050,119, filed Jul. 31, 2018, 55 pages, Styra, Inc. [cited by applicant]
Non-Published commonly Owned U.S. Appl. No. 18/120,810, filed Mar. 13, 2023, 63 pages, Styra, Inc. [cited by applicant]
Non-Published Commonly Owned U.S. Appl. No. 18/239,714, filed Aug. 29, 2023, 68 pages, Styra, Inc. [cited by applicant]
Non-Published Commonly Owned U.S. Appl. No. 18/369,471, filed Sep. 18, 2023, 74 pages, Styra, Inc. [cited by applicant]
Win, Thu Yein, et al., “Virtualization Security Combining Mandatory Access Control and Virtual Machine Introspection,” 2014 IEEE/ACM 7th International Conference on Utility and Cloud Computing, Dec. 8-11, 2014, 6 pages,… [cited by applicant]