Создание schemaExtension

Пространство имен: microsoft.graph

Создайте новое определение schemaExtension и связанное с ним свойство расширения схемы, чтобы расширить вспомогательный тип ресурса.

Расширения схемы позволяют добавлять строго типизированные пользовательские данные в ресурс. Приложение, создающее расширение схемы, является приложением-владельцем. В зависимости от состояния расширения приложение-владелец и только приложение-владелец могут обновлять или удалять расширение.

Ознакомьтесь с примерами того, как определить расширение схемы, описывающее учебный курс, использовать определение расширения схемы для создания группы с данными учебного курса и добавить данные учебного курса в существующую группу.

Этот API доступен в следующих национальных облачных развертываниях.

Глобальная служба Правительство США L4 Правительство США L5 (DOD) Китай управляется 21Vianet

Разрешения

Для вызова этого API требуется одно из следующих разрешений. Дополнительные сведения, включая сведения о том, как выбрать разрешения, см. в статье Разрешения.

Тип разрешения Разрешения (в порядке повышения привилегий)
Делегированные (рабочая или учебная учетная запись) Application.ReadWrite.All
Делегированные (личная учетная запись Майкрософт) Не поддерживается.
Приложение Application.ReadWrite.All и Directory.ReadWrite.All

Примечание.

Кроме того, для делегированного потока пользователь, вошедший в систему, должен быть владельцем вызывающего приложения ИЛИ владельцем (приложения с) appId, используемого для установки свойства владельца.

HTTP-запрос

POST /schemaExtensions

Заголовки запросов

Имя Описание
Авторизация Bearer {token}. Обязательно. Дополнительные сведения о проверке подлинности и авторизации.
Content-Type application/json

Тело запроса

В теле запроса должно быть представление объекта schemaExtension в формате JSON.

В приведенной ниже таблице показаны свойства, которые обязательно указывать при создании расширения схемы.

Параметр Тип Описание
description String Описание расширения схемы.
id String Уникальный идентификатор для определения расширения схемы.
Значение можно присвоить одним из двух способов:
  • Сцепить имя одного из проверенных доменов с именем расширения схемы, чтобы сформировать уникальную строку в этом формате, {domainName}_{schemaName}. Пример: contoso_mySchema. ПРИМЕЧАНИЕ. Поддерживаются только проверенные домены в следующих доменах верхнего уровня: .com,.net, .gov, .edu или .org.
  • Укажите имя схемы и позвольте Microsoft Graph использовать это имя схемы для завершения назначения идентификатора в следующем формате: ext{8-random-alphanumeric-chars}_{schema-name}. Примером может быть extkvbmkofy_mySchema.
После создания это свойство невозможно изменить.
owner String (Необязательный параметр) Идентификатор appId приложения, которое является владельцем расширения схемы. По умолчанию владельцем становится appId вызывающего приложения. Однако это свойство можно указать при создании, чтобы задать в качестве владельца appId другого приложения (не вызывающего). Во всех случаях в делегированном потоке вошедший в систему пользователь должен быть владельцем приложения, которое задается в качестве владельца расширения схемы. Таким образом, например, при создании определения расширения схемы с помощью песочницы Graph вам потребуется указать свойство владельца. После задания свойства оно будет доступно только для чтения, и вам не удастся изменить его.
properties Коллекция extensionSchemaProperty Коллекция типов и имен свойств, составляющих определение расширения схемы.
targetTypes Коллекция String Набор типов ресурсов Microsoft Graph, поддерживающих расширения схемы, к которым может быть применимо данное определение расширения схемы.

Отклик

При успешном выполнении этот метод возвращает код отклика 201 Created и объект schemaExtension в теле отклика.

Пример

Пример 1. Создание расширения схемы с помощью проверенного домена

Запрос

В этом примере мы создаем уникальную строку со свойством id для определения расширения схемы, используя проверенное доменное имя (graphlearn) и имя схемы (courses). Уникальная строка основана на этом формате: {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. Создание расширения схемы с помощью одного имени

Запрос

В следующем примере показано указание только имени схемы , courses, в свойстве id в запросе вместе с представлением JSON остальных свойств объекта schemaExtension . 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, созданную на основе имени схемы, предоставленном в запросе, и прочее содержимое созданного определения схемы. Значение в идентификаторе в ответе основано на формате 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. Создание расширения схемы путем задания владельца

Запрос

В следующем примере показано, как создать расширение схемы, задав свойство owner. В этом случае пользователь приложения может и быть владельцем приложения (например, при использовании песочницы Microsoft Graph). В этом случае необходимо задать appId приложения, которым вы владеете, в качестве значения свойства owner, иначе у вас не будет прав на создание расширения схемы. Задайте свойство 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"
        }
    ]
}

Отклик

Отклик содержит свойство owner, которому присвоено значение, указанное в запросе.

Примечание. Объект отклика, показанный здесь, может быть сокращен для удобочитаемости.

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