canonical: https://jentic.com/apis/docs.valence.desire2learn.com/brightspace

# Docs Valence Desire2learn Brightspace Valence API

Jentic publishes the only available OpenAPI specification for Brightspace Valence API, keeping it validated and agent-ready. The Brightspace Valence API is the integration surface for D2L Brightspace, the LMS used by many universities, K-12 districts and corporate training organisations. The 74 endpoints in this spec cover users, profiles, roles, courses, enrollments, grades and content, secured by OAuth2. It suits SIS integrations, automated user provisioning, gradebook export pipelines and any tool that needs to read or write Brightspace learner data.

## For AI agents

Manage Brightspace users, courses, enrollments, grades and content on behalf of LMS admins, instructors or SIS sync jobs.

## Scope

Does not handle SIS-side records, video lecture hosting, proctoring, or payment processing for course fees - use for Brightspace user, course, enrollment, grade and content operations only.

## Capabilities

- Provision and update Brightspace user accounts including names and pronouns
- Activate or reset passwords for users in bulk or one at a time
- List and assign Brightspace roles for permission management
- Create and update course offerings and templates
- Enroll learners and instructors into courses
- Read gradebook entries and export grades for reporting
- Manage course content modules and topics

## Use cases

### SIS to Brightspace Sync

Universities and districts can keep Brightspace in step with their student information system by reading users and enrollments from the SIS and writing them through the lp/{version}/users and lp/{version}/courses endpoints. Bulk user creation is supported via /lp/{version}/users/batch, which avoids the rate-limit cost of per-user POSTs and shortens the daily sync window.

Example prompt: POST /d2l/api/lp/{version}/users/batch with the day's new student list and POST enrollments for each into the term's course offerings.

### Gradebook Export and Reporting

Build a reporting pipeline that pulls grades from Brightspace into a data warehouse for institutional research or accreditation reporting. The grades endpoints expose per-learner grade values that can be aggregated by course, term or cohort. Replaces manual CSV exports from instructor dashboards.

Example prompt: Iterate active course offerings and pull grades per learner via the grades endpoints, writing one row per learner-course-grade triple to the warehouse.

### Profile and Identity Management

Centralise updates to learner profiles - names, pronouns, password resets - through Brightspace rather than asking each user to log in. /lp/{version}/users/{userId}/names, /password and /lp/{version}/users/mypronouns let an identity-management workflow keep Brightspace consistent with the source of truth, including recent updates to inclusive name and pronoun fields.

Example prompt: PUT /d2l/api/lp/{version}/users/{userId}/names with the updated preferred-name payload from the identity provider.

### AI Agent Academic Operations Assistant

Through Jentic, an AI assistant for an academic-operations team can answer 'who isn't enrolled in the required first-year orientation?' or 'reset Jane's Brightspace password'. The agent searches Jentic for the right Brightspace operation, loads the schema and executes against an admin OAuth token. Frees the registrar's office from routine Brightspace lookups.

Example prompt: Use Jentic to search 'list Brightspace users', load /d2l/api/lp/{version}/users, and execute it filtered by role to flag students missing from a required course.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /d2l/api/lp/{version}/users/{userId} | Get a Brightspace user |
| POST | /d2l/api/lp/{version}/users/batch | Create or update users in batch |
| GET | /d2l/api/lp/{version}/users/whoami | Get the current authenticated user |
| GET | /d2l/api/lp/{version}/courses | List course offerings |
| GET | /d2l/api/lp/{version}/roles | List Brightspace roles |
| GET | /d2l/api/versions | List supported API versions |

## Key resources

- **Users** — User accounts, names, profiles and passwords
- **Profiles** — Profile data including pronouns and preferred names
- **Roles** — Role definitions and assignments for permissions
- **Courses** — Course offerings, templates and metadata
- **Enrollments** — Learner and instructor enrollments in courses
- **Grades** — Gradebook entries and grade items
- **Content** — Course content modules and topics

## Why Jentic

- **Setup:** Wiring the Brightspace Valence API by hand means running its OAuth2 flow, pinning the API version into every /d2l/api/lp/{version} route, and pointing calls at your own Brightspace hostname before you can touch a user or course. Through Jentic you install once, import the Brightspace Valence API from the API Directory, store the OAuth client credentials once, and your agent calls it.
- **Permission scoping:** Valence puts the user id in the URL path (/d2l/api/lp/{version}/users/{userId}), so a rule can pin your agent to one user: it can read that user's record and names and nothing else. You choose the operations it may call, so writes such as password reset or account activation are not included unless you add them.
- **Credential handling:** Your Brightspace OAuth client credentials and admin tokens are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create Brightspace users in batch' or 'list course offerings', and Jentic returns the matching Valence operation under /d2l/api/lp/{version}/users/batch or /d2l/api/lp/{version}/courses with its schema so the agent calls the right endpoint without parsing the Valence reference.

## Related APIs

- **Open edX LMS API** — Open-source LMS API covering similar enrollment, certificate and progress workflows
- **Docassemble API** — Document-assembly platform useful when LMS courses generate filled-in legal forms

## FAQ

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

D2L does not publish an OpenAPI specification for Brightspace Valence. Jentic generates and maintains this spec so that AI agents and developers can call 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 Brightspace Valence API use?

Brightspace Valence uses OAuth2 with admin-level scopes for write operations like provisioning and enrollment. Through Jentic, the OAuth client credentials live in your Jentic One instance and the agent receives a scoped token instead of the raw client_id and secret.

### Can I create users in batch with the Brightspace Valence API?

Yes. POST /d2l/api/lp/{version}/users/batch accepts an array of user objects in one request, which is the recommended path for SIS sync jobs. This avoids per-user round trips and stays inside Brightspace rate limits during nightly imports.

### What are the rate limits for the Brightspace Valence API?

D2L applies per-tenant rate limits that vary by deployment and licensing tier. Production integrations should handle 429 responses with backoff and prefer batch endpoints for large operations rather than tight per-record loops.

### How do I list a learner's enrollments through Jentic?

Search Jentic for 'list Brightspace courses for user', load the courses endpoint scoped to a user, and execute with the userId. Through Jentic the OAuth token stays in the vault, so the agent never sees the bearer string in its context.

### Can I update a user's preferred name and pronouns with the Valence API?

Yes. /d2l/api/lp/{version}/users/{userId}/names handles preferred name fields, and /d2l/api/lp/{version}/users/mypronouns sets pronoun strings on the current user, which supports inclusive identity workflows.

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

Yes. Jentic One is self-hosted, so your own rules decide which Valence operations and credentials the agent may use. Because Valence puts the user id in the URL path, such as /d2l/api/lp/{version}/users/{userId}, you can pin the agent to a single user so it only reads that user's record and names. You also choose which operations are callable, so write actions like password reset or account activation stay off limits unless you explicitly add them.
