创建 schemaExtension

命名空间:microsoft.graph

创建新的 schemaExtension 定义及其关联的架构扩展属性来扩展 支持的资源类型

架构扩展允许将强类型自定义数据添加到资源。 创建架构扩展的应用是所有者应用。 根据扩展 的状态 ,所有者应用(仅所有者应用)可以更新或删除扩展。

请参阅如何定义描述培训课程的架构扩展的示例,通过架构扩展定义使用培训课程数据创建新组,并将培训课程数据添加到现有组

此 API 可用于以下国家级云部署

全局服务 美国政府 L4 美国政府 L5 (DOD) 由世纪互联运营的中国

权限

为此 API 选择标记为最低特权的权限。 只有在应用需要它时,才使用更高的特权权限。 有关委派权限和应用程序权限的详细信息,请参阅权限类型。 要了解有关这些权限的详细信息,请参阅 权限参考

权限类型 最低特权权限 更高特权权限
委派(工作或学校帐户) Application.ReadWrite.All 不可用。
委派(个人 Microsoft 帐户) 不支持。 不支持。
应用程序 Application.ReadWrite.All and Directory.ReadWrite.All 不可用。

注意

此外,对于委派的流程,登录用户必须是调用应用程序的所有者,或用于设置所有者属性的(所带应用程序)appId所有者。

HTTP 请求

POST /schemaExtensions

请求标头

名称 说明
Authorization 持有者 {token}。 必填。 详细了解 身份验证和授权
Content-Type application/json

请求正文

在请求正文中,提供 schemaExtension 对象的 JSON 表示形式。

下表显示创建架构扩展时所需的属性。

参数 类型 说明
说明 String 架构扩展的说明。
id String 架构扩展定义的唯一标识符。
你可以使用下面两种方法之一分配值:
  • 将其中一个已验证域的名称与架构扩展的名称连接在一起,以形成此格式 {domainName}_{schemaName} 的唯一字符串。 示例:contoso_mySchema。 注意:仅支持以下顶级域下已经过验证的域:.com.net.gov.edu.org
  • 提供架构名称,让 Microsoft Graph 使用该架构名称完成以下格式的 ID 分配:ext{8-random-alphanumeric-chars}_{schema-name}。 例如 extkvbmkofy_mySchema
此属性一旦创建,便无法更改。
owner String (可选)属于架构扩展所有者的应用程序的 appId。 默认情况下,则会将调用应用程序的 appId 设置为所有者。 但是,创建时可提供该属性,将所有者的 appId 设置为与调用应用程序不同的对象。 在所有情况下,在委派的流程中,已登录的用户必须成为被设置为架构扩展所有者的应用程序的所有者。 因此,如果使用 Graph 浏览器新建一个架构扩展定义,则必须提供所有者属性你所拥有的的 appId(以此为例)。 设置后,此属性为只读,且无法更改。
properties extensionSchemaProperty 集合 构成架构扩展定义的属性名称和类型的集合。
targetTypes String collection 此架构扩展定义适用的支持架构扩展的 Microsoft Graph 资源类型集。

响应

如果成功,此方法在响应正文中返回 201 Created 响应代码和 schemaExtension对象。

示例

示例 1:使用验证的域创建架构扩展

请求

这个示例演示了如何使用已验证的域名 graphlearn 和架构名称 courses 为架构扩展定义的 id 属性形成唯一的字符串。 唯一字符串基于此格式 {domainName}_{schemaName}。

POST https://graph.microsoft.com/v1.0/schemaExtensions
Content-type: application/json

{
    "id":"graphlearn_courses",
    "description": "Graph Learn training courses extensions",
    "targetTypes": [
        "Group"
    ],
    "properties": [
        {
            "name": "courseId",
            "type": "Integer"
        },
        {
            "name": "courseName",
            "type": "String"
        },
        {
            "name": "courseType",
            "type": "String"
        }
    ]
}

