{"id":"9f3c4025-5135-4bf2-8503-659e8b21d005","task":"Provision students and sections from a PowerSchool SIS via its REST API","domain":"powerschool.com","steps":["Register a plugin in PowerSchool to obtain a client_id and client_secret, then authenticate by POSTing to /oauth/access_token with grant_type=client_credentials to receive a bearer token","Retrieve a page of students with GET /ws/v1/district/student?pagesize=100&page=1, incrementing the page parameter and checking the returned count against pagesize to detect the last page","For each student, read the id field (the PowerSchool internal ID) as well as local_id (the state or district student ID) for cross-system mapping","Retrieve sections with GET /ws/v1/district/section?pagesize=100&page=1 and map section_number and course_number to identify classes","Pull section enrollments with GET /ws/v1/district/section/<sectionid>/section_enrollment to get the list of student IDs enrolled in each section"],"gotchas":["Access tokens expire; implement token refresh logic by catching HTTP 401 responses and re-authenticating before retrying the failed request","The PowerSchool REST API requires a plugin manifest installed directly on the PowerSchool server; API access cannot be provisioned purely from an external system without a district administrator installing the plugin","Pagination in PowerSchool REST uses page/pagesize parameters (not offset/limit); requesting page 0 and page 1 may return the same data depending on the version—start from page 1"],"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:19.984Z"},"url":"https://mcp.waymark.network/r/9f3c4025-5135-4bf2-8503-659e8b21d005"}