Sections and content

Sections and their contents can only be managed by someone who can manage the cohort, and never on an expired cohort (409).

Content identifiers

This distinction matters:

  • card_id — the learning object id you supply when adding content. Versioned content is resolved to the right underlying object automatically.
  • assignment_id — the id of a card's placement within a section, returned in content responses. Use it when removing a single content item. Passing a card_id where an assignment_id is expected will not match (404 content_not_found).

Adding content

  • Card ids must reference existing learning objects of a supported type. Supported types include Course, Event, Quick Course, Curriculum, Test, External Content, Web URL, Library, Material, Poll, Uploaded Content, Pathway, Journey, Quiz, Text Card, Video, and Online Content. Unsupported types (e.g. Playlist) are rejected with 422 (content_type_not_supported).
  • Duplicate handling:
    • The same card_id repeated within one request → 422 (duplicate_card_ids), with the offending ids in details.
    • A card_id already present anywhere in the cohort → 409 (content_already_exists), with the offending ids in details.
  • Positions are assigned sequentially in the order the cards are submitted.

Removing content and sections

Removal is done through the section update path, which enforces two guards:

  • A cohort must always keep at least one content item. Removing the last piece of content is rejected.
  • On a cohort where learning has started, active content cannot be removed. Only content that the content service reports as inactive/missing may be pulled from a started cohort. Removing active content is rejected as a validation error (422).