拡張機能を使用してカスタム データをリソースに追加する

Microsoft Graph は、ユーザーメッセージなどのリソースを通じて、多様なユーザー中心のデータと分析情報にアクセスするための単一の API エンドポイントを提供します。 外部のデータ ストアを必要とせずに、リソース インスタンスにカスタム プロパティを追加することで、Microsoft Graph を拡張することもできます。

この記事では、Microsoft Graph がリソースの拡張をサポートする方法、カスタム プロパティを追加するために使用できるオプション、およびそれらを使用するタイミングについて説明します。

重要

拡張機能は、アカウント資格情報、政府による識別番号、カード名義人データ、財務会計データ、医療情報、機密性のある背景情報などの個人を特定できる機密情報を格納するために使用しないでください。

この記事で説明する拡張機能は、 カスタム セキュリティ属性と似ていません。 それらの違いを理解するには、「カスタム セキュリティ属性と拡張機能の比較方法」を参照してください。

カスタム データを Microsoft Graph に追加する理由

  • ISV 開発者は、ユーザー リソースを拡張することによって、アプリを軽量に保ちながら、アプリ固有のユーザー プロファイル データを Microsoft Graph に格納することを決定する場合があります。
  • または、アプリの既存のユーザー プロファイル ストアを保持し、アプリ固有の識別子を ユーザー リソースに追加することもできます。
  • エンタープライズ開発者の場合、構築する社内アプリケーションは、組織の人事固有のデータに依存する可能性があります。 このカスタム データを Microsoft Graph に格納することで、複数のアプリケーション内の統合を簡略化できます。

Microsoft Graph のカスタム データ オプション

Microsoft Graph には、カスタム データを追加するための 4 種類の拡張機能が用意されています。

  • 拡張属性
  • ディレクトリ (Microsoft Entra ID) 拡張機能
  • スキーマ拡張機能
  • オープン拡張機能

拡張属性

Microsoft Entra IDでは、ユーザーデバイスのリソースに定義済みの名前を持つ 15 個の拡張属性のセットが提供されます。 これらのプロパティは、最初はオンプレミスの Active Directory (AD) と Microsoft Exchange で提供されたカスタム属性でした。 ただし、オンプレミスの AD と Microsoft Exchange のデータを同期して Microsoft Graph を介してMicrosoft Entra IDする以上の目的で使用できるようになりました。

開発者のエクスペリエンス

15 個の拡張属性は、それぞれ onPremisesExtensionAttributes プロパティと extensionAttributes プロパティを通じて、ユーザーまたはデバイスのリソース インスタンスに文字列値を格納するために使用することができます。 新しいリソース インスタンスの作成中、または既存のリソース インスタンスの更新中に値を割り当てることができます。 値でフィルター処理することもできます。

拡張属性のデータを追加または更新する

次の例は、 extensionAttribute1 にデータを格納し、PATCH メソッドを使用した更新操作を通じて extensionAttribute13 から既存のデータを削除する方法を示しています。

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

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

要求は 204 No Content 応答オブジェクトを返します。

拡張属性の読み取り

要求
GET https://graph.microsoft.com/v1.0/users?$select=id,displayName,onPremisesExtensionAttributes
応答
{
    "@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
            }
        }
    ]
}

拡張属性プロパティの使用に関する考慮事項

onPremisesExtensionAttributes オブジェクトは、オンプレミス AD から同期されていないオブジェクトに対してのみ更新できます。

15 個の拡張属性は Microsoft Graph で既に定義済みであり、そのプロパティ名は変更できません。 そのため、拡張属性に SkypeId などのカスタム名を使用することはできません。 したがって、organizationは、誤ってデータを上書きしないように、使用中の拡張属性プロパティを追跡する必要があります。

ディレクトリ (Microsoft Entra ID) 拡張機能

ディレクトリ拡張機能 は、ディレクトリ オブジェクトに対して厳密に型指定され、検出可能でフィルター可能な拡張機能エクスペリエンスを開発者に提供します。

ディレクトリ拡張機能は、最初に Create extensionProperty 操作を通じてアプリケーションに登録され、特定のディレクトリ オブジェクトとサポートされているディレクトリ オブジェクトを明示的にターゲットにする必要があります。 ユーザーまたは管理者がテナント内のアプリケーションに同意すると、テナント内の拡張機能プロパティにすぐにアクセスできるようになります。 テナント内のすべての承認されたアプリケーションは、ターゲット ディレクトリ オブジェクトのインスタンスで定義されている拡張プロパティに関するデータの読み取りと書き込みを行うことができます。

ディレクトリ拡張機能のターゲット オブジェクトとして指定できるリソースの種類の一覧については、「拡張機能 の種類の比較」を参照してください。

開発者のエクスペリエンス

