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 dá suporte à extensão de seus recursos, as opções disponíveis para adicionar propriedades personalizadas e quando usá-las.

Importante

Não use extensões para armazenar informações pessoais confidenciais, como credenciais de conta, números de identificação governamentais, dados do titular do cartão, dados de contas financeiras, informações de saúde ou informações confidenciais em segundo plano.

As extensões mencionadas neste artigo não são semelhantes aos seguintes recursos:

Por que 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.
  • Como alternativa, talvez você queira manter o repositório de perfil de usuário existente do seu aplicativo e adicionar um identificador específico do aplicativo ao recurso de usuário .
  • 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ários aplicativos pode ser simplificada armazenando esses 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 usuário e do dispositivo. Essas propriedades eram inicialmente atributos personalizados fornecidos no Active Directory local (AD) e no Microsoft Exchange. No entanto, agora você pode usá-los para mais do que sincronizar dados locais do AD e do Microsoft Exchange com o Microsoft Entra ID por meio do Microsoft Graph.

Para obter mais informações sobre esses atributos no Microsoft Exchange, consulte Atributos personalizados no Exchange Server.

Experiência do desenvolvedor

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

Adicionar ou atualizar dados em atributos de extensão

O exemplo a seguir mostra como armazenar dados em extensionAttribute1 e excluir dados existentes de extensionAttribute13 por meio 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.

Leia 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 o uso de propriedades de atributo de extensão

Você pode atualizar o objeto onPremisesExtensionAttributes somente para objetos que não são sincronizados do AD local.

O Microsoft Graph já define os 15 atributos de extensão e você não pode alterar seus nomes de propriedade. Portanto, você não pode usar nomes personalizados como SkypeId para os atributos de extensão. Sua organização deve acompanhar as propriedades de atributo de extensão em uso para evitar sobrescrever inadvertidamente seus dados.

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

As extensões de diretório fornecem aos desenvolvedores uma experiência de extensão fortemente tipada, detectável e filtrável para objetos de diretório.

Registre extensões de diretório em um aplicativo por meio da operação Criar extensionProperty . Você deve direcionar explicitamente objetos de diretório específicos e com suporte. Depois que um usuário ou administrador consente com o aplicativo no locatário, as propriedades da extensão tornam-se imediatamente acessíveis no locatário. 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 você pode especificar como objetos de destino para uma extensão de diretório, consulte Comparação de tipos de extensão.

Experiência do desenvolvedor

Você gerencia definições de extensão de diretório por meio do recurso extensionProperty e seus métodos associados. As solicitações da API REST usadas para gerenciar a instância do recurso manipulam os dados.

Definir a extensão de diretório

Antes de adicionar uma extensão de diretório a uma instância de recurso, você deve primeiro definir a extensão de diretório.

Solicitação

Na solicitação a seguir, 30a5435a-1871-485c-8c7b-65f69e287e7b está a ID do objeto do aplicativo que possui a extensão de diretório. Você 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

Você cria uma propriedade de extensão de diretório nomeada extension_b7d8e648520f41d3b9c0fdeb91768a0a_jobGroupTracker com um nome de extensão que segue esta 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, adicione-a a uma instância de um tipo de objeto de destino. Você 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 a seguir mostra como armazenar dados na extensão de diretório ao criar um novo objeto de usuário .

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.

Recuperar uma extensão de diretório

O exemplo a seguir mostra como as extensões de diretório e os dados associados são apresentados em uma instância de recurso. A propriedade de extensão é retornada por padrão por meio do ponto de beta extremidade, mas somente por $select meio do v1.0 ponto de extremidade.

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 excluir extensões de diretório

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

A solicitação a seguir atualiza o valor de uma extensão de diretório e exclui 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 o uso de extensões de diretório

Se você excluir acidentalmente uma definição de extensão de diretório, todos os dados armazenados na propriedade associada se tornarão não detectáveis. Para recuperar os dados, crie uma nova definição de extensão de diretório com o mesmo nome da definição excluída, no mesmo aplicativo proprietário.

