Canvas, CommPartners Elevate, Blue Sky eLearn, Higher Logic, Clowder, Forj Community, and Honor Education connections support API maintenance beyond what you can do in the Console. You can update only the fields you choose, delete connections that do not have a delete control in the Console, and update several Honor Education connections in one request.
Prerequisites
Use an API caller signed in within your account. Member-portal sign-ins have been confirmed as refused for at least one of these connection types, Blue Sky, so treat all seven as staff-only until you confirm otherwise for the platform you are integrating with. You cannot reach the data behind these connections directly. Any integration you build, including one that only reads data, must exchange that data with Rhythm through this API instead of connecting to Rhythm’s underlying data store. The access token you send must come from signing in through Rhythm’s own login and SSO flow; it is not a separate vendor password or an API key generated outside that flow.
Changing Part of a Connection
When you save a connection form in the Console, the Console sends the whole record. The API also accepts a partial update, which lets you change only the fields you name and leave the rest of the connection unchanged. The Console does not offer partial updates; only API callers can use them.
Warning
When you create a connection through the API, any field you leave unset uses the platform’s own default. Those defaults do not always match what the Console sets. For example, an Honor Education connection created through the API starts active by default, while the same connection created through the Console starts inactive. If you build or script connections through the API, check each field’s default instead of assuming it matches the Console.
Deleting a Connection
Of the seven learning and community platforms, the Console offers a delete action only for Honor Education. To remove a Canvas, Elevate, Blue Sky, Higher Logic, Clowder, or Forj connection, use the API.
A delete takes effect as soon as the request sends it. The API does not include a confirmation step, unlike the confirmation dialog the Console shows for the delete actions it offers.
Running Several Honor Education Changes at Once
If you maintain more than one Honor Education connection, you can send several change operations in a single request instead of calling the API once for each connection.
What the API Checks on Every Save
Every save for one of these connection types checks two things, no matter which operation you use:
- The request must be signed in within your own account. A request that names a different account is refused as unauthorized.
- The record must match the shape the platform's connection expects. This check looks only at shape, not meaning. For example, it does not confirm that a course type, contact, or time zone referenced on the connection exists, or that a value like an Elevate host address is formatted the way Elevate expects. A save can succeed with a reference or value that later turns out to be wrong.
Permissions
These operations need an API caller signed in within your account. This article does not name a more specific permission because none is declared beyond that basic account membership for any of the operations described here.
Validation and Errors
| What you see | Cause | Fix |
|---|---|---|
| The request is refused as unauthorized | The caller has no identity, or the request names a different account than the caller’s own | Sign in within your own account and try again |
| The save succeeds, but a referenced course type, contact, time zone, or host address turns out to be wrong later | The shape check does not confirm that referenced records exist or that partner-specific formats are correct | Double-check any referenced value before you rely on the connection |
| A connection created through the API behaves differently from one created through the Console (for example, active instead of inactive) | The platform’s default for an unset field differs between the two entry points | Set the field you care about instead of relying on the default |
If your request comes back unauthorized and you are not sure your Authorization header is formed correctly, compare it with a working example:
curl -X PATCH "[connection-api-base-url]/[connection-id]" \
-H "Authorization: Bearer [access-token]" \
-H "Content-Type: application/json" \
-d '{"active": true}'The header name is Authorization, the scheme is Bearer, and a single space separates them, followed directly by your token. A missing scheme, a missing space, or a stray character copied with the token is enough to make the request unauthorized even when the token itself is valid.