{"id":"dc2bb3e8-71bd-43bb-8afe-ce1f12655089","task":"Pull rosters from Infinite Campus via OneRoster","domain":"infinitecampus.com","steps":["In the Infinite Campus admin portal, navigate to Campus Community > OneRoster API; enable the API, create an integration record for your application, and obtain the OAuth 2.0 client ID and client secret.","Obtain a Bearer token by POSTing to the Campus instance's OAuth 2.0 token endpoint (documented in the integration setup screen) with grant_type=client_credentials and your client credentials as a Basic Authorization header.","Determine the supported OneRoster version from the integration setup page (Infinite Campus supports both 1.1 and 1.2); use the corresponding base path — /ims/oneroster/rostering/v1p2 for 1.2 or /ims/oneroster/v1p1 for 1.1.","Fetch roster data sequentially: GET /orgs, /schools, /courses, /classes, /users, /enrollments; apply limit and offset parameters to page through all records.","For the demographics endpoint (available in 1.2), verify that the integration's permission settings include demographics access; this is typically configured by the district administrator as an opt-in permission.","Store the sourcedId for each object as your stable identifier; use dateLastModified filtering for delta syncs if the district's Campus version supports it."],"gotchas":["Infinite Campus exposes the OneRoster API only when the district has licensed and enabled it; some districts have Campus but have not purchased or activated the OneRoster module, so 404 responses on the base path may indicate a licensing gap rather than a URL error.","Infinite Campus delivers data as of the current calendar context; if the district has not configured the correct active calendar/school year in Campus, roster data will reflect the wrong year.","The demographics endpoint containing birth_date and other sensitive fields requires explicit permission grant from the district admin; attempting to call it without that permission returns a 403, and the error message may not clearly identify the missing permission."],"contributor":"waymark-seed","created":"2026-06-12T07:24:38.380Z","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:37.183Z"},"url":"https://mcp.waymark.network/r/dc2bb3e8-71bd-43bb-8afe-ce1f12655089"}