Adobe Learning Manager开发人员手册
概述
Adobe Learning Manager提供了RESTful API,使开发人员能够有效地集成和自定义应用程序或工作流。 《开发人员手册》提供有关如何使用这些API的指导,内容涵盖身份验证、数据模型以及与其他应用程序的集成等主题。 此外,本指南API参考文档可帮助开发人员创建与Adobe Learning Manager的各种功能交互的外部应用程序或后端工作流,这些功能包括课程创建、跟踪学习者进度、技能映射、认证、游戏化和成绩单。
本手册涵盖以下内容:
- OAuth2.0身份验证
- API对象模型
- 包括、字段和其他参数
- 真实使用案例
API使用场景
开发人员可以使用Learning Manager API增强或集成Learning Manager与其他企业应用程序。 您可以使用任何技术创建Web、桌面或移动应用程序。 开发人员可以访问Learning Manager数据,但您可以控制应用程序的使用位置和使用方式。
使用OAuth 2.0进行身份验证
要安全地访问Adobe Learning Manager API,您必须使用Adobe Learning Manager的OAuth 2.0机制进行身份验证。 此过程包括注册应用程序、生成授权代码、将其交换为刷新令牌以及最后使用刷新令牌获取访问令牌。
注册应用程序
将Adobe Learning Manager与外部应用程序集成以增强多功能性。 这些步骤包括访问集成管理员界面、注册应用程序以及获取客户端ID和密钥。 从Adobe Learning Manager生成OAuth 2.0身份验证令牌,包括授权、刷新和访问令牌。 使用OAuth 2.0流安全地验证和授权您的应用程序。 访问令牌的有效期为七天。
-
以集成管理员身份登录Adobe Learning Manager 。
-
在左侧窗格中选择 应用程序。
-
选择“注册”并添加以下信息:
-
应用程序名称:键入应用程序名称(最多50个字符)。
-
URL:您的公司或应用程序的正式URL。 用于标识和引用。
-
重定向域:指定Adobe Learning Manager在授权后可重定向到的域(例如,http://learningmanager.adobe.com)。 您可以指定多个有效的URL。
-
描述:应用程序功能的简要描述。
-
范围:选择六个可用选项之一以定义应用程序的范围。 根据您在此处提到的选择,您的应用程序可访问Learning Manager API端点。 例如,如果选择“学习者角色”,则应用程序可以只读访问所有Learning Manager学习者API端点。
- 管理员角色读取/写入权限:允许应用程序以管理员身份访问或修改数据。
- 学习者角色读/写权限:允许应用程序访问或修改学习者的数据。
- xAPI读/写访问权限:使应用程序能够访问和发送Experience API (xAPI)语句。
-
仅针对此帐户?
- 是 — 如果选择“是”,则其他帐户管理员无法看到该应用程序。
- 否 — 如果选择“否”,则其他帐户管理员也可以访问此应用程序,但他们需要使用应用程序ID来访问此应用程序。 应用程序ID在Learning Manager应用程序编辑模式下生成和显示。
-
-
选择 保存 以注册应用程序。
- 注册应用程序后,可在帐户中创建的应用程序列表中找到该应用程序。 选择应用程序,您除了会看到之前输入的字段外,还会看到以下内容:
- 应用程序ID:这是客户端ID。 此ID将告知Adobe Learning Manager正在请求访问的应用程序。 它包含在用于识别应用程序的API请求中。
- 应用程序密钥:用于在令牌交换步骤(例如,请求刷新令牌或访问令牌时)对应用程序进行身份验证和验证其身份。
获取访问令牌
获取授权代码
在获取客户端ID和客户端密钥后,可使用它们请求访问令牌,该令牌用于验证API调用。
要开始授权代码流,请在浏览器中添加以下URL:
GET https://learningmanager.adobe.com/oauth/o/authorize?client_id=<Enter your clientId>&redirect_uri=<Enter a url to redirect to>&state=<Any String data>&scope=<one or more comma separated scopes>&response_type=CODE
用户授权应用程序后,Adobe Learning Manager将重定向到指定的redirect_uri,并附加一个查询参数:
https://yourapp.com/callback?code=abc123xyz
参数代码与重定向uri一起附加。
从代码获取刷新令牌
获取代码后,请使用任意API工具,并添加以下POST请求:
https://learningmanager.adobe.com/oauth/token
请求正文(x-www-form-urlencoded):
grant_type=authorization_code
&code=abc123xyz
&client_id=<your_client_id>
&client_secret=<your_client_secret>
&redirect_uri=<your_redirect_url>
响应
{
"access_token": "eyJhbGciOiJIUzI1...",
"refresh_token": "xTjlfz0jCk6gF1...",
"expires_in": 604800,
"token_type": "Bearer"
}
使用授权标头中的access_token发出经过身份验证的API请求。
在API调用中使用访问令牌
使用以下方法验证访问令牌:
GET https://learningmanager.adobe.com/oauth/token/check?access_token=<access_token>
访问令牌的有效期为七天。 七天后,您必须使用刷新令牌生成新的访问令牌。 如果在现有访问令牌仍然有效的情况下用刷新令牌生成了新的访问令牌,则现有令牌将失效。
获取用于测试和开发的访问令牌
使用Adobe Learning Manager API时,开发人员需要有效的OAuth 2.0访问令牌才能对API请求进行身份验证。 通过标准OAuth流程生成此令牌可能会很复杂且耗时,尤其是在快速测试、学习或开发时。 Adobe Learning Manager提供了一个令牌生成工具来简化此过程。
此工具在以下期间是理想的:
-
概念验证(POC)版本
-
早期开发
-
API集成问题疑难解答
这些令牌仅供您在开发和调试阶段使用。 请记住,测试令牌会准许访问您的Adobe Learning Manager数据,因此安全地处理它们至关重要。 切勿与他人共享测试令牌、在生产应用程序中使用这些令牌,或将其包含在公共代码存储库中。 像密码一样对待它们,以确保您的帐户和数据的安全。
-
以集成管理员身份登录到Adobe Learning Manager 。
-
选择 开发人员资源,然后 选择用于测试和开发的访问令牌。
-
键入创建应用程序后获取的 客户端ID 以获取OAuth代码。 然后选择 提交。
-
添加 客户端ID 和 客户端密钥 以获取刷新令牌。 然后选择 提交。 OAuth已在上一步中预填充。
-
添加客户端ID和客户端密钥以获取访问令牌。 然后选择 提交。
-
添加访问令牌并选择“提交”以获取访问令牌详细信息。
选择 提交 后,访问令牌将得到验证,您将收到以下JSON对象:
{
"access_token": "access token",
"refresh_token": "refresh token",
"user_role": "admin",
"account_id": "1234",
"user_id": "123456",
"expires_in": 604800
}
与以往一样,用于测试的访问令牌将在七天后过期。
使用API工具测试端点
虽然您可以使用任何第三方API测试工具,但我们将使用Postman来测试端点。 本文档中的示例使用Postman测试端点。
-
打开Postman并创建一个新请求。
-
选择授权选项卡。
-
将身份验证类型设置为持有者令牌。
-
将您从上一节中获得的访问令牌粘贴到“令牌”字段中。
-
在“标题”选项卡中添加以下内容。
- 键:接受
- 值: application/json
-
在URL字段中输入您的API端点。 示例: https://learningmanager.adobe.com/learningManager/api/v2/users
有关详细信息,请参阅Adobe Learning Manager API参考。 -
选择发送以提出API请求。
API类型
管理员API
Adobe Learning Manager的管理员API允许管理员大规模地自动执行和管理学习操作。
使用管理API,开发人员可以:
- 管理用户和组:创建、更新和删除用户,或将用户分配给组。
- 注册学习者:自动注册课程、学习路径或认证。
- 跟踪学习者进度:检索课程/模块进度、测验分数和完成状态。
- 生成报告:访问有关学习者活动、参与和绩效的数据。
- 管理内容:创建并组织课程和学习对象。
有关详细信息,请查看Adobe Learning Manager API引用。
学习者API
学习者API专为经过身份验证的用户(学习者)设计,通过它,可访问特定于学习者的信息。 这些API允许执行以下任务:
- 访问学习者的课程和进度
- 获取获得的徽章或认证
- 更新学习者个人资料信息
- 查看与已完成课程关联的技能
关键点:
- 这些API需要经过身份验证的用户令牌,以确保数据安全和隐私。
- 这些API适用于用户已完全注册并登录,而不是匿名或共享用户的情况。
有关详细信息,请查看Adobe Learning Manager API引用。
API设计和常用参数
利用API,开发人员可以访问关键Learning Manager资源,例如用户、课程、技能、认证和学习计划等。 它遵循REST原则,使用HTTP方法(GET、POST、PUT、DELETE)进行数据操作。
常用参数
以下是每种情况的简要说明:
包括
在构建自定义应用程序或无头LMS时,可使用Adobe Learning Manager API检索有用信息。 该API端点还可以包括额外的“include”参数,以检索与默认接收的数据相关的额外信息。 这些关系是数据模型关系,例如,在调用以获取用户详细信息时,您将收到用户信息以及经理ID与Adobe Learning Manager帐户ID的关系。 使用include参数,您可以提取更多详细信息以及用户详细信息,例如其经理详细信息和Adobe Learning Manager帐户详细信息。
简而言之,include 参数在API调用中使用,用于在单个响应中获取相关(链接的)资源和主要资源。 当您希望访问嵌套数据或相关数据(如课程模块或映射到学习者的技能)而不进行单独的API调用时,此功能非常有用。
主要优点:
- 减少多个API调用:避免手动请求每个相关资源。
- 提高效率:加快开发、减少服务器负载并加快数据渲染。
- 确保数据一致性:在一致的快照中检索所有相关数据。
如何使用include参数
将include参数附加到API URL并指定要包含的相关实体。
公用包含路径
示例1
在终结点中使用userID参数检索用户的详细信息。
https://learningmanager.adobe.com/primeapi/v2/users/<userID>
GET https://learningmanager.adobe.com/primeapi/v2/users/<userID>
在响应中,您可以看到数据对象与帐户和用户的经理有关系。
"relationships": {
"account": {
"data": {
"id": "1010",
"type": "account"
}
},
"manager": {
"data": {
"id": "3400476",
"type": "user"
}
}
}
使用请求中的include参数,您可以检索有关管理器的详细信息,如下所示:
GET https://learningmanager.adobe.com/primeapi/v2/users/<userid>?include=manager
示例2
要检索课程详细信息,请使用端点调用中的include参数。 以下端点获取课程信息及其关系。
GET https://learningmanager.adobe.com/primeapi/v2/learningObjects/<courseID>
这些关系在响应中显示如下:
- 实例
- 技能
- 作者
"relationships": {
"authors": {
"data": [
{
"id": "3400468",
"type": "user"
}
]
},
"instances": {
"data": [
{
"id": "course:16444_31598",
"type": "learningObjectInstance"
}
]
},
"skills": {
"data": [
{
"id": "course:16444_1796",
"type": "learningObjectSkill"
},
{
"id": "course:16444_3103",
"type": "learningObjectSkill"
}
]
}
}
其他关系可能包括(上述回复中不存在):
- 前提学习对象
- 补充学习对象
- supplementaryResources
要获取实例和技能的详细数据,请在include参数中包含“实例,技能”。
GET https://learningmanager.adobe.com/primeapi/v2/learningObjects/<courseID>?include=instances,skills
现在,如果您想检索更多与课程实例关联的数据,如loResources(课程的模块信息),请应用loResources作为嵌套包含。
GET https://learningmanager.adobe.com/primeapi/v2/learningObjects/<courseID>?include=instances.loResources
此外,还可以将技能和实例与嵌套的“包含”相结合。
GET https://learningmanager.adobe.com/primeapi/v2/learningObjects/<courseID>?include=instances,instances.loResources,skills
其他包含筛选器
字段
API对象的属性和关系称为字段。 在API调用中将字段用作参数以从模型中检索特定属性。 如果不使用Fields参数,则API调用将检索所有可用属性。
例如,在以下API调用中,字段[skill]=name仅获取技能模型的名称属性。
GET https://learningmanager.adobe.com/primeapi/v2/users/3400490/userSkills/3400490_1796_1?include=skillLevel.skill&fields[skill]=name
分页
API分页是API中使用的一种技术,用于将大型数据集拆分为更小、可管理的块(称为页面),而不是在单个响应中返回整个数据。
分页可以减少客户端和服务器的负载,限制响应大小以避免服务器瓶颈,或者对于在表中显示数据或一次显示一页非常有用。
Adobe Learning Manager API中的分页工作方式
Adobe Learning Manager API通过如下参数支持分页:
- 第[页限制]:每页的记录数。
- 页面[偏移]:要跳过的记录数。
- 页面[光标]:指向下一组结果的指针。 基于光标的分页不使用基于偏移的分页(跳过一些记录),而是使用从API返回的唯一标记来获取结果的下一页。
下面介绍如何在API中使用分页:
页[限制]
虽然https://learningmanager.adobe.com/primeapi/v2/users在单个调用中返回所有用户和相关信息,但使用第[页限制]会将结果数限制为指定值。
要在单个调用中仅返回5条用户记录,请使用以下API:
GET https://learningmanager.adobe.com/primeapi/v2/users?page[limit]=5
页[偏移]
使用此API调用返回三个用户记录,跳过前五个用户,然后从第六个用户开始。
GET https://learningmanager.adobe.com/primeapi/v2/users?page[limit]=3&page[offset]=5
页[光标]
-
首先请求限制为5的第一页。
code language-none GET https://learningmanager.adobe.com/primeapi/v2/users?page[limit]=5
-
从links.next复制光标值,并在下一个请求中使用它:
code language-none "links": { "self": "https://learningmanager.adobe.com/primeapi/v2/users?page[limit]=5", "next": "https://learningmanager.adobe.com/primeapi/v2/users?page[limit]=5&page[cursor]=3400482" }
-
发送以下请求:
code language-none GET https://learningmanager.adobe.com/primeapi/v2/users?page[limit]=5&page[cursor]=3400482
这将返回下一组10条记录,从上一页中的最后一个项目之后开始。
筛选条件
筛选器参数允许您根据一个或多个字段值缩小API结果的范围。
Adobe Learning Manager API提供筛选参数的各种变体以缩小响应范围。
有关详细信息,请查看Adobe Learning Manager API引用。
此示例说明如何过滤学习者使用端点注册的作业辅助以及过滤参数:
GET https://learningmanager.adobe.com/primeapi/v2/users/3400480/enrollments?filter.loTypes=jobAid
排序
sort参数用于根据一个或多个字段以升序或降序对API结果进行排序。
Adobe Learning Manager提供了各种排序选项来对API响应进行排序。 有关详细信息,请查看Adobe Learning Manager API引用。
为扩展前面的示例,您现在可以按注册日期对用户的学习计划注册进行排序(升序)。
GET https://learningmanager.adobe.com/primeapi/v2/users/3400480/enrollments?filter.lotypes=learningProgram&sort=dateEnrolled
API模型概览
Adobe Learning Manager API允许开发人员将Learning Manager对象作为RESTful资源进行访问。 每个 API 端点都表示一个资源,通常为一个徽章之类的对象实例,或此类对象的集合。然后,开发人员使用PUT、GET、POST和DELETE等HTTP谓词对这些对象(集合)执行CRUD操作。
学习者API和端点
以下是处理学习者数据的关键API端点。 这些API指导开发人员与学习者信息交互、跟踪进度、管理注册和检索课程内容。
检索所有学习者的详细信息
获取学习者详细信息(姓名、电子邮件、UUID、用户资料等)。 使用API列出帐户中的所有学习者。
GET https://learningmanager.adobe.com/primeapi/v2/users
检索特定学习者的详细信息
如果要按ID查看学习者的配置文件,请使用以下API进行调用。
GET https://learningmanager.adobe.com/primeapi/v2/users/<userID>
列出所有课程、学习计划、工作辅助和认证
检索学习者注册、已完成或管理员已启用的所有学习对象的详细信息。
GET https://learningmanager.adobe.com/primeapi/v2/learningObjects
获取特定学习对象的详细信息
获取有关学习对象的详细信息。 它包括创建日期、发布日期、更新日期和其他信息。
GET https://learningmanager.adobe.com/primeapi/v2/learningObjects/<LearningObjectID>
检索链接到课程的技能列表
显示分配给帐户中所有学习者的技能。
GET https://learningmanager.adobe.com/primeapi/v2/skills
获取技能级别和徽章信息
检查学习者在技能学习旅程中的进度。
GET https://learningmanager.adobe.com/primeapi/v2/skills/<skillID>?include=levels
为帐户创建的所有徽章的列表
调用以下端点以检索为组织中的帐户创建的所有徽章的列表。
GET https://learningmanager.adobe.com/primeapi/v2/badges
检索徽章的信息
获取有关徽章的详细信息,包括徽章名称、徽章图像URL和徽章的状态。
GET https://learningmanager.adobe.com/primeapi/v2/badges/<skillID>
这将生成以下响应:
{
"links": {
"self": "https://learningmanager.adobe.com/primeapi/v2/badges/499"
},
"data": {
"id": "499",
"type": "badge",
"attributes": {
"imageUrl": "https://cpcontentsdev.adobe.com/public/account/1010/accountassets/1010/badges/test_57a5ab00555a475a8fc6671562184dc9.png",
"name": "penguins",
"state": "Retired"
}
}
}
其他API用法示例
创建用户
-
使用终结点:
code language-none POST https://learningmanager.adobe.com/primeapi/v2/users
处理来自API正文或JSON负载的属性以生成用户,然后向用户提供填写了相应的用户ID。
-
使用以下负载作为正文:
code language-none { "data": { "type": "user", "attributes": { "email": "bob@example.com", "name": "Bob", "userType": "INTERNAL" } } }
有三种必需的属性:
- 电子邮件:用户的电子邮件ID。 对于每个用户,此值应该是唯一的。
- 名称:用户的名称。
- userType:目前,只能使用此端点添加内部用户。 userType应为“INTERNAL”。
您将收到以下JSON对象:
{
"links": {
"self": "https://learningmanager.adobe.com/primeapi/v2/users"
},
"data": {
"id": "13386404",
"type": "user",
"attributes": {
"avatarUrl": "https://cpcontents.adobe.com/public/images/default_user_avatar.svg",
"email": "bob@example.com",
"name": "Bob",
"pointsEarned": 0,
"pointsRedeemed": 0,
"preferredResolution": "AUTO",
"profile": "Employee",
"roles": [
"Learner"
],
"state": "ACTIVE",
"userType": "Internal",
"userUniqueId": "bob@example.com"
},
"relationships": {
"account": {
"data": {
"id": "1010",
"type": "account"
}
},
"manager": {
"data": {
"id": "3400468",
"type": "user"
}
}
}
}
}
删除用户
-
获取要删除的用户的用户ID。
code language-none GET https://learningmanager.adobe.com/primeapi/v2/users/<userID>
-
然后使用DELETE进行以下调用:
code language-none DELETE https://learningmanager.adobe.com/primeapi/v2/users/<userID>
此时会显示204响应。 204响应代码表示成功,但没有任何内容可返回。 服务器已成功处理请求,但没有要提供给客户端的任何数据。
检索用户的详细信息后,用户的状态现在为 已删除。
更新用户详细信息
- 使用v2 API更新用户的用户详细信息。 学习者可以修改bio、uiLocale、contentLocale、时区。 对于大型帐户,这些是异步调用。 还有许多其他用户属性可以使用此API端点进行更新。 使用/users/{id}端点,其中id是要更新其详细信息的用户的用户ID。
PATCH https://learningmanager.adobe.com/primeapi/v2/users/<userID>
在请求负载中添加以下内容以从上一部分更新ID为<userID>
的用户。
更改负载中的任何字段。
{
"data": {
"id": "3400468",
"type": "user",
"attributes": {
"avatarUrl": "https://cpcontents.adobe.com/public/images/default_user_avatar.svg",
"binUserId": "3e6d571f-3956-44db-be69-8e458bde649f",
"bio": "Manager",
"contentLocale": "de-DE",
"email": "user@example.com",
"enrollOnClick": true,
"fields": {
"Web": "Web",
"newfororder": "newvalue",
"location": "New",
"test1": "b"
},
"gamificationEnabled": true,
"lastLoginDate": "2025-04-30T09:30:51.000Z",
"metadata": {
"level": "5",
"expertise": "java",
"sport": "tennis"
},
"name": "John Adams",
"pointsEarned": 8600,
"pointsRedeemed": 0,
"preferredResolution": "AUTO",
"profile": "Employee",
"roles": [
"Learner",
"Admin",
"Author",
"Instructor",
"Integration Admin",
"Manager"
],
"state": "ACTIVE",
"timeZoneCode": "213",
"uiLocale": "en-US",
"userType": "Internal",
"userUniqueId": "user@example.com"
},
"relationships": {
"account": {
"data": {
"id": "1010",
"type": "account"
}
}
}
}
}
呼叫后,用户的详细信息将更新。
创建外部个人资料
外部个人资料是指为外部学习者创建的用户个人资料,这些外部学习者通常不属于组织的内部用户群。 这些学习者可能包括需要参加组织提供的培训或认证计划的客户、合作伙伴、供应商、加盟商或临时承包商。
-
使用以下端点:
code language-none POST https://learningmanager.adobe.com/primeapi/v2/externalProfiles
-
使用以下负载作为正文:
{
"data": {
"type": "externalProfile",
"attributes": {
"name": "Jonas Albertson",
"expiry": "2027-12-31T18:29:59.000Z",
"managerEmail": "jonas@acme.com",
"seatLimit": 10
}
}
}
有效负载具有以下属性:
- 名称:外部用户的名称。
- 到期:用户在Adobe Learning Manager中注册的到期日期(采用ISO-8601格式)。
- managerEmail:合作伙伴公司的用户经理的电子邮件地址。
- seatLimit:合作伙伴组织允许的名额数。
进行呼叫后,您将收到以下响应:
{
"links": {
"self": "https://learningmanager.adobe.com/primeapi/v2/externalProfiles"
},
"data": {
"id": "18805",
"type": "externalProfile",
"attributes": {
"accessKey": "8gte2ne7f4r14",
"enabled": true,
"expiry": "2027-12-31T18:29:59.000Z",
"managerEmail": "jonas@acme.com",
"name": "Jonas Albertson",
"seatLimit": 10,
"url": "https://learningmanager.adobe.com/eplogin?groupid=18805&accesskey=8gte2ne7f4r14"
}
}
}
这意味着外部用户已成功添加到Adobe Learning Manager。 发送响应用户的URL,用户可通过该URL在平台上注册。
提取包含用户ID和经理详细信息的用户报告
可以直接从管理员用户界面(管理员 > 用户 > 内部)下载用户报告。 但是,报告不会返回用户ID和相关经理的详细信息。
使用作业API下载报告。 作业API有助于生成报告、批量操作(注册或徽章分配)、认证完成或徽章生成。
下载报告的方法如下:
-
将以下负载添加到作业API。
code language-none { "data": { "type": "job", "attributes": { "description": "description of your choice", "jobType": "generateUsers", "payload":{ "expandMetadata":true } } } }
-
使用以下端点。
code language-none POST https://learningmanager.adobe.com/primeapi/v2/jobs
-
从响应中复制作业ID。
code language-none { "links": { "self": "https://learningmanager.adobe.com/primeapi/v2/jobs" }, "data": { "id": "43118", "type": "job", "attributes": { "dateCreated": "2025-05-26T06:35:35.000Z", "description": "description of your choice", "jobType": "generateUsers", "payload": { "expandMetadata": true }, "status": { "code": "Submitted" } } } }
在响应中,作业ID为43118。
-
复制ID后,使用作业API中的ID下载报告。
code language-none GET https://learningmanager.adobe.com/primeapi/v2/jobs/43118
-
从响应中复制S3 URL。
-
将URL粘贴到浏览器中。 浏览器会提示您保存或打开CSV文件。 将文件保存在您的计算机上。
下载的文件包含以下各列:
internalUserID、userEmail、customerDefinedUniqueUserId、name、managerEmail、userType、state、excludedFromGamification、pointsEarned、profile、roles、dateCreated、lastLoginDate、dateDeleted、uiLocale、contentLocale、timeZoneCode、userSource、group、Active fields、metadata和LastSocialActivityActivityDate。
使用作业API生成徽章
-
获取组织中用户的徽章列表。 使用以下端点:
code language-none GET https://learningmanager.adobe.com/primeapi/v2/users/3400476/userBadges
其中3400476是用户ID。
-
从响应中复制徽章ID。 例如,3400476_759_COMPETENCY_1796_1是徽章ID。
code language-none { "id": "3400476_759_COMPETENCY_1796_1", "type": "userBadge", "attributes": { "assertionUrl": "https://cpcontentsdev.adobe.com/public/accountassets/1010/badges/assertions/a99566b5aa8f4cfa92380581733c63a9_1626278856926.json", "dateAchieved": "2016-02-25T08:45:25.000Z", "modelType": "skillLevel" }, "relationships": { "badge": { "data": { "id": "759", "type": "badge" } }, "learner": { "data": { "id": "3400476", "type": "user" } }, "model": { "data": { "id": "1796_1", "type": "skillLevel" } } } }
-
创建负载并在负载中指定徽章ID 。 有效负载示例如下:
code language-none { "data": { "type": "job", "attributes": { "description": "Acme Corp Badge", "jobType": "generateUserBadge", "payload": { "userBadgeId": "3400476_759_COMPETENCY_1796_1" } } } }
呼叫后,您将在响应中获取作业ID。
-
从响应中获取作业ID,并在以下终结点中使用作业ID进行调用。
code language-none GET https://learningmanager.adobe.com/primeapi/v2/jobs/<jobsID>
-
从响应中复制徽章URL,并在浏览器中打开该URL。 证书将作为PDF下载。
在Adobe Learning Manager中创建用户
POST/users端点可帮助您使用无头模式创建用户。 创建包含详细信息的用户,例如AdobeLearning Manager原生用户界面中的注册流程。
例如,
POST https://learningmanager.adobe.com/primeapi/v2/users
将以下正文添加到请求:
{
"data":
{
"type": "user",
"attributes": {
"bio": "",
"contentLocale": "fr-FR",
"email": "user@work.com",
"enrollOnClick": true,
"fields": {
"Learning Categories": [
"Business"
],
"Categories": "IT"
},
"gamificationEnabled": true,
"name": "Test User",
"profile": "Engineer",
"userType": "INTERNAL",
"userUniqueId": "user@work.com"
},
"relationships": {
"account": {
"data": {
"id": "108079",
"type": "account"
}
}
}
}
}
进行调用后,将显示以下响应:
{
"links": {
"self": "https://learningmanager.adobe.com/primeapi/v2/users"
},
"data": {
"id": "13385627",
"type": "user",
"attributes": {
"avatarUrl": "https://cpcontents.adobe.com/public/images/default_user_avatar.svg",
"email": "user@work.com",
"name": "Test User",
"pointsEarned": 0,
"pointsRedeemed": 0,
"preferredResolution": "AUTO",
"profile": "Engineer",
"roles": [
"Learner"
],
"state": "ACTIVE",
"userType": "Internal",
"userUniqueId": "user@work.com"
},
"relationships": {
"account": {
"data": {
"id": "1010",
"type": "account"
}
},
"manager": {
"data": {
"id": "3400468",
"type": "user"
}
}
}
}
}
新用户将添加到Adobe Learning Manager。
L1帖子反馈
-
检索学习者的课程、实例和注册数据。 使用以下终结点:
code language-none GET /enrollments
-
检查是否为该课程实例启用了L1反馈。
code language-none GET https://learningmanager.adobe.com/primeapi/v2/learningObjects/<loID>/instances/<loInstanceID>/l1Feedback
-
提交L1反馈。
code language-none POST /enrollments/{id}/l1Feedback
所需负载示例:
{
"data": {
"id": "course:7454218_10333537_11257863",
"type": "feedback",
"attributes": {
"questions": [
{
"answer": "8",
"questionId": "1",
"mandatory": true,
"questionType": "scaleTen"
}
],
"score": 80
}
}
}
获取课程的模块级别信息
-
按ID检索学习对象的详细信息。
code language-none GET https://learningmanager.adobe.com/primeapi/v2/learningObjects/<loID>
code language-none { "links": { "self": "https://learningmanager.adobe.com/primeapi/v2/learningObjects/course:1171899" }, "data": { "id": "course:1171899", "type": "learningObject", "attributes": { "authorNames": [ "James Adams" ], "dateCreated": "2017-11-01T15:28:09.000Z", "datePublished": "2017-11-01T15:28:20.000Z", "dateUpdated": "2017-11-01T15:28:20.000Z", "duration": 60, "effectiveModifiedDate": "2017-11-01T15:28:20.000Z", "effectivenessIndex": 0, "enrollmentType": "Self Enroll", "hasOptionalLoResources": false, "hasPreview": false, "isExternal": false, "isMqaEnabled": false, "isPrerequisiteEnforced": false, "isSubLoOrderEnforced": false, "loFormat": "Self Paced", "loResourceCompletionCount": 3, "loType": "course", "moduleResetEnabled": false, "state": "Published", "unenrollmentAllowed": true, "catalogLabels": [ { "catalogLabelValueIds": [ { "name": "Sales", "id": "catalogLabel:13_31" } ], "description": "", "mandatory": false, "name": "Department", "values": [ "Sales" ] } ], "localizedMetadata": [ { "locale": "en-US", "name": " Test course 2" } ], "rating": { "averageRating": 0, "ratingsCount": 0 } }, "relationships": { "authors": { "data": [ { "id": "3400468", "type": "user" } ] }, "instances": { "data": [ { "id": "course:1171899_2067352", "type": "learningObjectInstance" } ] }, "skills": { "data": [ { "id": "course:1171899_1797", "type": "learningObjectSkill" } ] } } } }
-
使用include参数检索以下内容:
a.列出学习对象的所有模块。
code language-none GET https://learningmanager.adobe.com/primeapi/v2/learningObjects/course:1171899?include=instances.loResources
b.列出模块中的所有内容。
code language-none GET https://learningmanager.adobe.com/primeapi/v2/learningObjects/course:1171899?include=instances.loResources.resources
检查模块进度
-
使用课程ID从目录中检索学习对象。
code language-none GET https://learningmanager.adobe.com/primeapi/v2/learningObjects?page[limit]=10&filter.loTypes=course&sort=name&filter.ignoreEnhancedLP=true&id=<courseID>
-
使用注册ID获取学习者的注册详细信息。
code language-none GET https://learningmanager.adobe.com/primeapi/v2/enrollments/<enrollmentID>
从响应中复制学习对象资源等级ID。
-
在以下终结点中使用该ID。
code language-none GET https://learningmanager.adobe.com/primeapi/v2/loResourceGrades/<courseResourceGradeID>
您将在响应中获取有关模块进度的信息。
实施学习者模拟
在使用Adobe Learning Manager作为后端实施无头LMS时,组织可能需要支持人员模拟学习者以进行故障排除或获取帮助。 API驱动的模拟方法可确保安全访问,同时保持学习者凭据的机密性,并支持会话状态中的无缝过渡。
Adobe Learning Manager通过一个专用的API使学习者可以在无头LMS环境中进行模拟。 该功能允许支持人员临时采用学习者的身份,使他们能够诊断问题、测试功能或通过模拟学习者的体验提供实际操作帮助。 使用缓存的管理访问令牌激活模拟,该令牌用于以编程方式生成学习者访问令牌。 通过此流程,系统可像以学习者身份登录一样运行。
API终结点详细信息
POST /oauth/learnerToken
完整URL示例
https://learningmanager.adobe.com/oauth/o/learnerToken?learner_email=foo@acme.com&force=false
查询参数:
- learner_email: (字符串)要模拟的学习者电子邮件。
- force: (布尔值)是否强制生成新令牌(如果存在)。
请求正文:
{
"client_id": "your-client-id",
"client_secret": "your-client-secret",
"refresh_token": "your-admin-refresh-token"
}
示例响应:
{
"access_token": "generated-token",
"refresh_token": "new-refresh-token",
"user_role": "learner",
"account_id": "123456",
"user_id": "7891011",
"expires_in": 604800
}
示例cURL:
curl --location --request POST 'https://learningmanager.adobe.com/oauth/o/learnerToken?learner_email=foo@acme.com&force=false' \
--header 'Content-Type: application/json' \
--data-raw '{
"client_id": "xxxx",
"client_secret": "xxxx",
"refresh_token": "xxxx"
}'
错误代码
使用Adobe Learning Manager (Adobe Learning Manager) API时,开发人员可能会在请求期间遇到各种HTTP错误代码。 这些错误提供有关错误原因以及如何修复的重要反馈。 了解这些代码有助于开发人员快速排除问题故障、提高API可靠性并确保更顺畅的集成。 下表提供了Adobe Learning Manager API返回的常见HTTP错误代码的指南,以及这些错误发生的说明和典型情况。 任何构建、测试或调试连接到Adobe Learning Manager的应用程序时,本节都至关重要。
Adobe Learning Manager API严格要求此内容类型。