Partilhar via


Adicionar dados personalizados aos recursos usando extensões

O Microsoft Graph fornece um único ponto de extremidade de API para acessar dados e insights avançados centrados em pessoas através de recursos, como usuário e mensagem. Você também pode estender o Microsoft Graph adicionando propriedades personalizadas a instâncias de recursos sem a necessidade de um armazenamento de dados externo.

Este artigo descreve como o Microsoft Graph suporta a expansão dos respetivos recursos, as opções disponíveis para adicionar propriedades personalizadas e quando utilizá-los.

Importante

Não use extensões para armazenar informações de identificação pessoal confidenciais, como credenciais de conta, números de identificação do governo, dados do titular do cartão, dados de conta corrente, informações médicas ou informações básicas confidenciais.

As extensões mencionadas neste artigo não são semelhantes aos atributos de segurança personalizados. Para compreender as diferenças, veja Como é que os atributos de segurança personalizados se comparam com as extensões?

Porquê adicionar dados personalizados ao Microsoft Graph?

  • Como desenvolvedor de ISV você pode decidir manter seu aplicativo leve e armazenar dados de perfil de usuário específicos do aplicativo no Microsoft Graph estendendo o recurso usuário.
  • Em alternativa, poderá querer manter a loja de perfis de utilizador existente da sua aplicação e adicionar um identificador específico da aplicação ao recurso de utilizador .
  • Como desenvolvedor corporativo, os aplicativos internos que você cria podem depender dos dados específicos de RH da sua organização. A integração em várias aplicações pode ser simplificada ao armazenar estes dados personalizados no Microsoft Graph.

Opções de dados personalizados no Microsoft Graph

O Microsoft Graph oferece quatro tipos de extensões para adicionar dados personalizados.

  • Atributos de extensão
  • Extensões de diretório (Microsoft Entra ID)
  • Extensões de esquema
  • Extensões abertas

Atributos de extensão

O Microsoft Entra ID oferece um conjunto de 15 atributos de extensão com nomes predefinidos nos recursos do utilizador e do dispositivo . Essas propriedades eram inicialmente atributos personalizados fornecidos no Active Directory local (AD) e no Microsoft Exchange. No entanto, podem agora ser utilizados para mais do que sincronizar dados do AD no local e do Microsoft Exchange com o Microsoft Entra ID através do Microsoft Graph.

Experiência do desenvolvedor

Você pode usar os 15 atributos de extensão para armazenar valores string em instâncias de recurso de usuário ou dispositivo, por meio das propriedades onPremisesExtensionAttributes e extensionAttributes, respectivamente. Pode atribuir os valores ao criar uma nova instância de recurso ou ao atualizar uma instância de recurso existente. Também pode filtrar pelos valores.

Adicionar ou atualizar dados em atributos de extensão

O exemplo seguinte mostra como armazenar dados em extensionAttribute1 e eliminar dados existentes de extensionAttribute13 através de uma operação de atualização com um método PATCH.

PATCH https://graph.microsoft.com/v1.0/users/071cc716-8147-4397-a5ba-b2105951cc0b

{
    "onPremisesExtensionAttributes": {
        "extensionAttribute1": "skypeId.adeleVance",
        "extensionAttribute13": null
    }
}

A solicitação retorna uma resposta 204 No Content.

Ler os atributos da extensão

Solicitação
GET https://graph.microsoft.com/v1.0/users?$select=id,displayName,onPremisesExtensionAttributes
Resposta
{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(id,displayName,onPremisesExtensionAttributes)",
    "value": [
        {
            "id": "071cc716-8147-4397-a5ba-b2105951cc0b",
            "displayName": "Adele Vance",
            "onPremisesExtensionAttributes": {
                "extensionAttribute1": "Contractor",
                "extensionAttribute2": "50",
                "extensionAttribute3": null,
                "extensionAttribute4": "1478354",
                "extensionAttribute5": "10239390",
                "extensionAttribute6": null,
                "extensionAttribute7": null,
                "extensionAttribute8": null,
                "extensionAttribute9": null,
                "extensionAttribute10": "11",
                "extensionAttribute11": null,
                "extensionAttribute12": "/o=ExchangeLabs/ou=Exchange Administrative Group (FYDIBOHF47SPDLT)/cn=Recipients/cn=5ee781fc7egc7aa0b9394bddb44e7f04-Adele Vance",
                "extensionAttribute13": null,
                "extensionAttribute14": null,
                "extensionAttribute15": null
            }
        }
    ]
}

