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を他のエンタープライズアプリケーションと強化または統合できます。 任意のテクノロジーを使用して、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フローを使用して、アプリを安全に認証および承認します。 アクセストークンの有効期間は7日です。

  1. 統合管理者としてAdobe Learning Managerにログインします。

  2. 左側のペインで​ アプリケーション ​を選択します。

    代替テキスト

  3. 登録 ​を選択し、次の情報を追加します:

    • アプリケーション名:アプリケーションの名前を入力します(最大50文字)。

    • URL:会社またはアプリケーションの公式URLです。 識別と参照に使用されます。

    • リダイレクトドメイン: Adobe Learning Managerが認証後にリダイレクトできるドメイン(例: http://learningmanager.adobe.com)を指定します。 複数の有効なURLを指定できます。

    • 説明:アプリケーションの機能の簡単な説明です。

    • スコープ:アプリケーションのスコープを定義するために使用できる6つのオプションのいずれかを選択します。 ここに示された選択に基づき、アプリケーションからLearning Manager APIエンドポイントにアクセスできます。 例えば「学習者の役割の読み取りアクセス」を選択した場合、Learning Managerの学習者APIエンドポイントのすべてで、アプリケーションから読み取り専用のアクセスが可能になります。

      • 管理者ロール読み取り/書き込みアクセス権:アプリケーションが管理者としてデータにアクセスしたり、データを変更したりできるようにします。
      • 学習者の役割読み取り/書き込みアクセス権:アプリケーションが学習者のデータにアクセスしたり、変更したりできるようにします。
      • xAPI読み取り/書き込みアクセス:アプリケーションがExperience API(xAPI)ステートメントにアクセスして送信できるようにします。
    • このアカウントのみですか?

      • はい - [はい]を選択した場合、他のアカウント管理者がアプリケーションを見ることはできません。
      • いいえ - [いいえ]を選択した場合、他のアカウント管理者もこのアプリケーションにアクセスできますが、このアプリケーションにアクセスするには、アプリケーションIDを使用する必要があります。 アプリケーションIDが生成され、Learning Managerアプリケーションの編集モードに表示されます。

      代替テキスト

  4. 保存」を選択してアプリケーションを登録します。

    • アプリケーションを登録すると、アカウントで作成されたアプリケーションのリストでそのアプリケーションを使用できるようになります。 アプリケーションを選択すると、以前に入力したフィールドに加えて、次のフィールドが表示されます。
    • アプリケーションID:これはクライアントIDです。 このIDは、アクセスを要求しているアプリケーションをAdobe Learning Managerに通知します。 これは、アプリを識別するためのAPIリクエストに含まれています。
    • アプリケーションシークレット:これは、トークン交換手順(更新トークンやアクセストークンを要求する場合など)でアプリケーションを認証し、そのIDを確認するために使用されます。

アクセストークンの取得

認証コードの取得

クライアント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"

}

認証されたAPI要求を行うには、Authorizationヘッダーのaccess_tokenを使用します。

API呼び出しでアクセストークンを使用

次を使用してアクセストークンを確認します。

GET https://learningmanager.adobe.com/oauth/token/check?access_token=<access_token>

アクセストークンの有効期間は7日間です。 7日後、更新トークンを使用して新しいアクセストークンを生成する必要があります。 既存のアクセストークンが有効な場合に、更新トークンから新しいアクセストークンを生成すると、既存のトークンは返却されます。

テストおよび開発用のアクセストークンを取得

Adobe Learning Manager APIを使用する場合、開発者はAPIリクエストを認証するために有効なOAuth 2.0アクセストークンを必要とします。 標準のOAuthフローを介してこのトークンを生成すると、特に迅速なテスト、学習、開発のために、複雑で時間がかかる場合があります。 Adobe Learning Managerには、このプロセスを簡素化するためのトークン生成ツールが用意されています。

このツールは、次の場合に最適です。

  • 概念実証(POC)ビルド

  • 早期開発

  • API統合に関する問題のトラブルシューティング