ディレクトリ拡張機能の定義は、extensionProperty リソースとそれに関連するメソッドを使用して管理されます。 データは、リソース インスタンスの管理に使用する REST API 要求を通じて管理されます。

ディレクトリ拡張機能を定義する

リソース インスタンスにディレクトリ拡張機能を追加する前に、まずディレクトリ拡張機能を定義する必要があります。

要求

次の要求では、 30a5435a-1871-485c-8c7b-65f69e287e7b はディレクトリ拡張機能を所有するアプリケーションのオブジェクト ID です。 値のコレクションを格納するディレクトリ拡張機能を作成できます。

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

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

extension_b7d8e648520f41d3b9c0fdeb91768a0a_jobGroupTracker という名前のディレクトリ拡張プロパティは、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"
    ]
}

ディレクトリ拡張プロパティをターゲット オブジェクトに追加する

ディレクトリ拡張機能を定義した後、ターゲット オブジェクト型のインスタンスに追加できるようになりました。 ターゲット オブジェクトの新しいインスタンスを作成するとき、または既存のオブジェクトを更新するときに、ディレクトリ拡張機能にデータを格納できます。 次の例は、新しい ユーザー オブジェクトを作成するときにディレクトリ拡張機能にデータを格納する方法を示しています。

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

要求は、201 Created 応答コードと、応答本文で user オブジェクトを返します。

ディレクトリ拡張機能を取得する

次の例は、ディレクトリ拡張機能と関連するデータがリソース インスタンスでどのように表示されるかを示しています。 拡張機能プロパティは、既定ではエンドポイントをbeta介して返されますが、エンドポイント経由v1.0でのみ返$selectされます。

要求

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

応答

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

ディレクトリ拡張機能を更新または削除する

リソース インスタンスのディレクトリ拡張機能の値を更新または削除するには、PATCH メソッドを使用します。 拡張プロパティとそれに関連付けられている値を削除するには、その値を に null設定します。

次の要求は、あるディレクトリ拡張機能の値を更新し、別の拡張機能プロパティを削除します。

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

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

要求は、204 No Content 応答コードを返します。

ディレクトリ拡張機能の使用に関する考慮事項

ディレクトリ拡張機能の定義を誤って削除した場合、関連付けられているプロパティに格納されているデータは検出できなくなります。 データを回復するには、削除された定義と同じ名前の新しいディレクトリ拡張機能定義を、同じ所有者アプリに作成します。

対応する拡張プロパティが に更新される前に null定義オブジェクトが削除されると、プロパティは オブジェクトの 100 制限に対してカウントされます。

関連付けられた拡張プロパティのデータが削除される前に定義が削除された場合、検出できないプロパティが 100 制限に対してカウントされる場合でも、Microsoft Graph を使用して拡張機能プロパティの存在を知る方法はありません。

ホーム テナントで所有者アプリを削除すると、関連付けられているディレクトリ拡張機能とそのデータが検出できなくなります。 所有者アプリを復元すると、ディレクトリ拡張機能の定義 が復元されますが 、ディレクトリ拡張機能のプロパティやそのデータはすぐに検出できなくなります。アプリを復元しても、テナント内の関連付けられているサービス プリンシパルは自動的に復元されないためです。 ディレクトリ拡張機能のプロパティとそのデータを検出できるようにするには、新しいサービス プリンシパルを作成するか、削除されたサービス プリンシパルを復元します。 アプリが同意されている他のテナントに変更は行われません。

スキーマ拡張機能

Microsoft Graph スキーマ拡張機能は、概念的にはディレクトリ拡張機能と似ています。 まず、スキーマ拡張機能を定義します。 次に、これを使用して、厳密に型指定されたカスタム プロパティを使用してサポートされているリソース インスタンスを拡張します。 さらに、スキーマ拡張機能の状態を制御し、他のアプリで検出できるようにすることができます。

スキーマ拡張機能をサポートするリソースの種類の一覧については、「拡張機能 の種類の比較」を参照してください。

開発者のエクスペリエンス

スキーマ拡張機能定義を作成する場合、その id の一意の名前を指定する必要があります。次の 2 つの名前付けオプションがあります。

  • テナントで検証されたバニティ .com.net.gov.edu、または.orgドメインが既にある場合は、スキーマ名と共にドメイン名を使用して、この形式 {domainName}_{schemaName} の一意の名前を定義できます。 たとえば、バニティ ドメインが contoso.com の場合、idcontoso_mySchema と定義できます。 このオプションを強くお勧めします。
  • または、 ID をスキーマ名 (ドメイン名プレフィックスなし) に設定することもできます。 たとえば、「 mySchema 」のように入力します。 Microsoft Graph では、指定された名前に基づいて、次の形式 ext{8-random-alphanumeric-chars}_{schema-name}で文字列 ID が割り当てられます。 たとえば、「 extkvbmkofy_mySchema 」のように入力します。

