Mit Schemaerweiterungen können Sie stark typisierte benutzerdefinierte Daten zu einer Ressource hinzufügen. Die App, die eine Schemaerweiterung erstellt, ist die Besitzer-App. Abhängig vom Status der Erweiterung kann die Besitzer-App, und nur die Besitzer-App, die Erweiterung aktualisieren oder löschen.
Eine der nachfolgenden Berechtigungen ist erforderlich, um diese API aufrufen zu können. Weitere Informationen, unter anderem zur Auswahl von Berechtigungen, finden Sie im Artikel zum Thema Berechtigungen.
Berechtigungstyp
Berechtigungen (von der Berechtigung mit den wenigsten Rechten zu der mit den meisten Rechten)
Delegiert (Geschäfts-, Schul- oder Unikonto)
Application.ReadWrite.All
Delegiert (persönliches Microsoft-Konto)
Nicht unterstützt
Anwendung
Application.ReadWrite.All und Directory.ReadWrite.All
Hinweis
Außerdem muss der angemeldete Benutzer für den delegierten Ablauf der Besitzer der aufrufenden Anwendung ODER der Besitzer der (Anwendung mit der) appId sein, die zum Festlegen der Eigentümereigenschaft verwendet wird.
HTTP-Anforderung
POST /schemaExtensions
Anforderungsheader
Name
Beschreibung
Authorization
Bearer {token}. Erforderlich.
Content-Type
application/json
Anforderungstext
Geben Sie im Anforderungstext eine JSON-Darstellung eines schemaExtension-Objekts an.
In der folgenden Tabelle sind die Eigenschaften dargestellt, die zum Erstellen einer Schemaerweiterung erforderlich sind.
Parameter
Typ
Beschreibung
description
String
Beschreibung für die Schemaerweiterung.
id
String
Der eindeutige Bezeichner für die Schemaerweiterungsdefinition. Sie können einen Wert mit einer von zwei Methoden zuweisen:
Verketten Sie den Namen einer Ihrer überprüften Domänen mit einem Namen für die Schemaerweiterung, um eine eindeutige Zeichenfolge in diesem Format zu bilden: {domainName}_{schemaName}. Beispiel: contoso_mySchema. HINWEIS: Nur überprüfte Domänen unter den folgenden Domänen auf oberster Eben werden unterstützt: .com,.net, .gov, .edu oder .org.
Geben Sie einen Schemanamen an, und verwenden Sie diesen Schemanamen in Microsoft Graph zum Vervollständigen der id-Zuweisung in diesem Format: ext{8-random-alphanumeric-chars}_{schema-name}. Zum Beispiel: extkvbmkofy_mySchema.
Diese Eigenschaft kann nach dem Erstellen nicht mehr geändert werden.
owner
Zeichenfolge
(Optional) Die appId der Anwendung, die der Besitzer der Schemaerweiterung ist. Die appId der aufrufenden Anwendung wird standardmäßig als Besitzer festgelegt. Allerdings kann die Eigenschaft bei der Erstellung bereitgestellt werden, um die Besitzer-App-ID auf einen anderen Wert als die aufrufende App festzulegen. In allen Fällen muss im Delegiertenablauf der angemeldete Benutzer der Besitzer der Anwendung sein, die als Besitzer der Schemaerweiterung festgelegt wird. Wenn Sie z. B. eine neue Definition für eine Schemaerweiterung mit dem Graph-Tester erstellen, müssen Sie die Besitzereigenschaft für eine App-ID angeben, die Sie besitzen. Wurde diese Eigenschaft einmal festgelegt, ist sie schreibgeschützt und kann nicht geändert werden.
Die Sammlung von Eigenschaftennamen und Typen, die die Schemaerweiterungsdefinition bilden.
targetTypes
String-Sammlung
Ein Satz von Microsoft Graph-Ressourcentypen (die Erweiterungen unterstützen), auf die diese Schemaerweiterungsdefinition angewendet werden kann.
Antwort
Wenn die Methode erfolgreich verläuft, werden der Antwortcode 201 Created und ein schemaExtension-Objekt im Antworttext zurückgegeben.
Beispiel
Beispiel 1: Erstellen einer Schemaerweiterung unter Verwendung einer überprüften Domäne
Anforderung
In diesem Beispiel wird veranschaulicht, wie aus einem überprüften Domänennamen, graphlearn, und einem Schemanamen, courses, eine eindeutige Zeichenfolge für die id-Eigenschaft der Schemaerweiterungsdefinition gebildet wird. Die eindeutige Zeichenfolge basiert auf diesem Format: {domainName}_{schemaName}.
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var schemaExtension = new SchemaExtension
{
Id = "graphlearn_courses",
Description = "Graph Learn training courses extensions",
TargetTypes = new List<String>()
{
"Group"
},
Properties = new List<ExtensionSchemaProperty>()
{
new ExtensionSchemaProperty
{
Name = "courseId",
Type = "Integer"
},
new ExtensionSchemaProperty
{
Name = "courseName",
Type = "String"
},
new ExtensionSchemaProperty
{
Name = "courseType",
Type = "String"
}
}
};
await graphClient.SchemaExtensions
.Request()
.AddAsync(schemaExtension);
Beispiel 2: Erstellen einer Schemaerweiterung nur mit einem Namen
Anforderung
Das folgende Beispiel zeigt die Angabe lediglich eines Schemanames, courses, in der id-Eigenschaft in der Anforderung angegeben, zusammen mit der JSON-Darstellung der restlichen Eigenschaften im schemaExtension-Objekt. Microsoft Graph wird einen eindeutigen Zeichenfolgenwert zuweisen und ihn in der Antwort zurückgeben.
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var schemaExtension = new SchemaExtension
{
Id = "courses",
Description = "Graph Learn training courses extensions",
TargetTypes = new List<String>()
{
"Group"
},
Properties = new List<ExtensionSchemaProperty>()
{
new ExtensionSchemaProperty
{
Name = "courseId",
Type = "Integer"
},
new ExtensionSchemaProperty
{
Name = "courseName",
Type = "String"
},
new ExtensionSchemaProperty
{
Name = "courseType",
Type = "String"
}
}
};
await graphClient.SchemaExtensions
.Request()
.AddAsync(schemaExtension);
Die Antwort enthält eine eindeutige Zeichenfolge in der id-Eigenschaft, die auf dem in der Anforderung angegebenen Schemanamen basiert, zusammen mit dem Rest der neu erstellten Schemadefinition. Der Wert in id in der Antwort basiert auf dem Format ext{8-random-alphanumeric-chars}_{schema-name}.
Hinweis: Das hier gezeigte Antwortobjekt kann zur besseren Lesbarkeit gekürzt werden.
Beispiel 3: Erstellen einer Schemaerweiterung durch Festlegen des Besitzers
Anforderung
Das folgende Beispiel zeigt, wie eine Schemaerweiterung erstellt wird, die den Besitzer festlegt. In diesem Szenario ist der Benutzer der Anwendung möglicherweise nicht deren Besitzer (z. B. wenn Sie Microsoft Graph Explorer verwenden). In diesem Fall sollten Sie die owner-Eigenschaft auf die appId einer Anwendung festlegen, die Sie besitzen. Andernfalls sind Sie nicht zum Erstellen einer Schemaerweiterung berechtigt. Legen Sie die owner-Eigenschaft in der Anforderung fest, zusammen mit der JSON-Darstellung der restlichen Eigenschaften im schemaExtension-Objekt.
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var schemaExtension = new SchemaExtension
{
Id = "courses",
Description = "Graph Learn training courses extensions",
TargetTypes = new List<String>()
{
"Group"
},
Owner = "50897f70-a455-4adf-87bc-4cf17091d5ac",
Properties = new List<ExtensionSchemaProperty>()
{
new ExtensionSchemaProperty
{
Name = "courseId",
Type = "Integer"
},
new ExtensionSchemaProperty
{
Name = "courseName",
Type = "String"
},
new ExtensionSchemaProperty
{
Name = "courseType",
Type = "String"
}
}
};
await graphClient.SchemaExtensions
.Request()
.AddAsync(schemaExtension);