これらのトークンは、開発およびデバッグフェーズでの個人的な使用のみを目的としています。 テストトークンは、Adobe Learning Managerデータへのアクセスを許可するため、安全に処理することが不可欠です。 テストトークンは、他のユーザーと共有したり、実稼働アプリケーションで使用したり、パブリックコードリポジトリに含めたりしないでください。 アカウントとデータのセキュリティを確保するために、パスワードと同様に扱います。

  1. 統合管理者としてAdobe Learning Managerにログインします。

  2. 開発者向けリソース ​を選択してから、テストおよび開発用のアクセストークンを選択 ​します。

  3. OAuthコードを取得するアプリケーションを作成した後に取得した​ クライアントID ​を入力します。 次に、送信 ​を選択します。

  4. クライアントID ​と​ クライアントシークレット ​を追加して、更新トークンを取得します。 次に、送信 ​を選択します。 OAuthは前の手順から事前入力されます。

  5. クライアントIDとクライアントシークレットを追加して、アクセストークンを取得します。 次に、送信 ​を選択します。

  6. アクセストークンを追加し、「送信」を選択してアクセストークンの詳細を取得します。

送信 ​を選択すると、アクセストークンが検証され、次のJSONオブジェクトが届きます。

{
  "access_token": "access token",
  "refresh_token": "refresh token",
  "user_role": "admin",
  "account_id": "1234",
  "user_id": "123456",
  "expires_in": 604800
}

これまでと同様に、テスト用アクセストークンは7日で期限切れになります。

エンドポイントのテストに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を使用すると、管理者は学習オペレーションを大規模に自動化および管理できます。

Admin APIを使用すると、開発者は次の操作を実行できます。

NOTE
このリストは網羅的ではありません。
  • ユーザーとグループの管理:ユーザーを作成、更新、および削除するか、グループに割り当てます。
  • 学習者の登録 :コース、学習パス、または資格認定の登録を自動化します。
  • 学習者の進行状況の追跡:コースやモジュールの進行状況、クイズのスコア、完了ステータスを取得します。
  • レポートの生成:学習者のアクティビティ、エンゲージメント、パフォーマンスに関するデータにアクセスします。
  • コンテンツの管理:コースや学習目標を作成および整理します。

詳しくは、Adobe Learning Manager APIリファレンスを参照してください。

学習者API

学習者APIは、認証されたユーザー(学習者)向けに設計されており、学習者固有の情報にアクセスできます。 これらのAPIにより、次のようなタスクを実行できます。

  • 学習者のコースおよび進捗状況へのアクセス
  • 取得したバッジまたは資格認定の取得
  • 学習者プロファイル情報の更新
  • 完了したコースに関連付けられているスキルの表示

キーポイント:

  • これらのAPIでは、認証済みユーザートークンが必要であり、データのセキュリティとプライバシーが確保されます。
  • このAPIは、匿名ユーザーや共有ユーザーではなく、ユーザーが完全に登録されてログインしているシナリオを想定しています。

詳しくは、Adobe Learning Manager APIリファレンスを参照してください。

API設計と共通パラメーター

APIを使用すると、開発者はユーザー、コース、スキル、資格認定、学習プログラムなど、Learning Managerの主要リソースにアクセスできます。 RESTの原則に従い、HTTPメソッド(GET、POST、PUT、DELETE)を使用してデータを処理します。

メソッド
GET、PUT、POST、DELETE
書式設定
application/vnd.api+json, application/json. 一般的なMIMEの種類の詳細を表示します。
ベース URL
https://learningmanager.adobe.com/primeapi/v2/

共通パラメーター

パラメーター
目的
include
1回の呼び出しで関連リソースを取得します。
フィールド
ペイロードを削減する特定の属性を選択します。
フィルター
検索結果を絞り込む(例:ID、名前)
並べ替え
ご注文の結果
ページ[制限]、ページ[オフセット]
ページ割り付けのサポート

以下に、それぞれの簡単な説明を示します。

include

Adobe Learning Manager APIを使用すると、カスタムアプリケーションやヘッドレスLMSの構築中に、役立つ情報を取得できます。 APIエンドポイントを追加の「include」パラメーターと共に含めて、デフォルトで受信されたデータと関連する追加情報を取得することもできます。 これらの関連付けはデータモデルリレーションです。例えば、ユーザーの詳細を取得するために電話をかけると、ユーザー情報と、マネージャーIDとAdobe Learning ManagerアカウントIDの関連付けが表示されます。 includeパラメーターを使用すると、マネージャーの詳細やAdobe Learning Managerアカウントの詳細などのユーザーの詳細とともに、詳細な方法で追加の詳細を抽出できます。
つまり、API呼び出しで​ include ​パラメーターを使用して、関連する(リンクされた)リソースとプライマリリソースを1つの応答で取得します。 この機能は、個別のAPI呼び出しを行わずに、コースのモジュールや学習者にマップされたスキルなど、ネストされたデータや依存データにアクセスする場合に便利です。

