Skip to content

Commit de147cb

Browse files
authored
fix: adds transforms to make token policies referencable from service principal (#856)
1 parent b0bb27a commit de147cb

File tree

3 files changed

+165
-7
lines changed

3 files changed

+165
-7
lines changed

transforms/csdl/preprocess_csdl.xsl

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2551,10 +2551,9 @@
25512551
</xsl:template>
25522552

25532553
<!-- Add Referenceable Annotations (for /$ref paths) -->
2554-
<xsl:template match="edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='connectorGroup']/edm:NavigationProperty[@Name='members']|
2555-
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='educationClass']/edm:NavigationProperty[@Name='members']|
2556-
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='accessPackage']/edm:NavigationProperty[@Name='incompatibleAccessPackages']|
2554+
<xsl:template match="edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='accessPackage']/edm:NavigationProperty[@Name='incompatibleAccessPackages']|
25572555
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='accessPackage']/edm:NavigationProperty[@Name='incompatibleGroups']|
2556+
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='application']/edm:NavigationProperty[@Name='connectorGroup']|
25582557
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='application']/edm:NavigationProperty[@Name='tokenIssuancePolicies']|
25592558
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='application']/edm:NavigationProperty[@Name='tokenLifetimePolicies']|
25602559
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='application']/edm:NavigationProperty[@Name='appManagementPolicies']|
@@ -2563,25 +2562,28 @@
25632562
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='connectedOrganization']/edm:NavigationProperty[@Name='externalSponsors']|
25642563
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='connectedOrganization']/edm:NavigationProperty[@Name='internalSponsors']|
25652564
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='connector']/edm:NavigationProperty[@Name='memberOf']|
2566-
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='application']/edm:NavigationProperty[@Name='connectorGroup']|
25672565
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='connector']/edm:NavigationProperty[@Name='registeredUsers']|
2568-
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='sourceCollection']/edm:NavigationProperty[@Name='custodianSources']|
2569-
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='sourceCollection']/edm:NavigationProperty[@Name='noncustodialSources']|
2566+
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='connectorGroup']/edm:NavigationProperty[@Name='members']|
25702567
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='educationAssignment']/edm:NavigationProperty[@Name='categories']|
25712568
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='educationAssignment']/edm:NavigationProperty[@Name='rubric']|
2569+
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='educationClass']/edm:NavigationProperty[@Name='members']|
25722570
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='educationClass']/edm:NavigationProperty[@Name='teachers']|
25732571
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='educationSchool']/edm:NavigationProperty[@Name='classes']|
25742572
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='educationSchool']/edm:NavigationProperty[@Name='users']|
25752573
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='featureRolloutPolicy']/edm:NavigationProperty[@Name='appliesTo']|
25762574
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='group']/edm:NavigationProperty[@Name='acceptedSenders']|
25772575
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='group']/edm:NavigationProperty[@Name='rejectedSenders']|
2576+
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='managedDevice']/edm:NavigationProperty[@Name='deviceCategory']|
25782577
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='mobilityManagementPolicy']/edm:NavigationProperty[@Name='includedGroups']|
25792578
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='onPremisesAgent']/edm:NavigationProperty[@Name='agentGroups']|
25802579
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='printerShare']/edm:NavigationProperty[@Name='allowedGroups']|
25812580
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='printerShare']/edm:NavigationProperty[@Name='allowedUsers']|
2581+
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='servicePrincipal']/edm:NavigationProperty[@Name='tokenIssuancePolicies']|
2582+
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='servicePrincipal']/edm:NavigationProperty[@Name='tokenLifetimePolicies']|
25822583
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='servicePrincipal']/edm:NavigationProperty[@Name='claimsMappingPolicies']|
25832584
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='servicePrincipal']/edm:NavigationProperty[@Name='homeRealmDiscoveryPolicies']|
2584-
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='managedDevice']/edm:NavigationProperty[@Name='deviceCategory']|
2585+
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='sourceCollection']/edm:NavigationProperty[@Name='custodianSources']|
2586+
edm:Schema[@Namespace='microsoft.graph']/edm:EntityType[@Name='sourceCollection']/edm:NavigationProperty[@Name='noncustodialSources']|
25852587
edm:Schema[@Namespace='microsoft.graph']/edm:ComplexType[@Name='userFlowApiConnectorConfiguration']/edm:NavigationProperty[@Name='postAttributeCollection']|
25862588
edm:Schema[@Namespace='microsoft.graph']/edm:ComplexType[@Name='userFlowApiConnectorConfiguration']/edm:NavigationProperty[@Name='postFederationSignup']">
25872589
<xsl:copy>

