更新 synchronizationSchema

命名空间:microsoft.graph

更新给定作业或模板的同步架构。 此方法将当前架构完全替换为请求中提供的架构。 若要更新模板的架构,请对应用程序对象进行调用。 必须是应用程序的所有者。

权限

为此 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/v1.0/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/v1.0/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:向同步规则添加新的属性映射

请求

以下示例显示了一个请求。 synchronizationSchema 在 targetAttributeName 属性之间具有一对多关系。 如果架构没有“timezone”作为目标属性,则服务会为 extensionAttribute11 --> timezone 添加一个新映射。 如果应用程序在架构中将时区作为目标属性,则服务将引发错误,因为属性只能映射为目标一次。 此外,属性必须存在于架构中,然后才能将其添加到映射。

注意: 为了提高可读性,将缩短此处所示的请求对象。 提供实际调用中的所有属性。

PUT https://graph.microsoft.com/v1.0/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