创建 schemaExtension

命名空间:microsoft.graph

创建一个新的 schemaExtension 定义以扩展支持资源类型

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

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

权限

要调用此 API,需要以下权限之一。要了解详细信息,包括如何选择权限的信息,请参阅权限

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

备注

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

HTTP 请求

POST /schemaExtensions

请求标头

名称 说明
Authorization Bearer {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
Content-length: 420

{
    "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"
        }
    ]
}

另请参阅