Espace de noms: microsoft.graph
Importante
Les API sous la version /beta dans Microsoft Graph sont susceptibles d’être modifiées. L’utilisation de ces API dans des applications de production n’est pas prise en charge. Pour déterminer si une API est disponible dans v1.0, utilisez le sélecteur Version .
Créez un objet accessReviewScheduleDefinition centré sur l’utilisateur (portée du catalogue) via l’itinéraire unifié . Avec une révision centrée sur l’utilisateur, un réviseur évalue l’accès d’un principal à chaque groupe et application contenus dans un catalogue de gestion des droits d’utilisation en une seule révision. Le catalogue est identifié dans la collection resourceScopes de principalResourceMembershipsScope.
Cette API est disponible dans les déploiements cloud nationaux suivants.
| Service global |
Gouvernement américain L4 |
Gouvernement américain L5 (DOD) |
Chine exploitée par 21Vianet |
| ✅ |
❌ |
❌ |
❌ |
Autorisations
Choisissez l’autorisation ou les autorisations marquées comme étant les moins privilégiées pour cette API. Utilisez une ou plusieurs autorisations privilégiées uniquement si votre application en a besoin. Pour plus d’informations sur les autorisations déléguées et d’application, voir Types d’autorisations. Pour en savoir plus sur ces autorisations, consultez la référence des autorisations.
| Type d’autorisation |
Autorisations les moins privilégiées |
Autorisations à privilèges plus élevés |
| Déléguée (compte professionnel ou scolaire) |
AccessReview.ReadWrite.All |
Non disponible. |
| Déléguée (compte Microsoft personnel) |
Non prise en charge. |
Non prise en charge. |
| Application |
AccessReview.ReadWrite.All |
Non disponible. |
Importante
Pour l’accès délégué à l’aide de comptes professionnels ou scolaires, l’utilisateur connecté doit disposer d’un rôle Microsoft Entra pris en charge ou d’un rôle personnalisé qui accorde les autorisations requises pour cette opération. Cette opération prend en charge les rôles intégrés suivants, qui n’offrent que le moindre privilège nécessaire :
- Pour rédiger des révisions d’accès d’un groupe ou d’une application : Administrateur utilisateur, Administrateur de gouvernance des identités
- Pour écrire des révisions d’accès d’un rôle Microsoft Entra : Administrateur de gouvernance des identités, administrateur de rôle privilégié
Requête HTTP
POST /identityGovernance/accessReviews/unified/definitions
Corps de la demande
Dans le corps de la demande, fournissez une représentation JSON de l’objet accessReviewScheduleDefinition . Définissez l’étendue sur un principalResourceMembershipsScope dont la collection resourceScopes contient une étendue de ressource de scopeTypecatalog qui identifie le catalogue à examiner.
Réponse
En cas de réussite, cette méthode renvoie un code de réponse et un 201 Created objet accessReviewScheduleDefinition dans le corps de la réponse.
Exemples
Exemple 1 : créer une définition de révision d’accès (catalogue) centrée sur l’utilisateur
L’exemple suivant crée une révision dans laquelle les responsables de tous les utilisateurs vérifient l’accès de ces utilisateurs à chaque groupe et application contenus dans un catalogue.
Demande
POST https://graph.microsoft.com/beta/identityGovernance/accessReviews/unified/definitions
Content-type: application/json
{
"displayName": "Catalog access review",
"descriptionForAdmins": "Quarterly user-centric review of catalog resources",
"scope": {
"@odata.type": "#microsoft.graph.principalResourceMembershipsScope",
"principalScopes": [
{
"@odata.type": "#microsoft.graph.accessReviewPrincipalScope",
"scopeType": "allUsers"
}
],
"resourceScopes": [
{
"@odata.type": "#microsoft.graph.accessReviewResourceScope",
"resourceId": "c6010d0c-ff41-4929-9776-fa03a03dd5ac",
"scopeType": "catalog"
}
]
},
"reviewers": [
{
"@odata.type": "#microsoft.graph.accessReviewReviewerScope",
"scopeType": "manager"
}
],
"settings": {
"mailNotificationsEnabled": true,
"reminderNotificationsEnabled": true,
"justificationRequiredOnApproval": true,
"instanceDurationInDays": 6,
"recommendationsEnabled": true,
"recurrence": {
"pattern": {
"type": "absoluteMonthly",
"interval": 1
},
"range": {
"type": "noEnd",
"startDate": "2026-08-31"
}
}
}
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Beta.Models;
var requestBody = new AccessReviewScheduleDefinition
{
DisplayName = "Catalog access review",
DescriptionForAdmins = "Quarterly user-centric review of catalog resources",
Scope = new PrincipalResourceMembershipsScope
{
OdataType = "#microsoft.graph.principalResourceMembershipsScope",
PrincipalScopes = new List<AccessReviewScope>
{
new AccessReviewPrincipalScope
{
OdataType = "#microsoft.graph.accessReviewPrincipalScope",
ScopeType = AccessReviewPrincipalScopeType.AllUsers,
},
},
ResourceScopes = new List<AccessReviewScope>
{
new AccessReviewResourceScope
{
OdataType = "#microsoft.graph.accessReviewResourceScope",
ResourceId = "c6010d0c-ff41-4929-9776-fa03a03dd5ac",
ScopeType = AccessReviewResourceScopeType.Catalog,
},
},
},
Reviewers = new List<AccessReviewReviewerScope>
{
new AccessReviewReviewerScope
{
OdataType = "#microsoft.graph.accessReviewReviewerScope",
ScopeType = AccessReviewReviewerScopeType.Manager,
},
},
Settings = new AccessReviewScheduleSettings
{
MailNotificationsEnabled = true,
ReminderNotificationsEnabled = true,
JustificationRequiredOnApproval = true,
InstanceDurationInDays = 6,
RecommendationsEnabled = true,
Recurrence = new PatternedRecurrence
{
Pattern = new RecurrencePattern
{
Type = RecurrencePatternType.AbsoluteMonthly,
Interval = 1,
},
Range = new RecurrenceRange
{
Type = RecurrenceRangeType.NoEnd,
StartDate = new Date(DateTime.Parse("2026-08-31")),
},
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.IdentityGovernance.AccessReviews.Unified.Definitions.PostAsync(requestBody);
// Code snippets are only available for the latest major version. Current major version is $v0.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-beta-sdk-go"
graphmodels "github.com/microsoftgraph/msgraph-beta-sdk-go/models"
//other-imports
)
requestBody := graphmodels.NewAccessReviewScheduleDefinition()
displayName := "Catalog access review"
requestBody.SetDisplayName(&displayName)
descriptionForAdmins := "Quarterly user-centric review of catalog resources"
requestBody.SetDescriptionForAdmins(&descriptionForAdmins)
scope := graphmodels.NewPrincipalResourceMembershipsScope()
accessReviewScope := graphmodels.NewAccessReviewPrincipalScope()
scopeType := graphmodels.ALLUSERS_ACCESSREVIEWPRINCIPALSCOPETYPE
accessReviewScope.SetScopeType(&scopeType)
principalScopes := []graphmodels.AccessReviewScopeable {
accessReviewScope,
}
scope.SetPrincipalScopes(principalScopes)
accessReviewScope := graphmodels.NewAccessReviewResourceScope()
resourceId := "c6010d0c-ff41-4929-9776-fa03a03dd5ac"
accessReviewScope.SetResourceId(&resourceId)
scopeType := graphmodels.CATALOG_ACCESSREVIEWRESOURCESCOPETYPE
accessReviewScope.SetScopeType(&scopeType)
resourceScopes := []graphmodels.AccessReviewScopeable {
accessReviewScope,
}
scope.SetResourceScopes(resourceScopes)
requestBody.SetScope(scope)
accessReviewReviewerScope := graphmodels.NewAccessReviewReviewerScope()
scopeType := graphmodels.MANAGER_ACCESSREVIEWREVIEWERSCOPETYPE
accessReviewReviewerScope.SetScopeType(&scopeType)
reviewers := []graphmodels.AccessReviewReviewerScopeable {
accessReviewReviewerScope,
}
requestBody.SetReviewers(reviewers)
settings := graphmodels.NewAccessReviewScheduleSettings()
mailNotificationsEnabled := true
settings.SetMailNotificationsEnabled(&mailNotificationsEnabled)
reminderNotificationsEnabled := true
settings.SetReminderNotificationsEnabled(&reminderNotificationsEnabled)
justificationRequiredOnApproval := true
settings.SetJustificationRequiredOnApproval(&justificationRequiredOnApproval)
instanceDurationInDays := int32(6)
settings.SetInstanceDurationInDays(&instanceDurationInDays)
recommendationsEnabled := true
settings.SetRecommendationsEnabled(&recommendationsEnabled)
recurrence := graphmodels.NewPatternedRecurrence()
pattern := graphmodels.NewRecurrencePattern()
type := graphmodels.ABSOLUTEMONTHLY_RECURRENCEPATTERNTYPE
pattern.SetType(&type)
interval := int32(1)
pattern.SetInterval(&interval)
recurrence.SetPattern(pattern)
range := graphmodels.NewRecurrenceRange()
type := graphmodels.NOEND_RECURRENCERANGETYPE
range.SetType(&type)
startDate := 2026-08-31
range.SetStartDate(&startDate)
recurrence.SetRange(range)
settings.SetRecurrence(recurrence)
requestBody.SetSettings(settings)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
definitions, err := graphClient.IdentityGovernance().AccessReviews().Unified().Definitions().Post(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
AccessReviewScheduleDefinition accessReviewScheduleDefinition = new AccessReviewScheduleDefinition();
accessReviewScheduleDefinition.setDisplayName("Catalog access review");
accessReviewScheduleDefinition.setDescriptionForAdmins("Quarterly user-centric review of catalog resources");
PrincipalResourceMembershipsScope scope = new PrincipalResourceMembershipsScope();
scope.setOdataType("#microsoft.graph.principalResourceMembershipsScope");
LinkedList<AccessReviewScope> principalScopes = new LinkedList<AccessReviewScope>();
AccessReviewPrincipalScope accessReviewScope = new AccessReviewPrincipalScope();
accessReviewScope.setOdataType("#microsoft.graph.accessReviewPrincipalScope");
accessReviewScope.setScopeType(AccessReviewPrincipalScopeType.AllUsers);
principalScopes.add(accessReviewScope);
scope.setPrincipalScopes(principalScopes);
LinkedList<AccessReviewScope> resourceScopes = new LinkedList<AccessReviewScope>();
AccessReviewResourceScope accessReviewScope1 = new AccessReviewResourceScope();
accessReviewScope1.setOdataType("#microsoft.graph.accessReviewResourceScope");
accessReviewScope1.setResourceId("c6010d0c-ff41-4929-9776-fa03a03dd5ac");
accessReviewScope1.setScopeType(AccessReviewResourceScopeType.Catalog);
resourceScopes.add(accessReviewScope1);
scope.setResourceScopes(resourceScopes);
accessReviewScheduleDefinition.setScope(scope);
LinkedList<AccessReviewReviewerScope> reviewers = new LinkedList<AccessReviewReviewerScope>();
AccessReviewReviewerScope accessReviewReviewerScope = new AccessReviewReviewerScope();
accessReviewReviewerScope.setOdataType("#microsoft.graph.accessReviewReviewerScope");
accessReviewReviewerScope.setScopeType(AccessReviewReviewerScopeType.Manager);
reviewers.add(accessReviewReviewerScope);
accessReviewScheduleDefinition.setReviewers(reviewers);
AccessReviewScheduleSettings settings = new AccessReviewScheduleSettings();
settings.setMailNotificationsEnabled(true);
settings.setReminderNotificationsEnabled(true);
settings.setJustificationRequiredOnApproval(true);
settings.setInstanceDurationInDays(6);
settings.setRecommendationsEnabled(true);
PatternedRecurrence recurrence = new PatternedRecurrence();
RecurrencePattern pattern = new RecurrencePattern();
pattern.setType(RecurrencePatternType.AbsoluteMonthly);
pattern.setInterval(1);
recurrence.setPattern(pattern);
RecurrenceRange range = new RecurrenceRange();
range.setType(RecurrenceRangeType.NoEnd);
LocalDate startDate = LocalDate.parse("2026-08-31");
range.setStartDate(startDate);
recurrence.setRange(range);
settings.setRecurrence(recurrence);
accessReviewScheduleDefinition.setSettings(settings);
AccessReviewScheduleDefinition result = graphClient.identityGovernance().accessReviews().unified().definitions().post(accessReviewScheduleDefinition);
const options = {
authProvider,
};
const client = Client.init(options);
const accessReviewScheduleDefinition = {
displayName: 'Catalog access review',
descriptionForAdmins: 'Quarterly user-centric review of catalog resources',
scope: {
'@odata.type': '#microsoft.graph.principalResourceMembershipsScope',
principalScopes: [
{
'@odata.type': '#microsoft.graph.accessReviewPrincipalScope',
scopeType: 'allUsers'
}
],
resourceScopes: [
{
'@odata.type': '#microsoft.graph.accessReviewResourceScope',
resourceId: 'c6010d0c-ff41-4929-9776-fa03a03dd5ac',
scopeType: 'catalog'
}
]
},
reviewers: [
{
'@odata.type': '#microsoft.graph.accessReviewReviewerScope',
scopeType: 'manager'
}
],
settings: {
mailNotificationsEnabled: true,
reminderNotificationsEnabled: true,
justificationRequiredOnApproval: true,
instanceDurationInDays: 6,
recommendationsEnabled: true,
recurrence: {
pattern: {
type: 'absoluteMonthly',
interval: 1
},
range: {
type: 'noEnd',
startDate: '2026-08-31'
}
}
}
};
await client.api('/identityGovernance/accessReviews/unified/definitions')
.version('beta')
.post(accessReviewScheduleDefinition);
<?php
use Microsoft\Graph\Beta\GraphServiceClient;
use Microsoft\Graph\Beta\Generated\Models\AccessReviewScheduleDefinition;
use Microsoft\Graph\Beta\Generated\Models\PrincipalResourceMembershipsScope;
use Microsoft\Graph\Beta\Generated\Models\AccessReviewScope;
use Microsoft\Graph\Beta\Generated\Models\AccessReviewPrincipalScope;
use Microsoft\Graph\Beta\Generated\Models\AccessReviewPrincipalScopeType;
use Microsoft\Graph\Beta\Generated\Models\AccessReviewResourceScope;
use Microsoft\Graph\Beta\Generated\Models\AccessReviewResourceScopeType;
use Microsoft\Graph\Beta\Generated\Models\AccessReviewReviewerScope;
use Microsoft\Graph\Beta\Generated\Models\AccessReviewReviewerScopeType;
use Microsoft\Graph\Beta\Generated\Models\AccessReviewScheduleSettings;
use Microsoft\Graph\Beta\Generated\Models\PatternedRecurrence;
use Microsoft\Graph\Beta\Generated\Models\RecurrencePattern;
use Microsoft\Graph\Beta\Generated\Models\RecurrencePatternType;
use Microsoft\Graph\Beta\Generated\Models\RecurrenceRange;
use Microsoft\Graph\Beta\Generated\Models\RecurrenceRangeType;
use Microsoft\Kiota\Abstractions\Types\Date;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new AccessReviewScheduleDefinition();
$requestBody->setDisplayName('Catalog access review');
$requestBody->setDescriptionForAdmins('Quarterly user-centric review of catalog resources');
$scope = new PrincipalResourceMembershipsScope();
$scope->setOdataType('#microsoft.graph.principalResourceMembershipsScope');
$principalScopesAccessReviewScope1 = new AccessReviewPrincipalScope();
$principalScopesAccessReviewScope1->setOdataType('#microsoft.graph.accessReviewPrincipalScope');
$principalScopesAccessReviewScope1->setScopeType(new AccessReviewPrincipalScopeType('allUsers'));
$principalScopesArray []= $principalScopesAccessReviewScope1;
$scope->setPrincipalScopes($principalScopesArray);
$resourceScopesAccessReviewScope1 = new AccessReviewResourceScope();
$resourceScopesAccessReviewScope1->setOdataType('#microsoft.graph.accessReviewResourceScope');
$resourceScopesAccessReviewScope1->setResourceId('c6010d0c-ff41-4929-9776-fa03a03dd5ac');
$resourceScopesAccessReviewScope1->setScopeType(new AccessReviewResourceScopeType('catalog'));
$resourceScopesArray []= $resourceScopesAccessReviewScope1;
$scope->setResourceScopes($resourceScopesArray);
$requestBody->setScope($scope);
$reviewersAccessReviewReviewerScope1 = new AccessReviewReviewerScope();
$reviewersAccessReviewReviewerScope1->setOdataType('#microsoft.graph.accessReviewReviewerScope');
$reviewersAccessReviewReviewerScope1->setScopeType(new AccessReviewReviewerScopeType('manager'));
$reviewersArray []= $reviewersAccessReviewReviewerScope1;
$requestBody->setReviewers($reviewersArray);
$settings = new AccessReviewScheduleSettings();
$settings->setMailNotificationsEnabled(true);
$settings->setReminderNotificationsEnabled(true);
$settings->setJustificationRequiredOnApproval(true);
$settings->setInstanceDurationInDays(6);
$settings->setRecommendationsEnabled(true);
$settingsRecurrence = new PatternedRecurrence();
$settingsRecurrencePattern = new RecurrencePattern();
$settingsRecurrencePattern->setType(new RecurrencePatternType('absoluteMonthly'));
$settingsRecurrencePattern->setInterval(1);
$settingsRecurrence->setPattern($settingsRecurrencePattern);
$settingsRecurrenceRange = new RecurrenceRange();
$settingsRecurrenceRange->setType(new RecurrenceRangeType('noEnd'));
$settingsRecurrenceRange->setStartDate(new Date('2026-08-31'));
$settingsRecurrence->setRange($settingsRecurrenceRange);
$settings->setRecurrence($settingsRecurrence);
$requestBody->setSettings($settings);
$result = $graphServiceClient->identityGovernance()->accessReviews()->unified()->definitions()->post($requestBody)->wait();
Import-Module Microsoft.Graph.Beta.Identity.Governance
$params = @{
displayName = "Catalog access review"
descriptionForAdmins = "Quarterly user-centric review of catalog resources"
scope = @{
"@odata.type" = "#microsoft.graph.principalResourceMembershipsScope"
principalScopes = @(
@{
"@odata.type" = "#microsoft.graph.accessReviewPrincipalScope"
scopeType = "allUsers"
}
)
resourceScopes = @(
@{
"@odata.type" = "#microsoft.graph.accessReviewResourceScope"
resourceId = "c6010d0c-ff41-4929-9776-fa03a03dd5ac"
scopeType = "catalog"
}
)
}
reviewers = @(
@{
"@odata.type" = "#microsoft.graph.accessReviewReviewerScope"
scopeType = "manager"
}
)
settings = @{
mailNotificationsEnabled = $true
reminderNotificationsEnabled = $true
justificationRequiredOnApproval = $true
instanceDurationInDays = 6
recommendationsEnabled = $true
recurrence = @{
pattern = @{
type = "absoluteMonthly"
interval = 1
}
range = @{
type = "noEnd"
startDate = "2026-08-31"
}
}
}
}
New-MgBetaIdentityGovernanceAccessReviewUnifiedDefinition -BodyParameter $params
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph_beta import GraphServiceClient
from msgraph_beta.generated.models.access_review_schedule_definition import AccessReviewScheduleDefinition
from msgraph_beta.generated.models.principal_resource_memberships_scope import PrincipalResourceMembershipsScope
from msgraph_beta.generated.models.access_review_scope import AccessReviewScope
from msgraph_beta.generated.models.access_review_principal_scope import AccessReviewPrincipalScope
from msgraph_beta.generated.models.access_review_principal_scope_type import AccessReviewPrincipalScopeType
from msgraph_beta.generated.models.access_review_resource_scope import AccessReviewResourceScope
from msgraph_beta.generated.models.access_review_resource_scope_type import AccessReviewResourceScopeType
from msgraph_beta.generated.models.access_review_reviewer_scope import AccessReviewReviewerScope
from msgraph_beta.generated.models.access_review_reviewer_scope_type import AccessReviewReviewerScopeType
from msgraph_beta.generated.models.access_review_schedule_settings import AccessReviewScheduleSettings
from msgraph_beta.generated.models.patterned_recurrence import PatternedRecurrence
from msgraph_beta.generated.models.recurrence_pattern import RecurrencePattern
from msgraph_beta.generated.models.recurrence_pattern_type import RecurrencePatternType
from msgraph_beta.generated.models.recurrence_range import RecurrenceRange
from msgraph_beta.generated.models.recurrence_range_type import RecurrenceRangeType
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = AccessReviewScheduleDefinition(
display_name = "Catalog access review",
description_for_admins = "Quarterly user-centric review of catalog resources",
scope = PrincipalResourceMembershipsScope(
odata_type = "#microsoft.graph.principalResourceMembershipsScope",
principal_scopes = [
AccessReviewPrincipalScope(
odata_type = "#microsoft.graph.accessReviewPrincipalScope",
scope_type = AccessReviewPrincipalScopeType.AllUsers,
),
],
resource_scopes = [
AccessReviewResourceScope(
odata_type = "#microsoft.graph.accessReviewResourceScope",
resource_id = "c6010d0c-ff41-4929-9776-fa03a03dd5ac",
scope_type = AccessReviewResourceScopeType.Catalog,
),
],
),
reviewers = [
AccessReviewReviewerScope(
odata_type = "#microsoft.graph.accessReviewReviewerScope",
scope_type = AccessReviewReviewerScopeType.Manager,
),
],
settings = AccessReviewScheduleSettings(
mail_notifications_enabled = True,
reminder_notifications_enabled = True,
justification_required_on_approval = True,
instance_duration_in_days = 6,
recommendations_enabled = True,
recurrence = PatternedRecurrence(
pattern = RecurrencePattern(
type = RecurrencePatternType.AbsoluteMonthly,
interval = 1,
),
range = RecurrenceRange(
type = RecurrenceRangeType.NoEnd,
start_date = "2026-08-31",
),
),
),
)
result = await graph_client.identity_governance.access_reviews.unified.definitions.post(request_body)
Réponse
Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.
HTTP/1.1 201 Created
Content-type: application/json
{
"id": "29f2d16e-9ca6-4052-bbfe-802c48944448",
"displayName": "Catalog access review",
"status": "NotStarted",
"descriptionForAdmins": "Quarterly user-centric review of catalog resources",
"scope": {
"@odata.type": "#microsoft.graph.principalResourceMembershipsScope",
"principalScopes": [
{
"@odata.type": "#microsoft.graph.accessReviewPrincipalScope",
"scopeType": "allUsers"
}
],
"resourceScopes": [
{
"@odata.type": "#microsoft.graph.accessReviewResourceScope",
"resourceId": "c6010d0c-ff41-4929-9776-fa03a03dd5ac",
"scopeType": "catalog"
}
]
},
"reviewers": [
{
"@odata.type": "#microsoft.graph.accessReviewReviewerScope",
"scopeType": "manager"
}
]
}