{"id":"2e51f3a5-9794-437d-9f79-d57f52fb1e64","task":"Use LTI Advantage Names and Role Provisioning Services (NRPS) to page through a full course membership and detect newly added or dropped members since the last sync","domain":"imsglobal.org","steps":["Read the https://purl.imsglobal.org/spec/lti-nrps/claim/namesroleservice claim from the LTI launch id_token to get the context_memberships_url","Request a service access token from the platform's OAuth 2 token endpoint with scope https://purl.imsglobal.org/spec/lti-nrps/scope/contextmembership.readonly","GET the context_memberships_url with Authorization: Bearer and Accept: application/vnd.ims.lti-nrps.v2.membershipcontainer+json","Follow the Link: rel='next' header for pages until exhausted; collect all member objects with their roles and status","Include a since query parameter (ISO 8601) on subsequent calls to retrieve only members whose status changed after the timestamp","Reconcile the response against your local member table: add new members, update changed roles, mark absent members as dropped"],"gotchas":["The since parameter is optional and many platforms do not implement it; always reconcile the full membership list if since returns the same count as without it","Members with status Inactive are still enrolled but should not access content; status Deleted means they were removed from the course","The service access token has its own expiry independent of the launch id_token; cache and refresh it rather than re-requesting on every page fetch"],"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:26.736Z"},"url":"https://mcp.waymark.network/r/2e51f3a5-9794-437d-9f79-d57f52fb1e64"}