创建 schemaExtension

命名空间:microsoft.graph

重要

Microsoft Graph /beta 版本下的 API 可能会发生更改。 不支持在生产应用程序中使用这些 API。 若要确定 API 是否在 v1.0 中可用,请使用 版本 选择器。

创建新的 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 设置为所有者。 因此,如果使用 Graph 浏览器新建一个架构扩展定义,则必须提供 owner 属性(以此为例)。 设置后,此属性为只读,且无法更改。
properties extensionSchemaProperty 集合 构成架构扩展定义的属性名称和类型的集合。
targetTypes String collection 此架构扩展定义适用的支持架构扩展的 Microsoft Graph 资源类型集。

响应

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

示例

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

请求

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

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

POST https://graph.microsoft.com/beta/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/beta/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/beta/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"
        }
    ]
}