Adobe Learning Manager 開發者手冊

概觀

Adobe Learning Manager 提供 RESTful API,讓開發者能有效整合與客製化應用程式或工作流程。 開發者手冊提供了如何使用這些 API 的指引,涵蓋認證、資料模型及與其他應用程式整合等主題。 此外,本指南 API 參考文件 協助開發者建立與 Adobe Learning Manager 各種功能互動的外部應用程式或後端工作流程,包括課程建立、學習進度追蹤、技能映射、認證、遊戲化及成績單。

本手冊涵蓋以下內容:

  • OAuth2.0 認證
  • API 物件模型
  • 包含、欄位及其他參數
  • 實際應用案例
IMPORTANT
本開發手冊專門涵蓋 Adobe Learning Manager 的 V2 API。 本指南中描述的所有範例、請求結構與認證工作流程皆針對 /primeapi/v2/ 端點而設。 關於舊版本或已棄用的 API 資訊,請參閱 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 流程來安全認證並授權你的應用程式。 存取憑證的有效期為七天。

  1. 以整合管理員身份登入 Adobe Learning Manager。

  2. 在左側窗格選擇 Applications

    替代文字

  3. 請選擇 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 會在學習管理員應用程式編輯模式中產生並顯示。

      替代文字

  4. 選擇 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 資料,因此必須安全管理。 切勿將測試標記分享給他人,也不要在生產應用程式中使用,或將它們納入公開程式碼庫。 把它們當作密碼來對待,以確保你的帳號和資料安全。

  1. 以整合管理員身份登入 Adobe Learning Manager。

  2. 選擇, Developer Resources 然後 select Access Tokens for Testing and Development

  3. 輸入你建立應用程式後得到的 OAuth Client ID 代碼。 然後選擇 Submit

  4. 加上 和 Client ID Client Secret 以取得刷新代幣。 然後選擇 Submit。 OAuth 是從前一步預先填充的。

  5. 新增 Client ID 和 Client Secret 即可取得存取權杖。 然後選擇 Submit

  6. 新增存取權杖並選擇提交以取得存取權杖的詳細資訊。

選擇 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 來測試端點。

  1. 打開 Postman 並建立新的請求。

  2. 選擇授權標籤。

  3. 把授權類型設為持有人憑證。

  4. 將你從前一部分取得的存取權杖貼上到令牌欄位。

  5. 請在頁頭標籤中加入以下內容。

    • 關鍵:接受
    • 值:application/json
  6. 在 URL 欄位輸入你的 API 端點。 範例: https://learningmanager.adobe.com/learningManager/api/v2/users欲了解更多資訊,請參閱 Adobe Learning Manager API 參考

  7. 選擇「發送」以發送 API 請求。

API 類型

管理 API

Adobe Learning Manager 的管理 API 允許管理員自動化並大規模管理學習作業。

利用管理 API,開發者可以:

NOTE
這份清單並非完整。
  • 管理使用者與群組:建立、更新及刪除使用者,或指派至群組。
  • 招募學習者:自動化註冊課程、學習路徑或認證。
  • 追蹤學習者進度:取得課程/模組進度、測驗分數及完成狀態。
  • 產生報告:取得​學習者活動、參與度及表現的數據。
  • 管理內容:建立並組織課程與學習物件。

欲了解更多資訊,請參閱 Adobe Learning Manager API 參考

學習器 API

學習者 API 是為已認證的使用者(學習者)設計,讓你能存取學習者專屬資訊。 這些 API 允許執行以下任務:

  • 存取學習者的課程與進度
  • 取得徽章或取得的證照
  • 更新學習者個人資料資訊
  • 完成課程後的觀看技巧

重點:

  • 這些 API 需要經過認證的使用者憑證,確保資料安全與隱私。
  • 這些 API 是針對用戶完全註冊並登入的情境設計,而非匿名或共用使用者。

欲了解更多資訊,請參閱 Adobe Learning Manager API 參考

API 設計與常見參數

這些 API 讓開發者能存取關鍵的學習管理資源,如使用者、課程、技能、證照及學習計畫。 它遵循 REST 原則,使用 HTTP 方法(GET、POST、PUT、DELETE)來進行資料操作。