ID は、拡張リソース インスタンスにデータを格納する複合型の名前です。

スキーマ拡張機能を登録すると、関連付けられている所有者アプリケーションと同じテナント内のすべてのアプリケーション (状態の場合) または任意のテナント内のすべてのアプリケーション (状態の場合 InDevelopment ) で Available 使用できます。 ディレクトリ拡張機能と同様に、承認されたアプリには、ターゲット オブジェクトで定義されている拡張機能に関するデータの読み取りと書き込みを行う機能があります。

スキーマ拡張機能の定義と、対応するスキーマ拡張プロパティ内のデータは、API 操作の個別のセットを使用して管理します。 拡張リソース インスタンスのスキーマ拡張データを管理するには、リソース インスタンスの管理に使用するのと同じ REST 要求を使用します。

  • POST を使用して、新しいユーザーを作成するときにスキーマ拡張プロパティにデータを格納します。
  • PATCH を使用して、スキーマ拡張プロパティにデータを格納するか、格納されているデータを更新または削除します。
    • プロパティからデータを削除するには、その値を に設定します null
    • すべてのプロパティからデータを削除するには、すべてのプロパティを にnull設定します。 すべてのプロパティが の場合、 nullスキーマ拡張オブジェクトも削除されます。
    • プロパティを更新するには、要求本文で変更されたプロパティのみを指定します。 省略されたプロパティは更新されず、以前の値が保持されます。
  • GET を使用して、テナント内のすべてのユーザーまたは個々のユーザーのスキーマ拡張プロパティを読み取ります。

スキーマ拡張機能を定義する

要求
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"
        }
    ]
}
応答
{
    "@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"
        }
    ]
}

リソース インスタンスにスキーマ拡張機能を追加する

スキーマ拡張機能を定義した後、ターゲット オブジェクト型のインスタンスに拡張プロパティを追加できるようになりました。 ターゲット オブジェクトの新しいインスタンスを作成するとき、または既存のオブジェクトを更新するときに、スキーマ拡張機能にデータを格納できます。 次の例は、新しいユーザー オブジェクトを作成するときに、スキーマ拡張プロパティにデータを格納する方法を示しています。

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

要求は、201 Created 応答コードと、応答本文で schemaExtension オブジェクトを返します

スキーマ拡張プロパティを更新または削除する

PATCH 操作を使用して、スキーマ拡張機能を更新するか、既存のスキーマ拡張機能を削除します。 拡張機能プロパティとそれに関連付けられている値をリソース インスタンスから削除するには、その値を null に設定します。

次の例では、courseId プロパティの値を削除し、courseType プロパティを更新します。 extkmpdyld2_graphLearnCourses 拡張プロパティ全体を削除するには、その値を null に設定します。

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

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

要求は 204 No Content 応答オブジェクトを返します。

スキーマ拡張プロパティを取得する

リソース インスタンスのスキーマ拡張プロパティを読み取るには、$select 要求で拡張機能名を指定します。

要求
GET https://graph.microsoft.com/beta/users/0668e673-908b-44ea-861d-0661297e1a3e?$select=id,displayName,extkmpdyld2_graphLearnCourses
応答
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
    }
}

スキーマ拡張機能の使用に関する考慮事項

スキーマ拡張機能には所有者アプリが必要です。 スキーマ拡張機能の所有権を別のアプリに再割り当てすることはできません。

スキーマ拡張機能を設定せずにスキーマ拡張 null 定義を削除すると、プロパティとそれに関連付けられているユーザー データが検出できなくなります。

ホーム テナントで所有者アプリを削除しても、関連付けられているスキーマ拡張機能の定義やプロパティと、そのアプリが格納するデータは削除されません。 スキーマ拡張プロパティは、ユーザーに対して引き続き読み取り、削除、または更新できます。 ただし、スキーマ拡張機能の定義を更新することはできません。

オープン拡張機能

Microsoft Graph オープン拡張機能は、オープン タイプであり、型指定されていないデータを直接リソース インスタンスに追加するためのシンプルで柔軟な方法を提供します。 これらの拡張機能は、厳密に型指定、検出、またはフィルター処理できません。

Microsoft Graph オープン拡張機能をサポートするリソースの種類の一覧については、「拡張機能 の種類の比較」を参照してください。

開発者のエクスペリエンス

オープン拡張機能は、データとともに、リソース インスタンスの拡張機能ナビゲーション プロパティを通じてアクセスできます。 これらを使用すると、関連するプロパティをグループ化して、アクセスと管理を容易にすることができます。