Considerações sobre a utilização de propriedades de atributos de extensão

O objeto onPremisesExtensionAttributes só pode ser atualizado para objetos que não são sincronizados a partir do AD no local.

Os 15 atributos de extensão já estão predefinidos no Microsoft Graph e os respetivos nomes de propriedade não podem ser alterados. Por conseguinte, não pode utilizar nomes personalizados, como SkypeId , para os atributos da extensão. Por conseguinte, a sua organização tem de controlar as propriedades do atributo de extensão em utilização para evitar substituir inadvertidamente os respetivos dados.

Extensões de diretório (Microsoft Entra ID)

As extensões de diretório fornecem aos programadores uma experiência de extensão detetável e filtrável fortemente digitada para objetos de diretório.

As extensões de diretório são primeiramente registadas numa aplicação através da operação Create extensionProperty e têm de ser explicitamente direcionadas para objetos de diretório específicos e suportados. Depois de um utilizador ou administrador ter consentido a aplicação no inquilino, as propriedades da extensão tornam-se imediatamente acessíveis no inquilino. Todos os aplicativos autorizados no locatário podem ler e gravar dados em quaisquer propriedades de extensão definidas em uma instância do objeto de diretório de destino.

Para obter a lista de tipos de recursos que podem ser especificados como objetos de destino para uma extensão de diretório, veja Comparação dos tipos de extensão.

Experiência do desenvolvedor

As definições de extensão de diretório são gerenciadas por meio do recurso extensionProperty e seus métodos associados. Os dados são geridos através dos pedidos da API REST que utiliza para gerir a instância de recurso.

Definir a extensão de diretório

Antes de poder adicionar uma extensão de diretório a uma instância de recurso, primeiro tem de definir a extensão de diretório.

Solicitação

No pedido seguinte, 30a5435a-1871-485c-8c7b-65f69e287e7b está o ID de objeto da aplicação que detém a extensão de diretório. Pode criar extensões de diretório que armazenam uma coleção de valores.

POST https://graph.microsoft.com/v1.0/applications/30a5435a-1871-485c-8c7b-65f69e287e7b/extensionProperties

{
    "name": "jobGroupTracker",
    "dataType": "String",
    "targetObjects": [
        "User"
    ]
}
Resposta

Uma propriedade de extensão de diretório chamada extension_b7d8e648520f41d3b9c0fdeb91768a0a_jobGroupTracker é criada com um nome de extensão que segue a seguinte convenção de nomenclatura: extension_{appId-without-hyphens}_{extensionProperty-name}.

HTTP/1.1 201 Created
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#applications('30a5435a-1871-485c-8c7b-65f69e287e7b')/extensionProperties/$entity",
    "id": "4e3dbc8f-ca32-41b4-825a-346215d7d20f",
    "deletedDateTime": null,
    "appDisplayName": "HR-sync-app",
    "dataType": "String",
    "isMultiValued": false,
    "isSyncedFromOnPremises": false,
    "name": "extension_b7d8e648520f41d3b9c0fdeb91768a0a_jobGroupTracker",
    "targetObjects": [
        "User"
    ]
}

Adicionar uma propriedade de extensão de diretório a um objeto de destino

Depois de definir a extensão de diretório, pode agora adicioná-la a uma instância de um tipo de objeto de destino. Pode armazenar dados na extensão de diretório ao criar uma nova instância do objeto de destino ou ao atualizar um objeto existente. O exemplo seguinte mostra como armazenar dados na extensão de diretório ao criar um novo objeto de utilizador .

POST https://graph.microsoft.com/v1.0/users

{
    "accountEnabled": true,
    "displayName": "Adele Vance",
    "mailNickname": "AdeleV",
    "userPrincipalName": "AdeleV@contoso.com",
    "passwordProfile": {
        "forceChangePasswordNextSignIn": false,
        "password": "xWwvJ]6NMw+bWH-d"
    },
    "extension_b7d8e648520f41d3b9c0fdeb91768a0a_jobGroupTracker": "JobGroupN"
}

A solicitação retorna um código de resposta 201 Created e um objeto user no corpo da resposta.

Obter uma extensão de diretório