方法
取得、發佈、發佈、刪除
格式
application/vnd.api+json, application/json. 了解更多 常見的MIME類型。
基礎網址
https://learningmanager.adobe.com/primeapi/v2/

常見參數

參數
目的
包括
一通電話就能取得相關資源。
選擇特定屬性以降低有效載荷。
濾波器
窄義結果(例如依 ID、名稱)
分類
訂購結果。
頁[數限制],頁[數偏移]
分頁支援。

以下是每個問題的簡要說明:

包括

Adobe Learning Manager API 可用於在建置自訂應用程式或無頭學習管理系統(LMS)時擷取有用資訊。 API 端點還可以加入額外的「include」參數,以擷取預設接收資料相關的額外資訊。 這些關係是資料模型關係,例如在撥打查詢使用者資料的通話時,你會收到使用者資訊以及管理者 ID 與 Adobe Learning Manager 帳號 ID 的關聯。 透過 include 參數,你可以詳細擷取使用者資料,例如他們的經理資料和 Adobe Learning Manager 的帳號資料。
簡言之, include 參數用於 API 呼叫中,在單一回應中擷取相關(連結)資源與主要資源。 當你想存取巢狀或相依資料,例如課程模組或映射給學習者的技能,而不必另行呼叫 API 時,它非常有用。

主要好處:

  • 減少多次 API 呼叫:避免手動請求每個相關資源。
  • 提升效率:更快的開發速度、降低伺服器負載及更快的資料渲染速度。
  • 確保資料一致性:以一致快照檢索所有相關資料。

如何使用 include 參數

在你的 API URL 上加上 include 參數,並指定要包含的相關實體。

常見的包括路徑

包含價值
說明
實例
回傳所有學習物件的實例
招生人數
回傳使用者的註冊資料
instances.loResources.resources
在實例中擷取模組與資源
補充資源
相關補充資源回報
技能.技能等級.徽章
取物技能等級及其相關徽章
前置條件LOs
包含先修學習物件
次次LO
擷取子學習物件(用於 LP 或認證)
subLOs.註冊
子學習對象的註冊
instances.badge
完成課程實例後分配的徽章
subLOs.subLOs.instances.loResources.resources
深度巢狀的資源存在於子子 LO 實例中

範例一

利用端點中的 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

其他包括濾波器

學習計畫
河道
subLOs.prerequisiteLOs.enrollment

subLOs.subLOs.prerequisiteLOs.enrollment subLOs.enrollment.loResourceGrades

subLOs.subLOs.enrollment.loResourceGrades

subLOs.subLOs.subLOs.instances.loResources.resources.room



subLOs.loResources.room subLOs.enrollment.loInstance.loResources.resources



subLOs.補充LOs.註冊.loInstance.loResources.resources

subLOs.supplementaryLOs.instances.loResources.resources subLOs.supplementaryLOs.instances.loResources.resources
instances.enrollment.loResourceGrades

enrollment.loInstance.loResources.resources prerequisiteLOs

authors,

instances.loResources.supplementaryLOs.instances.loResources.supplementaryResources





instances.badge

skills.skillLevel.badge

skills.skillLevel.skill.skills.room



, prerequisiteLOs.enrollment

enrollment.loResourceGrades

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

頁面[游標]

  1. 先從請求第一頁,限制為5頁。

    code language-none
    GET https://learningmanager.adobe.com/primeapi/v2/users?page[limit]=5
    
  2. 複製 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"
     }
    
  3. 請發送以下請求:

    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 操作。

