Skip to content

Set a course's description

PUT/v1/organization/{orgId}/learning/workspace/courses/{lessonId}/page

US Region: https://public-api.sessionboard.com · EU Region: https://public-api-eu.sessionboard.com

The description on the course's public page, up to 1,000 characters. An empty string removes it. A connected assistant's change waits for a person's OK (202 needs_approval), because it is public copy. Requires write:learning. Also at PUT /v1/learning/workspace/courses/{lessonId}/page.

Request example

Terminal window
curl --request PUT \
--url 'https://public-api.sessionboard.com/v1/organization/{orgId}/learning/workspace/courses/{lessonId}/page' \
--header 'x-access-token: <api-token>' \
--header 'Content-Type: application/json' \
--data '{
"summary": "<string>"
}'

Try it

Authorization

Your token stays in this page. It is sent only to the region above and is never saved; it is gone when you leave or reload the page.

Path parameters
Body application/json
PUT

Authorizations

  • x-access-tokenstringheader

    Organization API token. Generate from Organization Settings → API Tokens.

  • AuthorizationBearer <token>headeror

    OAuth 2.1 access token. Obtained via the OAuth PKCE flow at /oauth/token.

Send one of these. See Authentication.

Path parameters

  • orgIdstringpathrequired

    Your organization ID. Any other organization returns 404.

  • lessonIdstring<uuid>pathrequired

    The course id (from List courses and course drafts).

Request body

application/jsonrequired

  • summarystring | nullrequired

    The description visitors read. '' or null removes it.

    Max length
    1000
{
"summary": "<string>"
}

Responses

200application/json

The saved description.

  • payloadobject
    Show child attributes
    • pageobject
      Show child attributes
      • idstring<uuid>
      • titlestring
      • summarystring | null

202application/json

Waiting for a person. Nothing was published or sent: a person approves or declines the request in Sessionboard Learning (payload.url), and it then runs as them. Do not call again.

  • successboolean
  • payloadLearningApprovalRequest
    Show child attributes
    • statusstring
    • approval_idstring<uuid>
    • urlstring

      Where a person approves or declines it, in Sessionboard Learning.

    • messagestring

      Waiting for your OK in Sessionboard: <url>

    • notestring

      Says nothing was sent or published and not to call again.

    • approvalLearningApproval
      Show child attributes
      • idstring<uuid>
      • statusstring
        Allowed values
        "pending", "approved", "declined", "failed"
      • actionstring

        publish_course, publish_on_demand or publish_course_draft.

      • surfacestring

        courses for these operations.

      • titlestring

        The approval card's headline, e.g. Publish the course “Intro to Safety”.

      • summarystring

        What the person asked the assistant, when given (From “…”), else empty.

      • targetobject | null
        Show child attributes
        • typestring

          course, event or course_draft.

        • idstring
      • event_idinteger | null
      • assistantobject
        Show child attributes
        • vendorstring
        • labelstring
        • clientstring | null
        • viastring | null
          Allowed values
          "api_token", "oauth", null
      • requested_byobject
        Show child attributes
        • user_idinteger | null
        • namestring | null
      • decided_byobject | null
        Show child attributes
        • user_idinteger
        • namestring | null
      • decided_atstring<date-time> | null
      • errorstring | null
      • remedyobject | null

        Set only when a run failed for a reason a person can fix in one step.

      • can_retryboolean
      • created_atstring<date-time>
      • productstring
      • urlstring

400application/json