O exemplo seguinte mostra como as extensões de diretório e os dados associados são apresentados numa instância de recurso. A propriedade da extensão é devolvida por predefinição através do beta ponto final, mas apenas através $select do v1.0 ponto final.

Solicitação

GET https://graph.microsoft.com/beta/users?$select=id,displayName,extension_b7d8e648520f41d3b9c0fdeb91768a0a_jobGroupTracker,extension_b7d8e648520f41d3b9c0fdeb91768a0a_permanent_pensionable

Resposta

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(id,displayName,extension_b7d8e648520f41d3b9c0fdeb91768a0a_jobGroupTracker,extension_b7d8e648520f41d3b9c0fdeb91768a0a_permanent_pensionable)",
    "value": [
        {
            "id": "63384f56-42d2-4aa7-b1d6-b10c78f143a2",
            "displayName": "Adele Vance",
            "extension_b7d8e648520f41d3b9c0fdeb91768a0a_jobGroupTracker": "E4",
            "extension_b7d8e648520f41d3b9c0fdeb91768a0a_permanent_pensionable": true
        }
    ]
}

Atualizar ou eliminar extensões de diretório

Para atualizar ou eliminar o valor da extensão de diretório de uma instância de recurso, utilize o método PATCH. Para eliminar a propriedade da extensão e o respetivo valor associado, defina o respetivo valor como null.

O pedido seguinte atualiza o valor de uma extensão de diretório e elimina outra propriedade de extensão.

PATCH https://graph.microsoft.com/v1.0/users/63384f56-42d2-4aa7-b1d6-b10c78f143a2

{
    "extension_b7d8e648520f41d3b9c0fdeb91768a0a_permanent_pensionable": null,
    "extension_b7d8e648520f41d3b9c0fdeb91768a0a_jobGroupTracker": "E4"
}

A solicitação retorna o código de resposta 204 No Content.

Considerações sobre a utilização de extensões de diretório

Se eliminar acidentalmente uma definição de extensão de diretório, todos os dados armazenados na propriedade associada tornam-se incocupáveis. Para recuperar os dados, crie uma nova definição de extensão de diretório com o mesmo nome que a definição eliminada, na mesma aplicação de proprietário.

Quando um objeto de definição é eliminado antes da propriedade de extensão correspondente ser atualizada para null, a propriedade conta para o limite de 100 para o objeto.

Quando a definição é eliminada antes de os dados na propriedade de extensão associada serem eliminados, não há forma de saber a existência da propriedade da extensão através do Microsoft Graph, mesmo que a propriedade não recuperável conte com o limite de 100.

Eliminar uma aplicação de proprietário no inquilino principal torna as extensões de diretório associadas e os respetivos dados irrecuperáveis. Quando restaura uma aplicação proprietária, esta restaura as definições da extensão de diretório, mas não torna as propriedades da extensão do diretório ou os respetivos dados imediatamente detetáveis; porque o restauro de uma aplicação não restaura automaticamente o principal de serviço associado no inquilino. Para tornar as propriedades da extensão do diretório e os respetivos dados detetáveis, crie um novo principal de serviço ou restaure o principal de serviço eliminado. Não são efetuadas alterações a outros inquilinos nos quais a aplicação tenha sido consentida.

Extensões de esquema

As extensões de esquema Microsoft Graph são conceitualmente semelhantes às extensões de diretório. Em primeiro lugar, defina a extensão de esquema. Em seguida, utilize-a para expandir as instâncias de recursos suportadas com propriedades personalizadas com tipos de dados. Além disso, você pode controlar o status da extensão de esquema e permitir que ela seja descoberta por outros aplicativos.

Para obter a lista de tipos de recursos que suportam extensões de esquema, veja Comparação de tipos de extensão.

Experiência do desenvolvedor

Ao criar uma definição de extensão de esquema, você deve fornecer um nome exclusivo para sua id. Há duas opções de nomes:

  • Se já tiver uma vaidade .com,.net ou .gov.edu um .org domínio verificado com o seu inquilino, pode utilizar o nome de domínio juntamente com o nome de esquema para definir um nome exclusivo, neste formato {domainName}_{schemaName}. Por exemplo, se o seu domínio personalizado for contoso.com, você pode definir uma id de contoso_mySchema. Essa opção é altamente recomendada.
  • Em alternativa, pode definir o ID para um nome de esquema (sem um prefixo de nome de domínio). Por exemplo, mySchema. O Microsoft Graph atribui-lhe um ID de cadeia com base no nome fornecido, neste formato: ext{8-random-alphanumeric-chars}_{schema-name}. Por exemplo, extkvbmkofy_mySchema.

