В этом руководстве описано, как использовать расширения схемы.
Представьте, что вы являетесь разработчиком в компании По управлению обучением под названием Bellows College , которая создает учебные курсы и материалы для бизнеса. Вы используете совместный опыт групп Microsoft 365 для предоставления содержимого курса и записи упражнений среди участников как для онлайн-курсов, так и для курсов под руководством инструктора. Вы хотите, чтобы группы Microsoft 365, используемые для учебных курсов, легко идентифицировались как учебные курсы, что позволит другим разработчикам обнаруживать ваши группы и создавать богатые возможности на основе ваших учебных курсов.
Для этого сценария в этой статье показано, как:
- Найдите доступные определения расширений схемы, которые можно использовать.
- зарегистрировать определение расширения схемы, ориентированное на группы для учебных курсов;
- Создайте новую группу с пользовательскими данными на основе определения расширения схемы, которое вы зарегистрировали.
- добавить, обновить или удалить пользовательские данные в существующей группе с помощью определения расширения схемы;
- Чтение группы и данных расширения.
- Удалите определение расширения схемы и данные расширения.
Примечание.
Помимо групп, поддерживаются и расширения схемы, которыми можно управлять для других типов ресурсов.
Предварительные условия
Чтобы воспроизвести действия, описанные в этой статье, вам потребуются следующие привилегии:
- Войдите в клиент API, например Graph Обозреватель.
- Предоставьте приложению делегированные разрешения Group.ReadWrite.All и Application.ReadWrite.All для вошедшего пользователя.
- Будьте владельцем приложения, которому вы назначаете право владения определением расширения схемы в этом руководстве. В этом руководстве приложение называется extensions-application и имеет appId
d1e6f196-fca3-48ad-8cd3-1a98e3bd46d2
.
Этап 1. Просмотр доступных расширений схемы
Во-первых, как разработчик может потребоваться, чтобы приложение повторно использует все существующие определения расширений схемы, если они подходят для целей. В следующем примере вы запрашиваете расширения схемы с именами (по идентификатору). bellowscollege_courses
Предположим, что в ответе показано, что в клиенте нет расширений схемы с именами bellowscollege_courses
.
Запрос
GET https://graph.microsoft.com/v1.0/schemaExtensions?$filter=id eq 'bellowscollege_courses'
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.SchemaExtensions.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Filter = "id eq 'bellowscollege_courses'";
});
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphschemaextensions "github.com/microsoftgraph/msgraph-sdk-go/schemaextensions"
//other-imports
)
requestFilter := "id eq 'bellowscollege_courses'"
requestParameters := &graphschemaextensions.SchemaExtensionsRequestBuilderGetQueryParameters{
Filter: &requestFilter,
}
configuration := &graphschemaextensions.SchemaExtensionsRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
schemaExtensions, err := graphClient.SchemaExtensions().Get(context.Background(), configuration)
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
SchemaExtensionCollectionResponse result = graphClient.schemaExtensions().get(requestConfiguration -> {
requestConfiguration.queryParameters.filter = "id eq 'bellowscollege_courses'";
});
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
const options = {
authProvider,
};
const client = Client.init(options);
let schemaExtensions = await client.api('/schemaExtensions')
.filter('id eq \'bellowscollege_courses\'')
.get();
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\SchemaExtensions\SchemaExtensionsRequestBuilderGetRequestConfiguration;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestConfiguration = new SchemaExtensionsRequestBuilderGetRequestConfiguration();
$queryParameters = SchemaExtensionsRequestBuilderGetRequestConfiguration::createQueryParameters();
$queryParameters->filter = "id eq 'bellowscollege_courses'";
$requestConfiguration->queryParameters = $queryParameters;
$result = $graphServiceClient->schemaExtensions()->get($requestConfiguration)->wait();
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.schema_extensions.schema_extensions_request_builder import SchemaExtensionsRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = SchemaExtensionsRequestBuilder.SchemaExtensionsRequestBuilderGetQueryParameters(
filter = "id eq 'bellowscollege_courses'",
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
result = await graph_client.schema_extensions.get(request_configuration = request_configuration)
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
Отклик
HTTP/1.1 200 OK
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#schemaExtensions",
"@microsoft.graph.tips": "Use $select to choose only the properties your app needs, as this can lead to performance improvements. For example: GET schemaExtensions?$select=description,owner",
"value": []
}
Вы также можете запросить идентификатор в качестве параметра пути следующим образом: GET https://graph.microsoft.com/v1.0/schemaExtensions/bellowscollege_courses
. Если нет расширений схемы, соответствующих идентификатору, ответом будет 404 Not Found
.
Этап 2. Регистрация определения расширения схемы
Вы хотите создать и зарегистрировать новое определение расширения для учебных курсов в ресурсе группы . Укажите следующие свойства:
id: обязательный. Укажите строку для этого свойства одним из двух способов:
Вариант 1. Объединение проверенного доменного имени тщеславия для клиента с именем расширения схемы. Например, если домен — bellowscollege.com
, а имя расширения схемы — courses
, то можно использовать идентификаторbellowscollege_courses
. Запрос завершается ошибкой, если вы используете доменное имя, которое не проверено в клиенте.
Вариант 2. Альтернативный способ — указать только имя схемы, например courses
, и позволить Microsoft Graph автоматически создать идентификатор для вас путем префикса предоставленного имени случайной буквенно-цифровой строкой.
Этот идентификатор становится именем свойства расширения схемы в группе.
description: необязательный.
targetTypes: обязательный. Укажите типы ресурсов, к которым можно применить расширение схемы. В этом примере тип ресурса — Group
. Вы можете добавить дополнительные типы ресурсов, обновив определение расширения схемы позже. После создания определения расширения схемы допускаются только аддитивные изменения.
properties: обязательный. Укажите настраиваемые свойства, составляющие схему. В этом примере укажите настраиваемые courseId
свойства , courseName
и courseType
и их типы. После создания определения расширения схемы допускаются только аддитивные изменения.
owner: Условный. Укажите приложение, которому принадлежит определение расширения схемы. Если вы запускаете этот пример из приложения, которое вам не назначено в качестве владельца, укажите appId приложения, которое вам назначено, в свойстве владельца .
Запрос
POST https://graph.microsoft.com/v1.0/schemaExtensions
Content-type: application/json
{
"id": "bellowscollege_courses",
"description": "Bellows College training courses extensions",
"targetTypes": [
"Group"
],
"owner": "d1e6f196-fca3-48ad-8cd3-1a98e3bd46d2",
"properties": [
{
"name": "courseId",
"type": "Integer"
},
{
"name": "courseName",
"type": "String"
},
{
"name": "courseType",
"type": "String"
}
]
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new SchemaExtension
{
Id = "bellowscollege_courses",
Description = "Bellows College training courses extensions",
TargetTypes = new List<string>
{
"Group",
},
Owner = "d1e6f196-fca3-48ad-8cd3-1a98e3bd46d2",
Properties = new List<ExtensionSchemaProperty>
{
new ExtensionSchemaProperty
{
Name = "courseId",
Type = "Integer",
},
new ExtensionSchemaProperty
{
Name = "courseName",
Type = "String",
},
new ExtensionSchemaProperty
{
Name = "courseType",
Type = "String",
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.SchemaExtensions.PostAsync(requestBody);
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models"
//other-imports
)
requestBody := graphmodels.NewSchemaExtension()
id := "bellowscollege_courses"
requestBody.SetId(&id)
description := "Bellows College training courses extensions"
requestBody.SetDescription(&description)
targetTypes := []string {
"Group",
}
requestBody.SetTargetTypes(targetTypes)
owner := "d1e6f196-fca3-48ad-8cd3-1a98e3bd46d2"
requestBody.SetOwner(&owner)
extensionSchemaProperty := graphmodels.NewExtensionSchemaProperty()
name := "courseId"
extensionSchemaProperty.SetName(&name)
type := "Integer"
extensionSchemaProperty.SetType(&type)
extensionSchemaProperty1 := graphmodels.NewExtensionSchemaProperty()
name := "courseName"
extensionSchemaProperty1.SetName(&name)
type := "String"
extensionSchemaProperty1.SetType(&type)
extensionSchemaProperty2 := graphmodels.NewExtensionSchemaProperty()
name := "courseType"
extensionSchemaProperty2.SetName(&name)
type := "String"
extensionSchemaProperty2.SetType(&type)
properties := []graphmodels.ExtensionSchemaPropertyable {
extensionSchemaProperty,
extensionSchemaProperty1,
extensionSchemaProperty2,
}
requestBody.SetProperties(properties)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
schemaExtensions, err := graphClient.SchemaExtensions().Post(context.Background(), requestBody, nil)
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
SchemaExtension schemaExtension = new SchemaExtension();
schemaExtension.setId("bellowscollege_courses");
schemaExtension.setDescription("Bellows College training courses extensions");
LinkedList<String> targetTypes = new LinkedList<String>();
targetTypes.add("Group");
schemaExtension.setTargetTypes(targetTypes);
schemaExtension.setOwner("d1e6f196-fca3-48ad-8cd3-1a98e3bd46d2");
LinkedList<ExtensionSchemaProperty> properties = new LinkedList<ExtensionSchemaProperty>();
ExtensionSchemaProperty extensionSchemaProperty = new ExtensionSchemaProperty();
extensionSchemaProperty.setName("courseId");
extensionSchemaProperty.setType("Integer");
properties.add(extensionSchemaProperty);
ExtensionSchemaProperty extensionSchemaProperty1 = new ExtensionSchemaProperty();
extensionSchemaProperty1.setName("courseName");
extensionSchemaProperty1.setType("String");
properties.add(extensionSchemaProperty1);
ExtensionSchemaProperty extensionSchemaProperty2 = new ExtensionSchemaProperty();
extensionSchemaProperty2.setName("courseType");
extensionSchemaProperty2.setType("String");
properties.add(extensionSchemaProperty2);
schemaExtension.setProperties(properties);
SchemaExtension result = graphClient.schemaExtensions().post(schemaExtension);
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
const options = {
authProvider,
};
const client = Client.init(options);
const schemaExtension = {
id: 'bellowscollege_courses',
description: 'Bellows College training courses extensions',
targetTypes: [
'Group'
],
owner: 'd1e6f196-fca3-48ad-8cd3-1a98e3bd46d2',
properties: [
{
name: 'courseId',
type: 'Integer'
},
{
name: 'courseName',
type: 'String'
},
{
name: 'courseType',
type: 'String'
}
]
};
await client.api('/schemaExtensions')
.post(schemaExtension);
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Models\SchemaExtension;
use Microsoft\Graph\Generated\Models\ExtensionSchemaProperty;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new SchemaExtension();
$requestBody->setId('bellowscollege_courses');
$requestBody->setDescription('Bellows College training courses extensions');
$requestBody->setTargetTypes(['Group', ]);
$requestBody->setOwner('d1e6f196-fca3-48ad-8cd3-1a98e3bd46d2');
$propertiesExtensionSchemaProperty1 = new ExtensionSchemaProperty();
$propertiesExtensionSchemaProperty1->setName('courseId');
$propertiesExtensionSchemaProperty1->setType('Integer');
$propertiesArray []= $propertiesExtensionSchemaProperty1;
$propertiesExtensionSchemaProperty2 = new ExtensionSchemaProperty();
$propertiesExtensionSchemaProperty2->setName('courseName');
$propertiesExtensionSchemaProperty2->setType('String');
$propertiesArray []= $propertiesExtensionSchemaProperty2;
$propertiesExtensionSchemaProperty3 = new ExtensionSchemaProperty();
$propertiesExtensionSchemaProperty3->setName('courseType');
$propertiesExtensionSchemaProperty3->setType('String');
$propertiesArray []= $propertiesExtensionSchemaProperty3;
$requestBody->setProperties($propertiesArray);
$result = $graphServiceClient->schemaExtensions()->post($requestBody)->wait();
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
Import-Module Microsoft.Graph.SchemaExtensions
$params = @{
id = "bellowscollege_courses"
description = "Bellows College training courses extensions"
targetTypes = @(
"Group"
)
owner = "d1e6f196-fca3-48ad-8cd3-1a98e3bd46d2"
properties = @(
@{
name = "courseId"
type = "Integer"
}
@{
name = "courseName"
type = "String"
}
@{
name = "courseType"
type = "String"
}
)
}
New-MgSchemaExtension -BodyParameter $params
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.schema_extension import SchemaExtension
from msgraph.generated.models.extension_schema_property import ExtensionSchemaProperty
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = SchemaExtension(
id = "bellowscollege_courses",
description = "Bellows College training courses extensions",
target_types = [
"Group",
],
owner = "d1e6f196-fca3-48ad-8cd3-1a98e3bd46d2",
properties = [
ExtensionSchemaProperty(
name = "courseId",
type = "Integer",
),
ExtensionSchemaProperty(
name = "courseName",
type = "String",
),
ExtensionSchemaProperty(
name = "courseType",
type = "String",
),
],
)
result = await graph_client.schema_extensions.post(request_body)
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
Отклик
Ниже показан пример отклика.
В ответе начальное состояние расширения схемы по умолчанию — InDevelopment
. Во время разработки расширения его можно оставить в этом состоянии, в течение которого только созданное приложение может обновить его с помощью добавок или удалить его. Когда вы будете готовы предоставить общий доступ к расширению для использования другими приложениями, установите для параметра СостояниеДоступно.
HTTP/1.1 201 Created
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#schemaExtensions/$entity",
"id": "bellowscollege_courses",
"description": "Bellows College training courses extensions",
"targetTypes": [
"Group"
],
"status": "InDevelopment",
"owner": "d1e6f196-fca3-48ad-8cd3-1a98e3bd46d2",
"properties": [
{
"name": "courseId",
"type": "Integer"
},
{
"name": "courseName",
"type": "String"
},
{
"name": "courseType",
"type": "String"
}
]
}
Этап 3. Расширение группы с помощью пользовательских данных
Вы можете расширить группу пользовательскими данными во время создания группы или путем обновления существующей группы.
Вариант 1. Создание группы с расширенными данными
Следующий запрос создает новую группу bellowscollege_courses
и использует расширение схемы для расширения группы пользовательскими данными. Если у вас есть группа, ее можно также расширить с помощью пользовательских данных, обновив группу данными расширения.
Ответ не зеркало расширения данных. Необходимо явно $select
использовать расширение по имени с помощью GET /group/{id}
операции.
Запрос
POST https://graph.microsoft.com/v1.0/groups
Content-type: application/json
{
"displayName": "New Managers March 2024",
"description": "New Managers training course for March 2024",
"groupTypes": [
"Unified"
],
"mailEnabled": true,
"mailNickname": "newMan202403",
"securityEnabled": false,
"bellowscollege_courses": {
"courseId": "123",
"courseName": "New Managers",
"courseType": "Online"
}
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
using Microsoft.Kiota.Abstractions.Serialization;
var requestBody = new Group
{
DisplayName = "New Managers March 2024",
Description = "New Managers training course for March 2024",
GroupTypes = new List<string>
{
"Unified",
},
MailEnabled = true,
MailNickname = "newMan202403",
SecurityEnabled = false,
AdditionalData = new Dictionary<string, object>
{
{
"bellowscollege_courses" , new UntypedObject(new Dictionary<string, UntypedNode>
{
{
"courseId", new UntypedString("123")
},
{
"courseName", new UntypedString("New Managers")
},
{
"courseType", new UntypedString("Online")
},
})
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Groups.PostAsync(requestBody);
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models"
//other-imports
)
requestBody := graphmodels.NewGroup()
displayName := "New Managers March 2024"
requestBody.SetDisplayName(&displayName)
description := "New Managers training course for March 2024"
requestBody.SetDescription(&description)
groupTypes := []string {
"Unified",
}
requestBody.SetGroupTypes(groupTypes)
mailEnabled := true
requestBody.SetMailEnabled(&mailEnabled)
mailNickname := "newMan202403"
requestBody.SetMailNickname(&mailNickname)
securityEnabled := false
requestBody.SetSecurityEnabled(&securityEnabled)
additionalData := map[string]interface{}{
bellowscollege_courses := graph.New()
courseId := "123"
bellowscollege_courses.SetCourseId(&courseId)
courseName := "New Managers"
bellowscollege_courses.SetCourseName(&courseName)
courseType := "Online"
bellowscollege_courses.SetCourseType(&courseType)
requestBody.SetBellowscollege_courses(bellowscollege_courses)
}
requestBody.SetAdditionalData(additionalData)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
groups, err := graphClient.Groups().Post(context.Background(), requestBody, nil)
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
Group group = new Group();
group.setDisplayName("New Managers March 2024");
group.setDescription("New Managers training course for March 2024");
LinkedList<String> groupTypes = new LinkedList<String>();
groupTypes.add("Unified");
group.setGroupTypes(groupTypes);
group.setMailEnabled(true);
group.setMailNickname("newMan202403");
group.setSecurityEnabled(false);
HashMap<String, Object> additionalData = new HashMap<String, Object>();
bellowscollegeCourses = new ();
bellowscollegeCourses.setCourseId("123");
bellowscollegeCourses.setCourseName("New Managers");
bellowscollegeCourses.setCourseType("Online");
additionalData.put("bellowscollege_courses", bellowscollegeCourses);
group.setAdditionalData(additionalData);
Group result = graphClient.groups().post(group);
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
const options = {
authProvider,
};
const client = Client.init(options);
const group = {
displayName: 'New Managers March 2024',
description: 'New Managers training course for March 2024',
groupTypes: [
'Unified'
],
mailEnabled: true,
mailNickname: 'newMan202403',
securityEnabled: false,
bellowscollege_courses: {
courseId: '123',
courseName: 'New Managers',
courseType: 'Online'
}
};
await client.api('/groups')
.post(group);
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Models\Group;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new Group();
$requestBody->setDisplayName('New Managers March 2024');
$requestBody->setDescription('New Managers training course for March 2024');
$requestBody->setGroupTypes(['Unified', ]);
$requestBody->setMailEnabled(true);
$requestBody->setMailNickname('newMan202403');
$requestBody->setSecurityEnabled(false);
$additionalData = [
'bellowscollege_courses' => [
'courseId' => '123',
'courseName' => 'New Managers',
'courseType' => 'Online',
],
];
$requestBody->setAdditionalData($additionalData);
$result = $graphServiceClient->groups()->post($requestBody)->wait();
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
Import-Module Microsoft.Graph.Groups
$params = @{
displayName = "New Managers March 2024"
description = "New Managers training course for March 2024"
groupTypes = @(
"Unified"
)
mailEnabled = $true
mailNickname = "newMan202403"
securityEnabled = $false
bellowscollege_courses = @{
courseId = "123"
courseName = "New Managers"
courseType = "Online"
}
}
New-MgGroup -BodyParameter $params
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.group import Group
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = Group(
display_name = "New Managers March 2024",
description = "New Managers training course for March 2024",
group_types = [
"Unified",
],
mail_enabled = True,
mail_nickname = "newMan202403",
security_enabled = False,
additional_data = {
"bellowscollege_courses" : {
"course_id" : "123",
"course_name" : "New Managers",
"course_type" : "Online",
},
}
)
result = await graph_client.groups.post(request_body)
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
Отклик
Ниже показан пример отклика. Ответ не включает новое расширение. Необходимо явно $select
использовать расширение по имени с помощью GET /group/{id}
операции.
Примечание. Объект отклика, показанный здесь, может быть сокращен для удобочитаемости.
HTTP/1.1 201 Created
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#groups/$entity",
"id": "8fb45944-4085-449f-b95d-f7dd74a1b081",
"createdDateTime": "2024-01-24T09:09:03Z",
"description": "New Managers training course for March 2024",
"displayName": "New Managers March 2024",
"groupTypes": [
"Unified"
],
"mail": "[email protected]",
"mailEnabled": true,
"mailNickname": "newMan202403"
}
Вариант 2. Обновление существующей группы расширенными данными
Если у вас есть группа, вы также можете расширить ее пользовательскими данными, как показано ниже. Запрос возвращает 204 No Content
ответ.
PATCH https://graph.microsoft.com/v1.0/groups/dfc8016f-db97-4c47-a582-49cb8f849355
Content-type: application/json
{
"bellowscollege_courses": {
"courseId": "123",
"courseName": "New Managers",
"courseType": "Online"
}
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
using Microsoft.Kiota.Abstractions.Serialization;
var requestBody = new Group
{
AdditionalData = new Dictionary<string, object>
{
{
"bellowscollege_courses" , new UntypedObject(new Dictionary<string, UntypedNode>
{
{
"courseId", new UntypedString("123")
},
{
"courseName", new UntypedString("New Managers")
},
{
"courseType", new UntypedString("Online")
},
})
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Groups["{group-id}"].PatchAsync(requestBody);
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models"
//other-imports
)
requestBody := graphmodels.NewGroup()
additionalData := map[string]interface{}{
bellowscollege_courses := graph.New()
courseId := "123"
bellowscollege_courses.SetCourseId(&courseId)
courseName := "New Managers"
bellowscollege_courses.SetCourseName(&courseName)
courseType := "Online"
bellowscollege_courses.SetCourseType(&courseType)
requestBody.SetBellowscollege_courses(bellowscollege_courses)
}
requestBody.SetAdditionalData(additionalData)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
groups, err := graphClient.Groups().ByGroupId("group-id").Patch(context.Background(), requestBody, nil)
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
Group group = new Group();
HashMap<String, Object> additionalData = new HashMap<String, Object>();
bellowscollegeCourses = new ();
bellowscollegeCourses.setCourseId("123");
bellowscollegeCourses.setCourseName("New Managers");
bellowscollegeCourses.setCourseType("Online");
additionalData.put("bellowscollege_courses", bellowscollegeCourses);
group.setAdditionalData(additionalData);
Group result = graphClient.groups().byGroupId("{group-id}").patch(group);
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
const options = {
authProvider,
};
const client = Client.init(options);
const group = {
bellowscollege_courses: {
courseId: '123',
courseName: 'New Managers',
courseType: 'Online'
}
};
await client.api('/groups/dfc8016f-db97-4c47-a582-49cb8f849355')
.update(group);
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Models\Group;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new Group();
$additionalData = [
'bellowscollege_courses' => [
'courseId' => '123',
'courseName' => 'New Managers',
'courseType' => 'Online',
],
];
$requestBody->setAdditionalData($additionalData);
$result = $graphServiceClient->groups()->byGroupId('group-id')->patch($requestBody)->wait();
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
Import-Module Microsoft.Graph.Groups
$params = @{
bellowscollege_courses = @{
courseId = "123"
courseName = "New Managers"
courseType = "Online"
}
}
Update-MgGroup -GroupId $groupId -BodyParameter $params
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.group import Group
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = Group(
additional_data = {
"bellowscollege_courses" : {
"course_id" : "123",
"course_name" : "New Managers",
"course_type" : "Online",
},
}
)
result = await graph_client.groups.by_group_id('group-id').patch(request_body)
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
Этап 4. Обновление пользовательских данных в группе
Следующий запрос обновляет свойство courseType в bellowscollege_courses
расширении для группы до Hybrid
. Хотя требуется обновить только свойство courseType , необходимо также включить другие свойства и их существующие значения в текст запроса. В противном случае Microsoft Graph задает для них значение null
и удаляет их данные.
Следующий запрос возвращает 204 No Content
ответ.
PATCH https://graph.microsoft.com/v1.0/groups/dfc8016f-db97-4c47-a582-49cb8f849355
Content-type: application/json
{
"bellowscollege_courses": {
"courseId": "123",
"courseName": "New Managers",
"courseType": "Hybrid"
}
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
using Microsoft.Kiota.Abstractions.Serialization;
var requestBody = new Group
{
AdditionalData = new Dictionary<string, object>
{
{
"bellowscollege_courses" , new UntypedObject(new Dictionary<string, UntypedNode>
{
{
"courseId", new UntypedString("123")
},
{
"courseName", new UntypedString("New Managers")
},
{
"courseType", new UntypedString("Hybrid")
},
})
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Groups["{group-id}"].PatchAsync(requestBody);
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models"
//other-imports
)
requestBody := graphmodels.NewGroup()
additionalData := map[string]interface{}{
bellowscollege_courses := graph.New()
courseId := "123"
bellowscollege_courses.SetCourseId(&courseId)
courseName := "New Managers"
bellowscollege_courses.SetCourseName(&courseName)
courseType := "Hybrid"
bellowscollege_courses.SetCourseType(&courseType)
requestBody.SetBellowscollege_courses(bellowscollege_courses)
}
requestBody.SetAdditionalData(additionalData)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
groups, err := graphClient.Groups().ByGroupId("group-id").Patch(context.Background(), requestBody, nil)
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
Group group = new Group();
HashMap<String, Object> additionalData = new HashMap<String, Object>();
bellowscollegeCourses = new ();
bellowscollegeCourses.setCourseId("123");
bellowscollegeCourses.setCourseName("New Managers");
bellowscollegeCourses.setCourseType("Hybrid");
additionalData.put("bellowscollege_courses", bellowscollegeCourses);
group.setAdditionalData(additionalData);
Group result = graphClient.groups().byGroupId("{group-id}").patch(group);
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
const options = {
authProvider,
};
const client = Client.init(options);
const group = {
bellowscollege_courses: {
courseId: '123',
courseName: 'New Managers',
courseType: 'Hybrid'
}
};
await client.api('/groups/dfc8016f-db97-4c47-a582-49cb8f849355')
.update(group);
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Models\Group;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new Group();
$additionalData = [
'bellowscollege_courses' => [
'courseId' => '123',
'courseName' => 'New Managers',
'courseType' => 'Hybrid',
],
];
$requestBody->setAdditionalData($additionalData);
$result = $graphServiceClient->groups()->byGroupId('group-id')->patch($requestBody)->wait();
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
Import-Module Microsoft.Graph.Groups
$params = @{
bellowscollege_courses = @{
courseId = "123"
courseName = "New Managers"
courseType = "Hybrid"
}
}
Update-MgGroup -GroupId $groupId -BodyParameter $params
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.group import Group
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = Group(
additional_data = {
"bellowscollege_courses" : {
"course_id" : "123",
"course_name" : "New Managers",
"course_type" : "Hybrid",
},
}
)
result = await graph_client.groups.by_group_id('group-id').patch(request_body)
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
Этап 5. Получение группы и ее данных расширения
Чтобы получить пользовательские данные в группе, используйте $select
для включения расширения по имени.
Помимо фильтрации по идентификатору расширения схемы, можно также выполнить фильтрацию по значениям свойств расширения. В следующем примере выполняется поиск группы с bellowscollege_courses
расширением со значением courseId
свойства, соответствующим 123
, и получает данные расширения и свойства displayName, id и description группы.
Запрос
GET https://graph.microsoft.com/v1.0/groups?$filter=bellowscollege_courses/courseId eq '123'&$select=displayName,id,description,bellowscollege_courses
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Groups.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Filter = "bellowscollege_courses/courseId eq '123'";
requestConfiguration.QueryParameters.Select = new string []{ "displayName","id","description","bellowscollege_courses" };
});
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphgroups "github.com/microsoftgraph/msgraph-sdk-go/groups"
//other-imports
)
requestFilter := "bellowscollege_courses/courseId eq '123'"
requestParameters := &graphgroups.GroupsRequestBuilderGetQueryParameters{
Filter: &requestFilter,
Select: [] string {"displayName","id","description","bellowscollege_courses"},
}
configuration := &graphgroups.GroupsRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
groups, err := graphClient.Groups().Get(context.Background(), configuration)
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
GroupCollectionResponse result = graphClient.groups().get(requestConfiguration -> {
requestConfiguration.queryParameters.filter = "bellowscollege_courses/courseId eq '123'";
requestConfiguration.queryParameters.select = new String []{"displayName", "id", "description", "bellowscollege_courses"};
});
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
const options = {
authProvider,
};
const client = Client.init(options);
let groups = await client.api('/groups')
.filter('bellowscollege_courses/courseId eq \'123\'')
.select('displayName,id,description,bellowscollege_courses')
.get();
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Groups\GroupsRequestBuilderGetRequestConfiguration;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestConfiguration = new GroupsRequestBuilderGetRequestConfiguration();
$queryParameters = GroupsRequestBuilderGetRequestConfiguration::createQueryParameters();
$queryParameters->filter = "bellowscollege_courses/courseId eq '123'";
$queryParameters->select = ["displayName","id","description","bellowscollege_courses"];
$requestConfiguration->queryParameters = $queryParameters;
$result = $graphServiceClient->groups()->get($requestConfiguration)->wait();
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.groups.groups_request_builder import GroupsRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = GroupsRequestBuilder.GroupsRequestBuilderGetQueryParameters(
filter = "bellowscollege_courses/courseId eq '123'",
select = ["displayName","id","description","bellowscollege_courses"],
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
result = await graph_client.groups.get(request_configuration = request_configuration)
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
Отклик
HTTP/1.1 200 OK
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#groups(displayName,id,description,bellowscollege_courses)",
"value": [
{
"displayName": "New Managers March 2024",
"id": "8fb45944-4085-449f-b95d-f7dd74a1b081",
"description": "New Managers training course for March 2024",
"bellowscollege_courses": {
"@odata.type": "#microsoft.graph.ComplexExtensionValue",
"courseType": "Hybrid",
"courseName": "New Managers",
"courseId": 123
}
}
]
}
Шаг 6. Удаление данных расширения и определения расширения схемы
Вы можете удалить определение расширения схемы, если оно больше не требуется. Если к экземплярам ресурсов применено свойство расширения, удаление определения расширения схемы не приводит к удалению данных расширения в экземплярах ресурсов. Вместо этого данные расширения доступны, но больше не доступны. Чтобы удалить данные расширения схемы, можно повторно создать определение расширения схемы с той же конфигурацией, если вы использовали проверенный домен для идентификатора расширения схемы.
Следующий запрос удаляет bellowscollege_courses
свойство расширения схемы и связанные с ним данные из группы. Запрос возвращает 204 No Content
ответ.
PATCH https://graph.microsoft.com/v1.0/groups/8fb45944-4085-449f-b95d-f7dd74a1b081
{
"bellowscollege_courses": null
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new Group
{
AdditionalData = new Dictionary<string, object>
{
{
"bellowscollege_courses" , null
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Groups["{group-id}"].PatchAsync(requestBody);
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models"
//other-imports
)
requestBody := graphmodels.NewGroup()
additionalData := map[string]interface{}{
bellowscollege_courses := null
requestBody.SetBellowscollege_courses(&bellowscollege_courses)
}
requestBody.SetAdditionalData(additionalData)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
groups, err := graphClient.Groups().ByGroupId("group-id").Patch(context.Background(), requestBody, nil)
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
Group group = new Group();
HashMap<String, Object> additionalData = new HashMap<String, Object>();
additionalData.put("bellowscollege_courses", null);
group.setAdditionalData(additionalData);
Group result = graphClient.groups().byGroupId("{group-id}").patch(group);
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
const options = {
authProvider,
};
const client = Client.init(options);
const group = {
bellowscollege_courses: null
};
await client.api('/groups/8fb45944-4085-449f-b95d-f7dd74a1b081')
.update(group);
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Models\Group;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new Group();
$additionalData = [
'bellowscollege_courses' => null,
];
$requestBody->setAdditionalData($additionalData);
$result = $graphServiceClient->groups()->byGroupId('group-id')->patch($requestBody)->wait();
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.group import Group
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = Group(
additional_data = {
"bellowscollege_courses" : None,
}
)
result = await graph_client.groups.by_group_id('group-id').patch(request_body)
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
Следующий запрос удаляет bellowscollege_courses
определение расширения схемы. Запрос возвращает 204 No Content
ответ.
DELETE https://graph.microsoft.com/v1.0/schemaExtensions/bellowscollege_courses
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
await graphClient.SchemaExtensions["{schemaExtension-id}"].DeleteAsync();
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
//other-imports
)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
graphClient.SchemaExtensions().BySchemaExtensionId("schemaExtension-id").Delete(context.Background(), nil)
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
graphClient.schemaExtensions().bySchemaExtensionId("{schemaExtension-id}").delete();
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
<?php
use Microsoft\Graph\GraphServiceClient;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$graphServiceClient->schemaExtensions()->bySchemaExtensionId('schemaExtension-id')->delete()->wait();
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
await graph_client.schema_extensions.by_schema_extension_id('schemaExtension-id').delete()
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
Связанные материалы