學習管理器物件
說明
帳號
涵蓋學習經理客戶的詳細資料。
徽章
徽章是學習者在課程進展中達成特定里程碑時所獲得的成就象徵。
目錄
目錄是一個學習物件的集合。
使用者
使用者是學習管理器中的關鍵模型。 使用者通常是組織內部或外部學習者,他們會使用學習物件。 然而,他們也可能扮演其他角色,如作者、管理者以及學習者的角色。 使用者ID、類型、電子郵件是內嵌屬性。
資源
這代表模組內的每個內容資源。 封裝在「loResource」內的所有資源在學習目標上是等價的,但在傳遞類型或內容地點上彼此不同。
用戶通知
此模型包含與學習者相關的通知資訊。
用戶技能
UserSkill 表示單一使用者能達成多少單一技能等級。
使用者徽章
UserBadge 將單一徽章與單一使用者連結起來。 它包含達成時間、assertionUrl 等細節。
技巧
技能模型包含等級與學分。 學習者在完成相關課程後,可以習得技能。
技能等級
技能等級包含一門或多門課程,需修習以取得該等級及其相關學分。
learningObject
學習物件是一種抽象的概念,涵蓋使用者可以註冊並學習的各種物件。 目前學習經理包含四種學習物件:課程、認證、學習計畫及工作輔助。
learningObjectInstance
一個特定的學習對象實例。
learningObjectResource
這等價於模的概念。 課程由多個模組組成。 在學習管理中,模組可以以多種等效方式呈現。 因此,loResource 基本上封裝了所有這些等效資源。
loResourceGrade
這涵蓋了使用者在所註冊學習對象中消費特定資源的結果。 它包含使用者在資源中花費的時間、進度百分比、通過/不及格狀態,以及使用者在任何相關測驗中獲得的分數等資訊。
賽程表
行事曆物件是即將開設的教室或虛擬教室課程清單,使用者可以報名。
l1FeedbackInfo
第一語言回饋(L1 Feedback)是學習者對與學習物件相關的回饋問題所提供的答案。 通常這些回饋會在使用者完成學習物件後收集,若設定為從學習者那裡收集此類回饋。
招生人數
此抽象封裝了與交易相關的細節,代表特定使用者被指派至特定學習物件實例。

學習者 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 使用範例

建立使用者

  1. 使用端點:

    code language-none
    POST https://learningmanager.adobe.com/primeapi/v2/users
    

    處理來自 API 主體或 JSON 有效載荷的屬性以產生使用者,隨後提供已填寫相應使用者 ID 的使用者。

  2. 以下有效載荷作為車身:

    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"
              }
          }
      }
  }
}

刪除使用者

  1. 取得你想刪除的使用者的使用者 ID。

    code language-none
    GET https://learningmanager.adobe.com/primeapi/v2/users/<userID>
    
  2. 接著使用 DELETE 進行以下呼叫:

    code language-none
    DELETE https://learningmanager.adobe.com/primeapi/v2/users/<userID>
    

出現了204的回應。 204 回應代碼表示成功且無內容可回傳。 伺服器成功處理了請求,但沒有資料可以提供給用戶端。

使用者的狀態現在 DELETED 會在你取得使用者資料後顯示。

更新使用者資料

  1. 使用 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"
                }
            }
        }
    }
}

撥打電話後,使用者的資訊會被更新。

建立外部個人檔案

外部個人檔案是指為外部學習者建立的使用者個人檔案,通常是非組織內部使用者群的個人。 這些學習者可能包括客戶、合作夥伴、供應商、加盟商或臨時承包商,他們需要參加組織提供的培訓或認證課程。

  1. 請使用以下端點:

    code language-none
    POST https://learningmanager.adobe.com/primeapi/v2/externalProfiles
    
  2. 以下有效載荷作為車身:

