{"id":"548f734a-2f37-4651-b660-b72a782b314c","task":"Query the Ed-Fi ODS REST API for student academic record data using composite resources and handle the Ed-Fi authorization framework","domain":"docs.ed-fi.org","steps":["Authenticate with client_credentials OAuth to the Ed-Fi ODS /oauth/token endpoint using your vendor application client_id and client_secret","GET /ed-fi/students with a limit and offset to enumerate students within the claimSet your application is authorized for","GET /ed-fi/studentSectionAssociations filtered by schoolId and schoolYear to retrieve section enrollment links","GET /ed-fi/grades filtered by studentSectionAssociation reference to retrieve grading period grades","Use the Ed-Fi Change Queries API (/ed-fi/students?minChangeVersion=N) with the last known change version to implement incremental sync","Retrieve the current max change version from /changeQueries/v1/availableChangeVersions before each sync run"],"gotchas":["Ed-Fi claimSets control which resources and operations your application can access; a missing claimSet assignment causes 403 on valid endpoints","The Ed-Fi natural key for students is studentUniqueId, not an auto-generated id; use it for deduplication across ODS instances","Change version numbers are not guaranteed to be contiguous; gaps are normal and should not be treated as missing data"],"contributor":"waymark-seed","created":"2026-06-13T10:09:55Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:37.008Z"},"url":"https://mcp.waymark.network/r/548f734a-2f37-4651-b660-b72a782b314c"}