Used by a learning provider to ingest or update the metadata for their content in Viva Learning. If the specified learning content doesn't yet exist for the specified provider, this operation creates the metadata for the new content. Otherwise, this operation replaces the metadata of the existing content.
Choose the permission or permissions marked as least privileged for this API. Use a higher privileged permission or permissions only if your app requires it. For details about delegated and application permissions, see Permission types. To learn more about these permissions, see the permissions reference.
Permission type
Least privileged permissions
Higher privileged permissions
Delegated (work or school account)
Not supported.
Not supported.
Delegated (personal Microsoft account)
Not supported.
Not supported.
Application
LearningContent.ReadWrite.All
Not available.
HTTP request
For a specific learning content based on its ID (primary key):
In the request body, supply only the values for properties that should be updated. Existing properties that aren't included in the request body maintains their previous values or be recalculated based on changes to other property values.
The following table specifies the properties that can be updated.
Property
Type
Description
additionalTags
String collection
Keywords, topics, and other tags associated with the learning content. Optional.
contentWebUrl
String
The content web URL for the learning content. Required.
contributors
String collection
The authors, creators, or contributors of the learning content. Optional.
createdDateTime
DateTimeOffset
The date and time when the learning content was created. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Optional.
description
String
The description or summary for the learning content. Optional.
duration
Duration
The duration of the learning content in seconds. The value is represented in ISO 8601 format for durations. Optional.
externalId
String
Unique external content ID for the learning content. Required.
format
String
The format of the learning content. For example, Course, Video, Book, Book Summary, Audiobook Summary. Optional.
isActive
Boolean
Indicates whether the content is active or not. Inactive content doesn't show up in the UI. The default value is true. Optional.
isPremium
Boolean
Indicates whether the learning content requires the user to sign-in on the learning provider platform or not. The default value is false. Optional.
isSearchable
Boolean
Indicates whether the learning content is searchable or not. The default value is true. Optional.
languageTag
String
The language of the learning content, for example, en-us or fr-fr. Required.
lastModifiedDateTime
DateTimeOffset
The date and time when the learning content was last modified. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Optional.
numberOfPages
Int32
The number of pages of the learning content, for example, 9. Optional.
skillTags
String collection
The skills tags associated with the learning content. Optional.
sourceName
String
The source name of the learning content, such as LinkedIn Learning or Coursera. Optional.
thumbnailWebUrl
String
The URL of learning content thumbnail image. Optional.
title
String
The title of the learning content. Required.
Response
If successful, this method returns a 202 Accepted response code and an updated learningContent object in the response body.
Examples
Example 1: Update the metadata of a learning content based on its ID
The following example shows a request that updates the metadata of a learning content based on its ID (primary key).
PATCH https://graph.microsoft.com/v1.0/employeeExperience/learningProviders/13727311-e7bb-470d-8b20-6a23d9030d70/learningContents/77029588-a660-46b6-ba58-3ce4d21d5678
Content-Type: application/json
{
"title": "Manage classes, resources, assessment, and planning in Microsoft Teams with Beedle",
"description": "A module to guide users through the various teaching and learning enhancements that Beedle provides within Microsoft Teams, with many examples of everyday application.",
"contentWebUrl": "https://learn.microsoft.com/learn/modules/manage-classes-resources-assessment-planning-beedle/",
"sourceName": "MsLearn",
"thumbnailWebUrl": "https://syndetics.com/index.aspx?isbn=9783319672175/LC.GIF",
"languageTag": "en-us",
"numberOfPages": 9,
"duration": "PT20M",
"format": "Book",
"createdDateTime": "2018-01-01T00:00:00Z",
"lastModifiedDateTime": "2021-04-01T04:26:06.1995367Z",
"contributors": [
"Lina Wagner",
"Lisa Richter"
],
"additionalTags": [
"Create private or public teams",
"Add members to teams"
],
"skillTags": [
"Create teams",
"Teams channels",
"Teams members"
],
"isActive": true,
"isPremium": false,
"isSearchable": true
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new LearningContent
{
Title = "Manage classes, resources, assessment, and planning in Microsoft Teams with Beedle",
Description = "A module to guide users through the various teaching and learning enhancements that Beedle provides within Microsoft Teams, with many examples of everyday application.",
ContentWebUrl = "https://learn.microsoft.com/learn/modules/manage-classes-resources-assessment-planning-beedle/",
SourceName = "MsLearn",
ThumbnailWebUrl = "https://syndetics.com/index.aspx?isbn=9783319672175/LC.GIF",
LanguageTag = "en-us",
NumberOfPages = 9,
Duration = TimeSpan.Parse("PT20M"),
Format = "Book",
CreatedDateTime = DateTimeOffset.Parse("2018-01-01T00:00:00Z"),
LastModifiedDateTime = DateTimeOffset.Parse("2021-04-01T04:26:06.1995367Z"),
Contributors = new List<string>
{
"Lina Wagner",
"Lisa Richter",
},
AdditionalTags = new List<string>
{
"Create private or public teams",
"Add members to teams",
},
SkillTags = new List<string>
{
"Create teams",
"Teams channels",
"Teams members",
},
IsActive = true,
IsPremium = false,
IsSearchable = true,
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.EmployeeExperience.LearningProviders["{learningProvider-id}"].LearningContents["{learningContent-id}"].PatchAsync(requestBody);
// THE CLI IS IN PREVIEW. NON-PRODUCTION USE ONLY
mgc employee-experience learning-providers learning-contents patch --learning-provider-id {learningProvider-id} --learning-content-id {learningContent-id} --body '{\
"title": "Manage classes, resources, assessment, and planning in Microsoft Teams with Beedle",\
"description": "A module to guide users through the various teaching and learning enhancements that Beedle provides within Microsoft Teams, with many examples of everyday application.",\
"contentWebUrl": "https://learn.microsoft.com/learn/modules/manage-classes-resources-assessment-planning-beedle/",\
"sourceName": "MsLearn",\
"thumbnailWebUrl": "https://syndetics.com/index.aspx?isbn=9783319672175/LC.GIF",\
"languageTag": "en-us",\
"numberOfPages": 9,\
"duration": "PT20M",\
"format": "Book",\
"createdDateTime": "2018-01-01T00:00:00Z",\
"lastModifiedDateTime": "2021-04-01T04:26:06.1995367Z",\
"contributors": [\
"Lina Wagner",\
"Lisa Richter"\
],\
"additionalTags": [\
"Create private or public teams",\
"Add members to teams"\
],\
"skillTags": [\
"Create teams",\
"Teams channels",\
"Teams members"\
],\
"isActive": true,\
"isPremium": false,\
"isSearchable": true\
}\
'
<?php
// THIS SNIPPET IS A PREVIEW VERSION OF THE SDK. NON-PRODUCTION USE ONLY
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new LearningContent();
$requestBody->setTitle('Manage classes, resources, assessment, and planning in Microsoft Teams with Beedle');
$requestBody->setDescription('A module to guide users through the various teaching and learning enhancements that Beedle provides within Microsoft Teams, with many examples of everyday application.');
$requestBody->setContentWebUrl('https://learn.microsoft.com/learn/modules/manage-classes-resources-assessment-planning-beedle/');
$requestBody->setSourceName('MsLearn');
$requestBody->setThumbnailWebUrl('https://syndetics.com/index.aspx?isbn=9783319672175/LC.GIF');
$requestBody->setLanguageTag('en-us');
$requestBody->setNumberOfPages(9);
$requestBody->setDuration(new \DateInterval('PT20M'));
$requestBody->setFormat('Book');
$requestBody->setCreatedDateTime(new \DateTime('2018-01-01T00:00:00Z'));
$requestBody->setLastModifiedDateTime(new \DateTime('2021-04-01T04:26:06.1995367Z'));
$requestBody->setContributors(['Lina Wagner', 'Lisa Richter', ]);
$requestBody->setAdditionalTags(['Create private or public teams', 'Add members to teams', ]);
$requestBody->setSkillTags(['Create teams', 'Teams channels', 'Teams members', ]);
$requestBody->setIsActive(true);
$requestBody->setIsPremium(false);
$requestBody->setIsSearchable(true);
$result = $graphServiceClient->employeeExperience()->learningProviders()->byLearningProviderId('learningProvider-id')->learningContents()->byLearningContentId('learningContent-id')->patch($requestBody)->wait();
# THE PYTHON SDK IS IN PREVIEW. FOR NON-PRODUCTION USE ONLY
graph_client = GraphServiceClient(credentials, scopes)
request_body = LearningContent(
title = "Manage classes, resources, assessment, and planning in Microsoft Teams with Beedle",
description = "A module to guide users through the various teaching and learning enhancements that Beedle provides within Microsoft Teams, with many examples of everyday application.",
content_web_url = "https://learn.microsoft.com/learn/modules/manage-classes-resources-assessment-planning-beedle/",
source_name = "MsLearn",
thumbnail_web_url = "https://syndetics.com/index.aspx?isbn=9783319672175/LC.GIF",
language_tag = "en-us",
number_of_pages = 9,
duration = "PT20M",
format = "Book",
created_date_time = "2018-01-01T00:00:00Z",
last_modified_date_time = "2021-04-01T04:26:06.1995367Z",
contributors = [
"Lina Wagner",
"Lisa Richter",
],
additional_tags = [
"Create private or public teams",
"Add members to teams",
],
skill_tags = [
"Create teams",
"Teams channels",
"Teams members",
],
is_active = True,
is_premium = False,
is_searchable = True,
)
result = await graph_client.employee_experience.learning_providers.by_learning_provider_id('learningProvider-id').learning_contents.by_learning_content_id('learningContent-id').patch(request_body)
Note: The response object shown here might be shortened for readability.
HTTP/1.1 202 Accepted
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#learningProviders('13727311-e7bb-470d-8b20-6a23d9030d70')/learningContents/$entity",
"id": "77029588-a660-46b6-ba58-3ce4d21d5678",
"externalId": "LP4471",
"title": "Manage classes, resources, assessment, and planning in Microsoft Teams with Beedle",
"description": "A module to guide users through the various teaching and learning enhancements that Beedle provides within Microsoft Teams, with many examples of everyday application.",
"contentWebUrl": "https://learn.microsoft.com/learn/modules/manage-classes-resources-assessment-planning-beedle/",
"sourceName": "MsLearn",
"thumbnailWebUrl": "https://syndetics.com/index.aspx?isbn=9783319672175/LC.GIF",
"languageTag": "en-us",
"numberOfPages": 9,
"duration": "PT20M",
"format": "Book",
"createdDateTime": "2018-01-01T00:00:00",
"lastModifiedDateTime": "2021-04-01T04:26:06.1995367Z",
"contributors": [
"Lina Wagner",
"Lisa Richter"
],
"additionalTags": [
"Create private or public teams",
"Add members to teams"
],
"skillTags": [
"Create teams",
"Teams channels",
"Teams members"
],
"isActive": true,
"isPremium": false,
"isSearchable": true
}
Example 2: Update the metadata of a learning content based on its external ID
The following example shows a request that updates the metadata of a learning content based on its external ID (secondary key).
Request
The following example shows the request.
PATCH https://graph.microsoft.com/v1.0/employeeExperience/learningProviders/13727311-e7bb-470d-8b20-6a23d9030d70/learningContents(externalId='LP4471')
Content-Type: application/json
{
"title": "Manage classes, resources, assessment, and planning in Microsoft Teams with Beedle",
"description": "A module to guide users through the various teaching and learning enhancements that Beedle provides within Microsoft Teams, with many examples of everyday application.",
"contentWebUrl": "https://learn.microsoft.com/learn/modules/manage-classes-resources-assessment-planning-beedle/",
"sourceName": "MsLearn",
"thumbnailWebUrl": "https://syndetics.com/index.aspx?isbn=9783319672175/LC.GIF",
"languageTag": "en-us",
"numberOfPages": 9,
"duration": "PT20M",
"format": "Book",
"createdDateTime": "2018-01-01T00:00:00",
"lastModifiedDateTime": "2021-04-01T04:26:06.1995367Z",
"contributors": [
"Lina Wagner",
"Lisa Richter"
],
"additionalTags": [
"Create private or public teams",
"Add members to teams"
],
"skillTags": [
"Create teams",
"Teams channels",
"Teams members"
],
"isActive": true,
"isPremium": false,
"isSearchable": true
}
Response
The following example shows the response.
Note: The response object shown here might be shortened for readability.
HTTP/1.1 202 Accepted
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#learningProviders('13727311-e7bb-470d-8b20-6a23d9030d70')/learningContents/$entity",
"id": "77029588-a660-46b6-ba58-3ce4d21d5678",
"externalId": "LP4471",
"title": "Manage classes, resources, assessment, and planning in Microsoft Teams with Beedle",
"description": "A module to guide users through the various teaching and learning enhancements that Beedle provides within Microsoft Teams, with many examples of everyday application.",
"contentWebUrl": "https://learn.microsoft.com/learn/modules/manage-classes-resources-assessment-planning-beedle/",
"sourceName": "MsLearn",
"thumbnailWebUrl": "https://syndetics.com/index.aspx?isbn=9783319672175/LC.GIF",
"languageTag": "en-us",
"numberOfPages": 9,
"duration": "PT20M",
"format": "Book",
"createdDateTime": "2018-01-01T00:00:00",
"lastModifiedDateTime": "2021-04-01T04:26:06.1995367Z",
"contributors": [
"Lina Wagner",
"Lisa Richter"
],
"additionalTags": [
"Create private or public teams",
"Add members to teams"
],
"skillTags": [
"Create teams",
"Teams channels",
"Teams members"
],
"isActive": true,
"isPremium": false,
"isSearchable": true
}