主なメリット:

  • 複数のAPI呼び出しを削減:関連する各リソースを手動で要求する必要がなくなります。
  • 効率の向上:開発の高速化、サーバー負荷の軽減、データのレンダリングの高速化を実現します。
  • データの一貫性を確保:一貫性のあるスナップショット内のすべての関連データを取得します。

includeパラメーターの使用方法

API URLにincludeパラメーターを追加し、含める関連エンティティを指定します。

共通インクルードパス

値を含める
説明
インスタンス
学習目標のすべてのインスタンスを返す
enrollment
ユーザーの登録詳細を返します。
instances.loResources.resources
インスタンス内のモジュールとリソースを取得します。
supplementaryResources
関連する補足リソースを返します
skills.skillLevel.badge
スキルレベルと関連するバッジを取得します
前提条件LO
前提条件となる学習目標が含まれています
subLOs
サブ学習オブジェクトを取得します(LPまたは資格認定で使用)
subLOs.enrollment
サブ学習目標の登録
instances.badge
コースインスタンスの完了時に割り当てられるバッジ
subLOs.subLOs.instances.loResources.resources
サブサブLOインスタンス内の深くネストされたリソース

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

その他の関係には、次のものがあります(上記の応答には存在しません)。

  • 前提条件LO
  • supplementaryLOs
  • supplementaryResources

インスタンスとスキルの詳細なデータを取得するには、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.instances.loResources.resources.room

subLOs.instances.loResources.resources.room

subLOs.supplementaryResources

subLOs.enrollment

SubLOs.enrollment.loInstance.loResources.resources

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

enrollment.loInstance.loResources.resources
prerequisiteLOs

authors

instances.loResources.resources

supplementaryLOs.instances.loResources.resources

supplementaryResources

instances.badge

skills.skillLevel.badge

skills.skillLevel.skill

instances.loResources.resources.room

prerequisiteLOS.ENROLLMENT

EnROLLMENTLo0 RESOURCEGrADES

フィールド

APIオブジェクトの属性と関係はフィールドと呼ばれます。 API呼び出しでパラメーターとしてフィールドを使用し、モデルから特定の属性を取得します。 Fieldsパラメーターを指定しないと、API呼び出しで使用可能なすべての属性が取得されます。

例えば、次のAPI呼び出しでは、 fields[skill]=nameはスキルモデルのname属性のみを取得します。

GET https://learningmanager.adobe.com/primeapi/v2/users/3400490/userSkills/3400490_1796_1?include=skillLevel.skill&fields[skill]=name

ページ設定

APIページネーションは、APIで使用される手法の1つです。データ全体を1回の応答で返すのではなく、大量のデータを小さく管理しやすいチャンク(ページ)に分割します。

ページ割り当てによって、クライアントとサーバの負荷を軽減し、応答サイズを制限してサーバのボトルネックを回避できます。また、テーブルまたはリストのデータを一度に1ページずつ表示する場合に便利です。

Adobe Learning Manager APIのページ割り付けの仕組み

Adobe Learning Manager APIは、次のようなパラメーターによるページ割り付けをサポートしています。

  • ページ[制限]: 1ページあたりのレコード数。
  • ページ[オフセット]:スキップするレコードの数。
  • ページ[カーソル]:次の結果セットへのポインタ。 (多くのレコードをスキップする)オフセットベースのページ割り当てを使用する代わりに、カーソルベースのページ割り当てでは、APIから返された一意のマーカーを使用して結果の次のページを取得します。

APIでページ割り付けを使用する方法は次のとおりです。

ページ[制限]

https://learningmanager.adobe.com/primeapi/v2/usersは、1回の呼び出しですべてのユーザーおよび関連情報を返しますが、ページ[limit]を使用すると、結果の数が指定された値に制限されます。

1回の呼び出しで5つのユーザーレコードのみを返すには、次のAPIを使用します。

GET https://learningmanager.adobe.com/primeapi/v2/users?page[limit]=5

ページ[オフセット]

このAPI呼び出しを使用して、3つのユーザーレコードを返し、最初の5人のユーザーをスキップして、6番目から開始します。

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個のレコードの次のセットが返されます。

