From 06cb55abd9c3e119875885e8a271b1283c6ced42 Mon Sep 17 00:00:00 2001 From: Microsoft Graph DevX Tooling Date: Tue, 18 Feb 2025 14:49:05 +0300 Subject: [PATCH 01/11] Updated Json extension class to handle Json Arrays. Updated tests. Updated readme --- src/readme.graph.md | 9 ++- tools/Custom/JsonExtensions.cs | 77 ++++++++++++------- .../JsonUtilitiesTest/JsonExtensionsTests.cs | 24 +++++- 3 files changed, 80 insertions(+), 30 deletions(-) diff --git a/src/readme.graph.md b/src/readme.graph.md index d0d4231ba1d..e48c12226f5 100644 --- a/src/readme.graph.md +++ b/src/readme.graph.md @@ -6,7 +6,6 @@ azure: false powershell: true version: latest -#use: "@autorest/powershell@3.0.509" use: "$(this-folder)../autorest.powershell" export-properties-for-dict: false metadata: @@ -651,7 +650,13 @@ directive: // Fix double = in date parameter. Temp fix for https://github.com/Azure/autorest.powershell/issues/1025. let dateAssignmentRegex = /(date="\n.*)(\+.*"=")(.*\+.*date)/gmi $ = $.replace(dateAssignmentRegex, '$1 $3'); - return $; + + // Allow sending of serialized null properties located in cleanedBody + $ = $.replace(/request\.Content\s*=\s*new\s+global::System\.Net\.Http\.StringContent\(\s*null\s*!=\s*body\s*\?\s*body\.ToJson\(null\)\.ToString\(\)\s*:\s*@"{}",\s*global::System\.Text\.Encoding\.UTF8\);/g,'request.Content = new global::System.Net.Http.StringContent(cleanedBody, global::System.Text.Encoding.UTF8);'); + + $ = $.replace(/request\.Content\s*=\s*new\s+global::System\.Net\.Http\.StringContent\(\s*null\s*!=\s*body\s*\?\s*new\s+Microsoft\.Graph\.PowerShell\.Runtime\.Json\.XNodeArray\(.*?\)\s*:\s*null,\s*global::System\.Text\.Encoding\.UTF8\);/g,'request.Content = new global::System.Net.Http.StringContent(cleanedBody, global::System.Text.Encoding.UTF8);'); + + return $ } # Fix enums with underscore. diff --git a/tools/Custom/JsonExtensions.cs b/tools/Custom/JsonExtensions.cs index 0c0a69d8889..7754af9a7c2 100644 --- a/tools/Custom/JsonExtensions.cs +++ b/tools/Custom/JsonExtensions.cs @@ -1,62 +1,85 @@ namespace Microsoft.Graph.PowerShell.JsonUtilities { using Newtonsoft.Json.Linq; + using System; using System.Linq; public static class JsonExtensions { /// - /// Removes JSON properties that have a value of "defaultnull" and converts properties with values of "null" to actual JSON null values. + /// Recursively removes properties with the value "defaultnull" from a JSON structure + /// and replaces string values that are "null" with actual null values. + /// This method supports both JObject (JSON objects) and JArray (JSON arrays), + /// ensuring proper cleanup of nested structures. /// - /// The JObject to process and clean. - /// - /// A JSON string representation of the cleaned JObject with "defaultnull" properties removed and "null" values converted to JSON null. - /// + /// The JToken (JObject or JArray) to process. + /// The cleaned JSON string with "defaultnull" values removed and "null" strings converted to null. /// /// JObject json = JObject.Parse(@"{""name"": ""John"", ""email"": ""defaultnull"", ""address"": ""null""}"); /// string cleanedJson = json.RemoveDefaultNullProperties(); /// Console.WriteLine(cleanedJson); /// // Output: { "name": "John", "address": null } /// - public static string RemoveDefaultNullProperties(this JObject jsonObject) + public static string RemoveDefaultNullProperties(this JToken token) { try { - foreach (var property in jsonObject.Properties().ToList()) + if (token is JObject jsonObject) { - if (property.Value.Type == JTokenType.Object) + foreach (var property in jsonObject.Properties().ToList()) { - RemoveDefaultNullProperties((JObject)property.Value); - } - else if (property.Value.Type == JTokenType.Array) - { - foreach (var item in property.Value) + if (property.Value.Type == JTokenType.Object) { - if (item.Type == JTokenType.Object) - { - RemoveDefaultNullProperties((JObject)item); - } + RemoveDefaultNullProperties(property.Value); + } + else if (property.Value.Type == JTokenType.Array) + { + RemoveDefaultNullProperties(property.Value); + } + else if (property.Value.Type == JTokenType.String && property.Value.ToString() == "defaultnull") + { + property.Remove(); + } + else if (property.Value.Type == JTokenType.String && property.Value.ToString() == "null") + { + property.Value = JValue.CreateNull(); } } - else if (property.Value.Type == JTokenType.String && property.Value.ToString() == "defaultnull") - { - property.Remove(); - } - else if (property.Value.Type == JTokenType.String && (property.Value.ToString() == "null")) + } + else if (token is JArray jsonArray) + { + // Process each item in the JArray + for (int i = jsonArray.Count - 1; i >= 0; i--) { - property.Value = JValue.CreateNull(); + var item = jsonArray[i]; + + if (item.Type == JTokenType.Object) + { + RemoveDefaultNullProperties(item); + } + else if (item.Type == JTokenType.String && item.ToString() == "defaultnull") + { + jsonArray.RemoveAt(i); // Remove the "defaultnull" string from the array + } + else if (item.Type == JTokenType.String && item.ToString() == "null") + { + jsonArray[i] = JValue.CreateNull(); // Convert "null" string to actual null + } } } } - catch (System.Exception) + catch (System.Exception ex) { - return jsonObject.ToString(); // Return the original string if parsing fails + Console.WriteLine($"Error cleaning JSON: {ex.Message}"); + return token.ToString(); // Return the original JSON if any error occurs } - return jsonObject.ToString(); + + return token.ToString(); } + public static string ReplaceAndRemoveSlashes(this string body) { return body.Replace("/", "").Replace("\\", "").Replace("rn", "").Replace("\"{", "{").Replace("}\"", "}"); } } -} +} \ No newline at end of file diff --git a/tools/Tests/JsonUtilitiesTest/JsonExtensionsTests.cs b/tools/Tests/JsonUtilitiesTest/JsonExtensionsTests.cs index ed45257e947..fc308c39545 100644 --- a/tools/Tests/JsonUtilitiesTest/JsonExtensionsTests.cs +++ b/tools/Tests/JsonUtilitiesTest/JsonExtensionsTests.cs @@ -45,7 +45,7 @@ public void RemoveDefaultNullProperties_ShouldConvertStringNullToJsonNull() // Assert Assert.Null(result["position"]?.Value()); - Assert.Equal("",result["team"]?.ToString()); + Assert.Equal("", result["team"]?.ToString()); Assert.Equal("Tim", result["displayname"]?.ToString()); Assert.Equal(2000000, result["salary"]?.ToObject()); } @@ -124,5 +124,27 @@ public void RemoveDefaultNullProperties_ShouldNotAlterValidData() Assert.Equal("mayabi@example.com", result["email"]?.ToString()); Assert.Equal(2000000, result["salary"]?.ToObject()); } + + //Add tests for json arrays + [Fact] + public void RemoveDefaultNullProperties_ShouldRemoveDefaultNullValuesInJsonArray() + { + // Arrange + JArray json = JArray.Parse(@"[ + { ""displayname"": ""Tim"", ""email"": ""defaultnull"" } + + ]"); + + // Act + string cleanedJson = json.RemoveDefaultNullProperties(); + JArray result = JArray.Parse(cleanedJson); + + // Assert + Assert.Equal("Tim", result[0]?["displayname"]?.ToString()); + Assert.False(result[0].ToObject().ContainsKey("email")); + + } + + } From 8a642ecc00789246b0d297737f0d1986eea7f29b Mon Sep 17 00:00:00 2001 From: Microsoft Graph DevX Tooling Date: Tue, 18 Feb 2025 16:12:53 +0300 Subject: [PATCH 02/11] Update submodule --- autorest.powershell | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autorest.powershell b/autorest.powershell index 02a628de5bc..0f46cc75be1 160000 --- a/autorest.powershell +++ b/autorest.powershell @@ -1 +1 @@ -Subproject commit 02a628de5bc5396603c360f1655b8fd0b0e09015 +Subproject commit 0f46cc75be1d461ad34a2d72e0e2afeb07a350e2 From 26fded21eb4ceba5ae4be0eb13d81923c719e272 Mon Sep 17 00:00:00 2001 From: Microsoft Graph DevX Tooling Date: Tue, 18 Feb 2025 16:22:19 +0300 Subject: [PATCH 03/11] Updated file based on review feedback --- tools/Custom/JsonExtensions.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/Custom/JsonExtensions.cs b/tools/Custom/JsonExtensions.cs index 7754af9a7c2..1a216f4ad1c 100644 --- a/tools/Custom/JsonExtensions.cs +++ b/tools/Custom/JsonExtensions.cs @@ -36,11 +36,11 @@ public static string RemoveDefaultNullProperties(this JToken token) { RemoveDefaultNullProperties(property.Value); } - else if (property.Value.Type == JTokenType.String && property.Value.ToString() == "defaultnull") + else if (property.Value.Type == JTokenType.String && property.Value.ToString().Equals("defaultnull",StringComparison.Ordinal)) { property.Remove(); } - else if (property.Value.Type == JTokenType.String && property.Value.ToString() == "null") + else if (property.Value.Type == JTokenType.String && property.Value.ToString().Equals("null",StringComparison.Ordinal)) { property.Value = JValue.CreateNull(); } @@ -57,11 +57,11 @@ public static string RemoveDefaultNullProperties(this JToken token) { RemoveDefaultNullProperties(item); } - else if (item.Type == JTokenType.String && item.ToString() == "defaultnull") + else if (item.Type == JTokenType.String && item.ToString().Equals("defaultnull",StringComparison.Ordinal)) { jsonArray.RemoveAt(i); // Remove the "defaultnull" string from the array } - else if (item.Type == JTokenType.String && item.ToString() == "null") + else if (item.Type == JTokenType.String && item.ToString().Equals("null",StringComparison.Ordinal) { jsonArray[i] = JValue.CreateNull(); // Convert "null" string to actual null } From 2ec79f3271e516c41530df94d2fce214884bcab1 Mon Sep 17 00:00:00 2001 From: Microsoft Graph DevX Tooling Date: Tue, 18 Feb 2025 16:22:55 +0300 Subject: [PATCH 04/11] Rectified error --- tools/Custom/JsonExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/Custom/JsonExtensions.cs b/tools/Custom/JsonExtensions.cs index 1a216f4ad1c..067f3722d71 100644 --- a/tools/Custom/JsonExtensions.cs +++ b/tools/Custom/JsonExtensions.cs @@ -61,7 +61,7 @@ public static string RemoveDefaultNullProperties(this JToken token) { jsonArray.RemoveAt(i); // Remove the "defaultnull" string from the array } - else if (item.Type == JTokenType.String && item.ToString().Equals("null",StringComparison.Ordinal) + else if (item.Type == JTokenType.String && item.ToString().Equals("null",StringComparison.Ordinal)) { jsonArray[i] = JValue.CreateNull(); // Convert "null" string to actual null } From 1afd4c9d507baaa043508b9e18440983a15e8a7d Mon Sep 17 00:00:00 2001 From: Microsoft Graph DevX Tooling Date: Tue, 18 Feb 2025 21:28:56 +0300 Subject: [PATCH 05/11] Submodule update --- autorest.powershell | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autorest.powershell b/autorest.powershell index 0f46cc75be1..650d5fa0421 160000 --- a/autorest.powershell +++ b/autorest.powershell @@ -1 +1 @@ -Subproject commit 0f46cc75be1d461ad34a2d72e0e2afeb07a350e2 +Subproject commit 650d5fa042182b3d830717111fda665c813cb3e1 From 0d1b6d56fb67bec0efe0c9e40e822fe08ce9d32b Mon Sep 17 00:00:00 2001 From: Microsoft Graph DevX Tooling Date: Wed, 19 Feb 2025 02:48:20 +0300 Subject: [PATCH 06/11] Handled regex for Microsoft .Graph.Beta.* --- autorest.powershell | 2 +- src/readme.graph.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/autorest.powershell b/autorest.powershell index 650d5fa0421..aff45c18c87 160000 --- a/autorest.powershell +++ b/autorest.powershell @@ -1 +1 @@ -Subproject commit 650d5fa042182b3d830717111fda665c813cb3e1 +Subproject commit aff45c18c87b559e8b448d594383b0e74dc51424 diff --git a/src/readme.graph.md b/src/readme.graph.md index e48c12226f5..b015bf88c2c 100644 --- a/src/readme.graph.md +++ b/src/readme.graph.md @@ -655,6 +655,8 @@ directive: $ = $.replace(/request\.Content\s*=\s*new\s+global::System\.Net\.Http\.StringContent\(\s*null\s*!=\s*body\s*\?\s*body\.ToJson\(null\)\.ToString\(\)\s*:\s*@"{}",\s*global::System\.Text\.Encoding\.UTF8\);/g,'request.Content = new global::System.Net.Http.StringContent(cleanedBody, global::System.Text.Encoding.UTF8);'); $ = $.replace(/request\.Content\s*=\s*new\s+global::System\.Net\.Http\.StringContent\(\s*null\s*!=\s*body\s*\?\s*new\s+Microsoft\.Graph\.PowerShell\.Runtime\.Json\.XNodeArray\(.*?\)\s*:\s*null,\s*global::System\.Text\.Encoding\.UTF8\);/g,'request.Content = new global::System.Net.Http.StringContent(cleanedBody, global::System.Text.Encoding.UTF8);'); + + $ = $.replace(/request\.Content\s*=\s*new\s+global::System\.Net\.Http\.StringContent\(\s*null\s*!=\s*body\s*\?\s*new\s+Microsoft\.Graph\.Beta\.PowerShell\.Runtime\.Json\.XNodeArray\(.*?\)\s*:\s*null,\s*global::System\.Text\.Encoding\.UTF8\);/g,'request.Content = new global::System.Net.Http.StringContent(cleanedBody, global::System.Text.Encoding.UTF8);'); return $ } From 026f88d4127628107d021132014e8e61b7a86e30 Mon Sep 17 00:00:00 2001 From: Microsoft Graph DevX Tooling Date: Wed, 19 Feb 2025 02:49:15 +0300 Subject: [PATCH 07/11] Testing with failing security module first --- config/ModulesMapping.jsonc | 84 ++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/config/ModulesMapping.jsonc b/config/ModulesMapping.jsonc index 26d6c619913..e5fcd945bbb 100644 --- a/config/ModulesMapping.jsonc +++ b/config/ModulesMapping.jsonc @@ -1,44 +1,44 @@ { - "Applications": "^applicationTemplates\\.|^applications\\.|^servicePrincipals\\.|^onPremisesPublishingProfiles\\.|^users.appRoleAssignment$|^groups.appRoleAssignment$", - "Bookings": "^bookingBusinesses\\.|^bookingCurrencies\\.|^solutions.booking.*.Actions$|^solutions.bookingBusiness$|^solutions.bookingCurrency$|^solutions.virtualEventsRoot$|^solutions.booking.*.Functions$|^solutions.solutionsRoot$", - "BusinessScenario": "^solutions.businessScenario$|^solutions.BusinessScenario.*.Actions$|^solutions.BusinessScenario.*.Functions$", - "BackupRestore": "^solutions.backupRestoreRoot$|^solutions.backupRestore.*.Actions$|^solutions.backupRestore.*.Functions$", - "Calendar": "^places\\.|^users.calendar$|^users.calendarGroup$|^users.event$|^groups.calendar$|^groups.event$", - "ChangeNotifications": "^subscriptions\\.", - "CloudCommunications": "^users.onlineMeeting$|^users.presence$|^communications\\.", - "Compliance": "^compliance\\.|^privacy.subjectRightsRequest$", - "CrossDeviceExperiences": "^users.userActivity$|^users.device$", - "Devices.CloudPrint": "^print\\.", - "Devices.CorporateManagement": "^deviceAppManagement\\.|^officeConfiguration\\.|^users.mobileAppIntentAndState$|^users.mobileAppTroubleshootingEvent$|^users.windowsInformationProtectionDeviceRegistration$|^users.managedAppRegistration$|^users.managedDevice$|^users.deviceManagementTroubleshootingEvent$|^users.deviceEnrollmentConfiguration$", - "Devices.ServiceAnnouncement": "^admin.serviceAnnouncement$|^admin.*.Actions$|^admin.*.Functions$", - "DeviceManagement": "^deviceManagement.(deviceCompliancePolicy.*|deviceManagementConfigurationPolicy.*|deviceManagementCompliancePolicy.*|deviceManagementConfigurationSettingDefinition.*|deviceConfiguration.*|managedDevice.*|managementCondition.*|microsoftTunnel.*|userExperienceAnalytics.*|windowsInformationProtection.*|deviceManagement|deviceManagement(DerivedCredentialSettings|Intent|ResourceAccessProfileBase|Script|SettingCategory|SettingDefinition|Template|TroubleshootingEvent)|androidForWork(AppConfigurationSchema|Settings)|androidManagedStore(AccountEnterpriseSettings|AppConfigurationSchema)|deviceAndAppManagementAssignmentFilter|deviceCategory|advancedThreatProtectionOnboardingStateSummary|dataSharingConsent|detectedApp|deviceHealthScript|deviceShellScript|embeddedSIMActivationCodePool|groupPolicyConfiguration|macOSSoftwareUpdateAccountSummary|mobileAppTroubleshootingEvent|notificationMessageTemplate|remoteActionAudit|softwareUpdateStatusSummary|windowsMalwareInformation|windowsQualityUpdateProfile)$|^admin.edge$|^deviceManagement.monitoring$|^users.ListCloudPCs$", - "DeviceManagement.Administration": "^deviceManagement.(virtualEndpoint.*|.*Partner.*|.*Certificate.*|.*role.*|deviceManagement(DomainJoinConnector|ExchangeConnector|ExchangeOnPremisesPolicy)|groupPolicy(Category|Definition|DefinitionFile|MigrationReport|ObjectFile|UploadedDefinitionFile)|auditEvent|cartToClassAssociation|comanagementEligibleDevice|deviceAndAppManagementRoleAssignment|intuneBrandingProfile|iosUpdateDeviceStatus|mobileThreatDefenseConnector|ndesConnector|resourceOperation|restrictedAppsViolation|termsAndConditions)", - "DeviceManagement.Enrollment": "^deviceManagement.(.*Enrollment.*|.*Autopilot.*|.*depOnboarding.*|importedDeviceIdentity|onPremisesConditionalAccessSettings|windowsFeatureUpdateProfile)$|^roleManagement.roleManagement$|^roleManagement.rbacApplicationMultiple$|^roleManagement.unifiedRbacApplication$", - "DeviceManagement.Functions": "^deviceManagement.*.Functions$", - "DirectoryObjects": "^directoryObjects\\.|^directory.publicKeyInfrastructureRoot$", - "Education": "^education\\.", - "Files": "^drives\\.|^shares\\.|^users.drive$|^groups.drive$", - "Financials": "^financials\\.", - "Groups": "^groups.group$|^groups.directoryObject$|^groups.conversation$|^groups.endpoint$|^groups.extension$|^groups.groupLifecyclePolicy$|^groups.resourceSpecificPermissionGrant$|^groups.profilePhoto$|^groups.conversationThread$|^groupLifecyclePolicies\\.|^users.group$|^groups.directorySetting$|^groups.*.Actions$|^groups.*.Functions$|^groupSettings\\.|^groups.groupSetting$|^groupSettingTemplates\\.", - "Identity.DirectoryManagement": "^administrativeUnits\\.|^contacts\\.|^devices\\.|^domains\\.|^directoryRoles\\.|^directoryRoleTemplates\\.|^directorySettingTemplates\\.|^settings\\.|^subscribedSkus\\.|^contracts\\.|^directory\\.|^users.scopedRoleMembership$|^organization.organization$|^organization.organizationalBranding$|^organization.organizationSettings$|^organization.*.Actions$|^organization.extension$|^tenantRelationships.*.Actions$|^tenantRelationships.*.Functions$|admin.peopleAdminSettings$|^organization\\.partnerInformation$", - "Identity.Governance": "^accessReviews\\.|^businessFlowTemplates\\.|^programs\\.|^programControls\\.|^programControlTypes\\.|^privilegedRoles\\.|^privilegedRoleAssignments\\.|^privilegedRoleAssignmentRequests\\.|^privilegedApproval\\.|^privilegedOperationEvents\\.|^privilegedAccess\\.|^agreements\\.|^users.agreementAcceptance$|^identityGovernance\\.|^roleManagement.rbacApplication$|^roleManagement.*.Functions$|roleManagement.*.Actions$", - "Identity.SignIns": "^organization.certificateBasedAuthConfiguration$|^invitations\\.|^identityProviders\\.|^oauth2PermissionGrants\\.|^identityProtection\\.|^dataPolicyOperations\\.|^identity\\.|^trustFramework\\.|^informationProtection\\.|^policies\\.|^users.authentication$|^users.informationProtection$|^tenantRelationships.multiTenantOrganization$|^policies.deviceRegistrationPolicy$|^policies.deviceRegistrationPolicy$", - "Identity.Partner": "^tenantRelationships.delegatedAdminRelationship$|^tenantRelationships.delegatedAdminCustomer$", - "Mail": "^users.inferenceClassification$|^users.mailFolder$|^users.message$", - "ManagedTenants": "^tenantRelationships.managedTenant$", - "NetworkAccess": "^networkAccess\\.", - "Notes": "^users.onenote$|^groups.onenote$|^sites.onenote$", - "People": "^users.person$|^users.profile$|^users.officeGraphInsights$|^users.userAnalytics$", - "PersonalContacts": "^users.contactFolder$|^users.contact$", - "Planner": "^planner\\.|^users.plannerUser$|^groups.plannerGroup$", - "Reports": "^reports\\.|^auditLogs\\.|^deviceManagement.deviceManagementReports$|^admin.adminReportSetting", - "SchemaExtensions": "^schemaExtensions\\.", - "Search": "^search\\.|^external\\.", - "Security": "^security\\.|^users.security$", - "Sites": "^sites.baseSitePage$|^sites.site$|^sites.itemAnalytics$|^sites.columnDefinition$|^sites.contentType$|^sites.drive$|^sites.list$|^sites.sitePage$|^sites.permission$|^sites.store$|^users.site$|^groups.site$|^sites.*.Functions$|^sites.*.Actions$|^sites.richLongRunningOperation$|^termStore.sets.ListChildren$|^admin.sharepoint$", - "Teams": "^teams\\.|^chats\\.|^users.chat$|^appCatalogs.teamsApp$|^users.userTeamwork$|^teamwork\\.|^users.team$|^groups.team$", - "Users": "^users.user$|^users.directoryObject$|^users.licenseDetails$|^users.mailboxSettings|^users.notification$|^users.outlookUser$|^users.profilePhoto$|^users.userSettings$|^users.extension$|^users.oAuth2PermissionGrant$|^users.todo$|^users.itemInsights$|^users.servicePrincipal$", - "Users.Actions": "^users.*.Actions$", - "Users.Functions": "^users.*.Functions$", - "WindowsUpdates": "^admin.adminWindows$" +// "Applications": "^applicationTemplates\\.|^applications\\.|^servicePrincipals\\.|^onPremisesPublishingProfiles\\.|^users.appRoleAssignment$|^groups.appRoleAssignment$", +// "Bookings": "^bookingBusinesses\\.|^bookingCurrencies\\.|^solutions.booking.*.Actions$|^solutions.bookingBusiness$|^solutions.bookingCurrency$|^solutions.virtualEventsRoot$|^solutions.booking.*.Functions$|^solutions.solutionsRoot$", +// "BusinessScenario": "^solutions.businessScenario$|^solutions.BusinessScenario.*.Actions$|^solutions.BusinessScenario.*.Functions$", +// "BackupRestore": "^solutions.backupRestoreRoot$|^solutions.backupRestore.*.Actions$|^solutions.backupRestore.*.Functions$", +// "Calendar": "^places\\.|^users.calendar$|^users.calendarGroup$|^users.event$|^groups.calendar$|^groups.event$", +// "ChangeNotifications": "^subscriptions\\.", +// "CloudCommunications": "^users.onlineMeeting$|^users.presence$|^communications\\.", +// "Compliance": "^compliance\\.|^privacy.subjectRightsRequest$", +// "CrossDeviceExperiences": "^users.userActivity$|^users.device$", +// "Devices.CloudPrint": "^print\\.", +// "Devices.CorporateManagement": "^deviceAppManagement\\.|^officeConfiguration\\.|^users.mobileAppIntentAndState$|^users.mobileAppTroubleshootingEvent$|^users.windowsInformationProtectionDeviceRegistration$|^users.managedAppRegistration$|^users.managedDevice$|^users.deviceManagementTroubleshootingEvent$|^users.deviceEnrollmentConfiguration$", +// "Devices.ServiceAnnouncement": "^admin.serviceAnnouncement$|^admin.*.Actions$|^admin.*.Functions$", +// "DeviceManagement": "^deviceManagement.(deviceCompliancePolicy.*|deviceManagementConfigurationPolicy.*|deviceManagementCompliancePolicy.*|deviceManagementConfigurationSettingDefinition.*|deviceConfiguration.*|managedDevice.*|managementCondition.*|microsoftTunnel.*|userExperienceAnalytics.*|windowsInformationProtection.*|deviceManagement|deviceManagement(DerivedCredentialSettings|Intent|ResourceAccessProfileBase|Script|SettingCategory|SettingDefinition|Template|TroubleshootingEvent)|androidForWork(AppConfigurationSchema|Settings)|androidManagedStore(AccountEnterpriseSettings|AppConfigurationSchema)|deviceAndAppManagementAssignmentFilter|deviceCategory|advancedThreatProtectionOnboardingStateSummary|dataSharingConsent|detectedApp|deviceHealthScript|deviceShellScript|embeddedSIMActivationCodePool|groupPolicyConfiguration|macOSSoftwareUpdateAccountSummary|mobileAppTroubleshootingEvent|notificationMessageTemplate|remoteActionAudit|softwareUpdateStatusSummary|windowsMalwareInformation|windowsQualityUpdateProfile)$|^admin.edge$|^deviceManagement.monitoring$|^users.ListCloudPCs$", +// "DeviceManagement.Administration": "^deviceManagement.(virtualEndpoint.*|.*Partner.*|.*Certificate.*|.*role.*|deviceManagement(DomainJoinConnector|ExchangeConnector|ExchangeOnPremisesPolicy)|groupPolicy(Category|Definition|DefinitionFile|MigrationReport|ObjectFile|UploadedDefinitionFile)|auditEvent|cartToClassAssociation|comanagementEligibleDevice|deviceAndAppManagementRoleAssignment|intuneBrandingProfile|iosUpdateDeviceStatus|mobileThreatDefenseConnector|ndesConnector|resourceOperation|restrictedAppsViolation|termsAndConditions)", +// "DeviceManagement.Enrollment": "^deviceManagement.(.*Enrollment.*|.*Autopilot.*|.*depOnboarding.*|importedDeviceIdentity|onPremisesConditionalAccessSettings|windowsFeatureUpdateProfile)$|^roleManagement.roleManagement$|^roleManagement.rbacApplicationMultiple$|^roleManagement.unifiedRbacApplication$", +// "DeviceManagement.Functions": "^deviceManagement.*.Functions$", +// "DirectoryObjects": "^directoryObjects\\.|^directory.publicKeyInfrastructureRoot$", +// "Education": "^education\\.", +// "Files": "^drives\\.|^shares\\.|^users.drive$|^groups.drive$", +// "Financials": "^financials\\.", +// "Groups": "^groups.group$|^groups.directoryObject$|^groups.conversation$|^groups.endpoint$|^groups.extension$|^groups.groupLifecyclePolicy$|^groups.resourceSpecificPermissionGrant$|^groups.profilePhoto$|^groups.conversationThread$|^groupLifecyclePolicies\\.|^users.group$|^groups.directorySetting$|^groups.*.Actions$|^groups.*.Functions$|^groupSettings\\.|^groups.groupSetting$|^groupSettingTemplates\\.", +// "Identity.DirectoryManagement": "^administrativeUnits\\.|^contacts\\.|^devices\\.|^domains\\.|^directoryRoles\\.|^directoryRoleTemplates\\.|^directorySettingTemplates\\.|^settings\\.|^subscribedSkus\\.|^contracts\\.|^directory\\.|^users.scopedRoleMembership$|^organization.organization$|^organization.organizationalBranding$|^organization.organizationSettings$|^organization.*.Actions$|^organization.extension$|^tenantRelationships.*.Actions$|^tenantRelationships.*.Functions$|admin.peopleAdminSettings$|^organization\\.partnerInformation$", +// "Identity.Governance": "^accessReviews\\.|^businessFlowTemplates\\.|^programs\\.|^programControls\\.|^programControlTypes\\.|^privilegedRoles\\.|^privilegedRoleAssignments\\.|^privilegedRoleAssignmentRequests\\.|^privilegedApproval\\.|^privilegedOperationEvents\\.|^privilegedAccess\\.|^agreements\\.|^users.agreementAcceptance$|^identityGovernance\\.|^roleManagement.rbacApplication$|^roleManagement.*.Functions$|roleManagement.*.Actions$", +// "Identity.SignIns": "^organization.certificateBasedAuthConfiguration$|^invitations\\.|^identityProviders\\.|^oauth2PermissionGrants\\.|^identityProtection\\.|^dataPolicyOperations\\.|^identity\\.|^trustFramework\\.|^informationProtection\\.|^policies\\.|^users.authentication$|^users.informationProtection$|^tenantRelationships.multiTenantOrganization$|^policies.deviceRegistrationPolicy$|^policies.deviceRegistrationPolicy$", +// "Identity.Partner": "^tenantRelationships.delegatedAdminRelationship$|^tenantRelationships.delegatedAdminCustomer$", +// "Mail": "^users.inferenceClassification$|^users.mailFolder$|^users.message$", +// "ManagedTenants": "^tenantRelationships.managedTenant$", +// "NetworkAccess": "^networkAccess\\.", +// "Notes": "^users.onenote$|^groups.onenote$|^sites.onenote$", +// "People": "^users.person$|^users.profile$|^users.officeGraphInsights$|^users.userAnalytics$", +// "PersonalContacts": "^users.contactFolder$|^users.contact$", +// "Planner": "^planner\\.|^users.plannerUser$|^groups.plannerGroup$", +// "Reports": "^reports\\.|^auditLogs\\.|^deviceManagement.deviceManagementReports$|^admin.adminReportSetting", +// "SchemaExtensions": "^schemaExtensions\\.", +// "Search": "^search\\.|^external\\.", + "Security": "^security\\.|^users.security$", +// "Sites": "^sites.baseSitePage$|^sites.site$|^sites.itemAnalytics$|^sites.columnDefinition$|^sites.contentType$|^sites.drive$|^sites.list$|^sites.sitePage$|^sites.permission$|^sites.store$|^users.site$|^groups.site$|^sites.*.Functions$|^sites.*.Actions$|^sites.richLongRunningOperation$|^termStore.sets.ListChildren$|^admin.sharepoint$", +// "Teams": "^teams\\.|^chats\\.|^users.chat$|^appCatalogs.teamsApp$|^users.userTeamwork$|^teamwork\\.|^users.team$|^groups.team$", +// "Users": "^users.user$|^users.directoryObject$|^users.licenseDetails$|^users.mailboxSettings|^users.notification$|^users.outlookUser$|^users.profilePhoto$|^users.userSettings$|^users.extension$|^users.oAuth2PermissionGrant$|^users.todo$|^users.itemInsights$|^users.servicePrincipal$", +// "Users.Actions": "^users.*.Actions$", +// "Users.Functions": "^users.*.Functions$", +// "WindowsUpdates": "^admin.adminWindows$" } \ No newline at end of file From 42194692c76f2f3530607e4a59918a000cc16083 Mon Sep 17 00:00:00 2001 From: Microsoft Graph DevX Tooling Date: Wed, 19 Feb 2025 03:20:05 +0300 Subject: [PATCH 08/11] Submodule update --- autorest.powershell | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autorest.powershell b/autorest.powershell index aff45c18c87..0cde671709e 160000 --- a/autorest.powershell +++ b/autorest.powershell @@ -1 +1 @@ -Subproject commit aff45c18c87b559e8b448d594383b0e74dc51424 +Subproject commit 0cde671709e4e9eeabdfca549ce3cc0ff512b31f From 8b87ffc85707d02d017e36b56bc9f333b19d8010 Mon Sep 17 00:00:00 2001 From: Microsoft Graph DevX Tooling Date: Wed, 19 Feb 2025 03:25:52 +0300 Subject: [PATCH 09/11] Made jsonExtension file generic by specifying a namespace place holder to cover both beta and v1.0 endpoints --- tools/Custom/JsonExtensions.cs | 2 +- tools/Tests/JsonUtilitiesTest/JsonExtensionsTests.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/Custom/JsonExtensions.cs b/tools/Custom/JsonExtensions.cs index 067f3722d71..eedb2ba305a 100644 --- a/tools/Custom/JsonExtensions.cs +++ b/tools/Custom/JsonExtensions.cs @@ -1,4 +1,4 @@ -namespace Microsoft.Graph.PowerShell.JsonUtilities +namespace NamespacePrefixPlaceholder.PowerShell.JsonUtilities { using Newtonsoft.Json.Linq; using System; diff --git a/tools/Tests/JsonUtilitiesTest/JsonExtensionsTests.cs b/tools/Tests/JsonUtilitiesTest/JsonExtensionsTests.cs index fc308c39545..0aa03b5b1df 100644 --- a/tools/Tests/JsonUtilitiesTest/JsonExtensionsTests.cs +++ b/tools/Tests/JsonUtilitiesTest/JsonExtensionsTests.cs @@ -2,7 +2,7 @@ using System; using Newtonsoft.Json.Linq; using Xunit; -using Microsoft.Graph.PowerShell.JsonUtilities; +using NamespacePrefixPlaceholder.PowerShell.JsonUtilities; public class JsonExtensionsTests { From 67e4c568a9753a9abfc9b7e5f22d6ba7a7774d0a Mon Sep 17 00:00:00 2001 From: Microsoft Graph DevX Tooling Date: Wed, 19 Feb 2025 03:32:44 +0300 Subject: [PATCH 10/11] Submodule update --- autorest.powershell | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autorest.powershell b/autorest.powershell index 0cde671709e..31482f7090b 160000 --- a/autorest.powershell +++ b/autorest.powershell @@ -1 +1 @@ -Subproject commit 0cde671709e4e9eeabdfca549ce3cc0ff512b31f +Subproject commit 31482f7090b0be090024df11f00f1b092ae0f017 From 516a56851d1d8138909b09cc53540ac1d91afb88 Mon Sep 17 00:00:00 2001 From: Microsoft Graph DevX Tooling Date: Wed, 19 Feb 2025 04:02:18 +0300 Subject: [PATCH 11/11] Reenabled the other modules --- config/ModulesMapping.jsonc | 84 ++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/config/ModulesMapping.jsonc b/config/ModulesMapping.jsonc index e5fcd945bbb..26d6c619913 100644 --- a/config/ModulesMapping.jsonc +++ b/config/ModulesMapping.jsonc @@ -1,44 +1,44 @@ { -// "Applications": "^applicationTemplates\\.|^applications\\.|^servicePrincipals\\.|^onPremisesPublishingProfiles\\.|^users.appRoleAssignment$|^groups.appRoleAssignment$", -// "Bookings": "^bookingBusinesses\\.|^bookingCurrencies\\.|^solutions.booking.*.Actions$|^solutions.bookingBusiness$|^solutions.bookingCurrency$|^solutions.virtualEventsRoot$|^solutions.booking.*.Functions$|^solutions.solutionsRoot$", -// "BusinessScenario": "^solutions.businessScenario$|^solutions.BusinessScenario.*.Actions$|^solutions.BusinessScenario.*.Functions$", -// "BackupRestore": "^solutions.backupRestoreRoot$|^solutions.backupRestore.*.Actions$|^solutions.backupRestore.*.Functions$", -// "Calendar": "^places\\.|^users.calendar$|^users.calendarGroup$|^users.event$|^groups.calendar$|^groups.event$", -// "ChangeNotifications": "^subscriptions\\.", -// "CloudCommunications": "^users.onlineMeeting$|^users.presence$|^communications\\.", -// "Compliance": "^compliance\\.|^privacy.subjectRightsRequest$", -// "CrossDeviceExperiences": "^users.userActivity$|^users.device$", -// "Devices.CloudPrint": "^print\\.", -// "Devices.CorporateManagement": "^deviceAppManagement\\.|^officeConfiguration\\.|^users.mobileAppIntentAndState$|^users.mobileAppTroubleshootingEvent$|^users.windowsInformationProtectionDeviceRegistration$|^users.managedAppRegistration$|^users.managedDevice$|^users.deviceManagementTroubleshootingEvent$|^users.deviceEnrollmentConfiguration$", -// "Devices.ServiceAnnouncement": "^admin.serviceAnnouncement$|^admin.*.Actions$|^admin.*.Functions$", -// "DeviceManagement": "^deviceManagement.(deviceCompliancePolicy.*|deviceManagementConfigurationPolicy.*|deviceManagementCompliancePolicy.*|deviceManagementConfigurationSettingDefinition.*|deviceConfiguration.*|managedDevice.*|managementCondition.*|microsoftTunnel.*|userExperienceAnalytics.*|windowsInformationProtection.*|deviceManagement|deviceManagement(DerivedCredentialSettings|Intent|ResourceAccessProfileBase|Script|SettingCategory|SettingDefinition|Template|TroubleshootingEvent)|androidForWork(AppConfigurationSchema|Settings)|androidManagedStore(AccountEnterpriseSettings|AppConfigurationSchema)|deviceAndAppManagementAssignmentFilter|deviceCategory|advancedThreatProtectionOnboardingStateSummary|dataSharingConsent|detectedApp|deviceHealthScript|deviceShellScript|embeddedSIMActivationCodePool|groupPolicyConfiguration|macOSSoftwareUpdateAccountSummary|mobileAppTroubleshootingEvent|notificationMessageTemplate|remoteActionAudit|softwareUpdateStatusSummary|windowsMalwareInformation|windowsQualityUpdateProfile)$|^admin.edge$|^deviceManagement.monitoring$|^users.ListCloudPCs$", -// "DeviceManagement.Administration": "^deviceManagement.(virtualEndpoint.*|.*Partner.*|.*Certificate.*|.*role.*|deviceManagement(DomainJoinConnector|ExchangeConnector|ExchangeOnPremisesPolicy)|groupPolicy(Category|Definition|DefinitionFile|MigrationReport|ObjectFile|UploadedDefinitionFile)|auditEvent|cartToClassAssociation|comanagementEligibleDevice|deviceAndAppManagementRoleAssignment|intuneBrandingProfile|iosUpdateDeviceStatus|mobileThreatDefenseConnector|ndesConnector|resourceOperation|restrictedAppsViolation|termsAndConditions)", -// "DeviceManagement.Enrollment": "^deviceManagement.(.*Enrollment.*|.*Autopilot.*|.*depOnboarding.*|importedDeviceIdentity|onPremisesConditionalAccessSettings|windowsFeatureUpdateProfile)$|^roleManagement.roleManagement$|^roleManagement.rbacApplicationMultiple$|^roleManagement.unifiedRbacApplication$", -// "DeviceManagement.Functions": "^deviceManagement.*.Functions$", -// "DirectoryObjects": "^directoryObjects\\.|^directory.publicKeyInfrastructureRoot$", -// "Education": "^education\\.", -// "Files": "^drives\\.|^shares\\.|^users.drive$|^groups.drive$", -// "Financials": "^financials\\.", -// "Groups": "^groups.group$|^groups.directoryObject$|^groups.conversation$|^groups.endpoint$|^groups.extension$|^groups.groupLifecyclePolicy$|^groups.resourceSpecificPermissionGrant$|^groups.profilePhoto$|^groups.conversationThread$|^groupLifecyclePolicies\\.|^users.group$|^groups.directorySetting$|^groups.*.Actions$|^groups.*.Functions$|^groupSettings\\.|^groups.groupSetting$|^groupSettingTemplates\\.", -// "Identity.DirectoryManagement": "^administrativeUnits\\.|^contacts\\.|^devices\\.|^domains\\.|^directoryRoles\\.|^directoryRoleTemplates\\.|^directorySettingTemplates\\.|^settings\\.|^subscribedSkus\\.|^contracts\\.|^directory\\.|^users.scopedRoleMembership$|^organization.organization$|^organization.organizationalBranding$|^organization.organizationSettings$|^organization.*.Actions$|^organization.extension$|^tenantRelationships.*.Actions$|^tenantRelationships.*.Functions$|admin.peopleAdminSettings$|^organization\\.partnerInformation$", -// "Identity.Governance": "^accessReviews\\.|^businessFlowTemplates\\.|^programs\\.|^programControls\\.|^programControlTypes\\.|^privilegedRoles\\.|^privilegedRoleAssignments\\.|^privilegedRoleAssignmentRequests\\.|^privilegedApproval\\.|^privilegedOperationEvents\\.|^privilegedAccess\\.|^agreements\\.|^users.agreementAcceptance$|^identityGovernance\\.|^roleManagement.rbacApplication$|^roleManagement.*.Functions$|roleManagement.*.Actions$", -// "Identity.SignIns": "^organization.certificateBasedAuthConfiguration$|^invitations\\.|^identityProviders\\.|^oauth2PermissionGrants\\.|^identityProtection\\.|^dataPolicyOperations\\.|^identity\\.|^trustFramework\\.|^informationProtection\\.|^policies\\.|^users.authentication$|^users.informationProtection$|^tenantRelationships.multiTenantOrganization$|^policies.deviceRegistrationPolicy$|^policies.deviceRegistrationPolicy$", -// "Identity.Partner": "^tenantRelationships.delegatedAdminRelationship$|^tenantRelationships.delegatedAdminCustomer$", -// "Mail": "^users.inferenceClassification$|^users.mailFolder$|^users.message$", -// "ManagedTenants": "^tenantRelationships.managedTenant$", -// "NetworkAccess": "^networkAccess\\.", -// "Notes": "^users.onenote$|^groups.onenote$|^sites.onenote$", -// "People": "^users.person$|^users.profile$|^users.officeGraphInsights$|^users.userAnalytics$", -// "PersonalContacts": "^users.contactFolder$|^users.contact$", -// "Planner": "^planner\\.|^users.plannerUser$|^groups.plannerGroup$", -// "Reports": "^reports\\.|^auditLogs\\.|^deviceManagement.deviceManagementReports$|^admin.adminReportSetting", -// "SchemaExtensions": "^schemaExtensions\\.", -// "Search": "^search\\.|^external\\.", - "Security": "^security\\.|^users.security$", -// "Sites": "^sites.baseSitePage$|^sites.site$|^sites.itemAnalytics$|^sites.columnDefinition$|^sites.contentType$|^sites.drive$|^sites.list$|^sites.sitePage$|^sites.permission$|^sites.store$|^users.site$|^groups.site$|^sites.*.Functions$|^sites.*.Actions$|^sites.richLongRunningOperation$|^termStore.sets.ListChildren$|^admin.sharepoint$", -// "Teams": "^teams\\.|^chats\\.|^users.chat$|^appCatalogs.teamsApp$|^users.userTeamwork$|^teamwork\\.|^users.team$|^groups.team$", -// "Users": "^users.user$|^users.directoryObject$|^users.licenseDetails$|^users.mailboxSettings|^users.notification$|^users.outlookUser$|^users.profilePhoto$|^users.userSettings$|^users.extension$|^users.oAuth2PermissionGrant$|^users.todo$|^users.itemInsights$|^users.servicePrincipal$", -// "Users.Actions": "^users.*.Actions$", -// "Users.Functions": "^users.*.Functions$", -// "WindowsUpdates": "^admin.adminWindows$" + "Applications": "^applicationTemplates\\.|^applications\\.|^servicePrincipals\\.|^onPremisesPublishingProfiles\\.|^users.appRoleAssignment$|^groups.appRoleAssignment$", + "Bookings": "^bookingBusinesses\\.|^bookingCurrencies\\.|^solutions.booking.*.Actions$|^solutions.bookingBusiness$|^solutions.bookingCurrency$|^solutions.virtualEventsRoot$|^solutions.booking.*.Functions$|^solutions.solutionsRoot$", + "BusinessScenario": "^solutions.businessScenario$|^solutions.BusinessScenario.*.Actions$|^solutions.BusinessScenario.*.Functions$", + "BackupRestore": "^solutions.backupRestoreRoot$|^solutions.backupRestore.*.Actions$|^solutions.backupRestore.*.Functions$", + "Calendar": "^places\\.|^users.calendar$|^users.calendarGroup$|^users.event$|^groups.calendar$|^groups.event$", + "ChangeNotifications": "^subscriptions\\.", + "CloudCommunications": "^users.onlineMeeting$|^users.presence$|^communications\\.", + "Compliance": "^compliance\\.|^privacy.subjectRightsRequest$", + "CrossDeviceExperiences": "^users.userActivity$|^users.device$", + "Devices.CloudPrint": "^print\\.", + "Devices.CorporateManagement": "^deviceAppManagement\\.|^officeConfiguration\\.|^users.mobileAppIntentAndState$|^users.mobileAppTroubleshootingEvent$|^users.windowsInformationProtectionDeviceRegistration$|^users.managedAppRegistration$|^users.managedDevice$|^users.deviceManagementTroubleshootingEvent$|^users.deviceEnrollmentConfiguration$", + "Devices.ServiceAnnouncement": "^admin.serviceAnnouncement$|^admin.*.Actions$|^admin.*.Functions$", + "DeviceManagement": "^deviceManagement.(deviceCompliancePolicy.*|deviceManagementConfigurationPolicy.*|deviceManagementCompliancePolicy.*|deviceManagementConfigurationSettingDefinition.*|deviceConfiguration.*|managedDevice.*|managementCondition.*|microsoftTunnel.*|userExperienceAnalytics.*|windowsInformationProtection.*|deviceManagement|deviceManagement(DerivedCredentialSettings|Intent|ResourceAccessProfileBase|Script|SettingCategory|SettingDefinition|Template|TroubleshootingEvent)|androidForWork(AppConfigurationSchema|Settings)|androidManagedStore(AccountEnterpriseSettings|AppConfigurationSchema)|deviceAndAppManagementAssignmentFilter|deviceCategory|advancedThreatProtectionOnboardingStateSummary|dataSharingConsent|detectedApp|deviceHealthScript|deviceShellScript|embeddedSIMActivationCodePool|groupPolicyConfiguration|macOSSoftwareUpdateAccountSummary|mobileAppTroubleshootingEvent|notificationMessageTemplate|remoteActionAudit|softwareUpdateStatusSummary|windowsMalwareInformation|windowsQualityUpdateProfile)$|^admin.edge$|^deviceManagement.monitoring$|^users.ListCloudPCs$", + "DeviceManagement.Administration": "^deviceManagement.(virtualEndpoint.*|.*Partner.*|.*Certificate.*|.*role.*|deviceManagement(DomainJoinConnector|ExchangeConnector|ExchangeOnPremisesPolicy)|groupPolicy(Category|Definition|DefinitionFile|MigrationReport|ObjectFile|UploadedDefinitionFile)|auditEvent|cartToClassAssociation|comanagementEligibleDevice|deviceAndAppManagementRoleAssignment|intuneBrandingProfile|iosUpdateDeviceStatus|mobileThreatDefenseConnector|ndesConnector|resourceOperation|restrictedAppsViolation|termsAndConditions)", + "DeviceManagement.Enrollment": "^deviceManagement.(.*Enrollment.*|.*Autopilot.*|.*depOnboarding.*|importedDeviceIdentity|onPremisesConditionalAccessSettings|windowsFeatureUpdateProfile)$|^roleManagement.roleManagement$|^roleManagement.rbacApplicationMultiple$|^roleManagement.unifiedRbacApplication$", + "DeviceManagement.Functions": "^deviceManagement.*.Functions$", + "DirectoryObjects": "^directoryObjects\\.|^directory.publicKeyInfrastructureRoot$", + "Education": "^education\\.", + "Files": "^drives\\.|^shares\\.|^users.drive$|^groups.drive$", + "Financials": "^financials\\.", + "Groups": "^groups.group$|^groups.directoryObject$|^groups.conversation$|^groups.endpoint$|^groups.extension$|^groups.groupLifecyclePolicy$|^groups.resourceSpecificPermissionGrant$|^groups.profilePhoto$|^groups.conversationThread$|^groupLifecyclePolicies\\.|^users.group$|^groups.directorySetting$|^groups.*.Actions$|^groups.*.Functions$|^groupSettings\\.|^groups.groupSetting$|^groupSettingTemplates\\.", + "Identity.DirectoryManagement": "^administrativeUnits\\.|^contacts\\.|^devices\\.|^domains\\.|^directoryRoles\\.|^directoryRoleTemplates\\.|^directorySettingTemplates\\.|^settings\\.|^subscribedSkus\\.|^contracts\\.|^directory\\.|^users.scopedRoleMembership$|^organization.organization$|^organization.organizationalBranding$|^organization.organizationSettings$|^organization.*.Actions$|^organization.extension$|^tenantRelationships.*.Actions$|^tenantRelationships.*.Functions$|admin.peopleAdminSettings$|^organization\\.partnerInformation$", + "Identity.Governance": "^accessReviews\\.|^businessFlowTemplates\\.|^programs\\.|^programControls\\.|^programControlTypes\\.|^privilegedRoles\\.|^privilegedRoleAssignments\\.|^privilegedRoleAssignmentRequests\\.|^privilegedApproval\\.|^privilegedOperationEvents\\.|^privilegedAccess\\.|^agreements\\.|^users.agreementAcceptance$|^identityGovernance\\.|^roleManagement.rbacApplication$|^roleManagement.*.Functions$|roleManagement.*.Actions$", + "Identity.SignIns": "^organization.certificateBasedAuthConfiguration$|^invitations\\.|^identityProviders\\.|^oauth2PermissionGrants\\.|^identityProtection\\.|^dataPolicyOperations\\.|^identity\\.|^trustFramework\\.|^informationProtection\\.|^policies\\.|^users.authentication$|^users.informationProtection$|^tenantRelationships.multiTenantOrganization$|^policies.deviceRegistrationPolicy$|^policies.deviceRegistrationPolicy$", + "Identity.Partner": "^tenantRelationships.delegatedAdminRelationship$|^tenantRelationships.delegatedAdminCustomer$", + "Mail": "^users.inferenceClassification$|^users.mailFolder$|^users.message$", + "ManagedTenants": "^tenantRelationships.managedTenant$", + "NetworkAccess": "^networkAccess\\.", + "Notes": "^users.onenote$|^groups.onenote$|^sites.onenote$", + "People": "^users.person$|^users.profile$|^users.officeGraphInsights$|^users.userAnalytics$", + "PersonalContacts": "^users.contactFolder$|^users.contact$", + "Planner": "^planner\\.|^users.plannerUser$|^groups.plannerGroup$", + "Reports": "^reports\\.|^auditLogs\\.|^deviceManagement.deviceManagementReports$|^admin.adminReportSetting", + "SchemaExtensions": "^schemaExtensions\\.", + "Search": "^search\\.|^external\\.", + "Security": "^security\\.|^users.security$", + "Sites": "^sites.baseSitePage$|^sites.site$|^sites.itemAnalytics$|^sites.columnDefinition$|^sites.contentType$|^sites.drive$|^sites.list$|^sites.sitePage$|^sites.permission$|^sites.store$|^users.site$|^groups.site$|^sites.*.Functions$|^sites.*.Actions$|^sites.richLongRunningOperation$|^termStore.sets.ListChildren$|^admin.sharepoint$", + "Teams": "^teams\\.|^chats\\.|^users.chat$|^appCatalogs.teamsApp$|^users.userTeamwork$|^teamwork\\.|^users.team$|^groups.team$", + "Users": "^users.user$|^users.directoryObject$|^users.licenseDetails$|^users.mailboxSettings|^users.notification$|^users.outlookUser$|^users.profilePhoto$|^users.userSettings$|^users.extension$|^users.oAuth2PermissionGrant$|^users.todo$|^users.itemInsights$|^users.servicePrincipal$", + "Users.Actions": "^users.*.Actions$", + "Users.Functions": "^users.*.Functions$", + "WindowsUpdates": "^admin.adminWindows$" } \ No newline at end of file