canonical: https://jentic.com/apis/desire2learn.com/d2l-brightspace-valence-api

# Desire2learn D2L Brightspace Valence API

Jentic publishes the only available OpenAPI specification for D2L Brightspace Valence API, keeping it validated and agent-ready. Provides programmatic access to the D2L Brightspace learning platform for managing users, organizational units, enrollments, grades, and course content across higher education and corporate training environments. Supports 16 endpoints covering user lifecycle management, org structure traversal, enrollment operations, grade object retrieval, grade value updates, and content module navigation via OAuth 2.0 authentication.

## For AI agents

Manage users, enrollments, grades, and course content on D2L Brightspace learning platform instances with 16 endpoints covering organizational units, grade values, and content modules.

## Scope

Does not handle quiz authoring, discussion forums, or calendar management - use for user management, enrollments, grades, and content structure only.

## Capabilities

- Provision and update user accounts with organizational unit associations
- Enroll and withdraw users from organizational units with role assignments
- Retrieve grade objects and update individual grade values for students
- Navigate organizational structure hierarchies for course and department discovery
- Access course content modules and their structural composition
- Query user enrollment history across organizational units

## Use cases

### AI Agent Integration for LMS Automation

AI agents use the D2L Brightspace Valence API through Jentic to automate enrollment, grading, and user management on Brightspace instances. The agent searches for enrollment or grading operations, loads the endpoint schema, and executes without manual OAuth configuration. This enables automated student onboarding, grade posting, and roster sync for institutions running Brightspace across 16 structured endpoints.

Example prompt: Enroll user ID 5001 in organizational unit 300 using POST /lp/1.0/enrollments/orgUnits/{orgUnitId}/users/{userId} and verify the enrollment succeeded

### Automated Grade Posting

Programmatically retrieve grade objects for a course and update individual student grade values. The API exposes grade objects at GET /le/1.0/{orgUnitId}/grades and allows grade value updates via PUT /le/1.0/{orgUnitId}/grades/{gradeObjectId}/values/{userId}. This supports automated grading pipelines that post scores from external assessment tools back into Brightspace gradebooks.

Example prompt: Retrieve all grade objects for org unit 200 via GET /le/1.0/{orgUnitId}/grades, then update the grade value for user 5001 on grade object 15 using PUT

### User Provisioning and Enrollment Management

Automate the creation of user accounts and their enrollment into courses and departments within Brightspace. POST /lp/1.0/users creates new user accounts, while POST /lp/1.0/enrollments/orgUnits/{orgUnitId}/users/{userId} assigns users to organizational units with specific roles. DELETE on the same endpoint handles withdrawal. This supports term-start provisioning for institutions with thousands of new enrollments.

Example prompt: Create a new user via POST /lp/1.0/users with name 'Jane Smith' and email 'jane@university.edu', then enroll them in org unit 150

### Course Content Structure Navigation

Retrieve course content hierarchies to understand module organization and material availability. GET /le/1.0/{orgUnitId}/content/root returns the top-level content structure, and GET /le/1.0/{orgUnitId}/content/modules/{moduleId}/structure reveals nested module contents. This enables content audit tools and learning analytics that map student progress against course structure.

Example prompt: Retrieve the root content structure for org unit 200 via GET /le/1.0/{orgUnitId}/content/root and list all modules with their child items

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /lp/1.0/users | Create a new user account |
| GET | /lp/1.0/users/{userId} | Retrieve a user by ID |
| POST | /lp/1.0/enrollments/orgUnits/{orgUnitId}/users/{userId} | Enroll a user in an organizational unit |
| DELETE | /lp/1.0/enrollments/orgUnits/{orgUnitId}/users/{userId} | Withdraw a user from an organizational unit |
| GET | /le/1.0/{orgUnitId}/grades | List grade objects for an org unit |
| PUT | /le/1.0/{orgUnitId}/grades/{gradeObjectId}/values/{userId} | Update a grade value for a user |
| GET | /le/1.0/{orgUnitId}/content/root | Get root content structure for a course |

## Key resources

