Skip to main content

Set Up the Brightspace Connector

The Brightspace Connector lets you connect your Brightspace (D2L) Learning Management System to Airia and ingest course materials stored across org units (courses). Brightspace is a widely used LMS platform in higher education; once connected, Airia retrieves files from the org units you select and makes them searchable inside your project.
💡 Availability: The Brightspace connector is currently in limited availability. If Brightspace doesn’t appear in your connector library, contact your Airia representative to have it enabled for your tenant.
Connecting Brightspace involves three parts:
  1. A one-time Domain credential setup, which tells Airia the URL of your Brightspace instance.
  2. A one-time OAuth setup performed by an admin, which registers Brightspace as an OAuth connector in Airia.
  3. Creating a Brightspace data source, where each user authenticates with their Brightspace account and selects the courses and modules to ingest.

Prerequisites

To use the Brightspace Connector, ensure you have the following:
  • A Brightspace account with access to the org units (courses) you want to ingest.
  • Your Brightspace instance URL — the base URL of your institution’s Brightspace deployment, e.g. https://brightspace.example.edu. This is stored once per tenant as a static credential (see Set Up the Brightspace Domain Credential below).
  • A registered Brightspace OAuth connector in your Airia tenant (see Set Up the Brightspace OAuth Connector below). This is a one-time setup performed by an admin.

Set Up the Brightspace Domain Credential

The Brightspace connector needs to know the base URL of your Brightspace instance. This is configured once per tenant as a static credential; every Brightspace data source created in the tenant automatically uses it, so individual users never need to enter the URL.
  1. In the Airia platform, navigate to Settings → Credentials and click Add Credentials.
  2. Enter a descriptive Name that will help you identify it later (e.g., Brightspace – Example University).
  3. Select Brightspace as the credential type.
  4. In the Domain field, enter your full Brightspace instance URL, e.g. https://brightspace.example.edu. Include the protocol (https://) and do not add a trailing slash.
  5. Select the Scope the credential applies to.
  6. Click Create.
The Domain is the only required field for the Brightspace static credential. Airia uses it to build all Brightspace API URLs for the tenant.
💡 Multi-tenant support: Each Airia tenant has its own Brightspace Domain credential, so different tenants can point at different Brightspace instances — useful when each institution runs its own Brightspace deployment.
For more on creating, editing, and scoping credentials, see Credential Management.

Set Up the Brightspace OAuth Connector

This one-time setup is performed by an Airia admin (or any user with permission to manage OAuth connectors). Once registered, the Brightspace OAuth connector is available to every user in your tenant who creates a Brightspace data source.

1. Register an OAuth 2.0 client with Brightspace

Brightspace exposes an OAuth 2.0 authorization server at https://auth.brightspace.com. Before Airia can authenticate users, you need an OAuth client registered there.
  1. Ask your Brightspace administrator (or D2L support) to register an OAuth 2.0 client for Airia. You will need to provide:
    • Application name — for example, Airia Knowledge.
    • Redirect URI — your Airia OAuth callback URL: https://<your-airia-api-host>/v2/OAuth/callback. You can find this in Airia under Settings → OAuth Connectors → New → Callback URL.
    • Grant types — Authorization Code (plus Refresh Token).
    • Scopes — all six of the following:
      • organizations:organization:read
      • content:toc:read
      • content:file:read
      • content:modules:readonly
      • content:topics:readonly
      • enrollment:orgunit:read
      These are the minimum scopes the connector needs for browsing courses, ingesting files, and (optionally) enforcing enrollment-based permissions. See OAuth Scopes Reference for what each scope is used for.
  2. After registration, Brightspace returns:
    • Client ID
    • Client Secret — copy and store it securely.
    • Authorization endpointhttps://auth.brightspace.com/oauth2/auth
    • Token endpointhttps://auth.brightspace.com/core/connect/token
  3. Confirm with Brightspace that the token endpoint accepts Client Secret Post authentication (client credentials sent in the request body). Airia uses this method by default for Brightspace.

2. Register Brightspace as an OAuth connector in Airia

You can register the connector through the Airia UI or through the Platform API.

Option A — Airia UI

  1. In the Airia platform, navigate to Settings → OAuth Connectors → New.
  2. Choose the Generic OAuth provider type.
  3. Enter the details you collected from Brightspace:
    • Name — a recognizable display name, e.g. Brightspace or Brightspace (Production).
    • Client ID and Client Secret — from Step 1. The secret is encrypted at rest.
    • Authorization endpointhttps://auth.brightspace.com/oauth2/auth.
    • Token endpointhttps://auth.brightspace.com/core/connect/token.
    • Scopes — all six scopes listed in Step 1.
    • Token Endpoint Auth Method — select Client Secret Post.
    💡 Important: Setting Token Endpoint Auth Method to Client Secret Post is the most common cause of setup issues if missed. Make sure it is selected.
  4. Click Create. The new Brightspace connector appears under Settings → OAuth Connectors → Connected, where it can be edited or deleted later.

Option B — Platform API

