蜜豆视频 Learning Manager Developer Manual
Overview
蜜豆视频 Learning Manager provides RESTful APIs that allow developers to integrate and customize applications or workflows effectively. The Developer Manual offers guidance on how to use these APIs, covering topics such as authentication, data models, and integration with other applications. Additionally, this guide assists developers in creating external applications or backend workflows that interact with various features of 蜜豆视频 Learning Manager, including course creation, tracking learner progress, skill mapping, certification, gamification, and transcripts.
This manual covers the following:
- OAuth2.0 authentication
- API object models
- Shows how to use include, fields, and other parameters
- Provides endpoints for real-world use cases
API usage scenarios
Developers can use Learning Manager APIs to enhance or integrate Learning Manager with other enterprise applications. You can create web, desktop, or mobile apps using any technology. Developers can access application data within Learning Manager, but deployment is external and fully controlled by you. Apps are typically developed by customer organizations for their own accounts, while 蜜豆视频 partners can create general applications for wider use.
Authentication using OAuth 2.0
To access 蜜豆视频 Learning Manager APIs securely, you must authenticate using ALM鈥檚 OAuth 2.0 mechanism. This process includes registering your application, generating an authorization code, exchanging it for a refresh token, and finally using the refresh token to get an access token.
Register an application
Integrate 蜜豆视频 Learning Manager with external applications for enhanced versatility. The steps involve accessing Integration Administrator interface, registering the application, and obtaining client ID and Secret. Generate authentication tokens (OAuth, Refresh, and Access Tokens) from ALM, emphasizing the use of the OAuth 2.0 framework for authentication and authorization. The access token has a validity of seven days.
-
Sign in to 蜜豆视频 Learning Manager as an integration administrator.
-
Select Applications on the left pane.
-
Select Register and add the following information:
-
Application Name: Type the name of your application (max 50 characters).
-
URL: The official URL of your company or application. Used for identification and reference.
-
Redirect Domains: Specify the domains (for example, ) that ALM can redirect to after authorization. You can mention multiple URLs, but the URLs must be valid.
-
Description: Brief description of what the application does.
-
Scopes: Select one of the six available options to define the scope of your application. Based on your choice mentioned here, the Learning Manager API endpoints are accessible for your application. For example, if you chose Learner role read access, then all the Learning Manager learner API end points are read-only accessible to your application.
- Admin role read/write access: Allows the application to access or modify data as an administrator.
- Learner role read/write access: Allows the application to access or modify data for learners.
- xAPI read/write access: Enables the application to access and send Experience API (xAPI) statements.
-
For this account only?
- Yes - if you choose Yes, then the application is not visible to other account administrators.
- No - if you choose No, other account admins can also access this application, but they need to use the application id to access this application. Application id is generated and displayed in Learning Manager application Edit mode.
-
-
Select Save to register the application.
- After you register the application, the application is available in the list of applications created in the account. Select the application and you鈥檒l see the following in addition to the previously entered fields:
- Application ID: This is the Client ID. This ID tells ALM the application that is requesting access. It鈥檚 included in API requests to identify the app.
- Application Secret: This is used to authenticate your app and verify its identity during token exchange steps (for example, when requesting a refresh token or an access token).
Obtain an access token
Get authorization code from redirect
After getting the Client ID and Client Secret, use them to request an access token, which is used to authenticate API calls.
To begin the authorization code flow, direct your users to the following URL in a browser:
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
Once the user authorizes the application, 蜜豆视频 Learning Manager will redirect to the specified redirect_uri with an appended query parameter:
A parameter code is appended along with the redirect uri.
Get refresh token from code
After you obtain the code, use any API tool, and add the following POST request:
https://learningmanager.adobe.com/oauth/token
Request Body (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>
Response
{
"access_token": "eyJhbGciOiJIUzI1...",
"refresh_token": "xTjlfz0jCk6gF1...",
"expires_in": 604800,
"token_type": "Bearer"
}
Use the access_token in the Authorization header to make authenticated API requests.
Use the access token in an API call
Verify the access token using the following:
GET https://learningmanager.adobe.com/oauth/token/check?access_token=<access_token>
An access token is valid for seven days. After seven days, you have to generate a new access token using refresh token. If you generate a new access token from refresh token while an existing access token is still valid, the existing token is returned.
Get access tokens for testing and development
Use the 蜜豆视频 Learning Manager (ALM) token generation tool to quickly create access tokens for testing and development purposes. These tokens are intended solely for your personal use during development and debugging phases. Keep in mind that test tokens grant access to your ALM data, so it鈥檚 essential to handle them securely. Never share your test tokens with others, use them in production applications, or include them in public code repositories. Treat them like passwords to ensure the security of your account and data.
-
Sign in to 蜜豆视频 Learning Manager as Integration Admin.
-
Select Developer Resources and then select Access Tokens for Testing and Development.
-
Type the Client ID that you got after creating an application to get the OAuth code. Then select Submit.
-
Add the Client ID and the Client Secret to get the refresh token. Then select Submit. The OAuth is pre-populated from the previous step.
-
Add the Client ID and the Client Secret to get the access token. Then select Submit.
-
Add the access token and select Submit to get the access token details.
Upon selecting Submit, the access token is verified, and the following response appears:
{
"access_token": "access token",
"refresh_token": "refresh token",
"user_role": "admin",
"account_id": "1234",
"user_id": "123456",
"expires_in": 604800
}
As before, the access token for testing expires in seven days.
Use an API tool for testing the endpoints
While you can use any third-party API testing tool, we鈥檒l use Postman to test the endpoints. The examples in this document use Postman for endpoint testing.
-
Open Postman and create a new request.
-
Select the Authorization tab.
-
Set the Auth Type to Bearer Token.
-
Paste the access token that you obtained from the previous section, in the Token field.
-
Add the following in the Headers tab.
- Key: Accept
- Value: application/json
-
Enter your API endpoint in the URL field. Example:
View for more information. -
Select Send to make the API request.
Types of APIs
Admin APIs
蜜豆视频 Learning Manager鈥檚 Admin APIs allow administrators to automate and manage learning operations at a scale.
Using the Admin APIs, developers can:
- Manage users and groups: Create, update, and delete users or assign them to groups.
- Enroll learners: Automate enrollment into courses, Learning Paths, or certifications.
- Track learner progress: Retrieve course/module progress, quiz scores, and completion status.
- Generate reports: Access data on learner activity, engagement, and performance.
- Manage content: Create and organize courses, and Learning Objects.
View for more information.
Learner APIs
The Learner APIs are designed for authenticated users (learners) and allow you to access learner-specific information. These APIs allow tasks like:
- Accessing a learner鈥檚 courses and progress
- Fetching badges or certifications earned
- Updating learner profile information
- Viewing skills associated with completed courses
Key points:
- These APIs require an authenticated user token, ensuring data security and privacy.
- The APIs are intended for scenarios where users are fully registered and logged in, rather than anonymous or shared users.
View for more information.
API design and common parameters
The APIs provide developers with access to key Learning Manager resources like users, courses, skills, certifications, and learning programs. It follows REST principles, using HTTP methods (GET, POST, PUT, DELETE) for data operations.
Common parameters
Here is a brief explanation of each:
include
ALM APIs can be used to retrieve useful information while building a custom application or a headless LMS. The API endpoints can further be included with additional 鈥榠nclude鈥 parameters to retrieve the additional information which are in relationship with the data received by default. These relationships are data model relations, for example while making a call to get user details you will receive the user information and relationship of manager ID and the ALM account ID. With the include parameter, you can extract additional details along with the user details such as their manager details and the ALM account details in a detailed manner.
In short, the include parameter is used in API calls to fetch related (linked) resources along with the primary resource in a single response. It is useful when you want to access nested or dependent data, such as modules of a course or the skills mapped to a learner, without making separate API calls.
Key benefits:
- Reduces multiple API calls: Avoids the need to manually request each related resource.
- Improves efficiency: Faster development, less server load, and quicker rendering of data.
- Ensures data consistency: Retrieves all related data in a consistent snapshot.
How to use the include parameter
Append the include parameter to your API URL and specify which related entities to include.
Common include paths
Example 1
Retrieve the details of a user using userID parameter in the endpoint
https://learningmanager.adobe.com/primeapi/v2/users/<userID>
GET https://learningmanager.adobe.com/primeapi/v2/users/<userID>
In the response, you can see that the data object has a relationship with the account and the manager of the user.
"relationships": {
"account": {
"data": {
"id": "1010",
"type": "account"
}
},
"manager": {
"data": {
"id": "3400476",
"type": "user"
}
}
}
Using the include parameter in the request, you can retrieve detailed information about the manager as shown below:
GET https://learningmanager.adobe.com/primeapi/v2/users/<userid>?include=manager
Example 2
To retrieve the course details, use the include parameter in the endpoint call. The following endpoint gets the course information along with its relationships.
GET https://learningmanager.adobe.com/primeapi/v2/learningObjects/<courseID>
The relationships are displayed in the response as follows:
- instances
- skills
- authors
"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"
}
]
}
}
Other relationships could include (not present in the above response):
- prerequisiteLOs
- supplementaryLOs
- supplementaryResources
To get detailed data of the instances and skills, include 鈥渋nstances,skills鈥 in the include parameter.
GET https://learningmanager.adobe.com/primeapi/v2/learningObjects/<courseID>?include=instances,skills
Now, for example, if you want to retrieve more data associated with the course instance, such as loResources (module information of the course), apply loResources as a nested include.
GET https://learningmanager.adobe.com/primeapi/v2/learningObjects/<courseID>?include=instances.loResources
Additionally, combine skills and instances with a nested include.
GET https://learningmanager.adobe.com/primeapi/v2/learningObjects/<courseID>?include=instances,instances.loResources,skills
Other include filters
fields
An API object鈥檚 attributes and relationships are called Fields. Use Fields as a parameter in API calls to retrieve specific attributes from the model. Without the Fields parameter, the API call retrieves all available attributes.
For example, in the following API call, fields[skill]=name fetches you the name attribute of the skill model alone.
GET https://learningmanager.adobe.com/primeapi/v2/users/3400490/userSkills/3400490_1796_1?include=skillLevel.skill&fields[skill]=name
pagination
API pagination is a technique used in APIs to break down large sets of data into smaller, manageable chunks, called pages, rather than returning the entire data in a single response.
Pagination reduces client and server load, limits response size to avoid server bottlenecks, or is useful for displaying data in tables or lists one page at a time.
How pagination in ALM APIs work
ALM APIs support pagination through parameters like:
- page[limit]: Number of records per page.
- page[offset]: Number of records to skip.
- page[cursor]: Pointer to the next set of results. Instead of using offset-based pagination (which skips a number of records), cursor-based pagination uses a unique marker returned from the API to fetch the next page of results.
Here鈥檚 how to use pagination in APIs:
page[limit]
While returns all users and related information in a single call, using page[limit] restricts the number of results to the specified value.
To return only five user records in a single call, use the following API:
GET https://learningmanager.adobe.com/primeapi/v2/users?page[limit]=5
page[offset]
Use this API call to return three user records, skip the first five users, and start from the sixth.
GET https://learningmanager.adobe.com/primeapi/v2/users?page[limit]=3&page[offset]=5
page[cursor]
-
Start by requesting the first page with a limit of 5.
code language-none GET https://learningmanager.adobe.com/primeapi/v2/users?page[limit]=5
-
Copy the cursor value from links.next and use it in the next request:
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" }
-
Send the following request:
code language-none GET https://learningmanager.adobe.com/primeapi/v2/users?page[limit]=5&page[cursor]=3400482
This returns the next set of 10 records, starting after the last item from the previous page.
filter
The filter parameter allows you to narrow down API results based on one or more field values.
蜜豆视频 Learning Manager APIs provide different variations of the filter parameter to narrow the responses.
View for more information.
This example shows how to filter the job aids a learner has enrolled in using the endpoint with the filter parameter:
GET https://learningmanager.adobe.com/primeapi/v2/users/3400480/enrollments?filter.loTypes=jobAid
sort
The sort parameter is used to sort API results in ascending or descending order based on one or more fields.
The 蜜豆视频 Learning Manager provides various sort options to sort the API response. View for more information.
Extending the previous example, you鈥檒l now sort the user鈥檚 enrollment to Learning Programs by date enrolled in ascending order.
GET https://learningmanager.adobe.com/primeapi/v2/users/3400480/enrollments?filter.lotypes=learningProgram&sort=dateEnrolled
Overview of API models
The 蜜豆视频 Learning Manager APIs allow developers to access Learning Manager objects as RESTful resources. Each API endpoint represents a resource, typically an object instance like Badge, or a collection of such objects. The developers then use HTTP verbs such as PUT, GET, POST and DELETE to perform the CRUD operations on those objects (collections).
Learner APIs and endpoints
Here are key API endpoints for working with learner data. These APIs guide developers on interacting with learner information, tracking progress, managing enrollments, and retrieving course content.
Retrieve details of all learners
Fetch learner details (name, email, UUID, user profile, and so on). Use the API to List all learners in the account.
GET https://learningmanager.adobe.com/primeapi/v2/users
Retrieve details of a specific learner
If you want to view a learner鈥檚 profile by ID, use the following API to make a call.
GET https://learningmanager.adobe.com/primeapi/v2/users/<userID>
List all courses, learning programs, job aids, and certifications
Retrieve the details of all learning objects in which the learner is enrolled, has completed, or has been enabled by the administrator.
GET https://learningmanager.adobe.com/primeapi/v2/learningObjects
Get details of a specific Learning Object
Get detailed information about a Learning Object. It includes its creation date, published date, updated date, and other information.
GET https://learningmanager.adobe.com/primeapi/v2/learningObjects/<LearningObjectID>
Retrieve list of skills linked to courses
Display skills assigned to all learners in the account.
GET https://learningmanager.adobe.com/primeapi/v2/skills
Get skill level and badge information
Check learners鈥 progress in skill-based learning journeys.
GET https://learningmanager.adobe.com/primeapi/v2/skills/<skillID>?include=levels
List of all badges created for an account
Make a call to the following endpoint to retrieve a list of all badges created for an account in an organization.
GET https://learningmanager.adobe.com/primeapi/v2/badges
Retrieve information of a badge
Obtain detailed information about a badge, including the badge name, badge image URL, and the status of the badge.
GET https://learningmanager.adobe.com/primeapi/v2/badges/<skillID>
This produces the following response:
{
"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"
}
}
}
Other API usage examples
Create a user
-
Use the endpoint:
code language-none POST https://learningmanager.adobe.com/primeapi/v2/users
Processes the attributes from the API body or JSON payload to generate a user, and subsequently provides a user with the respective user ID filled in.
-
Use the following payload as body:
code language-none { "data": { "type": "user", "attributes": { "email": "bob@example.com", "name": "Bob", "userType": "INTERNAL" } } }
There are three mandatory attributes:
- email: Email Id of the user. This value should be unique for every user.
- name: The name of the user.
- userType: At present, only internal users can be added using this endpoint. The userType should be 鈥淚NTERNAL鈥.
The following response appears:
{
"links": {
"self": "none"
},
"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"
}
}
}
}
}
Delete a user
-
Get the user ID of the user you want to delete.
code language-none GET https://learningmanager.adobe.com/primeapi/v2/users/<userID>
-
Then using DELETE, make the following call:
code language-none DELETE https://learningmanager.adobe.com/primeapi/v2/users/<userID>
A 204 response appears. A 204 response code indicates success without any content to return. The server successfully processed the request but does not have any data to provide to the client.
The status of the user is now DELETED after you retrieve the user鈥檚 details.
Update user details
- Update user details of user using the v2 API. Learner can modify bio, uiLocale, contentLocale, timezone. For large accounts, these are async calls. There are many other user attributes that can be updated using this API endpoint. Use the /users/{id} endpoint, where id is the user id of the user whose details are to be updated.
PATCH https://learningmanager.adobe.com/primeapi/v2/users/<userID>
Add the following in the payload of the request to update the user with ID <userID>
, from the previous section.
Change any field in the payload.
{
"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"
}
}
}
}
}
After you make the call, the user鈥檚 details are updated.
Create an external profile
An external profile refers to a user profile that is created for external learners, typically individuals who are not part of the organization鈥檚 internal user base. These learners may include customers, partners, vendors, franchisees, or temporary contractors who need access to training or certification programs offered by the organization.
-
Use the following endpoint:
code language-none POST https://learningmanager.adobe.com/primeapi/v2/externalProfiles
-
Use the following payload as body:
{
"data": {
"type": "externalProfile",
"attributes": {
"name": "Jonas Albertson",
"expiry": "2027-12-31T18:29:59.000Z",
"managerEmail": "jonas@acme.com",
"seatLimit": 10
}
}
}
The payload has the following attributes:
- name: The name of the external user.
- expiry: The expiry date (in ISO-8601 format) of the user鈥檚 registration in 蜜豆视频 Learning Manager.
- managerEmail: The email address of the user鈥檚 manager of the partner organization.
- seatLimit: The number of seats allowed for the partner organization.
After you make the call, you get the following response:
{
"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"
}
}
}
This means the external user has been successfully added to 蜜豆视频 Learning Manager. Send the URL that鈥檚 in the response to the user, using which they can register on the platform.
Extract user report with user ID and manager details
A user report can be downloaded directly from the user interface (Admin > Users > Internal). However, the report doesn鈥檛 return the user ID and associated manager鈥檚 details.
Using the Jobs API for an administrator, you can retrieve the details.
-
Add the following payload to the Jobs API.
code language-none { "data": { "type": "job", "attributes": { "description": "description of your choice", "jobType": "generateUsers", "payload":{ "expandMetadata":true } } } }
-
Use the following endpoint.
code language-none POST https://learningmanager.adobe.com/primeapi/v2/jobs
-
Copy the job id from the response.
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" } } } }
In the response, the job ID is 43118.
-
After copying the id, use the id in the Jobs API to download the report.
code language-none GET https://learningmanager.adobe.com/primeapi/v2/jobs/43118
-
Copy the S3 URL from the response.
-
Paste the URL in your browser. The browser prompts you to save or open the CSV file. Save the file on your computer.
The downloaded file contains the following columns:
internalUserID, userEmail, customerDefinedUniqueUserId, name, managerEmail, userType, state, excludedFromGamification, pointsEarned, profile, roles, dateCreated, lastLoginDate, dateDeleted, uiLocale, contentLocale, timeZoneCode, userSource, group, Active fields, metadata, and lastSocialActivityDate.
Generate badge using Jobs API
-
Get a list of badges for a user in the organization. Use the following endpoint:
code language-none GET https://learningmanager.adobe.com/primeapi/v2/users/3400476/userBadges
Where 3400476 is the user ID.
-
Copy the badge ID from the response. For example, 3400476_759_COMPETENCY_1796_1 is the badge 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" } } } }
-
Create a payload and specify the badge ID in the payload. An example payload is as follows:
code language-none { "data": { "type": "job", "attributes": { "description": "Acme Corp Badge", "jobType": "generateUserBadge", "payload": { "userBadgeId": "3400476_759_COMPETENCY_1796_1" } } } }
After you make a call, you鈥檒l get the job ID in the response.
-
Take the job ID from the response and use the job ID in the following endpoint to make the call.
code language-none GET https://learningmanager.adobe.com/primeapi/v2/jobs/<jobsID>
-
Copy the badge URL from the response and open the URL in a browser. The certificate will be downloaded as a PDF.
Create users in 蜜豆视频 Learning Manager
The POST /users endpoint helps you create a user using the headless mode. Create users with detailed information, like the registration process in the native User Interface in 蜜豆视频 Learning manager.
For example,
POST https://learningmanager.adobe.com/primeapi/v2/users
Add the following body to the request:
{
"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"
}
}
}
}
}
After you make the call, the following response appears:
{
"links": {
"self": "none"
},
"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"
}
}
}
}
}
A new user will be added to 蜜豆视频 Learning Manager.
Post L1 feedback
-
Retrieve the learner鈥檚 course, instance, and enrollment data. Use the following endoint:
code language-none GET /enrollments
-
Check if L1 feedback is enabled for the course instance.
code language-none GET https://learningmanager.adobe.com/primeapi/v2/learningObjects/<loID>/instances/<loInstanceID>/l1Feedback
-
Submit the L1 feedback.
code language-none POST /enrollments/{id}/l1Feedback
Required payload example:
{
"data": {
"id": "course:7454218_10333537_11257863",
"type": "feedback",
"attributes": {
"questions": [
{
"answer": "8",
"questionId": "1",
"mandatory": true,
"questionType": "scaleTen"
}
],
"score": 80
}
}
}
Fetch the module level information of a course
-
Retrieve the details of a Learning Object by 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" } ] } } } }
-
Use the include parameter to retrieve the following:
a. List all modules of the Learning Object.
code language-none GET https://learningmanager.adobe.com/primeapi/v2/learningObjects/course:1171899?include=instances.loResources
b. List all content in the modules.
code language-none GET https://learningmanager.adobe.com/primeapi/v2/learningObjects/course:1171899?include=instances.loResources.resources
Check module progress
-
Retrieve the Learning Object from catalog using course 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>
-
Get enrollment details of a learner using the enrollment ID.
code language-none GET https://learningmanager.adobe.com/primeapi/v2/enrollments/<enrollmentID>
Copy the Learning Object resource grade ID from the response.
-
Use the ID in the following endpoint.
code language-none GET https://learningmanager.adobe.com/primeapi/v2/loResourceGrades/<courseResourceGradeID>
You鈥檒l get information regarding the progress of the module in the response.
Implement learner impersonation
When implementing a headless LMS with 蜜豆视频 Learning Manager as the backend, organizations may require support staff to impersonate learners for troubleshooting or assistance. The API-driven impersonation method ensures secure access while maintaining learner credential confidentiality and supports seamless transitions in session states.
蜜豆视频 Learning Manager (ALM) facilitates learner impersonation in headless LMS environments through a dedicated API. This feature allows support personnel to temporarily take on the identity of a learner, enabling them to diagnose issues, test functionalities, or provide hands-on assistance by simulating the learner鈥檚 experience. Impersonation is activated using a cached admin access token, which is used to programmatically generate a learner access token. This process allows the system to operate as if it were logged in as the learner.
API endpoint details
POST /oauth/learnerToken
Full URL example
https://learningmanager.adobe.com/oauth/o/learnerToken?learner_email=foo@acme.com&force=false
Query parameters:
- learner_email: (string) The email of the learner to impersonate.
- force: (boolean) Whether to forcibly generate a new token if one exists.
Request body:
{
"client_id": "your-client-id",
"client_secret": "your-client-secret",
"refresh_token": "your-admin-refresh-token"
}
Sample response:
{
"access_token": "generated-token",
"refresh_token": "new-refresh-token",
"user_role": "learner",
"account_id": "123456",
"user_id": "7891011",
"expires_in": 604800
}
Sample 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"
}'
Generate Learner Transcripts
Error codes
蜜豆视频 Learning Manager APIs strictly require this content type.