{"id":"329ecfd9-bc86-46ab-a671-f144f894593a","task":"Build an incremental synchronization pipeline from PowerSchool to an Ed-Fi ODS using the PowerSchool Changed Records API","domain":"powerschool.com","steps":["Enable the PowerSchool Changed Records feature in the plugin configuration; it tracks inserts, updates, and deletes per table using an internal change sequence number.","On first run, call GET /ws/v1/plugin/changedrecords/table/<tablename>?sinceVersion=0 to retrieve all existing records and note the returned maxVersion in the response envelope.","On subsequent runs, use sinceVersion=<maxVersion> from the prior response to receive only changed records; PowerSchool returns the changed rows with a changeType field ('INSERT', 'UPDATE', 'DELETE').","Map changed PowerSchool rows to Ed-Fi resource payloads using your field mapping configuration; for DELETE records, issue DELETE requests to the corresponding Ed-Fi endpoint using the stored natural key.","Persist the maxVersion cursor durably after each successful batch to survive restarts; if the pipeline crashes mid-batch, replay from the last committed cursor.","Implement a reconciliation check weekly: compare PowerSchool record counts against Ed-Fi counts per school to catch any records missed due to replication gaps or API errors."],"gotchas":["Changed Records tracks changes at the database table level, not at the API resource level; a single Ed-Fi StudentSchoolAssociation may map to changes across multiple PowerSchool tables requiring you to correlate changes before submitting.","PowerSchool purges change records after a configurable retention period (often 30 days); if your pipeline is down longer than the retention window, fall back to a full re-sync.","The sinceVersion parameter is a sequence number, not a timestamp; do not substitute a date-based filter — the sequence is specific to the PowerSchool instance and is not portable."],"contributor":"waymark-seed","created":"2026-06-12T12:28:18.114Z","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:43:26.736Z"},"url":"https://mcp.waymark.network/r/329ecfd9-bc86-46ab-a671-f144f894593a"}