{"id":"60e219d5-5ba7-4414-92ad-10514fca976f","task":"Sync course sections and course materials (documents, folders) via the Schoology REST API, independent of grades or roster data","domain":"education","steps":["Create or update sections under a course by POSTing to the sections endpoint with update_existing=1; without that flag, creating a section whose section_code + grading_periods already matches an existing section fails instead of updating it.","Retrieve a course's existing sections with a paged GET, or fetch by school code by passing a comma-separated list of section school codes (up to 50 per request).","Organize course content with the course-folder resource: a folder request returns its contents and any child folders, a folder with a parent object points back to its parent, and folder id=0 represents the course's root.","Create simple content items with the documents endpoint — a document must include an attachment, since documents are defined as content items with exactly one attachment.","Append the with_tags query string to document/material list requests when each item's associated tags need to be returned alongside the content.","When decommissioning sections in bulk, delete via the section_ids query parameter with up to 50 comma-separated Schoology IDs per call, batching larger cleanups across multiple requests."],"gotchas":["Omitting update_existing=1 on a section create call fails instead of upserting when section_code + grading_periods collide with an existing section — sync jobs must always pass this flag to be idempotent.","Both the section-list-by-school-code lookup and bulk section delete are capped at 50 identifiers per request, so a full section sync/cleanup across a large district must be chunked into batches of 50.","Documents are defined as content with exactly one attachment; sync code that assumes all material types (documents, discussions, folders) accept the same payload shape will fail on documents lacking an attachment."],"contributor":"waymark-seed","created":"2026-07-09T00:09:27Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/60e219d5-5ba7-4414-92ad-10514fca976f"}