O ID é o nome do tipo complexo que armazena os seus dados na instância de recurso expandida.

Depois de registar uma extensão de esquema, está disponível para utilização por todas as aplicações no mesmo inquilino que a aplicação de proprietário associada (quando estiver no InDevelopment estado) ou por todas as aplicações em qualquer inquilino (quando estiver no Available estado). Assim como as extensões de diretório, os aplicativos autorizados têm a capacidade de ler e gravar dados em quaisquer extensões definidas no objeto de destino.

Pode gerir as definições da extensão de esquema e os dados na propriedade da extensão de esquema correspondente através de conjuntos separados de operações de API. Para gerenciar os dados de extensão de esquema na instância de recurso estendido, use a mesma solicitação REST que você usa para gerenciar a instância de recurso.

  • Utilize POST para armazenar dados na propriedade da extensão de esquema quando estiver a criar um novo utilizador.
  • Utilize PATCH para armazenar dados na propriedade da extensão de esquema ou atualizar ou eliminar os dados armazenados.
    • Para eliminar dados de uma propriedade, defina o respetivo valor como null.
    • Para eliminar dados de todas as propriedades, defina todas as propriedades como null. Se todas as propriedades forem null, o objeto de extensão de esquema também será eliminado.
    • Para atualizar qualquer propriedade, especifique apenas as propriedades alteradas no corpo do pedido. As propriedades omitidas não são atualizadas e mantêm o valor anterior.
  • Utilize GET para ler as propriedades da extensão de esquema para todos os utilizadores ou utilizadores individuais no inquilino.

Definir uma extensão de esquema

Solicitação
POST https://graph.microsoft.com/v1.0/schemaExtensions

{
    "id": "graphLearnCourses",
    "description": "Graph Learn training courses extensions",
    "targetTypes": [
        "user"
    ],
    "properties": [
        {
            "name": "courseId",
            "type": "Integer"
        },
        {
            "name": "courseName",
            "type": "String"
        },
        {
            "name": "courseType",
            "type": "String"
        }
    ]
}
Resposta
{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#schemaExtensions/$entity",
    "id": "extkmpdyld2_graphLearnCourses",
    "description": "Graph Learn training courses extensions",
    "targetTypes": [
        "user"
    ],
    "status": "InDevelopment",
    "properties": [
        {
            "name": "courseId",
            "type": "Integer"
        },
        {
            "name": "courseName",
            "type": "String"
        },
        {
            "name": "courseType",
            "type": "String"
        }
    ]
}

Adicionar uma extensão de esquema a uma instância de recurso

Depois de definir a extensão de esquema, pode agora adicionar a propriedade de extensão a uma instância de um tipo de objeto de destino. Você pode armazenar dados na extensão de esquema ao criar uma nova instância do objeto de destino ou ao atualizar um objeto existente. O exemplo a seguir mostra como armazenar dados na propriedade de extensão de esquema ao criar um novo objeto de usuário.

POST https://graph.microsoft.com/beta/users

{
    "accountEnabled": true,
    "displayName": "Adele Vance",
    "mailNickname": "AdeleV",
    "userPrincipalName": "AdeleV@contoso.com",
    "passwordProfile": {
        "forceChangePasswordNextSignIn": false,
        "password": "xWwvJ]6NMw+bWH-d"
    },
    "extkmpdyld2_graphLearnCourses": {
        "courseId": 100,
        "courseName": "Explore Microsoft Graph",
        "courseType": "Online"
    }
}

A solicitação retorna um código de resposta 201 Created e um objeto schemaExtension no corpo da resposta

Atualizar ou excluir uma propriedade de extensão de esquema

Utilize a operação PATCH para atualizar uma extensão de esquema ou eliminar uma extensão de esquema existente. Para excluir a propriedade de extensão e seu valor associado da instância de recurso, defina seu valor como null.

O exemplo a seguir exclui o valor da propriedade ddingId e atualiza a propriedade ddingType. Para excluir a propriedade de extensão extkmpdyld2_graphLearnCourses em sua totalidade, defina seu valor como null.

PATCH https://graph.microsoft.com/beta/users/0668e673-908b-44ea-861d-0661297e1a3e