開いている拡張機能は、リソース インスタンス上で即座に定義および管理します。 オブジェクトごとに一意と見なされ、すべてのオブジェクトに普遍的に一貫性のあるパターンを適用する必要はありません。 たとえば、同じテナントでは次のようになります。

  • Adele のユーザー オブジェクトには 、socialSettings という名前のオープン拡張機能があり、 linkedInProfileskypeIdxboxGamertag の 3 つのプロパティがあります。
  • Bruno のユーザー オブジェクトは、開いている拡張プロパティを持つことができません。
  • Alex のユーザー オブジェクトには 、socialSettings という名前のオープン拡張機能があり、 テーマ言語フォントfontSize の 5 つのプロパティがあります。

オープン拡張機能を作成する

次の例は、3 つのプロパティを持つオープン拡張機能定義と、カスタム プロパティと関連するデータをリソース インスタンスに表示する方法を示しています。

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

要求は、201 Created 応答コードと、応答本文で openTypeExtension オブジェクトを返します。

既存のオープン拡張機能を更新する

オープン拡張機能を更新するには、要求本文ですべてのプロパティを指定する必要があります。 それ以外の場合、未指定のプロパティが に null 更新され、開いている拡張機能から削除されます。

次の要求では、linkedInProfile プロパティと xboxGamerTag プロパティのみを指定します。 linkedInProfile プロパティは同じままですが、xboxGamerTag プロパティの値は更新されています。 この要求は、指定されていない skypeId プロパティも削除します。

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

この要求は、204 No Content 応答コードを返します。

オープン拡張機能を取得する

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

オープン拡張機能の使用に関する考慮事項

作成者アプリを削除しても、開いている拡張機能と保存されるデータには影響しません。

拡張機能の種類の比較

次の表では、シナリオに最適なオプションを決定するのに役立つ拡張機能の種類を比較します。

機能 拡張属性 1 ~ 15 ディレクトリ拡張機能 スキーマ拡張機能 オープン拡張機能
サポートされているリソースの種類 user
device
user
グループ
administrativeUnit
application
device
organization
user
グループ
administrativeUnit
contact
device
event (ユーザー予定表とグループ 予定表の両方)
message
organization
post
user
グループ
contact
device
event1 (ユーザー予定表とグループ 予定表の両方)
message
organization
post
todoTask
todoTaskList
厳密な型指定 いいえ はい はい 不要
フィルター処理可能 はい はい はい いいえ
コレクションを格納できます いいえ はい いいえ いいえ
"所有者" アプリケーションに関連付けられている いいえ はい はい 不要
以下を介して管理: Microsoft Graph
Exchange 管理センター
Microsoft Graph Microsoft Graph Microsoft Graph
AD 接続を使用してオンプレミスから拡張機能にデータを同期する はい (ユーザーの場合) はい いいえ 不要
カスタム拡張機能のプロパティとデータを使用して 動的メンバーシップ ルール を作成する はい いいえ 不要
トークン要求のカスタマイズに使用できます はい はい (1,2) いいえ 不要
Azure AD B2Cで利用可能 はい はい はい
制限
  • ユーザーまたはデバイス リソース インスタンスごとに 15 個の定義済み属性
  • リソース インスタンスあたり 100 個の拡張機能の値
  • 所有者アプリごとに最大 5 つの定義
  • リソース インスタンスあたり 100 個の拡張機能の値 (ディレクトリ オブジェクトのみ)
  • 作成者アプリごと、リソース インスタンスごとに 2 個のオープン拡張機能 2
  • 最大 オープン拡張機能 2 あたり2 Kb
  • Outlook リソースの場合、各オープン拡張機能は、MAPI 名前付きプロパティに格納されます 3
  • 注:

    1 既存のサービスの制限により、代理人は共有メールボックス 予定表でオープン拡張追加イベントを作成することはできません。 これを試みると、ErrorAccessDenied応答が返されます。

    2 開いている拡張機能の制限は、ユーザーグループデバイスorganizationのディレクトリ リソースに適用されます。

    3オープン拡張機能は、MAPI 名前付きプロパティに格納されます。これは、ユーザーのメールボックスの限られたリソースです。 この制限は、次の Outlook リソースに適用されます: messageeventcontact

    職場または学校のアカウントでサインインした場合は、すべての拡張機能を管理できます。 また、個人用 Microsoft アカウントでサインインすると、次のリソースのオープン拡張機能を管理できます: eventpostgroupmessagecontactuser

    アクセス許可と特権

    そのリソース インスタンス上の拡張機能データを管理するには、アプリがリソース インスタンスから読み取ったり、リソース インスタンスに書き込んだりするために必要なのと同じ特権も必要です。 たとえば、委任されたシナリオでは、User.ReadWrite.All アクセス許可が付与され、サインインユーザーにサポートされているMicrosoft Entra管理者ロールがある場合にのみ、アプリはユーザーの拡張機能データを更新できます。