schemaExtension の作成

名前空間: microsoft.graph

重要

Microsoft Graph の /beta バージョンの API は変更される可能性があります。 実稼働アプリケーションでこれらの API を使用することは、サポートされていません。 v1.0 で API を使用できるかどうかを確認するには、Version セレクターを使用します。

新しい schemaExtension 定義とそれに関連付けられているスキーマ拡張プロパティを作成して、 サポート リソースの種類を拡張します。

スキーマ拡張を使用すると、厳密に型指定されたカスタム データをリソースに追加できます。 スキーマ拡張機能を作成するアプリは、所有者アプリです。 拡張機能 の状態に応じて 、所有者アプリ (所有者アプリのみ) が拡張機能を更新または削除する場合があります。

トレーニング コースを説明するスキーマ拡張機能を定義する方法、スキーマ拡張定義を使用してトレーニング コース データで新規グループを作成する方法、既存グループにトレーニング コース データを追加する方法については、それぞれの例を参照してください。

この API は、次の国内クラウド展開で使用できます。

グローバル サービス 米国政府機関 L4 米国政府機関 L5 (DOD) 21Vianet が運営する中国
✅ ✅ ✅ ✅

アクセス許可

この API の最小特権としてマークされているアクセス許可またはアクセス許可を選択します。 アプリで必要な場合にのみ、より高い特権のアクセス許可またはアクセス許可を使用します。 委任されたアクセス許可とアプリケーションのアクセス許可の詳細については、「アクセス許可の種類」を参照してください。 これらのアクセス許可の詳細については、「アクセス許可のリファレンス」を参照してください。

アクセス許可の種類 最小特権アクセス許可 より高い特権のアクセス許可
委任 (職場または学校のアカウント) Application.ReadWrite.All 注意事項なし。
委任 (個人用 Microsoft アカウント) サポートされていません。 サポートされていません。
アプリケーション Application.ReadWrite.All and Directory.ReadWrite.All 注意事項なし。

注:

また、委任されたフローの場合は、サインインしているユーザーが、呼び出し元アプリケーションの所有者であるか、所有者 プロパティの設定に使用する appId を持つアプリケーションの所有者である必要があります。

HTTP 要求

POST /schemaExtensions

要求ヘッダー

名前 説明
Authorization ベアラー {token}。 必須です。 認証と認可についての詳細をご覧ください。
Content-Type application/json

要求本文

要求本文では、schemaExtension オブジェクトの JSON 表記を指定します。

次の表に、スキーマ拡張を作成するときに使用可能なプロパティを示します。

パラメーター 型 説明
description String 省略可能。 スキーマ拡張機能の説明。
id String 必須です。 スキーマ拡張機能の定義の一意の識別子。
値の割り当ては、以下の 2 方法のいずれかで行うことができます。
  • 検証済みのドメインの 1 つの名前とスキーマ拡張機能の名前を連結して、{domainName}_{schemaName} という形式の一意の文字列を形成します。 次に例 contoso_mySchema を示します。 注: 上位ドメイン .com、.net、.gov、.edu、.org の下では、検証済みのドメインのみがサポートされます。
  • スキーマ名を指定すると、Microsoft Graph がそのスキーマ名を使用して、ext{8-random-alphanumeric-chars}_{schema-name} の形式で ID の割り当てを完了します。 例が extkvbmkofy_mySchema です。
作成後、このプロパティは変更できません。
owner String 条件付き。 スキーマ拡張機能の所有者であるアプリケーションの appId です。 このプロパティは作成時に指定して所有者を設定できます。 指定しない場合、呼び出し元のアプリケーションの appId が所有者として設定されます。 たとえば、Graph エクスプローラーを使用して新しいスキーマ拡張機能の定義を作成する場合は、所有者プロパティを指定する必要があります。 設定すると、このプロパティは読み取り専用で、変更することはできません。
properties extensionSchemaProperty コレクション 必須です。 スキーマ拡張機能の定義を構成するプロパティの名前と種類のコレクション。
targetTypes String collection 必須です。 このスキーマ拡張機能の定義を適用できる、(スキーマ拡張機能をサポートしている) 一連の Microsoft Graph のリソースの種類。

応答

成功した場合、このメソッドは応答本文で 201 Created 応答コードと、schemaExtension オブジェクトを返します。

例

例 1: 確認済みのドメインを使用してスキーマ拡張機能を作成する

要求

次の例は、検証済みのドメイン名 graphlearn とスキーマ名 courses を使用して、スキーマ拡張定義の id プロパティの一意の文字列を作成する方法を示しています。 一意の文字列は、{domainName}_{schemaName} の形式に基づいています。 要求本文から 所有者 が除外された Microsoft Graph は、呼び出し元がこの要求を行うアプリの所有者であることを期待します。

要求本文では、schemaExtension オブジェクトの JSON 表記を指定します。

POST https://graph.microsoft.com/beta/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"
        }
    ]
}

応答

次の例は応答を示しています。

注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。

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

例 2: 名前のみを使用してスキーマ拡張機能を作成する

要求

次の例は、要求の id プロパティにスキーマ名 courses だけを指定する例と、schemaExtension オブジェクトの残りのプロパティの JSON 表現を示しています。 Microsoft Graph は一意の文字列値を割り当て、それを応答内で返します。 要求本文から 所有者 が除外された Microsoft Graph は、呼び出し元がこの要求を行うアプリの所有者であることを期待します。

POST https://graph.microsoft.com/beta/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"
        }
    ]
}

応答

応答には、要求の中で提供されているスキーマ名に基づいた一意の文字列がその id プロパティ内に含まれ、新規作成したスキーマ定義の残りの部分も応答に含まれています。 応答の id の値は、ext{8-random-alphanumeric-chars}_{schema-name} の形式に基づいています。

注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。

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

例 3: 所有者を設定してスキーマ拡張機能を作成する

要求

次の例では、owner を設定してスキーマ拡張機能を作成する方法を示します。 このシナリオでは、アプリケーションのユーザーがアプリケーションの所有者でない可能性があります (たとえば、Microsoft Graph Explorer を使用している場合)。 この場合は、 owner プロパティを、所有しているアプリケーションの appId に設定する必要があります。設定しなかった場合は、スキーマ拡張の作成を承認されません。 要求の owner プロパティを設定し、schemaExtension オブジェクト内の残りのプロパティの JSON 表記を使用します。

POST https://graph.microsoft.com/beta/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"
        }
    ]
}

応答

応答には、要求で指定された値に設定された owner が含まれます。

注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。

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