{
    "extkmpdyld2_graphLearnCourses": {
        "courseType": "Instructor-led",
        "courseId": null
    }
}

A solicitação retorna uma resposta 204 No Content.

Recuperar a propriedade de extensão de esquema

Para ler as propriedades de extensão de esquema em uma instância de recurso, especifique o nome da extensão em uma solicitação $select.

Solicitação
GET https://graph.microsoft.com/beta/users/0668e673-908b-44ea-861d-0661297e1a3e?$select=id,displayName,extkmpdyld2_graphLearnCourses
Resposta
HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users(id,displayName,extkmpdyld2_graphLearnCourses)/$entity",
    "id": "63384f56-42d2-4aa7-b1d6-b10c78f143a2",
    "displayName": "Adele Vance",
    "extkmpdyld2_graphLearnCourses": {
        "@odata.type": "#microsoft.graph.ComplexExtensionValue",
        "courseType": "Instructor-led",
        "courseName": "Explore Microsoft Graph",
        "courseId": null
    }
}

Considerações sobre a utilização de extensões de esquema

Uma extensão de esquema tem de ter uma aplicação de proprietário. A propriedade da extensão de esquema não pode ser reatribuída a outra aplicação.

Eliminar uma definição de extensão de esquema sem definir a extensão de esquema para null tornar a propriedade e os dados de utilizador associados indiscocupáveis.

Eliminar uma aplicação de proprietário no inquilino raiz não elimina a definição da extensão de esquema associada ou a propriedade e os dados que armazena. A propriedade da extensão de esquema ainda pode ser lida, eliminada ou atualizada para os utilizadores. No entanto, a definição da extensão de esquema não pode ser atualizada.

Extensões abertas

Extensões abertas do Microsoft Graph são tipos abertos que oferecem uma maneira flexível de adicionar dados de aplicativo não tipados diretamente a uma instância do recurso. Estas extensões não são fortemente digitadas, detetáveis ou filtráveis.

Para obter a lista de tipos de recursos que suportam extensões abertas do Microsoft Graph, veja Comparação dos tipos de extensão.

Experiência do desenvolvedor

As extensões abertas, juntamente com seus dados, podem ser acessadas por meio da propriedade de navegação extensions da instância do recurso. Eles permitem agrupar propriedades relacionadas para facilitar o acesso e o gerenciamento.

Pode definir e gerir extensões abertas de imediato em instâncias de recursos. São considerados exclusivos para cada objeto e não precisa de aplicar um padrão universalmente consistente para todos os objetos. Por exemplo, no mesmo inquilino:

  • O objeto de utilizador da Adele pode ter uma extensão aberta denominada socialSettings com três propriedades: linkedInProfile, skypeId e xboxGamertag.
  • O objeto de utilizador do Bruno não pode ter nenhuma propriedade de extensão aberta.
  • O objeto de utilizador do Alex pode ter uma extensão aberta denominada socialSettings com cinco propriedades: tema, cor, idioma, tipo de letra e fontSize.

Criar uma extensão aberta

O exemplo seguinte mostra uma definição de extensão aberta com três propriedades e como as propriedades personalizadas e os dados associados são apresentados numa instância de recurso.

POST https://graph.microsoft.com/v1.0/users/3fbd929d-8c56-4462-851e-0eb9a7b3a2a5/extensions

{
    "@odata.type": "#microsoft.graph.openTypeExtension",
    "extensionName": "com.contoso.socialSettings",
    "skypeId": "skypeId.AdeleV",
    "linkedInProfile": "www.linkedin.com/in/testlinkedinprofile",
    "xboxGamerTag": "AwesomeAdele",
    "id": "com.contoso.socialSettings"
}

A solicitação retorna um código de resposta 201 Created e um objeto openTypeExtension no corpo da resposta.

Atualizar uma extensão aberta existente

Para atualizar uma extensão aberta, você deve especificar todas as suas propriedades no corpo da solicitação. Caso contrário, as propriedades não especificadas são eliminadas da extensão aberta. No entanto, pode definir explicitamente uma propriedade para null mantê-la na extensão aberta.

A solicitação a seguir especifica apenas as propriedades linkedInProfile e xboxGamerTag. O valor da propriedade xboxGamerTag está sendo atualizado enquanto a propriedade linkedInProfile permanece a mesma. Essa solicitação também exclui a propriedade skypeId não especificada.