フィルター

filterパラメーターを使用すると、1つ以上のフィールド値に基づいてAPI結果を絞り込むことができます。

Adobe Learning Manager APIでは、様々なバリエーションのフィルターパラメーターを使用して応答を絞り込むことができます。

詳しくは、Adobe Learning Manager APIリファレンスを参照してください。

次の例では、学習者がエンドポイントを使用してfilterパラメータを指定し、登録した作業計画書にフィルタを適用する方法を示します:

GET https://learningmanager.adobe.com/primeapi/v2/users/3400480/enrollments?filter.loTypes=jobAid

並べ替え

sortパラメーターは、1つ以上のフィールドに基づいて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操作を実行します。

Learning Manager オブジェクト
説明
account
Learning Managerのお客様の詳細情報をカプセル化します。
badge
バッジは、学習者がコースを進めていく中で、特定のマイルストーンに到達したときに獲得する達成の証しです。
catalog
カタログは、学習目標のコレクションです。
user
Learning Manager における主要なモデル。通常、ユーザーは、学習目標を使用する組織の内部学習者または外部学習者です。 ただし、学習者という役割に加えて、作成者や管理者など、他の役割を果たす場合もある。 インライン属性には、ユーザー ID、タイプ、電子メールなどがある
resource
これは、モジュール内の各コンテンツリソースを表します。 「loResource」にカプセル化されたすべてのリソースは、学習目標の観点では同等ですが、配信タイプやコンテンツのロケールの観点では互いに異なります。
userNotification
学習者に関連した通知情報が含まれる
userSkill
UserSkillは、1人のユーザーが1つのスキルレベルをどの程度達成しているかを示します。
userBadge
UserBadgeは、単一のバッジを単一のユーザーに関連付けます。 いつ達成したかや、assertionUrlなどの詳細が含まれています。
skill
スキルモデルは、レベルとクレジットで構成される。 学習者は関係のあるコースを完了すると、スキルを取得できる
skillLevel
1つまたは複数のコースで構成されるスキルレベルを使用して、レベルとそれに関連するクレジットを取得します。
learningObject
学習目標は、ユーザーが登録および学習できる様々な種類のオブジェクトの抽象化です。 現在、Learning Managerには4種類の学習目標(コース、資格認定、学習プログラム、作業計画書)があります。
learningObjectInstance
学習目標の特定のインスタンス
learningObjectResource
これはmoduleの概念と同じです。 コースは 1 つまたは複数のモジュールで構成される。 Learning Manager では、モジュールをさまざまな同等の方法で配信できる。したがって、loResourceは本質的にこれらのすべての同等のリソースをカプセル化します。
loResourceGrade
ユーザーが登録した学習目標のコンテキストで特定のリソースを使用した結果をカプセル化する。 リソースでユーザーが費やした時間、ユーザーが行った進行状況の割合、合格/不合格のステータス、関連するクイズでユーザーが取得したスコアなどの情報が含まれます。
calendar
カレンダーオブジェクトは、ユーザーが登録できる今後の教室またはバーチャルクラスルームコースのリストです。
l1FeedbackInfo
学習目標に関連したフィードバックの質問に対して、学習者が提出した回答をカプセル化する。 学習者からフィードバックを収集するように設定されている場合、通常は、ユーザーが学習目標を完了した後に収集されます。
enrollment
この抽象化したものにより、特定の学習目標のインスタンスに対する、特定のユーザーの割り当てに関連したトランザクションの詳細をカプセル化する。

学習者の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の使用例

ユーザーの作成

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

必須の属性は次の3つです。

  • email:ユーザーの電子メールID。 この値は、各ユーザーに対して一意である必要があります。
  • name:ユーザーの名前。
  • userType:現在、このエンドポイントを使用して追加できるのは内部ユーザーのみです。 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応答コードは、返すコンテンツがない状態で成功したことを示します。 サーバーは要求を正常に処理しましたが、クライアントに提供するデータがありません。

ユーザーの詳細を取得した後、ユーザーの状態は​ 削除済み ​になりました。

ユーザーの詳細の更新

  1. v2 APIを使用して、ユーザーの詳細を更新します。 学習者は、bio、uiLocale、contentLocale、timezoneを変更できます。 大規模なアカウントの場合、これらは非同期呼び出しです。 この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
      }
    }
}

