APIs under the /beta version in Microsoft Graph are subject to change. Use of these APIs in production applications is not supported. To determine whether an API is available in v1.0, use the Version selector.
Schema extensions let you add strongly-typed custom data to a resource. The app that creates a schema extension is the owner app. Depending on the
state of the extension, the owner app, and only the owner app, may update or delete the extension.
Additionally for the delegated flow, the signed-in user must be the owner of the calling application OR the owner of the (application with the) appId used to set the owner property.
HTTP request
POST /schemaExtensions
Request headers
Name
Description
Authorization
Bearer {token}. Required.
Content-Type
application/json
Request body
In the request body, supply a JSON representation of schemaExtension object.
The following table shows the properties that are available when you create a schema extension.
Parameter
Type
Description
description
String
Description for the schema extension.
id
String
The unique identifier for the schema extension definition. You can assign a value in one of two ways:
Concatenate the name of one of your verified domains with a name for the schema extension to form a unique string in this format, {domainName}_{schemaName}. As an example, contoso_mySchema. NOTE: Only verified domains under the following top-level domains are supported: .com,.net, .gov, .edu or .org.
Provide a schema name, and let Microsoft Graph use that schema name to complete the id assignment in this format: ext{8-random-alphanumeric-chars}_{schema-name}. An example would be extkvbmkofy_mySchema.
This property cannot be changed after creation.
owner
String
(Optional) The appId of the application that is the owner of the schema extension. This property can be supplied on creation, to set the owner. If not supplied, then the calling application's appId will be set as the owner. So, for example, if creating a new schema extension definition using Graph Explorer, you must supply the owner property. Once set, this property is read-only and cannot be changed.
The collection of property names and types that make up the schema extension definition.
targetTypes
String collection
Set of Microsoft Graph resource types (that support schema extensions) that this schema extension definition can be applied to.
Response
If successful, this method returns 201 Created response code and schemaExtension object in the response body.
Example
Example 1: Creating a schema extension using a verified domain
Request
This example shows using a verified domain name, graphlearn, and a schema name, courses, to form a unique string for the id property of the
schema extension definition. The unique string is based on this format, {domainName}_{schemaName}.
In the request body, supply a JSON representation of the schemaExtension object.
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);
Important
Microsoft Graph SDKs use the v1.0 version of the API by default, and do not support all the types, properties, and APIs available in the beta version. For details about accessing the beta API with the SDK, see Use the Microsoft Graph SDKs with the beta API.
Microsoft Graph SDKs use the v1.0 version of the API by default, and do not support all the types, properties, and APIs available in the beta version. For details about accessing the beta API with the SDK, see Use the Microsoft Graph SDKs with the beta API.
Microsoft Graph SDKs use the v1.0 version of the API by default, and do not support all the types, properties, and APIs available in the beta version. For details about accessing the beta API with the SDK, see Use the Microsoft Graph SDKs with the beta API.
Microsoft Graph SDKs use the v1.0 version of the API by default, and do not support all the types, properties, and APIs available in the beta version. For details about accessing the beta API with the SDK, see Use the Microsoft Graph SDKs with the beta API.
Here is an example of the response. Note: The response object shown here may be truncated for brevity. All of the properties will be returned from an actual call.
Example 2: Creating a schema extension using just a name
Request
This example shows specifying just a schema name, courses, in the id property in the request, together with the JSON representation of the rest of the
properties in the schemaExtension object. Microsoft Graph will assign and return a unique string value in the response.
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);
Important
Microsoft Graph SDKs use the v1.0 version of the API by default, and do not support all the types, properties, and APIs available in the beta version. For details about accessing the beta API with the SDK, see Use the Microsoft Graph SDKs with the beta API.
Microsoft Graph SDKs use the v1.0 version of the API by default, and do not support all the types, properties, and APIs available in the beta version. For details about accessing the beta API with the SDK, see Use the Microsoft Graph SDKs with the beta API.
Microsoft Graph SDKs use the v1.0 version of the API by default, and do not support all the types, properties, and APIs available in the beta version. For details about accessing the beta API with the SDK, see Use the Microsoft Graph SDKs with the beta API.
Microsoft Graph SDKs use the v1.0 version of the API by default, and do not support all the types, properties, and APIs available in the beta version. For details about accessing the beta API with the SDK, see Use the Microsoft Graph SDKs with the beta API.
The response includes a unique string in the id property that is based on the schema name provided in the request, together with the rest of the newly created schema definition.
The value in id in the response is based on the format, ext{8-random-alphanumeric-chars}_{schema-name}.
Note: The response object shown here may be truncated for brevity. All of the properties will be returned from an actual call.
Example 3: Creating a schema extension setting the owner
Request
This example shows how to create a schema extension setting the owner. In this scenario, the user of the application might not be the owner of the application (for example if you are using Microsoft Graph Explorer). In this case you should set the owner property to the appId of an application you own, otherwise you won't be authorized to create a schema extension. Set the owner property in the request, together with the JSON representation of the rest of the
properties in the schemaExtension object.
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);
Important
Microsoft Graph SDKs use the v1.0 version of the API by default, and do not support all the types, properties, and APIs available in the beta version. For details about accessing the beta API with the SDK, see Use the Microsoft Graph SDKs with the beta API.
Microsoft Graph SDKs use the v1.0 version of the API by default, and do not support all the types, properties, and APIs available in the beta version. For details about accessing the beta API with the SDK, see Use the Microsoft Graph SDKs with the beta API.
Microsoft Graph SDKs use the v1.0 version of the API by default, and do not support all the types, properties, and APIs available in the beta version. For details about accessing the beta API with the SDK, see Use the Microsoft Graph SDKs with the beta API.
Microsoft Graph SDKs use the v1.0 version of the API by default, and do not support all the types, properties, and APIs available in the beta version. For details about accessing the beta API with the SDK, see Use the Microsoft Graph SDKs with the beta API.
The response includes the owner set to the supplied value in the request.
Note: The response object shown here may be truncated for brevity. All of the properties will be returned from an actual call.