PATCH https://graph.microsoft.com/v1.0/users/3fbd929d-8c56-4462-851e-0eb9a7b3a2a5/extensions/com.contoso.socialSettings

{
    "xboxGamerTag": "FierceAdele",
    "linkedInProfile": "www.linkedin.com/in/testlinkedinprofile"
}

Essa solicitação retorna um código de resposta 204 No Content.

Recuperar as extensões abertas

GET https://graph.microsoft.com/v1.0/users/3fbd929d-8c56-4462-851e-0eb9a7b3a2a5/extensions/com.contoso.socialSettings

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('3fbd929d-8c56-4462-851e-0eb9a7b3a2a5')/extensions/$entity",
    "@odata.type": "#microsoft.graph.openTypeExtension",
    "xboxGamerTag": "FierceAdele",
    "linkedInProfile": "www.linkedin.com/in/testlinkedinprofile",
    "id": "com.contoso.socialSettings"
}

Considerações sobre a utilização de extensões abertas

Eliminar uma aplicação de criador não afeta a extensão aberta e os dados que armazena.

Comparação dos tipos de extensão

A tabela seguinte compara os tipos de extensão, o que deve ajudá-lo a decidir qual a opção mais adequada para o seu cenário.

Recursos Atributos de extensão de 1 a 15 Extensões de diretório Extensões de esquema Extensões abertas
Tipos de recurso com suporte user
device
user
group
administrativeUnit
application
device
organization
user
group
administrativeUnit
contact
device
event (calendários de usuário e grupo)
message
organização
postagem
user
grupo
contact
device
event1 (calendários de usuário e grupo)
message
organização
postagem
todoTask
todoTaskList
Fortemente digitado Não Sim Sim Não
Filtráveis Sim Sim Sim Não
Pode armazenar uma coleção Não Sim Não Não
Associado a uma aplicação "proprietário" Não Sim Sim Não
Gerenciado por meio de Microsoft Graph
Centro de administração do Exchange
Microsoft Graph Microsoft Graph Microsoft Graph
Sincronizar dados do local para extensões usando o AD Connect Sim, para usuários Sim Não Não
Criar regras de associação dinâmica usando dados e propriedades de extensão personalizadas Sim Sim Não Não
Utilizável para personalizar declarações de token Sim Sim (1, 2) Não Não
Disponível no Azure AD B2C Sim Sim Sim Sim
Disponível no ID Externo do Microsoft Entra Sim Sim Sim Sim
Limites
  • 15 atributos predefinidos por instância de recurso de dispositivo ou usuário
  • 100 valores de extensão por instância de recurso
  • Máximo de cinco definições por aplicativo proprietário
  • 100 valores de extensão por instância de recurso (somente objetos de diretório)
  • Duas extensões abertas por aplicativo criador por instância de recurso2
  • Máx. de 2 Kb por extensão aberta2
  • Para recursos do Outlook, cada extensão aberta é armazenada em um Propriedade mapeada MAPI3
  • Observação

    1 Devido a uma limitação de serviço existente, os representantes não podem criar eventos abertos acrescentados à extensão em calendários de caixa de correio compartilhados. As tentativas de fazer isso resultarão em uma resposta de ErrorAccessDenied.

    2 Estes limites em extensões abertas aplicam-se aos seguintes recursos de diretório: utilizador, grupo, dispositivo e organização.

    3Cada extensão aberta é armazenada em uma propriedade nomeada MAPI, que é um recurso limitado na caixa de correio de um usuário. Esse limite se aplica aos seguintes recursos do Outlook: mensagem, eventoe contato

    Você pode gerenciar todas as extensões quando estiver conectado com uma conta corporativa ou de estudante. Além disso, você pode gerenciar extensões abertas para os seguintes recursos quando conectado com uma conta pessoal Microsoft: evento, postagem, grupo, mensagem, contato e usuário.

    Permissões e privilégios

    Os mesmos privilégios que a sua aplicação necessita para ler ou escrever numa instância de recurso também são necessários para gerir quaisquer dados de extensões nessa instância de recurso. Por exemplo, num cenário delegado, uma aplicação só pode atualizar os dados de extensão de qualquer utilizador se lhe for concedida a permissão User.ReadWrite.All e o utilizador com sessão iniciada tiver uma função de administrador do Microsoft Entra suportada.