ペイロードには次の属性があります。

  • name:外部ユーザーの名前。
  • 有効期限: 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は、レポート、一括操作(登録またはバッジ割り当て)、資格認定の完了、またはバッジの生成に役立ちます。

レポートのダウンロード方法は次のとおりです。

  1. 次のペイロードをジョブ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. 応答からジョブ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です。

  4. IDをコピーした後、ジョブAPIのIDを使用してレポートをダウンロードします。

    code language-none
    GET https://learningmanager.adobe.com/primeapi/v2/jobs/43118
    
  5. 応答からS3 URLをコピーします。

  6. ブラウザーにURLを貼り付けます。 ブラウザーに、CSVファイルを保存するか開くかを確認するメッセージが表示されます。 ファイルをコンピューターに保存します。
    ダウンロードされたファイルには、次の列が含まれています。

internalUserID、userEmail、customerDefinedUniqueUserId、name、managerEmail、userType、state、excludedFromGamification、pointsEarned、profile、roles、dateCreated、lastLoginDate、dateDeleted、uiLocale、contentLocale、timeZoneCode、userSource、group、Activeフィールド、メタデータ、lastSocialActivityDate。

ジョブAPIを使用したバッジの生成

  1. 組織内のユーザーのバッジのリストを取得します。 次のエンドポイントを使用します。

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

    ここで、3400476はユーザーIDです。

  2. 応答からバッジ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"
             }
         }
     }
    }
    
  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. 応答からバッジURLをコピーし、ブラウザーでURLを開きます。 証明書が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をバックエンドとして使用してヘッドレスLMSを実装する場合、トラブルシューティングやサポートのために、サポートスタッフが学習者を偽装する必要が生じることがあります。 APIによる偽装方法は、学習者の資格情報の機密性を維持しながら安全なアクセスを保証し、セッション状態のシームレスな移行をサポートします。

Adobe Learning Managerは専用APIを介して、ヘッドレスLMS環境での学習者の偽装を容易にします。 この機能を使用すると、サポート担当者は一時的に学習者のIDを引き受けることができ、問題の診断やテスト機能を利用したり、学習者のエクスペリエンスをシミュレートした実践的な支援を提供したりすることができます。 なりすましは、キャッシュされた管理者アクセストークンを使用してアクティベートされます。このトークンは、プログラムにより学習者アクセストークンを生成するために使用されます。 このプロセスにより、学習者としてログインしているかのようにシステムを操作できます。

IMPORTANT
この機能を利用するには、ユーザーは特別なAPIアクセスを要求する必要があります。また、偽装中に透明性とアカウンタビリティを確保するために、システムはセッションの切り替え、承認、およびその他のインジケーターを処理する必要があります。

APIエンドポイントの詳細

POST /oauth/learnerToken

完全なURLの例

https://learningmanager.adobe.com/oauth/o/learnerToken?learner_email=foo@acme.com&force=false

クエリパラメーター:

  • learner_email: (文字列)偽装する学習者の電子メール。
  • force: (boolean)新しいトークンが存在する場合に、そのトークンを強制的に生成するかどうかを指定します。

要求本文:

{
    "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
不正なリクエスト
要求に含まれるパラメータが不足しているか、または正しくない形式であるかどうかを確認します。 必須フィールドを確認し、書式を修正します。 例えば、フィルター、フィールド、またはincludeパラメーターの構文が無効です。
401
不正な無効またはトークンがありません
アクセストークンが正しく、認証ヘッダーに含まれていることを確認します。 トークンがアクティブであることを確認します。 また、トークンを要求するときは、正しいクライアントIDとクライアントシークレットを使用します。
403
禁止されています。 アクセスなし
リソースにアクセスする権限がありません。 トークンに正しいスコープ(admin:read、learner:writeなど)があることを確認します。
404
リソースが見つかりません
エンドポイントIDまたはリソースIDが正しくないか、存在しません。 パラメータのリストにリソースが存在することを確認します。
406
不合格 – Acceptヘッダーが正しくありません
このヘッダーをリクエストに追加します。Accept: application/vnd.api+json
Adobe Learning Manager APIでは、このコンテンツタイプは厳密に必須です。
500
内部サーバーエラー
これはサーバー側の問題です。 しばらくしてからやり直すか、問題が解決しない場合はAdobe Learning Managerサポートチームに報告してください。
recommendation-more-help
d5e5961a-141b-4c77-820e-8453ddef913d