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 acard_idwhere anassignment_idis expected will not match (404content_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_idrepeated within one request → 422 (duplicate_card_ids), with the offending ids indetails. - A
card_idalready present anywhere in the cohort → 409 (content_already_exists), with the offending ids indetails.
- The same
- 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).