- **Users** — Create, retrieve, and update user accounts on the Brightspace platform
- **Enrollments** — Enroll and withdraw users from organizational units with role assignments
- **Grades** — Retrieve grade objects and update grade values per user per org unit
- **Org Structure** — Navigate the organizational unit hierarchy (courses, departments, semesters)
- **Content** — Access course content root modules and their nested structures

## Why Jentic

- **Setup:** Wiring the D2L Brightspace Valence API by hand means completing its OAuth 2.0 flow, pointing calls at your instance host, and building the user, enrollment, grade, and content operations across the lp and le services yourself. Through Jentic you install once, import the D2L Brightspace Valence API from the API Directory, connect the account once, and your agent calls it.
- **Permission scoping:** Brightspace puts the org unit and user in the URL path (/lp/1.0/enrollments/orgUnits/{orgUnitId}/users/{userId}), so a rule can pin your agent to one org unit: it can manage enrollments and grades within that course and nothing else. You choose the operations it may call, so destructive ones like unenrolling a user are not included unless you add them.
- **Credential handling:** Your D2L Brightspace OAuth token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'update a student grade in Brightspace' or 'enroll a user in a course', and Jentic returns the matching Valence operation with its input schema so the agent calls the right endpoint without navigating D2L's documentation.

## Related APIs

- **Moodle Web Services API** — Moodle is open-source with 90 web service functions; Brightspace is a commercial platform with structured REST endpoints
- **Schoology REST API** — Schoology focuses on K-12 with section-based models; Brightspace targets higher education with org-unit hierarchies
- **Canvas LMS API** — Canvas is Instructure's LMS with extensive REST APIs; Brightspace is D2L's competing higher-ed platform

## FAQ

### Why is there no official OpenAPI spec for D2L Brightspace Valence API?

D2L does not publish an OpenAPI specification for the Valence API. Jentic generates and maintains this spec so that AI agents and developers can call D2L Brightspace Valence API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the D2L Brightspace Valence API use?

The Valence API uses OAuth 2.0 with an implicit flow. Authorization requests go through your Brightspace instance's OAuth endpoint. Through Jentic, OAuth tokens are stored in your encrypted Jentic One instance, so agents access Brightspace data without handling raw client credentials.

### Can I update student grades through the Brightspace API?

Yes. Use PUT /le/1.0/{orgUnitId}/grades/{gradeObjectId}/values/{userId} to update a specific grade value for a student. First retrieve the available grade objects via GET /le/1.0/{orgUnitId}/grades to identify the correct gradeObjectId, then submit the new grade value.

### How do I enroll a user in a Brightspace course through Jentic?

Search Jentic for 'enroll user in brightspace course' to find the POST /lp/1.0/enrollments/orgUnits/{orgUnitId}/users/{userId} operation. Install with pip install jentic, search for the enrollment operation, load its schema, and execute with the org unit ID and user ID. The endpoint accepts a role ID to assign the enrollment type.

### What is the organizational structure in the Brightspace API?

Brightspace uses organizational units (orgUnits) as the primary structural element. Courses, departments, semesters, and groups are all types of org units arranged in a hierarchy. Use GET /lp/1.0/orgstructure to list all org units, and GET /lp/1.0/orgstructure/{orgUnitId} to retrieve details of a specific unit.

### How many endpoints does the Brightspace Valence API expose?

The Jentic-maintained OpenAPI spec for the Brightspace Valence API covers 16 endpoints across user management, enrollment operations, grade retrieval and updates, org structure navigation, and content module access. These cover the core learning platform operations needed for integration.

### Can I limit what my agent is allowed to do with the D2L Brightspace Valence API?

Yes. Jentic One is self-hosted by you, so your own rules decide which Valence operations and credentials the agent may use. Because Brightspace puts the org unit and user in the URL path, such as /lp/1.0/enrollments/orgUnits/{orgUnitId}/users/{userId}, you can pin the agent to a single org unit so it manages enrollments and grades within that one course and nothing else. You also choose the specific operations it may call, so destructive actions like withdrawing a user via DELETE stay off limits unless you add them.
