更新 synchronizationSchema
命名空间:microsoft.graph
重要
Microsoft Graph /beta
版本下的 API 可能会发生更改。 不支持在生产应用程序中使用这些 API。 若要确定 API 是否在 v1.0 中可用,请使用 版本 选择器。
更新给定作业或模板的同步架构。 此方法将当前架构完全替换为请求中提供的架构。 若要更新模板的架构,请对应用程序对象进行调用。 必须是应用程序的所有者。
权限
为此 API 选择标记为最低特权的权限。 只有在应用需要它时,才使用更高的特权权限。 有关委派权限和应用程序权限的详细信息,请参阅权限类型。 要了解有关这些权限的详细信息,请参阅 权限参考。
权限类型 | 最低特权权限 | 更高特权权限 |
---|---|---|
委派(工作或学校帐户) | Synchronization.ReadWrite.All | CustomSecAttributeProvisioning.ReadWrite.All |
委派(个人 Microsoft 帐户) | 不支持。 | 不支持。 |
应用程序 | Application.ReadWrite.OwnedBy | CustomSecAttributeProvisioning.ReadWrite.All、Synchronization.ReadWrite.All |
重要
在具有工作或学校帐户的委托方案中,登录用户必须是组的所有者或成员,或者分配有受支持的Microsoft Entra角色或具有支持的角色权限的自定义角色。 此操作支持以下最低特权角色。
- 应用程序管理员
- 云 应用程序管理员
- 混合标识管理员 - 配置Microsoft Entra云同步
HTTP 请求
PUT /servicePrincipals/{id}/synchronization/jobs/{jobId}/schema
PUT /applications/{id}/synchronization/templates/{templateId}/schema
请求标头
名称 | 类型 | 说明 |
---|---|---|
Authorization | string | 持有者 {token}。 必填。 详细了解 身份验证和授权。 |
请求正文
在请求正文中,提供 synchronizationSchema 对象以将现有架构替换为 。
响应
如果成功,则 204 No Content
返回响应代码。 它不会在响应正文中返回任何内容。
示例
示例 1:更新架构
请求
以下示例显示了一个请求。
注意: 为了提高可读性,将缩短此处所示的请求对象。 提供实际调用中的所有属性。
PUT https://graph.microsoft.com/beta/servicePrincipals/{id}/synchronization/jobs/{jobId}/schema
Content-type: application/json
{
"directories": [
{
"name": "Azure Active Directory",
"objects": [
{
"name": "User",
"attributes": [
{
"name": "userPrincipalName",
"type": "string"
}
]
},
]
},
{
"name": "Salesforce",
}
],
"synchronizationRules":[
{
"name": "USER_TO_USER",
"sourceDirectoryName": "Azure Active Directory",
"targetDirectoryName": "Salesforce",
"objectMappings": [
{
"sourceObjectName": "User",
"targetObjectName": "User",
"attributeMappings": [
{
"source": {},
"targetAttributeName": "userName"
}
]
}
]
}
]
}
响应
以下示例显示了相应的响应。
HTTP/1.1 204 No Content
示例 2:向目标系统架构添加属性“CustomAttribute”
请求
以下示例显示了一个请求。 它假定目标目录架构中不存在“CustomAttribute”特性。 如果确实存在,则更新 属性。
注意: 为了提高可读性,将缩短此处所示的请求对象。 提供实际调用中的所有属性。
PUT https://graph.microsoft.com/beta/servicePrincipals/{id}/synchronization/jobs/{jobId}/schema
Content-type: application/json
{
"directories":[
{
"id":"09760868-cafb-47ac-9031-0a3262300427",
"name":"customappsso",
"objects":[
{
"name":"User",
"attributes":[
{
"anchor":false,
"caseExact":false,
"defaultValue":null,
"flowNullValues":false,
"multivalued":false,
"mutability":"ReadWrite",
"name":"urn:ietf:params:scim:schemas:extension:CustomExtensionName:2.0:User:CustomAttribute",
"required":false,
"type":"String",
"apiExpressions":[],
"metadata":[],
"referencedObjects":[]
}
]
}
]
}
]
}
响应
以下示例显示了相应的响应。
HTTP/1.1 204 No Content
示例 3:向同步规则添加新的属性映射
请求
以下示例显示了一个请求。 synchornizationSchema 在 targetAttributeName 和 源 属性之间具有一对多关系。 如果架构没有“timezone”作为目标属性,则服务会为 extensionAttribute11 --> timezone 添加一个新映射。 如果应用程序在架构中将时区作为目标属性,则服务将引发错误,因为属性只能映射为目标一次。 此外,属性必须存在于架构中,然后才能将其添加到映射。
注意: 为了提高可读性,将缩短此处所示的请求对象。 提供实际调用中的所有属性。
PUT https://graph.microsoft.com/beta/servicePrincipals/{id}/synchronization/jobs/{jobId}/schema
Content-type: application/json
{
"@odata.type":"#microsoft.graph.synchronizationSchema",
"synchronizationRules":[
{
"defaultValue":"",
"exportMissingReferences":false,
"flowBehavior":"FlowWhenChanged",
"flowType":"Always",
"matchingPriority":0,
"source":{
"expression":"[extensionAttribute11]",
"name":"extensionAttribute11",
"parameters":[],
"type":"Attribute"
},
"targetAttributeName":"timezone"
}
]
}
响应
以下示例显示了相应的响应。
HTTP/1.1 204 No Content