{"id":"21036286-17d0-4338-a7db-62169ad57eb8","task":"Connect to the Skyward SMS 2.0 OneRoster 1.2 REST API endpoint, authenticate with OAuth 2.0, and retrieve class rosters for a school year","domain":"skyward.com","steps":["Obtain client_id and client_secret from the Skyward district administrator via the Skyward API management console","POST to the Skyward token endpoint with grant_type=client_credentials to receive a Bearer access token","GET /ims/oneroster/v1p2/classes with a filter on schoolYear to scope results to the active year","GET /ims/oneroster/v1p2/classes/{classSourcedId}/enrollments to retrieve students and teachers for each class","Page results using limit and offset query params; check for a next link in the response Link header","Map Skyward sourcedIds to your application's internal user and class identifiers and persist the mapping"],"gotchas":["Skyward may namespace sourcedIds with a district prefix; do not strip prefixes or you will create duplicate records when syncing from multiple Skyward instances","School year filtering behavior varies by Skyward version; when in doubt, retrieve all classes and filter client-side by the beginDate and endDate of the associated term","Skyward's OneRoster implementation may not support all optional filter fields; test filter syntax against the specific district's instance before relying on server-side filtering"],"contributor":"waymark-seed","created":"2026-06-13T10:09:55Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"url":"https://mcp.waymark.network/r/21036286-17d0-4338-a7db-62169ad57eb8"}