Criar schemaExtension

Namespace: microsoft.graph

Criar uma nova definição schemaExtension para estender um tipo de recurso de suporte.

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.

Veja exemplos de como definir uma extensão de esquema que descreve um curso de treinamento, usar a definição de extensão do esquema para criar um novo grupo com dados do curso de treinamento e adicionar dados do curso de treinamento a um grupo existente.

Permissões

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.
properties Coleção extensionSchemaProperty 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}.

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

Resposta

Este é um exemplo de resposta.

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

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

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.

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

Resposta

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.

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

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.

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

Resposta

A resposta inclui o proprietário definido como o valor fornecido na solicitação.

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

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

Confira também