创建 historyDefinitions
命名空间:microsoft.graph
创建新的 accessReviewHistoryDefinition 对象。
权限
要调用此 API,需要以下权限之一。要了解详细信息,包括如何选择权限的信息,请参阅权限。
| 权限类型 |
权限(从最低特权到最高特权) |
| 委派(工作或学校帐户) |
AccessReview.ReadWrite.All |
| 委派(个人 Microsoft 帐户) |
不支持。 |
| 应用 |
AccessReview.ReadWrite.All |
登录用户还必须具有允许他们读取访问评审以检索任何数据的目录角色。 有关详细信息,请参阅 访问评审的角色和权限要求。
HTTP 请求
POST /identityGovernance/accessReviews/historyDefinitions
| 名称 |
说明 |
| Authorization |
Bearer {token}。必需。 |
| Content-Type |
application/json. Required. |
请求正文
在请求正文中,提供 accessReviewHistoryDefinition 对象的 JSON 表示形式。
下表显示了用于创建 accessReviewHistoryDefinition 的必需属性。
| 属性 |
类型 |
说明 |
| displayName |
String |
访问评审历史记录数据收集的名称。 必填。 |
| reviewHistoryPeriodStartDateTime |
DateTimeOffset |
时间戳。 从此日期开始或之后的评论将包含在提取的历史记录数据中。 仅当未定义 scheduleSettings 时才需要。 |
| reviewHistoryPeriodEndDateTime |
DateTimeOffset |
时间戳。 从此日期开始或之前的评审将包含在提取的历史记录数据中。 仅当未定义 scheduleSettings 时才需要。 |
| scopes |
accessReviewQueryScope 集合 |
用于筛选提取的历史记录数据中包含哪些评论。 提取其范围与此提供的范围匹配的评审。 必填。 有关详细信息,请参阅 accessReviewHistoryDefinition 支持的范围查询。 |
| scheduleSettings |
accessReviewHistoryScheduleSettings |
定期访问评审历史记录定义系列的设置。 仅当未定义 reviewHistoryPeriodStartDateTime 或 reviewHistoryPeriodEndDateTime 时 才需要。 尚不支持。 |
accessReviewHistoryDefinition 支持的范围查询
accessReviewHistoryDefinition 的范围 属性基于 accessReviewQueryScope,该资源允许你在 查询属性中 配置不同的资源。 然后,这些资源表示历史记录定义的范围,并规定在创建历史记录定义 的 accessReviewHistoryInstances 时生成的可下载 CSV 文件中包含的审阅历史记录数据的类型。
对 查询 属性使用以下格式:
/identityGovernance/accessReviews/definitions?$filter=contains(scope/query, '{object}')
其值 {object} 是可在 accessReviewScheduleDefinition 中配置的资源之一。 例如,以下内容包括各个组 (的每个 accessReviewScheduleDefinition 评审结果,并排除范围为具有来宾用户) 的所有 Microsoft 365 组的定义。
/identityGovernance/accessReviews/definitions?$filter=contains(scope/query, '/groups')
有关更多受支持的值,请参阅 accessReviewScheduleDefinition 上的$filter查询参数。
响应
如果成功,此方法在响应正文中返回 201 Created 响应代码和 accessReviewHistoryDefinition 对象。
示例
以下示例演示如何创建访问评审历史记录定义,其范围限于访问包和组的访问评审(在 2021/01/01/01 开始日期和 2021 年 4 月 5 日结束日期之间运行)。
请求
POST https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/historyDefinitions
Content-Type: application/json
{
"displayName": "Last quarter's group reviews April 2021",
"decisions": [
"approve",
"deny",
"dontKnow",
"notReviewed",
"notNotified"
],
"scheduleSettings": {
"reportRange": "P1M",
"recurrence": {
"pattern": {
"type": "monthly",
"interval": 1
},
"range": {
"type": "noEnd",
"startDate": "2018-08-03T21:02:30.667Z",
"count": 0
}
}
},
"scopes": [
{
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"queryType": "MicrosoftGraph",
"query": "/identityGovernance/accessReviews/definitions?$filter=contains(scope/query, 'accessPackageAssignments')",
"queryRoot": null
},
{
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"queryType": "MicrosoftGraph",
"query": "/identityGovernance/accessReviews/definitions?$filter=contains(scope/query, '/groups')",
"queryRoot": null
}
]
}
const options = {
authProvider,
};
const client = Client.init(options);
const accessReviewHistoryDefinition = {
displayName: 'Last quarter\'s group reviews April 2021',
decisions: [
'approve',
'deny',
'dontKnow',
'notReviewed',
'notNotified'
],
scheduleSettings: {
reportRange: 'P1M',
recurrence: {
pattern: {
type: 'monthly',
interval: 1
},
range: {
type: 'noEnd',
startDate: '2018-08-03T21:02:30.667Z',
count: 0
}
}
},
scopes: [
{
'@odata.type': '#microsoft.graph.accessReviewQueryScope',
queryType: 'MicrosoftGraph',
query: '/identityGovernance/accessReviews/definitions?$filter=contains(scope/query, \'accessPackageAssignments\')',
queryRoot: null
},
{
'@odata.type': '#microsoft.graph.accessReviewQueryScope',
queryType: 'MicrosoftGraph',
query: '/identityGovernance/accessReviews/definitions?$filter=contains(scope/query, \'/groups\')',
queryRoot: null
}
]
};
await client.api('/identityGovernance/accessReviews/historyDefinitions')
.post(accessReviewHistoryDefinition);
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
MSHTTPClient *httpClient = [MSClientFactory createHTTPClientWithAuthenticationProvider:authenticationProvider];
NSString *MSGraphBaseURL = @"https://graph.microsoft.com/v1.0/";
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[MSGraphBaseURL stringByAppendingString:@"/identityGovernance/accessReviews/historyDefinitions"]]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
MSGraphAccessReviewHistoryDefinition *accessReviewHistoryDefinition = [[MSGraphAccessReviewHistoryDefinition alloc] init];
[accessReviewHistoryDefinition setDisplayName:@"Last quarter's group reviews April 2021"];
NSMutableArray *decisionsList = [[NSMutableArray alloc] init];
[decisionsList addObject: @"approve"];
[decisionsList addObject: @"deny"];
[decisionsList addObject: @"dontKnow"];
[decisionsList addObject: @"notReviewed"];
[decisionsList addObject: @"notNotified"];
[accessReviewHistoryDefinition setDecisions:decisionsList];
MSGraphAccessReviewHistoryScheduleSettings *scheduleSettings = [[MSGraphAccessReviewHistoryScheduleSettings alloc] init];
[scheduleSettings setReportRange:@"P1M"];
MSGraphPatternedRecurrence *recurrence = [[MSGraphPatternedRecurrence alloc] init];
MSGraphRecurrencePattern *pattern = [[MSGraphRecurrencePattern alloc] init];
[pattern setType: [MSGraphRecurrencePatternType daily]];
[pattern setInterval: 1];
[recurrence setPattern:pattern];
MSGraphRecurrenceRange *range = [[MSGraphRecurrenceRange alloc] init];
[range setType: [MSGraphRecurrenceRangeType noEnd]];
[range setStartDate: "2018-08-03T21:02:30.667Z"];
[range setCount: 0];
[recurrence setRange:range];
[scheduleSettings setRecurrence:recurrence];
[accessReviewHistoryDefinition setScheduleSettings:scheduleSettings];
NSMutableArray *scopesList = [[NSMutableArray alloc] init];
MSGraphAccessReviewScope *scopes = [[MSGraphAccessReviewScope alloc] init];
[scopes setQueryType:@"MicrosoftGraph"];
[scopes setQuery:@"/identityGovernance/accessReviews/definitions?$filter=contains(scope/query, 'accessPackageAssignments')"];
[scopes setQueryRoot: null];
[scopesList addObject: scopes];
MSGraphAccessReviewScope *scopes = [[MSGraphAccessReviewScope alloc] init];
[scopes setQueryType:@"MicrosoftGraph"];
[scopes setQuery:@"/identityGovernance/accessReviews/definitions?$filter=contains(scope/query, '/groups')"];
[scopes setQueryRoot: null];
[scopesList addObject: scopes];
[accessReviewHistoryDefinition setScopes:scopesList];
NSError *error;
NSData *accessReviewHistoryDefinitionData = [accessReviewHistoryDefinition getSerializedDataWithError:&error];
[urlRequest setHTTPBody:accessReviewHistoryDefinitionData];
MSURLSessionDataTask *meDataTask = [httpClient dataTaskWithRequest:urlRequest
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *nserror) {
//Request Completed
}];
[meDataTask execute];
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
AccessReviewHistoryDefinition accessReviewHistoryDefinition = new AccessReviewHistoryDefinition();
accessReviewHistoryDefinition.displayName = "Last quarter's group reviews April 2021";
LinkedList<AccessReviewHistoryDecisionFilter> decisionsList = new LinkedList<AccessReviewHistoryDecisionFilter>();
decisionsList.add(AccessReviewHistoryDecisionFilter.APPROVE);
decisionsList.add(AccessReviewHistoryDecisionFilter.DENY);
decisionsList.add(AccessReviewHistoryDecisionFilter.DONT_KNOW);
decisionsList.add(AccessReviewHistoryDecisionFilter.NOT_REVIEWED);
decisionsList.add(AccessReviewHistoryDecisionFilter.NOT_NOTIFIED);
accessReviewHistoryDefinition.decisions = decisionsList;
AccessReviewHistoryScheduleSettings scheduleSettings = new AccessReviewHistoryScheduleSettings();
scheduleSettings.reportRange = "P1M";
PatternedRecurrence recurrence = new PatternedRecurrence();
RecurrencePattern pattern = new RecurrencePattern();
pattern.type = RecurrencePatternType.DAILY;
pattern.interval = 1;
recurrence.pattern = pattern;
RecurrenceRange range = new RecurrenceRange();
range.type = RecurrenceRangeType.NO_END;
range.startDate = new DateOnly(1900,1,1);
range.count = 0;
recurrence.range = range;
scheduleSettings.recurrence = recurrence;
accessReviewHistoryDefinition.scheduleSettings = scheduleSettings;
LinkedList<AccessReviewScope> scopesList = new LinkedList<AccessReviewScope>();
AccessReviewQueryScope scopes = new AccessReviewQueryScope();
scopes.queryType = "MicrosoftGraph";
scopes.query = "/identityGovernance/accessReviews/definitions?$filter=contains(scope/query, 'accessPackageAssignments')";
scopes.queryRoot = null;
scopesList.add(scopes);
AccessReviewQueryScope scopes1 = new AccessReviewQueryScope();
scopes1.queryType = "MicrosoftGraph";
scopes1.query = "/identityGovernance/accessReviews/definitions?$filter=contains(scope/query, '/groups')";
scopes1.queryRoot = null;
scopesList.add(scopes1);
accessReviewHistoryDefinition.scopes = scopesList;
graphClient.identityGovernance().accessReviews().historyDefinitions()
.buildRequest()
.post(accessReviewHistoryDefinition);
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
requestBody := msgraphsdk.NewAccessReviewHistoryDefinition()
displayName := "Last quarter's group reviews April 2021"
requestBody.SetDisplayName(&displayName)
requestBody.SetDecisions( []AccessReviewHistoryDecisionFilter {
"approve",
"deny",
"dontKnow",
"notReviewed",
"notNotified",
}
scheduleSettings := msgraphsdk.NewAccessReviewHistoryScheduleSettings()
requestBody.SetScheduleSettings(scheduleSettings)
reportRange := "P1M"
scheduleSettings.SetReportRange(&reportRange)
recurrence := msgraphsdk.NewPatternedRecurrence()
scheduleSettings.SetRecurrence(recurrence)
pattern := msgraphsdk.NewRecurrencePattern()
recurrence.SetPattern(pattern)
type := "monthly"
pattern.SetType(&type)
interval := int32(1)
pattern.SetInterval(&interval)
range := msgraphsdk.NewRecurrenceRange()
recurrence.SetRange(range)
type := "noEnd"
range.SetType(&type)
startDate := "2018-08-03T21:02:30.667Z"
range.SetStartDate(&startDate)
range.SetAdditionalData(map[string]interface{}{
"count": ,
}
requestBody.SetScopes( []AccessReviewScope {
msgraphsdk.NewAccessReviewScope(),
SetAdditionalData(map[string]interface{}{
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"queryType": "MicrosoftGraph",
"query": "/identityGovernance/accessReviews/definitions?$filter=contains(scope/query, 'accessPackageAssignments')",
"queryRoot": nil,
}
msgraphsdk.NewAccessReviewScope(),
SetAdditionalData(map[string]interface{}{
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"queryType": "MicrosoftGraph",
"query": "/identityGovernance/accessReviews/definitions?$filter=contains(scope/query, '/groups')",
"queryRoot": nil,
}
}
result, err := graphClient.IdentityGovernance().AccessReviews().HistoryDefinitions().Post(requestBody)
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
响应
注意: 为了提高可读性,可能缩短了此处显示的响应对象。
HTTP/1.1 201 Created
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.accessReviewHistoryDefinition",
"id": "b2cb022f-b7e1-40f3-9854-c65a40861c38",
"displayName": "Last quarter's group reviews April 2021",
"scheduleSettings": {
"reportRange": "P1M",
"recurrence": {
"pattern": {
"type": "monthly",
"interval": 1
},
"range": {
"type": "noEnd",
"startDate": "2018-08-03T21:02:30.667Z",
"count": 0
}
}
},
"decisions": [
"approve",
"deny",
"dontKnow",
"notReviewed",
"notNotified"
],
"status": "requested",
"createdDateTime": "2021-04-14T00:22:48.9392594Z",
"createdBy": {
"id": "957f1027-c0ee-460d-9269-b8444459e0fe",
"displayName": "MOD Administrator",
"userPrincipalName": "admin@contoso.com"
},
"scopes": [
{
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"queryType": "MicrosoftGraph",
"query": "/identityGovernance/accessReviews/definitions?$filter=contains(scope/query, 'accessPackageAssignments')",
"queryRoot": null
},
{
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"queryType": "MicrosoftGraph",
"query": "/identityGovernance/accessReviews/definitions?$filter=contains(scope/query, '/groups')",
"queryRoot": null
}
]
}