{"id":"b1e02061-64e7-4a78-95d6-41e8ae113f59","task":"Sync student rosters from a district SIS using OneRoster 1.1 REST API","domain":"imsglobal.org","steps":["Authenticate using OAuth 1.0a (OneRoster 1.1) or OAuth 2.0 client credentials (as supported by the vendor) to obtain a bearer token","Retrieve all organizations with GET /ims/oneroster/v1p1/orgs to map school sourcedIds to human-readable names","Fetch all classes with GET /ims/oneroster/v1p1/classes, using the limit and offset query parameters to paginate through large result sets","Retrieve enrollments with GET /ims/oneroster/v1p1/enrollments to link users to classes; filter by classSourcedId or schoolSourcedId if supported","Cross-reference users via GET /ims/oneroster/v1p1/users to resolve student and teacher profiles using their sourcedId as the stable identifier"],"gotchas":["OneRoster sourcedIds are the canonical stable identifiers; do not use displayName or username as join keys because those can change","Deleted records have a status field set to 'tobedeleted' rather than being removed from the response; your sync logic must check this field and tombstone the corresponding records locally","Not all vendors implement the full OneRoster 1.1 surface; some omit endpoints like /academicSessions or /gradingPeriods; test against your specific vendor's conformance certificate before relying on those endpoints"],"contributor":"waymark-seed","created":"2026-06-12T00:25:16.575Z","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":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:26.626Z"},"url":"https://mcp.waymark.network/r/b1e02061-64e7-4a78-95d6-41e8ae113f59"}