Skip to documentation

Documentation

LMS connectors

Blackboard connector

Register and operate a campus-approved Blackboard Learn REST integration for facoolta.

Prerequisites

  • A Blackboard Learn environment reachable over HTTPS.
  • An application registered through the current Anthology developer workflow.
  • A dedicated Learn integration user with a deliberately limited institutional role.
  • A test course and test enrollment that contain no production student data.

1. Register the integration

Register a REST application and record the application key and secret in a secret manager. Keep separate registrations for sandbox and production. The secret must never be shipped in a browser or mobile application.

2. Authorize in Learn

  1. Create an integration user

    Assign only the course, enrollment, content, and calendar permissions approved for the pilot.

  2. Add the REST integration

    Associate the application ID with the integration user and set access to enabled.

  3. Request an access token

    Exchange the application key and secret server-side using the client credentials grant.

OAuth client credentials
export BLACKBOARD_BASE='https://learn.example.edu'
export BLACKBOARD_KEY='application-key'
export BLACKBOARD_SECRET='application-secret'

curl --fail-with-body --request POST \
  --user "$BLACKBOARD_KEY:$BLACKBOARD_SECRET" \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data 'grant_type=client_credentials' \
  "$BLACKBOARD_BASE/learn/api/public/v1/oauth2/token"

3. Validate the connection

Use the returned access token to query the system version endpoint, then test the smallest approved course query. Treat access tokens as short-lived and refresh them server-side.

REST reachability check
curl --fail-with-body \
  --header "Authorization: Bearer $BLACKBOARD_ACCESS_TOKEN" \
  "$BLACKBOARD_BASE/learn/api/public/v1/system/version"

Operational checks

  • Follow pagination links or paging fields; never assume a collection fits in one response.
  • Back off on throttling responses and retain the last successful sync timestamp.
  • Store Learn object IDs with the Learn base origin; display names are not identifiers.
  • Recheck course membership before serving cached files or discussion metadata.
  • Disable the Learn integration before deleting local credentials during offboarding.

Troubleshooting

SymptomCheck
401Application key, secret, token expiry, and clock skew.
403REST integration enabled state, integration user, institutional role, and endpoint entitlement.
404Learn base URL, API version supported by the deployment, and object visibility.
429Honor retry guidance, reduce concurrency, and resume from the last completed page.