Quando você exclui um objeto de definição antes de atualizar a propriedade de extensão correspondente para null, a propriedade conta contra o limite de 100 para o objeto.

Quando você exclui a definição antes de excluir dados na propriedade de extensão associada, não há como saber a existência da propriedade de extensão por meio do Microsoft Graph - mesmo que a propriedade não detectável conte contra o limite de 100.

A exclusão de um aplicativo proprietário no locatário doméstico torna as extensões de diretório associadas e seus dados indetectáveis. Quando você restaura um aplicativo proprietário, ele restaura as definições de extensão de diretório, mas não torna as propriedades de extensão de diretório ou seus dados imediatamente detectáveis; porque restaurar um aplicativo não restaura automaticamente a entidade de serviço associada no locatário. Para tornar as propriedades de extensão de diretório e seus dados detectáveis, crie uma nova entidade de serviço ou restaure a entidade de serviço excluída. Nenhuma alteração é feita em outros locatários para os quais o aplicativo foi consentido.

Extensões de esquema

As extensões de esquema Microsoft Graph são conceitualmente semelhantes às extensões de diretório. Primeiro, você define sua extensão de esquema. Em seguida, use-o para estender instâncias de recurso compatíveis com propriedades personalizadas fortemente tipadas. 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 dão suporte a extensões de esquema, consulte 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. Você tem duas opções de nomenclatura:

  • Se você já tiver um domínio .compersonalizado ou .net.gov.org.eduverificado com seu locatário, use o nome de domínio junto com o nome do 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.
  • Como alternativa, defina a ID como um nome de esquema (sem um prefixo de nome de domínio). Por exemplo, mySchema. O Microsoft Graph atribui uma ID de cadeia de caracteres para você com base no nome fornecido, neste formato: ext{8-random-alphanumeric-chars}_{schema-name}. Por exemplo, extkvbmkofy_mySchema.

A id é o nome do tipo complexo que armazena seus dados na instância de recurso estendido.

Depois de registrar uma extensão de esquema, todos os aplicativos no mesmo locatário que o aplicativo de proprietário associado poderão usá-la quando ele estiver no InDevelopment estado. Quando ele está no Available estado, todos os aplicativos em qualquer locatário podem usá-lo. Assim como as extensões de diretório, os aplicativos autorizados podem ler e gravar dados em qualquer extensão definida no objeto de destino.

Você gerencia as definições de extensão de esquema e os dados na propriedade de extensão de esquema correspondente usando 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.

  • Use POST para armazenar dados na propriedade de extensão de esquema ao criar um novo usuário.
  • Use PATCH para armazenar dados na propriedade de extensão de esquema ou atualize ou exclua os dados armazenados.
    • Para excluir dados de uma propriedade, defina seu valor como null.
    • Para excluir dados de todas as propriedades, defina cada propriedade como null. Se todas as propriedades forem null, o objeto de extensão de esquema também será excluído.
    • Para atualizar qualquer propriedade, especifique apenas as propriedades alteradas no corpo da solicitação. As propriedades omitidas não são atualizadas e mantêm seu valor anterior.
  • Use GET para ler as propriedades de extensão de esquema para todos os usuários ou usuários individuais no locatário.

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 do esquema, você pode 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 201 Created resposta e um objeto schemaExtension no corpo da resposta.

Atualizar ou excluir uma propriedade de extensão de esquema

Use a operação PATCH para atualizar uma extensão de esquema ou excluir 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 o uso de extensões de esquema

Uma extensão de esquema deve ter um aplicativo proprietário. Você não pode reatribuir a propriedade da extensão de esquema para outro aplicativo.

Se você excluir uma definição de extensão de esquema sem definir a extensão de esquema como null, tornará a propriedade e seus dados de usuário associados não detectáveis.