transforms/csdl/preprocess_csdl_test_input.xml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,27 @@
88
<NavigationProperty Name="completedSteps" Type="Collection(graph.approvalStep)" ContainsTarget="true" />
99
<NavigationProperty Name="request" Type="graph.request" />
1010
</EntityType>
11+
<EntityType Name="application" BaseType="graph.directoryObject" OpenType="true">
12+
<Property Name="appId" Type="Edm.String" />
13+
<Property Name="displayName" Type="Edm.String" />
14+
<Property Name="publisherDomain" Type="Edm.String" />
15+
<Property Name="signInAudience" Type="Edm.String" />
16+
<NavigationProperty Name="owners" Type="Collection(graph.directoryObject)" ContainsTarget="true"/>
17+
<NavigationProperty Name="appManagementPolicies" Type="Collection(graph.appManagementPolicy)"/>
18+
<NavigationProperty Name="tokenIssuancePolicies" Type="Collection(graph.tokenIssuancePolicy)"/>
19+
<NavigationProperty Name="tokenLifetimePolicies" Type="Collection(graph.tokenLifetimePolicy)"/>
20+
</EntityType>
21+
<EntityType Name="servicePrincipal" BaseType="graph.directoryObject" OpenType="true">
22+
<Property Name="appId" Type="Edm.String" />
23+
<Property Name="displayName" Type="Edm.String" />
24+
<Property Name="publisherDomain" Type="Edm.String" />
25+
<Property Name="signInAudience" Type="Edm.String" />
26+
<NavigationProperty Name="owners" Type="Collection(graph.directoryObject)" ContainsTarget="true"/>
27+
<NavigationProperty Name="claimsMappingPolicies" Type="Collection(graph.claimsMappingPolicy)"/>
28+
<NavigationProperty Name="tokenIssuancePolicies" Type="Collection(graph.tokenIssuancePolicy)"/>
29+
<NavigationProperty Name="tokenLifetimePolicies" Type="Collection(graph.tokenLifetimePolicy)"/>
30+
<NavigationProperty Name="homeRealmDiscoveryPolicies" Type="Collection(graph.homeRealmDiscoveryPolicy)"/>
31+
</EntityType>
1132
<EntityType Name="plannerUser" BaseType="graph.entity">
1233
<NavigationProperty Name="tasks" Type="Collection(graph.plannerTask)" />
1334
<NavigationProperty Name="plans" Type="Collection(graph.plannerPlan)" />