{
    "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 協助產生報告、批量作業(註冊或徽章分配)、認證完成或徽章產生。

以下是您可以下載報告的方式:

  1. 將以下有效載荷加入 Jobs API。

    code language-none
    {
        "data": {
            "type": "job",
            "attributes": {
                "description": "description of your choice",
                "jobType": "generateUsers",
                "payload":{
                    "expandMetadata":true
                }
            }
       }
    }
    
  2. 請使用以下端點。

    code language-none
    POST https://learningmanager.adobe.com/primeapi/v2/jobs
    
  3. 複製回覆中的職缺編號。

    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。

  4. 複製 ID 後,使用工作 API 中的 ID 下載報告。

    code language-none
    GET https://learningmanager.adobe.com/primeapi/v2/jobs/43118
    
  5. 複製回覆中的 S3 網址。

  6. 把網址貼到瀏覽器裡。 瀏覽器會提示你儲存或開啟 CSV 檔案。 把檔案存到你的電腦裡。
    下載的檔案包含以下欄位:

internalUserID、userEmail、customerDefinedUniqueUserId、name、managerEmail、userType、state、excludedFromGamification、pointsEarned、profile、roles、dateCreated、lastLoginDate、dateDeleted、uiLocale、contentLocale、timeZoneCode、userSource、群組、活動欄位、元資料,以及lastSocialActivityDate。

使用 Jobs API 產生徽章

  1. 取得組織內某位使用者的徽章清單。 請使用以下端點:

    code language-none
    GET https://learningmanager.adobe.com/primeapi/v2/users/3400476/userBadges
    

    3400476 是使用者 ID。

  2. 複製回覆中的徽章識別碼。 例如,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"
             }
         }
     }
    }
    
  3. 建立一個有效載荷,並在有效載荷中指定徽章 ID。 以下是一個有效載荷範例:

    code language-none
    {
     "data": {
         "type": "job",
         "attributes": {
             "description": "Acme Corp Badge",
             "jobType": "generateUserBadge",
             "payload": {
                 "userBadgeId": "3400476_759_COMPETENCY_1796_1"
             }
         }
     }
    }
    

    打完電話後,你會在回覆中看到職缺ID。

  4. 從回應中取得工作 ID,並在下一個端點使用該工作 ID 來呼叫。

    code language-none
    GET https://learningmanager.adobe.com/primeapi/v2/jobs/<jobsID>
    
  5. 從回覆中複製徽章網址,然後在瀏覽器中開啟該網址。 證書將以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 後回饋

  1. 取得學習者的課程、實例及註冊資料。 請使用以下說明:

    code language-none
    GET /enrollments
    
  2. 檢查課程實例是否啟用了 L1 回饋。

    code language-none
    GET https://learningmanager.adobe.com/primeapi/v2/learningObjects/<loID>/instances/<loInstanceID>/l1Feedback
    
  3. 提交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
      }
    }
  }

取得課程的模組層級資訊

  1. 透過 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"
                     }
                 ]
             }
         }
     }
    }
    
  2. 使用 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
    

檢查模組進度

  1. 使用課程 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>
    
  2. 使用註冊 ID 取得學習者的註冊資料。

    code language-none
    GET https://learningmanager.adobe.com/primeapi/v2/enrollments/<enrollmentID>
    

    從回應中複製學習物件資源等級 ID。

  3. 在以下端點中使用該 ID。

    code language-none
    GET https://learningmanager.adobe.com/primeapi/v2/loResourceGrades/<courseResourceGradeID>
    

你會在回覆中獲得模組進度的資訊。

實施學習者模仿

在導入以 Adobe Learning Manager 為後端的無頭學習管理系統時,組織可能需要支援人員冒充學習者以進行故障排除或協助。 API 驅動的模擬方法確保安全存取,同時維持學習者憑證的機密性,並支援會話狀態的無縫轉換。

Adobe Learning Manager 透過專用 API 促進無頭學習管理系統(headless LMS)環境中的學習者模仿。 此功能允許支援人員暫時扮演學習者身份,藉此診斷問題、測試功能,或透過模擬學習者的經驗提供實務協助。 模擬是透過快取的管理員存取權杖啟動,該權杖用來程式化地產生學習者權杖。 此過程讓系統能以學習者身份登入運作。

IMPORTANT
使用者必須申請特殊 API 存取權限才能使用此功能,系統必須處理會話切換、授權及其他指標,以確保模擬過程中的透明度與問責性。

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 應用程式的人來說都非常重要。

HTTP 狀態
意義
疑難排解
400
這個請求很糟糕
檢查請求中缺少或不合格的參數。 請確認必填欄位及正確格式。 例如,filter、fields 或 include 參數的語法無效。
401
未授權、無效或缺少令牌
請確保您的存取權杖正確且包含在授權標頭中。 確認該令牌是否有效。 請求代幣時也請使用正確的客戶端 ID 和客戶端秘密。
403
禁止。 禁止進入
你沒有權限存取該資源。 確認你的令牌有正確的範圍(管理員:read、學習者:write等)。
404
找不到資源
端點或資源 ID 錯誤或根本不存在。 確保該資源存在於參數清單中。
406
不可接受-錯誤的接受標頭
請在你的請求中加入這個標頭:Accept: application/vnd.api+json
Adobe Learning Manager API 嚴格要求此內容類型。
500
內部伺服器錯誤
這是伺服器端的問題。 過一段時間後再試一次,或是如果問題持續,請向 Adobe Learning Manager 客服團隊回報。
recommendation-more-help
d5e5961a-141b-4c77-820e-8453ddef913d