响应

以下示例显示了相应的响应。

注意:为了提高可读性,可能缩短了此处显示的响应对象。

HTTP/1.1 201 Created
Content-type: application/json

{
    "id": "graphlearn_courses",
    "description": "Graph Learn training courses extensions",
    "targetTypes": [
        "Group"
    ],
    "status": "InDevelopment",
    "owner": "24d3b144-21ae-4080-943f-7067b395b913",
    "properties": [
        {
            "name": "courseId",
            "type": "String"
        },
        {
            "name": "courseName",
            "type": "String"
        },
        {
            "name": "courseType",
            "type": "String"
        }
    ]
}

示例 2:仅使用名称创建架构扩展

请求

以下示例演示如何在请求的 id 属性中仅指定架构名称 courses,以及 schemaExtension 对象中其余属性的 JSON 表示形式。 Microsoft Graph 将在响应中分配并返回一个唯一的字符串值。

POST https://graph.microsoft.com/v1.0/schemaExtensions
Content-type: application/json

{
    "id":"courses",
    "description": "Graph Learn training courses extensions",
    "targetTypes": [
        "Group"
    ],
    "properties": [
        {
            "name": "courseId",
            "type": "Integer"
        },
        {
            "name": "courseName",
            "type": "String"
        },
        {
            "name": "courseType",
            "type": "String"
        }
    ]
}

响应

该响应包括一个基于请求中提供的架构名称的 id 属性中唯一的字符串,以及新创建的架构定义的其余部分。 响应中 ID 中的值基于格式 ext{8-random-alphanumeric-chars}_{schema-name}。

注意:为了提高可读性,可能缩短了此处显示的响应对象。

HTTP/1.1 201 Created
Content-type: application/json

{
    "id": "extk9eruy7c_courses",
    "description": "Graph Learn training courses extensions",
    "targetTypes": [
        "Group"
    ],
    "status": "InDevelopment",
    "owner": "24d3b144-21ae-4080-943f-7067b395b913",
    "properties": [
        {
            "name": "courseId",
            "type": "String"
        },
        {
            "name": "courseName",
            "type": "String"
        },
        {
            "name": "courseType",
            "type": "String"
        }
    ]
}

示例 3:设置所有者来创建架构扩展

请求

以下示例演示如何设置所有者来创建架构扩展。 在此方案中,应用程序的用户可能不是应用程序的所有者(例如,当你使用的是 Microsoft Graph 资源管理器)。 在这种情况下,应将 owner 属性设置为你拥有的应用程序的 appId ,否则你将无权创建架构扩展。 在请求中设置 owner 属性,以及 schemaExtension 对象中其他属性的 JSON 表示形式。

POST https://graph.microsoft.com/v1.0/schemaExtensions
Content-type: application/json

{
    "id":"courses",
    "description": "Graph Learn training courses extensions",
    "targetTypes": [
        "Group"
    ],
    "owner": "50897f70-a455-4adf-87bc-4cf17091d5ac",
    "properties": [
        {
            "name": "courseId",
            "type": "Integer"
        },
        {
            "name": "courseName",
            "type": "String"
        },
        {
            "name": "courseType",
            "type": "String"
        }
    ]
}

响应

该响应包括所有者设置为请求中提供的值。

注意:为了提高可读性,可能缩短了此处显示的响应对象。

HTTP/1.1 201 Created
Content-type: application/json

{
    "id": "extk9eruy7c_courses",
    "description": "Graph Learn training courses extensions",
    "targetTypes": [
        "Group"
    ],
    "status": "InDevelopment",
    "owner": "50897f70-a455-4adf-87bc-4cf17091d5ac",
    "properties": [
        {
            "name": "courseId",
            "type": "String"
        },
        {
            "name": "courseName",
            "type": "String"
        },
        {
            "name": "courseType",
            "type": "String"
        }
    ]
}