Se você excluir um aplicativo proprietário no locatário inicial, não excluirá a definição de extensão de esquema associada ou a propriedade e os dados que ela armazena. Você ainda pode ler, excluir ou atualizar a propriedade de extensão de esquema para usuários. No entanto, você não pode atualizar a definição de extensão de esquema.

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. Essas extensões não são fortemente tipadas, detectáveis ou filtráveis.

Para obter a lista de tipos de recursos que dão suporte a extensões abertas do Microsoft Graph, consulte Comparação de tipos de extensão.

Experiência do desenvolvedor

Você pode acessar extensões abertas e seus dados por meio da propriedade de navegação de extensões da instância do recurso. Com extensões abertas, você pode agrupar propriedades relacionadas para facilitar o acesso e o gerenciamento.

Você define e gerencia extensões abertas em instâncias de recursos. Cada extensão aberta é exclusiva para seu objeto, portanto, você não precisa aplicar um padrão consistente em todos os objetos. Por exemplo, no mesmo locatário:

  • O objeto de usuário de Adele pode ter uma extensão aberta chamada socialSettings que tem três propriedades: linkedInProfile, skypeId e xboxGamertag.
  • O objeto de usuário de Allan não pode ter nenhuma propriedade de extensão aberta.
  • O objeto de usuário de Alex pode ter uma extensão aberta chamada socialSettings com cinco propriedades: theme, color, language, font e fontSize.

As propriedades de extensão aberta podem ter qualquer estrutura JSON válida.

Criar uma extensão aberta

O exemplo a seguir mostra uma definição de extensão aberta com três propriedades e como as propriedades personalizadas e os dados associados aparecem em uma 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 serão excluídas da extensão aberta. Você pode definir explicitamente uma propriedade como null para retê-la na extensão aberta.

A solicitação a seguir especifica apenas as propriedades linkedInProfile e xboxGamerTag. O valor da propriedade xboxGamerTag é 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 o uso de extensões abertas

Excluir um aplicativo criador não afeta a extensão aberta ou os dados que ela armazena.

Comparação de tipos de extensão

A tabela a seguir compara os tipos de extensão. Use esta comparação para decidir qual opção é mais apropriada para 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
de grupo
contact
device
event1 (calendários de usuário e grupo)
message
organização
postagem
todoTask
todoTaskList
Fortemente tipado Não Sim Sim Não
Filtráveis Sim Sim Sim Não
Pode armazenar uma coleção Não Sim Não Sim
Vinculado a um aplicativo do "proprietário" Não Sim Sim Não
Escopo Atribuir valores a propriedades predefinidas da instância do objeto de destino Definir no nível do aplicativo e, em seguida, atribuir à instância do objeto de destino Defina para o locatário e, em seguida, atribua à instância do objeto de destino Definir e atribuir na instância do objeto
Detectabilidade Selecionar ou filtrar na instância do objeto de destino LIST, selecione ou filtre no nível do aplicativo para obter definições; Selecionar ou filtrar no objeto de destino para obter atribuições LIST ou filter para GET definições de todo o locatário; Selecionar ou filtrar no objeto de destino para obter atribuições LIST ou selecione o objeto de destino para OBTER definições e atribuições
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 externa 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 ramal aberto2
  • 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 delegados não podem criar eventos abertos anexados à extensão em calendários de caixa de correio compartilhada. As tentativas de fazer isso resultam em uma ErrorAccessDenied resposta.

    2 Esses limites em extensões abertas se aplicam aos seguintes recursos de diretório: usuário, 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 ao entrar 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

    Para gerenciar quaisquer dados de extensões em uma instância de recurso, seu aplicativo precisa dos mesmos privilégios usados para ler ou gravar nessa instância de recurso. Por exemplo, em um cenário delegado, um aplicativo poderá atualizar os dados de extensão de qualquer usuário somente se receber a permissão User.ReadWrite.All e o usuário conectado tiver uma função de administrador do Microsoft Entra com suporte.