As extensões de esquema permitem que você adicione dados personalizados fortemente tipados a um recurso. O aplicativo que cria uma extensão de esquema é o aplicativo proprietário. Dependendo do estado da extensão, o aplicativo proprietário, e apenas o aplicativo proprietário, poderá atualizar ou excluir a extensão.
Uma das seguintes permissões é obrigatória para chamar esta API. Para saber mais, incluindo como escolher permissões, confira Permissões.
Tipo de permissão
Permissões (da com menos para a com mais privilégios)
Delegado (conta corporativa ou de estudante)
Application.ReadWrite.All
Delegado (conta pessoal da Microsoft)
Sem suporte.
Application
Application.ReadWrite.All e Directory.ReadWrite.All
Observação
Além disso, para o fluxo delegado, o usuário conectado deve ser o proprietário do aplicativo de chamada OU o proprietário do (aplicativo com o) appId usado para definir a propriedade do proprietário.
Solicitação HTTP
POST /schemaExtensions
Cabeçalhos de solicitação
Nome
Descrição
Autorização
{token} de portador. Obrigatório.
Content-Type
application/json
Corpo da solicitação
No corpo da solicitação, forneça uma representação JSON de um objeto schemaExtension.
A tabela a seguir mostra as propriedades que são necessárias ao criar uma extensão de esquema.
Parâmetro
Tipo
Descrição
description
String
Descrição da extensão de esquema.
id
String
O identificador exclusivo da definição de extensão de esquema. Você pode atribuir um valor em uma destas duas maneiras:
Concatenar o nome de um de seus domínios verificados com um nome da extensão do esquema para formar uma cadeia de caracteres exclusiva neste formato, {domainName}_{schemaName}. Como exemplo, contoso_mySchema. OBSERVAÇÃO: Apenas domínios verificados sob os seguintes domínios de nível superior têm suporte: .com,.net, .gov, .edu ou .org.
Forneça um nome de esquema e permita que o Microsoft Graph use esse nome de esquema para completar a atribuição de id neste formato: ext{8-caracteres-alfanuméricos-aleatórios}_{nome-do-esquema}. Um exemplo seria extkvbmkofy_mySchema.
Esta propriedade não pode ser alterada após a criação.
owner
String
(Opcional) O appId do aplicativo que é o proprietário da extensão do esquema. Por padrão, a appId dos aplicativos de chamada será definida como proprietário. No entanto, a propriedade pode ser fornecida na criação, para definir a appId do proprietário como algo diferente do aplicativo de chamada. Em todos os casos, no fluxo delegado, o usuário conectado deve ser o proprietário do aplicativo definido como o proprietário da extensão do esquema. Assim, por exemplo, se você criar uma nova definição da extensão de esquema usando o Graph Explorer, você deverá fornecer a propriedade do proprietário, para uma appId que você possui. Uma vez definida, essa propriedade é somente leitura e não pode ser alterada.
A coleção de tipos e nomes de propriedades que compõem a definição da extensão de esquema.
targetTypes
Coleção de cadeias de caracteres
O conjunto de tipos de recursos do Microsoft Graph (com suporte a extensões do esquema) ao qual esta extensão de esquema pode ser aplicada.
Resposta
Se bem-sucedido, este método retorna o código de resposta 201 Created e o objeto schemaExtension no corpo da resposta.
Exemplo
Exemplo 1: Criar uma extensão de esquema usando um domínio verificado
Solicitação
O primeiro exemplo mostra o uso de um nome de domínio verificado, graphlearn e um nome de esquema, courses, para formar uma cadeia de caracteres exclusiva para a propriedade id da definição de extensão do esquema. A cadeia de caracteres exclusiva se baseia neste formato, {domainName}_{schemaName}.
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var schemaExtension = new SchemaExtension
{
Id = "graphlearn_courses",
Description = "Graph Learn training courses extensions",
TargetTypes = new List<String>()
{
"Group"
},
Properties = new List<ExtensionSchemaProperty>()
{
new ExtensionSchemaProperty
{
Name = "courseId",
Type = "Integer"
},
new ExtensionSchemaProperty
{
Name = "courseName",
Type = "String"
},
new ExtensionSchemaProperty
{
Name = "courseType",
Type = "String"
}
}
};
await graphClient.SchemaExtensions
.Request()
.AddAsync(schemaExtension);
Exemplo 2: Criar uma extensão de esquema usando apenas um nome
Solicitação
O exemplo a seguir mostra a especificação de apenas um nome de esquema, courses, na propriedade id na solicitação, junto com a representação JSON do resto das propriedades no objeto schemaExtension. O Microsoft Graph atribuirá e retornará um valor exclusivo de cadeia de caracteres na resposta.
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var schemaExtension = new SchemaExtension
{
Id = "courses",
Description = "Graph Learn training courses extensions",
TargetTypes = new List<String>()
{
"Group"
},
Properties = new List<ExtensionSchemaProperty>()
{
new ExtensionSchemaProperty
{
Name = "courseId",
Type = "Integer"
},
new ExtensionSchemaProperty
{
Name = "courseName",
Type = "String"
},
new ExtensionSchemaProperty
{
Name = "courseType",
Type = "String"
}
}
};
await graphClient.SchemaExtensions
.Request()
.AddAsync(schemaExtension);
A resposta inclui uma cadeia de caracteres exclusiva na propriedade id com base no nome do esquema fornecido na solicitação, junto com o resto da definição de esquema recém-criada. O valor em id na resposta se baseia no formato, ext{8-random-alphanumeric-chars}_{schema-name}.
Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.
Exemplo 3: Criação de uma extensão de esquema definindo o proprietário
Solicitação
Este exemplo mostra como criar uma extensão de esquema configurando o proprietário. Neste cenário, o usuário do aplicativo pode não ser o proprietário do aplicativo (por exemplo, se você estiver usando o Microsoft Graph Explorer). Neste caso, você deve definir a propriedade do proprietário como a appId de um aplicativo que você possui, caso contrário, você não terá autorização para criar uma extensão de esquema. Defina a propriedade proprietário na solicitação, juntamente com a representação JSON do restante das propriedades no objeto schemaExtension.
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var schemaExtension = new SchemaExtension
{
Id = "courses",
Description = "Graph Learn training courses extensions",
TargetTypes = new List<String>()
{
"Group"
},
Owner = "50897f70-a455-4adf-87bc-4cf17091d5ac",
Properties = new List<ExtensionSchemaProperty>()
{
new ExtensionSchemaProperty
{
Name = "courseId",
Type = "Integer"
},
new ExtensionSchemaProperty
{
Name = "courseName",
Type = "String"
},
new ExtensionSchemaProperty
{
Name = "courseType",
Type = "String"
}
}
};
await graphClient.SchemaExtensions
.Request()
.AddAsync(schemaExtension);