If you prefer to register the connector programmatically, POST the connector definition to /v2/OAuth/providers. Replace every <...> placeholder with the values you collected in Step 1 and your Airia API host:
Field reference: A successful response returns the new connector configuration. Airia uses it automatically when users authenticate Brightspace data sources — you do not need to copy any ID into the connector form.
💡 Updating credentials later: If the Brightspace client secret rotates, an admin can update the connector (UI) or PUT /v2/OAuth/providers/{id} with the new clientSecret. Existing user credentials issued under the old secret keep working until they expire; new authentications use the updated secret.

Create a Brightspace Data Source

1. Add a New Brightspace Data Source

  1. In your project, navigate to Data Sources and click Add data source.
  2. Select Brightspace from the Communication & Collaboration category in the connector library.

2. Authenticate with Brightspace

  1. Click Authenticate with Brightspace.
  2. You’ll be redirected to the Brightspace OAuth login page. Sign in with your Brightspace account.
  3. After successful authentication, you return to Airia with valid credentials. The credential is saved and can be reused across other Brightspace data sources you create.

3. Select Courses and Modules to Ingest

After authenticating, Airia opens the Brightspace folder picker. The top level shows the org units (courses, departments, etc.) available to your account.
  • Select an org unit to browse its content modules, and drill in further to browse nested sub-modules and individual files.
  • You can select entire org units, specific modules, sub-modules, or individual files. The connector ingests all file-type content within the selected scope.
💡 Note: The search box filters the current level of the tree. If a course or module unexpectedly appears empty while browsing, clear any text left in the search box from a previous level.

4. Finish Setup and Monitor Ingestion

Save the data source. The page refreshes to show the ingestion status. You can revisit the data source at any time to view the current state of synced files — the original Brightspace course hierarchy (org unit → module → sub-module → file) is preserved in the data source view.

What Gets Ingested

The Brightspace connector ingests files from course content modules:
  • Only file-type topics are ingested. Non-file content — links, LTI activities, quizzes, and similar activity types — is skipped.
  • Hidden modules are skipped entirely, including all sub-modules and files nested inside them, even if those nested items are not themselves marked hidden. Hidden topics inside visible modules are also skipped. This respects the visibility instructors set in Brightspace — to ingest hidden content, make it visible in Brightspace first.
  • Broken topics are skipped automatically.
  • Audio/video files hosted in Brightspace Content Service are not ingested — they are not downloadable through the standard Brightspace content API.
  • Recorded video or audio added as a course topic is typically represented in Brightspace as an HTML page linking out to externally hosted media, rather than as a downloadable media file. The connector ingests that HTML page as the file — it does not follow the embedded link, so no transcript or audio/video content is retrieved for these topics.
  • Nested modules (sub-modules) are fully supported — the connector traverses the entire module tree.
  • The file path in Airia mirrors the Brightspace hierarchy: /{Org Unit Name}/{Module Name}/{File Name}, including any sub-module levels. If you select multiple org units, each becomes its own top-level folder.
  • Each file’s last-modified date from Brightspace is preserved as the file’s last-updated timestamp in Airia.
  • Image files (e.g. .jpg, .png) pass the connector’s filter but may be rejected by Airia’s downstream file-type validation if the type is not supported for indexing.

Editing Your Folder Selection

To change which org units or modules are synced, open the data source and click Edit. You may need to re-authenticate.
💡 Note: If you re-authenticate with different Brightspace credentials, the folder picker will not show your previous selections, and you will need to reselect everything.

Permissions

Airia can optionally enforce per-file permissions on Brightspace content at query time, based on Brightspace course enrollment. This is controlled by the Check File Permissions setting on the data connector, which is off by default. When to enable it: Enable Check File Permissions when each Airia user’s login is federated with their real Brightspace identity (for example, via institutional SSO), so Airia can verify each individual user’s course enrollment before returning content to them. When to leave it off: If your Airia users authenticate independently of Brightspace (no SSO identity mapping between the two systems), leave this setting off. Without an identity mapping, Airia cannot determine a given Airia user’s Brightspace identity, so per-user access checks will fail for everyone except the Brightspace user whose account was used to set up the connector — even though ingestion itself succeeds. Affected users see an access/permission error when trying to view an otherwise successfully ingested file. With the setting off, access is governed at the Airia data-source level instead: any user with access to the data source can retrieve any file ingested into it. How it works when enabled (requires the enrollment:orgunit:read OAuth scope):
  • When a user queries content from a Brightspace data source, Airia checks whether that user is enrolled in the org unit (course) containing the file, by matching the user’s external ID, email address, or username against the course’s enrollment list in Brightspace.
  • If the user is enrolled — in any role (student, instructor, etc.) — access is granted. If not, the file is filtered from their results.
  • The check happens in real time at query time and applies at the org unit level, not per file or module: a user enrolled in a course can access all ingested files from that course.
  • If a student is unenrolled from a course in Brightspace, they immediately lose access to that course’s files in Airia queries — no re-ingestion required.
💡 Important: If Check File Permissions is enabled but the enrollment:orgunit:read scope is missing from the OAuth configuration, permission checks fail for all users — even enrolled ones. Ensure this scope is included when registering the OAuth connector.

OAuth Scopes Reference

Include all six scopes when registering the OAuth connector. enrollment:orgunit:read is only exercised if Check File Permissions is enabled — ingestion works without it, but permission-based filtering fails if the setting is on and the scope is missing.

Troubleshooting

Next Steps

After your data has been successfully ingested, the Brightspace data source is ready to be used with an Agent.