A path, query or body value failed validation, or an unknown body property was sent. message names the field. (A source object naming the assistant, with the person's prompt, is accepted on every write and removed before validation.) For an {eventId} path that is not a whole number: error: VALIDATION_ERROR, eventId must be a valid integer.

Gateway errors carry error (a code) and message. Errors from Learning itself carry status, success: false, message, name, and sometimes code (and feature or paused_at).

  • errorstring | object

    The gateway's error code (SCOPE_REQUIRED, ORG_WIDE_TOKEN_REQUIRED, NOT_FOUND, …).

  • messagestring
  • statusinteger
  • successboolean
  • namestring
  • codestring

    FEATURE_NOT_ENABLED, AGENT_WRITES_PAUSED, …

  • featurestring
  • paused_atstring<date-time>

401

Missing, invalid or expired token.

403application/json

  • SCOPE_REQUIRED — the token lacks read:learning (reads) or write:learning (writes). Legacy tokens with no scopes cannot write.
  • ORG_WIDE_TOKEN_REQUIRED — the token is restricted to particular events: "The Learning workspace covers every event and learner in the organization, so this API key (restricted to particular events) cannot use it. Use a key without an event restriction."
  • FEATURE_NOT_ENABLED (feature: lessons_credits) — Learning is not on for the organization.
  • FORBIDDEN — the token's user is not an active member of the organization, or lacks the Lessons permission the operation needs.

Gateway errors carry error (a code) and message. Errors from Learning itself carry status, success: false, message, name, and sometimes code (and feature or paused_at).

  • errorstring | object

    The gateway's error code (SCOPE_REQUIRED, ORG_WIDE_TOKEN_REQUIRED, NOT_FOUND, …).

  • messagestring
  • statusinteger
  • successboolean
  • namestring
  • codestring

    FEATURE_NOT_ENABLED, AGENT_WRITES_PAUSED, …

  • featurestring
  • paused_atstring<date-time>

404application/json

orgId is not your organization (error: NOT_FOUND, message: Organization not found).

Gateway errors carry error (a code) and message. Errors from Learning itself carry status, success: false, message, name, and sometimes code (and feature or paused_at).

  • errorstring | object

    The gateway's error code (SCOPE_REQUIRED, ORG_WIDE_TOKEN_REQUIRED, NOT_FOUND, …).

  • messagestring
  • statusinteger
  • successboolean
  • namestring
  • codestring

    FEATURE_NOT_ENABLED, AGENT_WRITES_PAUSED, …

  • featurestring
  • paused_atstring<date-time>

423application/json

A person has paused connected assistants for the organization or the event (code: AGENT_WRITES_PAUSED). Ask them to resume it in Sessionboard before trying again.

Gateway errors carry error (a code) and message. Errors from Learning itself carry status, success: false, message, name, and sometimes code (and feature or paused_at).

  • errorstring | object

    The gateway's error code (SCOPE_REQUIRED, ORG_WIDE_TOKEN_REQUIRED, NOT_FOUND, …).

  • messagestring
  • statusinteger
  • successboolean
  • namestring
  • codestring

    FEATURE_NOT_ENABLED, AGENT_WRITES_PAUSED, …

  • featurestring
  • paused_atstring<date-time>

429application/json

  • The token's request limit (100 requests per 15 minutes per bucket by default — see Rate Limiting). Wait Retry-After seconds.
  • QUOTA_EXCEEDED (writes) — the token's daily write quota (10,000 a day). Resets at midnight UTC.

Gateway errors carry error (a code) and message. Errors from Learning itself carry status, success: false, message, name, and sometimes code (and feature or paused_at).

  • errorstring | object

    The gateway's error code (SCOPE_REQUIRED, ORG_WIDE_TOKEN_REQUIRED, NOT_FOUND, …).

  • messagestring
  • statusinteger
  • successboolean
  • namestring
  • codestring

    FEATURE_NOT_ENABLED, AGENT_WRITES_PAUSED, …

  • featurestring
  • paused_atstring<date-time>
  • Retry-Afterintegerheader

    Seconds to wait before retrying.

Response examples

{
"payload": {
"page": {
"id": "3f1c2a9e-0000-4000-8000-000000000001",
"title": "Sepsis recognition for nurses",
"summary": "Spot sepsis early at the bedside and know who to call."
}
}
}