Adobe Learning Manager 開發者手冊
概觀
Adobe Learning Manager 提供 RESTful API,讓開發者能有效整合與客製化應用程式或工作流程。 開發者手冊提供了如何使用這些 API 的指引,涵蓋認證、資料模型及與其他應用程式整合等主題。 此外,本指南 API 參考文件 協助開發者建立與 Adobe Learning Manager 各種功能互動的外部應用程式或後端工作流程,包括課程建立、學習進度追蹤、技能映射、認證、遊戲化及成績單。
本手冊涵蓋以下內容:
- OAuth2.0 認證
- API 物件模型
- 包含、欄位及其他參數
- 實際應用案例
API 使用情境
開發者可利用 Learning Manager API 來增強或整合 Learning Manager 與其他企業應用程式。 你可以使用任何技術來建立網頁、桌面或行動應用程式。 開發者可以存取 Learning Manager 的資料,但你可以控制應用程式的使用地點與方式。
使用 OAuth 2.0 進行認證
若要安全存取 Adobe Learning Manager API,您必須使用 Adobe Learning Manager 的 OAuth 2.0 機制進行認證。 這個過程包括註冊你的應用程式、產生授權碼、將其換成刷新令牌,最後用刷新令牌取得存取權杖。
註冊應用程式
將 Adobe Learning Manager 與外部應用程式整合,提升彈性。 步驟包括存取整合管理員介面、註冊應用程式,以及取得客戶端 ID 與 Secret。 從 Adobe Learning Manager 產生 OAuth 2.0 認證權杖,包括授權、刷新及存取權杖。 使用 OAuth 2.0 流程來安全認證並授權你的應用程式。 存取憑證的有效期為七天。
-
以整合管理員身份登入 Adobe Learning Manager。
-
在左側窗格選擇 Applications 。
-
請選擇 Register 並新增以下資訊:
-
Application Name: 請輸入您的申請名稱(最多 50 個字元)。
-
URL:您公司或應用程式的官方網址。 用於識別與參考。
-
Redirect Domains: 指定授權後 Adobe Learning Manager 可重定向的網域(例如 http://learningmanager.adobe.com)。 你可以指定多個有效的網址。
-
Description:應用程式的功能簡要說明。
-
Scopes:從六個可用選項中選擇一個來定義您的申請範圍。 根據你在這裡提到的選擇,Learning Manager API 端點對你的應用程式是可存取的。 例如,如果你選擇了學習者角色讀取權限,那麼所有學習管理工具的學習者 API 端點對你的應用程式來說都是唯讀存取。
- 管理員角色讀寫存取權限:允許應用程式以管理員身份存取或修改資料。
- 學習者角色讀寫存取權:允許應用程式存取或修改學習者的資料。
- xAPI 讀寫存取:使應用程式能夠存取並傳送 Experience API(xAPI)語句。
-
For this account only?
- Yes - 若選擇「是」,則該應用程式對其他帳號管理員不見。
- No - 如果你選擇「否」,其他帳號管理員也可以存取此應用程式,但他們必須使用應用程式 ID 才能存取此應用程式。 應用程式 ID 會在學習管理員應用程式編輯模式中產生並顯示。
-
-
選擇 Save 註冊申請。
- 註冊申請後,該申請會在帳號中建立的申請清單中顯示。 選擇申請表後,你會看到以下內容,除了先前輸入的欄位外:
- 應用程式 ID:這是用戶端 ID。 這個 ID 告訴 Adobe Learning Manager 正在請求存取權限的應用程式。 它包含在 API 請求中用來識別應用程式。
- 應用程式秘密:用於在令牌交換步驟中驗證應用程式的身份(例如請求刷新令牌或存取令牌時)。
取得存取權杖
取得授權碼
取得 Client ID 和 Client Secret 後,利用它們請求存取權杖,用來驗證 API 呼叫。
要開始授權碼流程,請在瀏覽器中新增以下網址:
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
參數代碼會隨 redirect 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>
存取憑證有效期為七天。 七天後,你必須使用刷新代幣產生新的存取權杖。 如果你在現有存取權杖仍然有效的情況下,從 refresh token 產生新的存取權杖,現有的權杖會被回傳。
取得存取權杖以進行測試與開發
在使用 Adobe Learning Manager API 時,開發者需要有效的 OAuth 2.0 存取權杖來驗證 API 請求。 透過標準 OAuth 流程產生此代幣可能複雜且耗時,尤其用於快速測試、學習或開發。 Adobe Learning Manager 提供一個代幣產生工具,以簡化此流程。
此工具的理想用途包括:
-
概念驗證(POC)建置
-
早期開發階段
-
故障排除 API 整合問題
這些代幣僅供您在開發與除錯階段個人使用。 請記得,測試憑證會授權存取你的 Adobe Learning Manager 資料,因此必須安全管理。 切勿將測試標記分享給他人,也不要在生產應用程式中使用,或將它們納入公開程式碼庫。 把它們當作密碼來對待,以確保你的帳號和資料安全。
-
以整合管理員身份登入 Adobe Learning Manager。
-
選擇, Developer Resources 然後 select Access Tokens for Testing and Development。
-
輸入你建立應用程式後得到的 OAuth Client ID 代碼。 然後選擇 Submit。
-
加上 和 Client ID Client Secret 以取得刷新代幣。 然後選擇 Submit。 OAuth 是從前一步預先填充的。
-
新增 Client ID 和 Client Secret 即可取得存取權杖。 然後選擇 Submit。
-
新增存取權杖並選擇提交以取得存取權杖的詳細資訊。
選擇 Submit後,存取權杖會被驗證,您將收到以下 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 讓開發者能存取關鍵的學習管理資源,如使用者、課程、技能、證照及學習計畫。 它遵循 REST 原則,使用 HTTP 方法(GET、POST、PUT、DELETE)來進行資料操作。
常見參數
以下是每個問題的簡要說明:
包括
Adobe Learning Manager API 可用於在建置自訂應用程式或無頭學習管理系統(LMS)時擷取有用資訊。 API 端點還可以加入額外的「include」參數,以擷取預設接收資料相關的額外資訊。 這些關係是資料模型關係,例如在撥打查詢使用者資料的通話時,你會收到使用者資訊以及管理者 ID 與 Adobe Learning Manager 帳號 ID 的關聯。 透過 include 參數,你可以詳細擷取使用者資料,例如他們的經理資料和 Adobe Learning Manager 的帳號資料。
簡言之, include 參數用於 API 呼叫中,在單一回應中擷取相關(連結)資源與主要資源。 當你想存取巢狀或相依資料,例如課程模組或映射給學習者的技能,而不必另行呼叫 API 時,它非常有用。
主要好處:
- 減少多次 API 呼叫:避免手動請求每個相關資源。
- 提升效率:更快的開發速度、降低伺服器負載及更快的資料渲染速度。
- 確保資料一致性:以一致快照檢索所有相關資料。
如何使用 include 參數
在你的 API URL 上加上 include 參數,並指定要包含的相關實體。
常見的包括路徑
範例一
利用端點中的 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
範例二
要取得課程細節,請在端點呼叫中使用 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"
}
]
}
}
其他關係可能包括(上述回應中未提及):
- 前置條件LOs
- 補充LOs
- 補充資源
要獲得實例與技能的詳細資料,請在 include 參數中加入「實例,技能」。
GET https://learningmanager.adobe.com/primeapi/v2/learningObjects/<courseID>?include=instances,skills
舉例來說,如果你想取得更多與課程實例相關的資料,例如 loResources(課程的模組資訊),就將 loResources 作為巢狀的 include 套用。
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 物件的屬性與關聯稱為欄位(Fields)。 在 API 呼叫中使用欄位作為參數,從模型中擷取特定屬性。 若沒有 Fields 參數,API 呼叫會取得所有可用的屬性。
例如,在以下 API 呼叫中,欄位[skill]=name 只取得技能模型的 name 屬性。
GET https://learningmanager.adobe.com/primeapi/v2/users/3400490/userSkills/3400490_1796_1?include=skillLevel.skill&fields[skill]=name
頁碼
API 分頁是一種技術,用於將大量資料拆解成較小且易於管理的區塊,稱為頁面,而非一次性回傳完整資料。
分頁可降低用戶端與伺服器負載,限制回應大小以避免伺服器瓶頸,或用於逐頁顯示資料表或清單。
Adobe Learning Manager API 中的分頁功能
Adobe Learning Manager API 支援透過以下參數進行分頁:
- 頁數[限制]:每頁記錄數。
- 頁[數偏移]:可跳過的紀錄數量。
- 頁面[游標]:指向下一組結果。 游標分頁不是使用基於偏移量的分頁(跳過多筆紀錄),而是使用從 API 回傳的唯一標記來取得下一頁的結果。
以下是如何在 API 中使用分頁的方法:
頁數[限制]
雖然 https://learningmanager.adobe.com/primeapi/v2/users 會一次呼叫回傳所有使用者及相關資訊,但使用頁[數] 限制會限制結果數量為指定值。
若要在單一呼叫中只返回五筆使用者記錄,請使用以下 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
分類
排序參數用於根據一個或多個欄位,將 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 允許開發者以 RESTful 資源存取 Learning Manager 物件。 每個 API 端點代表一個資源,通常是像 Badge 這樣的物件實例,或是這類物件的集合。 開發者接著使用 HTTP 動詞如 PUT、GET、POST 和 DELETE 來對這些物件(集合)執行 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
取得徽章資訊
取得徽章詳細資訊,包括徽章名稱、徽章圖片網址及徽章狀態。
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:目前,僅能使用此端點新增內部使用者。 使用者類型應該是「內部」。
您將收到以下 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 回應代碼表示成功且無內容可回傳。 伺服器成功處理了請求,但沒有資料可以提供給用戶端。
使用者的狀態現在 DELETED 會在你取得使用者資料後顯示。
更新使用者資料
- 使用 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:使用者所屬合作夥伴組織經理的電子郵件地址。
- 席數限制:合作組織允許的席次數。
您撥出電話後,會收到以下回覆:
{
"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。 把回應裡的網址傳給使用者,讓他們能在平台上註冊。
擷取包含使用者 ID 與管理者資料的使用者報告
使用者報告可直接從管理員使用者介面下載(Admin > Users > Internal)。 然而,報告並未回傳使用者 ID 及相關管理員的資訊。
請使用 Jobs API 下載報告。 職缺 API 協助產生報告、批量作業(註冊或徽章分配)、認證完成或徽章產生。
以下是您可以下載報告的方式:
-
將以下有效載荷加入 Jobs 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 -
複製回覆中的職缺編號。
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 網址。
-
把網址貼到瀏覽器裡。 瀏覽器會提示你儲存或開啟 CSV 檔案。 把檔案存到你的電腦裡。
下載的檔案包含以下欄位:
internalUserID、userEmail、customerDefinedUniqueUserId、name、managerEmail、userType、state、excludedFromGamification、pointsEarned、profile、roles、dateCreated、lastLoginDate、dateDeleted、uiLocale、contentLocale、timeZoneCode、userSource、群組、活動欄位、元資料,以及lastSocialActivityDate。
使用 Jobs API 產生徽章
-
取得組織內某位使用者的徽章清單。 請使用以下端點:
code language-none GET https://learningmanager.adobe.com/primeapi/v2/users/3400476/userBadges3400476 是使用者 ID。
-
複製回覆中的徽章識別碼。 例如,3400476_759_COMPETENCY_1796_1 是徽章識別碼。
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> -
從回覆中複製徽章網址,然後在瀏覽器中開啟該網址。 證書將以PDF格式下載。
在 Adobe Learning Manager 中建立使用者
POST /users 端點幫助你用無頭模式建立使用者。 建立包含詳細資訊的使用者,例如Adobe Learning 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.loResourcesb. 列出模組中的所有內容。
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 為後端的無頭學習管理系統時,組織可能需要支援人員冒充學習者以進行故障排除或協助。 API 驅動的模擬方法確保安全存取,同時維持學習者憑證的機密性,並支援會話狀態的無縫轉換。
Adobe Learning Manager 透過專用 API 促進無頭學習管理系統(headless LMS)環境中的學習者模仿。 此功能允許支援人員暫時扮演學習者身份,藉此診斷問題、測試功能,或透過模擬學習者的經驗提供實務協助。 模擬是透過快取的管理員存取權杖啟動,該權杖用來程式化地產生學習者權杖。 此過程讓系統能以學習者身份登入運作。
API 端點細節
POST /oauth/learnerToken
完整網址範例
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 嚴格要求此內容類型。