transforms/csdl/preprocess_csdl_test_output.xml

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,141 @@
77
<NavigationProperty Name="pendingSteps" Type="Collection(graph.approvalStep)" ContainsTarget="true" />
88
<NavigationProperty Name="completedSteps" Type="Collection(graph.approvalStep)" ContainsTarget="true" />
99
</EntityType>
10+
<EntityType Name="application" BaseType="graph.directoryObject" OpenType="true">
11+
<Property Name="appId" Type="Edm.String" />
12+
<Property Name="displayName" Type="Edm.String" />
13+
<Property Name="publisherDomain" Type="Edm.String" />
14+
<Property Name="signInAudience" Type="Edm.String" />
15+
<NavigationProperty Name="owners" Type="Collection(graph.directoryObject)" ContainsTarget="true">
16+
<Annotation Term="Org.OData.Validation.V1.DerivedTypeConstraint" xmlns:edm="http://docs.oasis-open.org/odata/ns/edm">
17+
<Collection>
18+
<String>microsoft.graph.appRoleAssignment</String>
19+
<String>microsoft.graph.endpoint</String>
20+
<String>microsoft.graph.servicePrincipal</String>
21+
<String>microsoft.graph.user</String>
22+
</Collection>
23+
</Annotation>
24+
<Annotation Term="Org.OData.Capabilities.V1.NavigationRestrictions">
25+
<Record>
26+
<PropertyValue Property="Referenceable" Bool="true" />
27+
</Record>
28+
</Annotation>
29+
<Annotation Term="Org.OData.Capabilities.V1.ReadRestrictions">
30+
<Record>
31+
<PropertyValue Property="CustomHeaders">
32+
<Collection>
33+
<Record>
34+
<PropertyValue Property="Name" String="ConsistencyLevel" />
35+
<PropertyValue Property="Description" String="Indicates the requested consistency level." />
36+
<PropertyValue Property="DocumentationURL" String="https://docs.microsoft.com/graph/aad-advanced-queries" />
37+
<PropertyValue Property="Required" Bool="false" />
38+
<PropertyValue Property="ExampleValues">
39+
<Collection>
40+
<Record>
41+
<PropertyValue Property="Value" String="eventual" />
42+
<PropertyValue Property="Description" String="$search and $count queries require the client to set the ConsistencyLevel HTTP header to 'eventual'." />
43+
</Record>
44+
</Collection>
45+
</PropertyValue>
46+
</Record>
47+
</Collection>
48+
</PropertyValue>
49+
</Record>
50+
</Annotation>
51+
</NavigationProperty>
52+
<NavigationProperty Name="appManagementPolicies" Type="Collection(graph.appManagementPolicy)">
53+
<Annotation Term="Org.OData.Capabilities.V1.NavigationRestrictions">
54+
<Record>
55+
<PropertyValue Property="Referenceable" Bool="true" />
56+
</Record>
57+
</Annotation>
58+
</NavigationProperty>
59+
<NavigationProperty Name="tokenIssuancePolicies" Type="Collection(graph.tokenIssuancePolicy)">
60+
<Annotation Term="Org.OData.Capabilities.V1.NavigationRestrictions">
61+
<Record>
62+
<PropertyValue Property="Referenceable" Bool="true" />
63+
</Record>
64+
</Annotation>
65+
</NavigationProperty>
66+
<NavigationProperty Name="tokenLifetimePolicies" Type="Collection(graph.tokenLifetimePolicy)">
67+
<Annotation Term="Org.OData.Capabilities.V1.NavigationRestrictions">
68+
<Record>
69+
<PropertyValue Property="Referenceable" Bool="true" />
70+
</Record>
71+
</Annotation>
72+
</NavigationProperty>
73+
</EntityType>
74+
<EntityType Name="servicePrincipal" BaseType="graph.directoryObject" OpenType="true">
75+
<Property Name="appId" Type="Edm.String" />
76+
<Property Name="displayName" Type="Edm.String" />
77+
<Property Name="publisherDomain" Type="Edm.String" />
78+
<Property Name="signInAudience" Type="Edm.String" />
79+
<NavigationProperty Name="owners" Type="Collection(graph.directoryObject)" ContainsTarget="true">
80+
<Annotation Term="Org.OData.Validation.V1.DerivedTypeConstraint" xmlns:edm="http://docs.oasis-open.org/odata/ns/edm">
81+
<Collection>
82+
<String>microsoft.graph.appRoleAssignment</String>
83+
<String>microsoft.graph.endpoint</String>
84+
<String>microsoft.graph.servicePrincipal</String>
85+
<String>microsoft.graph.user</String>
86+
</Collection>
87+
</Annotation>
88+
<Annotation Term="Org.OData.Capabilities.V1.NavigationRestrictions">
89+
<Record>
90+
<PropertyValue Property="Referenceable" Bool="true" />
91+
</Record>
92+
</Annotation>
93+
<Annotation Term="Org.OData.Capabilities.V1.ReadRestrictions">
94+
<Record>
95+
<PropertyValue Property="CustomHeaders">
96+
<Collection>
97+
<Record>
98+
<PropertyValue Property="Name" String="ConsistencyLevel" />
99+
<PropertyValue Property="Description" String="Indicates the requested consistency level." />
100+
<PropertyValue Property="DocumentationURL" String="https://docs.microsoft.com/graph/aad-advanced-queries" />
101+
<PropertyValue Property="Required" Bool="false" />
102+
<PropertyValue Property="ExampleValues">
103+
<Collection>
104+
<Record>
105+
<PropertyValue Property="Value" String="eventual" />
106+
<PropertyValue Property="Description" String="$search and $count queries require the client to set the ConsistencyLevel HTTP header to 'eventual'." />
107+
</Record>
108+
</Collection>
109+
</PropertyValue>
110+
</Record>
111+
</Collection>
112+
</PropertyValue>
113+
</Record>
114+
</Annotation>
115+
</NavigationProperty>
116+
<NavigationProperty Name="claimsMappingPolicies" Type="Collection(graph.claimsMappingPolicy)">
117+
<Annotation Term="Org.OData.Capabilities.V1.NavigationRestrictions">
118+
<Record>
119+
<PropertyValue Property="Referenceable" Bool="true" />
120+
</Record>
121+
</Annotation>
122+
</NavigationProperty>
123+
<NavigationProperty Name="tokenIssuancePolicies" Type="Collection(graph.tokenIssuancePolicy)">
124+
<Annotation Term="Org.OData.Capabilities.V1.NavigationRestrictions">
125+
<Record>
126+
<PropertyValue Property="Referenceable" Bool="true" />
127+
</Record>
128+
</Annotation>
129+
</NavigationProperty>
130+
<NavigationProperty Name="tokenLifetimePolicies" Type="Collection(graph.tokenLifetimePolicy)">
131+
<Annotation Term="Org.OData.Capabilities.V1.NavigationRestrictions">
132+
<Record>
133+
<PropertyValue Property="Referenceable" Bool="true" />
134+
</Record>
135+
</Annotation>
136+
</NavigationProperty>
137+
<NavigationProperty Name="homeRealmDiscoveryPolicies" Type="Collection(graph.homeRealmDiscoveryPolicy)">
138+
<Annotation Term="Org.OData.Capabilities.V1.NavigationRestrictions">
139+
<Record>
140+
<PropertyValue Property="Referenceable" Bool="true" />
141+
</Record>
142+
</Annotation>
143+
</NavigationProperty>
144+
</EntityType>
10145
<EntityType Name="plannerUser" BaseType="graph.entity">
11146
<NavigationProperty Name="tasks" Type="Collection(graph.plannerTask)" ContainsTarget="true" />
12147
<NavigationProperty Name="plans" Type="Collection(graph.plannerPlan)" ContainsTarget="true" />

0 commit comments

Comments
 (0)