Adobe Learning Managerの2026年8月リリースのAPIの変更
Adobe Learning Managerのユーザーグループ管理API
このリリースでは、カスタムユーザーグループをプログラムで管理するための、管理者対象の新しい3つのパブリックAPIエンドポイントが追加されています。 管理者アプリを使用せずにカスタムユーザーグループを作成、名前変更および削除できるため、IDまたはプロビジョニングワークフローの一部としてグループ管理を自動化できます。
これらのエンドポイントは、カスタムユーザーグループでのみ動作します。 All Usersグループや自動生成ユーザーグループなどのシステム管理グループは、API応答でreadOnly: trueが返され、これらのエンドポイントを介して変更または削除することはできません。
API認証の要件については、Adobe Learning Manager API認証を参照してください。
ユーザーグループAPIエンドポイント
3つすべてのエンドポイントに、書き込み権限(ROLE_ADMIN)を持つ管理者アクセストークンが必要です。
一般的な要求ヘッダー
3つすべてのエンドポイントに、次のヘッダーが必要です。
Authorization: Bearer \<access-token\>
X-acap-user: \<user-id\>
X-acap-account: \<account-id\>
X-acap-caller-role: ROLE_ADMIN
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json
ユーザーグループの作成
POST /primeapi/v2/userGroups
新しいカスタムユーザーグループを作成し、メンバーの初期リストを使用します。 グループは管理者アプリですぐに使用できるようになります。
リクエストの本文
{
"name": "Marketing Team",
"description": "Custom user group for marketing onboarding",
"data": [
{ "type": "user", "id": "11282373" },
{ "type": "user", "id": "11282374" }
]
}
パラメーターの要求
注意:データ配列は、最初のメンバーリストを設定するために作成時にのみ使用されます。 作成後にメンバーを追加または削除するには、既存のユーザーグループメンバーシップエンドポイントを使用します。
応答201が作成されました
{
"links": {
"self": "https://<host>/primeapi/v2/userGroups"
},
"data": {
"id": "2769204",
"type": "userGroup",
"attributes": {
"dateCreated": "2026-06-04T14:19:53.000Z",
"description": "Custom user group for marketing onboarding",
"name": "Marketing Team",
"readOnly": false,
"userCount": 2
}
}
}
入力規則のPOST
ユーザーグループを更新する
PUT /primeapi/v2/userGroups/{id}
既存のカスタムユーザーグループの名前や説明を更新します。 このエンドポイントでは、グループメンバーを追加または削除できません。
いずれのフィールドも省略できます。フィールドを省略すると、現在の値は変更されません。 descriptionにnullを渡すとクリアされます。 nameに空白の文字列を渡すと拒否されます。
リクエストの本文
{
"name": "Updated Group Name",
"description": "Updated description text"
}
パラメーターの要求
応答200 OK
{
"data": {
"type": "userGroup",
"id": "2767870",
"attributes": {
"name": "Updated Group Name",
"description": "Updated description text",
"readOnly": false,
"state": "Active",
"userCount": 3
}
}
}
入力規則のPUT
ユーザーグループを削除する
DELETE /primeapi/v2/userGroups/{id}
指定したカスタムユーザーグループを削除としてマークします。 グループレコードは完全に削除されず、状態がDELETEDに設定されるため、管理アプリでは表示されず、新しい構成で使用することはできません。 グループIDは再利用できません。
リクエストの例
DELETE /primeapi/v2/userGroups/2767870
Authorization: Bearer <access-token>
X-acap-user: <user-id>
X-acap-account: <account-id>
X-acap-caller-role: ROLE_ADMIN
応答204コンテンツなし
応答の本文が空です。
注意: DELETEはべき等ではありません。 同じグループIDに2つ目のDELETEリクエストを送信すると、DELETED_USERGROUPコード(204ではなく)で400エラーが返されます。 400 DELETED_USERGROUP応答は、グループが既に削除されていることを確認したものとみなされます。 一括削除はサポートされていません。グループごとに個別のDELETEリクエストが必要です。
入力規則のDELETE
Adobe Learning Managerの外部学習API
このリリースでは、外部学習機能用に、学習者を範囲とする5つの新しいAPIエンドポイントが追加されています。 これらのエンドポイントにより、学習者は、モバイルアプリ、統合された人事システム、またはカスタム学習ポータルからプログラムを使用して外部の学習申請を作成、取得、および更新できます。
APIを介した外部学習ワークフローは、学習者アプリのワークフローをミラーリングします。学習者がトレーニングの詳細とオプションの証明文書を送信すると、送信された内容を確認する通知が直接マネージャーに送信され、承認されると、学習者のトランスクリプトにレコードが表示されます。
5つのエンドポイントはすべて、学習者をスコープに設定します。 学習者は自分の提出物にのみアクセスできます。学習者が別の学習者のデータにアクセスしようとすると、APIはエラーを返します。
API認証の要件については、Adobe Learning Manager API認証を参照してください。
External Learning APIエンドポイント
すべてのエンドポイントに学習者アクセストークン(ROLE_LEARNER)が必要です。
一般的な要求ヘッダー
Authorization: Bearer <access-token>
X-acap-user: <user-id>
X-acap-account: <account-id>
X-acap-caller-role: ROLE_LEARNER
Accept: application/vnd.api+json
Content-Type: application/vnd.api+json (POST and PUT only)
提出ステータスのライフサイクル
「APPROVED」および「REJECTED」は、最終状態です。 却下された提出物は再開できません。学習者は新しい提出物を作成する必要があります。
アカウントフォーム構成の取得
GET /primeapi/v2/externalLearningSettings
アカウントレベルのフォーム構成を返します。 送信フォームをレンダリングする前に、このエンドポイントを呼び出します。 応答は、表示するフィールド、必須のフィールド、そのデータタイプ、および管理者が設定したカスタムフィールドを定義します。
続行する前に、トップレベルの「有効」属性を確認してください。falseの場合、このアカウントの外部学習機能はアクティブではなく、送信エンドポイントによりエラーが返されます。
応答200 OK
{
"data": {
"id": "8627",
"type": "externalLearningSettings",
"attributes": {
"enabled": true,
"updatedAt": "2026-06-05T06:51:20.000Z",
"coreFields": [
{ "id": "title", "type": "TEXT", "mandatory": true, "editable": false, "order": 0 },
{ "id": "description_notes", "type": "TEXT", "mandatory": false, "editable": true, "order": 1 },
{ "id": "date", "type": "TIMESTAMP", "mandatory": false, "editable": true, "order": 2 },
{ "id": "score", "type": "NUMBER", "mandatory": true, "editable": true, "order": 3 },
{ "id": "duration", "type": "TEXT", "mandatory": false, "editable": true, "order": 4 },
{ "id": "attachments", "type": "FILE_UPLOAD", "mandatory": true, "editable": true, "order": 5 }
],
"customFields": [
{
"id": "960369b2-...",
"type": "NUMBER",
"mandatory": true,
"order": 0,
"label": { "en_US": "Employee Code" }
},
{
"id": "3c6cc6d9-...",
"type": "DROPDOWN",
"mandatory": true,
"order": 1,
"label": { "en_US": "Department" },
"options": [
{ "option_id": "opt_1", "label": { "en_US": "IT" } },
{ "option_id": "opt_2", "label": { "en_US": "HR" } },
{ "option_id": "opt_3", "label": { "en_US": "FIN" } }
]
}
]
}
}
}
コアフィールドの参照
日付範囲 Value shape: { “start_date”: “
”, “end_date”: “ ” }. どちらの値もnullにすることができます。
値のシェイプ: { “achieved_score”:
, “max_score”: }. 両方の値は数値である必要があります。
ユーザー設定フィールドは管理者によって定義され、customFields[]に返されます。 ID、タイプ、必須フラグ、ラベル、ドロップダウンオプションは、アカウント設定によって異なります。
提出のリスト
GET /primeapi/v2/externalLearnings
認証された学習者自身の提出物をページ順に並べ替えられたリストを、変更時降順(最後に変更された順)で返します。
クエリパラメーター
応答200 OK
{
"links": {
"next": "/primeapi/v2/externalLearnings?page[offset]=10&page[limit]=10"
},
"data": [
{ "id": "1001", "type": "externalLearning", "attributes": { "status": "PENDING", ... } },
{ "id": "1002", "type": "externalLearning", "attributes": { "status": "APPROVED", ... } }
]
}
提出物を取得する
GET /primeapi/v2/externalLearnings/{id}
認証された学習者に属する1つの提出の完全なレコードを返します。
**応答200 OK
{
"data": {
"id": "1001",
"type": "externalLearning",
"attributes": {
"submissionUrl": "https://<cdn-url>/cert.pdf",
"title": "Java Fundamentals Certification",
"status": "PENDING",
"creationSource": "LEARNER",
"createdAt": "2026-04-14T08:30:00.000Z",
"modifiedAt": "2026-04-16T11:45:00.000Z",
"fields": [ "...resolved against live settings..." ]
},
"relationships": {
"reviewerUser": { "data": null }
}
}
}
提出物を作成
POST /primeapi/v2/externalLearnings
PENDING状態の新しい外部学習送信を作成します。 アカウント設定で定義されているすべての必須フィールドを含める必要があります。 POSTに成功すると、学習者のマネージャーはプラットフォーム内通知を受け取り、送信された内容を確認します。
ファイルのアップロード
添付ファイルフィールドは、他のフィールドとは別に処理されます。 フィールド[]内に含めないでください。 代わりに:
1. ALMファイルのアップロードエンドポイントから、事前に署名されたS3アップロードURLを取得します。
2.そのURLにファイルをアップロードします。
3.生成されたURLを、POSTリクエストのトップレベルのsubmissionUrl属性として渡します。
リクエストの本文
{
"data": {
"type": "externalLearning",
"attributes": {
"submissionUrl": "<pre-signed-upload-url>",
"fields": [
{ "id": "title", "type": "TEXT", "value": "Java Fundamentals Certification" },
{ "id": "description_notes", "type": "TEXT", "value": "Completed via online course platform." },
{ "id": "date", "type": "TIMESTAMP", "value": { "start_date": "2026-05-01T00:00:00.000Z", "end_date": "2026-05-15T00:00:00.000Z" } },
{ "id": "score", "type": "NUMBER", "value": { "achieved_score": 88, "max_score": 100 } },
{ "id": "duration", "type": "TEXT", "value": "40 hours" },
{ "id": "960369b2-...", "type": "NUMBER", "value": "1225" },
{ "id": "3c6cc6d9-...", "type": "DROPDOWN", "value": "opt_3" }
]
}
}
}
フィールド値シェイプ
入力規則のPOST
提出物の更新
PUT /primeapi/v2/externalLearnings/{id}
既存のPENDING送信を更新します。 更新できるのはPENDING提出物のみです。 APPROVEDまたはREJECTEDの提出をPUTしようとすると、409エラーが返されます。
このエンドポイントは完全置換セマンティクスを使用しています。 変更するフィールドだけでなく、すべてのPUTリクエストで完全なフィールド[]配列を指定します。 配列から省略されたフィールドはクリアされます。
学習者が更新できるフィールド
リクエストの本文
{
"data": {
"type": "externalLearning",
"attributes": {
"submissionUrl": "<cdn-url>/cert-v2.pdf",
"fields": [
{ "id": "title", "type": "TEXT", "value": "Java Fundamentals — Updated" },
{ "id": "description_notes", "type": "TEXT", "value": "Updated notes." },
{ "id": "date", "type": "TIMESTAMP", "value": { "start_date": null, "end_date": null } },
{ "id": "score", "type": "NUMBER", "value": { "achieved_score": 92, "max_score": 100 } },
{ "id": "duration", "type": "TEXT", "value": "42 hours" },
{ "id": "960369b2-...", "type": "NUMBER", "value": "1227" },
{ "id": "3c6cc6d9-...", "type": "DROPDOWN", "value": "opt_2" }
]
}
}
}
LTの学習者関連の資格認定IDとルート資格認定IDのAPI
繰り返し行われる資格認定が更新されると、Adobe Learning Managerは新しいバージョンの資格認定を作成し、アクティブな学習者を自動的に登録します。 Adobe Learning Managerの学習者エクスペリエンスに依存せずに資格認定データを直接問い合わせる統合の場合、このAPIを使用すると、繰り返し行われる資格認定のうち、特定の学習者に関連するバージョンを常に正確に特定できます。
APIの目的
繰り返し行われる資格認定では、更新するたびに新しい資格認定IDが生成されます。 ネイティブのAdobe Learning Manager学習者エクスペリエンスでは、各学習者に関連するバージョンのみが表示されます。 学習者が新しいバージョンに移動すると、古いバージョンは自動的に非表示になります。
社外ポータルで資格認定情報を表示する場合など、統合で資格認定データを個別に取得する場合は、このフィルタリングが自動的に適用されないことがあります。 この機能がなければ、学習者は、繰り返し行われる資格認定の履歴バージョンを確認できます。この履歴バージョンには、関連のなくなった資格認定も含まれ、どの資格認定に基づいて行動するかが示されません。
このAPIは、このギャップを解決しました。 ルート認証IDを指定すると、特定の学習者に適用される特定の認証バージョンが返され、その登録履歴と再発が考慮されます。
認定の繰り返しについて
証明書が繰り返し使用されるように設定されている場合、更新ごとに固有のIDを持つ新しい証明書バージョンが作成されます。 すべてのバージョンでは、最初に作成された時点の元の証明書のIDである単一の ルート証明書ID をトレースします。
たとえば、毎月繰り返される証明書は、一定期間にわたってバージョンのシーケンスを生成し、繰り返しの間隔に達すると、新しいバージョンごとに自動的に生成されます。 繰り返しが発生したときにアクティブに登録されている学習者は、新しいバージョンに自動的に登録されます。
各バージョンには固有のIDがあるため、学習者に関連するバージョンは、学習者の個々の登録タイムラインによって異なります。
-
繰り返し前に登録し、次の繰り返しが発生する前に資格認定を完了した学習者は、時間の経過とともに複数のバージョンに移行します。
-
繰り返しサイクルの途中で登録した学習者は、登録時に最新のバージョンに直接登録されます。
関連する認定バージョンの決定
資格認定バージョンAPIを使用して、特定の学習者に関連する繰り返し資格認定のバージョンを特定します。
ルート証明IDを入力として指定します。 APIは、学習者の登録履歴を評価し、次のルールに基づいて適切なバージョンを返します。
これは、同じルート資格認定IDを同時に問い合わせる2人の学習者が、各学習者の個々の登録履歴に応じて異なる結果を受け取る可能性があることを意味します。
注意:新しいバージョンが作成され、登録が移行されている間、繰り返しの実行中に短い期間が発生する場合があります。この期間には、APIが、新しく作成されたバージョンではなく、置き換えられるバージョンを返す場合があります。
例
毎月繰り返される証明書について考えてみます。この場合、繰り返しの繰り返しにより、時間の経過とともに4つのバージョンが作成されています。
-
最初のバージョンに登録し、発生した各繰り返しごとに作業を進めた学習者は、バージョンに戻されます。現在アクティブな状態であり、自分の完了と繰り返しの履歴を反映しています。最新バージョンが存在しているとは限りません。
-
まだ登録していない学習者は、最後に作成したバージョンに戻ります。これは、新しい登録が参加する必要があるバージョンであるためです。
これにより、統合は、すべての履歴バージョンを表示したり、適用される推測を行ったりするのではなく、常に学習者に関連する認定バージョンを示すことができます。
API のリファレンス
ルート証明の該当する証明を取得する
GET /primeapi/v2/learningObjects/{loId}/applicableCertification
ルート資格認定のIDを指定して、現在の学習者に適用される資格認定のバージョンを解決します。 登録されている学習者の場合、現在登録されているバージョンが返されます。 登録されていない学習者の場合は、最新の有効なバージョンが返されます。
注意:このAPIは、一度に1人の学習者のバージョン情報を返します。 資格認定のすべてのバージョンのリストは返されません。
パスパラメーター
クエリパラメーター
リクエストの例
GET /primeapi/v2/learningObjects/certification%3A167658/applicableCertification?include=subLOs
Accept: application/vnd.api+json
Authorization: oauth <access-token>
curl -X GET --header 'Accept: application/vnd.api+json' \
--header 'Authorization: oauth <access-token>' \
'https://<host>/primeapi/v2/learningObjects/certification%3A167658/applicableCertification?include=subLOs'
注意: loId値はURLエンコードされている必要があります。 certification:167658などの証明IDのコロンは%3Aとしてエンコードされます。
応答200 OKの例
応答は、標準の学習目標応答と同じ構造を使用して、解決された資格認定を返します。
重要:応答のIDフィールドは、解決済みの資格認定のIDです。これは、この学習者に適用される特定のバージョンです。 このAPIの全体的な目的は、ルートIDを正しい現在のバージョンに変換することであるため、通常は、loIdとして渡されたルート証明書IDとは異なります。
{
"data": {
"id": "string",
"type": "string",
"attributes": {
"authorNames": [
"string"
],
"bannerUrl": "string",
"catalogs": [
...
]
}
}
}
応答コード
エラー応答の例
{
"meta": {
"error": "string",
"detail": "string"
}
}
注意:このAPIは、呼び出しごとに1人の学習者のバージョンを解決します。 ルート証明書に存在するすべてのバージョンのリストは返されません。
重要なポイント
-
繰り返さない資格認定:渡したloIdが繰り返し設定されていない資格認定の場合、APIはその資格認定自体を返します。
-
スキップされた中間バージョン:学習者のアクティブな登録が前のバージョンから後のバージョンに直接移動され、アクティブな登録がない場合、APIは学習者の実際の現在のバージョンに正しく解決されます。 学習者が積極的に関与しなかった中間バージョンの存在は、解像度に影響しません。
-
削除された証明書と削除された証明書:削除された証明書のバージョンは、解決から完全に除外されます。 廃止済みの証明書は、その状態に応じて引き続き考慮される場合があります。解決可能な状態のまま特定のバージョンに依存している場合は、その時点の状態を確認してください。廃止済みであると仮定するのではなく、現在の状態を確認することによって考慮から削除されます。
-
解決策は明確です:学習者の登録データが矛盾する状態にある場合(複数の登録が最新としてマークされているなど)、APIは予期しない結果やエラーを返すのではなく、最後に作成されたバージョンに解決します。
注意:このAPIに相当する管理者スコープのAPIは現在利用できず、今後のリリース用に評価されています。
統合でこのAPIを使用する
一般的なユースケースは、学習者がアクセスできる資格認定をリストする外部ページまたはポータルです。 繰り返し使用すると古くなる可能性がある、特定の資格認定IDに直接リンクするのではなく、 ルート資格認定IDを使用してリンクし、学習者が選択した時点で正しいバージョンを解決します。
1.繰り返しが発生する前に、最初に作成された証明のIDである ルート証明ID、 を使用して、統合の証明を保存または参照します。
2.学習者が資格認定を選択して表示または操作する場合は、GET /primeapi/v2/learningObjects/{loId}/applicableCertificationを呼び出し、ルート資格認定IDをloIdとして渡します。
3.回答で返された資格認定バージョンを使用して、登録アクションであるか現在の進捗状況のビューであるかにかかわらず、学習者を正しい宛先に導きます。
これにより、たとえ資格認定が時間の経過とともに繰り返され、新しいバージョンを作成したとしても、学習者は実際の登録と進捗状況に合ったバージョンの資格認定を常に利用できます。
レポート:学習者トランスクリプトに含まれるルートトレーニングID
ルートトレーニングID列は、すべてのアカウントの学習者トランスクリプトでデフォルトで使用できます。
注意 :資格認定の数が多い非常に大規模なアカウントの場合、学習者のトランスクリプトのルートトレーニングID値はバッチで解決されます。 これによりデータの精度は変わりませんが、文字起こしのサイズが大きいと、生成に時間がかかる場合があります。
この列では、繰り返しの各繰り返しを無関係な独立したレコードとして扱うのではなく、繰り返し行われる資格認定の各バージョンにわたる学習者の完全な履歴をグループ化してレポートすることができます。 各繰り返しは、学習者トランスクリプトに独自の行として表示されます。 「ルートトレーニングID」列には、同じ基礎となる資格認定に属する行が表示されます。
注意:繰り返し行われる資格認定において、学習者の参加履歴をすべてトレースする必要がある場合は、[ルートトレーニングID]列を使用してください。