1 import Base 2 3 # One of the organization's people, by their identity in its directory. 4 type Person is Data: 5 Person{key: String, identity: String} 6 7 # What a person may do in a scope (an Azure resource group): action patterns; none means no access. 8 type Grant is Data: 9 Grant{person: String, scope: String, actions: List<&2, String>} 10 11 type Budget is Data: 12 Budget{person: String, what: String, amount: Nat, unit: String} 13 14 # The agreement between the organization and its people: its directory domain, who they are, and 15 # what each is granted and budgeted. 16 type Agreement is Data: 17 Agreement{domain: String, people: List<&2, Person>, grants: List<&2, Grant>, budgets: List<&2, Budget>}